From 66f651e90416db17050cf2f56f5e680dd391c402 Mon Sep 17 00:00:00 2001 From: reivax-boucoi Date: Wed, 4 Nov 2020 08:33:10 +0100 Subject: [PATCH] initial comit --- L476_ats_blink-master/.cproject | 202 + L476_ats_blink-master/.mxproject | 24 + L476_ats_blink-master/.project | 33 + .../.settings/language.settings.xml | 27 + L476_ats_blink-master/Core/Inc/main.h | 96 + L476_ats_blink-master/Core/Inc/stm32_assert.h | 53 + L476_ats_blink-master/Core/Inc/stm32l4xx_it.h | 69 + L476_ats_blink-master/Core/Src/gpio.c | 44 + L476_ats_blink-master/Core/Src/gpio.h | 7 + L476_ats_blink-master/Core/Src/main.c | 93 + L476_ats_blink-master/Core/Src/stm32l4xx_it.c | 203 + L476_ats_blink-master/Core/Src/syscalls.c | 159 + L476_ats_blink-master/Core/Src/sysmem.c | 80 + .../Core/Src/system_stm32l4xx.c | 337 + .../Core/Startup/startup_stm32l476rgtx.s | 509 + L476_ats_blink-master/Debug/Core/Src/gpio.d | 34 + L476_ats_blink-master/Debug/Core/Src/gpio.o | Bin 0 -> 915824 bytes L476_ats_blink-master/Debug/Core/Src/gpio.su | 9 + L476_ats_blink-master/Debug/Core/Src/main.d | 43 + L476_ats_blink-master/Debug/Core/Src/main.o | Bin 0 -> 945288 bytes L476_ats_blink-master/Debug/Core/Src/main.su | 14 + .../Debug/Core/Src/stm32l4xx_it.d | 60 + .../Debug/Core/Src/stm32l4xx_it.o | Bin 0 -> 960556 bytes .../Debug/Core/Src/stm32l4xx_it.su | 9 + .../Debug/Core/Src/subdir.mk | 44 + .../Debug/Core/Src/syscalls.d | 1 + .../Debug/Core/Src/syscalls.o | Bin 0 -> 78864 bytes .../Debug/Core/Src/syscalls.su | 18 + L476_ats_blink-master/Debug/Core/Src/sysmem.d | 1 + L476_ats_blink-master/Debug/Core/Src/sysmem.o | Bin 0 -> 49824 bytes .../Debug/Core/Src/sysmem.su | 1 + .../Debug/Core/Src/system_stm32l4xx.d | 25 + .../Debug/Core/Src/system_stm32l4xx.o | Bin 0 -> 906524 bytes .../Debug/Core/Src/system_stm32l4xx.su | 2 + .../Core/Startup/startup_stm32l476rgtx.d | 2 + .../Core/Startup/startup_stm32l476rgtx.o | Bin 0 -> 7116 bytes .../Debug/Core/Startup/subdir.mk | 19 + .../Src/stm32l4xx_ll_exti.d | 29 + .../Src/stm32l4xx_ll_exti.o | Bin 0 -> 915556 bytes .../Src/stm32l4xx_ll_exti.su | 19 + .../Src/stm32l4xx_ll_gpio.d | 32 + .../Src/stm32l4xx_ll_gpio.o | Bin 0 -> 920516 bytes .../Src/stm32l4xx_ll_gpio.su | 11 + .../Src/stm32l4xx_ll_pwr.d | 32 + .../Src/stm32l4xx_ll_pwr.o | Bin 0 -> 913388 bytes .../Src/stm32l4xx_ll_pwr.su | 3 + .../Src/stm32l4xx_ll_utils.d | 38 + .../Src/stm32l4xx_ll_utils.o | Bin 0 -> 957128 bytes .../Src/stm32l4xx_ll_utils.su | 36 + .../STM32L4xx_HAL_Driver/Src/subdir.mk | 34 + .../Debug/L476_ats_blink-master.bin | Bin 0 -> 2536 bytes .../Debug/L476_ats_blink-master.elf | Bin 0 -> 979048 bytes .../Debug/L476_ats_blink-master.list | 1577 ++ .../Debug/L476_ats_blink-master.map | 1229 + L476_ats_blink-master/Debug/makefile | 79 + L476_ats_blink-master/Debug/objects.list | 11 + L476_ats_blink-master/Debug/objects.mk | 8 + L476_ats_blink-master/Debug/sources.mk | 25 + .../Device/ST/STM32L4xx/Include/stm32l476xx.h | 18487 ++++++++++++++++ .../Device/ST/STM32L4xx/Include/stm32l4xx.h | 254 + .../ST/STM32L4xx/Include/system_stm32l4xx.h | 107 + .../Drivers/CMSIS/Include/cmsis_armcc.h | 894 + .../Drivers/CMSIS/Include/cmsis_armclang.h | 1444 ++ .../CMSIS/Include/cmsis_armclang_ltm.h | 1891 ++ .../Drivers/CMSIS/Include/cmsis_compiler.h | 283 + .../Drivers/CMSIS/Include/cmsis_gcc.h | 2168 ++ .../Drivers/CMSIS/Include/cmsis_iccarm.h | 964 + .../Drivers/CMSIS/Include/cmsis_version.h | 39 + .../Drivers/CMSIS/Include/core_armv81mml.h | 2968 +++ .../Drivers/CMSIS/Include/core_armv8mbl.h | 1921 ++ .../Drivers/CMSIS/Include/core_armv8mml.h | 2835 +++ .../Drivers/CMSIS/Include/core_cm0.h | 952 + .../Drivers/CMSIS/Include/core_cm0plus.h | 1085 + .../Drivers/CMSIS/Include/core_cm1.h | 979 + .../Drivers/CMSIS/Include/core_cm23.h | 1996 ++ .../Drivers/CMSIS/Include/core_cm3.h | 1937 ++ .../Drivers/CMSIS/Include/core_cm33.h | 2910 +++ .../Drivers/CMSIS/Include/core_cm35p.h | 2910 +++ .../Drivers/CMSIS/Include/core_cm4.h | 2124 ++ .../Drivers/CMSIS/Include/core_cm7.h | 2725 +++ .../Drivers/CMSIS/Include/core_sc000.h | 1025 + .../Drivers/CMSIS/Include/core_sc300.h | 1912 ++ .../Drivers/CMSIS/Include/mpu_armv7.h | 272 + .../Drivers/CMSIS/Include/mpu_armv8.h | 346 + .../Drivers/CMSIS/Include/tz_context.h | 70 + .../Inc/stm32l4xx_ll_bus.h | 1957 ++ .../Inc/stm32l4xx_ll_cortex.h | 639 + .../Inc/stm32l4xx_ll_crs.h | 788 + .../Inc/stm32l4xx_ll_dma.h | 2404 ++ .../Inc/stm32l4xx_ll_dmamux.h | 1984 ++ .../Inc/stm32l4xx_ll_exti.h | 1361 ++ .../Inc/stm32l4xx_ll_gpio.h | 1058 + .../Inc/stm32l4xx_ll_pwr.h | 1678 ++ .../Inc/stm32l4xx_ll_rcc.h | 6135 +++++ .../Inc/stm32l4xx_ll_system.h | 1628 ++ .../Inc/stm32l4xx_ll_utils.h | 330 + .../Src/stm32l4xx_ll_exti.c | 290 + .../Src/stm32l4xx_ll_gpio.c | 298 + .../Src/stm32l4xx_ll_pwr.c | 85 + .../Src/stm32l4xx_ll_utils.c | 916 + .../L476_ats_blink-master.ioc | 109 + L476_ats_blink-master/STM32L476RGTX_FLASH.ld | 177 + L476_ats_blink-master/STM32L476RGTX_RAM.ld | 177 + LICENSE | 674 + 104 files changed, 83567 insertions(+) create mode 100644 L476_ats_blink-master/.cproject create mode 100644 L476_ats_blink-master/.mxproject create mode 100644 L476_ats_blink-master/.project create mode 100644 L476_ats_blink-master/.settings/language.settings.xml create mode 100644 L476_ats_blink-master/Core/Inc/main.h create mode 100644 L476_ats_blink-master/Core/Inc/stm32_assert.h create mode 100644 L476_ats_blink-master/Core/Inc/stm32l4xx_it.h create mode 100644 L476_ats_blink-master/Core/Src/gpio.c create mode 100644 L476_ats_blink-master/Core/Src/gpio.h create mode 100644 L476_ats_blink-master/Core/Src/main.c create mode 100644 L476_ats_blink-master/Core/Src/stm32l4xx_it.c create mode 100644 L476_ats_blink-master/Core/Src/syscalls.c create mode 100644 L476_ats_blink-master/Core/Src/sysmem.c create mode 100644 L476_ats_blink-master/Core/Src/system_stm32l4xx.c create mode 100644 L476_ats_blink-master/Core/Startup/startup_stm32l476rgtx.s create mode 100644 L476_ats_blink-master/Debug/Core/Src/gpio.d create mode 100644 L476_ats_blink-master/Debug/Core/Src/gpio.o create mode 100644 L476_ats_blink-master/Debug/Core/Src/gpio.su create mode 100644 L476_ats_blink-master/Debug/Core/Src/main.d create mode 100644 L476_ats_blink-master/Debug/Core/Src/main.o create mode 100644 L476_ats_blink-master/Debug/Core/Src/main.su create mode 100644 L476_ats_blink-master/Debug/Core/Src/stm32l4xx_it.d create mode 100644 L476_ats_blink-master/Debug/Core/Src/stm32l4xx_it.o create mode 100644 L476_ats_blink-master/Debug/Core/Src/stm32l4xx_it.su create mode 100644 L476_ats_blink-master/Debug/Core/Src/subdir.mk create mode 100644 L476_ats_blink-master/Debug/Core/Src/syscalls.d create mode 100644 L476_ats_blink-master/Debug/Core/Src/syscalls.o create mode 100644 L476_ats_blink-master/Debug/Core/Src/syscalls.su create mode 100644 L476_ats_blink-master/Debug/Core/Src/sysmem.d create mode 100644 L476_ats_blink-master/Debug/Core/Src/sysmem.o create mode 100644 L476_ats_blink-master/Debug/Core/Src/sysmem.su create mode 100644 L476_ats_blink-master/Debug/Core/Src/system_stm32l4xx.d create mode 100644 L476_ats_blink-master/Debug/Core/Src/system_stm32l4xx.o create mode 100644 L476_ats_blink-master/Debug/Core/Src/system_stm32l4xx.su create mode 100644 L476_ats_blink-master/Debug/Core/Startup/startup_stm32l476rgtx.d create mode 100644 L476_ats_blink-master/Debug/Core/Startup/startup_stm32l476rgtx.o create mode 100644 L476_ats_blink-master/Debug/Core/Startup/subdir.mk create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.d create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.su create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.d create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.su create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.d create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.su create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.d create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.su create mode 100644 L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/subdir.mk create mode 100644 L476_ats_blink-master/Debug/L476_ats_blink-master.bin create mode 100644 L476_ats_blink-master/Debug/L476_ats_blink-master.elf create mode 100644 L476_ats_blink-master/Debug/L476_ats_blink-master.list create mode 100644 L476_ats_blink-master/Debug/L476_ats_blink-master.map create mode 100644 L476_ats_blink-master/Debug/makefile create mode 100644 L476_ats_blink-master/Debug/objects.list create mode 100644 L476_ats_blink-master/Debug/objects.mk create mode 100644 L476_ats_blink-master/Debug/sources.mk create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armcc.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armclang.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armclang_ltm.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_compiler.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_gcc.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_iccarm.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_version.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_armv81mml.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_armv8mbl.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_armv8mml.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_cm0.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_cm0plus.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_cm1.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_cm23.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_cm3.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_cm33.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_cm35p.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_cm4.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_cm7.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_sc000.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/core_sc300.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/mpu_armv7.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/mpu_armv8.h create mode 100644 L476_ats_blink-master/Drivers/CMSIS/Include/tz_context.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_bus.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_cortex.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_crs.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dma.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dmamux.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_exti.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_gpio.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_pwr.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_rcc.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_system.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_utils.h create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.c create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.c create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.c create mode 100644 L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.c create mode 100644 L476_ats_blink-master/L476_ats_blink-master.ioc create mode 100644 L476_ats_blink-master/STM32L476RGTX_FLASH.ld create mode 100644 L476_ats_blink-master/STM32L476RGTX_RAM.ld create mode 100644 LICENSE diff --git a/L476_ats_blink-master/.cproject b/L476_ats_blink-master/.cproject new file mode 100644 index 0000000..32e8b10 --- /dev/null +++ b/L476_ats_blink-master/.cproject @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L476_ats_blink-master/.mxproject b/L476_ats_blink-master/.mxproject new file mode 100644 index 0000000..e91bbe3 --- /dev/null +++ b/L476_ats_blink-master/.mxproject @@ -0,0 +1,24 @@ +[PreviousLibFiles] +LibFiles=Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_system.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_exti.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_bus.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_cortex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_crs.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_utils.h;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.c;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dmamux.h;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.c;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_pwr.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_system.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_exti.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_gpio.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_bus.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_cortex.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_rcc.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_crs.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_utils.h;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.c;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dma.h;Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dmamux.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h;Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/cmsis_armclang_ltm.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_armv81mml.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm35p.h;Drivers/CMSIS/Include/core_cm4.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/tz_context.h; + +[PreviousUsedCubeIDEFiles] +SourceFiles=Core\Src\main.c;Core\Src\stm32l4xx_it.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.c;Core\Src/system_stm32l4xx.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.c;Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.c;Core\Src/system_stm32l4xx.c;Drivers/CMSIS/Device/ST/STM32L4xx/Source/Templates/system_stm32l4xx.c;; +HeaderPath=Drivers\STM32L4xx_HAL_Driver\Inc;Drivers\CMSIS\Device\ST\STM32L4xx\Include;Drivers\CMSIS\Include;Core\Inc; +CDefines=USE_FULL_LL_DRIVER;HSE_VALUE:8000000;HSE_STARTUP_TIMEOUT:100;LSE_STARTUP_TIMEOUT:5000;LSE_VALUE:32768;MSI_VALUE:4000000;EXTERNALSAI1_CLOCK_VALUE:2097000;EXTERNALSAI2_CLOCK_VALUE:2097000;HSI_VALUE:16000000;LSI_VALUE:32000;VDD_VALUE:3300;PREFETCH_ENABLE:0;INSTRUCTION_CACHE_ENABLE:1;DATA_CACHE_ENABLE:1;STM32L476xx;USE_FULL_LL_DRIVER;HSE_VALUE:8000000;HSE_STARTUP_TIMEOUT:100;LSE_STARTUP_TIMEOUT:5000;LSE_VALUE:32768;MSI_VALUE:4000000;EXTERNALSAI1_CLOCK_VALUE:2097000;EXTERNALSAI2_CLOCK_VALUE:2097000;HSI_VALUE:16000000;LSI_VALUE:32000;VDD_VALUE:3300;PREFETCH_ENABLE:0;INSTRUCTION_CACHE_ENABLE:1;DATA_CACHE_ENABLE:1; + +[PreviousGenFiles] +AdvancedFolderStructure=true +HeaderFileListSize=3 +HeaderFiles#0=C:/Users/adminaboyer/alex/enseignements_2020_21/TP_Prog_faible_energie/WorkSpace_STM32CubeIDE/L476_ats_blink-master/Core/Inc/stm32l4xx_it.h +HeaderFiles#1=C:/Users/adminaboyer/alex/enseignements_2020_21/TP_Prog_faible_energie/WorkSpace_STM32CubeIDE/L476_ats_blink-master/Core/Inc/stm32_assert.h +HeaderFiles#2=C:/Users/adminaboyer/alex/enseignements_2020_21/TP_Prog_faible_energie/WorkSpace_STM32CubeIDE/L476_ats_blink-master/Core/Inc/main.h +HeaderFolderListSize=1 +HeaderPath#0=C:/Users/adminaboyer/alex/enseignements_2020_21/TP_Prog_faible_energie/WorkSpace_STM32CubeIDE/L476_ats_blink-master/Core/Inc +HeaderFiles=; +SourceFileListSize=2 +SourceFiles#0=C:/Users/adminaboyer/alex/enseignements_2020_21/TP_Prog_faible_energie/WorkSpace_STM32CubeIDE/L476_ats_blink-master/Core/Src/stm32l4xx_it.c +SourceFiles#1=C:/Users/adminaboyer/alex/enseignements_2020_21/TP_Prog_faible_energie/WorkSpace_STM32CubeIDE/L476_ats_blink-master/Core/Src/main.c +SourceFolderListSize=1 +SourcePath#0=C:/Users/adminaboyer/alex/enseignements_2020_21/TP_Prog_faible_energie/WorkSpace_STM32CubeIDE/L476_ats_blink-master/Core/Src +SourceFiles=; + diff --git a/L476_ats_blink-master/.project b/L476_ats_blink-master/.project new file mode 100644 index 0000000..863e5e1 --- /dev/null +++ b/L476_ats_blink-master/.project @@ -0,0 +1,33 @@ + + + L476_ats_blink-master + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + + com.st.stm32cube.ide.mcu.MCUProjectNature + com.st.stm32cube.ide.mcu.MCUCubeProjectNature + org.eclipse.cdt.core.cnature + com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature + com.st.stm32cube.ide.mcu.MCUAdvancedStructureProjectNature + com.st.stm32cube.ide.mcu.MCUEndUserDisabledTrustZoneProjectNature + 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/L476_ats_blink-master/.settings/language.settings.xml b/L476_ats_blink-master/.settings/language.settings.xml new file mode 100644 index 0000000..2244f09 --- /dev/null +++ b/L476_ats_blink-master/.settings/language.settings.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/L476_ats_blink-master/Core/Inc/main.h b/L476_ats_blink-master/Core/Inc/main.h new file mode 100644 index 0000000..510f87b --- /dev/null +++ b/L476_ats_blink-master/Core/Inc/main.h @@ -0,0 +1,96 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file : main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx_ll_crs.h" +#include "stm32l4xx_ll_rcc.h" +#include "stm32l4xx_ll_bus.h" +#include "stm32l4xx_ll_system.h" +#include "stm32l4xx_ll_exti.h" +#include "stm32l4xx_ll_cortex.h" +#include "stm32l4xx_ll_utils.h" +#include "stm32l4xx_ll_pwr.h" +#include "stm32l4xx_ll_dma.h" +#include "stm32l4xx_ll_gpio.h" + +#if defined(USE_FULL_ASSERT) +#include "stm32_assert.h" +#endif /* USE_FULL_ASSERT */ + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +#ifndef NVIC_PRIORITYGROUP_0 +#define NVIC_PRIORITYGROUP_0 ((uint32_t)0x00000007) /*!< 0 bit for pre-emption priority, + 4 bits for subpriority */ +#define NVIC_PRIORITYGROUP_1 ((uint32_t)0x00000006) /*!< 1 bit for pre-emption priority, + 3 bits for subpriority */ +#define NVIC_PRIORITYGROUP_2 ((uint32_t)0x00000005) /*!< 2 bits for pre-emption priority, + 2 bits for subpriority */ +#define NVIC_PRIORITYGROUP_3 ((uint32_t)0x00000004) /*!< 3 bits for pre-emption priority, + 1 bit for subpriority */ +#define NVIC_PRIORITYGROUP_4 ((uint32_t)0x00000003) /*!< 4 bits for pre-emption priority, + 0 bit for subpriority */ +#endif +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Core/Inc/stm32_assert.h b/L476_ats_blink-master/Core/Inc/stm32_assert.h new file mode 100644 index 0000000..03511c4 --- /dev/null +++ b/L476_ats_blink-master/Core/Inc/stm32_assert.h @@ -0,0 +1,53 @@ +/** + ****************************************************************************** + * @file stm32_assert.h + * @brief STM32 assert file. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32_ASSERT_H +#define __STM32_ASSERT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Includes ------------------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32_ASSERT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Core/Inc/stm32l4xx_it.h b/L476_ats_blink-master/Core/Inc/stm32l4xx_it.h new file mode 100644 index 0000000..3b171f5 --- /dev/null +++ b/L476_ats_blink-master/Core/Inc/stm32l4xx_it.h @@ -0,0 +1,69 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l4xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32L4xx_IT_H +#define __STM32L4xx_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void SVC_Handler(void); +void DebugMon_Handler(void); +void PendSV_Handler(void); +void SysTick_Handler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32L4xx_IT_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Core/Src/gpio.c b/L476_ats_blink-master/Core/Src/gpio.c new file mode 100644 index 0000000..73bf964 --- /dev/null +++ b/L476_ats_blink-master/Core/Src/gpio.c @@ -0,0 +1,44 @@ +/* + * gpio.c - GPIO functions, only for Nucleo-STM32L476 board + */ +#include "stm32l4xx_ll_bus.h" +#include "stm32l4xx_ll_gpio.h" +#include "gpio.h" + +#define LED_PORT GPIOA +#define LED_PIN LL_GPIO_PIN_5 +#define BUT_PORT GPIOC +#define BUT_PIN LL_GPIO_PIN_13 + +void GPIO_init(void) +{ +// PORT A +LL_AHB2_GRP1_EnableClock( LL_AHB2_GRP1_PERIPH_GPIOA ); +// Green LED (user LED) - PA5 +LL_GPIO_SetPinMode( LED_PORT, LED_PIN, LL_GPIO_MODE_OUTPUT ); +LL_GPIO_SetPinOutputType( LED_PORT, LED_PIN, LL_GPIO_OUTPUT_PUSHPULL ); + +// PORT C +LL_AHB2_GRP1_EnableClock( LL_AHB2_GRP1_PERIPH_GPIOC ); +// Blue button - PC13 +LL_GPIO_SetPinMode( BUT_PORT, BUT_PIN, LL_GPIO_MODE_INPUT ); +} + + +void LED_GREEN( int val ) +{ +if ( val ) + LL_GPIO_SetOutputPin( LED_PORT, LED_PIN ); +else LL_GPIO_ResetOutputPin( LED_PORT, LED_PIN ); +} + +int BLUE_BUTTON() +{ +return ( !LL_GPIO_IsInputPinSet( BUT_PORT, BUT_PIN ) ); +} + + + + + + diff --git a/L476_ats_blink-master/Core/Src/gpio.h b/L476_ats_blink-master/Core/Src/gpio.h new file mode 100644 index 0000000..68bb7fa --- /dev/null +++ b/L476_ats_blink-master/Core/Src/gpio.h @@ -0,0 +1,7 @@ + +// configuration +void GPIO_init(void); + +// utilization +void LED_GREEN( int val ); +int BLUE_BUTTON(); diff --git a/L476_ats_blink-master/Core/Src/main.c b/L476_ats_blink-master/Core/Src/main.c new file mode 100644 index 0000000..c1dad82 --- /dev/null +++ b/L476_ats_blink-master/Core/Src/main.c @@ -0,0 +1,93 @@ +/* Project L476_ats_blink for STM32L476 mounted on Nucleo board: + * the user LED (mounted on pin PA-5) is flashed every second for 50 ms. + * The time base is provided by Systick (1000 ticks per second). + * The clock configuration is the default one (Sysclk = 80 MHz, derived from MSI and PLL). + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx_ll_bus.h" +#include "stm32l4xx_ll_rcc.h" +#include "stm32l4xx_ll_system.h" +#include "stm32l4xx_ll_utils.h" +#include "stm32l4xx_ll_gpio.h" +// #if defined(USE_FULL_ASSERT) +// #include "stm32_assert.h" +// #endif /* USE_FULL_ASSERT */ + +#include "gpio.h" + +// systick interrupt handler +//void SysTick_Handler() +//{ + //to be defined if systick interrupt is enabled. +//} + +void SystemClock_Config(void); + +int main(void) +{ +/* Configure the system clock */ +SystemClock_Config(); + +// config GPIO +GPIO_init(); + +// init systick timer (tick period at 1 ms) +LL_Init1msTick( SystemCoreClock ); + +while (1) { + if ( BLUE_BUTTON() ) + LED_GREEN(1); + else { + LED_GREEN(0); + LL_mDelay(950); + LED_GREEN(1); + LL_mDelay(50); + } + } +} + +/** + * @brief System Clock Configuration + * The system Clock is configured as follows : + * System Clock source = PLL (MSI) + * SYSCLK(Hz) = 80000000 + * HCLK(Hz) = 80000000 + * AHB Prescaler = 1 + * APB1 Prescaler = 1 + * APB2 Prescaler = 1 + * MSI Frequency(Hz) = 4000000 + * PLL_M = 1 + * PLL_N = 40 + * PLL_R = 2 + * Flash Latency(WS) = 4 + * @param None + * @retval None + */ +void SystemClock_Config(void) { +/* MSI configuration and activation */ +LL_FLASH_SetLatency(LL_FLASH_LATENCY_4); +LL_RCC_MSI_Enable(); +while (LL_RCC_MSI_IsReady() != 1) + { }; + +/* Main PLL configuration and activation */ +LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_MSI, LL_RCC_PLLM_DIV_1, 40, LL_RCC_PLLR_DIV_2); +LL_RCC_PLL_Enable(); +LL_RCC_PLL_EnableDomain_SYS(); +while(LL_RCC_PLL_IsReady() != 1) + { }; + +/* Sysclk activation on the main PLL */ +LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1); +LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); +while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + { }; + +/* Set APB1 & APB2 prescaler*/ +LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1); +LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_1); + +/* Update the global variable called SystemCoreClock */ +SystemCoreClockUpdate(); +} diff --git a/L476_ats_blink-master/Core/Src/stm32l4xx_it.c b/L476_ats_blink-master/Core/Src/stm32l4xx_it.c new file mode 100644 index 0000000..84c6b1f --- /dev/null +++ b/L476_ats_blink-master/Core/Src/stm32l4xx_it.c @@ -0,0 +1,203 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32l4xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32l4xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ + +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ + +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M4 Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + /* USER CODE END W1_MemoryManagement_IRQn 0 */ + } +} + +/** + * @brief This function handles Prefetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_BusFault_IRQn 0 */ + /* USER CODE END W1_BusFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ + /* USER CODE END W1_UsageFault_IRQn 0 */ + } +} + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + /* USER CODE BEGIN SVCall_IRQn 0 */ + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + /* USER CODE BEGIN DebugMonitor_IRQn 0 */ + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + /* USER CODE BEGIN PendSV_IRQn 0 */ + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + /* USER CODE BEGIN SysTick_IRQn 0 */ + + /* USER CODE END SysTick_IRQn 0 */ + + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + +/******************************************************************************/ +/* STM32L4xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file (startup_stm32l4xx.s). */ +/******************************************************************************/ + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Core/Src/syscalls.c b/L476_ats_blink-master/Core/Src/syscalls.c new file mode 100644 index 0000000..4ec9584 --- /dev/null +++ b/L476_ats_blink-master/Core/Src/syscalls.c @@ -0,0 +1,159 @@ +/** + ****************************************************************************** + * @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 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes */ +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Variables */ +//#undef errno +extern int errno; +extern int __io_putchar(int ch) __attribute__((weak)); +extern int __io_getchar(void) __attribute__((weak)); + +register char * stack_ptr asm("sp"); + +char *__env[1] = { 0 }; +char **environ = __env; + + +/* Functions */ +void initialise_monitor_handles() +{ +} + +int _getpid(void) +{ + return 1; +} + +int _kill(int pid, int sig) +{ + errno = EINVAL; + return -1; +} + +void _exit (int status) +{ + _kill(status, -1); + while (1) {} /* Make sure we hang here */ +} + +__attribute__((weak)) int _read(int file, char *ptr, int len) +{ + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + *ptr++ = __io_getchar(); + } + +return len; +} + +__attribute__((weak)) int _write(int file, char *ptr, int len) +{ + int DataIdx; + + for (DataIdx = 0; DataIdx < len; DataIdx++) + { + __io_putchar(*ptr++); + } + return len; +} + +int _close(int file) +{ + return -1; +} + + +int _fstat(int file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return 0; +} + +int _isatty(int file) +{ + return 1; +} + +int _lseek(int file, int ptr, int dir) +{ + return 0; +} + +int _open(char *path, int flags, ...) +{ + /* Pretend like we always fail */ + return -1; +} + +int _wait(int *status) +{ + errno = ECHILD; + return -1; +} + +int _unlink(char *name) +{ + errno = ENOENT; + return -1; +} + +int _times(struct tms *buf) +{ + return -1; +} + +int _stat(char *file, struct stat *st) +{ + st->st_mode = S_IFCHR; + return 0; +} + +int _link(char *old, char *new) +{ + errno = EMLINK; + return -1; +} + +int _fork(void) +{ + errno = EAGAIN; + return -1; +} + +int _execve(char *name, char **argv, char **env) +{ + errno = ENOMEM; + return -1; +} diff --git a/L476_ats_blink-master/Core/Src/sysmem.c b/L476_ats_blink-master/Core/Src/sysmem.c new file mode 100644 index 0000000..23180b6 --- /dev/null +++ b/L476_ats_blink-master/Core/Src/sysmem.c @@ -0,0 +1,80 @@ +/** + ****************************************************************************** + * @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) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* 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; + + /* Initalize 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/L476_ats_blink-master/Core/Src/system_stm32l4xx.c b/L476_ats_blink-master/Core/Src/system_stm32l4xx.c new file mode 100644 index 0000000..ab94a2c --- /dev/null +++ b/L476_ats_blink-master/Core/Src/system_stm32l4xx.c @@ -0,0 +1,337 @@ +/** + ****************************************************************************** + * @file system_stm32l4xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File + * + * This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32l4xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * After each device reset the MSI (4 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32l4xx.s" file, to + * configure the system clock before to branch to main program. + * + * This file configures the system clock as follows: + *============================================================================= + *----------------------------------------------------------------------------- + * System Clock source | MSI + *----------------------------------------------------------------------------- + * SYSCLK(Hz) | 4000000 + *----------------------------------------------------------------------------- + * HCLK(Hz) | 4000000 + *----------------------------------------------------------------------------- + * AHB Prescaler | 1 + *----------------------------------------------------------------------------- + * APB1 Prescaler | 1 + *----------------------------------------------------------------------------- + * APB2 Prescaler | 1 + *----------------------------------------------------------------------------- + * PLL_M | 1 + *----------------------------------------------------------------------------- + * PLL_N | 8 + *----------------------------------------------------------------------------- + * PLL_P | 7 + *----------------------------------------------------------------------------- + * PLL_Q | 2 + *----------------------------------------------------------------------------- + * PLL_R | 2 + *----------------------------------------------------------------------------- + * PLLSAI1_P | NA + *----------------------------------------------------------------------------- + * PLLSAI1_Q | NA + *----------------------------------------------------------------------------- + * PLLSAI1_R | NA + *----------------------------------------------------------------------------- + * PLLSAI2_P | NA + *----------------------------------------------------------------------------- + * PLLSAI2_Q | NA + *----------------------------------------------------------------------------- + * PLLSAI2_R | NA + *----------------------------------------------------------------------------- + * Require 48MHz for USB OTG FS, | Disabled + * SDIO and RNG clock | + *----------------------------------------------------------------------------- + *============================================================================= + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under 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: + * opensource.org/licenses/Apache-2.0 + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l4xx_system + * @{ + */ + +/** @addtogroup STM32L4xx_System_Private_Includes + * @{ + */ + +#include "stm32l4xx.h" + +#if !defined (HSE_VALUE) + #define HSE_VALUE 8000000U /*!< Value of the External oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (MSI_VALUE) + #define MSI_VALUE 4000000U /*!< Value of the Internal oscillator in Hz*/ +#endif /* MSI_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE 16000000U /*!< Value of the Internal oscillator in Hz*/ +#endif /* HSI_VALUE */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Defines + * @{ + */ + +/************************* Miscellaneous Configuration ************************/ +/*!< Uncomment the following line if you need to relocate your vector Table in + Internal SRAM. */ +/* #define VECT_TAB_SRAM */ +#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +/******************************************************************************/ +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Variables + * @{ + */ + /* The SystemCoreClock variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ + uint32_t SystemCoreClock = 4000000U; + + const uint8_t AHBPrescTable[16] = {0U, 0U, 0U, 0U, 0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U, 6U, 7U, 8U, 9U}; + const uint8_t APBPrescTable[8] = {0U, 0U, 0U, 0U, 1U, 2U, 3U, 4U}; + const uint32_t MSIRangeTable[12] = {100000U, 200000U, 400000U, 800000U, 1000000U, 2000000U, \ + 4000000U, 8000000U, 16000000U, 24000000U, 32000000U, 48000000U}; +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_FunctionPrototypes + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system. + * @param None + * @retval None + */ + +void SystemInit(void) +{ + /* FPU settings ------------------------------------------------------------*/ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ + #endif + + /* Reset the RCC clock configuration to the default reset state ------------*/ + /* Set MSION bit */ + RCC->CR |= RCC_CR_MSION; + + /* Reset CFGR register */ + RCC->CFGR = 0x00000000U; + + /* Reset HSEON, CSSON , HSION, and PLLON bits */ + RCC->CR &= 0xEAF6FFFFU; + + /* Reset PLLCFGR register */ + RCC->PLLCFGR = 0x00001000U; + + /* Reset HSEBYP bit */ + RCC->CR &= 0xFFFBFFFFU; + + /* Disable all interrupts */ + RCC->CIER = 0x00000000U; + + /* Configure the Vector Table location add offset address ------------------*/ +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ +#endif +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is MSI, SystemCoreClock will contain the MSI_VALUE(*) + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(**) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(***) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(***) + * or HSI_VALUE(*) or MSI_VALUE(*) multiplied/divided by the PLL factors. + * + * (*) MSI_VALUE is a constant defined in stm32l4xx_hal.h file (default value + * 4 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSI_VALUE is a constant defined in stm32l4xx_hal.h file (default value + * 16 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (***) HSE_VALUE is a constant defined in stm32l4xx_hal.h file (default value + * 8 MHz), user has to ensure that HSE_VALUE is same as the real + * frequency of the crystal used. Otherwise, this function may + * have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) +{ + uint32_t tmp = 0U, msirange = 0U, pllvco = 0U, pllr = 2U, pllsource = 0U, pllm = 2U; + + /* Get MSI Range frequency--------------------------------------------------*/ + if((RCC->CR & RCC_CR_MSIRGSEL) == RESET) + { /* MSISRANGE from RCC_CSR applies */ + msirange = (RCC->CSR & RCC_CSR_MSISRANGE) >> 8U; + } + else + { /* MSIRANGE from RCC_CR applies */ + msirange = (RCC->CR & RCC_CR_MSIRANGE) >> 4U; + } + /*MSI frequency range in HZ*/ + msirange = MSIRangeTable[msirange]; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (RCC->CFGR & RCC_CFGR_SWS) + { + case 0x00: /* MSI used as system clock source */ + SystemCoreClock = msirange; + break; + + case 0x04: /* HSI used as system clock source */ + SystemCoreClock = HSI_VALUE; + break; + + case 0x08: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + break; + + case 0x0C: /* PLL used as system clock source */ + /* PLL_VCO = (HSE_VALUE or HSI_VALUE or MSI_VALUE/ PLLM) * PLLN + SYSCLK = PLL_VCO / PLLR + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> 4U) + 1U ; + + switch (pllsource) + { + case 0x02: /* HSI used as PLL clock source */ + pllvco = (HSI_VALUE / pllm); + break; + + case 0x03: /* HSE used as PLL clock source */ + pllvco = (HSE_VALUE / pllm); + break; + + default: /* MSI used as PLL clock source */ + pllvco = (msirange / pllm); + break; + } + pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 8U); + pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 25U) + 1U) * 2U; + SystemCoreClock = pllvco/pllr; + break; + + default: + SystemCoreClock = msirange; + break; + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Core/Startup/startup_stm32l476rgtx.s b/L476_ats_blink-master/Core/Startup/startup_stm32l476rgtx.s new file mode 100644 index 0000000..f076fac --- /dev/null +++ b/L476_ats_blink-master/Core/Startup/startup_stm32l476rgtx.s @@ -0,0 +1,509 @@ +/** + ****************************************************************************** + * @file startup_stm32l476xx.s + * @author MCD Application Team + * @brief STM32L476xx devices vector table 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, + * - Configure the clock system + * - Branches to main in the C library (which eventually + * calls main()). + * After Reset the Cortex-M4 processor is in Thread mode, + * priority is Privileged, and the Stack is set to Main. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under 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: + * opensource.org/licenses/Apache-2.0 + * + ****************************************************************************** + */ + + .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 + +.equ BootRAM, 0xF1E0F85F +/** + * @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 sp, =_estack /* Set stack pointer */ + +/* Call the clock system initialization function.*/ + bl SystemInit + +/* Copy the data segment initializers from flash to SRAM */ + movs r1, #0 + b LoopCopyDataInit + +CopyDataInit: + ldr r3, =_sidata + ldr r3, [r3, r1] + str r3, [r0, r1] + adds r1, r1, #4 + +LoopCopyDataInit: + ldr r0, =_sdata + ldr r3, =_edata + adds r2, r0, r1 + cmp r2, r3 + bcc CopyDataInit + ldr r2, =_sbss + b LoopFillZerobss +/* Zero fill the bss segment. */ +FillZerobss: + movs r3, #0 + str r3, [r2], #4 + +LoopFillZerobss: + ldr r3, = _ebss + cmp r2, r3 + 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 + +/** + * @brief This is the code that gets called when the processor receives an + * unexpected interrupt. This simply enters an infinite loop, preserving + * the system state for examination by a debugger. + * + * @param None + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + .size Default_Handler, .-Default_Handler +/****************************************************************************** +* +* The minimal vector table for a Cortex-M4. Note that the proper constructs +* must be placed on this to ensure that it ends up at physical address +* 0x0000.0000. +* +******************************************************************************/ + .section .isr_vector,"a",%progbits + .type g_pfnVectors, %object + .size g_pfnVectors, .-g_pfnVectors + + +g_pfnVectors: + .word _estack + .word Reset_Handler + .word NMI_Handler + .word HardFault_Handler + .word MemManage_Handler + .word BusFault_Handler + .word UsageFault_Handler + .word 0 + .word 0 + .word 0 + .word 0 + .word SVC_Handler + .word DebugMon_Handler + .word 0 + .word PendSV_Handler + .word SysTick_Handler + .word WWDG_IRQHandler + .word PVD_PVM_IRQHandler + .word TAMP_STAMP_IRQHandler + .word RTC_WKUP_IRQHandler + .word FLASH_IRQHandler + .word RCC_IRQHandler + .word EXTI0_IRQHandler + .word EXTI1_IRQHandler + .word EXTI2_IRQHandler + .word EXTI3_IRQHandler + .word EXTI4_IRQHandler + .word DMA1_Channel1_IRQHandler + .word DMA1_Channel2_IRQHandler + .word DMA1_Channel3_IRQHandler + .word DMA1_Channel4_IRQHandler + .word DMA1_Channel5_IRQHandler + .word DMA1_Channel6_IRQHandler + .word DMA1_Channel7_IRQHandler + .word ADC1_2_IRQHandler + .word CAN1_TX_IRQHandler + .word CAN1_RX0_IRQHandler + .word CAN1_RX1_IRQHandler + .word CAN1_SCE_IRQHandler + .word EXTI9_5_IRQHandler + .word TIM1_BRK_TIM15_IRQHandler + .word TIM1_UP_TIM16_IRQHandler + .word TIM1_TRG_COM_TIM17_IRQHandler + .word TIM1_CC_IRQHandler + .word TIM2_IRQHandler + .word TIM3_IRQHandler + .word TIM4_IRQHandler + .word I2C1_EV_IRQHandler + .word I2C1_ER_IRQHandler + .word I2C2_EV_IRQHandler + .word I2C2_ER_IRQHandler + .word SPI1_IRQHandler + .word SPI2_IRQHandler + .word USART1_IRQHandler + .word USART2_IRQHandler + .word USART3_IRQHandler + .word EXTI15_10_IRQHandler + .word RTC_Alarm_IRQHandler + .word DFSDM1_FLT3_IRQHandler + .word TIM8_BRK_IRQHandler + .word TIM8_UP_IRQHandler + .word TIM8_TRG_COM_IRQHandler + .word TIM8_CC_IRQHandler + .word ADC3_IRQHandler + .word FMC_IRQHandler + .word SDMMC1_IRQHandler + .word TIM5_IRQHandler + .word SPI3_IRQHandler + .word UART4_IRQHandler + .word UART5_IRQHandler + .word TIM6_DAC_IRQHandler + .word TIM7_IRQHandler + .word DMA2_Channel1_IRQHandler + .word DMA2_Channel2_IRQHandler + .word DMA2_Channel3_IRQHandler + .word DMA2_Channel4_IRQHandler + .word DMA2_Channel5_IRQHandler + .word DFSDM1_FLT0_IRQHandler + .word DFSDM1_FLT1_IRQHandler + .word DFSDM1_FLT2_IRQHandler + .word COMP_IRQHandler + .word LPTIM1_IRQHandler + .word LPTIM2_IRQHandler + .word OTG_FS_IRQHandler + .word DMA2_Channel6_IRQHandler + .word DMA2_Channel7_IRQHandler + .word LPUART1_IRQHandler + .word QUADSPI_IRQHandler + .word I2C3_EV_IRQHandler + .word I2C3_ER_IRQHandler + .word SAI1_IRQHandler + .word SAI2_IRQHandler + .word SWPMI1_IRQHandler + .word TSC_IRQHandler + .word LCD_IRQHandler + .word 0 + .word RNG_IRQHandler + .word FPU_IRQHandler + + +/******************************************************************************* +* +* Provide weak aliases for each Exception handler to the Default_Handler. +* As they are weak aliases, any function with the same name will override +* this definition. +* +*******************************************************************************/ + + .weak NMI_Handler + .thumb_set NMI_Handler,Default_Handler + + .weak HardFault_Handler + .thumb_set HardFault_Handler,Default_Handler + + .weak MemManage_Handler + .thumb_set MemManage_Handler,Default_Handler + + .weak BusFault_Handler + .thumb_set BusFault_Handler,Default_Handler + + .weak UsageFault_Handler + .thumb_set UsageFault_Handler,Default_Handler + + .weak SVC_Handler + .thumb_set SVC_Handler,Default_Handler + + .weak DebugMon_Handler + .thumb_set DebugMon_Handler,Default_Handler + + .weak PendSV_Handler + .thumb_set PendSV_Handler,Default_Handler + + .weak SysTick_Handler + .thumb_set SysTick_Handler,Default_Handler + + .weak WWDG_IRQHandler + .thumb_set WWDG_IRQHandler,Default_Handler + + .weak PVD_PVM_IRQHandler + .thumb_set PVD_PVM_IRQHandler,Default_Handler + + .weak TAMP_STAMP_IRQHandler + .thumb_set TAMP_STAMP_IRQHandler,Default_Handler + + .weak RTC_WKUP_IRQHandler + .thumb_set RTC_WKUP_IRQHandler,Default_Handler + + .weak FLASH_IRQHandler + .thumb_set FLASH_IRQHandler,Default_Handler + + .weak RCC_IRQHandler + .thumb_set RCC_IRQHandler,Default_Handler + + .weak EXTI0_IRQHandler + .thumb_set EXTI0_IRQHandler,Default_Handler + + .weak EXTI1_IRQHandler + .thumb_set EXTI1_IRQHandler,Default_Handler + + .weak EXTI2_IRQHandler + .thumb_set EXTI2_IRQHandler,Default_Handler + + .weak EXTI3_IRQHandler + .thumb_set EXTI3_IRQHandler,Default_Handler + + .weak EXTI4_IRQHandler + .thumb_set EXTI4_IRQHandler,Default_Handler + + .weak DMA1_Channel1_IRQHandler + .thumb_set DMA1_Channel1_IRQHandler,Default_Handler + + .weak DMA1_Channel2_IRQHandler + .thumb_set DMA1_Channel2_IRQHandler,Default_Handler + + .weak DMA1_Channel3_IRQHandler + .thumb_set DMA1_Channel3_IRQHandler,Default_Handler + + .weak DMA1_Channel4_IRQHandler + .thumb_set DMA1_Channel4_IRQHandler,Default_Handler + + .weak DMA1_Channel5_IRQHandler + .thumb_set DMA1_Channel5_IRQHandler,Default_Handler + + .weak DMA1_Channel6_IRQHandler + .thumb_set DMA1_Channel6_IRQHandler,Default_Handler + + .weak DMA1_Channel7_IRQHandler + .thumb_set DMA1_Channel7_IRQHandler,Default_Handler + + .weak ADC1_2_IRQHandler + .thumb_set ADC1_2_IRQHandler,Default_Handler + + .weak CAN1_TX_IRQHandler + .thumb_set CAN1_TX_IRQHandler,Default_Handler + + .weak CAN1_RX0_IRQHandler + .thumb_set CAN1_RX0_IRQHandler,Default_Handler + + .weak CAN1_RX1_IRQHandler + .thumb_set CAN1_RX1_IRQHandler,Default_Handler + + .weak CAN1_SCE_IRQHandler + .thumb_set CAN1_SCE_IRQHandler,Default_Handler + + .weak EXTI9_5_IRQHandler + .thumb_set EXTI9_5_IRQHandler,Default_Handler + + .weak TIM1_BRK_TIM15_IRQHandler + .thumb_set TIM1_BRK_TIM15_IRQHandler,Default_Handler + + .weak TIM1_UP_TIM16_IRQHandler + .thumb_set TIM1_UP_TIM16_IRQHandler,Default_Handler + + .weak TIM1_TRG_COM_TIM17_IRQHandler + .thumb_set TIM1_TRG_COM_TIM17_IRQHandler,Default_Handler + + .weak TIM1_CC_IRQHandler + .thumb_set TIM1_CC_IRQHandler,Default_Handler + + .weak TIM2_IRQHandler + .thumb_set TIM2_IRQHandler,Default_Handler + + .weak TIM3_IRQHandler + .thumb_set TIM3_IRQHandler,Default_Handler + + .weak TIM4_IRQHandler + .thumb_set TIM4_IRQHandler,Default_Handler + + .weak I2C1_EV_IRQHandler + .thumb_set I2C1_EV_IRQHandler,Default_Handler + + .weak I2C1_ER_IRQHandler + .thumb_set I2C1_ER_IRQHandler,Default_Handler + + .weak I2C2_EV_IRQHandler + .thumb_set I2C2_EV_IRQHandler,Default_Handler + + .weak I2C2_ER_IRQHandler + .thumb_set I2C2_ER_IRQHandler,Default_Handler + + .weak SPI1_IRQHandler + .thumb_set SPI1_IRQHandler,Default_Handler + + .weak SPI2_IRQHandler + .thumb_set SPI2_IRQHandler,Default_Handler + + .weak USART1_IRQHandler + .thumb_set USART1_IRQHandler,Default_Handler + + .weak USART2_IRQHandler + .thumb_set USART2_IRQHandler,Default_Handler + + .weak USART3_IRQHandler + .thumb_set USART3_IRQHandler,Default_Handler + + .weak EXTI15_10_IRQHandler + .thumb_set EXTI15_10_IRQHandler,Default_Handler + + .weak RTC_Alarm_IRQHandler + .thumb_set RTC_Alarm_IRQHandler,Default_Handler + + .weak DFSDM1_FLT3_IRQHandler + .thumb_set DFSDM1_FLT3_IRQHandler,Default_Handler + + .weak TIM8_BRK_IRQHandler + .thumb_set TIM8_BRK_IRQHandler,Default_Handler + + .weak TIM8_UP_IRQHandler + .thumb_set TIM8_UP_IRQHandler,Default_Handler + + .weak TIM8_TRG_COM_IRQHandler + .thumb_set TIM8_TRG_COM_IRQHandler,Default_Handler + + .weak TIM8_CC_IRQHandler + .thumb_set TIM8_CC_IRQHandler,Default_Handler + + .weak ADC3_IRQHandler + .thumb_set ADC3_IRQHandler,Default_Handler + + .weak FMC_IRQHandler + .thumb_set FMC_IRQHandler,Default_Handler + + .weak SDMMC1_IRQHandler + .thumb_set SDMMC1_IRQHandler,Default_Handler + + .weak TIM5_IRQHandler + .thumb_set TIM5_IRQHandler,Default_Handler + + .weak SPI3_IRQHandler + .thumb_set SPI3_IRQHandler,Default_Handler + + .weak UART4_IRQHandler + .thumb_set UART4_IRQHandler,Default_Handler + + .weak UART5_IRQHandler + .thumb_set UART5_IRQHandler,Default_Handler + + .weak TIM6_DAC_IRQHandler + .thumb_set TIM6_DAC_IRQHandler,Default_Handler + + .weak TIM7_IRQHandler + .thumb_set TIM7_IRQHandler,Default_Handler + + .weak DMA2_Channel1_IRQHandler + .thumb_set DMA2_Channel1_IRQHandler,Default_Handler + + .weak DMA2_Channel2_IRQHandler + .thumb_set DMA2_Channel2_IRQHandler,Default_Handler + + .weak DMA2_Channel3_IRQHandler + .thumb_set DMA2_Channel3_IRQHandler,Default_Handler + + .weak DMA2_Channel4_IRQHandler + .thumb_set DMA2_Channel4_IRQHandler,Default_Handler + + .weak DMA2_Channel5_IRQHandler + .thumb_set DMA2_Channel5_IRQHandler,Default_Handler + + .weak DFSDM1_FLT0_IRQHandler + .thumb_set DFSDM1_FLT0_IRQHandler,Default_Handler + + .weak DFSDM1_FLT1_IRQHandler + .thumb_set DFSDM1_FLT1_IRQHandler,Default_Handler + + .weak DFSDM1_FLT2_IRQHandler + .thumb_set DFSDM1_FLT2_IRQHandler,Default_Handler + + .weak COMP_IRQHandler + .thumb_set COMP_IRQHandler,Default_Handler + + .weak LPTIM1_IRQHandler + .thumb_set LPTIM1_IRQHandler,Default_Handler + + .weak LPTIM2_IRQHandler + .thumb_set LPTIM2_IRQHandler,Default_Handler + + .weak OTG_FS_IRQHandler + .thumb_set OTG_FS_IRQHandler,Default_Handler + + .weak DMA2_Channel6_IRQHandler + .thumb_set DMA2_Channel6_IRQHandler,Default_Handler + + .weak DMA2_Channel7_IRQHandler + .thumb_set DMA2_Channel7_IRQHandler,Default_Handler + + .weak LPUART1_IRQHandler + .thumb_set LPUART1_IRQHandler,Default_Handler + + .weak QUADSPI_IRQHandler + .thumb_set QUADSPI_IRQHandler,Default_Handler + + .weak I2C3_EV_IRQHandler + .thumb_set I2C3_EV_IRQHandler,Default_Handler + + .weak I2C3_ER_IRQHandler + .thumb_set I2C3_ER_IRQHandler,Default_Handler + + .weak SAI1_IRQHandler + .thumb_set SAI1_IRQHandler,Default_Handler + + .weak SAI2_IRQHandler + .thumb_set SAI2_IRQHandler,Default_Handler + + .weak SWPMI1_IRQHandler + .thumb_set SWPMI1_IRQHandler,Default_Handler + + .weak TSC_IRQHandler + .thumb_set TSC_IRQHandler,Default_Handler + + .weak LCD_IRQHandler + .thumb_set LCD_IRQHandler,Default_Handler + + .weak RNG_IRQHandler + .thumb_set RNG_IRQHandler,Default_Handler + + .weak FPU_IRQHandler + .thumb_set FPU_IRQHandler,Default_Handler +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Debug/Core/Src/gpio.d b/L476_ats_blink-master/Debug/Core/Src/gpio.d new file mode 100644 index 0000000..c1cc1dd --- /dev/null +++ b/L476_ats_blink-master/Debug/Core/Src/gpio.d @@ -0,0 +1,34 @@ +Core/Src/gpio.o: ../Core/Src/gpio.c \ + ../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_bus.h \ + ../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h \ + ../Drivers/CMSIS/Include/core_cm4.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h \ + ../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_gpio.h \ + ../Core/Src/gpio.h + +../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_bus.h: + +../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h: + +../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h: + +../Drivers/CMSIS/Include/core_cm4.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Include/mpu_armv7.h: + +../Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h: + +../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_gpio.h: + +../Core/Src/gpio.h: diff --git a/L476_ats_blink-master/Debug/Core/Src/gpio.o b/L476_ats_blink-master/Debug/Core/Src/gpio.o new file mode 100644 index 0000000000000000000000000000000000000000..f505bb71450ec4e72623bf7a90da53c645d237fb GIT binary patch literal 915824 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 z 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%0DU8mN*ut0(kaUAAw$_OLU_?KT}6T;F2yVTEUO` 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%0AY*gQXX*;^ zg%dH^y@u!W1jm|~w6~SlH}Qv@Zb~g1t!bsDkQd{Ji$B=0=Ak}}`6sX8;kVHMHX62Y zjEe$0jtfeQPfW;4g9qcN#%rhtiJzb*pSvk5d`7@}jbbBA?*@Bv(lGxGKvjc@q0?{@ zeHF{)N2E$$1LKDG1B5C5M1yt$7Sucv+PC|$0qI*YP$YuyGMBUvRo0ORd8F$SN>Se? zifnbUankDA4(rs$T{00wF%h9iQFlOtQA#d;Z@}J}nfZBDtxZ9M$1ZRbO+izXsjDRG z1C4?UaKN_4ti}W;i-mxw*9}4|CPw#x&@L};<&LG9a}mR+)lh-exiH+5G&$*bLEbXQ z?(KRvQbElHVZ3`OY#2!l!*KSQ!t(h*TUhOsS-dzt^n&Khj@kxpuG{$ybL2F%a1T|3 zvBQvFklx;7=g&cD6bM{%w{!Adzx8!u7~b5EinQ#c2!=>cFa`p6ga7CZ#y_~iNb|tR z4T5zzysqpV)v{W&2{55VWRQS;r7i$nNlCx+a9rb>LMJUD(73kpYs$)!3E`dM zg^OlgD>v8Iw`BGwS}a&SV3@Dy65Rqi>S$7%{aX{yN&ZKRmxfpEqe65*H8>C`_4oHk z1-+;Vw+V)nqA6)XVz(^l9fI(Shxx-A2rlE^Ggb0Ht6^%-fA#cKmL0VZOqv#zDJJ*jFr5bPq57hoH@Db`a6VCF1BR{&HL3B*6L0*udEQW)1}fo_0Zukc zl*vssOJps~|L(rTT9D}lPno1FkMw7Ne@DA;1F(ivw|S;m&{--42%T%0C6^mJ0Pl!zWBN{4rCYXvm9(cQ$HOjUT?R!QsO zF|;M|g9#i-{E?d#ZH_)wze$|a3i^5rjM?Kl0}2AaQ*s6U@#&u-WZhSJ=NerBwylq6%&K)Zgoyt(AH7Uah|e+JO={L za{U+R$~UT=lUzX!aO1iy{<%B_?)$Flnp%_ZIr-!TtqP^56mL^uXGzf7CnXV@AwcLJ z&?pdmm?Bf4vf3gFg%b_Lc*d!lD+~TjzL0_YM{20A6~R9r?hAtF7q85X7l;Xw*_ZtV z=GfCfYN@WPWioH^W)IaX8JXUJFXLyc^{r6|9)86On!zAOXf`+XS&+3=2n;N$n@GpF zKFy7$MAQQB233Vw#V$&$68v;e(absWFeAs?HC-S9XQ{pu-b?bT@x(Ez)ts--B%!B988a z+K@@rmbh{Z^m#LPosX0PAByTUG6G+mN0EpkC3Qj4TQhli-&kKWeN90|0_d zL?WiaMiHyhz|}AxQ(D6gBG!)$nVT+Vb&gmwyZv_Y%7hp`yx_*<`1%{?{Nbcg&7XXY$ImLzFe>EsU1NVeR$9fGboeBo8s_C z_|8~bq?|k^AnH#;;y_$dUD5(EkJQkcnt#6ndTy+RsX7+01Ws3|aT^eiK#@By7V~6y z_||Fk9<1gxOQE)yoM>!UJ!!?JW)&#S+LuoolKB?nJgLMPe8MGji#^K>^;UyXer-?X?H?Y4$9pjfh^a8ySsY1#(sBKnI zezCHpq}^txNOWFvk@FD2Mgi={e#zTf{>{9EC>b?0Jgj10>@0C%76>d3y_FDKkeBBw zl}X)-#z`jd#k0q1q`mw`w4WL zXr4e*h&g8VA)KqFCLn~Kp637l!Z)p>3QKZg-nqm zQ>zsZwOnOufFzTB=V6P8Ww7r#2dF3oheg(I)R9#|b$+J0nRaQ=s_DO{r~5s#J3!;Q zdr;SIOK<6!#u3~?0p4Ke{^)f;%~+5$yh%3D?{;PNO_%@`s0A8GEIObX)rX843c*>F zn(1^)8Sr7+J~~s8zC32OtE2XfeJI8%myO_X0MskoHW&i3Tw6j@i5kz?-q>Vei5pc`M=5VdaSET>jKFP#I?GOWtixksuVl0s8X*SD?$rk^%oeT&EQdN=j()AJUVW;* z#A&-nTMH=9*9SU9ydYmo-F5?z-fXtbjS;x+x?~3ERZmDCM>urK)tB$`Uh^YZsGX)x zUELtGoVk+WsjJOiXD?uRy}2OYP1R-~wIZzGaRUZfbvmG4AkmSca(erf7wq7AhgK=H zSgTQlrhk}DFR!m}FR#C!-dtWyt|p(qo7}E$uSG1vq6o?o1rsiJWVz@0fu@2!Q5Fh6 zhy<9uKlJQq^M|7P&5!ii zG`EHc(yF&GHLPB`|CdLsh*BMe=?ExX~4})HUqg;8S zemRcRto5?R7N)_*1`ZjZ2Wo1k>6uD(wt&5stL^-|m|myHHIoIV>gs|CYsMw0Vj^9B z3iS?@C)ZEg%?*;lqxAXR_y4;6@vlFAt{e%-PU=U&yF=&I^XR$bxmN0m)AXTKiK6Dx zB!F{TJ0lPY{v=da(cPd{ZQTs_ylpS2WuxK6ptMn$x;Zp^ydy0*0b`mrJO8G^#Xf$Z)f;CYzuH*`dgH8U1b@jx1QT`gCrY4d^c zrI5_lHkt6RT3Vq=eT4JATrJ8$|Mqv^w*RfpUY{duUMyo|G-p;WAPseN2-^kBv=`=( zZa5Fzch-JW02=i8)Q*_Bej6q=BZ_1(QRPANi@lM{3B&eKO;dxgJ8SuK$6*R>_<@w1 z(v7v4#1L**MNJ2#M$0w3c2j3Mpk5$%1^R7s3-R1xIS2mfmU^Uut##$}!9n3=*gzaN z2(=S7jeZELljU+yPYo5yZ2ou!TKM7`f9*VS>zJ(*<=6`TKM-CH;nq6{zY*11_}c~f zQPPniPAx(nyn$K5$70_EYA8NpK9(U|A7f(-Z9L<@aH7msCOu3qXd%MQzenI5P%p%X z<9^v8N)jALHjonNmqt+hzTp}!Ej|9alAbaa=SpCq68uRr`hP>St+4mk{;Y=Vdko2g zAl8R`HsV{^?$a!XDZZC>30nstgqjKa)S{Lru%k8>)(JU|J^WCEH)e`5@8!-!zM^T!3!BZC{9KO)v| zOhU*w6Vhp_sf~KOZEkkk6@(zjQ=!cOX|Y`c#xjgj2mw-4#GZ|#+l!&^o2{GOk+i8k zOE%SRr5Ku~6kuSBf zdO`q#)i#8O)leJcB`oHY*v!5pn;=GH-M|0^i^!n9g1{rV%sdTvmsr?rdtpzsUE-@u zg11NJuv}&@;$|RWeD{d3T@$|w$^$i1g7;nQ5fN+B7FC0X(Sm8r0&7C}G_wUiQ6^x0 zyRvG!##qEK!F}A*WF@&x0`bF@&|MpMGfia$S8@CY8rwWi|yB2q;T^*#oURY z7i1O#;pF11i%pDjp4Bp=`-Sj)x|$9!>gP@sGE9O~MVpNn{+&=&z3N|(RM(BFdsyAT z5i1I}K4O$;$t)+xbY?W6hi>ql7A1AjuOm|8Mf^F#oRYTk$dvfL8+}rBcyoVT0U_FH zAm2$Oj#;KDI`Tzj^x8ty-v~r{c|6EV4G$+cQj+K_3e`gAk*Qj0!?U$D)L;-HFgL#0 zy>3)X9Z1zBd)4tgRQvCxG(|xK6N@)`B}t~9H0Ybv@#<~~cPWo#?ow@+tV!XfvtfdV znHyq8NfT~IIc#M(e$i(Xwj8cDYmkZ9=@Gk_TT%_WC0Rt65%p)e(Hcqxd5)koERBvu z=b66jqw_5B5ziNI+2ZY!ZcI9Q5fqpvm3@be+U%@IPssc7zp8a}xaxQK?o~r_41jti z-^(=ZIjop!M+2ogHh2*r*%b^X&$N4s1da-FtvO+($C&9W^ZL*)Elvr5!VJq0u)2|7 zeO%tAP2SW|mLm=bydjcATI%I`dT~8<#d|R>rBudpE1A5gmi1}w*4FmlR600>9-wnr zL%q>9e?toWO~KyNBwslMOtp#N|~~jTWa@ z{3W&Kz)_7TZ~#`TI#vfPAyTNiurx{+$%;8iL^j_3?w)iKC+3%ZH=K5YbB0`ceoE-qX-vPr>MA|?B`2$^x}H3 z9XXRc4-j`kSkaX9)i_OX$QUrCEle{Ryf>z41=U$Q`5jO%bdzWkBejHv<5FAPLY#FO z5aW$vUf50JfUNYn96Z<14EyTp4)>#cV~v2-V?Sd^O7aHwDt0sZwcLVKTcfa4jE#{* zh`VTGH_)SWKs6NHEa;;(G)h%~5$AhYLGKBNR))5q@J!TYuwJ6F9Kzy8S&pDoqHPGE z6d7fR&^Tl&-zfgZt02Fz<4B$`bPcK@&co&g;iK)<_L){e6IA1jjXq^uu;C$V^phX4eL8P;wI3HC-FmxvTEV?zt_F+ z_2l3Go%fd4{(551XU{x8d*=E1GtXZ<^ZYejv=C?Y4x)ek6G@+;H+5eRT$IQCoL*)a zP6U8#9%>4P;R>{8WC5CNh3qPtobL9Gfq#JkjZ{fb%0P`HhTyYkt1_=k=c=86>YH6R z)8@LFZ?_Y(85i?l7_L|wwuFUW4&>It*R0+KGz)Rx-x>F-=CTGb_gGs_R}X;dpRDud zxaF#SvyUc2RF!+R32UK@+h zYH>wPZTo?;1KUda6z>L#Bp!D!bo=>l^_eqH#R+pcfrM>~s-bBz+a=eodO=Xz!|)@6 z1aEm18XP`S&E^1$Jj4-h37dGT`bja%lnYLhD^d>frXTNakShJKdISCCaq{9TV=Qsm ztsXagT}-Dj%?(Hs0%L*W8*KLt<10^RujxVy_bs#7glLHvIEtBFXsS8iAcQ%;y~a+p zpU5*!6Hi9K=6@9V_z9DusVD1On7S8h*{4`)(E4+g)I!WPO-QE*9Rt4oESZ7P%rrl* z>*LfZ4>F~$YNvgsy7BQa@`3$4NCmOkjta(WSm$sgad0f&w1m^8q{f9sT>0uMr6~Ew zWv35>@_649HO5qtq$aFTw6;GrwF7LhOxH(2K=VhJIKyq`^}Q6lW03*7|U?yxeJdrfCvPh1&x>~J=W{7@)5X5iO7o9r+KPXAZqkbP>_21(RKc+g{gTRP003v z(q5J7&Xlw;RVNm~ge{JUmW>CHJ>r~tBUCYLE4Fi7n3I75B^JnuOJnnCE@}D|J92S&XkgIuXDv)!(uOl#I0TF$Z?bq<8d+d{;ED)Modp;pV715X-jFDeM*;VP-hPfqF@Y6? zRsZ($@yGA~m5yQ?WWl~(J!;~iadYC`^4(Ztxi#WyX2L1sDPgSe1aciLT#rk>EsF3! zKf+iL?^+m09>bDIsX3hGsivO0O>VU}cNSwT3WE9^ZFgaaj9;=Nt+GfznO~@>Q5nr3 z;~#k8ZPs^`m)Ynj_Dzd{*@LRwKqN@*Jkb4Gj7J3|lB#@f?UpDbdk5x^5vpwm3^Ma;T7oh2#JmHBK1dVT#b)umi z-4+>X*cP^Vs`|cRA#Bys6po@O6$TY*7md;byJ^!(B^ADk^1{L~*Mevq?aSla{hMyO zINSe4*DSP###mX+8=}jYwh1SQoJ70sUs-E>6BVd-Zi?IB?>R7b%kqi>2!( zwZsmlFJay+Jai3E-{TfqQVD_|iy3~|!Q;NGlr3Tjf&D{$5HrMpvV3lDZ4QN8-TDT0 z`7UzgHIdE$Lj|Y}sReW^hq2k2$w*64qe-;Y`4{Lez-;E`$Mt3lL%+NGJ@ROHKnNZh zJ33%TU5Q?w;gQg}hlZSiALX8^MRi2vS)`@mlSBizFm;4O2Kis9e<%KF@C;Mg?fI*h zzy8XkW_C&}4fwfVKHR=peu=(3Y-B_cvdAQqJQ+$Tr_V?h|MMl6;}X;9bE3}a%V&Bz zeFY(?PKL?AVNB4Jv?S??yChp>AtHO*WhtY4Q-Nv0crs`x>2?Udz%DWBfO^3gpU9qP zo0_iDq0#~B*xh(+cLnOvroz+Z#kSQ>XMmd4z)Xvl z5G3(PJf=@l;^fpM$H~ixe?bD2=$NOTJ~svvG{+5OxYh`9O@YGB4|Kv4Ea+)z&>q-l zDyid|e0RBeCPa4M)x~yTXMy;YH6a(lBDsN7FSgLhr~ zhJf!h7{&(;O(ncYXX}`0=jeN=`bo(q2)GTX()L^>K&c3aVCXojrs z&XbQ`2|)ygD$^$FnzSxtR&mwt7FO?+CH!I5w<5`IxG9w(%R}RX;Ayu`#_mcoQ~0Y>W}t&$vA~a zZU_<*6JY?*_7<2^w1F$;4OI1>Xp`d`_nzm$I5oAuxwx>MejjzAQEH8u|dg3F)0gc-o~=&|u89kz7dU)Of%BiUS32 z29_53EmEh&)a?`opVU2sQ4)AKM*+6Fmv7%niM+X8-#x8x>X9epJIMdG$QlNt%ux~` zj-6crqg6B>5lE!qkS-KHAb5sN$8~&?x{Fe6>f=184z~e~sP1``daTbkhI4e4XGqeDaL@cs7|3LLraFL_WkqYWZ zc@9@XkPLUrC7p9LGg4sN&gZqUu=FaJF%lt|0yC4lxMtv--ZXmv*2e_gN zLEUsO>Rva~!qkX%$^zR8AsrlX7}MNJ#a0N-7w5fOupnYprOu*BM3R>?QT_p=gWh&q z^%dS&2UIh?Xm&Ob&1#9t)*{hW@-;xssX2-56BL<0$AL=mQQcAn!U0%>uO_q7Y8sw?PpFtbUHG}n@amzN`iM3B?RQd!x4mG0tCpxuJp8&{2c?G;FogL?9-Ba1tNyx2) zAv!f*+gjGNSvO6G_6+M%fa((0A*D=L&U;9>l87ro^+qc|b?G&-K>E=!ns??WN^+vu zL$Z?~Z42A0?beYHv9o&ZBEa6^u!X4yHb^)4>m`*PP%p@3;EPMJtQSTT~4pX&_{pg!Dlf^q|%vq+{aNPhN-<&DB+vU^-NKn0^1q-*F z<3MIR0P7`COt*4eTP-CV1?}{>$E=*Z`{9RAzy15WpI~PA_m4mR@HIqsCqIAw^vn03 zCH?BZ2}fBDkaUw`x8{|>uDyoa~lJ9Qr}VgDeB{LC|>+6jvgY=&D(Nt3EWjj5*% zu7|@F6(HL`h_Lm!5V27T#())&#}Vom5od^SnU zh#r*rl}ZP;PF-&#-^Rhj)N3FlR<{ad{j@PdA@@{r*0k4aTc?bt6}eDnfy&l$qbn&d z#F6dZkGUAFnr1{dU$H`Ws>43*AXUz*Rhe2YtOO*5DR{i!4a8KzFc?hDi5G+d1IAJ< zeYcNcB=IcS5fOhl9v^@9qe4t@c%&t=D0W#!(LmKN9lH!6x4;`9e5t8HNYMjj^h?PO zCtp$p+M*WMrorzcZwU5VpSYzKz%IUBI%&qs=_i6H(LYh;P2q5Jh94PJWyDU{QWu)f)F z%^$!K3j>+t+&o!3m7l8-B2TH!Z9zzs$L6H7V}GT$Fty{< zB~yFhbb=jvQOGrUxY}6VtGtloELt_mdSdlK4)qjF4^?LvWJue>Vq>Qw z17k<;nJ{NIX-Zlo?dOFZqY?AZ>1AvEIi)|Lwp!JZL2ot)vw%mjoqg0cL=uA>1-1?% z8&0nzT8Kj3HSQ(iQx~NQcOw8{j-+eTycd{ehbGmOj2;dM!rmgd24s~b)1mLyVY#`3 zDQ5RV57tXXYuEZT!({Ur2!tj$!T;^QO=h(If3_ApMW?JKJ=m9O%~!n6- zy#iD94mX0gbVYB)hj`TQ>nt2&1$zHw9G<^mOx_~;s(iG zL{CULMps}LVv)8fQwnTUt(17ywC16ier2R}De64MH6QVaQX;d-3D-YxhGN7Q45E@6 zFm@Ve*b)r6NRL>x4$-WrVQ?TVkA*WX&zf#@(gbrq(TTvgRbVnlO zy8{S_rX)B>mNWVXF-%e8*9s@%lAM;#BNBE4Kk)`tK~ppeQN!IfJZ;X_09a3p3$FTm zQYWdvRK4Mo4wpSoGyvCcm`G#h3O2>{NoI2VNuQ+QBMpo_IWCV=?BUBE^R_U3P(w8% z?3czcd!aP8cH(LDmME|~WRf%2>|ryd8g2!tdYqY-G(OVmjY16G8o3Ie-67(%X)Gf!YwdWPt=!OH}McOG*E)IV>wd8BDv z-eU2rY>OK*vu|%ikos@I6hvkXAcE)YSBs4TMylflf~c>`_<>3U{PTp!my?AT@W|YG z+;+JVf=-b5of$==Wm4?PnQ)A zm1PdfWPZ8I3RK%5qy{v&tC?|GVrpErE<;`Y!=<4u33WIwf4}W%zYeHx=(;LgVKps* zT_3qZXC7DqZxRQO@NH0%-qDPa*~s3kp62V$K=xWwSYP^oFMWW%A! z4et&&?vRp=i|r=BA@OHVqCt{FGC{ey-}0(Zi+YihWY(I8H|LtNQc{;pX5yKlT0W)$ zX+DG}EYM&e*(mw=OdZD%EKASv5Rpr&f?P1QS9Je$-(TMy5YRm0o5d5gi*;b4VAyk6 z?qQp-!gaWJXdEbFTMioni5eXma^6N}KUP6~+T9&CN`Q?3M<@6{1g?lgwfz_TyN5JQ zkH95yyYTvTbLS9w;?u+rk?0QMQ_*RutN|IqEhw>__YSCDas6Qn`fU+gwTHNZRXZXq z0pT&S9H$Fer_`>QH-_9OO6rtulOnKwDkY?BDRRUGLw3AmSD(Wz~tz&!ci9QGnaRnA*MJUJx@~eNkXD zn@N|&hHNQ{YMR>sdk=pioRz{M@QcKvev)(cL5NAJY)3 zesWc4NDF=k5l0PerE=Y^iPU`!a$GyOKEop;fT|(DOEbK1ho_*Q7=#b>lDgfv?0^Tc zbQkRjZCMkmp^gVW=J_Bwzk(I*@^&>69>4(_ifvPuB#&}lPRfE5)@MXFV@{=PF$a_= zsX^qnUOhrXYP8e|xWt)fJ}G%zriGanMGbS%(RJtL7VeRHz_Vo&31Qj?J`|2 z>FeQoa5X<*)o<^xStx$z=3~O(edN^1nc*@}Lp0MN`0HfTA?-07v#0IFb!dOtBeSCx zopXUn2LeVL=xw37Je-i{A&HWDt8s>`qm_IJZnA*zsRj>rVt17LTxYhutD1>)V>;u8 zLYIkQT6VyeX;R{R+#+LOwF>lchu0Y^n zvp;DcYev)s->t=HUc3T$RaqJlh10WA*~$1UArvmAHge|f;<`W2q(zOJalzcDILxnS;neyG%FGUN} z*Y(JV86dr;q~>&wEcU;G=6~ya)wP@mN9KRiOy3a5p~jf?)$ zgW9a?w~1DoxGP!tO<)hf=6F?dqYmNmFv1d6Q8pLu4GCE#l}{FOy$y0MwGEs|o=mC8{js5UQ8h zC*CAxc5Ap!CRKn!D@AHN@u^J*(sMPHd9D5ww=h-bNuad>jYA^XFTNHiD!8fj6^2w0 zSM$`S+-T_8v>c34BARf07FW;#&TR053Fejcci+6ezq%HKL6StiKGbYs{+y@@>cv52 z2uMFFC09t~X}DBwS?m+0Mn~l&PKPBAdDYP=DzMtVQS-g6Bi%|?Z<)-JZS$jL;*?$a z&_vO!gRV(F(9lb^Han;?C>ayE)=puJp${Ve5}`401de z&!Le!mv&&S-c?gyj0{oU0wdOs%Zu+kl~?yvb47X7`X1?18A5&W-Qs3`1WnCldga`j z@hSx~`Uca@5FmY7IN0pdZZG(^k<$*LdMWm)QQ5B=F;WlH3+YDkcsh1jX@45sQHgIL zq5(n9p!%W?k^X|z;hXyn{Hktoyh$K-cqi>++jdfEm3)V8Y~fhRLJr>JMt>0wBbJ&2 z?8icxJV41GZ|^j_h;mMPlc~>v?-yr`g4WO|JyfGt_sksuF_wL7?w)Wed>~ukrJGD) z*Wjp8c?`_8fcXei8cj)CK=b^DSmaGT<;mn2qA!D~3u%KXy(2u^x}J~K(5r420nhN5 zAL<^3Y~5ZE{C-2Kz9Ic|>*;z7|``2=wY!`G0*K6ASK~ka5 z?MppWuW)5xX^)xf-06@32mY(PR573CnSOTqT7t8p(1ZvPk@Ehr$#$uwPx3f%@;u10 zU3rQs`sw}8zx-4)LczS14zBsyjwy4H+9Qe2_K;>_V0PESth$j%hKwLD0+-NDRD-U( zMwu*RbRoGodg}$KdRA6aFm5t=fTvL9+toh+B)T$Bd$6umdU#-o-|u5s3@xY zQ|MVEePhPDO6p>V%mZI0qSK<8SZqkfi-Nw;y@XzQ>NDIG_scich%t~#iL;T2t`?>) zBwTm_qx*ajv#fEp;Y|!@+X;|CCVixwX{Rh93-Y$$C-e5{Vd_E%z0V*Bae;+Q1Y;Y} zG7Q(Rl={UsOxi;1B(r}|6DgrHx}mw%3C2IY6JiHcH?${ApVtHbS;Z5G`;N+nI4uv+mX*JP&E=%MO`27RUIz>I|iOA9-nRQTGQ8zuP~!4qV|5=DJb zM;n`#0f(6zphZAEv<};Ou+Rw`4`wQ1-Zw=F?(GGk*TB@8O>9Y;>w5JnS}bjXrog4W zIpQCNMsGWcb~||Os>xK6yFO|$R! zQ+$)TGXkcL#MOikFM=X~WwjN{LVzs6wtZ9gUQ4nVOzkzUb_ga8hkPJ?fXrouBV>RT zo zAt?L%dH`030$agt4;fcpgOv^mnaa%!y2!lc8e)12P|fOTWemP;(B=TBSJ*#XaEg5= zNrFo<@^e+xxre64(%B;qrweFW`Ap3j!Ww$9T!faEjsMnN8Q27J9Z=sXxo14kRG2(% zyGM}1#p0H#zQGgKQxwl4+MM=Bb+)i$YU)-<_*cl=$rlqoZDD1KHg|?1XD!BruA2J> z+s(A59{!)T29H#eSfB^L#xZP$Z_zVCc*c_#?~bF+Cx5Gr*@{U?H=lZZU;=yi&)R1Nkf~C zh2T9)#=FInq@M~XsQ7RKg!ljR&f#69+PP#m5b39i-M~y;)UlPJ6%}$9_*Vg}FzpzTI~=Txr;CDVs1V#Vsj2!L+vS zx_5(46>sqTy_&%4d>4>n2d(DAYH>u2G-RJWULm2>W|6Tq-Q^oxtq0n5wCvbo6JPw> z=lApPzqcLa=%$D1+a{l}DA)T(3djdf)No92W2<_Bqf&L(Ly+DSo^YF`g3v+#%2CYa zs*%+krZv0f`nPMi0jt{?m$*L)a5FKB-A2NXAnhekx5X`N6Q<{Y99qw7RRXFnF^}JT zu>&`aY%#C`p@k++4J-q79-;7H(i2Tuiu&C=)HF1h>Ws`Xn>mqvr?+HA+{%pds%lP1 z%4rT=2|cTVKsy#4P`ysH>491jToY?*B^Muf zK~OHs0oZf*a05rhrX;wXtvL8aN?MQuE~VILAvBQIhA*d^WW3IE%N6e$9*OJUaz0=$ z*bn&QK`E^zAwJYFBW_K9k##_Q*EXDMy|bN!5y_WF?jTUD-kCsY9aK$?AfP1cmICH@ z0$a-IZ}AV}?L9rc|Ml~G+}j^NP{Z+mPJY4N4He60K(J?ji$APQ7hnGU`oHo4+!aoK z^UKfgK2QG3>2D|hWs3jLelz)BCcpXpr{B<`4KIGp;szys=C_mI7({JM)Cwy7*UA4C zVq0yR>1|Jzr9DKThDgSY+0kIHR;D~G!?1PB9Z(#|^F!?<&Np>_+q*|;!u_{kfgEUl zJT0V}N`f~AD%JsNCkx3>!U3``^Om)|=sIJ?=G6()T2`~hG%0qDv=A<(s1H<2H!V3h zOx`3H1hxG@Q5&*7ID_RShkMu$zsZny6!t?l2AQ)2kwB!xjdV5O6~=1VqJRdm1UU$r zuF$Zev?ALI-)q5oOEW_~CnDmwFgr@>adTJ@l%OlCPMSGN)Xsf86#QhCiR4;QMoKCK z^n_)?WJUfpNzWLB?EuR&xCSa9oB!6Qv^P95eics`B5h$B-N;#lS6ik)$7|^2KvPC= zfxN?YSxA!nuufDMa*d*#3RLslJcYG|EC!?!%oUQ^K>@0I@QA#^VD`yxCY0Jk%NH6e zS+EiKih?ADg>?hhTQQBijhz#sR=Mo;KP)$h7N62&`2)>D$P{KY4hjjNVq0pW-P;+u z$XuKnzP6jljNovya)*?U&hNp%e%B4UhpPK-yf+N}y$gSk5s>M-WRY~g$c3i-l2AMLLkY5DjlHl#FmQNkrv{s2RM}UOzambYLq&LZW!&d&nT&X zyk^`oUyAe7-<{rH?aS>|_qSgHBl&XTu z)0)oME@#5mw9VTp8eQ5P`##P|3sdzXo5xrV&^YJw-NVZ45$~+;9uS3CIIR}zpo|@&q`CMPzxOrTZ1lPhF$G(TNTq?e>iF3X2sD7=$ z)Fla)=Qki7pXg4Y^rCw>U<4E)%TdyZBO2+U#3hAp1kwiW>Bl211)tmS8K_SceBzw+rf1;iNU|j>zDgY7Zpa4eQ6I)JSN+Y|!qog4YOR}xHEhL}AAkAd zPw$`p_UZliKZ<_lcwXNZG}m0x8f$QoMG-xNnKSK5Oc$*>*^&XKmXKOGBgI?}ENT(B zo+RxM5piJNmqF^XR@(MpW8|RGhV;nNh~ShyD?4gx)P~*V;R|*|FacEcr;tn>=NE8r zm>)qWUVtnEOY!dW=TATW@t4oPJZ*dzvI`(Pe1?WYj=#< zc^uMLMw~}U(-P~&weL}P3#_Cl8y8(NL!GB3f!KngW7#YP7N#+q`81c%O%Yu{mu;e3d!sS zUQdNt%s4~p1$`^CobdY@hISvRpk|GYHPb09eprTZY1MzDfSkgOP#h$%E|X-)4PPBc z8Az=^EB$sMqKW)y3UTH4cJSEr}vra}&y+w4XV*hc+D<|_j@ zCF^)0g)JHe3G^`$V4uVZ$8f=6t!`&J-le2L_o(aJA?m`Txa_1VkHcZ&4&P#tK+Zf< zN!Q?l0wM&;9m%ZdPt^nA5{j~J7I%=2WYg%LHcgFir;ep?-S%Ol$! zVEqsm^c?>%jho3GXtH8mCuf+zYJBXrfdqnmqNPhL7pK{5MeZ9uFF#j%h4I4?L8S1C zTC58LuwFvc+S_{wJ`l)Z_2%TS@BYVc|N7$xrhaz76U8PB#q`ghm{b*E*r4cnn*4W& zXZga{wZ;kG?aaB15W|V!IR%rRjoZniUyB%2W<(35<0dlyn@+qO7M3HF|NDEx6su{L3z ze@RY8h0~hu?W+&##m5hyHF3x&1wxA}1ESyt_uOcfo_MG<;-ovEE3*25ri_@Jwh9Up zDKC##d!~guzQvC%L~oLUoQC)}(Bq(5-5;$+G)xZqry9Clm1dnX1$&h2`KHDmnGx{N z3!rWedKe@0=|W-rV-MNke5R7RYIHv5m!^yC4flRy`%!>pkE}pMt#%K=bmHt;GoxCh z=u1&tf1z&bQpDkKb)D`IXlg7UFdS1>2>3KPa~Y4RHp@9o!jlN4;@--pT$VTXE7+LQ zk%FiWvWLgzXlM{VF5`wzlI>qRzUosbYC!Zxq$AYFB>J7Vw(~UW#p~&;0j5s`Lq{*B zL_Dje%Wg)cF$JbpbX?s^$ok2y=z!Ykg4nPrX$$HwQC|HT@G}ZtRMX@9VU^82S=M|Qrj!NAORyMXofG~V zfc1TC02A``;;{x)DodEX-mFYBP)gPV+)qmcYGB0Xn|J@?<0l4Zim7z|fOpuij+)m& zv^ybjkfcBor0|e<9^0GJYx?^)_}aI=!%F|%Q)1>O3eMe`?QY;43YdCN}!Nb||@XmoyMk7CmTQ!}v#X@~>*2qq2pmH)~Q zwT^1sEo3ISAZQkyB#u?yd01LSZD8IW+$X;~Kb_9LeSQA&{A_mqdirYm{+sg`>%!(o zM9AQsNQ|F?fhr-AO|0pBn-|mvuEqiPkE}_$g>PXRKF~OA4X)^9epuZeKvrWGR(k}~ zT8-07DaGOMe@_|h|9@Ex3-=|wE{*2BeM|4@tX`pyv9?a+{mzUER&lb zYG(8GI2-!X$IU5<#tD%gToD#F!ho8p;K$}+TbvvBsk}O zg;fC$a48i;6zbcCbsC01NX;}-{cX{Jnq@KZ4y1f#*2)uoEFt%V_QMpkv9_F+SV2PT zuF5kzZc`tD@ulpD7I`Zi0>2_mf8BRka}*$T*@-A#sRjQ#AKQRbS@>Goun+^}qcnu- zCDDh_3;jP!9zI%8?Xd61mr%tcY$Wnd!59dr`*wcA%(O(3 z^!ivK;=PmCMHuN`uaTC%6xArbfx+?IL$hCh3IcHybXb3R_u<3)pAhEbghl{kp>A?D z4|JoIFd43|sTb66OJU=ypsyvZt`aGGsM=}gL;Bp51TW{A*$Hsw8EgqA3se3qJ9Ie$ zY~QB(Vz=Hrl;E|#PfGK(LRql2*;5839;MRlh)<+mM?p|cK^TGWA$%>0qVOmp?aw5= zCdT)I-VGjzhP8-s)>26wP+eWUU0};dumyg9h1dtX!|n;HQBspc`s?*-$vav!5!5U+ z=jq9>7N&Of$aS{^cjykN7s^}`sWTwf0UjCokd0Q*tD{Jz$U$4oN?B-NR&4D<A;~;+)RE_mT&DbRczCFLC~t6Mi{#_b{W-+)bO&X8oZHfl*ZmutwJ<7 zZR#*V^(^M4SegSL4}RU3+b?S8?}Lx$5w(Q$@V0j}Kzm2$N?;AS2Pu5Hf?>t*kv_!x zuCen{7AHtlt2DL&*ZwCvlf&?zwsu`=TcOimhwi>friL-mr}* z)oiyI$6)`K)>`msEn)ioi9Q-Tn1RcaVNac7##}4cinG%_w9b!P&cp&{F;0L~88><7 ztJS?SQlWmu*n~!L)}mX;8Yt`U+8nQ=W@B!Ht596(fgI(zT53W>UWwcq2+Ox{3sik+ z-5}**3b;4)Ii`reh2vim^| zVtaMF+{|x5-r2PK+E-${!qrtFyDDQ(2U*9-=_6;OqNGo% zQ{g?}?3yKC{y`)J=MszM1Q?z-F!o%Q&IjJlX4JS}!2bM-@ zS&Kz~ET6DOTSMQAy9e*Ww67^?{Bc$;_vCJ1Cx0zQuf^=oRH_4VDQI>B=54?Z-wgva zG$1vikxPS(>HpS5G9{A0SK4Tk-nyuoz0(Elx;AJ&GHj`(*l&(PzRMI|&))jESLYtF9viptT7ID%5#?hX^ z_uFcd=MFjp?Be0RiD=qF^ue;HYP7Gmna zCKg8rH&cy261-|AF@<$$^BF+3V!kk>Qju{Bva-m*RUT;eN>`kf0!6fa*j7#|Oy2yt z-mz1s5Ccq87xN+V&jRZa34^QBA;=qFR3t{FKfdhhhiGqvm!K+s|nw)=}-3B>bSVX7WY zdF0i@4(Y82hvb<`YGCp4)BEN7KmPJ($Z>CQGd$oEl#_xBz&`pmf}epMQp({Ni4oO0 zWjP(OuO`$>l-2~EFGXzyt+%mCGdH-3lHirpCdLQdlZbDBqIwF5ceh>gaIXC?`wXig ziYYjj;U$+LHhxG|Tt_*ch{}{_X3JBA@EqOD0|b{)IhdQW0hAs6fRm6Vhms}gnFbKc zLbAE!O_Ucc!Rc!FLPd>1R|n4MAKu(SDV;-5lqdRN+CTHhFKjLX%jCE(-Iye;fK-{A zLH<`TY95e?`4;fOWowZPE?-`U8;IRyh1^UzOGYvkHPF&A%nrNN51M^0AXVlZ$s!0L zKC;{)KUc+Aln}Nb_HS@-tgBK2YgNFJr)VR>z*A^EDyuvaZN#w^k~&?_%$XY>OfDUE z^Ct@x_Kgmd)sJLvCxqfSoCAcw>d9b9>H?(kxU>_P(5WvCA}}p=@-HV%NuPkxk!KIB z4kL;HdIr<4z2SB{ASt&vXQuVjIWw~EG=ee=Yp9RLgUk@cb6H%RN_3(IsOp@^7fJ@d|k{hY;f6GIoY{<{mM$lAPK#nKS-=-EsjQpM^Z=}{l}&{o zlqMFBu1yhs44l0-w$@pn{Reb2;Xc<&SIUOuv{%t*C6d57fJi9lNm(aC5>^GSn9YAE z7Kl2{V1x^G9p(cSL#-O)ER>j^koR(WJmhDT)Dd3hmSAnU zbyFqs9P=G#p&*@*m3GRu>S+e{I1vk|q8cIMl|@ww~AU~15aSKu@x;$p(JcFa9g zuVA}ko8greylyn;WI-c+lUt#9_I2&6uPpBS?CEk(yPMU1v%8{wY?~F34-od9W1!@C zi{xK@ms*%Q#7A&n!0uPzpmqoyu)MIh1a}CO5@V*k-mVzFli+$MmfvDWY1lF_h)p#x z>a+MwH8;;QCW2~Q$1#Ki3FnW{nOF1uG6+pD^mbX8tP0Y}k+Bz8_azX#Vbm30p1vrj z>dIBb_(MDIf=IjP+Rjby;Um+PRVT@Bks}z!*hQkwoWWvMY$)z8aXvPb0@F}Z6A&1? z(FgenZcq=vaklH)X<=$78T`P<8@R;KGu?V% zVj z9!7IgsRQMw=u-Wz{kBPK_z+E?WIo3OY9rxWo}khSo@;tEhDv=i2joC*!)LTE-}dI^ zTZ?R;q*nBAYNS|L&9YTUL-y+%+sI(*k`tmNV2ZhCP%vikXdqSATpL~pqlYNjG*$K% zj*yJAahV9CDY2yI@R>^m_|3DK#Or_ANU{d`2grcNnfpkIwWc(a`h%z z@jzh-ac)a=n-3yr0f;xKUQT$O|Q`6!ntXEtwIwlBc;+i;| z+B!yZdM3te3)T>Q=zZ*mb~w*eQUm@~F_E+bY2WOj<(p>Ii&M-~l93a?)d2NMIqsOW zDbo7Z^Y0IA(!zCdb9=*fvuKW_t4^N7)NI44>~T8=-jzZ|coJuMYwmb>!?MZ6$)PRh zx$QG)wqbsHd`m}Y`=j{8`9WP+oC;E2W5gzf5e8EaJG>d>M?EEWvc5_;JBS09Z%TWV zd;7X@*6h1>tzG@tHOtLjVrJ^z@LQcN^CP7Q4ecN)LpBIsTQ}z5 z4NgwDZByEA6eBY)Z@lHzp1L&rT+HxWE`HrJe#|{h9{0N$^f~%t!ODDOLHC=J$*`I_ zRAk#X7uQW{C>He3Ad2GkgzQ$m?j_AW?jg^b+bVfSpQ)lAhi3-vdiT79 zFo5?QZ!o9BUxpNk&$(Z57;zO}?~M6|Z&uX{@82>OGK{6h_8srdQbC`Wvlq-wAZtS8 z#y=uz+^<{kNC*cYXgqbzT8ysaYcSMiYRZtLsXl#N5T48hznJ)B@{m@ z>UdzjmC0O@&MqByF0HXWn3?a15Cyp5)g3b=;0u+PpuTqTcn|(bkE!OYSB{u>I+2(u zmK;mUGi{R*r;2G9FcH-ed-AXFnXzZiX1n!al++qg6Z!+hbupOZ7N%KJN4cC^dGbt+>VgVxc?l7S>a@i&ZkJKRHQ- zFI(8ZhFQ(O17$WYj5veS7taCUL_7Y*EBMSdcphYC)+hn<^NB{_^b|GwMIsg0s;tyA zm9$=tHl-bkndDT8OlnjCN{R=+@h@uvxYsC8+}v)A1B^mlHfPmwz;teATx}0pMx6UF zAh-rV^<4X}m5{z{=)chldbOH1-cd}*Lrv-HwGa#D7w4oIhGb?{o_^cQZ`2xl43D(*K1_p`<1a{ zYr*bFlL}5{wy%*dVz51DO^eTstmZ%mEk$(M}Z(u;A2a5Wku2{$1` zM#RMk5U`>sM!QuN+ml#Zljz_glL?{bdBD>;=jT9I5mJVz{ zYQMu{)4+Bbk-95xBAXJOaqlMy6xfmp_bO**K$OBMhJelFpMe64u;}P&-D(M7Fz?4OAH0x z>caGXuXjMT6rIC0u=2?8uD+a&PaAL!W^Xuc_FV56C1g<>X`0#Od+>-1hA9WGH|k=6 zsfU&4V|=Xn(IUXMCtYw{#cc;x(*g>AO44M6!GW9TvB zqhmF!OWA$c%j7VXPNE&dXqD0=k~EWO9(8LDP_1m**oNc<8ibxh4rocn!l&+U1{zZf zH(yg%2n0pPtRxm`@` zyVzczzkXgST)=uQvPDj8VCv-cH zADs9a3VU)DwNKnYDj0$14v?YUMGy_%(!rzbY7jXWs%D6qF|^~PQBNdv!1}^`3d$8C zoL(QM7b;LMH0UrXhgH{1C!xq_k6Q~tjJHP=XzPJ_@&>>2mp?+XF>OUo%7kdC&F$JD&&NsB+Y(7|JE!h(}T6#9SLvQ?sZ2 z9ZZ$kRzk)-)K)GKXbA$^zEsd?f!k~3{X7+V_ZbZ?K&otrKn8Ubw3uZb4Q&%3p5rkt zf4R0|`qwzOAf0ki6J!&Jal&ZYExtXziBVyK`@Q30GnwEO&I0N!W>7`~;D3a|(Vwxdw=AnOXwn|Vr;kR``<8)slggP== z?`S18YzMEnF2zpbh}GQ??KaDK4KzziebLN-%W6+ssdzlqjMhK z{8l@R6u!}z1CLcd=_`v-vcL(2Dl6p&2W@fv+g1I-R5Dq)_7?(XzUyGp# zr?iOzO`pohY%k>5bI6w~HF`yLq!TFk!0p0JoLC1IgG zV(1pF0;UP!^RTRWLR(1F2dz%#Gr5tEz*kqtS?h(B0ct`=rl$2RJgLw20IZkF&b+@x zzK_e>6*@rFR-Yd(Mb~3z6Y$T7Lhl@gGeZ(rWu{3Y1G|^64jbIdV)XI@ozQweqt=(Q z`UF`0YXGXMfL4$VS2LdJ@220*PQRVK{`SR-(^s#j zvls8bd9{YjSRe8`%i}RbNpsNjer6UN5%?(GdZE5?R9^#q*@TSK^#xYv&)e~4$R%>W zUo^35{2ubHIfVNZApeKX6ONnt!A@V=Xx(OYz&U6tDp1WNEz|QRb%-5<9q#Zt79U=T z0YxOP)<-paPhxC3Fe(GzejOg#vE$Y3tSnO6t=0P*5!yzTrbGCK(T!BooL&% z*Lf^6w9cSMIGSiI5$*`nBP<~S9)dKJm&YrGqVi6}y@(jxtp!-=W>Z5SbJIyMH3n4tL+rD>k(uX|F0FG$ierWZ+1PFex~f& zKOoBlOug`L`_djUhMxB8yBlNWYEg5{TT?18o@s=wIQb^2!Q$SWD8d8zDc9XS<0yUs zm1Q;@_JFFwXK7<1S8h_P-d4S3{SDaBgDs2T7!?F8uU z0@Luh02u3H@nW+URS|{S7{t!9Kp9mYR-l@z-1_5vpl+EAINm}8<2NAB&$yUb1_os3 zAT^`&%g{EEWgO35))?tlE`5`2-_2kba-0RE27?kChWxgbRm@u@*7QZ;irLoSb$PdN z>nCNS%2x$dZPc@QfDBSf1q@DxU}`T?{ESgT3BotoRheN0kTz@yGHqE+7XZ+Rw3bF! zgg!k=njTG|yWn|JvnUBpoFMgN%C!(x&i7f5KwFrq2ie2B#{EJ- z_Nb(3PKX8geI2&#Bmy2Em*DcD*IqqtCb^&&W1~iZ4aUbq!q*yKqLVM-?&p3k)zrIY z6O0~g-w~=EpIlrqjzt#Qwvf_v>(}k!dK$@VTcf;KZO#kc8kJ#-PdCb2uA2vFZ_o%3 z6y~on(ODz)!y&|7yk)T0_(*eU;k7Bvn(y~_e(@$6W(ZeLiGCS3^`eGQz0kE~o6|$l zml0%&vB1<&T)ZMkoNZHL8;M##n*+yB^T^zS^9T#hX1~HXK&G7nsOealtHlB?mSASN zbi&|nlrdUCuX<)1s@>NA0&NN8WAt93f`YS_=I2W_)s!8K1KpGkk=f8~FqBi?XxSuFR(J;xHZuF2^2|AoaYGJlWSzn(qw{QQ~c&l%YMe{7MPq??oU zTPHJLgdo-1qH3gjVCLdvyA@{OalqyBkRsSRD3rU!%e71yb6IspW#f=ViqN5D0Gw7M zD0z*ttM*wXWck`WB`B}%Dqx``Lw;Ob4+-0m3T2yyo~DQrGY)Y@jV`}@@4+0ln3+j+ z!W~Sy)pb%XK9f$0+^b7#`pZlcTVU!^a3_bG3q;>4%!(B?lSy&8Up9J76zh7K7$S21 zMk%#G86D7Zi)IQ*M^K$37k545F6<;iLLK5U5QBOJk=DcPg=>tt%&W4>o+coOGneMM zKW!4Vz{1}y9L}bTM%BLANp%Alsi0vXcP6MK{Es~Q;U_wNl};54KRdjV7$L9z${G;L#j@3kZuGs zkv%tMq8HQ+*)4;^G;%E&@d)5d=F`&wq4_)uj*?D1O@93F*)Crwm?S;Pw`r0?nq5sM zVFo}A0N7*Z{+j1cdn6C(AE>(|qe4aCTQ+b)2C2p7D)cyteieQzT{XyX=*-@n2TiVm zJ|pZGZhAdR=z#i`j<7R%;|Vehm z<$g(^KpMk?XIL_bT=?gS473IJtzSZ^U=1KsshICPIJGlbjBxJcK?=FF|d0XB##EB2&`=b)t~MmYKA?Dg#H9HIKS zT9+`P;P_G0_R!9%64bqKuKMKL>@)_Cv6~hAvpnb|8up}uKXS@9ClJrmJ-Q zbp0Ng>uG&fF3hQg7Td`xm&x{5I#Ay&CaLc~?NU66z?*Z{22 z2`@r0Kqa>_piNFJge2`}Xxg#}YwU#5sxZT#YKdn7)DunL=eICG(}YkUmJZ%1vU8IP zo9(fc2lWTLvM+Ieb(hq->Qug*rY_L(i_G(O_~HPCg0y2a2J3hsQmuFWWTr9c1s`SD zOd7I@lGd9WGIY*N=}b|k8*Q{8^}F4^V^)lkk2nd=qk*YMyzi;|CrMnU!H0#AM~y2* zb*drx9PhcjqXDT;8gqz^ZG=&(JK8)(oFDRnps{_IWJD~1g?5OH+amR@XH16iJ5smK zUSER|I{5{p)$6CvUo(Oac9T%9XM`>Okzidz1}G9D18U#SM45TtydbFEpQa3RlOih! zDoNR?WzN=bNN~1@1*Y`byxn0~0zL-{k}>6L0%{h=HaHr2k#HNu!9-Tb#x{!j*9rAk zRaww~CVu0VsIa<%vg!3}Bbiz{JP3Op zF5lrKGJ}w!eF-@|>eJ@i6%bH+6}PZ5CMGO79?YcAf2)(+Dalpj0N1!Hq^lf%Y{OEh zh9wCUSm`2~1%DYn2qI6*N!kUUw`(4CzyYSvDkRn0Cu-b|kFz-4$Xb|27Uw0<{oRqj zy7!)`)HD#6^39GOIqEhCqm{u#Bif=1x5csxi!*JOCr}2b`kJ`vj6^X0qcp;f3ti0@ z$G7*lmPsUC4@0;*6ob^QU$HDjhZGX*-=a%FKdFa`98$t=UxQ{uZ#*VW|2VCmA`hUo z`NNhLf?Ct&nbp;2Vf=y2i9nRy#9F5+R09wJQO&H*8cFm3SjTKikVH1W1*QKC`U16wfU7cRT28;9vhN zMAOBV_C;t`xZ2>KdvF;xu`1*mSNF2_E+w@|qz0Srb2s@mRysdWtvIzjnI+^ha_Z_# zWMHEvbRH8D80Z=@GY52|1H|Wb`s{uKy^Tk%Cp2w>q(qBr*k zri}{^TQgi~^X=nnbLA*S>!}e3GHYI5aMy`U)i#jcznD70SO#olqaUm4dk1Q_S$`Bh zh0fg)uBLl*0M<)7J|QM>GMq}q3l|!sX?~4H`=dGlr$*f$!W;FH1|Rc(3H28V_~YC4 ziaNj+^FLQhpQv0;YtfgVtK$0c>GolHILv9p6JMyoWLvP_NMmB?uVBV0A_8)x92Gn3 zxG%Pb@=HL%B!&uE+?+pMAxiKqLg+3g@rP z?jIUjtB2_Yal1R5gdGL`?Z#|j); z3rP>rxEaG)USb;FnK%{vtcY#~HN7* z&7{+khpXLlq@+OlR>FzdqE0xp8q{gML(~!K+gjFV#ekL=@8=Ck)x-2@q&0Q3dd$w=4!0S{Fn3WBPCQ@>|Da6&1nM%*}P0?uWw@-3u}$=9at z{1PR-NPPcTVI==}qY3xf)W>ogVZXwnlQL1mfoYxWY7a zeJaAQ0IRXU5awm5rKRnd71gg;fgPBINiGN)r{xM+9FIs4&wtS{s6U>PE<&*Ou7P;< z;kZM}UV{QSCTT!v>YA(+p$bo*;iNCXv+^%vj4ermO4xIXU_qJqb|*XFcN%kL9yEp% zK6YM3y$BdX-LEBsLbmjrlsiAxIa zqGoA2ZJsG)b@MtLE|}j1nu?PR`*BN}11yLExTAKmYLiKY#cI-TCHEfBNOa_n+~BZ+?ES zzdz&I5AQy|%jKUx;|~4im!IGL`F)|sF{g9bMHlt6mo-C_3)4ykan{Wpa%C1M8Hv_dK`zvR1RgNh`js(nRU2t^KcK)%5Om2-O-R87X|U^-zC zoAcx93QB|yS{Ycb+si>JKJC@msnN!;n!aAbWkO>39}Jcm7H5t~tI~jYQ|lCx zCAxVu&f@~WFNVe$gA1nv)`hhDE=B6&a^WoBKbK&O0KGnDM=lO%@+<^iei6u8g75AA z4={IgH#0ZN#A=^#izQ7xis70fED*l)2@jyxX6XZ0ScPV%{-AxL*{e!dMH}e0dJok& zJ3Jb)Kz3I&-tK<0#9rKOR|xC{dMw%uc6GdxnvQ){6DQ@ncL>!>y58NNz;fAnJi6#T zZEf!$wC~CqKV~JT)Rje4^FXz9#GQ@yBR-`BJWk&Z!OL;iBA_k2lgA#amD`8S;_34J z=iR3tKYsf0^S^<}?;jcYH{UXT4uwYg>ojXt>;@?Qx{TKN7!lqkifS>}0PK?nxTYt|o4*B+3>^aqb`wpJH*Ib0t6!*Tog#a3?5L)fwIJhwU9B z2VC&4VW0d&6X0g*$G5J(qktuGl;nw=G9-Nj3DNdn3Ze}?8bS&~##_3NjwqudpV~J% z;tj^ZJw4|Z!h<%Jr#l?T!|LI79ps37=Sborstk-x_yu16CRBP=DSF0&5FlyB=!m3bl+&roLNbQy?KZU9APnCXElgiBCJiJt+{Vthf!zrt zKUYPZ323_O^f%U-GRTBw0skXoqWjHx^ZhmwWg))!(|ipn+sr9%n&?7RbcCA1Nb&kW zGuJLwW9x4V>!#7zDi&NR45RA8wQ7NHD^$OTvYdX2w_!$!#PdT=4tPl^K3PJ zMl&7;#UZXIN5*kLx(I~COn!mvs^p=<(y(1p;bIU!!>N%*4J_r$z(ZoQokN^DtmaGB#!T4Z^e40- z$pb<(KH>k5b4224LZuC$XzfkMNLw=pVt=%ht{el2GC|) z6e$!f`Q`{=!3qRGy@1_cwm|%_BBs>i{jR@$xZbpCG+6VUPI_HF&^_09+%U06&s}xVez2zYUf|<`2|N|_?tAcnR`+6He%gr%)5g$KtGDIA96BH z)`QN(?y*mfn&}W=Ztg#ew~9qz#*;>nF@!c> zgiuZNB5nNbtE8nJZD{S>RNtrvPf^82>5L)QN?kiN(n zW(c=aLSdjW2K@KnCUM1`z^@O4%SCmNUi29P^=lbg5fnaCsQI}X*C-wJN#1R$Kt5(< zf$iO6bkePCGej-$XmZKEyCoy1lUj=!w-Es19BJm|x95~AD_m0SPMVTlRrkWT#A!?N zk7Z{9KOC;}eH?ahh$eBnb@hYHa6`kW#2P;FKBfj_b8h@dgA9TrX&$PVMJ5Hs^M6Pt z^`GyKs;wbgPjC#^N>G6aOxieH4_hjW_MwD12CBAvMzHmll$I$#nm}ID7c>aGxqmyz z1=9ib0<%3}-|SZpn8Vm}PL8xNRrk}!pfW(L)#^~(r@G^2@NQKTC9PLn4!o#wJL7}= znNAKem`yDRcQ31s*3m>`W-65Kkrt*8bLtSm_&k#6 z`qiC%7AjP4sFCav(0`!7R9*Nf`P&$CmL90r^|rB`G7&F~=Sv?nK|?sqM#)ATfodaB z9=>b-Eqc=8b39YsjOTl5y@lB-#iVR*ceH&e(R!_{CWTU%Fax^@HrEZy z-ow;r!9fUk3Fi&zJB6^UtVVguP>S_xU&#W~xGM;?MU*-&FTP{#v~|Yo=(8EY(j~LU zq(it~)1IP{yPUD{XmY}9(Dtv`o=D?sc6Lcv=B5TF!AqUgyJl)&QkxohPVqzInkLgp z?g7Y$34~`2Wz_&mPw8JF#0+xdMW_keXPV!~4C6m*7~E24W?5wfiAAmZfa@^S?|vqH5} zTLbC(Yh8XtPc1(Uix|O#Ph747v%Y3mh&56?4#O0sZtvel6}`;nNObbv4lfNwNF8%% z!dyaEO^-di3mRCv-rYIoj|bWZ;-6#PjmFpd?Ru4~)Q@9M{_sZb24D=-o%}@e6r9wI zF`K?M)+RzYnLH@01Wun0e}Pi_>F-cOfBf{b`pN8;hHT~-=x)D8N(&nRFPn4`Q7U#u zwn(Fs21a>QfBN|Szdq4tjS`Ium8vd~5;K2z;X+glVv4I67#K;=zAW=R2Qeg>ry(h` z?jOj9X&ZK2EhenwzcnvH4Ip+D=f}ldrKlR2mC0J`{9H?+cu@EZVneMhIFuLEjCxlL z4Q=tMWC>EIwE?mD;~lGes#;l18#ZeIR7do*T7kgIZ}3E2iceqShfJ3hQ&e5!mxEEp zDAtIZAB$SpDRk<}#L3W1XXY<@RiWyZT{&XUXp8J5gW|jyl(weN>0X|cGRHTc;~>zT@>PUFlJ=uzdv32p0PQ)EiXc>uLL3Lj1ADO9;$%H z$o^T8())hXD^RiW!~m#Ss~VlF<7PdT#kPf&QCWQ;hGd*4rFvZVCP+QBE{07`Z>gSU zQ8ps35+Po{S*6s}DCp}&*aFYU^gGWEw&CKY$%(@@?--FH!b5#(1A zylh$FC`<}OHGIjsF4ud^*ue% z;Dx|jwG4!j0~9}~p-*ts$+`HZd2awLuaK6fh;vGf`V0K(hUJsl)oJDh2}Ae9`Ny~T zu@$dxoM;cwAj>=r%*4)w(Ys)L&zOm6LU-sjd@BZ#*E^s(8;41|#cm~%0eXA@!>~Sp z@)4O5QNYaZ%bXnL3bI+8yLpx5Wg*cxgJ!Zs+jN1*jKDB2{aEcC)oG zRkzLKie!+pQ=>lIGTCJ8uHf`Qv{BNss0VJQS!h%KDnT_r(-qL-Es)Ql`65UB`5?8T6$8NZkM!H z_{>axHvqMzLAb`-Ls>*g-K=!k;}T*6J9}clVpU~jsS6HYCkd=qNX6eBWMFLlqD9RZ zZ-@0T-fr?ms5)cBaPa{RVwfK_OUpLhHhGIs`IyLqPY}$Pr_Goqh>EcWeYlCR$q5FM zmI<(Ixt?DDKaM?A?=+QDQ$vML%1hRJvnK_6mZDsOmO=^bi#Pm_>jc0P^U8EGct6?}pRD)Z7!C0&Wl+5ia!WJ7{gu;A*v! zuI!Fn51?Sjcmvocw4iuH0p?eiR6|Q3gg}pd92;JRezNbEdl_ru_~EC`5H*yD{>@vG zMup8qEnA5MR9Cf;4dKD;1&?sB!yrz#2=H#muK8`9h+_E_#%}&JZ6z9!+ogSj-pn82 z^wI7Dez<^q*6xwVbYpo;Uw_4esG)KfLD_=i7%D}TG+=I&OiO9!_>}J?T1!YDdv?jYM zuST-?WuT^o3r@?9lCrVga0768i5KbuQRc^XNrkC;L5e`_M2Z|;#aG(X2jCsZVmVV% zgS3lI^6N#lvsJYk9lO!0UF8n;3zv_V&oM(neW2SVJ;gdz&`rI|1 zE~U{b%`_kZ<_;(O>i$Ab`V#F2=^9hj)zSN7)C%_Iw53+~1k?&Dm)$^--3~&$@&Gs< zQhiHV>9;Pq+$Hk9j5_WpUK*jzIF@u6bUXNhl!to9wwhY7Gv_2@ZxPx7^#bwC1#|LU zT+fO>vKuD0FsrU8A7=Bw%@K+(E@8}Y<}%;FQoz0Y!)@aEYIOvz2J+i(#-k}d11E!e z2a|84t_ zOM-La3%;ayK2Yu4ejcFm%m|9r*$QmRq(bKqqD`2&{i@bW>sah{E zRc~lFlfB0BN)KnI3Pes#1}^RWDyiSUw$o6byvEK5`-Pjs#dhchjq`9{%69p`!Ru(@-wI(3ZCIlz;uN~)#*{g-#2 z-amc%`0=yQDstJBz3PKF-s+zZWPt9g})eP&apRbN00JNe!0q{sG^MU{Q(g!A0fN0IPJW{ zidp3sA_vIq(&2RsZmc(|eJ-$C-8Cw+{>rmanM4V|`hq=5*rF%k8`*sitnI{ygO%fX z8{7NN?Y0L(3zFiD<0lC5{()-cg*DU69^p8{Y~-X14?xo{p?EhfkQZumt`BqqFG_-& zz8U5$PcRgLTAL5k2M1tHhzMl}q$J4b-e_TU{<6(}`hbR8V5%Pb32Ej=oK?8f45G>; zSC$}vp*HkCa5ACI1e}DxJcUH8t)e%L4VpoWi_m1w6nUx6oQvE0!>(Qzn3|*PABcB( ze=O!R$s98vs%lGY8f3TU^DxGysIf`kuMRt~Z1epR4sXZ%gVXIHwjho61bZ|PGu;XV z1s70#GodGHMT7VgI@1GX9p=B?sPv_paEP;EPkLNu(~)iyL{TUj8wPuy0vlAeDKVMUc1Isn<}}7H z$)+98f`}YIG}=H|%sTFtfIw|339hB)UN*T}FNYg|)%$3a`w`0f!r9@fG-fYL8j0`< z3;6X{HV~eP2iXU9Wp&Dqvrz@`8z|>FJyAU!P7{QNMO~Bz?aB*H#~#YlIm=C~4x3ZS?tS{ca}K)X zEi^9n2#2$S)h4eHJu8tUp9`eYRM4Pw=5PQIq{SPgokwX91m)8XrY&WVux+#_btN3l zhmTe%+8mn{4*R^X)ptoYDnPrhr3yBjgy~`v$v{97wVi5Gugl2z#4;7&a zFM=lw-DMCh+Ip^*=1UzgZU<3HnvyzTdsspY1r2n0M17!IJnjt4L5GY^3f+O)oi|Xo zN~`lF4)^UFx0my|b5n%wI$4MNhEr3esNNEFCY$XMi@*d`heKAeLr&PI+dI)N?w}Qm z=p6~lQ=87XHC!oo7r5E#TB@wB2>H4%N{SA^dsevxAKRSv>3K7eSF+?pK8d=o7@cfUR;AZn7Z)3P#H!GCYzDi;FP@9^wBD*1MpVaf%c-H ze$-nf9)3Of{qM^d)(7YMDLjW-RGgU-38Ii!a_ZLi@Xn^=9FR+)DY23P)r=)G=?hq} z*ijTV3LMegw0OsGn`X*MU^^yWP(Q3yTn4+#IYYs<2e5~BOXr#YmWa8b&xsyELgMXu z&!`!UjrcS|+{3Aq*jrz;ew}m!L zauKnOh{*vOalXAVr`S`f&PcKorB|2+rCG`rQ(Ta2IaFY(PUM26-Cgbui*VvnK?4Z# ziK*dU+!VIlimLJSgscZ=v!~C!TzL=k3%50>@?<{yib8h?>E;M=kFL$*5JQ2(Elfoq zB*uw~mqZK;D=|d7tPM!xDMbAr-rN|MN9q#=_15vQsca=JE1KtO8WxxeW(%6kS{}B6 z34*+h&(kzFU-261Tmam_8=zPGsf&vSH{El6F7{BIiPho$;MU60i3i+8F>kS7cTkUe zk6gj?OeJ+HU=0t!Am3~v11ZI|T)=?Xa+k0w1MlmWq%|vl<7&)b7;)jSam^Sh?Djc5 z4YaJNE6vVZ6(iTWKvY*>6-|bJERv#|4wQj}&K162x4aNswB0<`#LJ`(+m3nJ9L*{U zU%YaBd%7+xOx1PvLB`!}4q0{@tAgFSO`}NQp17 zU8NWX;8xw>4H3G+sHur=z~^7ZY7Hg%qXNxgwKR1miD;B*nhi@c>7($1M!{8}J{e>^ z3|5Zw+vGFkCv&ulzDdXd^N&&zC zvT9IP)UaPTo|2|GOwCopQ{?B!x&qCN(K~L!L*`iP>Oo`N?IB7Ul9`|2LOL?Z1|KE7 z+5yYT?AKG6Ab`*9XMlZ3!14n1qTHh(u-Y%!<}N_JK&-TojOKv55|1V)#mmBH3N9E7 zp{JVu$dhMU1~IuFmB2-%WQ$0t2W9x{&$k~x96o>io4#>&{}oik>-jyDfQP$#7$ihC zvJyR2U6J`j(8lwKSD`zV>sePDj;;`Bz~A)^)mUeo*2qx*T%|H!^w8L@eDG2P8P$Lt z28yu$wk7PWLK=QTLWxnU5MzMOBDgHp68->M&|-j3-X9vNibHIN8xKwuUP$ZG6YElT z>n^4|HF>QPZkt{XSZ{NS{eM6{wAdUGy^7RE1J?xc7CK@(ZI3Sc3f?ILRFgIWB%={& zPiw~mVK-KZ1XT2#uD2Y3)leR{g#v50@er=pw7WxBV6;t?G)h5+BD^|O|?^Q7@+jZ2c6XUQq@?4i}HkdV@0$HTZ zH(}gpCJC4{OvYmI!h$@4KB2|G-2-5TEO1j09Gw5Wc}C{9__ z{^5BzT!B}EPcpXG;R=2WgGaX049DCo9%8**XTaIVpb4;#LU0S^K+UeI0{t9y^X!0D zU>V-aUt8Gt?0877G&|?ncM_VRJyQ7$B6TM}#acyQ&{lJj&X-#|LF-ag&YlD*J!qTyn(RKjcQJqc@{59r=`lok0mIAFeh}Zl_pw=r9M0J@ z9FCsryPEyrd1sCrMQV${FOlzGH*)YER_D|Nw@!;>(IZx8ha`~*q;h>++%jlbCH~X% z+9@YMN4HCX>BD~9XEbUncHvIqwJ=pTnqmz!a5%Wqhcty2&Mm#iXc_nvi)_&xL9NO# zZdg>h_`q!~m+FEVkzA=|Pvg}(i=0VOBIB9)oe6oOpq8GVE^qI#Q#QA-D1DloA>t%$ zw3N9RMAYL35)MYueCbC5v@W7RNOaOtaB}Re(7I?L8MA9CO8U5mS%F5JkzYehbrL_m zh8t@tKzN0FY5MheM5O=hNGs39ReJSIe_lWHeEI^(7_=SS0BV#{EwDO|7HP4!w{wiZ z%_DBA+$tvf-#r*cPB_GGodnl6cunmf<0|HzrrzRVgqs6=Bcw{2dKmJE?K}XhEjt(6 zJ&!@Jq_W#W+NA%Rxp(1_>p0Q{`BMrS+zWC?^0KO%56!)vMRh&8%j`$7s+vuCu_(|| z+a`vlyd-7FcW3|me%}`nnUQ%;bG*1azzPt%G9yo(Jo$)sMB;9hbVQsR*}c8)oncPjv?<`Y!aYEocSr5dnN zItZh-CoR%RD!iBhTdL?F34hWsWN=9S<^|x>+W~2_ltdbsIAuNOk1mQ+^s7ZL40X< zbwIsZWT1w=Sz5&O%n+`}^nR1fXR#*9tivtu)Rk-&5E;a|In-Oon|yWyk15`dMdo%j z@hqI7K1x!n?u918!v#5ye|>@^%UFnC@&ECtLz+FyCy(j29Or~~O*mS#Ma^6ALkJTC z=fJA;tsPJwDw;tydJmjmFD@qCh&7cBf=n-1HbyW#P_OqVjX2^UaH_eRBOsd}gd5z8 z!)DSS7mx;3M4DOm1qo1>DeQRJ^*{N8*o`~YH$=Y83_-j+Opo7ldT{ASwJQWf{l|>W zj{CcL=tsE{!6)d#i|Z|AB7OfbR}K`lK*3u@+=al$<<34u{M=l=Oix_ z?xQrX0`*B?4v6?4v}(1S0h*3-2B;t93{ZdKggEbeObX^i*xiUqnSDPf4M^i8nu1d; zV)m%Q$o#$#nCU(n;z8+Jm%TuD=-45Io&+hKuZDj z6|@O_q&NZ`X$kudB}fmp9^EtJwpAFG+B!M%vuvf*Qb2ZVx5Y?bUu; z>=&J#sA;0Eg->1s7w=zBWmnsKK}#21(@5n?7m`annF73^r6n~EPd+Q?apG1`Hr%>q zkMMLgB(r9M5kVEPG4|NAw~wNV0<#GC`i)(LRD|?4$_JzasY?yhC1S@XQBrq;f5m@0K(#Zo-87Mj z#==AMOm9cm#hByc^Tq^9I?&x$9b>-0mIFI+8P+dyr^PG=ht8$e2e{H*c2!Zoz?l(W zh$sn8k)NsCbO@x}SnC;4v%dujxzKhIBz9t6rV-3m|SLGGhA*xTJN3d|fnzV{1BHXaJfBq2`3Q<*XI1T0Kxt zGzZgFhjC7ICZ#xxtU^=s2}?UhOswY|BGlG{UQ4>UyaX5H7V{JeoF>Jyc6ibb4X1&s z!$4(DII_ER2U2semUur{nSC$dW{8@0?4uZu^mzlY^}m}#vWX;%Yz{U77uyYah4v;0 z$>4+RhKipm;c3Kv~_y-EfgIQ14S9{~YH?Cm4I%_`_6Pzs0TX;2}_lrew94K46dx z;GF3JsfT(AH58bc6&gB4C707<@CKyUfk$qxq zMo#%#FE!T0?Z#e6n9MnsnCU30MQo0t*N2m*5PBYNs81~_!y8=8cR9ahVBbic-l-MD z?mvLAn89vrcF110O zsVVPiTMH|l!TT;kO56-U%B}CJ9+P;H66F zKeKp5evQEdju2SW<|u${ntf`*8ZAuCL&Zof5UlWU%OuhjreTbqx|O0PlrSSE|hf1v7dTTvbMv4Z2snwYR;NW zIO^0kSQ9ML;sogsZ8+FDFO0%?}n|O{^>Y zv?eL|^!`tqj~c+s8h>s16d;!sM!nQ%{M@kgh`P0r6EBXb4op|cjg%7Aw4`SM)OW?V zhT}2Hay=fW0DUWUp|3BY743s9%w|$y`J9lqoHAEXm$JTE``1r(k3m|Px>S`pS%hm@ zlx)K!XEnInu`V4JSt#9GjZk%IguNzScDzt4>NrEl^Tc_jSX+4Vx6v;tu=*vgVrt_2 z>_oeU*PT$koh5%S8`=du=ID@aB{Vj%(h06tc1RWn#`3GQlk`xlG-~(lvyB?cJ>KN~ z=4@A#+kW1OQ42_Y5J8eTIjlD8)8gi!k|r_^GV_|cjA53naEshBWN3MFcWub2I$<$eL7JfaFM`TGzm&P$6P_V9oA=)yBVgyoo+9G-1%+A&A-hQcO2i zYV?`xVsA=U_lVX=yTw~v6z8v^fgEk3cT2>^0lU3ca%AWNCEykjVhrwsHrJU8q`-jn zbn~WOG+L{g)nUxYb71UPEiac(lYkC+ieATAfYZ!Tcz2jy&&r0DBCVpr*`e1jaYuav z`{Lw*a`Ogc-4>me!eoi`oq$R%Ik(5<*{fbyY(UMd4CRT@^EPazUU;C2x}r@m-hs+o z)ckudO*x;Orf^!Fm62gjQ8f7FXsfByVjPd*eP9aCByJaFOXr;$It}+rGKxztpTpbR zYkE3$72nOH2pU z`*psJ)tJqE4^UfMG*Q<#i;)9D6_y~je9lOMqq~9+lbH!`k0lCB#q#NCxg zXPCz`hE?G?m)w!H< z!-kZAw`UShpT5BN*L*qc-9A7a3#(CIi5t@x%|^btnf&eN5AVLb|8TF=N95NIZ^4;G za~AZxNC~7BGp)hP;p)L$ZzHWVox}{7xSbruY0XuD1rH&SL7|!UKH-7=`7Xn_cBNt3*C0v$w}#E+2Qn1X95f#IyNO_AtGw=u60W zbXT!DmXH?Q&mwSy?_Jv)WNyLQ6j{5i)t4t+)39^GOVtg^Pdk~W#s|Zq80eu=Ji(v4 zE-iMEC3HL9Y~h!@LmIYDG<#Zo)UR)Fcaq&i&cmr<9i;iw8ZViUxIUo3>T27OX_n$?1Gt`w6~~oFasya~s)LJFY&8E&OB?w)?j*RruOZImVx8xyY3<-H zrl~DOwJ?oZ4s5{~Kn0`>p+3Dt2;208R-YuN!s_(EpNN?dl4~6428Os_fe5H?(q0@6 zWL^D_u8S#6+>0lUE*aRElwmSY^!*@uFBug|BMsdqMrQV@6KJy}Wf|XCj<0#*2iIYU z4PR*?E@%56l-~%mfS+|?9M5J~j)IC{r=!EeX0yN9AjM8iQ5>!i1)}~6H#;1VW zY|GaZaSNVdB|KVCD?uIvO115$`_Dff-u(e|R1;yCG^w5ZND4C*UM=fUPI0fiTHl@#(YVfE#W6V`c+Ga1(F zn>)%nn@$EbbuH{{Nl~0eo{pUev+WqDHNkd8HsjQs+bIDxa&AnB@iYAM(hNYIACEyw zTS@k zE^Ybm7N+KzZLqAFsJ5sD?PXINCS6veLZ&W8?TIys(+t;DeKv5A(S}+zon`AEtZO&G zq}3d#igL_$OI(^GFESHNQ@OOkRX!wIy;HS@A0T~eaCVGM=@qIiOwGA&DK(94ci8Ex zteBvB!boD1V<0@j+DeT*Wm$dy@lPM_kAMAi|Kt15?|(K;Kd$i8CwQ(YSLuoL#_ET; z1m0IX{8|aI3by4=;I?;Sy0XX&odFthUjH)n>6{GVdMu4B(xKTn{en??3&<^L2fZN@ zx$GzS9Q8%h(SnI0o02AkgDVP5srd4+3q%88+vX5j`}{xy)^$Wf z4a5TOEZm^P+nvmu0itXn5515q?0T<~;2Vhnq>iS$#nY!`>>(t=27Gcn-@$9hb!e~g zwP78G-FA0mMad@ZO1J)GX{$t@d3Q;wTYtSpa^YV-{)7{7{0lPMedfn-|G8xKwU(Nn z%&T2>VP!2$%{3b1*OT7fcDcL{7@{4?`)Y-znBCC@6WX~8H>#!3?9=1jHbf50p9|w8 zeyBzK++=< zsx>FVHA+0Oqkm(gjpdvbP@P3{hMhTWs28joX9UOgVK1)fF{gJ1TU~krEx%^tsRVhu zg92YQrs{8i8jPIuAYm$B6kQ9l#+Q!RFJ4mX@600vo> zTInz0hxI>G>(W~iOD;GOTQ7E7Ob9(7V~V&c-0oQ@Gi42;U829 zHM!2ngWoIFTA1FV?d3j&#u0l#Z@>c(hcFlLFTf2wa45w?IKY@#?pO{EqO4uR7zI68 zjQ|h_b$7j6;%OI%Dzyx}yInxBhx_7`7XPy5(W~{_Ew1@~B>SD4G;|?16~(h-(ZuQs zErjgxevLPq{pReFxl;@WR0T>e9}nSmHGRt$A2aeJGZTchY;M?%$OhA|3sIIZ2I`_l zRZ*AD6c%l+-@P2~oPNpz%vI;_dyH`nXU^#)0*5!P;c0i~zE!DWB$ zE7GK23;ze&9o98Po7goH7ThO);zGJq5cJE+S1i8Z_H8k0i;J*uYNKIl>Z=_axjP`P zb(O3Wm(qHupOE^7<)5!;!9EMOhu3j8k|XUU%=N#MRRt;xbV1k6hE)!*dhl(=RL)G? zhfB7JIvN6K8?kGlhxOr&5WjdpxL3V)tGuW{P(W&*?ahxWN`kXbiPDO_g1XyMj*1_e zS8Jiu)g%y!$%v#l-2zd!8X)^@2|9*k#A(>cQ`Q-c!15#0pR+2NZ59V$b*MdWaZGOX z@k05isks3NU zU$;I+wLM`c7~zWY6U1T0Pa8TNh(Iupi)(Yz#mM}2qRLLh;7)`Stw%&?O*l{)M zA-`InIARc^SLbiZTn2_`y~ueOy`dy;w`>p9JUV`w%?fAO1{x-~+6Tt~rr;_VQrGp_ zy}9m)##x{5cD&_Fvm#ps5npq**F4+ZFu8NbTIuy=r$TqRnlCP(e+L%XF01Z6?hIt5 zsVpE*LEz!_2dB+a2xn%X-T>@{gAE1ME7vuX4L5RUI`A$7zIFmuY8EOjXo%#LJFe2I z&5BAZlymL^6w~1Wzg0OJ@G?xx#e3Mcev15n3Q=P_b|;WlU;r3pgt4U^m>y8o2%0b( z>~gVO)jT?>PBTKK3t92i-R;&Ha#}KM=PG?QRZ>Z)Y88fy3xv@?e?3~8UVsiPX_lqn zO&67kgLniKNHZ3(zX<~#bsPriQnY1M?lO4FlbbcmZ+nCq)}@$+eScJutH{ZYjJ16- zSd(m6A0Ey&$SH7$U-dw@=Txb&1>%6mGB$loDfR7P^F?4Dcr?AsZ4guO01JhFNSQaGy5!4~dfAX?@A{EssC~1M&9fi2`wP1+ z%yMQ>o-ld(cSuE_aE9JlT#UmrqEx&nk_fWM*q70Og*8V8HcKyqlaGyRFd8D`Fo=;K zRr33$n7NwYJ(F<8SJypGZDDm;p+->T2B(o6lM^#7d4ZJ~0b;qjZDL-z+E%MZ#Rv_q z|7Kv_?4f!jVoJ71&{QV|$l+y8EIxCGrZT<(SY4r(MkQVcE-^5yN~J=Zh4WhO@f77P zCBc)91XB+sBECbKy{Q;63y^YwpFxeVT*HgOhTa4aDCw=&V?7N)^2Fknnr^;Zm_Ejq z-*n%ei-f^OqHERl0wJ@58hr&9=74ZJ%3qASvnaNvM(u)7g(+C6n|m+92O4RdF7ea4 zbhY)%GSf~PfMcbg0pT-?XZ>7|E>xH`7t1PaT+$c9uONc2wg~=EaD(NriITogyb0!< z4oAIvT?^BjgbuLm?>~IG{{()>bAwp9vHDnQ5O3%-a!$h*Qn!J<0^ZV*hss#Cs?(to zyn^&_2%YUHg`=!@Z$rh9>VSlMS^ZDAdYA%G~ht27eYoUCvZ5q-EC`Kp49Y(X%Tghj zV=dAq5C=Vrgg0JN*Ytmt&UANq!-|C38<0AyGB7+{AR}L_lRh=7)U8etJ?4?8n`x-M zXO|^lbshI2 zQ5mjs?UfhoGkhCBQ=v!5tYQI>5Mg0C*lNK=3fXfgQuMptB#s2uc+0xQ6}4F5LY;>R z{mT`#YNj4^7R}!=Ym6woVz0r1hTOM)C98b{c~6_BB}X&AaNOmXs{`pB*KgowyZT74 zFF1K4^;}zFVyR`JYW%l+HSm^8I!)>QiEuKJ&#Vmt;)w*^G)VnE(`HX`NSht1Z!a)4 zr%e&x-Pjbdk!R)fVMee#sDV*2WX-EtvB8Z2MZWX3(|i<|MleQ*@V3)`lxWqq>W%}I zT}LSkHBUT6dND{1W%t?WDpjBjE0p7FL|wafoV|h4sWTD4O(gWD#Ga_ezS(4EmG(7mEjRFuogY>gFx+SZ#e#)VCj%ep3O^u)oOdZ zJ3C(A%_l&PvHcVeRnQOQp`7du+tcATgiFSKFye4Y|JwFQ)c8aJ^?+|qsdwD0WE%$2 zBzRg5uvB<~4)5I2!3u(kNfZ+ad8}v;lsckWm6Du1tqN1X0_SPK;zEbfKpjv6F0tr? zy`@j_u#8bPR)MLbytv6DfYi&iE3yiNre!djUumfR#TgcLYtQxfP(32f2ZFuDsF3xs zn^;SV)?ouZN507Y6ZQ`#I08hCi|%E9cL~<(>=phRZY3R+ZiHIvE96~)W@MmF7-^tx z&26Mb@mfE_@ldMMZ$vf4am3_o(+npT$M9AGs{6pZw21cRzZO=T<8<;8%E+=>iVtB8 zs@DgJD>ax?oB;VHqjS%DDVhkc3=qYu?a8Dq>J40#>R^Au4}4n8YYj|8=6<5-gwuqh zKYi|`*#w}#j&_+GG~mP2GTKC43zJ}^yv3|V2^pfM`dm+z)}y=@R(cMP0#CvqPh&f| zvcWHJ=a)>B*S&eHMIC|rzPWr9r82DuzXw~M;@iu&m#EWt-H=^NVW@gxD9C_>hMtoh zP!G6vg=`vZ7z1a^0ay>k2t9XzFN3>ybU;0Dgdu-1g_q50yWb!mC(X^P?@msZm&STy zxMw#zh%hnll#@lrB19%BuqZVUjqCCpXbrluCYHC_xmQkoC1jcHch5mUajBi1OP5t$ zBOH>f*b94opI06XqBHSb!fVufpB~>b$~n2uL!=dpsq%vW$70NusfnHBAT2dE2R%Pl zAX%2%G1uv11N#d>oD>z76>Xp4JhG?to#wbbH8kWcNvkYM5|ht z&`Sfu`<)RMMS<%gN*L6e)dKm>et;{CF}(0Ia~f$xog%9pol@3lwKlFra*0D%yEb%Y zfN6WEzC&FZ#zWRQ&8{409!N8nv2WUOWu25n@IW?we9zl;Q)*CO?n~{coYMhy<98fn(4SA zqtRH!&X4RPJxer%m)R;gYR82JH`q&H2gjfYD{%3^hp;A`4T3aA8t6@AhtHHO6p`nM z{A)}c1E5VAX{56fW2-M3+Q9W#iPDDBW3j18%}YH7tqZkqqVWKdxN@n-gjUeYXRXl6 z8Zb1X{}hogjTO*O?N*odFgpia8M=ZJVz6mPo7e|uK0zJ^m80NM@as2@6AuISL}{au zLItLtWBXq$sF2713jgQV%Z0CkDS9)0qeXy2xQ*8qs7AG36dfB(`}l1Ek*w9^2rrtB z;?xcqk6ty*Y?hZrP37Wr2h?kcdY808;m2Z%U)C2-Q?eO_qB}>TjDXdn23Gy3!t+92 zTOLh;63VBuIs1W}~@KrI-ZG z-OO*JYY1-a+kkquJFWwk7xKzJBIyBf(@a&M9%#t^v?cp`pLnvNvB?msvGYAlr{I>?;g?kQ51*nNQU15ONEU8u9S(A2G9+BfcX*)aLUnJjO?@<$#EATRe36a2ki-U zlgqqNH#rR>WQ?FlLas{uD*R>@~$hQBU6klT?!2lX8y`fyREd8w45 zy0GyZ3*TJJ)T8a`vm!hPrbl~jUoI?-R0{+MJC8wIfRh{m4oJhomPx1A0kyVVtOJI6 z0o&goCt3jNE|{8@U^d1WP-5Y608kIOGR;EJ&8}3YHQAc62+q?xL`>|~Z z$%q9_APma`_h)oKh!0ebD%ZVLGm}k!?-XON3Yb2J=EtiyYw#WW|MQo3pY9O``16<8 zErZ~{+$L=WXZgloSAcq;;L!OU@G6zw39r^VO`DM=c}SgJ>*A$wib7E>^g$L^f(YlP zB=`|J+{ONQGE;O&dABtBuGmLLI$wS_6(BL#GKz4#0XyUtoK>Ugni;%LS(9nmg`v#s1NV z)MDZxT#pfB!qycwuh-1EGN{seYCIMji3A>a*exQ&4{}<$+~LY*0~CFhvA7l_p1xRp z6_^G>bj)t(JNTj`^;Ai(54M8tQ3yC{i)z7vkUZV^>Ir+Porly7nR^M4Jx15yjQ5y1 zKDQNu0vG9Sob<`sndZbr1ivw+&Y0`C8+RXDPsv)X`l8SWKMiIZ*`TY6xcmf1e0<=y%K+Cz}E|oz*HT{7SE*9G3%NzJMo%1Wws*ShNoQ+fJX0m%NhUy!1g9`SCwse z-Y_GN4+NSM6M0U6%wb=oX^;6O8<{6H(cAfC6U2PN=RB?B0H{Z_ty~x0>u+0_nsa(E zuIeS(F53XChs4c+`((BkJGAnrF8CG+CUkW%8c*PGsq4fqiC=#F@&5B?+Zm3Hm}Vh? zO82}MR+g2Xb&EskKs}IxKwc;ar2U8iSPvDXhU8hg*oLEhtb;%1Ya zRXdI((^*83OA0#RofAS1zLL3K?+P@_l@czrR58Mb)u{$9K)zbzu`T8zRM}#41KJ-H zzO6?CwS*T?f|(J`9okG~GvlxQ?q;kNO*s8uPOi2uMZ+=b|fXWcH!Tp#!em?Z?l??a8P%rm|1Ct)79( zyENR`sV2%|Zntl)ko?0?p_j&%W+ZKFzchxQEYO$u>vS@xQO`Qh?tfQKP3GzfOp|3y zwEH6B5)M>a{{Hr0wz#r|sUOEwz~8&K@F5A`0i1_G-pnOFcC7WvT z{2B07Xy4xfHGt#s-KW1uIO5u_BYOwr+dg~86cm*%V&Q_Jtq2c|NncUsbA>Tpu8J_> z;uS{`5SvQ{wnTueuTK=!nPwZTJ=lBm0=3_QiHg#RdVfbsE81@{O2B!8dx>tgfr&6# zWK8L};tCsCnQw4H>1J@Zxz;HatxXj+9vd;M&!6vO#9l0;a#yur;o+$@eH~0Z3k^U| zfg#cf(*Xkux!l}dP1;Iafc@GbkAx5#O~jlS(9q$qUat_E^%#g=f!D&cHkBIB*1uQ2 zORUAqo>C8BdX;TAurkmCWyb|0xDYe9@DQKxaE0moaJxTsLOiHfUy03tL|IO;qM=k_ zt%|I8b5$c~{1kH&nII{kJ}(b3l7iTPb#|&dq}?pTmn0s*96z{Obngt2fN!cAb9U0( zOSS15czMi~S=f)6_Va-XQDaYle};@+aTPazYYv2Dz~E(htQ6HEXnLq9JlYLC!=gk9 zQHdsuAS=jjhO@Ofd1f>@*Qh(pp@!vJ>v@#1WMxD16BQCBnw zFY*Nv8yH^IoxBQky5JcD#gumdl5`4=AhRAFx9ikHZ4UjcF%Z|&FuBd)M2G=o{OWeX z$=5G^st#vZCL$6-@jH9?df=rVGeAAcE$k#39-OtyMqyg8p{L*gtN{jtLNvh$_xV}O z7Oj4PbnzyT{(uw>i}?$=?CXVCt)r)67^M5uX)t4yX%gH~s+t|3B^;zLVfGSJC)*v! zm^VKqVFYWT`Z&F6KZTgNU--?MQPMDtF7o4GE_M8@y=fc>mP8VNyvYQ;7FOTm+I9Da zsu7be20b&SMU?b@p~5ZZ9jUyaSZs@G;oPV>Q5c7pj0Ih_p3pa!bh57W&_|64!t#VD zoUN4Ps&Y}dD!zMeCE*LG#ZL_@@!bj+Xq~R&WYExe0yd_d&mO87Wn~R+$cUQi`$pp5Iq5B3Sf&LSWkxaRb9`w(6MqWN5|LEt9 zUWbf+0%>Ue5;(&7mT&>G)|W~4TyiB^f%M*j6$(bDsbzh=zhO#sSI3qr?E+UV-4fL{ zBsKwTTvVwjMFK|62#0QXJ-Ck2k>IGWLxI)iW8FKB)Qb(>nRv}s{_p$nX(91y1$i%27Z-BZ%t^Gf2R`oJf_yfhMD zP!qP-CVELQ8uS-RW^)}Rs6ZAco3)sAoIw@zA>!7t$jG;Fo|ey9v>sZQ!@Qi62UT#z z%A?WJ@99Zc^u>BQ+Se_m{sN?XfCG2C(;ARo%yZG?E|oGAccE6bVguGgMuV7g6(s85 zcY_oYgE`D{#V7&6`_YcI?uUZZzlKL5^vA`)T;ARP z0ft}HO&*sh&P2;SBXF&mN&cpGkbXOsq@|R!d?CRqt3#$>1cVLx)C6~ofEHDoCY2tF z8iHJ0dFL{0_`;-F_dNir({yNOS&f&@ADkx;M#&Ujq3|(&E^77aIKteoVaCL1w_+Jw zTqmqpHWA)197sLrHxUb}(Q!w+?wRk5-=kLwLLOD#o!UrU7=nOX9Fj5_o7o3&4qTF4C9_bBy2woMAT~ z5ev86y|I%((>XW8GtaEDfh8GzO&-^neIU)!pP7lQKYmuPw_1)k?sTdxWpr`XjK|?} zO%vfrpP_ApI6Ph-4MB&(4)2z3ZYJu1nu?&T=D&{s?lua11ndj2#8t@4%{g^I&x#Os zj`r9z$L+-rmoT6gy4}^+y@^={p+R;l|1wwhXs89IH<~C<5$T+HOs1|rsTJy!#~4lE z1wFm6^)Y8h#F3beN|#RQr`-pKq#clKdu{AP?jp0`A?s zF%AqeTTB=e)6?e~TPSDH%C&lp5Wi`BcaizXiZ2vTvTtP9$OX!HlA>b5RwPZ#JarG# z3>tF?rNb1?E&2n64EzHC#HJ#PXt#4fiCcbYj0s;gzDDp|;(X6RRFTOG7n&?qkK@M^ zg$Qv@X8iEoB1th4j+wF+NiN`* zrcY7`TaX@{i-m+5OWp^pbleoJc-VkB2|*Z7h`D@n=pRf5g<<6I$-;HAoEM%%A9)9~ zk>@NoC$1rtbncW&u;|p!*n&~C%gjxL<`^bIG3zJ%mHP%9pdbAz5A7qxfd4(-FsL?oWqS^<;Sy|8<>;^HTqIM4viWNPx~DLURGCI+l;V=ichWSJj@p%mF@Y&fg{Lf zJ>TH6WE)`FTA7irZ8S`sd5<9No@zj9tZ3r>B~CRcAa32TtHx4=MwE}@z-guf+S=_I zLVH{=AHx3T7O`MVH%qA>?9mv)X)z9-oj#fT`@i>?2=%iE>Q5f1KYgJ7*#q@oz0^HO z1la@Jt7AF7px}^rBm)YqSe+g26tD&4&6VtNwZh4qOi+8yYt|}$Hi2PLc zz>r}uSE!ZgLE%_q0rLDePjO80STl`Kn4k(d<&&~WJcIR+J~VudG;}CUB~H%j9C<1a zr$!Rugcl>XE++luKqu&x>V>OP6Z}oHo=SMFrnr+rC1J<`xQ^P@Ywp+-CB08mk#4N; zd~66Op8WU!ZYKN&s!k2JSU@2T_kNBG2vdxqRjGR&eel~%3ecr_r&`-@*S;g?uUhE z`ra$MLsGZDAS#ry}J(?Ydu^r&?n%<8I_@ui*u%%@_quyRC+@^`9+X z;o3D{pH!oE+S5t@+)i{4)lj*eb+)Cs%G^l{@tKW43k1OCi>p}F2>1{r(vU_Y+mXdF z#Y%HwltrjXY@I6W$G9HXldDBZa2zeL7UC~vjps0YUh(0c_}E6WTV3AFm(HlbsZUKO;j+g^o6c(TJPXvS0vt4SGGgSAPV~~UTg^uxV^E;Ax{@ox1qNCPQ#$zGp>T8TX9F{~zC>oB_6R@JN-ru{ z=grm1DHd@TvP`(z(G&Qf=k0edZ=rO=tuWLL04d{2_bv1TkH4EfolPT*PkwZf&#v{O ztF@XkB4X^z?fDizvR17DH0#IwMiuRH=IGMXfq}R8NP{v8WILSML3bgR8=K?h-dRET+~01u@bH?L1QUsgMqM&0P~D4) zSCiQejGYHg)k@Y$iF8JdCh!f+NKK5Yq{{?T&tX*F?s>Noq~^s%@$N}=T2zwi%N6X| z$n%G-GkI*Pyi|2Onx;+Ji1YOlGz*aL>8_L@TJF9LR`rbXhR`zKu+j<*#Vu&1sKIja zF%yuSr%i{sUR?#w(Ee*rR|8VxP;S9nbCQ1RjnL*_KqZ3=42KJ<)}EI$9KjtyNCsj; zG|)Q|e+}Ug=O+{40kBSo-9y^guNnkIy^S3(Zp@IPu_9N41cDt!d75zsg)l607{1>5FHl-=Cg5 zd-`%Vo4tJT?EbrxmuuYqmIxL+M^`rsvr7Qwpc8d&eiubL@c}j<4Kec5?N;YBVku1c z^wk+;<6mIXdwKlw1X%10y&4DPE{a!{&4byyjW6w>>Y5vbE<4k<@_fM&$n8P zazCm8Se;X&Naf|BXp4(JDKa^YYLqI_#^~I~Vta!t=TbpaR!B9_C|MxLK=W6t_4*+x zKYX=nJDWZ_B4TIbCdZ=5^eLD06CgE?cb1IBNWqSTS(VdaT2JH0Sg&zviex+j_DPfs zlLVinKfn9<@&3asRHCd)_PXhU3Q_G~x2ChpB%n2*W{5zVJMuY-A1^uu9=P-jQcykE zU!=LJxqW7%q&LO{Zd;Q^s;-k`SiB)u#LePf z+#V|un=AAZVh8MUsL#k%_)kGJ>4sH3+LoWF4UGc>2ZT9pGKZ@^xW4aQR;RR^U>aVx zgBt#`hv|X-4Km%iilv9?0cf_t)IO$y`|$U_;?}r7PX3oCObKVFDRP~_lVi6FvO(21 zX)qN5rbk6rMolmcaOc9NIBZVGF7s-E8UdGtXao@%Jph;oZie6*rE35eJB$ic`|hJjHZ=VOkHavYnxR1@b?O4reox5> z-w&rW_L|tN9YXbU@p&9eBrkrQl=H5N_A~21%_wJVzS&_7nCuQbCQ^S1uac0Y1)V}e z-QwG_pahlG2|hauYFwwNS3{0NnwHqTLK>xrCMe3OTx7x$CsjhYm`G?HpEnW9qOz`#eIqmCYx}TA#)3`YKjh0RlbzE3JfU5uaR{F*D zo4ezy+pvYsSH_(-kBX1*KTlcqIHP3~W?<)-}3*19Ac6c>N}&k8l~(7{iC!YBY8h znf?`+W8n7PL-k1EZ150t}k*Y#I*3N`=Q!jIyB zri`yyxikV+w>*7}6NMII5317^HTzs28MvToHq1~;f+wa(PEioi4)D1^?~|El#p+$? z^qQgX9cIl5c!>mSU4TrlA1H`+7v1?=$o2rD0otyo{cQIZUSY|erm}rRqLZ#`Qh)*1 zfl3rbY=}iE@+&p@#;fgsw|A~z3QPIg*~!8%_`>R>6_}PFb%G3Usr1tNZ@F{E=R(Nw z?$o+(pk8Cai^tn;zh7K9y(DkHUwjm^2+15$?*=#Zt?y`1;lhhzaS zkqVC{djImIp=KKDZdeUeW2*6o)AjFx0#T+b2@;C&Iw`*RF=NMk(kAtCf%GAf>QWX$T zTJaMom_DG>A~GfqLU7-WxDb@AuV-GY^2SL+_VQWqomFnhq zz9LCGWV!hp0H({+ospj@$RZsZGYMaSpjs{#js@;{%gQBdVw)#F-`6LNnimg<1M4}jo zlxOA`S;lB$ymQx4(yOs&b*IkiHb?{-Tc!bY6vId`5m*vFyDT&`G5qQ{E@TfYE3A?} zC(I0tcWt*phO}#nGh6OVrjN??s%mQKB0)v1*C(M_oC+_FooKicq)VN~B6iXv8ykij zYnpBw#a)?wg&voc52*~l`S6X2ibk1cqikD&>C?Dr6k>O?KuWfD9$J{1i%?xIUcr5T z@hWNXj5tduh8dg}tPK+=kGD~`T&v`L;}T6#@h1`#(nu^msXDdFRSy-LA3>@ zWq)&A9N%pA8{mz}?CEq0#1Zo3b?cD9qGmI3(a?RiQ_{kk%~5^)%W1Dw>Nrrt`Q^FskF^n-{-1`OTEy{POAZ z8SwL``w#c;KHoo?{O_<<{jc|b`NREBKi&WI-HY%3@af&hAOAf0bpN;apWpxdaWZ>8 z{r>5T|Kl5DTdL9ocHgW%(pG4onhy9bkgPGN8h14^<_g%U32@^fhzO9ye(xeU$!)S$ z*T|EXLQ3EZ?r_^qw;Zlc7esFl9v%1^QOuwk#Z+EuG>6syd3kep9cY7N&>I6*6G%=HRU)h;fVi{c3A7TQ#O+Dr>^kG*$3VyVx%-s}o;P;wUC%+NqXN@(v5F+^?$vEOKh4Kiw74WhEZp>3yCGbU85d&FlSmJZi$+|NkgMwFJ0=^row)Jb zDTJg*XW~GRaTtojX{6nf^Rvjlk8;*3CPuHws>W=bPH`)%DqG?@{WyMY_bjo$VM?&@E6TX)>TbP#ef|bj`wi=afo2 z$~4))DDdl8_mrf3uwd#i^T~rmwH>fN;EGwlkUmOfjfrd5>&V^5a64FBSXnZ4NE$DtG9b`JqBm$!HGxs8aAV;cgQurP0=u}y0fNb4 zut3D^6{hjo`WW>Y7Z#lI0jLMc7QuF9Fsr=cl17GfXoaZevss@GHAB>u1iOo~6Na;4 zXf;Dtt?54)nQS#;*Skpo4K35qKZ;K$vaI)wdP`|IK|yCw7@wHiLK~0xNM|toms!f-HCT$ZOl`?N2!|q0O{R2b2w2mCW!1^e>$KZP!}P* zBrO%W=q7Q4l5sRwWHexPh7egQoBpv7S+sP^e!`;4F-iU%nK~q9^kDED8-_3kV zDr~D#a~yeqVz2rT9WO8qjo*WVNN0PS%PXSDwSx5VMf zE%Z{2(6hC=`bV>A78r&}LwTn^)K14lMEKYPt<z26vgp}opw-#y6b%XK<#dlUE`_oOeYI-6 zuHaQfu+zovY`@ySsoc5q5D&G|e27|>m}@^-y53N0U>d~!gf<{`W32n`_3n6e6*mD= zwNS*y4IKC4f;jD4AKYjIb(zFJ-{`F`X@dI@oaH5T2`clNX^6`N^pJKEoqzH9MW2($ zyy*5L>I~N26;68I7+MWHiE7_O7u|S^}Ouu{2a%>?5H7K~&fh*Ve=@?KKf2pr!@xON%l2Ts0tdLW%_&Z0T{z3dXha=%bFO5TGSw#tbqv2_Jj&}n%)yae84}5 zh}d`MyaCx%z=ej$0;|jeYSZAMkY?{r5tMon6a^kN%YknuymontM1!N#EiO zJXpJVK?d^9)vmQoJAT1RfoWK_@#uB9rCF$~L@d{0v3zJH1yU!O<7SxH94R2JtDKgg zNu7T}??cC#R63G)VGvhzlZ@GPui*ydgLcL#xJcZ2a-(}s8cDd|zrL9|(SpQf$+KQ3 z(?j)$PIJxfrfk>%m}6ae8+a~@9{ES2WZ_n-SX%Y3wKJi=QTvN`fY};3j^UCyupo;p znv2WoYnEnjXL!ww5NRh8-G-->Ee!V|6T!o!m;Q3sb6Xfkk1a&wkA1M+Kn};XOuMuu z=7_^g52LO0yer_r+=HxYV&%ooqu`qG=8hq)QG};L&DS2n9;!E}GQ{}NCn``6hzP-? zM$c0Bk&lwjp(fM99h33FRI)jXJn`>|e33W>9b9kHiL05RvIVjOsd+LoQ@gwQYVyp| zLXX-8a90c0y-lO2ui^{k^bf~>pVhj48QAnEQ^h#<>?B*#gF7?GI{;|xgv?WR#^P=_ zANzpnEtv(v5T>|jTW$vQAEs{2>ok61M~0M8(HtKT+ctyLv9P>2IsN)|AoPzksNd~O z^CTgX-b1nwTVR+WbeXate?2|~k9~H+7$mf!FE2^F?;Q-WyPk(*!$M(O=OL=e* z@j!Dlzl=|77HfJc^?lJ9^xHDt&x1T?}`||$7{o`-G`ImqBmv8=Z|CgUX z{r#JerOYbwfOJxTb(+msIWQV&2?|WjdB{^joIUt)Ujx_tjWnq5afdyePOqJmA`ZMGNK1`EUf01*45jNJ6W zgEjZnB>|$l#V&hqD+bmHvt0j5P;BoWgi!IpH3V_p5H0|U3-rcsZVIR-#+h&K7o-P` z$uA$A2cUA>U%{W{VM{=pyAE`4RJ(@yQQaB|F7#w^_Gm|Q-+eGWD(S3cQf&Tx z!OIK#e*W{%pT0Oja%m&Dj3`<+rX%{{))1zS2@Q|dqKH@6HSAPQ=btKs~K* zVYM^&^~jcXy~HR)!}%&xB9g`;NAaRcA=Et?Tgc!6PZQ7K@kXg`vd%J z!8R3K5EEUJDAX2uG|t?T(cIfx=)#Wnvz)sDL{lWoLv^b=`I^t2+Z${;Y!888;PsG} zP5r~OvU?3?56XPJI2ZLc-?HvP2^uB;+IDWn+vp?XM40cmznQ{`_8)ll$F>m@gJ2Nn z58`=xKqocz;2;eMuIZ1(U~eYN_*#wLbm zzB&F%atR6Zc95>gworxYGdaP#<>eH#9d4P0B!`)*2RG{<$(f-BtBIHkE^~n$n}zBU zYoo_A=kc`7G~I&yWn5W0`GfhO4@oX+Cc*Vw&o4LU*Q=!*G|46Ju%jQp`{}1o-~R30 z2c#7K+t2TRdh!_meg5+4mmj}O4oyqMzpDlR@}VbBzWdj|J(>I#&*AB!s$c|Jo6pA; z6$WVLroYNt!d;~1iUZU)QV-hlw&NRhq0Q%V4z|SIqLL$}j+Q0DVSXlb1VqYnQf+7S zL+MF(57hvQF6$PayrxFy;$ZyK(A5_R|A zTG%*3%>MtqEZV#sKqbNXlDI>K6$$AzAPpdyJwaC7xak)swx-VSMaWvm1|v&a8nb^m zm+l1(C$K#HEUr#o6eEBY)q>k4GAIZ1z~(N#QPP~Gor?_een&*y zdDRNJjE?|AO-AOliig(n~D4}0(XEB``S8@e!Tzn%b0U1>l+VK zcZ+dPj3{YW`AHy3AU)<^C=1Vtp=i^5?uuEbcQ|IRU)U6cLAimHuhK1Cd#>qT_SRI^ zYdf5fsnXz=f(VeUR`bdK2Wv z&FqqTL@cPu#$i01yfkW2%XN6q43%dSJ)D_zanHu$wSlf|x?qGnNjat{4^w>txK`P+ZLrr80w!M`h%v$jG&CFjyn-Z4abKvlTPA9@9>S--52G zs`1NK)R45Brbb>LAdUs7E{~X9cuyi1E_kv?hkNq$MVx3G1FxbzY4(w7^h(V(kjD)& zDW~6QIHpQ;?E{tQmF>Gks3+a}OxQwhMwazx93^n#7KUbvFQi6};0Er9xSsF|m)$Eu zt~(ziE&O}wQNCW`YF>mRFD`!%=S;H8a&JN$KHQt8UvqCtP1K*cvqLc1Ev|u@YDPpW z>r;d_ff8DMik~RdU!E;{-=z+yS7~j{RPR`th*$XEv)k`3oOq;c_fuEgFrt)sK=k+K z7B^0tW@b>YA#;W?@%!7e=|#lbsURps!z}`wq4M_hxL#srT#YA!V5X;&u57&%!!;K< zuVl3E*6@K=buv5|x$i7_H?-5?_td57cxEh#ONj3O5G4&x$Zv`Co4=!`!UfZ(kw>S4 z*0DHS1Fon23awfN>H&7b>%uM$7VYT2_4;}i=4ZR2{3On6XVUHKicYT@7bNBN*E=C= zKzey71wyOhS7F6-59n2*mAarZ*ZD6Js@`qj*}}N7cvDHtxup89_X&NdmENRpHnBNL z)4^+si(-I>5SbI>3cpg+iUcM??IAcXu7}}T+dIkI z0hX79VJ?@u)!WGnYiyBFqY_bo^wm8H@AuRYUMI^%+7w+2qzr)u7&;Os`VMi~Zvd`+ z)rmBL9X3#YIA_xD>BYSenW1YT>c~}B&;YHjr<10n+0`uC*C#gz@;C0bxf*L zUKIN%Qs3-%uYsqEMBY}{SDWDqi4{hUZGq_pJhj|F^6~AOw=gxAMwM2#8bdAW z)tq-w1t=77RJs{xVS2SO*|3h@?H91R;KlHRR&c_ zk>@GPv-L&8sI%{qeX6J{Z8jQ@tM)>L8U<`7s&F&Q!p-Q|iNmRN>Vu!crP+zp?Jtov z$W;eU28Ipvxkqq}aNvoo5S&P3uk)=Eng!yE8mH_$T*aPlWp+*Stjzpt9*5W8`*6}= z;4fehjYFGGN;No)p1yoor&hpv%=QvGVuTa!{;X7=5UDJ@Qcg`fKUj4=_ zP$yWDoSZ>>%vWR}73*GaB&(%lp`Pq(wPyTgsvSJZqAu}!hEg&s6gRuq zA9b4|f0Sj6IO_$ncX#tsKI6vpo@$b2)hr4Tsp=&SJf$#NnFbnZ-XlR8l=Q_oOewy{ z$61JX6w@6{KEE6+>8E|`_6i& zpFcww8E$mi@Ws#(J3z9*#&1_R}TOOdb8{Yl)gjEm@&B}f?EpQQc`Cc zuqWTB^FduX_0bnd7y&Bn02+2;pOx$VfB=?tGqu%vgX24$NAj>&FK{xgN14e>%($&d zyNDwz=8U_?;GXK6kY0<#zyi37@u~75lM&VgFS2z{mNOex7{V+wbYb3IBIAqN)Q z&D=frba0hW57Z+f%OFWhm`*3Tpc$*48kW`(k2r2LSGIv~r+W&H2Eam@R5xSnbVYMk zfh_Q7N3Tw8ehj&bX^*&3LIlJp)796?q3>6^Bw0>hTE)Q1WK`~SK7(lgjHTV1A@MTet`C#@}Ej&R${SXIuYB3N$uLo^K*MV;|wN z4fWnwwlKvN<2~0m*VMA(4iZGBr;rQp)#Lm|8R7!7NfOg}T)+SD<^IzNvqhP?MCB%Z zc+=2bjfl`kY|>kutMj zbG$|48KmH2;faxP{BO$g6 zfFj_Sn@4!n*n;E`t!?9G@jf`Eg=yfy$|@&CZ%^xhdO&K%H7{FO?=FwejOjBx+=A3P z4zkQG+x6znWtEO-pHWrCFy?qMumoz{1*VSebU4z;QJi%2g+8Tm^aYbLEt(dkU0@A- zeWMrBy}^B@j29A$3XwdD8gCr6nt)e()6w7%s!?mns_+l71XQD|WStvXiw|+XFxvPx z39R0oe$q0FpTPfpg$AzIWj(ox-ahalv`qJ5c`-GozQRm~>5uc6!Fs0Wq-HM$%+*Xi zJ(9C;oA*#m{AWNO`oKvV zxo(_vX`3uVEPocf+0|=s90pi3UI=`dxJesbAZ(Mn9GMz!cdI_Hgg|;mNGdAn>pU=7)o0ZdILJYLnzTL#ZHdFVUG-f`8VgAm zjtx`UHdC4EHH)#4sV68J*6SZ|7f(e;1CZVjPloVtd%4}{nz&8(m0xLCm;MR|2>)Nu z;YBG#UgovWP(7oW^PS&oHd|P2?$(XCg`^bqHPvkc*B3wj>E~bm@ZtW+>^HO7v!^dk zUOsz?KS*1AifcNbzQo3HqDzDf+KF^oc#RoI^mg=3UZ>}1TbM>>>usXR=6d9;U^i5# z9*Oznl1cZtKiqEViI5TWgN@Whu+}i!t{c3@;oyBRM!%XZ*VD6Ca6N1H>{tu+nUFQ_ zXe+VfB&nYHPsopa)A|mS#%;!Oo}+|?h1bmTj)XY{rRr3cBThlJtX9m zc-!Yg))rMxxqL!hCl`#i*xV|kxe5mMg4i^1r1!h+0(m0aVLi~OOa-Vswved&)C8Ai z9vZM7q9P#l&h9sdNLS+h7NW-74~NZ+Y#O46nv%{jwe)UEhhPeEq%EtB?F6mFy-o$YT^c$|p!L_UhRT7mzuaY|}={qslWwd~$L(m)^B?@Usp_5RZK_hVhp z9C8<=R~}gRv4)ry6?~OXHc9z9(k)iObF^^q#9Eo!(#v&g-R8w>gK%o|?^Z3k-&>6FxdphI+Is zFmJCO%Mg7e4;t+cCrIY_EOroiK?6X`v{*cI-LkpdJ`dajXss`tYk1f2B^G)6v2 zY4ZYU%ZyBBA{mhQ9C*oApIz7X(MCmcn8Y_2et7|IDU>Zl=|Czd3(EW&J%{%_)$*kI zdT$&79Q~CEvP^BJlDZf2Gs>Ej^l5ERL%+;j%MWfnLU5rG4j~a<+5&eg7q%@Vm1&Rz6W7C;3CQmOJ#&|rb-C1%b8-gc8>vGJ! zJ>T!y1{qn=$>g!DhM`y)FkM1ONsU>$qxE@QfNgt^>*4~#OM9)sZ96wV7FBaKzJm_Vi)oAPTWP}!kdg6yIOM_OL{mj{2 z-!^=H2U2sML!^Abg}0m{IOmHJ3h$BC?7;R0kfP!<32s3;np{!lK5|}F9jYB|9Uga` z@rxl6w>4&8AAmKIKuNrl@wo-m0wt-WF*peV1HdA`%nwTfs3Sj&v*V)3tUU6u!OsUt zY#Zgl!_CyWzSa$qhBv&RF^bl^H%~F)`!HLWI+Idesh+my=ZKv)RAa#oL)SR}>Z<#V zp?3arj(ft(&qf&~o63@P!7hy&%;*4KzujU95MhQYcMt$s02=^;2R=!ctY;y80903Y zP;tbrR^&t2RZ$$m$Db)wcuHNSPK)gauxX(lDjq21pni|{MZv7)M7$Btlsi%PbUAht;1G8Vqrd<-qJp* zk8BC<5oj{0x}JjwR3R_T}69#JD^rln$WBb zGc*>$Wgj}GXLKyh^SX6npT1~zCK_XHv2;3(k*v?tf0d#R3Bp1-y0?fK`Ug@+qv>dB z8`O`cwn6=9(rDD5j^&I-{j&$^Up`PjWsd1&w}UwtaZlNjXEpj-?r^hZ^m1^9)VX%0 zaJQUVh5*&Z=3HJ(eZk~F&EXd|x!)M3oHXj{_7a~fsBvOe=G`8Vf>b)4Q`D} zq>t;XmK%CH&K?=(2k~h4_Hf}*R$kIa7eWL?G+*+KRijs`)Dq*V;*Q6o0ynr0r-SOl zP1(9c%JwT{s#tDt7t&<}dMOBcx!fJ%&{yvKs?A(DGfu%=!;%5Y{L3y^ zSnHQ%Uf%!d#CGCb_;@2dufgo6;8ORCgsn*0%*ACIMo_RaXcj#i zzx80V+P5n~PpT&~c0E-D=t**A+_fu)}?lm-L+< z)a!%S5P*>z41Cafd%W1A({43_bU-nkKZefUMu0%!0es8xW30X7bEw4pC!MC0^2h^!jX% zzYQK7LiLbuQH-6pSjKYscIkk6ATV{7Jzl@v&)*b<=K!K90AYDTY*9@xcgdj z%t^4US?k#tY&4K^)rv@`xno@KbfAKzI;AAnLc}Q|IaY~txsmZif=0^Q*#6h zsa*l6*RlO^GHdq-7R>jDCl7UFwDbbn9LB!khJvOP^I)&sU%9^p}ji=&X z2!Y7z0oC*2c3*H8B`E%9`1GO1>PbU!Z|2b*U0`Z1{6angNSpsY57ld}Lse)IOicp6 zLLi=SN>Mg z>ZBL)#V$jq?Ld93Mu`vIZ$PyMl%$8oBS0DiCG9PXroD~aA@y$U5&5hJUwuUt@16#l z0H?IJt-PS=F+U=BM$0ykOazueeNV`M)o%#lBrHH}>($lPyk8!3 zAca?k7WJx+8|r}is3Kuu`yFsEqxz@JZM0C@LpVGgFM+3}f$=`TvG1qHdCF$eSB2K1aL#W^5C9>S2Bq3Oj0c*iTkd%JYeSKZJ6M{MW-*X5T-&Z-LdP@E zqVcS{>H>a$h{OyzIi=#I-UxayxNNQ@J@cy`P$GOqxiI;6YM=%kJ%6C5=?iQ`9=Qbq zPmajT3ZqAFW*mSu4@RM7KL!W4o^KrcarFZ~E)k%>jCu!1`nybxg3LeIuuQexjtIwj zk3*eLfdp9`Og22@^4weMzl;s0-i6@?#$H13;yG(Ck{a`&X_YDD-PGjUZt`+5pwklysE7`W7i7Qn2cm8O2M-F)b~}Ya_dwj zA5$_T$OdlBnG34W4j?G$V4CwWgzEJ%UiLN%G1qA7%*0%^h!9?Tn<3%w+eFeJetJS| zI0hN07y0Z~|KZaI=}6ZmjniTaMp-bBWqyP6U^MC+>WwZZ5TJ)uX~Eom#!a-!vw@At zYz?|70oeNn(M9mfzFkdbPrrWwo>|%-+R%jn6C1{IFk&Ir(;y7IY12mrUef^uJto04 z^ym1cJxTYMrnYX*q|iUB_OhbFM_p~}uG%xRSF=ZZJMFKr(`g+LPI%CTO?{UpWg*R9 z8N`Q)H0>nGgV}2|iYg&Nc!Uyh+&xkf634Sy(1#X0FryD!5qt>NKwLA?1?K^WGnPIX zeoMH!+3Y9qx|X|o$(y$MeVYK6bU6d{Hbi(eHw{EKk=v4B;SA}sUb&y5V&Szhs=H7d z(KZ0;EulA{uVwNVF!33R9B66Wle!wxLC5bFQ16@fONffHE|)of{6O5Br4?k={sAhj-jDFbvBjx55mi4=O01$fT>ux*fOp@B^c zy~Pl!ri3>~o7k7ikZ3o&@9uQ(dHbl5_NIXzG#avdje~ynYWI5Z zLUOScsz;cZ0()w)LS8^rn5S~)#e+kl3?iPFR1`P1LpJvZ$h|j|#p#q(gaVlEV%*8S zz%(2k6jwFAG~ppib(d|)G~(9!-s@M}rUKO=hYSlqq!^R7kLeDogH3|!39@xmlHzZc zw^f}Kq8ASkg9~p{#AKzs88hgQwa^GEI#Z@b2y9Hex>~MfRc)romOzfu&M2h|1I+@6 zN1Y=Xwulc70?rWFB-1u}1OzC;-iu8R4V9(5wVr+PgYSdQq}{CA0ST&iN*c;zYmW-VR3_!y8d?ZjX~7QME#)Af1CW@RkcJx1qRu6R<+lQyCkO9_@A@sO=DsWD2p+`A)2onMCj(uKGW>xof@bZjbD?1xqbj#ogSUWnnsKq_WYernv zfZ38r3lsn40s<954bV0%-PV2Gox2 zlT##Od|pY+w+80i)exGlUf)GGI`~W<_p5Wne;s70u!C;08__r|J*yiiw+1WRLhH~X zRM#icW;JpBW?@8jHaz0l=lG34kI2*@&nTn0&26#?TBfU2v8%TbWp*1lqV2#0tF{K& zYcS)t9oevrqo`XvQo&<-=c{_vc3WLG5!C^guqjt{fJ%ZV0;uFnK@4%+s+jDQzYE69 zwdGyTZ@E6+m@jjX4*W$2YR@POqmfEBk{Xb3aht;v?2a&tr6cns^vJ8huaI7(VO3g) zR)l2CQl8+x_$v#0uUE)+(0C%~0pgA(Xp)K=snZ1t)SwEB#bv}5*BZ4WA3{ps$!<>8#8un+|l)C2JJ#Trq!Y7Hz?SOh9 zG#w|n&TWK35r5IEOh7$A10GW9O=q~O1-~t8Fd&xjTl`Q;4CJ1vxyCmP+)6;gkz4l~ z7#Qv)OvQ{V;C=%>20YU0yYHVZ*W7is-B*VlyMQ~U!#X5i~yL28{R zWM=-FKmwdQkRx_-s+Abyc<&jX9xut)EzgumShZ&sV*rY6#b3 znb)iqB!5u{)C1+1-t6~%v}X%bbGq!wr)R&~&UZ+bXj@8bpeHgVc5PcK`&n=Ak2;w>{#9P1&0SF^Gu{sMt6dGH^mqG<9p1ZJ z!CiWPF;kRbTczGz&Qv6j%eqv_3K2wlfnxS{X0!vghlMn)@k1#`g%GucW87-t*H&8Y zc*GtT2F2A3NVZ@2=~|^RH=-PFZ-poaP7gwC5#=yY|AyC~>igHv+VF5ka|Y3n%J!9n zs{@F7Xb?CVak|=J@O5#?%Sa1#tMdx#Bd)*4QyowbaAd}K>~7vb2J6cD{6M?(hV#fB zpk0*&4-IX&P`h?DQL?cXdi@)0m$Tco9Maz)c%mz-dkxz|WwHl{hUH#)NdqX%nj+CW zX{|XWK6?ZQ&&355@z@jVIov*lL-)svi6J}BAT_EvFEEW=FDe=2dmq*wsz;IugBM)5 z8@f)YzS8_rJY$a+GzYQX=a<_n%BT1PQ*7C6|K0ryl#U(eMi zR^R>lg{dL_kh^b{YBjRR!Rjol+MFRT>Bp%h2xIG$~lg)XfEKTcg4F>aio zqC2JMD{@Rp)>n9T)_`kn=UESf>^V^5YlzL$?tulA9!ygrL({^_=LE=@lG`7V% z@`Cz_S1VP_L*sIw1{UNJA#ZPoNuYbE9*Hxt~3jQP4n1SoX*cH?-v(;jM7 zC(67z3%^3H({kd)CZ%ld0>oJ#u;S~+p9v3M+6xEc}eF$rU^z@L>%it~z(RgY1 z87*v)rwnS8w}?Y0BHtgSJkpQa+mdg~)$qBj{v@N|BX7>2U^>9-i6Tuct4-mmD2`+WLAijByPIqPP#R|Qb_uu1 zkm}08Fh1AWb}y)V&A+hoITk=_{!J;Wg+9+Dicvl#K$^uugDf_fSuz)^He9!h-u>Su z-7}ceZ;^WNTcpL{U)o#y7Bh#k1y;b9zzmK4jb6|fB$1b1dp$QZ0P9PF@?c@WxMK4T zg^|%F^i7D8WZ@rRAD5xynV3_X;rXBD4VT-;Vj)??jRs+ZI1&v&vP-~`jd}m$0I!jN)A73TbkL2pzOnRefjCN&NA-beo2W}tkL*-A zxU^%WfgX(QMP8#kB%^7SzNLx}a+-7#)-P-wikrY+f8js|(CYNDbHWCW4rfgX``7$oW8NnpAdB{Zo z$W_`#>+X6uiTH`u2!U#&8ScK{B(WM_707zjCiL?;-$83;#9PCQd`WaUTbJxfDrp)- zUy>iX5u8+^R{9qA+Ujv-3)2Q@&lqGy)Iy2O@n*?;>eE%Pp0v#CJxx(}0n!T$g(z1y z!U98MDYsuWe*f`(NlmNtmZRA=X%s9__3P+|>_I<>2BgM8f_8Jz=hfTC%lDs|%3}5F z{g2~| z_zU_^Zilxg_3FmQx;j9cp`2_(0l0&QHoq6P_P3TVK#HZaOM@^Jh>jH{3GsL)+DK7M zDBsd@`vc!0*o93FP+ODP`Xr7(fK)K|)jDOt_>!>WvPWlwRT7+MnY^aOF5xAfc1By% zGu)bJlL%D@)X>DV>du_S;$+|G-a3$)OPpm$a0w08yD9!S83diA2N>eJ`w9)boRkzc zJ$(hI!xT3Cl#GP*W)~L}#4+au(;&^eGe6X;CAfV}o4TNguP%osTu}lvOxJ*DP0@Jf z8bGKteAl_k#=#r;<-rDb(USfKq!EY)y5kSBsI^7SfK4H%i5brHmJ|j|d;@ntRVxhG zHi<=osro$&tlrFcW-arbh+-MN`nkiuH-&Fi_!u0 z-L|)k_B9b_jx6Q2>15oKu1XDPw9b^txW%TOUOii2dXI2=)lhgA$5f%=W9ycSUq)kE z8ffjf7|YB#xfIo@%kc1Bc@1(UV@V`CX+i4GWaYTj1`4djtE7@1z15~PQU^tqi2PB9 zf%jYwt=~}Zo_N_DXU$v&*0)5GpFxz9-jbktM5|&P>bQlez|>rKbuf(tV*O;x!%qO1 z*RU|Q$appLd=S{2ENRB|Cew^HJRa+L^VivKE9u{V=Vy412G78sRdz9#-=h>;MvgUz z=3bn9?eZ`I^<}MEOOgRUOj)}$^r^cy_BuIwEW*h?&NGjHmV_{b2gJ}WDJK1yK>?7b z3tl9=@qP073*@^WC+|Ogc>nSKQHY=(>48&ms%(2@lv>~7Q*Z7_rKoA~F8nSiAtTG! zr#`Bn<`;8oIo4iK2Z6tEmlp0Ocf^JdPEylhcaDJbpcfRitVYlCXp!6I%>#?(BB>Ul z6)^;d3`wt`gyx0pYj}l@RjO;QQ5W<_Y8e!!2kQ+ayqL$$HAcCI!UdYRVU^8XRnT3) z;*d+_?Nk6FVfkxAjHM)a@3i$Y+%St0TIjMW<=hu(@oIkNnsnLimA3N|qrJgxhPG;$ zetw+Pk5{Yua@@$0kg}_!9}r})gC)?oGKmbm_6h>qwB2A@oL}juiBZG)G7GpSLFAzj zc_-I8Lj|VkCr^SoJDY8KMSF&*>G61ZgYXyq^Oc*UgF@2~Pz~EE*)ky04ZJ9K)I(wq zDgl6~ln;{Vt%vLVnKy9UhF+Y95c}9Be|6GVz4EocOO|HdDXe}2k9+3oNSaTkK*w2$ z<-r-=ZN}|S4csPGToYsVV4I`})ly+YO$lrdQQN6IL~a(duZHdeswaS}kYNY+J?sxx zC$r1bw{Pjw!uj80{qJtq{firrx(LogcBhP0CA$)HY_Uc&=1N!k1nNO%$haFhjyE^u zGiHWoGs$)cx-) zj+?2XB>3ilI3=#kVb3(*wlvN?^e~Oe9E-xywO;6O;@);-)sOSTdIR}qe{;KAtc(S7 zV{=4eq!U><%DA8wQ4KZ3Ay;a|W#8j+yqs-TMf)ZRFYxxgc09!~>9D(kuU9O!Fnwl? zqFO2_^bMo|P{Lq$U)(<0+$|OSwtI7HvsTIqGDOyIeRG7Vm!gK8P*KC(+F|6T z0%>lv8*xlMA#sg@bopfn*HA1y5)G{J|5>Waoft@HIf8kFsnb!%6q8ACqo2+OfOlZXq(C8bt}k zoT{LiBONZrc)Y@-Hwyy;KHT4c74X0W7VH~^`lQV>iEs?{C2$(KxlQ=Ix<{h~&U#*8 z6kz@ZP>%@NCYE-|!1A-5PR#w_xbU+3f6I=9f68|R>XVVzk-n~^B4+`Q{@M3CF&Y04 zbMM+4N0MZT)=weklQh#c&CDeASnTXYG9P4?_()|YN!5HwR9CZmgsE1|mQ;TlS4+;KPeHqwF#LPMkRQy!r4gRvIs&(cDtI?PmnIvU$cD1unrp@0c zjke=T)6=;!+Y9PqyP+Z-mesgp!c zL9w$rFF(I9$69E>y4LZ@1+IKw$Yk;n)T44qkdlnUJ^-kDLd-V$$s6G?Q~zTtI=FM*>i5~{$^ z^>dnRsU{2JbF*+HB;Vj@H@hOFQ%w_%CLr6zB{l~%U0cLiI?1)frC#r%Ea&u=^M~t! z2CHHFyoEj_>_=J=488!#Thy6@)oA%wk+C&F-um^1jm4STVXtkd1got zN_)leZs7EyYKryzty*iRe5K@oI1z!F7!cw(7jba%!m5z_!&2-Z%LnODy})*dcgqXv zmSG_$WTqzmlC%N;7-bxLY5oXr7tlM8>%0A~Y^A1FZ{(I%jOznJ2s1=%!hMO=K4&43_j5{|0oo-phID~NnJLPKBM{FOQJt+?O z9Y2S{hDp@@Ubr<^s4KCjWkO&(kmk~Xqo$zvX6AZ!@`Bc?B}3#b^a6|RJG&;Ja}-I2 z(7AYG4&A9FCADb#pvpyVp2_9_lP7{Smm`#m#mQ?F-XoNYVFSj?f)gsx1wWovc>vbe zVj?63uflvQs{2~*EsnRP4QgN70rkpsj2n_n=g$% zyn7#&n6(A2Pf4rgG2@xEbEduIv`7!s6GQEe56F3zAzY6Yl%~i87Yjxv001f}?heg@ zn^YsXaa+_R`VrGbBKcEVm=>nbv5NLyI~d@m-+EP*Ho{%x(E2!aFukj6-Np9{=&d64 z3S`sV?Pf|hDf68~0R^Pjh`mw33)qNruJfHT0O}FWr7k)cy>}sbJ5U)k^280q+9OoS z-wazWqN~`t4h`EU?h>eHzNzo%23D*CoUsD*1MC6BLpb zo(H2n!?Cx!Oc^qC(%i$};Rr>aew$gueli_7vUx{5b6|DxDVo841Kr?&q8Y+9o!Vav z7_eYA>D6%WC72%2F~*7XSW|=V4B>iACl}WqL|r$t(TF7#s0Y|z=HoIWIjqI3@WFnc zG+`yVK23#|h)amWzF17}l9vh!f(E^Y8|DG6G8xf<)FY4$Hw&iLx|pp06*~!KDAy=D zy4#+74XBR^7kStd-=$HCu1c?1lfK}iz-2&!u|Gl3wPK`YY17zpg4!@8)zXzyT~+@Ov>up)N@> zXBafn&~A6C6qr30!% zu?Mdf%0m2My~|1Ln_3Q2L}$s0&M1Qoh7wYXoautZ z>~p)gMw`?r4eqA5s?~f~VCjuK2sZ=kPj<9`O5^o@vSTWX#sW9aGcPF!+}ff>rBOp` zOj4-Fuq{kqiV=ndWpS!BWkiHHlt(vh2* z5yg6&m?6CBs|BZG?8Cy_*D6hdNxpd)!;_0#v4-#B>(NtJVEUZRmIsCqnHag+j7!qw zyOVegH)b3UH*G8q#f`7aQmIr|%IL91A;4P)C)F~m3Rzi%m1>P!pz3Ez^y2>ih*|R6 z>j+8df3L5LY$Y)N#ylKwf!3(V#o0a(O`27gD&=9!K2zM;jQ zZKU^_WGQ5h3N_&;$7zI-26~Vi3Z8ACNa^3^bU*L9z<87;CaIy_hU~Q=`I7!Q!eDZW zpXn=YsoP$CrJ;HkouE^6x+!ZX0tZp0)0--`urgXiWQ$Ce9w?hi=I0VwI@eSTMyBq8 zRAP4`C}4zQ8Q>~zzywzp0xQxy;%&i-DrwV-6=8^cXM^LV&Pl?|7N%MSs#lWyhR$k+ zenjhr{Y>zt3nZ9pqH2}uxp4s*Vv_3^m7-cmZ4PzDcDH$u0D1UbBiQ$tYlg4yQ66WZ z!qlsvlYrbAx2B{_^Rm8c@(12)yT^N6el-5|lHimRg7V&8QvR<dx2jVyJ89q<9NofX`m!0p%YFD>eh`^$#NVa$$$yk zYH>V2e|vI@@;&I>`E$_&kNPRK!kBo(n5HVQ*?qVLG3#?C&4em6ZGp#$KPyQEgBrS`1(Yl5HDOi4@~r;kkJn{xV8vL4t5+V4G3N{zG1a@?6w(he>EJt?PjL78!W>`;mp8!9uYu>Ptl92+6>_0_CqqKFq;w zhfVZ;Y_@CLZEofD!SP4=v;B649DeU?gPYQ$XSFru0n%%Gi4)MxTM3;UTLk-RIq!>L zsx;F}V#9bgT5#mma3U5Eoo+RC)Bi5BaCHq{a2<7T16DuIvf){r!cXWpUB z#4^-=F|nxUGuLWzTjDqr5s)^~`?5@bjd!XrQ?;lTv6w?*E{*S*Ms;E$s&6*o-~piA z@4NSR542eA%KEw;S!D<^`=v)#r!S8*&{ws!o%+qh-w1&VzAp0w<1K8-Y};qbqV3H% z>GATL96#%7^RG=jEtEA>q6pzmgc;lkVU&{K&9+mHfhI2F5NutR>?+v?^G0cu#55T8 z$Q8wUYzyl#JRTR4;eSsq`T+=Qi_EZNnVUerSHu*|JO_OOW+h%+D2Bw&^JA>ft7|gq0;> zKuU6munEI#TvnXb)|bIs!b)6l@Gr2PCTkR)5lTp42aU1V_KX`_+swHk@qcBmpu|yY z)n;kCd|Iu$o%M?qq#%34QKr}G|Ema zFFuaw1pN{;AbnH|=JCIu@iY?uEu$af14TU}!_e^xq;qKEvpt1*BuCEHC~5ITb;70J ztl?o;#UDPx2>w+)xDvKdKaCcN2tQHMi(_OAiZLs`fhv^`;}C$_-_36?SI{P-=dSi; zr!q_vlSr~xy>ojDEAx0@a1e!4^Mn67lnd;Ah3WxWg6+u)-M3N!uzm-xSHmCO<*x&##ztmo zhbVdt{eQ9#OR3bNXi@!U7zhl>1;QW5?tS~69`eQaBPtUiVXEr%20nG*2!|?(G7uM? znZ;b8h@Km+u!}Fd0@~Ij28h#1LT80wl;A6&(z>gpD*Kd`RSk*W} zPBphMO{c1Yx8&%#YvJwb)8B&ig!VFK3mYB2Cfw<|ADn3(LiJFLEySpg_t;x4=`z|x z4{Lu$xaMj1SO?StBs)pE;?8mNmr~->5t!u>F^(-BEzYJ2f<{MNrLx?X=!KMV^?P74 z+ykhxYs@_IMv-2C)L*@`x85DMax8j)5p5?Ii(%(rChLkolSE67S8`QDS^L6`%Klca z>Qgs+*P_~nW~#iR-|99k?^k%kZ3o%RVn&06_eL6fT!*smsoEJUYCV7pJN<5KQ$rC$ zxL(XoGZR=upGDvk6F#(c`b1pe6bU8)i*~;SeVe%RVw9q1!DCNv-7bQH86q?aNa2eP z0jZsEvXn6org>SyV#oPSQmYsSb)R70;9`k4%#O^|m{sfJEi~Bbh_D3eK-8kXLjC29 z@OY2c;~!S=tdm{0d2FD1Yw53Ne7!=LKO{7)#8X?ZZ$t!Bdy_i2h^P58tx>1DJHXYvXPojrghys8n(y_!v zVQzOW-xo2c?O|lucp9bx(_qI89e}B@NuD!(u+O_Ax>`N`kxo{LQHP+;+@Z6MbK#M@k-ed$&T24iLy(-6@ZP5t?!f zV+0~}RSTa_iG`EBTP&__E4`j8)lGhi5!#UC9(Uucczk+UZE$dKPH%9wVCKDUg}g0D zy|;C@fJEd|;KidV<5?y%=TS_H6cSr6>3eEzJmb-w8LaeHju$}DmP;F5_upm4%T1II zKIgdr)I|`Z1)<~meL>>XU0I4H?mxaHm0FuQGFRu44Z}$E{RXPPD!$7NVp6e9MA>xqTxwb%YRu!aTV6wdLd}ES4ymmE>WG@RvLJj#WIY0opJ!%>Zak4DoQ8FX`|f9B!?sD`$6oViCpA=a4jw0BitNFF96ftsd?M z(a;-^8sk3I4W*qS>D!HY%%#cWbQh4G5(%8N(@t?rimusMnTG$d^R+u5>pA|hWpgS7 zaZoJl^m07`=O^7kU#Cfm1)!#t(qPN-h%UKl1ihNJcZhGv|5zLNf`=91O81B)bAMRg zJ>E*IGN{!@o)Za#ms_gylAq&>cWG{yqfc24q%(cgNBMtPR zUI)Q6_TkN}cfRd_dH}xlu5Kl5X-Dg)&~$we5je| zf?gdqPzQ|mnH+DC2qA8X;zzZgK)}0Sj9Oh3m|i0siXDQxh6&T3m9SN~9_!cI<$=7W zOj7{F18o8$HTeXPVQ`@azNQFSAWQRd~@*opI_* z%bhKHcMr7*{GDSqDxuLpV?-cqfCXW~C^pY$ur6H-)6FpvM_m7w4>>Obu7ki z0I8q~Yyl_ItRI1wkBX>y=2kYfT2GVsF{`<0F|>d`9-~`657Htg=^-LkT;F-9@ivlU z&y?(g4XzP%EJp17GJvYhk(-8h}m*En*PO zI&5T1YAKWVtIa+#M)J27%}DJ7QTL4ph~r*~L6>ZwOU9vySVz1FV7-m2>I$2BGw~eoa#`Iiig+Er_4@vboSqIsEFoSx=T{vy)lrhl8OA3oxIvT$&k(wAl5C_6il4HuJx1O5o53d-0=T-uBcfw^+=l{_&P zjKmgMmGCo7tcg-exVF?t-_yHl{J6=Py*<~IxspNr>ceI!aZV`-uJ=^k1-%(SE5Ja9 zR*VCnKJ8LscVh>ed$axEgAPrahjyF#T`19xR?RFQe7?P)eh}j<5SoItUb}V~qVLD? zHJQ&oWqc|%W$0^|?^BHkt73h>6zkwCQF_*hfMSL{*nWSvRpZAvQfe zIv&~!jOU1iJ;>7q0qdYf6BqY`EcDwPZxekc&M2iCN&J(ErGXx>16u#9r?~}wdFL4Q!1+mg%%|8-2vmSJyZb9 zyi1i@j@WmB2CLjyaOel*{k-_TW6-Tq?*YaI<^(AVwM9eA`kD>lWiXzC38p!k9M7I( zs6UBmm=UiL)2KopkF{9iQeW*h+bfYHL~Q4bL5BZT=Y8}Ji|>J3Tqq|#(6+GE^c=rB z79e%J&M;07tYa+hU%}@t7!NPqJ~&_z?@7#~usOvj)@46YsR4%dD#cUti-Di%2w0uu z#Z?qguNzd~f$C!Tl=N6R&45uz(o|(vBzWnyTOCW@!RuE{@9Fsb7dP0 z$a!K-xl+#K?G{$oZj@8wNZ7G+?C%A=IMaAWS0rAw1FE084_b~lk`y!%XKeGNXr%Xh zpzj^TbM17DwWt%~(vwk%M1iS!;9^QtEmO`G7+fU{G|@ii+pZ5SOs~sVNNiu*y&0mW zam)@MPS^V+e{dWEi7+u4nt~i60bGcgn|qkUzKiH^FIc~qTWJKPrR_1F`==9`ujLAJ$=_A7`Wilqfm>coWl1%-#ii7&|DW^#-sp-#74 z5w%KhFQ=7af~(EihW>&xmMMJNV?Hlf22h_(FPmSGsqZWFN$q9RTe%|23xaC>=#hSN ze^{a8w9KSYa8sq0Jkr4O9;<)sz-OpBXyUFp5ZC^CMFmG3S&mooSLIMC22|-(_E5c# zlV7bH+9TG&)ZBZFAUz1(;hQu3aS^MEc;(c#Eblzq8b%^jWaPUv7)OZ zxL1>6V~OcmA&yuG_k=DR&%;+{lW2zuY7K2jlW@4M_3T8~U6gdNZFk!}n__T^P_{S7 zN8c*SJwaRZJD)LQ90g0Pmu0MMFS&LZ4GBLdhNYm{(E z8UTT|OFE7Rp;T}079e9?I`9n7lbY!@aW_i}hTw8n-2ocH^%zm?0vs!7*x6n?rOq>5eNS|@Fg0fk zQOI5Je|3jQJGKj@cW-QOyPJox=o&*c`_OZ`d|(sg8$qy8u0YvZEQ^DXEYU+ z!55~3Q7A}KAn8;(6YW=TPp*5-ET_37*^h3D5!pmQ#S(XCRf+FOKx{OA(jAN<-(@S-JB8^5T zIyF-bka|2GQP4;H!sM1voJ{<6kq%EyAQEc(i+M7lkSvTe$zWPz6o?5&d&MHKpoddw zIW5-P!A=GZ?p~T})Zrua-Q*xvh`@wH0pAvw#BINwobPIH!&R4dsW;U&gen1cQ>Lgl zV%f?wbdOkr*FN@)rma&h=`-Z$E@;xSK-{JQy6mBP1cn(pxRNp)uQr!gCvBBN(L-VT zy@20DSnXx2wMf-^Z9+Ut=fNzn?DY!N5RC0!>{ge*!{3+C_u(h9j{VEY|9-&=!=Ii2 z7stiTLIyU@uNsv+XShh896L4}UK9|RAL4H!=-`TAo7wKl4yfU1ii(&PA8sp7C4JBx ziaod5-OfGeq%Rd^5G_=1)&7UhjzU839+4hZt?T)o7cY{JoV@tf0>?zv`~z^#w!sEooqu34QrwuVivd%Okxbqcym%HSY0kBJ=xrV z>Zn7lG_GPP`WHRGV~~8AN3cwS>ItHeJ+>esbZ;bakAg-wW!#D0gbUXW$*pnk>n8u)?moF=NPvG95~WI57L9~ zhfjZgIxv@GPYVo)Xl=Sm833-A=-gqoc%H{8rV7*pv9ZF?Vzs}A&Zk93<8AbKEZshm z0C95Dz6(5MyU=~a7!8}N_jteX5F(NX@p8bq-(2rc>Q61=X3Ki~hi@`oUPwpa;{x+% zm=~OflMDEoT&bsRPF&zQO3^yMYvC_kFoi3RZZSAG?PSD;a-e2G0}i^gxBBgXdO%$= z_3*@%0#QLS0vC4nJeGIgkyD@dQqP3Re3yr3sFAyp+0(Vx$-a|}bc<}9J| zt0FG*M_QPgGr2Tf>`$SgyE*>hKfgTv`17xyzI5Muu9aR9RLFcyUkI`G)U7SC#p8o? zx2R@G-KFC|y-O?ZzRV}NpebPmv!U$4vPBO=5RyT96=%MYD=eZa-WYeJ^~UByQ&$?Zm%H@@O6T<*$co_v8v7 zAYOJfFW%n`P|f3JkQWK=#K)cd;M;Y1rjcGyNYfh-UVoPcj})CB$upM(oe6$Uy&}V8=5{?(a7Wh? zCl{-qiCjp^@z_QLC_gUPkk|^}1Y&12?Qm4vLjZlTe_N#skd!En9_(MZ_t0mM&s0wo zB!tK!-Q+bOjgreg3?j&ilfK!)DPRtl zb>-v1MaG!xuVE`v%tZWZcbS=tM1#;F4562?rl>~?3!8K8O_0CC*!M&Wf*_d zq6U;q1|Du8r9bH_)Qazs! zdPzM@w&F@699|iu+Dlg9OydvYE!aljdDmlV=Ze0@Ej2-1j87AAsw}oQY^OdsPN? zeX;DbfOJ5;DPO45!QGy`GXPAVHV%9|KeF@gmYx`tD^CwdP5KsKclidNQE4#7X#>Yh z#jM#JO)0xFjSS-7oxG4-h*Bbogrt?o)Q4p41sNNyQV=w~lBX7AKb(}Oq6idQn3od- z6v$faUffaC_7Gk)j?Qguy&$OepIZv=u3S=9Er)61NRxDV0U~Twa85kr3E@tiF*A&7 z^skTrt>KwXtS9$~5h_fp!@IMljV}*8lUCk&_`ob!;nlP3rvvqs{pJ!mHt%kbm^q|% zdqfq$rM3F7MMORjPV)~hO<-r#zWYp{nw4bnl|GH}i*pMfHi|tprLD@MaMGD=>zmX) zYRbS~lD-G&%)sS-0%HZ7z8QDCt3Vt5VqfmH71%TW$9oN=)9rw;sv%xlu&vf3q@MS; zivuDr)E|y>OeDm+8a%@p{(<{*;G^pE)WP-Id@sg8Ij779GyEJLp@^dh6_t-YNH3i} zP{}+U$Y)xP26LN|un{Ri$sS0K*)+TFx(k{Q-7Ua34_TfY7&kx$yqSGxe~riR^QIv%$Cd8+BETS zk+hv`6G^MTDMZSARBo38tFVQ7WDFVh1a#2g=fs|QN&V3bJ9kwMO`hNa)9c7;f>noD zA!O<1&nhR=wvo7{=y3kOeR-#k0N4K%Y-l+l9`W0jsBb51} z2=Pk>rByP%Byp6T$g~#{48VGqpQ)Ljxp9GVK=p*PEMRn3w{hZlbhr|S<<->e9F6!% z<+@t##pD{dC<)H>Wjdyd>7~}%f7fSCkT)GAHVdpylB@ikm5Wk+oz*1KwYHO6F7+%^ z3)4q}gIIg;Kr}bPzjv=@qe@gLFc;xp(}6$5to;}m<3Q7Ts!V# zVLuaTsJRbN(;bS6`&hcsRfDN{T`6AKaN6rWFof$d?DBGfpZQIwx|DqNOgR}Hvw-W! zhJ3YFudC=CbRV+1_Z=U?^;ihVpjt)xJYlZTpCX$c@22SfB|;#8ePbkqAicO62&`;$ zrNljUc^}i}l7ZA*w#P`S)OUh?h{(xlNU7O$`{F_^l4Vi=hHrm~0KfN`w zAWC%$nAXJtAhtBibOdXpzqAd7em~NNK?BP%a5O_K3x6w^yBa5KmPdi z`SbSam%n`c{25`yen(Z(>bEcJk551S@pqfg`+xi4mnXKy@5K*4{#*RM`1MbJdiq6x z{jY!6J^dNa`g?!3|MkJpd^LU-*gh zmJ}NnJfIdToIAjCk0e4}d!H_AYQT=)~G>_-~Z4dIOVD5YCq zYECo0GfeV>P31&qc5%A|pM!rYNrsr+%qbZmyJu5tXa?Koh3yEPnxaRz>&a0ckJ#eJpPqjB{N>H@%khs-fBH!3 zX=2DFdxFoni9JlS&`Snth$8e#sNF{UXO<;)pp{Gy*WZMG;687eEo|VvMn%K4qSYMcYeGh?^;Xhw!5|>u57pT8ASf6_-rV1^rTHWC>{ujx#RD9#&tQzXDOMx6n z2SOI+^;O7#xPLpCI>b{#k<9+)qGThMA%+g8pG{vTB0>zuiDQIQ$Scu8^llL%DP|7O zu~~knAUcJbix@8Z-Fw_Znpuf<(_}QJV3qiyL)vS3M0i#&mNk*d9S6q=CKb>s#say- zV6=&KUovYYIJ_K2yo`;&X~rSVMSa@mPvS_I^*D!RQl@kj%&1N8x-|d~y2PhkxW+rW zpbs29hD`AgdKG`P_39&(i4+SRFLw;%W$xIV?n~n=l1%Axb(_wNhCBP(si`g0Z{7~> zMtXOB86T(XcgH5VTZgP7hi>Wl(*1p^VaC*uK}qszmu%nn9vEq>bu9DX`~lu zMV)AJ@k*35o3>;MIP*GP?zKX#cuo+i1ze5oanet$licinjJ+*6-7)l{qIk7v^}{IV z*H7PonRP@&VgUa$Q)&M^;TlxgHuTZvzQN!3AKDZHw!2BBL3Log7W+ebe*YfU9B{V@ z4cfQSy=A#C~;Y6CEJURPvfr!ogOOlQ#}IfdOs`m$w! zof5n#Fi-Y_?CQz05Dh`QTiFZB$zWF9`UA!=>aP7XaNf; z%TJ&e#*{s0jh@}`LK780LS7Ii)w@p)@7UY7^DV-$0!!*Bh1~lq?bIh}{-vmdDg$v^ zy0YekM;Yg7u{a;7IvS8(SZM3;!N-&3aLe46s0kKl*hZ8GnvNiq^+};GtgEQ)Q97{# z_1QEbiroS~MmS?G{|uMwm^IM!qCM3nJm92o6{;-c!5Sh%R3f3t&06Bs`H8Qw=3WK)It zht(*jwy+_wT{5UP2L2~$FmZP+S?3sMZ1M3BadFW^0T}@GF1vGNlgB$JTncMNS^6Cu zA5Q~P!EaYKxs$(#|Rot{Ky_yRwH>}6dV}D4Oc6{^-PfFQ=!Jq?E|O{Bi2ie=0MMa znmK-l9ZJ#`Ps37{OO0EK+wuP5IiC{)>2vL2;Fpj*r(4hQHcfAxeQR`^(Qk*Ty-t&J zx(#|1V2k~*^|%6QKeaHur(jb=!x4pGhGW`fW&oc;g{jtGEnD0ws17X zwJpEM{T(7C6#6f0n+7ekLb2BnB7J{cm20RRlOeng%|zdO-sO$2VG@1|s3%0QC4cj2 z?{EHU%ueH^HOt_kFBkW6^KkJ!5{TZ}PKbLdWM&nt@7vKf-rH=SPF{!=79f<3y>~|k z)SDztg*ymM&wKfD3#$V^Hi5@bZ>V!{K5{g|0Z^}FEuA+&YeVOH-taa(Ob?_xZt)J? zXehS

7Cp3` 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 z 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ȑ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

s)vWOvR>N% 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

a| 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 literal 0 HcmV?d00001 diff --git a/L476_ats_blink-master/Debug/Core/Src/sysmem.su b/L476_ats_blink-master/Debug/Core/Src/sysmem.su new file mode 100644 index 0000000..4474c68 --- /dev/null +++ b/L476_ats_blink-master/Debug/Core/Src/sysmem.su @@ -0,0 +1 @@ +sysmem.c:54:7:_sbrk 32 static diff --git a/L476_ats_blink-master/Debug/Core/Src/system_stm32l4xx.d b/L476_ats_blink-master/Debug/Core/Src/system_stm32l4xx.d new file mode 100644 index 0000000..0ae4bf9 --- /dev/null +++ b/L476_ats_blink-master/Debug/Core/Src/system_stm32l4xx.d @@ -0,0 +1,25 @@ +Core/Src/system_stm32l4xx.o: ../Core/Src/system_stm32l4xx.c \ + ../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h \ + ../Drivers/CMSIS/Include/core_cm4.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h + +../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h: + +../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h: + +../Drivers/CMSIS/Include/core_cm4.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Include/mpu_armv7.h: + +../Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h: diff --git a/L476_ats_blink-master/Debug/Core/Src/system_stm32l4xx.o b/L476_ats_blink-master/Debug/Core/Src/system_stm32l4xx.o new file mode 100644 index 0000000000000000000000000000000000000000..31689d870eb7b4f75d8736612197fbf2588ec756 GIT binary patch literal 906524 zcmZsD2UJv77w+_#d*@E?gI!~Z8hh{E*rSOWjXk!+8e1$;1O!1;M3ABs6%oXOqDT=b zDkw@-iXez6D2f$CZ1BE4@qhon-g>O%-FKI7?|sf~=j?OF9it|U=JWZy|NQZJ?Ro#@ zc)aSH3Q~!C+6>zBCh;cP^liX@hks<-7XR9PJ8uu#;oJH5pdG)RcLMGF?feJOF5k|( zf_D3M-W{~Zw{wcu>)Uy6&_3VJ`-1lScHSR!z_;^(po6}h4+b6b?R+Tcuy5zXK}X;p zk0Hx{|M&u-NFtRn#L;=MGoLq9A>`RxB}jnd4IQrH**i7+7o*+6f@p`Y~^Ts~o z^Hw|%*k9zGGmXDnzq_k(+=$vW!W5k8$J;H_jT`ZXFVxM~jOVrTpRa~QHLmrWuxYJp z)va~&x$%>0?WY#aXCY_CwXU^?OiGpuMB^vF;Vtx^&r3`gJ*Qr@bnP2cfQ-Dl+OfhnD&f`z z;`Zosk&pKEFcERdJA`oHJmvMtO1Bj+WW35~Yw5DZu@_$-929+KHg^3Crtn-@R7 z|MGa77xg&Zd|{c=mJctHMf?73wPM`e-#*WmjkhlQysXtHVT}ZKyu>Db{-=-8zi7(8 ze{_xMTH`NL%;Sk{XCnUZ`C=ZY9LMABD3#en|9cSdB{dN;p0M*{0Z-78Zc71Q7JE?2 z69~jBOCS?S;|EE3Lbv7;o?zl^(u>5B&5-0wg=F$dn?!m(mCqB%#QNa?%A~b>B|MQx zynNMqSWBm0mhgnt{TQCmOplG&0|yBmgaRF(C+swZgeQn!upfNag~VUNL6SrVI+MDK zV))N-ePve$33;M8{tXCuvZ@|n;`vE97s)nH#qo-bk;$?{8J;M?#&FEE5mR}ht2Rc> zj36e_#^{-8W2f*$N&HXnY?jH!iFu-Ao2HGdVFa3xVq@CN2L27rH5=1OR;7^fMAvOh zSJ{~rBA)1mjp->XR)I;iF@0q>d;~mEnvEIAOc{-!H~D%2k2jPVNz5%<6UH*bMuJJV zF%x73pV6M%{2yR8MYb&w-tO?nf|)N%n1J?V@F#*15hm@8+?G(Rylt+!ZHs zo|w9crT$UD*e2xjB#jV?Nnq1-_>V@&lUQ&rCV@>e;y)S@Ptt=lBw*o^Yh^s~KoZ;Zk^j+4d6Hn# zxBgAS6AvOWn+|;TfAn&mB#HFr7~lt!Sn4Y|D=5Gn&fs!NA_Yk>=gDrIlkgiwN-+_s;F`TSuB-(w^#;9cjHb8U9#^`0U@y3)y+ZeM<+6v5N8`DHqqz4mY zV_Mj*h9p)%4Q(SUDnt5lHcfk3Sq?fo-o|v2Eggn9S8PmISsJdOB*BL1DSOHn@FZ7l zn!d8P#3b67fwIV{==mfYGgOvCm}DDfq^t$5sU*dw87upW{*qj?F%x79Hvx0q#!QhF z6Xu2u^Rq1CCty--nwheT#H87n-(+*zBhi~SX1;8tvzRBjWyAa~6MDj1x=pi8)|P{} z+csu}%o>9B+_5ohWXwcpGHjUjvT3v6I@6~4TQ--NEE}^;W?zrq$+j`}G96)ZY#1lm zE4=e1xi-yiSyR&7wQ1aCeZ0`Pdp3;+Gh!MpaGs6v;&J}|NG@MchFd@-<@iS z$HY9Ie*MZd_`dS#N(&CGFjQ?2{+C^ENbV*5FT2JtJ_ru}W4z4J>i7RK{@qX%_&?hD zJY!`6z!xdr3jE_A;qf*6@02>ZP-&<9#iZe@O@6~o2-}7ymk)*%??)p~sO&EvApcQ^ zXYQLE%@+6KkwntgMx;8vTn;NSA2ONZUx@feU0*q#7O*nX{mZg^{*O8`leYx43k-w8^rA_8opLC)a*0dLO?xSf6I&v4gU>ItnmllH=O)`aOk!+_=l^AKimZ0{-`_Y zk1pf?{{8>tqJPm+vcuI9{wDqR^blY2?@1_MByN#%Tg(%-k_j0`%o_I!ctTDfmZ%)@ z5tOlFqjCg3ZB67hd(rUcD^<-vQxCzF6Gi;t9Nj|Hpwyy#17lkA6T;hJ@g<#ycNXEe<~|*}UBt_lH}5CH4#u+}<|QVRw@$X> zsLgcVzJ$E(I!nhZWpw-{i;iuck+)u5={)cpS+2N3-a6EhH~((rzcE~Z<3C&Iczhil zpL>zK#V=(4c@Iev=!3#jX3@E%ADuVHs9MYmODAt9*V#PZrYPFWH9w(nrlUY$qS z--eRJeJe@!J|LTQqse}`k+5^$Q4}XzZ@k893-{G{LMdKRZppac#XPqGBw1>^>(U31 zq_!zxJ@(LXLlR}R%s@wzJLTDV6de~jkmuQA!bW`{&!aHp5%azXD4#KLr1d^b-e$EW zKWXt4u|Y|GD)Cf`d5`Kz(sT(Of3x*@$aV5yc}&O5g%oAVaPkmhI}dXvOYcl-srnGb zZJ9=XBAm!(<1LCf>p0nH=a6>pucYm~mAqXFCvTZ}OcBfW1hvYftXi}pY+*c|xA~ha ztzm>s&LR8nXOi5z8QCmdNuGPF>1bI>u}<4sIyQkMFB1thzcoc{&8MTe4Pl?#a=79^ z9tuX1yv00lCt&-9esjHzRM0GRQMGm?TN_DW4x~_vgde)QW_b zB=4jpKTp=t@x)s4^Ljd2R^*W6bvrsvdr0<8ZN2nJL+3hoI^M4!5BBa9t4}ME3}`|2 zawn4fl}pimj#5_9_+X%aY>1D9@6>fa5~msC;P5X=_s*XJJU&$OP0{l zem?c*v6XcE9dBIR)tK(!s(q%+->o9asu{Lc*sj#PU&+tI;}pG~rSl6)I!_ovaYt<< zKmHhA;2DXfqi`ol9yg&pRaeP!-)cI({*iLNxr}T&>*+k&_Fl5~qTXA4oZ>FpLvb05 zEyTS1qlAjGUB{l=DQ@6cLgmJgjlG0ya!YK-LF99+?YduEPLgJeD2Hv$>6jixp1Uc@ zhQS93R7K|>yO6i<+K^;+4cTP;O4ucL={z6fFfs2z0G$W^d)-fwW!_CfZE8x|NBBS? z^JbJ!##-{}zKU%2EF;OltJJQPwPdsK4CTKUQ&U{!dvpx=hx}aonQZRaTHVb|K6ei% z$?wg`+vG;Vdf^j@`vISJyaDc0J}>tYHn9oWT(rG&`c+XxUVqXqDks#SpGoV`pRhmf zrDHeSQ~%FIlJh;uX4!T+&!0`Gi$N4uHiV+|*+m()T0`gI7=T0mgwAJgCHufz)TaS%lu~> zilyVVAd(DlByT~z=@@c~VeQnQmJStguj>eG97)-Rpyc-yC^*+n?-zV@TWOB=yyOo1e`lI@fQZHonIE3r|W2*|)$1 zRm_{vgpNIIU)WRoDXwEX>Z=YlgnH&q$C0`3RQPzjXq5*CuBOD%c0(4MlI(gt%J-jq3HbE2HQjkR6b zhx5oLMn>|o2+H}Z2Suz7q;ou)IO@vic z&nhu*;~n25!*OsAvbpyLQzBmflcb&1K*v+n)DJ5blAoit@!NPKMVV-OzkRT$ei*lm zj_qw@6%X58cfs}r_i!T1Pqr(y#`Y{Uv5oFLb1Bv)KJ|>ihx|8Bq_&6J#si)LYH1#3 zM`B*NE1id95{Pf~8#>1SB4 z%G1Kj>L0=pZ_OVe`r=cxsp~cx#dJIW8#3xX`yZV5c)ta9JzLmZew z49HX3;}9asP8CDKMCM?ePo7$;=&5dh6Zeh8k-v^G{8{M;;>y2y2b>#! z4+rx-{Bsk~%YpnpC*drJucJIZ@ZKey@Tmh z-DmSHNQS2Sz-CNc1MDZ?pa*EyfkWuS#iL$8zN-Hw*l$>>hJ3qh19c96Wp5}v_{;5p z_Tq1u4TB*5pEE&D@dtN+FpA$|Eb_d>x1}4+x8-}8Z%a6aZ_7BAZ%a9jPuWTm`IP#< z&HcF%%{AOA#nH085=T4xLL}RAFU>K&+bPDe-LFrPPUl1;da;}L2Aua0;As)}bD0Rq zpgAWX88V$_H6vr_`TxdWsp9u|K54GM7n{Kk%mag4vt z6M*A<$JQVr{NNb$+gW~LSGsZdAI2g`BtL+j$Qb^v0f5Kyb1OmO_=7f~0oVEUivhU7 zZ)b*OD!=0ywBa5IGIJLA(R1k{7(W?-b_=@pfaM{<$o?Qcf&_Z+`wIN%Lmes@Ac3=!f&@y~mVIQ}-BfzRJPK0~{r z>2e%b4_prHUmy3OAsYf|IupttI0#0k_}&)~`7GZh9%dK#+d3jrG{0&DI;BBUN5gZ(78yvQ8(;Kq{hm3q1P3(nnCS1(v>oQ-|QpUr;*@CWi%6qLD#>;OYwa3>0j5 z4KKk0%VP+S3R?QY^0=VtPqa8h@Pytqmjvl7Orixg4N^`qX!LHM=EEBZ*9^50rhbgKj{YN2~BnA;wKss&%-5%#5E+FH}h&+$n7LGl-+m ziEc9|;oi-FI}2M*1aT4iP5?YiSW}K%!iB}tV3I5R?K*UKg;Rk z&xHFMz*PxnP`WRK1Bp}%KT-5o!t*=f?6q*-_lWmacq#==c_;jXiWIfNLG-A;7kbb% z@Plv$U88#8MEX*E5;m&<;Ir^N-3(uaiSuF7AoNAyS-exU&;ZUs)Grcbm#BFYWacdL z*@bw!MU(d;f~%4;Bcvw{H4(^Dk*EVp0q7U1UM387AHRY%%whz)hCK{`Q$q7-L z^++OA)b|D=go*O0@)9mu*%yEak-QRs)1uV_5$~+%_9Y0W>#bN&SU zqG%M&!Y+wgQqd|#wC@C5$BH`RO(BjKMa+Wb6;b0rH2SLO3}u}t8svrcC5xIUpi2=Y ze*)mTXi;x?xgk0;1td-6`3Sn3qPZtvnJ&^*fV(ZyIw3-aX!sJCWQrD60GBOVCx9+T zWLU=o5(WQ?*1i!n z*FgAIq>D#{8qv{gBws6HqM)l29eoen2a)qIIQuAis|5KZ8b1#3FQST2;J%9d>BC|# z4rq=fa3972=O{k%BfL0?neh-hi)$C6BVELLH{e{wM}7ssO&op{UEnSj$YHrxJo+nK z?-!r-0Pzra-U6Jbc=l^>2gPFoU~)*@!4nDkh#dz4?k8@bkCnezIRmbbh?PkY28f?b z10YE3^e0>gi|wfBcTAiZ2i$S7o=PAm#J^BgCsaIy0O8^&EDwrLiM!Fj{7=ju0tcFb}vW@fYfsi{jT}=%U4yIS6}M>^leD6D!{Cj)ujFlcP;3$9Sygx1N5#q1n#55&lMk+|3y z@N%*J&j|EHJgfo@s}TFpg!-v?41J8BiJRBKi@iku3S_5bP7eSaC5uG}g zwY%WVMY5DW6|RzU8Y{U;4&MN`SF-so0Q)4)G%-IQ=}DhDPsxKrzmdncmRdlU(WwK%T@k z4qSmGiwI97 zAHN4zDLK>y+*8RfGI*(yn8w2Lxugk|T3$-t{Ee(%NnB~#^+qxjOQYhqlA|YptC5t^ z<6A4)Ow+s|>24AROP#I(cT74X3eJv8AKXTsC!~?DkW#30&CkdsOzOgbgiEJxgR=Ewx(%le5whRB1ma&5noey!449d|r?`(h&8cbS=&NFG+u(V&P?J-#iFor2VNh z6DOUVhOqI{1yp8FkZz_K@>S`_-@qkFH`4`3mcDR-$u;R$F}Ul}wsbX9rJFuOm?rHQ z0n1y`x@i!mOINf&E_b8~43Wec(piCMW|s8hFtjLJ+9U;;hl!NN~QO_;OwFFd?GB%rQK&C-N#awb_iQ39lHvypGx2EgUNGg z0tfDebaGdOeI<3LhxxU%xe?CZN=qj}_)gk*2!U#)^Qo@*URsOgMDYiy*aA{7^^S+| zleBRPGW#q&O~tLRQvFWg8l(;>Aoj8r%@JXz>}pq7I?9^Sb$62W91P+t+hd2!Tx3m% zM9GSK!t$cbtvASJS?C-jA0umwfG%Ek8*@hS6G2SZmOYoP^KDf>v}uPRx1CUv>Yp9U_~vb;CoUdrO%Lia}2oIclYW#4%s!5SHl zYIC)+AFsf5ovdLGxDT=#19JH&`;Fd9pJXdbz@&t37iY_!$*X5Wd>74(Ty4V1-iY=G5QGaW6q6%@Bs6f1?S1ErOAvJ z(_sjD$(wmbqYEGAPpU=vGCm`q^JiB3fji9H-hkEyFo84-4P?TcL4uhI1u{FzjHM?a zgz=(5=?NzI7^0tKX4oM@7^9eul+u`p-{B>lnMO~*ZDupQ3o@7`Y5+2sRb>d2&CD7N zXF1G$Os+9jE@%gnJm%pwcqw4EJVa)N%o#txizPGzELcG&u@V#VlqJubO#4fS1faen{dqbG{dJZ2m^3oiX~kzJ z8&4P9f$b-SGbh&k1}3}M=f1$Xu>G7N+|BlO03d{&;RWFdb}qf8PO=|%!ZM6iPC~by zVu$QT5)tgZhX{LyEy@GnEc-zST_n5k4ZNIZS5Q4Sirs7lcabeR0cX*yyE_1vS(l!$ zjAftD03?ph@<2*g*zPDAi4)kZRMkmhm(xTpnN`yI*mXAA1-cuo2PKilrWFBxll?6S zuG3k|ay0BVTS(7l2D^g39hq$0Zg|OIfBg}-T-Ip`aQE1C?~!L7yLk`*1#Ej2goUh< zs&z%|g3AyVv-L56m#|F=!IiRgRN*UQ&khIf5qo7FoIPf<76I^tJ?jUqlKr|5fu6F? zsN0F3vv>Q0ykO6t2H+*T4;w_puUP$DwBZdqArH>pvhQ3#YFO(=z-!q)VwlvkGpGkY zva(1-KOm1g4}hmUh3*M2xm_**-g4mw=zQeDI}rNHcP0YvFRvGa9F{v$Wj#QCfXYdM z@>zWV2$nCUH^Wi+J{s#Emk*~oP>5VWZ_H466n*qh%Dd8lE?nL&50@P?Oj@~3{tEK*+a6v7Mgj;CN5CI8hC!f5$=8YEtpkMaf=EBB}3ZJb=Y4P1g; zx&peZ@<6gol6xM6>tuOpSEPGQezXgcxGw*44qU4I&L!y5me-B}E?0h#KG%2UT`qv+$v;u$E?<6OE^vkNMYM!+Uw;1x zaK&=fKgjHXJoO7qO693efIpPa>;>E-xsDdB%H>k>QY#1ua4LbCWWF^WegNht88rpaqA69FMNF7neL1oHsX= zrm}~)pC}g}ZX$jEe7X4M;QTld-QGvI>2yyxOem=xy}u0 z3THRCM0yZXx$o#ro5tO34|0>UzX@`S3tkA4&K)G&ZEhYdwBO+-Oh@}NxK+gno5{^; z4lf1V59bh}kegKoT`|`t667J*=@ML*arbDk?-3WY8>F0*Z$@U1xyjU&CtU5kZ#9z^ z=~P*5l|LVy&^om{ytQdP0Fv)|79!iW8(YD=UF>0K+t2?C+73@>G4T7(G)eE+H61pc zW>IOQvzsH%fA~EK*>!m-hE3OJ3t`hOf)=&9kD|hJkBGl<>^X8NEPEMu!&~omO(5wb z9)a_|BT{kfcV+{;^`D1wsdzvS+9EOV8NCDtMbjfVL^T=5p_6FbG;GBw*bLuV2knR@ zdmtZ~vIYG%{?BQU&&>PL~Hq)Ilw0zse4a_L+4LbjJm$JMew zs-Sx*v!^M@E1CTPaIa;7G?jQOOTgw#@jKbYEpT5WtNsyyT3P3r(0!17pk?EFS;ciY z`y}g2t^F+XlS21Z7IzCHgAfZm=Y>H?qUXyf~7OV(7@$&r&n+o<7I`< za3+UV9#1iEXxS!$$+kdun$f2qmov=$p@@E-nPCQZf%#Gm62+XLUb@Jvz5&;lm=gNZ zL^GiV=q@wo7C{)pOp5}EWrn>&*f?g=Ug+W(?jZtQVdjkhJb}pygUMCq1l1Z68S?<- zlEf^h$1Rz0jYU&Zn3j#uU1RP=0&tyCBtUnA=})uMRK`pzHfc=dY3Ob;UJ|&z#blMi zXFBtW*12voYs!%P9p+YBv?zm-EC3*rxx5Tq7PFxUCfSUMUaUFHpGkn0roIZKo~a0h?h~VXgr;yC)SC@FjdTyOVwzL?uuXa3d|5~A0u=kPzs!U) zfA(e{;107%Q{W|#y{`iaVqd?9WiT5-Q{*uAtOL3roNY}NwNq?T1YAe3l`b$j&3>R) z_Ze2$2@%e+dudF6j+M}3AIa`2fwS|ho@O@}*eY71j$)5d*Ii_X=fle-cKTabMzgK4 zWfz02m(fTmhK(*n!(!RGI|v)cPLV}gDIy;PZ@!VjKctM!Te$s93yMS(#x9kO)0KH@LlVMrI zj?95cEgMDq;@-1clHsL}4W^#>z#gORWcBQdg8+PF8yCXMC-xWYA{2jSn{EK^3pw8?J2yjLkw@{qrs4{|_mUk0C^@{V&s z4$711i{K?Mp)sM4Jc=%{uiSS&h@YH&jE4EkchPpE!}6bLo^V7yie?)D@?+~j0_An1 zp*t$SbO2tC$%h>UcU(TV3YI72-IF0aDc|@8!f<)&6hyct@AwqDRCzU(z|-WLX_f1y z{D}zhZpj0ZdVMGd-6H=K=S0hXeysCH%|q;Kwh1Lu!ZugG>g73pGwo&BKcG-)MJ2I z;SKJAJR}w=mB?eRqIXN>gWd!FP+ssoxH9=4e;~pm`KNv$zA_oQ_wu-424??X!Ge6L4STJ7Pe-%E!=@ph5m4m6{smU1^|a&y~>@m7UzzO)zobs;GeL$bC2r z6DRI61Hdj0cN^|H&XvY~E?oInGk5kf$M|Z%43M<#kHWSi#HcU<8 zw~c1zN4O@lpbOygrou9iYoSOR;X3w%?ix3OwxeF>I`IHc<@7?B zq;WoHU~-eYLhr0}?lG0;ZgcuTc)7#*hrlv}8?y!JW^xi5oMdq$e?m&xoG;B2a=FH% z@N$>?<36~1T=XPZ=5Yx$+{)*+ViOBy6uZ{~cb^-j2d;>_Eke9vZuCI_9&oRJ0icA_ zEQ7F=n{Wh4JmmZaf|PL@dg98tE_31KG1qB1gipA?Xp>bX=Rr$5Pr1ePfqusI3xcyM z?${Bi;+nL~p5=+%Q@@e#OPoB;S3b0t66#;2!=4cs)108^}j)4&8j8xQt&A{WG^kfj;}fxzpOyR}RaA zcsjVmDp=YpRaOSU=OqNF!tM5P;py25B6sQ=;B3_Up!w0T|6_cs~ zII5VM0O2u3#Sj2O6iY3LcS3RD2bhE^-dQ0$spukyFibI#UWeg|W)8reR-915=NUx= zAKY1miry&a6jQ1YFH+$=6vFe0msI|bQrsv6cTq9(EHb;KXqXEUt(dhKOiHOVRHD zgxQJ(%h0eK#d9i*<|;-!Ma>TAsua3g(7jNM>I*N`3UAsj^-}SPMo+I43u)=&wIccp;=NI5 zXp2sbqKfwG*D6NRsN}sun-5`~;tnkod{F#MW5s$!v-Qw@Qq=k*iO-6jSe6riQDo4n z*jGi9lW^Uj*h7WUMnxAI=DYxga-M$l(D0bgtKzTJ?M5T z{jQ;XuFCPgFmY3+QIU3!a^p&PaaX!0p(%TnIaI~kuk@mijfb-87)%Z*m*@fTR8FHL z4l0G+;l)dtk_F)*v*3J{4E-j;Px)p6y!b1dgn&D&bQpvP0m_)ANGVXc zxIMfCDWB5r#9*b4_PZQaE~hu&F{O7;=t7j0k!Ar5siU zpXtg$51_lPtf0Z=9i?n1yksbkEr6Fy~RHM@IZOxAiR_)$J5ZSR9U?h z@G@nuP?$VY9-&`)lq=I|jPh6+vIW8?$}pO)Yr$)Kj4)9v#DOv$} zuiTyvK%Fw4hVCDf0rBwpQ90ZVS$|UQON8#TGOsP#_eB{-)7-DhrdtuOLHYgfuxwNo z1p{ZV(u-iZQ+2HjI0sesQ^a#rbx8)!S=F~MOk7ke9AL6r^@LWeT~(D2;LJ@mSOKy} z)jkb4cU9hfq`ObWcZcPEm6W>2Lp5^%00&gwf56gHwfT3rKB)4gd%{cA^A8Yj)sIq` z_^6uD7G+=6hENbcRe2eRzbc;IgNIe8XTjMK)wLJ|3Q(yW00>k~)4*r2Y6ewDj;dO> z1UaUweVsd}2~3snqnszx`3@Rn-(cKA$J&7e2RZB;hy#JHo1qe@h! zD&!UbS*q1E8qHQcO@S~+RZ3gJa#b(pp+$F9^ODdL_f#oEq03X#Ua`uqCv*=~J)o~Z^H;q$rb7R_N_s5aFDUag9&Lxh*Ah26ltQk|x1 z#cS2IR0MjX8mNTjTNO){|RnNA=vQDM+gYbiDa~8bRs~V`R{!w-C z833PDC}811P|c+g#8*|u3XlfXpZ-X&QI(}f1bcNMRT6iqi?N|o?4X|hI{=RAwENKQ zQmpL+G<~Ts7G=(?gkg8-ZdU3;c7Lljh<4s_!S98s2>%=PPfw$Ep{dK~v(?D`+|pukL;u zCJE{;{UN-n9{T{6iR$Y&V40*g(r(#g^^VQ;A?P|fPLx`Qilchoa%y93l2DX`2`n+}6ysmDu+B+K&^3~1gQWdC&aL^U1XVH?$eKnsCVUfD)Yv_({EM9^jwV{b+UTi`wW8+*h?9 zm4F-69fu$#drdKI>D{UMV-rjqGzkg>a@34WgV0Iy2mOv?m*z4R`<*ozdtu_DDWa-_ ztA?erh?_=7KfBqZiKVLhK8>LS!u=XY8UcD}UTp?-h^7O5!%t{7&`j~9=Fmjs5~ev!KO+g(^dAS| zY0c?-@N!18{W5fCH80vA&^gT}s=`HT7RA8iyoOs0azWE!E-a%oD`^07QRCMMCYLnh zX#F!9n4knSB# zr!>GbG<|3;lc_0_!6Zv_gYNQd&5yJ&pQ8!911?vi+K(jeYTEMvxTk5}0Y39IvsQ!T zYyO~-e}U#EE%Fp=nNL@3t$Lfh#cXj1ONH`Jn%u?6?5pPcEN~5)Ut(d>s1eY2(_UMx1lg(8y@k#} zo81du9JL2yA#~E#gdzGat;=`XM_Y9m zICrhXW~94UJFysbk})lm$JyyTf6l*yd2VA>;s{X zRy-SCe6>OMw`_e@Uz+#EdW2K9YI5mNbTs62zy>TfNHoGv=8l&e3Ulp5aM0b&X@rBCGA5m z2&1(QOAzR?b{qY!D@OaI4REpA6W$1PMeDa8(G#>zM7QmDQM_zwt+w1U6T+G6b~`mjIH&aOb960O}t;7YaAXiWQ1yY(|H z%e0qiH~u5-OuDG$+NU%>daPw=cjFUn3ccMbw88Wltkg~)4DPA6$vwcIX}_caUZtJs z1g=_pik^;_+7429d8OUl4qjes|6B&$8?8_Y@>W|&D`M}oW9GxMM*AyuWUW?9--q|O z{NU=ecOJm!2knvG0Mu(|&@Ql#+D4izf6{(A0q(Q5T8gH8(GIZ(`KoQALuL(HeF(Tl ztrIPg+v^6=7WJLFIvPYd>1s|vw@W9W+s#=wm>vrkoqRBI*{$;|MvGi^Gice-O?Qd5 z5AD&}mBP|pm%a|p_UeQ*Sl_P;r`ffKZq9R99?+enGOwp@{w)9w>i#|hOE29tTEz0! z4RJ*DL%Q`>VB({bZidcRXQiDOM|8sBh!>z+briZlU6XkL1nInJ$u3y8_z9dH)lK*e zlViH1Xv90NTOI>vAvzPyi%;m5q{Ads=hz-5Cv{J101wk0S_jK;on1V#KBZfhg@#4w zwo?V`w65(akTbfwv`^x!Zt`VVp3}Xd)wxLBD*=S(bxSV-a6#8J2d<-ZQ)yUnQRlNA z@h<6x`+$qq?ea#T%er;BATc_}OazM6`HcfEPB(Q9EaP>jXk>gv*MZiSuIlpW+n=cW z?hFDY=~|BiAX&FI93(}zoZgDpbhn2BcU|`bO|oz3rci+)RdZZ~*(JWmiRT8sxsk9KDqiap$)?D4! zSP1XxdWXX2J>9Nf0m#$6?u0=3y0V|qAqBdxv?yPwJ4QcgxUW0)CjdpdF8MGi){UTE zdZ61(J7P+7-_y^mOLbFML-$A*Vua6f-9*~4{8(4r6DCh|JNE%lp_@Rp`$}E03Bsqk zqx&&sn$)ogCt(+1XLh;rHjo6_gXi`83i1bCnh>~p-GKs_eAKZI0r;eIz7E|N-PlzSe$}-|1J|JY zo9==}T?5r{?e*ofC)z=uTMB@q-WZH{PWs9t;CAWn(b&dWzw#~ebkRRQim~lg zraw*N@;&+%YoT-3TWKH9UVUT$;QRE+D-mJ8UZn@zLw}Q|I|uZEH1YG)@B0(+y!FZ5 z06(O!tpLtPzl;`LeD#N)A%dU2E6v~i_0d0r9M<3a1-K)6Cl|O5&`V|^UZDP19^gUx zN7PxtdYA6-c~pOfhRetFg|tY1Twin(NrdR5n*e@7e~sQ6q53P)(4EwOpvNLyA9okR zQ~Kl(gpJU*p+)4=`kpk=Jfr_WL))`@y8yU8r$0~o3nTUQcM$fx-iwNV7xcY$gNxD+ zrrO0teMvc-UD8iVMpL5ovIuy&thZ!=i_t$@1It*wAKh+o`jjZ>;`RBHK(6c0&<@5M zdSfYkrs{(lz@_Pr(+v8iK2wG^+|q9t4A<#;|FIyq^+eww>4pBU_P|x^hlIoROa0Bi zp?jtOZVv#j^=By0H~RDyAaC`POz4nz`brkK8vRlFDPgU?O9S$JulJ`LrA|MDHr;>F zd(e!bUO$%>(zx!E-bi=IXZ;l_c{S))(Y0;VzikN zM*~N5CnrN)Bgig8hm8p9Y~cIC#Kka{%HO*U?+1c&HH@c)4mZOA>WMvu;s$W;hHJ-w z+iQ?dLDu^Wd>S?HH@KYx=VACh0J$76%%oD8r(rv7`#WejMeXx4h-;wpHjE2~mqUha zbj5rO+h{i7YjFD;oS$JQ?O5_Ry!s39!-l!};Eou|3(y4thLNG*0u3E#(KE=fhzCHh zVK;4@JZexJ203PMu!r!tq2Fi(3Nh3tfjeQ~2ZIYWT(xp^GpKTo23B2Ht1r&KR~o19#3~Hy*l3!??j{^m#*L2>=%i#s-imLoHQYE*gd% zhwhSL_d6sQZRk1_!pnx4UqE6EyFCyu){sC8w{eEh&cIzUOr8Y_W>@~uv`n*cMYpr!1X;t zv*{pthOzWB(L%#hTGG02m`=Z|C^G!>5rAStAicpJ81B5Np~jH30P$)K2HIlr z-mp3ofI7o;x_dqtUj72hdc(()@cGfufyT+749{tc(`UoRp)mPkD4~hNSHlgOg)|ua z7Q?d9;1LdDZ#+xgv(xB!9uXXj@w5WqXza8WUYv}NXyCcam~4BFj068hSQldk?Zn${ zY(mTTuEx&GAapb8-U6`4X!jAEyD^AvjlIUrmqrnunh>4sb>iVaC);@EKuT z_5=x@HYRj{$r)oq5QJxqp|8Q6GZrj`Wu$Sl5RE=>v}6N*!MKRlMWc*&w;=3AV;JRm z$vB+K4bjGZG@iI@44@)&jB&0S@L1!%{?Nr4qq31pyfJAq;8%?6Y3pf%@y2=Rt{T1i zK$mD7Ok1jxj5~~gCmSD9xgo{4d>*)K#za~zyKeNL?N2w1`wk$bTgHh|FiAIx9;3Cl zjj#4Xc*nScmOV0zw+<8eoM4%4e9<3VjpQkg*4CkVC*#? zdDa`7EJUD>Mqm2ueliMa3H!6rtr74q#>v#5UyUPIf@?6YdkWo7(`ou$vV&>ld9=vU zwDvccIGJA2$YYnO6}_dLO{sr_xR_RCAeY@HyQ@gh)wGfp;@nKVX<=-SX%D?r-A#s< zAbU*PVv`%Olgr+S()HXy=5(~~1e-pllN0+RPO6-@_s$mBqSJs;EB0)+K7 zRnXeJpK0L+c=0#oPJ?BDDVHu|plMbegh8g;H1ZENDPBT&)Z|Jvh-0RIg5d19>1UdU zhnRlzgz$vvVQ07wHSMDB-$~OK8kdKenudWym}B)+IfIZ=w8@wLcam6B=zefly*xN6Fys!F11()uf{Jzcf?x9Y`tNlt;7A+a~Q}nA|bFpcz<(sZi zRAX|ag`8Sb(|*vsH@Un3S7!>|i!S(J+SwGO-qc8=u8*eB?(q4^6!jM5v*~LEa`|HV zO5>15)B0iXX>UGEh54Ok$20>a^Mnup zqRk<+C~?{RrV5rZ=C3q^jy3mt0FyZL0D9fWn_F%|yesBHs#ztP^VT3jlG#8HLbCY_ zJvk}n#?~;oX1+RaQ_bdM;L^;m7b4J2^SMaiZkgpRp-VSES`IG5 ze18YxWt#iUN4zZaIQqV4n}^a?kR0*W89imG{hrsfd?n9!3{6-#l$3 z;05M644NPBEoZX4h<4tm;)1mt2Xzbr{ksBLUr#~X6po) zyf!B`h3<`6uSWacn#Y$Q&^z-k8iv-GJ57b_TJy1$DEcBZ+^2lKk70MwhE z=yxg~&Hb7~_sP8W1azOx>!=R>#r*p&z`vT8&`N!S`M3apMl(MMoV}$`jU;wjnsfkh zu;}P(=x9;T1l-B8fkuG4ESv-2&X!SbATE})CrDzqrTtOpTrD9~>U6U#q(bB#OWWNb z?v}yy81A(+rAd>A2t6&U7eRQ?azY5=Wtn^tI&aI#!3cZE;%0?UA4^IA zn&NA@HWSYLETgHO2b5BOorppCFRVo9e}^#Du!7o-$uIq3o}$TE?>c)=Fezv1(! z#eW~19kcWlqM64ny{U8+V&N_Te!^1H1U^G8!G*w`v`nCnTbSiZC7gv@Ud;yJlx2Gb zxCl!%jbBb%N=5K_#^PTOz*&pngd>7>HZIrD757K3huszp<+OhC4>IUjADyf4`&Z7-U|?+ z#1cpMb*V*3GvSApLrdYT%rf*1QhH>mN(QdnGP4DAk1hRP0sh4DYcl$!!r~JSuF}%u zC3H_Mf(h{X%wpFcKC3K+AAx&rnJ^a4URd0ski;uX&p%-D+Ojwg@Hdurw7&V)QbPYv z*gMPiPe`K1^7nlJYArKqF#F!ppL(gz(wh%wA1s3v0MuLB(R=WtWv2<;C(FZ?@cG%I z{0s0e7Uvd#f3+;z1zdy0nNn)BETdVgy>(0)bUUqg=_eo#){gUG;%H6uf-@&;In}Io zS$&s-bG9<{F?F$i@kWH*)_5u;yIN<^`ih$sKUT(5Wwit#C3ousDzWXgHm(J?&l>9o zvfs+1A+d+G$1RWp*5A}f!qZxu0^LDt%6bql>t&ivcw7B0!`UHg5S8M6tZ|*7^R=Fx zjm-S4=k|c}x0X<)G{CAIf?NWvqB9T%SuIp>3%2IZfbOXEq8$LotP7`sJ8sQf3}+$M zQy&31VJ&wCAk^B<3*1TT^_kFxS${l*u;JG3Uhs0t`i1uJL|B*5rt{NQPnye|vHnTV z%313g8swj|))a$8TAd?6&RgARv(N?WkuU(FtW9Xbf6+Q(8IrhUEmMI+TjlifxNO}- z+jwKF3utB&Yt_;ESe(^U17W3Mt)(ccbPq6yab-!xOd;l)ddW_Z-ldNZHf|_hi zpow&fHChkunpI?mv+LF>DrnrWs=Pr`txKt-mu4N<2>4CwQrhZy%Nk49J>AODjB-)(3Rmv#mAf0m!iqp*nl6^(xga?pl}A&o1s+Gxi`t zo^_KMfP8D<7;pvF{(lv)}@ajd}IBaMqO{M;)&3` zvu>be{~Bv8Rf21+mkN;5dn>O7fI4gVUr6GEwUXwd_11rAAo$Vxc{sRF)|FIz|7tOeo<}!|UH>jTMWVei}%e(CSEb!uN$IzOM zi{1Mf!0onkj|R@wPDJlWH#_k;kUe&jOCfZ(dqn>+;9k2Wv{!ncUB{Kc?YH}lmVZ6$ zauz~&z-|iN<(_s^-ofOc-Kc|z=ViAj7+$>XF3>CJkX))tKVnx))#U)Ymam`-w0q@*1cU6B9{xWZTz6d8_49W$ZMm}X*?aF< zX<2ERqcU4xE3+~yTUuFW3q|%8WC+TXz4xB7WFxYbA&7v02#5;E?|Hw!?s2cX=iR;E zeBQ73z3%P}03nR51Gs~sjGa?37RIoriwIldv+quM242GA&Ie`nqSF`?=Qh-3S;zn z1enT*rBYxTqmeSzbVke-Xl5`rQHds#!FUxaS&UISY-KZkqjzc!qb~unT*ky+Sjl7T zrPMv2v84u!1q`1P&@5zpu@1(H7{>R(6*HDol32pH@+e3tBZ9g@WsEnXfIH84jPm(% zMm9|wR4|TS09VO)Z#7h^7~cs2sAgmjg1f+YJP|52jEGd&tYxfv0XL+MvAY?I^^A5k zuAzZ3Ym1N?8BuhoZ(=+_<*8;yk~1Q^$arrXR9YD8Y5d|6BZ-W)G9K6oKpVqlC5*K* zW~!mm!4R#3hfc-=3M_UpJSGuRH{;_q2=_80@*GsIFw&`D)5i!Gf%G$qsaSQDajFlp z0mknJXbv(`spoc$k!lBHLyXTTFSyQlg>u?qhTjVaVubM>wKhf>J!=uf4The6kz0C9=$UX|(1jB(!EjJk_hOs!w*ua6KTa1Uu^c3UCVgxwN_?}YY8OHE+n7+-}(2Z-K zWgI;ZV|N%o(Z?xw8Lczm?lBs@5ZN4KfkqeR8P-)G3k>c8aQ7Lj)&sZ5czXbgHq31i z@P3T>LLU4bXFkaVXUjZs8bO?33NJ#_jyZ7y7Bl8(sIC5g<{Q|en z%%(>GaA97fIV)GD>jO}6W4`=2aPG`B+N?a7xv#^6Co@e0&WqW_g33wez)f)8%v0Gg z=EIy>1HdV!vKcmgnTKg?!;krl2r_@>t9!u(Fg*w0;WSfx8Mr{^wJykln88%vJ;VHj zeiLVzl{5zt%L1LNDgyX)%F%2gmi)X$@Gvo=(j#Ai6WaiVjRT6W5Cay1;siu!> zQ<&TJ&`f3Sq+@&<^Rser>CC4q;V6SCN(3&G>9Ye|7Bh1I9E$F!$5m z+Q}THy{?OS;}A$U^UO2=mzlA&gI!@(H38Sd{NPK-dYQqLs`N3tS|RIa`caMZDwFvt zYz{DwQdM)1d8QtKYs@ZsDGo7zyam~HrZN}YF!OtIJHnj32HYq!ltx5vFg>YwG{$VQ zhud-H#kJrjm>+e*%1!2q!*Ddo%%DQnEvB4i_NJKb^zxo&K5`DS8Rqd}n7+-_Jr75- z%aeA*DXSp7P2U}Jd4MUw^9r+$`I~L0k-tAdk^j>jb)y*O#N7h|e;G9^4BfvSc z)=_21g|(43D_7PBhaq!g)$>5yStE2{^kCKHLFUOiNR37>7LOKBvOcBifj3L>7GyrG zBKnUhr&z9Su<6Sx_z9dJt0NOp`?J`#&Rdn7=V7-1FTq5iA$KaA!SuaB~nYH&1kQCO6UvagmtSAAz zr?F(k2tJ+lAEmt+EGw1bGg(#f2r!HF&^d&Z&H8W(9&%VW?BF(+6;%ja9;=tKu6$OM zEi?;QuXg}f$V#G0Vi7Blj&sGVk3WK}gmowbTq(-HWSGcWU zZJ{4nCF@Ok8mm|b!(gSF^&e$&7g%d(z_ErE76($xa+-jwj`a`CzSgrM{|0Gbd5r_t z$oh37B5PuKeTrC`Sx-5^^hMUzOvqYToMOl>u>#j4mR8nJBHW2KRuTPkzIN89Zjg1b zb_xLKWU1&wi!Rn%5;*E+1)YKHGV5Xjg1^F=rIJt&YuQS0y{yg6fcLR_hq2ht`jo!W zyvhh$F-P{boiOdh-f&Et>JiYx1B{(vr{`nwEc=KH z`~|Z=Ifmdv*h~FDLfHXy_6=iC(rGZ99dZvOf~`CRf9KehA44UQje04bIQFM9*oXQN_9u5?EP?Gv|AZrvy`M%)lh|fDYbUcqe@84S>|bfC zOl9l7fXy`a30GW7I{SJU;2G>+sQaJEwxu^^7F$GLrDU_ueh6F+yNT*&x$KhTFqX$& zMj2;5+i3uR0`})8VWp6*r!U5e*pW8?C}!`m0icAvfo5t-+1r0bWMypaS5P_6F8BZ! zR?hy{ADR{H=G!2Z>_qC|RIz_d0ic?#nuYfZ>~-`VW)1s4s?F509jKX6$9{$0YW3_# zY9VW2e?ps8Bm2cvkS6xVQK&Sti~fS_BKx`$j#}93SA$$)zwZqXt?XC)5PTckUxtv{ z*_-Jk(Ib+PwxV5OVgv=SI(Z;IXv{ROYOn+vP;)M*2j*x zi^YESA{`j7vLB{zj0V`6GjKG>o?Hd)8e1O%W5evPdO=3mo#D6zqwFszm%70=(kBFC z?A2@FcAT9~ZSe{Aqx8JrWcyr#%}MrA%E4~2Uw;9zDfWM3a68R@oqkd?Y|Dqh-DZD6 zMc-L=Eq#P|hrQ_+gmjlZ`a8%yw#)%;=hy;zwCCA-yb#g?`_GTz{XRP|9AuI0{}@c$ za31*{@ME0EL;xJ;bWOmtEvLyJrcZD-QT}4b`DPES*mDk2i_n4da|Vn#axU?q;>0mf z)z+D_vlcd8I2;!MTsdy-Fy_Wt{2U(KIg(W%9-P;g0N}|fcpow^PWp1#Jjv;&K?ZM5 z@i#E-!?F1bDyKM%^Wc0rdU|2{aVAGW{5kKw1xEp#So+(Z=BR#$%|OnJ??4vBX}=5E z8BQ1-3eR$;;t)$P$BQfbBdS2bOxty8{B4cZnPunEY7~=xFOk`v3;1Vu~3=!5@*lLAg!E;)$rcNDWRFYc23wh{B>}S zP@J8dN-FbqaoXq?+0DtM!L!Sp=%2w|;jFlaka{>fyy2mj)A|lbA7_$kR{b1pHLP6a zG_8S^0nUgXxIs=kjig@VbPNMN#F5Ywew||s0U74(r17;8&f87kMmgsvVdVy=imG>G z96PE4jB^gqv3i2jN7dJxoYe}bOmYgf;BIlArOj%J6D6sds$kvbj0Az3 z<-D;MvO65%ci`@FmQs)C9_M-<0-WQ#_!%6{bMDc5bAj`TGjR7g4m7Q`$XROxoDDa1 z9RSC;Z_^+3IQIuSG1zkNX`yn0yYC?Y?6{K;<9^z6@6tS`1J|Cujd$d(pt6q>ckA~6 zICGEDD2NL;{ywa@a$lk&lpFWX$MEjX6*__Q;O?bkwI}y)%K5ywD`;mp$#tjn+?%Uf z4iz765*?jSaU-gs;>!(L3P*li2l}eWpSwu`?*ZI5AB3aRTm?;b1aeO{V=;(3=LolF zxPEldJj-3S3^s$gm;J$oaQD0oE1}$SHdMm60;(*8bAz)1kKq3CD*T<}PJRdPkz5V6 z0i(Ds`v8dMrqg^+47ZVXjacq?e?uPSFN#wHWl$FG7{}s4o?kvseq;L;^1wbm- zn~E!G+?SRDm(Kl?Ds&lK7y1`QnOqMZg3sdm(sr25{guv*Ib01Lq;t7`Z-L9>mI>fJ zpZm&(@K?ai>41kqt|$Fki@59Q)KkorZHJW-ZtyT-Ddp~_nUgZ^UaDE0=YB;GNjbMj z53Yh6;|o9~_n!vDQpI(ffZJ+r*F69(aG&`Knl;>1E4W(jMcTURxD(y*SI-@J2_71_ zB{Wgc$eqZ7_a?3@9pIX|I?7Qla;s_TzlFPrZuuqdIqHYEa#?h&ZsV>k!KJiwSEqvO z;C@TT>Q3(A?+{BDx0v3W-P~%rOP9Hi{s8U@SC|GXJ={YYsPu9d_d?dkU4I%j`?=gL zkX_~8qvPBF_pKE$J;=4Ezsfc42h%V;#Jx}N&FkD_UqUv_{hT(r5$+PIqK@0kP$sss`=^Z&M&V*zwr3mDuxI2jJF$=STA)jy!WX ztT^%PoFQ}OJ(UN4F1)-$fV=XFsi*J33;GToJb4|iAYQyJo3VJ3_sR#b>CHP&Pq7bA z@)cyKcvDmr^X0K=gZJajuyF1EytOsp0(f~Nz@6qvsV@`AJ52S7Al|Rk9zDam)Q?+t zmKVMRTrjUn3Rwtm!~`yscb`f$VZ131sD$&rpnNHU*C&I@Io?ZD&Wz**Q}z_aTYLp7 z(Y!&bS;g@7p2Zc#@*e*Xk;Uyw~q&056`Utj(T}-KZwih;}uhi+Rux) z3e#74VrnW4@Enc;Fvyb>!q_!l$>UHN;yEqBMPKJR+G25-w}fh{BfKYBSRCcO!vOpS zFX;eeW4s@N;AosTT@2YI?+^MZ-r~*1!{!vv^d~f@d0P)bWrjCvgvxDR@)E={%Nut9 zxx?Fa0-ASunOi~b@wSHnFvm-wonf9=phtiUyg~u4;XZGXc7{b>j}@9W{8!flevHrE z4B2tM8>NM|{5Rf#$_f6^YRK&PU;hqb&tG{Qiw^u?+GZU2J3J7e6W_-du{iVJrVh9Z z|560tuKc5I@b1RfQj5@?-`fP42miZeu;R(z^b%xV{Dyz9c#_}!H~`-K51z)N4}aMS zcsRvxcoZ^UekmR2{P@>ih9iHz{b?8r;GdoZIn6IiMYw_d2^wb!;@42)?+pLtBrKlg zuL(tf!Td})jD_$YasVKdznN0$Fn&EX{=)fhMnf}#zsv&MIsQ`_Ad&q17%WEdcYOmA z&EK^jLB#N_RR}PaU#`bu9DnE*;PL#!RM|`57tdiak-ysqnn`?zdMqaMAAA}rDg2Lf z;4hW$Pm|1Pd;?Xm()q53p_0MhMR{^2{{i|NW$~Myf|YE(=N`nF!_U@%Ukdj zn|E=2`TQgmR0{YB2Z1Z(yU`1*i0?u*t786+v+!QRzePhFrTmscI4a|RbOGFXzM~&B z%lT(%FR0)jp^rW)`Be#6tm4;FNw1o(pwX`j{ClYgw}vkdh4)&%J$-as$4@AS+j{8U}ca$Ny*7I{x3VBGQ7?BXA1@ z;F#b^Dh(VLFzLr`E0_ugcS7)<7vOe+y-xvdFPPwhI0*Ww=;SC^PmKU4K@JV_ISV4M zfO8S3y+K?BKhUU>o4{nkHMk45Q99`%xU&r2Jq4C?fO`q@4#Lq%!PR9@@fNhw43>|; zg$fL(1YT#s`3gEcpyDTR2?OUZ_`?QQ8z6X|3xB5t|I0&Ufr7Uqzy%3r=%;u_FjNXh zX9dRfuo*1)a|K9o+-Fn0a=z{jNW+Jf_FavE=Mp)sb;QVii%@-0ug<@kuTU%22von z-GCqp1tD~vK@D0ui6EVc;zX%y>{AaON9Y8CVx0-#NxqYtFo1tm<_><|q60h^tI z_ZEQb64+9Mq+9S0ZB~~Bjb2c>B6#`}$a(~JPk{6aGTQ*}6YQcVpkJ_ohK#NXME}6U zfWUzo7J~xWGjMcGV9dtikYFAC+^!2=rPtZ8;MtGiZ$z-}B`l5#yy!iBL*Tv$%`rh$ z9&XRLKoF1HGa)#-8~$zzZVmx3DJVGt?v~)k&w!f}T%`i-wBUm%*qjkOyb9#D;N;^_ znHAU&cSq2$2y$1jo(?Ma1b0`%%AA1P2i&}%;4LgJ2!d&|x-VeNf?E_kL6u+|;pIq> zW5SQ=BZcF_e>Os9E8Oje$W91nyCJg^9-*GTy>P?JP;n57e}ffAVccnWa1y%EDcM>0 zM;aWt2+z~Bh^uhS3KchD@@ELpU3e%5x79O$+aM`mULBdD0uyRJYigLxX!gxA61q;{P z!cmAYkkZLep%)b&!i04+5*IGqPq|`*FzYTHof9@qfkX-;Y2+wM=td>IXkq_yScws? zIgU$-6=uB$T%2(5Y2f080&1Bj2)invk|+$M`Q0Sp3qr)1EPUc4M4cl1gZ}kxs_^Mo zLDGb(%dnCz9HsMghH%YQXl4p`zXB^+LJ8H@vW32sW9A5rltJVQ`{JOPC#;aEli{#s>?$CAMkKRIG6``kFftq$a;le(*Ky~6Ao3tL%&c(Sq^S^@93gkg!0O$p!p7~Hh5{SjE15iZBya}X^g!JG$;exg2Xoan93u^2B}LVb$_(a;Z&C5m$XfGkO*?88MTi(0y1Geva59V)4! zUb;PLBJO^0=_35ET|9B3>H>Jr6me~^m?c_8Z^~@ZnO%_Oh<44vSgy!zBW_lnsCE}T znpPM186OGeoO}%K@dMq}G z>ZoYgDB3DU@J%8cnzm~e8R?{PQS^KW04<^c>Iq*G#hRemD$-H&t4*YR9kO=Ok5p0W z68-WU!tECArl;z%NY@W?MZ~3jw?`zDL)I&rqerbz^ycG;tY5V24rEtF4^xA3K(zcd zT;`zY^5>9U6Zwq6=8(vrJ{!F*O76ln42wQa02vWksC7Cjy1fIz-w=J657T3!wi5u1 zBQm(15dG)?m7AiPGvFpg`{+Lo-V&Xpv&@tz;|&0&MN1bzW<-83f!r3g*MiK7cJD(F zcSP$b`@JiAh0ZefL^j(&=0vtsHkcR9s9<_Qq);R3`=U@sxLp)UKLOlEe2dPh$Hd!0 z5cP5K@AMqmiq~sk?1Xqn1Y~w%+jQXU#YHi&=^*}q>JyIQm(IhAlQ@F`&RINq9gbYY zUu*`zRoqQi>n47ij+XA?+n+$@A>Ql`o1WsO;c)9Ee(!TQIw|JR$;MlJkdBr(yfAQL9U^+mY`7y|8u`iXC1H~C!;DW>(32+9QkewBK)qn(x z$4|p_h}h;MkWld`rS4(kqg43{7b`x2_XzRY3E<9&YxUqF#Ut;4ixLkVfo8NgrXE&e z#2m`DW5qp`-N%XZs5TlejvoL?5a;#6bfWm^e~=}K56t3flf^gar=KEzCjeZkSoJUb zrHQ|zQHgZ1T`G)ah?$h=W{T~{u$U$GZih;?`0edj%n_fb%2%#go)-sy3b*CrFF7z>A^wVbik0F=s}N_E zc$|6#)#76=Fm^#a{1uGVh-YXwtrhRS4_TdfDGglIiv<^9r9o_y57Uj}Uu>Y#Bz7r> zm1Z&TEs%?19#s-s#C7!6z9jzbOTb&j)g_R%iTx-yZ5My)jF39SVHGgeDPFx1vM%vo zl%98s<<#)KEY7Aw_7(9qF-VVi*=~?t@n8;2_la|!2fSY#MqTc!;yJ1^4v3di$#PJf z|37G66Cdb;u_3XQ#+$E;51$7a7XPyhv5bgKMIfW%6I7GCA%5d|1TiM|t3bHp;#w_a z6XKm(a5u#}=r1-YcKr+RTjIP7kSTG~=KxHL;{}LiM!dTOD!0XsUqUu3&IpIiJK`OE zuyR-2Duc>B@%^_E;G9^wh>+&Rc66Lu5YJGx_rCZSdd)A2Kcc+AM)JH7k-p{!U1i(qY6-;z|{Hdx zRbu)X9^52qYB0M?V!yOc$Z36d;A}yi4*Y z{h+%g-IZ{3S+Z#ZG_OcDJ_3~<$rp6y>XkTC_oGiTX@IO>^3rC=u1XeufNVhW+qZxZ zN}f%Hqid3$NpM4w|EP9RMM6K+zpBHD9D&3mc8Gm>f=_`NN8o$`rU$uxbra7VI8 zzw*11yiCM$Px7n*i*u3}DeIb-lvIFQkUU1Gv-^_46ohn4x`AHT$E8OWV9Zu}j}Epc zq`y;(-cI_Z2%7fN5=pCh6`q08jnzRKnXX)P`0Oulo{R`k+rS~Y$a+7{b zPn^5-yDC`mkb13w%u~A43EsV=_o-uhQaV?P`{^xZtc4XHX;CHsr=;dv@Zc-GuYw0Z z>G$4H@t1z&iU0$ohhGLcE$vtiS)epH3bG*S`1>$@M*7p2ke!td(_S7dT~Fy`i1f7> z*bJ5GHSiZE9kE3$;nJft?jIqIzl6ne(kBDKMM|y9VI@jhO9j4Y>Es#6Vx-Ty!C0(x z2?NIBq|b`sAzoVa2)G2PXcI`Hbe_suNzwr>!Tqz9{@nJRs9FKnhs>!@X( zF5N?$Rfe>25H>TV2dE61CGD#Omo2@%A69atrS#{|l?GC}oF`2=51aYYS*k!5NLRiA zD}~bM7NAljeWeG+iluMT-?l`WOB0`^(lzw)ewp+G9yHHOgQLNfOWhtpNEOoEUEnIE zx?TXPq&2Q^TP^*8HmeI#e@d5Yq;eyou9ZI00zjQKwE{NlrF9>|UxRerk5FlpW|u(L zB=z_iR+^>$Wl*^&EutN|MY@3!&r8y~UxRCv)~`blZBm{SNV{}1wK6-T4is6Z^k1^s zC1q0ewObmq9*dWyKR*i(SEM(U2%<+iwFIVnrTb|P;;M9C7`Oqc+ZtFIlpfs#_%&&F z7H~t-rF4|NE_M6^WLWwO)h9-zSLs`*QRy#F0Cz(gL$%5=X=)iF8<$p6&Nm_5MfH%I z(m8s^O-fJS0PdD_Pbau3sk0~CPD^K=1(}f+y$yf2rO(g9*sPRE56~UyeX3aBl{O9l zcTb839M72a-0uL)OLx%d$%1qz?WXsonRIkslzv$XoQ>>(M#zrI{+Wa9xGar6aj}){ zrfKsNGRH@uVkcA4B%ZzOZ$6AU$hJ^_+EK>QAzUX}0Bt(XvZ5exF0%PZSaFrj`~aMr zY)J@$aF>1XH13Os?8ISM@su5+&B{x5fsQ68Wlzv-p|@<3-W@(Nr7NtQk_GRAO}duTLuJp?Nh3_wdm7%uW!(?MScHu256yEj2~}SsWxj{uC`uN+9=K@PHVM4P$f}lu zi`bdM=7!Z%FAu(N2RiTCm}1B{d^f#Dr8Id09PqnI0adi?B)~D ztd^~(lH~ahZ#UU_uRd(nxa09Y{n}83>l4;EK zn(P6po)5`l2XQIaWvP3hIV|gZ45mk9Pt-tVRCf3}BD*2GLh0R@Y-<%{-ja$vhqI7UHFJn=6XF+PdpC5arra! zE4P(DmI`AhfxK8qQ&G6tX=iUI$Mb6;h7P!j4 zr(?C7+=n(RcR9xaG7tHG)Wz_W-=$)>m;CEa*gPqJS&ERn<*iDX_K|ppq$}6anm?vL50zkgJ?ll-IkbmQaa0}&I z?O?1(zHK*T#qxqy$V%j!x)61#`~nq1%H*rQgO&60tSQLK<+tb$S0T?^griFNJ_$@$ z$-61>td^VD2;zd=kM4Di{6i{P*2?=20A43=eg+}c%e@~0ph4b2o%2R{ybe~HWVzC6pKCb{d*BouiW}FV(F6)BmmGa-^E1KSLJt?!uxhJnaM$EuFJonWA(6nbQu66a+^4iQMsTFU40E@|!7;-I8Cbg7+zTn-6SG%l*pXVMZQ9<)Yj2G(G^ca@Q6(x+Cvc zhsC?{%~Y_tC%2(4&76D_jo8o2FRj6~FUWP2g5Q@n(`e12Ty6`SHVOruQ;#WJLt*T= z;_qNA+A2QWfgnyO8bSfLQ{420%wA#pHQ-K)K{~ZME4JQ&TNlM7okd+0lhpfkQ;hxw z;;tC~3Mw9o7JIn$RBRu>{q$0l?1Jf&ie8#B@m5q6g7_%Zo{*hV9HlahuOf@OCVq-t z)Y$Y_Y$yjjK=F_-7EdeUD76h#Jkbs=Na0LL@EJuZ)oITvhDX5#D^~1<+YrTnbYKis zXdVC;rr7!(RKgXGT6l<1OluL~ImPiJTuP*3_Gf5DDb`Y}C|Z$3pYz2i;{O65R#Eml zRN@rH)bfc}#D{=OP{_VRWQmGQ8nI7O{Eto{$%=H^tWp#Wbo@wFTquT0nj(u1D(Q;t zlw@Qm#yPN=spxtdju0BORbyxcpnHM0tst`R5Za~rg7*qxo zmI>IrriibEu_1+B3LITmWG{i{sG^B#9yb&vpCX7c#qJ1@amBq;kWDCLWzf8-xW5JP zNd+evMwv$;9aEaAW_4V7mTDfhO0SmyKcW26 z9{@XL{cS{MuiQf?QwQZ{`t3R@&zca6lQOFToU^j$b#N|91AUb1s?-d@n47Xd4V=5O zh!RK-W$d3Ip33=uK)jUIow$aRO6$+?;H_LoRem335%vF0DgXQr#(b3z^17pF;o0JQOC`ai49;)3GgQkAdLu{upT^*C_p%AKRI znW5ZANpPmJ{&_gcQg+mU%U14lhf0o;8H7v8RnF~3WO>Tcba=>Dij(lCDo}>Cf)pyt zF927h{301wRIL2@4d6Qe z%I~%z+$+lBRgm>44^g?VSGk!gbbZS2S0b{0_BMl*2IqOe+^RK{lhjPvy7U%8$|z*{pJereyCZ_fj3@t}>tU zvwO-HFN2#?=D9&OuY7(5a0|+kvyk0az9fd}MdkK6+#Va%)_#~irgEU(%W;(l6Dqc< z_4JUOQ2kAfemm8DI&#~q?$OkMgX*6Uz#UZ?R3mdzRhXdStlAWb;9XP`pTU@`s*6qq zZmKtI5QMwxm#?AXp_#4()j?J8Ak{PT2=I*R33^t}s#NdbQi4^l9|Jr@ z^@%&e4OO}S4M$BRSEktq%YYqpG2) zk66`MFZ{)+x*OpkUUiAGwItPx)J{)UDXEj4qMD~9F;!JW$Idj><5_Ts6>@U-}{!TcF|9`Ol6_5sq?CT=%rDv`syhxR;ZrU!E~i6ZX=?uQe9tw zO0~*wJ7gDBw+b0KWc+2b{@D!RnkRhHmTOrQK(rZ zTLG1es^{r5ffm(vs`Fh^t)pb2RVB~Dg|(?prUTxt+DxUS4%Lw@xPzUl$7n*aOSNP- zg6~$1ZG@G}sE(7!^_DB(Ln{ARs9aZR=xi~p@=bxth|2Q|xE)nJejen8%Kb+G##HC4AsbgMrxwhF z>a`%iZ>m;Mk6}{9-3FCgDh&-dPN~+eglt+BMX#P2)wk5Vysi3rEx1`#5LKz}sNQ%4 z{_d)h>)_#@%J(vE!JO(~DagF)1$qrGsHU#K%6-*16@(X6E5~8lMmb!S=b5q+<3gE8Z@juAC)be@&PO23)Q1Mo;pdPf3`mOWePN~0r9h$!CmmER-)c&oA z(_bA)Sx|ub7i!&{R)>rL9;n_s1zeE&%~)_})cmg@JF9-D2UddB1s~(Sgs2xaz=f(4 zC<_Wx3+b>NuJ)l17$Vev31Ir1`j`grNcHN^VJu1=Md$u#^#TL97JKS@ z$x!dUia0aXVZl(zQh%0!JD9C*l7Y)n2VR3puG&8fxIA@KCS>{Q-<$w1P$#t^q(b%f z1&|{3=WJLhRv(%{fF)`-ni(opFQE;-Ox;6i;d%8j`nI}Uz4#co3iUa9EGpHTXtSzP zX9R((R-d6V#Rc^#x-T{A9dzuhRlj-_{_4~RKZHuXdLw<`*q|1Ffmj;V%cv^dq<)hg zi)Qr}dPFa(?P<)QMcqg>olEMZRj|^kUP)gkw5bitq0+A2WQD9lePtsqvs3*IJr-T+ zNQ$~!?Ys-7FRP!UrqUI4%LBLtJ?i)-c<5D+9Rs{iJ^43`^{YLG5!qGsAQfc>)Xm=D z2Gy^P0dP&dgqkix>RprM}Y5jjPwa z4cvtK!%>i%>a|o0no_^s3~pLoO3%ZLI=LJEZmXYIguhvJK3YZ(-cjHB2=Ke=zn=i$ zp4#~h*ql?(Qi*L|eT#}K3+g7Sx87GL1OT_F4t)^-8_o4tT=X$bxg8ddYd&p-imj&Z zS;$UkzNUx7PE#`pVy|IFfH-LWrt_ww#z-5BlP19(kvVJBH{i%clR#qzt{S^#;M_Eg zG`-=jaeM`)Jv6Sr0OzUkrS#QHlgI=)srk7Ki{6^V|9|2%?+S2Xr!=dW2-jD0_c_4* zGzY1&;IG-(2=4)!W}5mqtw~J>7pS@UJ4^>@O!WQH8O;PecxN@+0{{=!{5B2`A)4c! z0EB7==$sm+vEGJCxaQedEJkP^c?_E8G+ocYSfnO~Hi#&VnEI*FnqTOljM2pJ0*TdZ zY6Lt^<3cZ@c#XdaAth*DrKyNS&AEMuI!R-tZ6;aMO`{+wnv>KEN!8?JfJ@Wd>H|Do zQ$ury8JeYy0Ay;?Yyr>Gyd8`HuYhO9)x{|Ka1GlbOf!7|NXGmxFvyh&|=at-GLc&O0qpuN0O z^WP0{RhpzYs8nmbwZL7_+yQQNb(SFz2;j=r5iN8?*Z4SSwla? zCe4<4EH-Pt_!Oj5ll%Zkm!@_Um)Wg(i5|)x%^cOCdo|-OxQ0H>WAtJl(2P?ZY*6zj zO;%mg2p$4pNTcT=i0hh^DJ%|aTIu&PqA8`H{-|d2Bvfu_k{$zYOtbq2WaFB(36M=_ z_I(a=Q1t_DRG(AoKoOY?r7rZoI0n8?gMUK^DsR} z3!48qL*}6Eqj?l(ZIBdkx@e1ULDN+`N)MNt_H74n?%E^2!kCA4;2IXaw1?LMa8g_T z7aVzOo9L|Vqa9lZ)2Fnb_aP)-?T!U#`fIn-Kv00TnD)=p+DEAl7N~vgKae2pPHIY= z)jCl!6s+AsrOpuTdt)#bsnhZav#?mC z9j8-rv3B?W7xA?7-3X~v`+z%e=e0XO04diNP|LhRyW?+gmD=U+z+aV?n}{H)wbMx; z7qlEdEY@nz90XUV{pt^RsMqeMH+qA%ng*U4wXOdHY0|1Fb#K=C9fItl_GucTYSI4B z6N_!yD~@o~u61VNqC2z^^dNL<4}?J0rF|j_9=f%ml!x?auYZlJ?bWWO0$-o@dz$AP z&@TQ3_@Fj`#sRNs&uoOsu$B`IMzmSeM%BN zbdS(i4W7CePvM?<>72X3oz#6o!+NK5U(%?AuZ|ZE;-{Ad^sZ-Nqn58q-0hg^Cq8dw%?%WgL@^#}>(ksxJOmJJMo2J%Ok*-yTsEc*2 zk+4#tyGC=WWxBdl$j<9bRH!T0eL`b56}lT&;jdCB-U6;lx3~(XYjkVfV6#@|w+mdI zZW-+ijk-B{MK)osR!1t``QL%OqcvSq8`^Bq{hmGF6l35-qi8- zLvvDB91QQbbdz-co6_|hLx9sd%NV@R=>DWE_O|YbD?H5Vj?f-*M;8)dk{46=FMq2u5dbeA{7^nG3LE8rG&efc0ZdOOO?kLh0yhU~b0kluf``g%Pg zJE8yl036xr*Jnf1Uaz70nS349e_I3GNqx-wSoGF^Penr?{j?{@DgBG|!Hd6sKjmNn z`iQr1(Wmu03qb<)e#-#}((j_`))_r2iiPrnk09lN_z8WM}zm0zSar);eM~T;uO(Tc|z0eU>lJ)Ua zcuCQJb{s0H`ruap&(Pb@;Wbll=7VJEorJisZ2j*xaFnCxc!0~*mqo)^k$&?mxMF>G z4Y(40)xSWU^D=$K`*3t#e{m@smFopbFkPX4h6=)!`or|@sM2Tu2U4w1{{@Q| z^kdYhs?qyW-dd~QTLx06H&QdBUY|`p?*@IG03I6kw=IaQNncrtThOde;A8QkK5Qd2 zTlB8wkX_Pmr*l9n+(Oo-7k>uQuD2bBl@9#@ns)8ffA}l>b?KF6Xm;!0$c4&f{d$_^ zzoI{)!G-nc!}o&g)o-KEp8E7ZorZ^g{a*5SRlmytDg%1ec32tIk8i}{HGTV6&>YhL z+lt7p>p%S-WLWUEWDxr^dvOL^f~3Qc~c)jwV+9TEFEcX>81aI zo6<|oxRKNPYxIcD=qn>2yR9Ejft6YP>0v~6N6$I{a#vq&1>l~(?+jGt^lwq_J+FU? zro$HW_B0Z3Umrv7_eFi15HcGB_c|7j8Ab*0aNJ-&flIM9tQdu{6NcJu+#WlFlO6zj z!x@^pcQ7nI47ZMk)6}AHGJJ6cn$Cul=V8pvaQIbdx*PTlL({`hO`Qr)1B>2cUWNo3 zVLoZ7q{PMBu!OpnJ_g|g0H+L{`(V@8z^7l9pW$8Fy8I2Dv?~S}>O=sXHh8sx3pDtz z0vBY+{Rqa+7`{6Ua@MfyFL($xgeJmRh~Xx^3PKH%0La1&h7DK@H$2aWN`!$ii92!5 z&~pTfk%rZCAW;Ty5w0QDAbJ^GoFVOBsKgtdqbEGU@K`vwM8iL~K#~lpZ3r;g@D&~I zQVicxYLsdSDaK-&;dloY(+wRn(9AH@Q&BD3prD>`j-kK{kwqck`+_Q#wYL?zHJbn|ny9VYtM0U^c?0Il= z1`j>l-ZvO%4r$TQvkF#hjJ}jX95Wu3z~6D>Y6&=7BX0nv?Ts~Wz_f#LHyLv@22jn) z$te8^IA`NbK8TC)%#&DjH#XDT!o&DvKR8cg=U%uCF#i4rjGZ=~Zo+L1G%nGA3o=$_ zgPbu&e*+I^jo;DVJ=nP72XG-q8)pO&YV17?K$tP@CCI{!XXx+~VJxEWh|U>z(WV+{ zd~!ViQAXzb07M&K?*|~pSa=&MvBvj4M`UqEn+!x9Z8-2V$a*V6# zH=k=f@js9}<3BU7l5g~AhKB-UTN!Rhq46r+&mvv6LFCra{V# zhJ9E(Z#;4oT)FY7Jpfb~|2l%jN@M@e@Lpwfcn7j-qc?5F7mV+pg7+F@!b6bN8sC}+ zsWawM2d>^|Pao|x7^RP5vC-%`f~cE}OaH*7G#l4bGwPyo^E(Kz#rXbes9ZA6@c?Kw zcKrs@W-NFLi|xjJeE91yx>LWu)A%%|KNSlc#{Eg%~-n$H)P0ojWXQp#*1PY8#b!L z02ncugy1KPCsiOfjb+QAIcfA*3M;paZ&T%K%9!*KWYfmBMg%xx z4A=PsHl2777wuyTJ_d5iv~DYiuPKUJwSJ~wE&$+fdYIm#0VY!qY@Rl$>3W%~3vs8pL`7C<2!W3{FObQY~MZ5V*R zdei0>$Qn$(v#`==3Vsr@Ceyl4pxJE7aDj)5romL$Y%#t0E~36L-wHQ{~I>aK*%?24#;amxe-nO*x-}^qJ21LDp|N zvI4RJ6Y~&)7&JXV&%-s-^izNjnNASyy6NvLa5Q3iwiviklm9*7ZkU#LLuJh5-Ue>m zlx~Zwy=h843zbRJt2Eqs%QU9I;*7~n4$a#pud}$mS<`)LP~I~cmg5@cOk2tHylMYd zSXne}rL&=p`4xJh95e4s0kJbrBmrk{E~f0z!Tj1us5qLNs6Ovxo}jeJ*=z`gTNktI zAK+Zg$Gu_N&Af?v$?oPYJ^*-_2k6x5Y3`y)3or8>%DPUPGbu7}GnYm)e9Y~skexE8 zT>;$JY_5k}KXbrUxb-*xa2fCbb0xJ8L(Sf!@E2yDpvFqLx%?e)5#}}2?mA~4`V8<$ z^QHYDQRZZNNkyA?{SD0+^X~5uORV`HnhuLIuUZ2VZ~m7`5eeq;*PxPU9#lgm$-IWf z8j{V{9xSGqTdCldYW|q2#A)UUs#c_%Pgy}S%ttRnmT7jNqh6LdGy#{AZGN^FR&vZH zDFC_V*dSQRGe2@4j`Gc)YzD5typ__)LURs17DeX9K&TX(4|QU(#C$Uq-b>9}seMsq z-t-St&YK5wpi*x3r1M{e*&+w2G^f#7yUN@^&4p_7AC&oDFvs76hZ=LeAKXK$^^-^#IpwcDM|3(H!zA7F*1(Q$6{T`Sx!Bw3=6M z2Wd0=97bgAX0ZS^JIpH%L9^2w`3JZzvw08PcAE=!V)3%MpK4uK%<5_2dd#lBAi!Sp zP&I<+GglY^=r?=E0dUo*^Y)|7X*Uc*^6&p6M?S=Od z^J6)XjhYS92=|8hw?S}Y=CaQr8#g;G1$@H1<6DrMW@a5!Ce2Z_W8N|c9tAgLj-{g7 zwE3%-z|ENVQvPz=T+jpftl5D!q&w!%p8~mSK0=4Wd*+|$?K@{K@5JJ~c_bH$3+CMK z;Niac>u|sq%}rG3v9VlshofVb+gS+dxW&5%nzj}uorLWzOQ|vDU^zf921m;RB|}b@ zmz%*kTYenEwYylF*Fn?O5j#%^DQbX~49n*<36yDB+KAw@EZvk4WLtKQBfuQX z!*tZkwb;Lk#XQTy4}r_KsA&?tz@n+awHI0xD*-REMEne{*wXzkWF;1(4y4pF_#$Lw zmRo6Xbl#%U!b7=bk-pZcurRknR%zKl#my>9&(|%49$r^%6gXK;=xJJua+9#SUr&dFy+43)?TNf>F&?&3M;zr&7OP1x?khNMa zmLR}3%j*XaM7zcC7D$K1wjUSPX<;0LN|z;tj@8|kH>lQp+43-b>3PNShZ#4y#}fQF z;JuaznndWc?4s1R-!jVw?y7}#39l5QRipQGWj@+&0CV}vAAIQ%O1w=TUwF< zU$g|$+tGvGYJ)YtCI)fbg)V&jd8R# zqO|*-qxLH@ztb@CCgoZIZtb5e3>1o~i{{vRm(Z6xE zC#`K1r?>SNdR_ZiA9xPrl(mGWa(%7M^poob&}owfc$&uy^v>RG@;te2>S5o)bbLl$QJ>Jh-ht#fp^i?F8A$2aG! z8X7=~w06G$l_=}l5}1y*Mzf$2V@-*Hv3TpAFR_?leWDtgiB{oJEGAi*U*n3Bt@oSZ zA;tPr6acB#wtv8-Szn;Gc)B&W2waBsdv7?(v`!>ICCj?M3fGry{rWz*9BUwTO>(W5 z>50p;{*@0|zEyn<@B(WcJ#mHB`DSoMR0RcglY-J;RDT1;T5D-NC zuJiqMe&;^ty3To?_Zjzn?(+cP`8Mt?7`$rpm|lYgHdEAaUubh%jRcEq)@%f>*k*PD zM2U^_7dVDen_gNGmDwn$YxSDVnF?svZLS1Dl-p$fgj_0Y257-pX~UqUWtGhedgoNz z6hDVRH8!5Ki&1M+NxM6BHfw3ccf)4sIwW6jW1tm#gH6)`L~pctkzUYEHa*V+&}{Sa zL%6iqtX6@#)n;fmqPOAaKxXYW0W?+Vuo-z9gPk^ki2&TRiKPw7TQ=J^K}Icg(Zj6h>Hdw9^sZJwqH!9yF@$IvEh*3)-H zlQtcN5RYuu(2YK2Gt~_3vCW7*v}v2T5G3)$=E*^@9AT`y0?n53-F5`BV|-0hID5us zTAVvD99R&JjHjru>%`bc6_=xov(!|0jG=1*&Y5wBK45TRRBQvaE8`ID_aA47==e@B zmeP)&8{=grqPsKR)xze%kpB(Mlkqa`|9LU&w&K)zGe*zDc9P*r>mwhA^;h7089&lq zq#t9QEy(;CS+p@0!04QT!BdPYMhpfr9O(5D#Q2Jjluk2Jsi1L&kxhk(V1|F$M}_M_u-6{`*3z67{9y#&qzkbIwTmyC*CuC9qqkz zGa~4I?_um&4$eD_V^jpX%kYzex|iWa-x&2VuF>SHpK(x!Tm~3xsoXxu@T1@89;5mP z*zPl)>w_3#ywC#pFeB<0aE>tYX{Gppv7CN@QN~aJw1JWo|G6R~mL`eQjEpw{c*5|bKjd+QSyv9tmg%}4I6G!SF@!zyFPgtNFqtYO@5l_? zfj~}7&mlxO$}FG;@ng(8R1$J#&Zmtr7iQc=TobO$Kq0~&XDU8{%L!&9{rqmsV!C17 znSL7q_h1GaVe@2$nV@+wKcmkse3%~pBCId7c{ft>V@k6??aw^z2@$|t8v@%Y=9wa} z1Tu$dMHIv|(cOQVdH5gzXPC3|z!J<%F@iIMnRF6>Q0A^0xP&p^dmiE}a~C~~&oTd7 z1$a1fSvm$Im@^Y_LL!+fmw+XT`PBqmqM6w(I3Y32pw&2{Sf+(OGd|BWi~@Iod14nt z95b5gHu21vw2hR+{BahuI#44@D)YCWpDBuN5 zHEs13GK;<8Qp7Y;Pku3TYao&@VTOGS&Qj+3ba<9A`SfBaXO4e>!3ySV7kE}O%i?jg zRm?wVDO=67dkKRz%mFI^wam3ts;*-$e+LJ4gXvCFzk22pdM!0D-v|d;Bhy0dWG&2F z)Hc=1+(o6wHs)P=LANt!>;k-l89xGBCsRxt9XFXD(m~&1CMY1fnEu`nx0%iEuyr%% z>;-2JQx*zwpZPc$WJAn*JK!?Ryhtu1OgWWr9x!e9A;Ks#gnFgNn3*2X#+eVO$K@f@ zn|`ASW?=~clgu}?V0pwmL^H=J<}*}-f6R2E?TcyV+8sFaPnd;{a5=(ad&khg zYsdQHCI;qzF02SDvAME_ zX;1h#YcrLS+*zC-pn0%<4ubGxojnKP#dXgF&qMG&4TUQi%XK!}^`x@4>7czWAv^Sk=V{ z6v|q$0WM*zQo0JxvQAAS&^gu%G&2ro1#W<61go0%10q@47KkX;WC8%utnCKCV_0ue zXFx3Lb((;jXPu11;00C(J;CBwU(+Y0@hlc?p(U_pSAa8-WlOyyNvs)E$4p^mQMEUf zwS5t6msstzW1Gg>bpwOxteeTeWw2_$h3ztHwguFgtgT7VvRGQ`S-8Ubbv7bovu3{l zEr*rm3tTSiZVp5q%SuI=d{)>O09<7Stw){(tUwjCLRKM7%!*h+cc2xsZutXH!jjEF zN~NqzU9gq0wou*e8td0U;I6Zt^TA*_>qj~T6|BGJKvc56F#ul0`mYLss#!_&g;NbH zo!Yc&SxI^f*0Hp^;Btc{T#Iv7&w8pFS_5nCQNSBne=Gu^iPbfVU!|F~g0?+cSc_@L zy_LnI-Rd^h$zrgyv#hZY9jxj$q}0h8r|#M=)`}3g+-614-e)%}+z5CN%a>N=cUZo^ z!giNc)`r1eR^fhVeXJ2$%k;CFsa!k2ntBYDLDm#C+}~r(W5ITxB{2X##QNtB0u8fP z_k1_$JvY&P@iBsQn|>D-Mbgm?(FC2DdoZb-~v27 z*$Z4T=*7OV5uV=cnL~(hl6{}Ht$f(QufWrnz5hD0_G4#ISbuib5*%~@J1!aNo?@qb z0M9`7d_A-v_A(dPPP2bo3C=U@(ng42Hg^)yL)doomI-CYFNPMzHY^A3Ec@+$k;FOn zE4yI}XHVN9LIk^uwjHC{S7;?1!ycsV!&vr*m530>UO^ix@$BRDAxQ$;Kr{bD_PU2i zK8d}o2P) zo#n9Qusgm&g1PKRUxOu&T~!B>&#tHdSt0wv=U^#fPtYY?%w9zkf-?3qbqITnU48;& z*V!S3uvN03rYA!cJH8Sw)$9e2L0!Y%n}NYvb}beA>)2Q5iPFHHvj?_D_C|WFHL*9p z2hq%)Nd>SLwt+hPTiLl(1?XmcK9=Z-(kDG2(6F3f+lAD?8#`54X}r);c1ZV zFGVi**em*>-Dm4*T0hMG_5af!Hjg%y9;v@BdB_f<&Z-G^F+JcX z*`BocdBlE+D)Lio=eZc1W^W4x^%M57pTT*AbB-31wj3+XiR?Hr{z%uJ^ZYczQ{UYxFY*t|LKJi#eA$#H4~rw^xHYLtsneSm-n3bWRLaw=y_0 z3CEthkhwiEI=j4}-7bBr0#u5y~`30A=A zaf2x0M9l}hm{WNK2VKH>moCgwPSp3vvy9V7SI;%hdisRtIwycmT?OX@TBBETT*Kg5 z#W_jeR8(_jeTcytPBPtwwVanK5U7sxSY2bYJBaW|;6Z<=~CXSB&C`>bF z$PDT>&NiBqwsQ{5gRO%TPk)J{lM^q1%T3OvRM>8D3TRudizD`c=;r)P6~P{k<7#l; z;oNy2EO$A@^u0_k$AexdeVp4gKkMh@xFXL%&Luwp?r|PcQTsk;+xMUz;#B_u>S0bW zT?``}zoiflIN#D2aig3$D*zwk%%GmcVv6&T5Y&%3 zCv)IA%~|vn2A^=&yo6&o!p*dW&5rwbC2;oK8|&fXz*YQ&K}YVZrSNp(Cewn$nLGXw zY%biUEF|H|9jD9YIQJnfUQckdUWAJq_u9X(xpTL_id;OnUkIUja(imP;>}%n09l{p zelQ=NKHT@00q)CvmCA&E+%g`t0IuOG#3^q77(4^H+u8v?&24`N;tcmYsv!k)Kci=P z2-j%?&Qd7%U)421faF)*P9E4{EH(?Hr?=lx@;?n0f&xU6f_sK(uE8I^CVaw)L=D{%bLWlv$SmHRSf-Nwzl39X&Ghzd3x+%1=( zb#k-Mg5@UnTY8UmasQy@|7~vQa)j;XzCaV!9`1WoTf4*k_(z=GyWCkbAbPppv_|ja zro9N4e(r&lU>V@vrHzL{u2BrYeePcBMjPU;pm)bGH=QQWBit{gNbmvoI6YWKxx78_ z9OLeywf#7^Jrn2iA$K#qeJ8k~3;-s%5B`F9%-!@eSf;reDque0E~G!*c!Vd2gQqR; zM`}#A<7LxC*Pb^(ixf~Z_Qj#JMpCS5ID*UZ3f(#7d#2L3r|E#3|HRfVra*C z_vk@(g7-!?G&kOJ-$JK7e7P;z4`DeTwwF%_3T9i zKVEVsgg@`Or5Ft0MbM3RiuZR1JOg>k7(@@^{aXY0Y2IpDft}&C&QSP~Prt zBoW3tF$tElywnTuJjeTs3U%SU)YCX;5xkl)ct-L@=u^Ka-WNh>(Y)7a$1jHW$5n)l z#wJDeIE_%UM%40f#tc;iX6Y{*q+x0B8>pXWh;N?6CmF6mVS7~>=lD8)j zfGVE#Ke$x$oO0n(!#lqk3D)w|ec-I)EvCo)4c>F%5cRw@6G*9nmoOJvBkvBiZ#VIV z20_-$V^Ynyh4&FPjkNL>u_4-cZ_}#0ooDkI$U1myJ_2_pSx!DSrN51PbK8V}S_b>*yJBn&18n$j;DJIHFL#+6WQGe>okTXZZ){Q>t_P25K1#=f9JI2oe0}slFS@|3?K8#a~IC+R^-o z)1Z#wb6-Z-SpMAS5$`-7`*(P~@Hf%EOdS8*4tU1%Uo(L$fq#wmFcbNY-iAoxZ_P#4 z7x^dOhD$PEPNmKi{x13mDwThZjXW>$FU;_9V|1v!zbNFA&aKaRsJ;Qw3)t&snB0suvPF+CiM z`Q?wHmGD>69#JX(;%o3M<1?4ygk0n2{shkJ{B0+ZQaOJg1GWl&&DZd(FkoI?;beE&2gSj+cpLDqHr|NesK4SrT84yB$SJqTL^t{#X+{`)G3CcfSqEY19V zdjW6Z|NS9EE59uifHwY?N6^~&&rqHn{EL1_qLY8A07=~Bf1L{ITl^E0QWt-pFXG+i zXKsMj&EG*2r5?Whazwbp|E3eRyZnFY&D_hM6AIDCzjYCwgZy&pm%7Ja|2hEo`7_x# z6GQw?N_UtqtUzWX{10fe?E!x-)dxrU9e)8n#+TklF5~>p8NfZ{e?&{K3I5O2G&#v% zvKHDS{ssCle2QNi0amRB%%M4;ISVJo;wy{~qHA2fj53!X^>&Oz`s6T(rjpPFTz z1e5fKAdU)R9)RVT;5zLvIt$DlNYF(vgF4(?G2etZE?DRbmlJ~Y|Dd@E-nB)#?t%xQ zfO`lwP)C-h;0Qexy#(HGAfC4%-XGdY!FSYj=OY;Z|3X?&Zor_QV3elI{(>5s;RXnP zszsis1h2k{=z)Um4=@-cxZMTZX~Eu~A3hmx!N#|M3lW6w#9*kvo+jjBg8E|+ zX9fSPMrP*(*XX>23pn(xLWF=pv!_VGU+W>F1k0(887+wCAnO>xXfCu^!8DZu&kJm0 zAub5c55O}{Ag0?lUeHL(fds*pKLJP-?4(Cml3@3zuw4}F)c}wzm_;k$6v2G@G9y*+ z{ntq1lHdf@bkYP9CXl5I66yEL5S%>=_+>%LC~%pAmDJ{wCGhD8g@WTv@GKG(ZbtNCK{3tiN(B4A zhi9q4aWiaXg6v-q@0wtQR*}~QKTtz@xghZ|I4cARfH?(>|T{v7C1gAR?p;0jPG;B=*_goxUv*3j_INBD$KRXb%RgmTj&Ne}n zA8_r0o%Eq$hhW2=6N1Gez$XQj7Xg1H z7`YE^O7Q&#M0hOFe2uK91@SXrdm`A%LV`zx9lt=c6{@Wua}Y)>1;A1G)pHO|LQk4Q z9~Fj0Lpvr+2|yrc;lA}Ca}f?xozGS1dJ2Qbh2^I}c0%ZJ1xdIG!@mQWyYNXETs(w_ zsVC7>__Pxa+Dq6=EkNEvu`9Hb!V#+e_z103>+%&|p&kN1;riDQ!C&a}3_JsbD+>|f zlyLeO0D;0ae25_7Tr0$B;qVVg@Qm=6Lg0dh`KzIY2z#Hv7AmYef|SC98=8>ISz(U` z;+!y#-X!6|uVVp-5FQXiL<%QL5j{%yP90pLg?paDV2m)n24u0qYql6XFWmYWI4=nE zqcIpKoIy{Ucwy}8z$FO3{RePJVnT-xlO7t{vDj2 zOTwWi(9(pQaoEy@g*0`@5C%~Z;j%E<3nEjvm>xP=!UcAScSZPp4@9=mhbqrG!tpwY zT;Z@MM4oU7EpYOMtup|)D%?T)lm)_>R7NWlz8VHmBwRv`6UD;ks6J653_F43ON9$* z4O=D*eits+gfCE`{JL;pAw;?GTiV&G5SCOSLZxusrvOw5?fN0Ag$L$?rA8P`)4LnO zF={od7bYhn>jt5l4@9FdfeMOE!t{%vZWeCxhiDP5ONXsh_-+`&wh8}oglHEkV!+ZN z9DEyRqEk4JW>zHxA5gxkXet=LO=f<;XY@;?+Qm2 z0?;e`kLp={!lEFEe&MgPU>gvoQssG2D0mU@dqS7j5aGUX%OnnSNO*k;wqfBq2Lu`s zrVfMifzXpWWk!WB?g3y-=$DCj@(WlEQgW(0zytqTh}}#EJf< z9fx>P<{&r|M6yXlPZYJ$dnHNKZVTmnrh45=NGYvl*UOL}{CmS+=Nm69#icR|{}Laz&n0PtFqsCIg-?DoF(V zs;Hb+bp@iT4*@6??WDsj5^ZV&OR;DU{oo~{1}eN<6MaZ4;p?JBRO2icWz~YZLR3gC zhLs{eAr7ocw1R46)uNxd2vj3#TMJyR=-H1Es7~}gb#dPivFK@2FLLYwu0a&O3R%DE&z(S? zw?!d-5Z$6=>a^$)Y2CniN5rQ6>ARvoA|QH2k-s8BpXm8o z5#gSw<^|a9i!!KMI3yaOPM~4YFij6eL_YM<>I2b=b)X&<>23lrCi;@zE90WVxrqKy z^pz9Roe;G$V4D<;Q?tS&(fj8Cm=fhrBZ?FSEJ=bmDjxY1nH>|arP6@2*mW7AyNK6N`OQ^4 zMyLF^c;R_)o)Fvp0f2}20IiQa#q3Iud5J^m_wyE8==VD*meTL%BM#>S?km>Q@8>5z zNWY)I_%6MA0>m@u?4A<)S&&ko*f$8CLE?`HcUqiA&*U@Wty^FV7Q4L;c$oNmHQ;B( zHFoekCq9w^c(}OU6Iz7$Q`&Nk6yLXlOO!Yx3%F?Uw^T-p5r0HAt61^&NhEk)JRk(_ zg1G)!1d0={rrRlAd@2xt1o7%iuqBF@(z_~IY)k#0DPmi9L`W6udm%1~FK>runz-;W z0;P-3(VHYgoJtSJ%i{fX$7PC37XqFo{&6L=E8?r=Etw5ah6~Y#Z|N0BKBC*a2K(TnmegrBJpQg8AsrYx=&nXkPy90Mk ztX>Sjb+JGLQ7-NXN1zJvYFhqRia)yq&MGmF%97RMZM2T75xdYlt5%#x+qiY&5}NGY z5XaMQe7!g`4YmexI@Q4%#UcK1X%a_MJ4>^;*Adh$;zTJ#t9Z6IGHVmRK~;x#@yC6D zcZl=odDbbuNfnoy;(=7K+!6<^g4QMOejnnt_z2C*yT$+g2Y8S8k41=nNBn&nJnxFR zM*!~?FZ={rpV)z(nEhfF)oljEhv@w`C?5I`@$QLD^a#2ymeGQ0NPIpJF2mx_HNcIC zchCV zXdaRaVgNiP?r%c#lKdNjl)NQOx-EPq^|ZS7lYGlYJb%fbJ#Yz-yh?MvQxYr96$2%g z5?~9Gc=f|}TJnUJ>SrXkAHxDQyDh17f%$JEZIus%oa%nmET$=_jdxlY^|2eb~$)?w#J&-&;h3KP_?q3mh zO!CYMaE?pn(DeMFWGR&bCnV>nmOd%jK`*IClDI0^rX=|@fqN|3L#485d<+P(Cz1lH z3>}efU5ul(mDb&bi=9+{9+}xo4b+6=Af3m7%~9$@WKPmKblV@59{d8fW72uFRB)Dl zbPWI(=^77cuF`^;(2h%)^pZLum3#rsO}cgvaChn0DkSJ3eMB8Lp3=AJNA;4Hx5Cp~ znzkI#Pf82VASEB^CaN0wN}cKRT|a3}J^=pG657ZKkcLxj`;_zsmHPsvXQ*BfB<;I_ z=%=NLG;2O1J$(y+U}?ffpbn9~(F)E`X;CR$!lZL(opV4X-87o>Y>${#1aOiize(pkR)o+MpDGslb4$11>+ zrEgGkON!L)42~#O`p4UVUy@3*epM%Jj?xvJ-q<0$;C|CN25J!|JW⪚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�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 z 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

LL`T0{<`1c>aNArk6)S2rGpQuo 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

A~7ZA^U5*&yLhP& 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

17wOa-uClG!=1rLlhF} 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%0Dca?gTF#?8|}t_xCC4tt_p|4bzmBn!A)T; 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

rX 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%0D{WZVt`P|es;_xp;;m=2ZK%#d>6 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�NSSnNR4ydr+C8&*oh#qIE3 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ࣃ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�F#U!f*qFFd=yHoYmJ%4LQryEi^dI3ayvjBT}q!2ECweS&oL z#Y8)RprnJT&PN}r*T;}ZU&E0FSC?5af063|jP}rx0XschIFU`L`OXHY7y0aFN8*c< zbfjrhjMIV)23atWWe(bTFdB6Z`D&Lb1n7QM{yew3AR&cjUkNv`F`2euL)8JW_ZDGB zaL~SAjwa_nT!Lqo_J_uDA;5wSV>uYH5bJ6A1>RKe!f2WfDCjW>rlG&aFYQVCxm2|p zX0#85{#7=NB^5sEa$EP=o|s{pJ=)u8XpNoD&V&dJvgD{`MQEnFe5)+={NR8YJ&M)nJ;L)&^ly(RPpbgC>I z14QOQuiYeN4w_`=E0&>26dHM@yWB&f*Pj(wf>l+@d*bzI=o^A>BN znk{{P3V<@n-Np7Aq}Is+rH8Jc4NimMu5n(z>% zyvue#{=D$Mb??=-$v}0;A;SU?xyGdJW8Q=8NmD@e1lc+&N%6Oow^dyzL~l+IgBx#? z#AM~Z88YY(wa^GMI#bFtN2l{pIu9FW5i-<@~$Re;MQd$+x3_9)0^SpT1=xKRo)3 z#WhOm`n%D$22n2~^@B$LZS;R<)e;327-Z{N)m~42k=zCum0i!N^LV&I407{S;GD9B z9_8F2Vq^@x@;XP~Wp!TzPtW*`w3ER_w^W{h)uV$cFRoZ#F*!`%btQM)hHppGfQ)SPGLfDtewK($9pK$~VLht$@`Zh4KYLkGEN*+DniO#vR@pO#xFw|XmFL-WugX4fauX4Q;ac5%?A|zv$`vh0b z-&*{8zDu@&#uGsg5P~#9lcK1RI$fYZ4XQAoZz8}r*Qg!&2nxFpU-D1uq0T9jybKO+ z5~Y;tPnYN|4%Zxo#Uh}f9&lI4%?vwZeSp02l6lG5B=jnUg602(+U7so=j4=<=kkQ| z=RZM>lq4^Bv5229D>Shbov&W)Kr2}!t(Vy+S$+z*wo7blNxiL#xdG~d&~!|3uiF5H zBL1RRnSgqL20Y}}8&7a&3w~SrU_dPMxA>tVLy)_mmNmX%;8p?>jwHKxz`$@XVNPb; z1@~Lnq>ikm)(KXOLQ#6EZP>O&|fz zok(aS7)?!MmINgk({wOGCq9|?1ROu`)QJ=w1)4 zdoRbHsS4^A>addSaIY(5JLsSw)h5{vBR7#BC=6)x_47J(-0_}4)MeVw5_xqZQ4f^@ zZ!w7D<{A-R5a8q`u74S5p>B;0bTxI0xEi1y;K+;<*>4{plr?3oVc=nU%6rTX@UTjP zOC<{BY@vdU@jCh&YN6LZVEAt(x9PE%$4)@4u zllhXJY@`q2f`*lC-gOCG7wcVt^-yMJ9`AWMRd6pT)gOtke;J&T`s ze|Pj3riMI3cHe1|pZOeWfW3~cTJq}=V5)F(LWxy6ClWCP?8#Gr~WDLbWo12 zWxVEJKg6L%asU5`Z;S~YWi-REi%R?1YQ`I&-clY_(#FVQ4mzSi4xuf znz3Pn3@+zAad#%7QhBdOX_&TRhOcv;h+jZYPa8xkdjqB8QbCn z-3#g`UacfCr^e+#4J^ndV&LBN(?hpVJrZYzw}#ETTerZHjQP5?nY1{v0!g20l_$#F zI}^V`?W0XoY*GsAPCn_KOGoq7j%qHDCuC#RPMY3FkX#bEi$@B3WrxHk%@A8?9-2GN z`JL5K(%jo*dHg`rVGUDvu~a&6&S=W*MPvs;4A^?)%z9agyDdyT=_KYu20OD)xaVi> z!}VAZVTGSy_2RJ-^G<}B9j?b*Fov5ngneAG1jX(@rt&+b+GDhrhG@LBJCP=~$dd(C z+FV4S^VDz(nKx*Md?E10wBXyaLaheGEJwEVLUke!I`%rB7w7LPm_DATuX6S;_H_+Y zb1Le1i44flBSNpC?rSPEK#H1(nFme30Llp6hYq@(gvuhIWrK$d=>Eek>7||shuV~9 z$Er!Ll1%tJwU@5?4iW1Y&p+Mbg!L+}&gYfYLCV_Y3$@h7^$w zh6!@cwtGR{YyO3uudx8q`>#_`Ei^Iac09+r$ftOP<76O#Ed1>epG%!$K!VNw~z1N zetGx)$rw0~aw_s3pAcZkErbHs0un1>Bb-gB89J4wXBnTElrT#qcd%|O$;(A{`|PO_h-fSHv7b4U@`xi-j^#0cA9b#F2mkTMstT z3o5KpOtb1;S2Kuv5=`A#H~Y1|eYy)A<<%LEhi}%K3Sb6jj(74`jOrg7$PIkxGa)Y0Jv%mw_tI2o_SC$6y42 zT%~Qa<`#%)1XR>E2UHtp?*9DMWmUtg0$GpRgmyk>duYv!5NUXkDTzL4tCTlMB~63q zOW~Mq1gEG_D}9T*akaRzhG_%TXAH6;YN15tcuUE9?9-)_uV*YLdrMO)kX~RYL|MEM zCm0$_`2knBX#e#7>FwvI{nO{Cl*Ts5FF&j}&{%02$rDuXaRfxV(GIEtsd12`{S5Sa z`Q~i#?(_e{+`IP1l_Xh$`YFVGlDaFq7!lNKFg=T4Jjh6qj8H_7RMrtglW<4?bv|Mb)2moK}=&wu^+ z<;%xkK6%AFJXpT`?(pj$_m6)8$RGRN;p2aLoQ(9MHfRMx@$<_$N`^(}hc+6;dkay7L)~0KU{PZs#gv?$8sv zj(M;_ZM2x90jUSN6WuZh@zmO)X27P9)5KV3`bzQ>Ccc5apsM93Y@0-q|A_GuY(|dx zWe;TcNw@$X9#(LqvX^mpm_Ct8?fr-CT^AKUs?^E2+7vyh=~z{Ct#R%Qzz3EN0(IGbW%$ zCbS6|ukdu5LPiqO+B+)a z<|(|5Z}Wm)5cmsOw~)o$AH#qX7j@iUz#~2G3$k8Tqvv_FNPRO)!JAcL@zdE|srS zAc)ZA?+r1QlHk2n*PF1@EJA6a%POREW2MEr`MFEhrN>tQ&nxtHi@b;0pJBQyapd)? zejFKE5>j>%^%IN@cCZ*67cP;&*It3yg|-`1jq_{$ERuk(zRUtrD(HGBm%L*iouLBL z^phsRoSjcMz2H4V)b!!uY774u{qv0+({V#nF;ErVD%mn16b{TRA*x1v^!-W^0(47x zCyCyAxW1oh1IKN6i_;M1jZ=a#Gqtc^ebsDV`@3nP_XZyK7}gO!pG1L+GQ8i6 z>!TXDO{%CSI`u(UNtUX;g$*?&us!62qbwD_>Dxbb-+tgKgy2DLh{N%EHoZFg@PRfi zoc{yXABm~^4>urvG$;@0p)yt#FH6j^!x~K)HC^!)Xd603?A?fVyxEpvOi#LT*_Fd> zM8f*|`rtkTK|5xEI@4$erZU39V!+QdjIbE%*n%L)68ij|sokSc_rH@kuC|Jj;F}{H znYc2?0|S2B(m3_d!_+Gab{&?mHMPUcFDH`f5A)-C1ODf*z1=TXE`IPcXc*j8(KaU` zXoys{aC@je5V=x4F8dy7^m5!;6>UsnUSJM<<9I4m5HP}9wJ=%}rayB~Wgs>=x#HPo#gMs6xx&5g7p zj;V(xu5OafzYO8(impWlnX~&bIV&5)9n`9zYyaUKI+3ni`|MZo#MO?aSXx{IDc!%j z-DusTAgGRl2R488cIe^YD0Xskm02J){jXyoh{`#kj6D3;BUb)pV^HP zf;v?}QpbC^DChAB+u4bkBRnj;>;~du$nj4ZN1#3_eI4m5eHAGSnEX%Q?nPwS z&$7G>VJsRn3*3e`%UImxktpRl2I0mPL$?ng#vtZyT=dB>B--z-=o8h?*n8Y@*S9v( zf(b%nqw!N7pz(vT7V6J~ajL^i2dMLEh>os0&5NcbJkzX@Mu0wTml4jz3W6Fj30kxX zgjiN7PPJdo6LZ;dpQ`~-yQ!<4HRomk)FWC3)7!an+Y9PqyP+a=me~bZ= z7>7N`N~N0+8^isUregBO?k<}PplQPWtzlRKVmQCEtJV{GqYL%jphmIwwG{0Jj#TC% zgo7Zi_9oR_vz-}EK!s^e0@s56T1>v3+)d!R4S+IvzNZleD~cM6qZ-e_yLboXIK*3q zavnl95!LAluwyaXsW*dC?_0`(Mc z<+RINn3@}s6fqIAWCcxd3@EZLxlOUpGh=>G+AEHC1Fsmo(ZX!{Tea3s`AX>laUvo& zF=E8ST*Sf2bE`rYkP|!T3>@iNaoZivXpk@>^3|P2KY~mKIp^USR5s*es8h(VOwMFf}(mLqvqwD`z}vg(jroCd{P+ zw?72q&P~WIN)2S(5I0>c)1(69jmY8krV$I~hgzmvzC1pInn%}&G=qWny?nx!6ZGr1k(rS57c_#RrX)ie~(gSUhXnoyi zcYHw3vy5tgsv_C~6Pzy?x&ZHkN{YKfv*0Gy)2YcAOHq^PM@$!q0M>(E`C@*Zxu;cAe$z}GSj+AneQYDC?LH??2RH~z-F9t zo$r(ZP>*mfb5Dsg|PF)v+UWbikq0#SB4@q{DVw z2%S_|LD6tJnSmNvwSUR`^rbE#{!q!ci<_j7wD3e3?HP{ix=W=Y!zax>{2v~m=+kdA zlQ>MKBS$vxh$jxLEoFsdQt zL^ROA^_UJau04plu4kfh(>d*cdVu{U18+uiSc_TVgZ)0C4J4?ScL-fGQLuuhLQBLY z#9?17rrYGTf`Xtyui=KdL#s?ibRhKzWW)7>Nw&@>>px&8p$z33MMvA+$+v*|m~fHD zMe(aQO3_v66>C-)d=zs8BpCY>1YIj83IOkvo|b4~8bEBvkh)>d&fl%pYger3HkM)> zYTx1t%g%ABLa|}0^`?bhZkHgaZcq%D_s|y9BOStS=~vno_Gn1K>9_~QGf*JMJ_T)7 z1mptUEue}}f8v$RlLG6FNx+9>4`2x3Dh}Vs{OA)+>~V_p%yE3&4x+%+T#5B)CdOVH z_Ae$u+?*~v4b4f3n<>&b9RqEVuoIT_#w-~W0Ra{)nEJ&Og}NlkoMF&NT{A3my93QF z?@1_WJu+`~res}aiS{4XoAs7n861!K@Um~CBmS`7 z=XCc?Er%(hvt&?b7{Ufa38^V0A<(*@`iLgd4Fy~x8zsFoIuUFXqSX23z&^K&YqUw7 z(%^1-D_hNX1(x2(qi{2@24zPJs5D+5CVS?(Xe@H$JoA!*z^yH6R2sGWf%O=+h3QK% z!my|;PL`(ph?MJ3Hq%S)DJNebKJC4&OV~7|dbL}w&TlUek^u-A!t8>#r@c+g5Z?6F zh(rcQEWCZK(j=JVn};zxyT}!5_%6O4J#_`9&)IBwjI%=_TQj(QSlJFRgHmb8}li42^O>}_Nm{V|s zHRa`T)&@q%fcjd)rTDj3|LM&MS|2eDS)*=IW5*DqJVb%%H9@X`(MB9;V@jN(M_6fY z0HJ|a+~;grSE<(Ji21Tm^mRzy8BKNFKyDvW#6&Ks=l9cqTu4e8ocdjph&NL}#^2ln zj&ODNhpJVeC+!P;eYwh9)Y%((>H7s{bB_ou;zNVKBW3f%#(Ce+Vox^Gdrh(wGDn4; z@RQ>-!bk%>$PEQgH;|C@cXPTw$E)b1hISjW*M{UvBIt;d$tixKue7ahd-aWm>Rs6r za8^w>W$i@ZAgXkFQ^gimMvIVbk?PVTX;aDkRHjSknu@{5)IE|)aL*L0#m83754Zsm zTwMsPNb`ud1uLqgO)XZ0G4!1cj+Z(o2{T)mY89wnN%9*ytJ!I$iNt`~LkZq=fdq3+ zS*=n!S0)id&~j~K7h0RO+B2!m8A@rtxs$0-^s=(OMz9|+*Nku9qdd++g{fCTCjq%L zuuaLS=4JKF5A{Am2^CBZ2t1m(TEp!{Eduk>gR^rL=CtuQ7YF{Y^sZ1x{+K+O7_Ni(4eOsYv!1e z2>VlZNv%>#?OF5R1V5>nl9)P9ADPHE<@Bj!J+KXQI1Hlm_zogO`={7wP+*XaG_0(* z1qLF`lROzU-C+{i-?SZ2-y#DK|39+uGgv6LMSY2A93dK*c%c0C(1gj61kypc+R99yK$YHfT;G`P={Jhxo8>uiNX^ zu7(%HZ7p#eiU>%X<{nUA26;6g>IwH`Eoy;cF&U?nK~IdvBPfmUiAHr|T=WeV3UyAQ z^JA3zegA%YM~l_2tgqXVRSF@qU%KzUJkmg4)z)_EHxqv&1TH$2d4lm4dg%yd(ayt2 z13j4IXi@~#xegMMS;j{`~O`%~L1`59eJ)G{&Et1v91|4arX)_8PADL2fUvjOP! zPEnDBT74t5vVeL(GipjUyxaYOtvq>Yw*}UcYN;?2@{)Sy=Sm9sQP$PNPiP5~k_@y1 zu?K9zFdG*YXSMZZ@RrdM7aaTxY^TW@g=d5k64*gwEVe!4#@04-Zb&{dgtiH)NR9AzYUGD6U&Q_ zBU(Yf1Pw?Z)q;6|@FzTt#DB}^$M`@|&qzV^a0${mH1Vg&p29qoq1M#Pqole3EOx#$>Zf+pAB)dGHG5q6un0$_M?nvH~8|Xo9R>pU@JeJ)ABC_(=0aIfm zv$R7L&4&Iz*@vZ6YEiVPq0?;QH1Y1o7KT5N-TU@CJ>-k;M|4{5g6i}JK6T&-hboCO z5ICKw$6TR^o*S;Pi!ZwZ+Tr8d<8+eHSs^$j_)4g>wv}`xfXpW9Od{o?v&MH_BQ_VS z8du1v<`$;uR8{bn96fg}yghyTTdOR4~!Nn49m_0C+V^*z?x6oj#Bf=7> z15u3n3iX#a!u>5?kAGOfvrcxsiu?*xZ!P`xl(3fw`-hB&m3V6F^^J&Vs$^eH_gjc{ zJ7sNJ9%(LzYH(+mj>tOtaC?JH;3vO+LZF6|eT}yMV@>pZksc|#;LUc07#$#x zxw=yx1tT=&7RHD~=&BYzpAri%yIm|UZz{c>E7eVYiV@q+c_Y1>6^~CZs|^kg&gnJI z7RLQ5Ig3xjOJ|}VNt}Mk8_n%&nO0CTtnX7ZjhG8T;e*@L`T)2hX z31%7BaRC%2+XG?s@=CYR9KEs&Oz#hwGu)bPR*+r;#ZXR9bA7AO1Zkh650KSG7qpkS zhFIKNCXB=D41s7$klFw!oeu}DtN1QAh)KmZ5oOcabE#>8s4Ko??ul;_`eDs*c zA-2fS82dDK5L8^>*if~ZZzzreH#@lE@WiKHJnnVM5yUkneAUAA{TdPUdaDQ>>a!1a z0MsMpb^_f&vUssslC`h&auAyV(3%+H;WA&);XgRsT2WWd?)tVevke(6=oV3$UaZHM?*;tvzV8YJV{)n{b z_{UC-Qz3|hVrC}G^#q)sbO(K%CMgzx;ixJ1wKS0E5)Pm|%Aow(Z4vL1|FJgk1rIC2 zmmUyF=JvSU-rq>8GN{!@o)Q(N85wP&nTd@iYBEm?4>a#ms_gylAq&>cWG{yqfc24q z%(cgNBMtPRUI)Q6_TlxckMh<5^#FY9UFYICoMsayapG-%4|_z|?X34(2!jwXXC%U_ zx17Vja|rDM|M*;S!Gy%jxobR9Oo6G7x?XBd*9a$CPyz(7W{BmOy6%ayhx;IwS(&U4 zAei`2Q`H5%I&7d080|B8xItosxFw1o)nNhw?_n`&bx~k?jc_P-2<{qYRDV*!R^fWA zUu%~K@|rSD0T2(g35?X_6F`Q+g&O#pB4mX;Bg#4m>wDt#HEuI}$j(xwYY<&tG%HVq z3xhkLdPibO+x}qbp8dDpuZ1(-6S&-&&{szJw6-@;D~Cyn5}_|#jD(@o1q0eQ@Y>DRBKN-p%4>?6 zAMUI0qM;i3)R&e!TlDS$Y7_W7$81zWqk+bVK-d5a!h}(5p3h)ix)!X5bP!ESA4WG4 zC^zQ-^5DGbxr?un++;(E1=4u!c3Xr910!nG6*O^(N7V}`dZ@mx?ctX8prCVc`mA%E zXh+il>sXB408&8}*aA+ZSw8|VKPbZHnOoV^YCTQj$E@b2#n1x&c#L-WG)Rk>q=$%D zakcf(<85Tepc`P$dv$m9_vBR3N<942hf4Flwu;(N~p!a*E!Kz zm~MpzpwmH%7(}xU8`+XtPUXXDbBL6Z{H;YZQu|2MjWDBVe)61qB?ev6fi4+`B4Qo! z3W*k!JCQ(v(LU!;Zx}d9HCfUUd#Z4kju6DJTKr24&1hV|(A@B^+%zt9PWV5L)s(S^ zbRN|a`u>WXo(@7RA$~gNR~X86%a(8GO)TZ+Kcz3rp;30~G*^%f7n6eneh;Mz%Aj<4 zwP$Py%$19;%%=yB&_S*knZ&AF zefdeZ2nX%tFqK#n+CTaZX*dk>vRPpZ(LhOBP$x9MTH$cHYI&eS&My&0z!PBaIrFj0 zZ3@o1iM0s{n40s@o?|=@NZ^CKT@bJiYBX_iKgdGA&G`mVXgZ^mY9#SbCYA&tdV&4TCta4+)p&yYL^!$g8LAOf12iO>x6QnHE77Z=yYc_}988C_o@og>qJIAlESauh1 zEBU(e*m+6_(|cO7I(wA~r)I8S^SCOePbo+6W(PxSx5KHSBkVLe!uNt^DP$**_g@<+ zk=WA?r~zvSv`lW~DQJSsNN(^f1t7gW0AueVk!uh8Sc^KdE-)DtLKK*q2l}ND)sp4x zfV5T8KocqSa@X~th3R$q)`%Ty5Qg?_odg$3-p z2nhF_^#^&9MjTq28{-oQl0wRvq zKm>=Y6?GbMWI0}mT$M(p*i5BU*+ca{PJT6LXpdM6Q*-YzJ=>A&$2KQTHni$y*q?;? zs&y)n15TZ3KzcPi7Az2!z07!$(aRw~dW@`+WNby!1crfv<~Z2gsf{;TupBT-c1~9O zVaJaKxgBIUwJ(e&*sl@?QeoC5H;ceE0~H9gORFasb(l%CZS=S+u{X;F1xiRQgl!hH zS1bue8`ZBD5dap9--zd(Vraz#(MFH=tYeQthj2ZXY_va}Z@1OV%)dB<+hf@Xc9i<2 zb*!3d#~2gc3-TL~8fW@fl0?@)aIYp^#u7tcA#_;C^Mo!NXTw)!hG>Thnhb47Q)0M! z_3T8~U6gdNZFjp)DA=Vas)gM0Ett$~Qsab3bLm^pB#%kG{Mtz`9AuAuXHl@;Bogct z6e3tOKZGJS<2H632`iZCujf1Z8j=U z59mCCmX?nI(3%^|BEmw$_3w=vN;o79fI$0t$K)V->dkfm%GCt|Pp~wNvn?S1_BQD0#MB1fs^M%RN5@gRAr|q&dYX<)<_Kp zYcpEGf$DC=oDEn#NON-N>B<(S<_sH(dkp_qcSumib|Gc=#`d;*b{JQ#F;q(rJ*UeD zW3o)%1#Z*VXT~Xr7=91w1ab|$YH#Egr2cVk+*LEjXw;M$Gc)Z+*}`m;ppZb} zAod3WZRF(Juz`Z4cQ$=M{9%UEK5?TNsjA=5XvU?IwW6MHm#sT%6(zwnhjb+aS$>?k z7j`YHjgedts!*i?8$aI0#$>KVQ&AawVLBLvf+V?-PNnn48NX+4O@Kvi zEaj$Bp=hnSM|kPxq+5SCM&^ty%8Eu<^wHbhF_=yQ<;$i}bs3Fn8OKxwrkCpcMCOc6T58rAAoX}WqM(oXg~=_U(3tq^QXHO|KqOS~ z7mH*B9$6S^lEE~9L+ z1-JWd@^W8$>t@ojGQFF-@2iKg8_N+9Z!C~|X_2Xx_o=-%; zi^e}P1N0`n8`p?w<#>rpy>fa=;v~HIt5(i$`D(*ND!p)qeo2dhce^*uk#ThAxlJ>GyRHSOXHX)v+^I#TB_G$%c z2=;Z)_p6KF;qMEm`0x{n#{Tu>|2$`f;ZM(ji{s*!AOo}JSB(~)Gh75rjvbo~FA50E zj}lfSt_bFs?XJu$6M!0yrl?3}@!_`ORMH3Cq1bb){mtBS()&_T2GK(GR_%ZHH1qBe z=~277o*#JeBHzf#^Y1KHOjON30Ox#nGVyx`w8^z>PQguCLS`eG?EY^gnEIx4)ZWh?G*z8PTbfA*T&mp}5 z8vAUD+xxpC$s-J`!H{#$VQmLEaHN4Aq|@AwpZ@ZAWctRQ78nrG+H{pN0K8c(@|fck z6PD6}dLTAd*jB6#w@~x6=xDr+9*?CvMBX1xZrXQ&r)(FxTNndibM@|T7alc4@*rLg zIQN^Y!%6+AMcnLIkN@yZhR6%)2;5p=@eKO&W%#v#ugR5q+Hjo9KSwEA=XWjQMZNOq z34?>vPDX4f2Wl2H;GjEuL*EXl2h=6g2v1xo5G8e))IDw`lB&t%gteWmi3ST<3PTBS za-K_4*4#vIWqeRBrmS|btq`7`zB8s~5}+=c(=q6nrlc%YOI0`x)OBQ zqh8RHnvkk!hv?5|*g1wFTyvIC`DGE8`6De%&6!`CUiGI?%3VMF@jt#k{`AYQpT2hA zda9LP5md;0P4@?}_Ee`WvBl$q^suOwNZqC5K)p*7=_kC_;j9rGuk4=?idm?as$(OSH~IZD5L?!7fp->%} zy$0d+4{7j7(fN@)b4lPC1d`F&i667ECi)_5n(vl}s|Pq0mT2E)gbh&5sbF%-pVL3hwAl;^bm=Es@tqIUc(R`sBw28xmXLSs-=> z&<@|U10$Lo-d5=XBqa)+2a^}>J@gr@8`Tp92_cwBH+c<6qvWy=qenG*&haLCT8nMs z3BQBApkWMjD3gdT1Z$M}RB9FBq-Q($0bq)YWeCHpzlM28u?+Ex-eqR83k^btl=Hxn zrvs|9y0=X|v2SK|Z!`ywo$Rg7mr!_BV=EOkpky*|cMU21NnfE>e2THFx4YqbEDoD`z0%@^I6SC zwcp`#`Hg5wpGp(;u0vd+eE&XvtIg_+fZ`=}7Md?FsfWotTzP}T5rb5FNhF+U{6UBX z+Xy^Qd*eq#rMCo*ldB+c-SN^xAa%9sMBtZ@S3)v*3$x}Hk3Z3@MHnGb#W5$QR1|?CrtxxufC7n%-EljL+8!F1add88>jgoz z|J+=7f9aC4YCcS>M(Ql&_=iYU!8!4eCxkn7#>_CT(Z50hG=OIUv7X!`f~YV}Ht)`w zDZV`LL?(GBas$y|g;!6qpAOVl4x0<4)!beq7jsDK4hSTGOKbIEhah|)oaP^1n841c zeRq>SHN(i_9(@|)7v~mkYZQBGN?Vmh;iNO$);Fnp)P;ezjf!2|0i-iymHP>d6>tl< zabLR%w9zjP!48*FZYm3<#?l)ujd7YTZNXd3&=sBG^Lx;W)=cLcFWNGo0Zc zcsvI_s%}mlT(8adVhogX$^LyNHn28;ims7KIG~y?f>uR~k&q`li;_ywkq1j*wnh0EJ>UaP%A z!K>?M9U){(1dP16z$}hMXFuhJBL?{?MC|W7{?1mYR>D}=d#1$p_MOgIN z?kA%Y%V7p|H$OxeE*kY=EzH8iuF%teIlbN2REx4}Ufn5UU3&ydO1s=d12D`kBQ0|s zRsSR^q&U)YN5Cc|+#e=Bp=z&z9y;_OIYw`n>7KN$v;=wI?XluDtl&$)GbQ>WvxIgQLAXZq_}v z(&j2K%~wO2PJxCfA5o}OPJB9t-)N{8>72S2C+iAGA^5^ioVTRdu;^JAqux+`f zKoxN7e2QFyD+n=AA>Zg4!i_SJAQ%3`Df^KIbwfBKK1%5pn3~g!?+lZCXHz-RnO)p0 z!RO$gN|GT=H`7Q)lq|LN89RaWH+ONe)myeR1+%|Ahzo_A^+YfpD>mTrOaX^jt2VGMt0O zM2~REla+pWz}|lN`SHguU*9}@efZPkpFfgpniy8eUf(nBUJuDEypn+$qA0u)R<}|6 znMsMAWF^kSy*HuHx1*5E4>oXL9HUV{xhvv|bzi6fJTGj$et@LP5TCCwsYqj#ynQoel z#s;iXUGzkIEmsK7;Ki~gGWp@)9Kn_X>cm(e7Zr>)vF=M)tz?E5!|0Z=5jf2_ow=w_ z`}|1`=|Uc7txUX>?tmH9=v}u4;6a!8luOlkITyTvX=Hd550_UFM_aExLW@Xw(8I-^ zA-l}=n$vw@EJYF~U94`>nbB}(-#Rt5h5F5F!Tm?KHyebj3-?hd)PqQoArN-R>v6eN z*hP5@y*6)+ZvGmO8uL5Jtc}T=5SYGu?1@HtfmYP1C6}v2NwaB7rr zVOhY=*d8b0#5xJgZpZlAlD{28FS?0Wi&im=a(?~v4Y*iGM5F@nKeLhc&l9dem2E@k zZ0;NUegC0NCt$mq)ERUJ)@$)SB;*h8Va5SJn{XZSQ`Lf+FHs?;ID=c7D>5#3*`q^{ z#$=?9vbUHzk)iSM&M-uFrdSpe!505LrDD@g{bQFY$z?8v0hZ{1dH~A-gk*NOk|v2j zX=>E{LN=46W;BOz1q|MHzd3~!S_FJ4B|Tgi6*EE+aq;Tx9M>*sLEMxtK-%#FB06+W zu<19*48YWRU6GNA$~@aJokf8ZmUKC)mn{Pfl;A#rd9okmQ%|0RXb9Tf%2ZG;$GBy= z?;WCEQEsawcaUdY&HeiF=r%n}4^VqY(^rUBeg?fTrsX+n6zqlZhi7} z$KJk~?+|(wSW-tR1m53hr#?yLuT+oFVIU?;SJs^HDC0aW7B2@njs~O`7NRnbvPRP0)T`fQpI#c6>9BfKz||A3!kG_&5Dl?*pr zI48jv17U!iNjaUFwyTVL5@}iDe86}^y>1lKl2`CVEp~-?iz_|+)(BD`9P2SpBFgwO z4vcm}@lAC~EPPX6KHI~V37j7O4DX{1vZ=!S!(5b8TlkOIE*VrC1OJmWn7E&o%yN?5 z0_;LSedORy1EAhzcaDtlc;|#KVXY`jzlTTM!x}CLV@scadTqKri&WXi(}2{txxguk zIBR8+X5frU^+kxMgiAHrycE?!!~&*XA~?j2{(wMg_|QrCFkA4EFzJnw9u1TXr>7gb zw&R@8!JSVl96iMf2P_kq<*Qw9yw?FWHr->91Hjj6N_Itq?i17m+0>=2!C4LFmpi0* zL8+jA8x=kU4W>x%tmEqWtV zLELb)5?s#&X+9Nd+}zxO+Aw0h)MyU$EU1}>@3BKk+Tv-L$a1N1OL05io>88&@%RJ9UV|_k{A^xevCEL3zl109r!~NWK16?IvAXf zd^rt(dL3)&wE$3N)ZZn0K>?g%>u05fsZW84ER2-pKH>Nh4jyfyhj}uxBaC#f zxk58#T{Rp5OAQTM&cS@Vb%Hh-;Auz!hYj>u&P@2AdQj9djfV+H$HQXOETX{lmU^B* zPIQNfUEXi-D#Thl$psCFq#Ky&E^$&`|M3>qc`9Z=+g~x5K%EPlB;X&o5;_{i&ft4q z=~E$w?7z}N%NHOkOIh!N*h^I!2=VFx3dz>lY{`?rS@?Q z7*Zvj!*TJ!bt^v*^MP5BAegz<(r*pPbxoMyi#hIH=l8L~RxZOPJLcgq%I);hRGTtnMALc7)Vjo(RvYz#ePcvE zTBO$Ks4Cgli~k9uIJM{4&F#Tyc!a0a8<(iz&wC2g8kdRE<*t!B#QB$1mI9hsC?&fc zWPc#(qHlAW8N|CH<@($*u6I3ss+GQIwkz=9fy+GNGRQst^tV6%xrqr6QmsMAB%Urv z8UFxc4luo`d}cutnFEyy?Tn2y(1XrVl}vA!anmI+H0rb>Ni^ZI8oG**zO;||jrxsd zKI#SHZA-Iv34IA8)y}a8%Y<6kU+=yPP^0?>(`&F?RBKEXu})&yR8)U;?O>ut<-4dI znK^9AB~q%y=PcQrRqB=bhIMT!_X5O#5Q$LT2oWJ=g8Rq+{p;hGuh|Q?wsBuv;Yp8m zG%CL+Fm)8q7kjNBlU0}OwN9a+GgO-dqCcxe|wQg4^^i!XHin;RJSCc8&8gi z)(}n*jfGR!;qmM4V`>NQ3|Sj;Mz z9w{yv*NC)JR%DE}(;MQ*)PzRJ$5IYbQ>(@2DJkY#XGxC;Yc7*ia7O4UMKj2B*6fa^ zUIbVKAD~#lOL}p-8$O&PVYx5z zsAjgQY#-%traCQ3&;)SvvM{G>{0hRm1~z4F*)v4_SF5UI<9SO;{uGb1-J;`dY>be_ zlg>FHZIPn&ML{1eCw2}*i;D<8x#~?|ESrkaR(iW>;b)B&9)c)pNQ*)hAtnhMm zHUFUzLA8+5xXQRD-;i-R+7Ky7o#(aLm`ne8Z3gCoA%F%x&d`UDfC-(aFo+b2VJT!; zjMX`8*GhM5KLv?>Mr)TQLes>BmKp@UUy~b+_@h(_LP>5EFJ2xm_tf8S4qN?>ii@Z1mz+SQ8D(+^HkU%3sWG?DTuk* zw-TiZsA0zC1wrTatiLQfU|I)L2D_K2Yk#Y!`({DY6-3-nX#5#xoK!uHJ$e3Hu-R1LFMIKIVSXSn}jIU!4&tUso!fPPC3jPStrD3l*q@{3Ag&yZdr|EbEUqZQIi(? zo>n~rTr~iz+fK-1@5ALCsaLvkc`-DN;j{Nvhhs`YEdo&{sO_Eei|fU$ymvBvI_5rb4+%O)^ zK|EHCIHC+mS;SCckJQ{rMV~s%P9mp+^V>sqI{0VHP0|>~poxJh7hsTV{-nL@=DGmT{m=?`MHA#$EM zY#^>CAhzDl`mrNv)3-3+#KslidSITbTF@9qC?Y86{G~2~7;mGOa|#k_8@Xi?R8QEp zwBSTNc4%R0E)pK%McfoJpNp<#3O|E=$Zlc)nFI+69HSMIewJf&(bj7s;_L<4NM#*4 zH@pz?4Bj=y5#qEXl#V5F=sGjfK;5x=isI>wc$Cy{-&MpS(|$f%nEFC5RNp}+42Xz1UeY_sf+9Cc!-8rMlQ<6&%Ucyp!G-b_ zFab9dTx@%x@er=QaP#1%lELt-)rYhowbo#Y(6yWT4p<*B6lQ@iG2x^ph@Z@Q`FLM5 zCg0zpq|p;D)hAQ`Qjq``Kix+`?T*0p!4V^avLY_-8EvA6%l>ows@2W;3PIG`+`uQAQy`8nAWQbXgeaAwokD#lUT8b@%+m$-~3^aDDQ(Uw;1a>&KrTPoDp` zFOPrwZ`~C?@qig|tD9K2k+Jx$9}{_o0~0nrlSiXdZrl=aAISVdSX#n9cv&mOArmvq zm-{8If1v9@O<7T35228%2n@*x*SkVBE!s{V#Ue7J7xqr#r8woUtoE8(Fsh`IwI$JQN1)CO$MU$APL{Y zTA@~0o#}(e*nzHEnj|k~RYB9tl?F~xnuq8PVYVly(=*GqmhiS&MW+gzLaYoVeFqnf z@R#aCR>a6<<+Ab{p@sF6Hma+!ITKq^LoQg-W)n+=c1EY!vFFSXrmK%&@u z$0T1Oj~w(bmeMW1QXP`z`_e<(6rj14z~JYG&O1$ z5gCa@6vP}dnD$VOwa}PDC$j&ry}9anj}BOu(Bq{H{9SGPOia81)g(6)sCM+_*&R|q zpTp6HeZ1R)DG)*8yNU7uHh^+msIL_DXb`m#R2jFnKOVaWkzV;JNqG|f5&jEM?LG8N z+T|f4ilWUW%oj~jafkp`N*1*=?kAaREti*9%SMtq0NNCH0X2KQMXXH(+!R#}ftf@n z7Q^+;!PDtPQC%f#cwi2?!!_WkAgB%A$L1tgjNG^sTJu3Qqre_;;-|7y^LloR4ZcYi z=1;$T`tnu2I3zfZ$mTUGf+Ce{=E@~}gkrFuX+FWS+7wGF#p!|sgPt9Tll(-zo`I&1 z`vGYsv}Z_dGLVoh(zh}uReBBbh5JpfY94^KT3W-!{dNn`Z!pa4D-aEKc$K-{(EvQc*=qf|&>eWGAv1DanM%=4L zTbRDf8%OqaNG1$Y4Ug=v&3k`PtJg=DV7hvRGlPG8gib>b;rfi0#PrRLydxn&&bfkP zge{SIk)~>OAj_>Sgf%_@vXlo%i&H}{LV=Wp6ho-GrUMi7vFFe!MSYToXXo+DX#3V$ z1P-7vuds-Kw1T$Gm{LdWelr|GIB0A@;sOdpZ?P^@v=1SKdyj`W!cy`OK~kkl1;iN@ z5Sk6`M?;l%Q6RRV0M&4~hQyx@XDI{K5xvXfZk*(TCJ3aZTV)V$X0r^H)rKn#c7Ok{ zgTIt6Po9g2Vc!Dv$$~uT^8P)-z#;RxbNqR&J%{}3Mw=H)U4VL{ZJi>ecXPLevpnmp5`?DwNUp`U)=85{r zOGI@DVN&&+(FT|(AIb6>TbhQO_-}KwTz#l&wq1l;`o3b#4aZ(LOxG*zmvLU_74 zwu>{1NRTL%9;y#$e#~sJxy9A-dhhyOld%amlPHEZLQY#<*T*OYR{?t=bsA?8D`8QE z27NBTI(;RIT4TzetUlp|qt+0u9j|B8D@0d?VCaC8xIZvF?={SY_@PrIAv0uRs-dJ= z6XJP~4S0C(-cy~<&mj6tQXi;C(n6uRQ!tgh#Jz<7{3ryd&z5=InN0zi+ zz@eEzQpaxAVwv%xv`7D(m})pRr^_iP!OjSiX>jjjX2LDlCiZ4^f3-O;6M9KmQ^*NS zIAdgm+a&5}2$>GTfE4@3gil8r>9abIFh8KD#k3bMbwE83;$_&%Mo3&ro2^)83#PN` zvxiZQlHi5Txn3YyBvO)W?xc93Ne}-=Wg~AJ5_OF0U4+m{L{?$yl&yrMevEC?Q}qL| z9x^`=W`;*_26$Ni@G!YQXb)RI@VTU+ry^!~K=ydYNItg(&lkAO60b1K5M-xw_}rWM zA$;`0+$6)=X-!gl|B~NpW#Ur{J<8)IPoxc;!&`jWfYi9qjEq0L-U4T9?%l3p2rXam zfB=!4$|H1{LAeVQn118qC&UOm{AcvTsn?MPdU1=-A&T!Sv|*~r!fFeJm=o|Mm)hpD z?s0AB$|7Q^xJb8GyUn}?+`VY3^*v&MBla(3cESe!+xz0lPILO%&530jdT>^_=fF$II&#f?$;SHEY-P{(4&{H`O(> zce&sf@n0AFIMu4X5Kveud-~l{REtICpAy>Jc1M694Gw%Ij zosn+wf^(c?ur{UN$%*NN-A!dpS-zelqPAVu#xT2~Kkx%`uDAd%eSHAdhZ+4=w~>eL zMVJig>Wj#>C=j5;1KTfAlAW$xq5cJ;!!|=yHoV;x*nSikE*LZ{Jp0%>b!-S%&u|;# zgZL=qH`wA7nC5bw5*KcdlDq|`S2j|jvFnNccM>m&{HeFdfE6srVgOOU?21yXC`(d` z1WF@yYAal5=AN$%5qd$;(0!1TnV&20l4e#aW$g%)7+32FzinHXhOey+W!Jy``03N* z&$vIH+h!kAsgdBWOh3WN) z##PJ&U57!K_CP&>KDa<>u{cZE(yu9CjUxoT!)W0Y&Pa|fs9vT1$nrpv>O?HtA$7N| zkm5&Cx?vfK)MZNAldCVTV_{2oSZ#tkfntYfMxK46GW1S#$LpgBGhY` z7@tDF$~&Nj!8#n{oNi4QXIH0gYhWR3PVPr~ZwbHFupuo-UnI)j&aqFn^9e<9%Dj;) z^etW|oN-1XepNIVDhci{Cg1VeILEM-Z6IZg6g_tx}e$1 z4NZ!SkgIc^&&DFq-|H%yJMtwRza_c*@%n{hyCHOxa{%4Q?2xYxSEuc zxo5^Zpbd>kjo6dw1>Z(gVW{hnzyZ%AH(8Al>Sgs;i=SOc)0S;v`jmv85dA@0GBF9L z7xXf>*9^_3t30hoq};VnJ*T4QeTb5tZ;&f%QfFG2Ix})1<4RofA;};-B_ssb5UesC zx`i_MfPAFQ|90QaCRgtyH6iIKpET=qQ3Tb)1yXo$yeKdu@{z^Y0t?>ty@i!UrtElk zcfFm6{wO6)h34L38M%?B7X*#{6MW8s`Bm^<(E8yr5qllTOMptMx?i@FOH=Bn90g2a z4dP#$p>H0*FzqAexNFQI>lPD8Llc4s0;t%jjS)cV+K|5Az@2OZwZPv~3DtJ`t_IzG=hy`{}cMXCuHb*oCT>H#FP!?=)MEmlz^K2 z{_q~;CLLr@)#jQO{;Qko^fcsb&YCz}uX4?8gph=J#A?5uQ-AyabJcBiB4A$NF6Lr& zwLtC!st`3tTn!x*56PczWz~mEh+Usi()wm*p}(_Qn5I>)GqFj?M5CnFWuu47Eeyug zLE*51`-;psYpsUR`aSnR?z`u>L9RI3Eun)+Q9sf}WL*!K-fs9Ekqph~(`BrbW2v#p z?_F5rg)(UrDJ(ZQZOv`RDGNyXM5T(j>6eu*3a>wGdGiU=Z1E;gMpFyr1FNgZL;=Gp zBI(w#SF=bywwjE$4b+dA--{F@{KNYaggg04(0CqBx`^%$wU7~Ixk?kD>9O6GTn@*O z=F5}O+WHnJ=Aa~RXVR9-=}Z?Wk&5B8U(auulht&&xk9fs%5VB`eSMe?FFjx~0m|y= z@`s`b93_;wF!^r#VS5B0$xZaI_0R=KlCzumB^qw7f1I=sUK6!T%>oNSb0nt^b!akGV3e8u%d zSc;K0c`_hZ#nd7z_#j9o0=rRgjnMKOLMiFnp(rJabn_<?ER4m()3 zW;=t?2I`Y(%*@l7He_K~pKA1Z9>RgK0ZrU+$~+H(4uaEISkd6ErBB~dpBSnc zXN{T>8{~yK6hKo1*&%E#jqRu#)%jL2Cxb@%NF&}|QoLI|PHTYr^}3z-YJTZ8oOO3(p>pVNt;9TDo2Io^f%FPh;oU; zDEp?NnIeH`+$;))fh^8d^S3%?mx!N2o2by^9H|iq6Y*UB8%IIRy=+O3*D#ER*yZ-1 z@z9f0mJyo_P}hl&!q#JELIylYs}NJ}8?I@L3_TEU8xh4YdPBoS0wwiJ>PdgZrq|{2 ze&0u_46&tTO~ThMgqFNW0olJT4`eJR>9=&_S*{vE^9wN z0P7*`4HLpoM=#X^Q}eQK$RHnpMMFeGHYwGUEidkZu!=NkTUu4RdUrny=} z)Mju2(YV&P0^2UZ&>xOm-Y3c-ZMT+Q8C=h_Od9VXk!2w7leKDP()^No@vIU}`&;1U zNXkQFEvwKFG`~qTGHIBcAyi#bEORDxJT7*hAHO^zPao<}fZ#}@zm}XM(YwmA%Ec};Zyt(ShN=(F}B2FRkBW}3bEUMu)uKor5P8NmgasWpLm#20Hm)8#gJITv{Dcl zc*(}tL-hzmqK+KKgrEfq-g+n_Ee9elK8lf`J&W)9QpK_9Tj~1&lzANG7Hzt39!5;I z+<7G7j)Ep9HY};Xo_}j$WqKf0Qwju z_~ahuk}Fm>Ex-Gp(UhT#qcJ2W!yIEpyW@iX(I%P!Q7-QBFIob|>gaM*(>|!j11(H% z;nsll4iKj-^_YRmu(P}fwa5`rBIbqmxDG#-dnENQ zx&pSSX9Bs}4Oo3-FZLx(oR3xFTkV3DtU`#+(ONAwdxX8PfggIe&oX3mgH4C~3sr?) z0I`bm9oK1)kZThd`-R6_sHHFPC2TZGzwKTw-roXD?OHZ%6x99K15(uRC%pm%RL9c| zPk~;OTTK<3iP#GC^6Iax7N(cN8{`s7v52t$8X*(PP%w0hcfqUMNyHeY!So94rLgE| z4|xNsjV)3_L=%dVy04oxTvH)P$3vJ%>4(F@pj_exqnWeg!6}fT6Aq?$z%&Aj$y03d zN+&2Nr(OZWsj0Bi)&24a$?X#HlG;njc5cAbyvYZ|2?PI4Ror8saxTt*KH=U$iqU8W!5d`hLyX}M}$pg+=}%ptFm{rkmk?Eb4TH8-RL(r3F2IjI#iNMCpw$Kb!% zM1|vO!FpdDQZcS(mO+aUE9#vk?A!)6C3hQaH9UCooYkJxcy+C~bCJ~;VKCy5l=N4g zAlGM5Yms2;3AYAQ10%ePKERid7AJ>AS*HBxV@yd)(!%vBA%cmiSD#>23s4UjvZLVW z!qSVhh-CoQL)wmDMkp?oR?RkOuF(Vrb_KqmHmN;YVIv@rUMrlGqKmz;NYJ@PuZ=EtdJYQcqGD2YEC(Xo6Lb( z=z{ubyuhRK#mT?^s|h0D8^~QDBWNI!X$@aS<5L*sV3`_GDR|N8VkD5E*Q&h&a)7Y} z$#wF|474h(SMD(1U>$wv8jH}L;98Qe#^wf$LnF5Z2WL zUPvqLJZ4XfQL`)VS`B{QxKaAMakeOKu17{?vBqZ$QhYc z>H%SkCbAma+mu0yQbGaDcv-l7MiZ8S8lU#`4#ybz7(4M8Xd7}SPV!K;VA}-bF^K#v z{6%|N6B_Ti*;k33qViV$*~PEj^hHR&JtOL zbL-)qZ*&U317S#Ybgs>k>9rAXd0#fOhfu61pp2G(=GixMniEp0ty3B9DL2$1@AUxV z7^?6}wkwNYc58V%fxphzm+PDB&4qDt@HHcmMtipH2Ie8?ASfbU(neJ%_0E33eTSIQ zgBney+)I$%=kD>RufKdgaetFik!6a+oQ@I1z2K^a=|AM@O~0HOQ`y zUw-0%i3^;M8EH@!7&8rPfp}e}$dTM@hl~f8x97ZN;+3!cow577R(dZ_jkIaFw47-PnvyzC=;4(t4RB`T_TPDo&KKQH{xMF z6j8{?RNU1Fnh8-gLy12BZuZ(&v9i_7iJ}oqinIuvk67};f;M+^0jfuSe%~aftE>m~ zQ={t?dMgf)>YDZS4w>hy7sZtsMAOHgzdnAR`c`x&Q0+@$Y~>5E;o$HfsN>=tkI{vxo#>oo)D(!8p+b`7dol;QBcb(2cdwYkOS@4OB{yB&hrKZsb+M=Vb9X zfmnd|F-47it+txGhENU((|Mq%`2rJd8@k4k2I*06sf{Za{yw6RF5A@osUu4)h)rDcJ&Ro9iby^YYL)o#(hi! znPPhi6Tn4hdg^Xr1yZG4*YLzbl)@tBva&Ww+4Ra=gyT}S=5wAn?Lyuv46TFSnDxKL z>Ne~BY_~8Cz;LC)SPThhi)zrzNLZctFc=`>Uw#zTg-QLq>h(gew*w9SZ@nMsN?4! ze|kLs^$R1b7$Oa7aim4lkI>D*TM_!q7DYr~+ctV!YOl)!(2hq5b04{;N|Qu9Q*9-t zKGb??dBg;_pNf(mEt|iITiEt-yp2uH4U+mUp8v-9?%;Urx8qBrqq-lov!%Lc&xI7DimMQCBz^P`xr`GWEh6%R#V)a2WS2 z($3(;C(kqQz_qF`XZYAvHMb&=uRfoiAC9*>8-k|}2=NT536if8zI_<%i3X%$0d3)~ z7mrpVBdeAlxQ(w&-ob<@<;)3DV`U<_&_Pz;l8j}vu1BjqO zsfkfnud@K9uh+{GA9ucZhu}5N#z}4vU6f^c;kQ-N!y|XAvZng_YZ>8$?a52oy zQ=teLx~BNsv3+o>P_Zbp&uxY4OM#Hxym5(qmJNqL0@rihMP-DE2nemZX$@e1-;}f# zoi?}^LJz?D9Onu1xLmDvyZfbhv0Bt?i|BK6b4?Npk6C^q^}wjy5MW114?4Ox4#Q4J zVK`iXEY~Z9J3Xv!I)AKEX?-9;{f&DdKpK(_)Vx}rjvSZadaMe>pqIODBxF{ho@i56 zY3ts@^3ppWchT?FB=Hv-rDw0kVgMT5cu4O~5qAqdht z0?81$dbk{qvtpNszF}yxKMf7Y1_)*Wy3Oe;(Q7~_7@S&}HG(6zz-^SV!b={>+}Vjz z(oE|X^2phja4vd9+!RTQd!W9pT~#$QzNu10Uct)kAx@`rdt@-wS!YC{QN@eFPZ3~< zR4QoT=yt_hm^uS0=DH6BdboviI05*74iSp_yagz%R70p)US=VYT!L&&CZF-JlU~q-aO%U8AQ`^aEhiVRZ=^84T+|jCJ68vnFT_4h43I$| z^<|&F>7Cgbca*2ZWe>q>P%eJ+@REA~ZaSIWAf#=jK4=~NWQ;mS6_}dyz#QIVJ09M@ z9km5Ch}ts14a5aafSc{{Vto*oM-WkyYLG*VgR%Z8cscmqlJ+f}IYH;iCS);<%(EgJ zG=w0j6XhGE7$`@id@0136>X2>6c+hs*1r^qSCM}D;iQ;g<`l6k+3NChJ1#CS3%PEg z3sIv_MLU{v(qHNv@*j)(-JOwdG}NpL4MlXgo=@q3dO*_zIUx`vw7r3v;b1OJjjV`Go<4bB_K)2ZN zi>ZAgN_w6PCa&QyF#SuAL3jHdpXX0Isp6Y(b2=yokSbfvzT|hAP zy)z{@m1zemxPs~=%-Q{^G4$zzFh;mBP2=P>K@g$f!BBG~6qh=?AW({&eD^g7BLg&J zmb8d^LHcAu?#v{5_Rp`MT>p(Q=-@~#vx#XCC;#&L?dw->XOr34n^)7>#@`FZ}arh)z>j|(-y)T3myH%Jdv|LiU@YNWq%T9}&0{df5=UxUWPRL+PmJ9~u+ z)kCf*B8HMp$&5noaL8|KwdhM^!CV|+5^)2c+{Nx)Py7twbtu^&fj!I8`U0!X&GvDW z<_M4)b6wd}=xgu7K!p;5G5__Vmp}O?w4B`tHR6t%;i|$YB+44fWzcIu?6@h4O^PjxpB7D=_z@xYV%p*6Z43D>YcP9EG_iPKo1vSm`C|* zpgn`t9@v77s)7R4&kOm8Ft63Ts6z9iTat*_fO-9+!&qhoC#M{A38N-FIJ( z-~mffy@~lCNgT+_=@MM;GZPHFhk-tS8A_rNLcW+`q12x64yc}(*aU)~<-`3x1Scep zNf9g-m=0v4N341@He>Y|(Qd)mwHJuaeYv=LSCBQU>5>=#^PZo|L>#J_!gv-uSyN%W zZZz23-x*fsjZ1XCT@TiW=%~WfJo?HTgfzr)>oO5igT7gf3dd*_yR@6J@iuyQFQRIg zr5>m!AlKuhp6^%llBVVVRhXY|WKcQzum6ILe`DpRA&v!9B;YloCK`nwNlQ3i=(cG$ zI1i)buqeAu`u+qt?APw(^I;@MHg$T9WR%1v9_N&8>X(U z=5mvNnY^8zzMZ~#`|{=K>o=3>%g66tuUn3VVx4_)`zFH@^1u20fliL|dqrH&r0RGJ ztz{;f`g^g3sk!b4@FNs+DL$!2Nw$jW9kU;3Q`@a)3bF#@z%88GBDBtID(VHZLeF;| zCO_fHv>*YSt`d7XH_74GNuOg!#(Vre?0|Yt-0d_)++VrvTV-u$g^;Apd#?hEIWd^t z2g{M`jZUn4+xLxDu;AO4R(`Bx*K>HD`!NeOgwHItS0VebuF@ zCII~Y@Wai*l@2ZwRFzux22}la9l~w++{K`-ZlPQ}(U$gtUaFbjVB$;6qJ5ME=LQ8f zyhn6*iMib|I#ufwccB)>WoZYU6>YcU52VUp)DD@AQSJ!yPJq{fa?g}c-tLr-Up*DeiEfuvEn%@hu)0!~f zhzokFDgx-=gTmH2RGCoKyz0Z?K1%v#+JeQ4FfqLYa5HJ{aWHAvnV7Kx)FYaDSKYi8 zHV++-j6LX{Ob{Y$Vs3t(cnPL?+dUm4L}VPmXWwlhj#A4isC2W% z{w({h(m`>jk}%KTA;Xx*Lfna#0$F5n*}^v*!D6?|JwipjU+_}Ut2n;K7JbP{NJHw;`&o!Yipj0^rrqx$b)0zKwp!Ls2x5ggqsabI zbPghCoX~&(!_t3PM@Y#KLPiXpf!Dj&+T68RjwQ3KkigdRN1;GHK~d7ZkjwywB5EV~ zAFIs6;fKHsgJBbH(@zYi<%}c+{qgL8ntqZB5jsS6d1G0>1}*exPr*QRZhRiieDOaX zR(;YGc8R>!lf(h%SD0wusum6TzyJRB%j4%SzyI-1fBpFB$3On^ACI4Z|Krb(zy1F4 z)0aoOy!;h$Prf`%k@MkUI{Ez(%=hPC{_^nWA3y%_=f{V~PmiDf^6~Na_rHAp_rw2! z2@-B{Bz;@_`o~A)nEL(I+3QyiKjQH}{`~RNzkm1FAHTpZ^!LlhKmPg`WoTC7KSVr* zjm=_$0+)z5q4+J*_-4>ZlaYzVqzlji4ts950FJsvj8I3tfJ*&LBTVwXEOfWvwb#v8(^ z-WzEHR$Js2;rF9NT|g$CUy^k8bH{P);H=CXY{4HOkb2Z9p!|Oz9G`Q>c^mx?kW5PnF zz-Y|+?2a&Zpd$hSgIDup5U00HEe6S)r3%7{d#=0CiVq1XH_b%4)R+}mQ3RziwGl+L zR{M47KDtd$a2tta=DOpX=rTU*4#eQnII&@ z+flVi0JJ30*Am-C*~y+7QQt~~s#f5~56k%-VmB&b20civLLbs@GTE(cQTRqpL?goish@9R zTz%M(U@B8UjF-CV*`s7b%in6M#qmrA^+qy_h89-m874@gpFNJYOe=jH>4)S*ifBFWj&%`<4v8M3KZF9Rl z_f)I0EwF`w8X@xvE?0Ik79fZx69yZ`RV1d%C#{0@Hf~SYekc%>M*|Pyrv<5X$@BZ$ zZx5Fzera1An%BMs5fjvrhcV(VTl9jqL1WOPIO={m^HE-=G$SFyz$L+7QEpwGUZfrd zgU}|+?m+52HBLA(bTpJ{EB=P$)S|)gZZLG=z4n6j+NQVVfrj&&;QDB=?ecvrx0QK9 z^7v@qo8+|-!^%m>pdR1fDPMI}yEsxuKw{CA)!}?rr_P;)#e$^dO7KZ^$lPcBmB1Uh z!Zeh_e|$N9gmW&qPoyNq+`+QMuOyST;UxRoyYQ?R9BQxyW-rZQtvr(ms5r1_p6%w9 zF*`J)y<~t!C`%SA_k3`{X%8!_P3&;EK3@)Q-LTnqpdO%3)5RmFzr8g!OMDjh5{_~W zdo|{3+c(fF9jWQ2=qI>^<>tC`LmEMa;RBQgI2GnpcwFIvnBUM^1$xE(?Fu2nkP|xY zDUhOzBx^J*FNO2dl9&WmKX^@sjP>@UDQRb=m(s)~#N2v~D%8paPfq2XJtcWU{6;df zCaU25wmYVLPo!Kz8)h^I90*~|w7IKW&n}QBT4_LmP@8C!zIEMWe6)!k?rw}dlLB^i zs2UTgWVOM##0A%N94gwCC?YFn0va>0O^ngOWvymhh%94z&$K%O!I-|@2jvH&g*9ud z)ZDj?l}s$OgVa1ZOu_{neR(+C%y**R)W??y7*Nyi$oRvNIVC2VrYd54)o?BYpgw5J z2$h7`Xn2jqI{T1@a6J~&OJ(iixN>$+QY2F!X=3~x7=UY(ithR99Ur`+Yo7JLkj&sM z821boMdNepK=q<*B1C_rK_LDphe%_;`&1*np%S%wQMuhm2VgzqsDyaKh^B^t|3 zfyiW8GNwcjdW{i;x-V+l(VjpXfUUpevJY3xQNVu>e`ts;@!$9k8BO6K*D-z7M)xw6HUu?nZNL-On&0Wu473$WCoO)fr zRZoS7pl;&ME{nJz8Amryh<5{)`jiLaVy*D0ezv?0K8HU| zt;Y=&5`4smpYB%s&F<0=E2a2hQ>*=8v8Sy|65bwDjipe(xmBw3bvW3tYEJ2arWtaT>`-;!(8xn{-a zDtG(2;MF4`_1+&Hm~5 zBjm)=Ql#y$+b=HrEy6lIDZQ!LdQIUc*cR2IyCuM>IJH}^6^3YV8f{v%2=)Qd=Sk$* zaAatr!3MIS2&wnYZ((X4hHDJwCeKFtZYZ)F5k{qB&aaT5@%AQl#0ZtK7JBhv@rjfy zI3lQcphLf2{2=V2T}Rv(w-sd`hvjCAAe49z7%3PhQb-6)3o*l{(9fVj7cXg*&l^UY!bqq_Q6E=?SpiiXIJ`whZ%s z{Ew4wG}Bc1a#!mV-LR+OA~OK%p*Rt4FuAy-ox)h9dRqM^!S95>lEnPnr7O01*cO{fog9= z2IKM^jxg{6N_68mN*PS4L6Q{660Y=JS$(clO1!`pw^%)oG-y^R4DT(aLyL7|!P+*~ z@s33gm99)awL8}nFp$?fGmqIvsZ6xl0k=HCq0Qrp@z8zN926W(>LcaJq%n3{KZ z3{t6fSVMR-BbRXHWm;_hTlyBgiz&&CtdCeZQ~1*|<0*21rzH%!JrhOHO)W_8B)N~R zfkb_)^+_&h78@SoIM5uBs}y??GR`%&0zC{!?SBu=Q19u{ko(p^y&zR3YzIx#3dr(K zx#5j1dMk!f86Ds)cKX1m2=gP@f``lx?yZGYL@W^& zHJFR*??%0;R+F?2iJXbbisZy84;Sd`_;fej& zFt|NTuMT{PtLqMG%_2eb#T$V2kVZd4U#e?vl+=rcy}@-ALkt8lfa|T1C2;N$+(M`T zG6Q4?*dj= zlW{q-DhkQi)pj3wA4b|~T(+>nCy3ZV^Sxpmz_LE&7^R4i2Qr6|26}meicBE_x@>@o zs?S#+57MGS{`t=cu4)VE<}V%}KT7Ilki@iV#0}fdLI+gu90StrGV?j9TFoeNrh*H^ z>wwj2VQQ{3;pqm9)?7zP-PFEYUQR(u&yRCsgO9bWHgLEBV#Y$;?m{zgGC4gp!MH?8 z7clXVrPiht^`!0gCjKhY(Tvun_9gwHBg+z-!UGVR<}fk`N2v^l)=kW}CCWMqf)?yF zzrP}dkAEx1s&(Z}YbRW?PN86H{2(gxU`6fvKG8@kqS05oeBV2%qJG{@%`^Ux!XYNP zSKD_$eU4i#!t0L-=PFFiqvvLtvcQFeGw2cBE$s37B9#q2st`Cq_0wv8% z#WR^yM4=Ab@uoYXM@eu^o}IJ)?rT8$l=i;S_`Qt87Pfzd9teE1VGAaMRlN&*SWYfWP2i8&0L^xux>9<%Vk=R$R!QT z>jpt4QgvQpaok-7U%}rtbg1S?cwGSz>_0dkOx0K%VMLHa#FY!WyCc&1@JwUJ1 zX04PeR62toQmA?c>TCnM4d7f{5;u!ga%+3u`MBvwOvaqt1erbwnTCLk!YA{=e%2;h8C)4*Ie*qr)I+E`>DWzbRzJz^Q7`fY`qSGR zaDNv!&>P=^gNEH5Tp^dwfBe&*KEHrs~{L>4E{_U5K ze_}}wz4-2b{;jiBP|S;gwL;XEoe!A<``M7rBprELAA*@3nEGnqq3`dJdk3sj;wpe% zljFCCrc2ic@N3wji}uQT%NC+{$1+A#!^QCfeBtYf1Dr?Esx|OhNU33hU)@Y!5 zgtjnZN8DE$I|_H3t8&WSW`Uq zdU*x46c0E4UK~sKv`Mi8fehF0^RDG!KCfY#jSCEymn}h_YpG(eJ7F0P#(=DTNyx53 zv$^^l-f8cYje?ou*5rnziRuyG?s)B%$C9DjUw)e3C|YlU;YL-?ureu-=Qc#DPAWYmLUC>RFWHf2%NE4IIW#bQuLUeODd zle@+kqKaOcYCSv_R|DG!F(|1k`X*G*$CXWw=|*^M!U}T77f?<|)`U>n($@EQVA44r zq`I(CuNl->O}OSdVK3;*?W%elt+L8uuM$^$T)|*0vBfIuJylK$aafX?q9iy-D&rph zzon_1yf?2rM~u{)n2#}LtM&7!)tV|zhRZy9kyQ&*b43N1O>tZ;+mL43sCa~x8aZzT zrpK!gdUd=ubsEqB?fSv$Kx^B*Ap!Kb4i`3tvR|Xdf@M@~@thj%wi6vtud$PLAV)W00# zg;4(ntdIuxf3x={P<9p7-}Vh*mKm9+W)4F_-`itElpfPfdP;X^0K}%#=|ChTkc3G^ zMMOkIMFmAf#0eD@5fK#?Cq%^w=LzQt1r-%1RNmj-_0&0a&b|5T_kQpC*88nRmiTm? zs&j6gIyLOtwQE_RrFHsyKaW8!cIk5HLAypoI%nsi%>e+n57v|?YN;bkCH zr?^$xhV60!uTcfvY^cThC2fJqYO#iO^;Z%lLzknbY^~UaE0+c0-T_v);-FfH^Is}7 z>rq!JCj&w`)^CY|isbiHAr^vO7eetC6rE;*kqsO<@hFHZ{_HvdnAkz3l~~G*^lZ znN6kkXl$mbbQpY9HFK#QA=b+&PT>-*ojpA$!g_o1eYiHX7w(7$pu{Jz`@)szW-71a zI?}I_UiS=Jb+HwlWNUcx5zDcDi$6m{P=f|!{sB31$W zHsPu@{>+=)*r+sR+OgzuGPq3(ukm>_8o9l@<3Jkw-MGM?3nYmFNFM3sWglL?G&(bX zNjf-2Z6X}xY-WkJ{1)vJGvkW>TKLh>biGPS!+xXC=@RFW9*uCcOn9IU!1ov-Y7WFppwzoDNvUcqu{!6wQ)sMJo)W;-| zUO*vhL4Hm)B3O;d|@@nN4gim1oO44-=VO+h_aN z)LGd8;ri&PS!}SwEfk4fXK1XuJX{sy{C8p|Y-^DF@axFbZCal#T=iG;uN3_8A&h2I zz~)dOOoU>{?{X!#?I*5HjZd~Pkc! zoH?5!94lDMf){^u*}!~13;K;-X1T(-v#>;67n#*VcVw=9($qACp+|X5#4M2^{Q7S78B zbB=~8pe)WGX?;M!xE7^VqOvMP`%R&7pngeRoD~+D%D-NU^e1JDf2Ibtu03>swX6;x zYEnDhVAi`W)4I#Rry6X5Q}4RmQC7CosaStn^NN-aWTn$clTRDP>@YaZDDl0FIdg$89IjBMl*S|S9c;oOtv>+F4)rPwST;KKvs*^Gl%`q zN!XtsvleZ@6`s)IOdN=#v8gO4c#I}5ae89Tz}52>oPnz$hW(m~a9^vsAWz`ll9I_d z9kM%bO|xM7diKT^TgPS+c`171$2)cTdlln6x!Mxz`+XxOa;t06|640)aM=qfQNP(P zy0Uyx7wtcz%^EGX4O`mYM1Zubi3AxBIyIGk**?>h95yvfD!0ZY35jKMv~Vrt)Mg$U zx}?u;3+^N)w`0eN(f zS#;~7pm(Hi$&9^y7*cPNUGR5HmCUv^(tG7NJ1jnc7*9&8_a(E2 z2AV<42zqxdl7y9dThr4ma_kiQ>vWtNn-xf5AO^A>=O<3ODN=i_M`F>6wg8 zgtKB-Xd{894uu8O%_Pa*QO&#>dW&=gLHZ!e-exz)C+p%m)Lls%>VtH>p*~30TcpRa znU#rxJ+@m{8B+Hd2XGd1Q;nkcC)r#$t;#{qVMVWxJGdxcok0UoAMbB(FBtaiXpT0t z%)UUB1UPaT`EL*w6)n1ao zg3*QbFxKWrCMM*)JPG)(#tZ%9(#I32zw;`FLx$2Ddj*S8o)x=dMrXF1+8}Wj<%y%L z?n8hpUGfi6no|^#_|37FMlT5?C->#6y6HuK2`jkn<&&D0+9;=?zi#cR5bM7n@3wtP z+EUX5FwFn@^kzC7Q1WA}dS1nHJtE_tpNC@7n2ds5E|0F$Ow=fia^uoB*6kIxYe6mz z%JznGc#QJQhT+8>bA;X1o<)~o=xBy@9+}Qh6MQJk-yz#w>|6Hb%8s3}I_9FzDOXL- zx7^D}>V(TKhEkTln*rOLt?prI*HCxY$l|8N!YN+!v@W2_6Q-G$%hroBHJwW6w!#9x z2HRpID@FRdN7YEz_|Rx}jGP7hhhjyE1^{E)h$)q|?VvOFdExBUq#6I`^!}qE|N6W` zo_`Iubyxi7<5*>T71^(EFRAX*_wecDb#2viL$-!$^my^8CiR+jhcx%r(MUz)Muef~ zjylCcOsE%{t4qMJ%9sck3U(l1c(0XB%+;%T_mNM;>E|l`c0R!x?;2Ue+vZ_^SN}Mn zTGp^%j3JM=*^7;4b-N<0`et^Q4fa!ng0qrV0ZmNw7Hds% z-7^>W$t!J_j20*Dy^{t~7wtEB{m2h+t=gp5%g07&kF?QN`wmmXq4c^x#cQJy)-*2b zu!_ty_aM z;l(O{Z&1nkX?vO2ENXjVYl*jWtv^-Kujuy{>mWlMfLp%dvh767BHP74p@>PEk|I24(HgxW=lUjCel}$ys{@0w^qh0-;JS5z8z;`3 z-Y{!BwvTEm-7-)0w@Jr1aL-Xk9osaRCqGtW4o^9%>4+woXP2%>XAteg;_-}90oW$0 zV4qXG=r0=DN;v&g^<^Mdl|+MWbFYT0h+&%qhKxZZ@usMKtD%>2kPQm(S@KdEmJ%8z@luZ+iOpN_O30+vm$H0dm!hd=9j{@)$Kt{jFNvrH z?6YN}rDJ32qni+$@PyWI{>cJ% z`|$V9BmIHlBj`}VOs~O$()tav?%7r*7%1gJ zqU81U3&VpG*`1kTR#roa4X>1%_TvRh5@p>ulTH#%$sq-k%m_H;svPN0&PJhNLKF3z zW+3C=o#P&pRjgEK>yTP35z{(?35(yzIkGsMi6JjT8_SCZiX8iw8F|*H@XXqSCwnKg zH$bN|TI3N=}U$*O0vB4V%a z6O2TJ^8rcqwSUOmYPv_C5b)=)CZ)pES(kMiw9Bzs)~vpbEt6g~NH8J51KDIyA}D#|-SD zausABwEiY$xej1y?0qtQRah8iwU26OZ3%AQ;p=lrKKlgm`yaGnn0(@ere zZBw}G_L{_PonoUuL(Q{IQvPY>4pDJ(anN2^mnz435yl}=X=Ov!G;jWtCeLA%v`bn| zm};8eRL!Ne$ra80^7cvltN&2M`@=);5>`HW8CylI6A6orxh~qD$VkpzQl-}qsNvec;XQ+f=U!R)`{=C4dBE?E?cMx+ zwPrH~4|%-5Z!jyV)1G6BkB*?0Zd?i{igtHvpva`yUl`INtq0J zv1TnIET%O+#U_jM%$1vMXVjqO4Of?Zhx&wjq|;U+KXl!kjeA{Uj5cG5`V{^f@*zGx zx@f#hOY64zSB5DwXK!4yacbkH=?$A29@g7ZTdZw%^Js`iY0T}T!W73j*_31Wfa$x{ zsbUh(K^Rosp4)up#l7eGg{(x)v`ZdPHA4Ac`E@t?A}0LpaiOl5X|DT7?2^~*2{l>& z9M=Bi!c}I<_>xRc_saTO4m2K>e_G}&g)?#8heM%jiFbw=f4w+wu?A%4&-$23ju4{da1ow!V_8dXVPo z;{C_NI)SXGr|iGFF0UBvcNA7{6M-uB9Hu5@pw_tMA^&8Xd5_Emsyv|jI$+YN>6U)8 ztBCoc2pgpcB^jpZ)nLeFZy$v1XkBOZ%g)79yr=gaH~M-wo7OemqawFX&h*~Wl*dso zlO)4*qs9y(hWrivL&gPRb>^+mHnVmTH|rD4iqCTu68dGT;&+O+zS(f2tf3H>Q`Dk*9ivPWIC-(+Pe zbFrwLP8KXwkE^v7(>)K5YBcvV7JAm7efIiwseZVS3PrI$({y;8mlpl$$eXqQv*93} z2edHXGO0rY*XXz=U16~3)r`#aIfEne-6UBdQF29*hl&_rU5p646+zL z6r|RUevh$4X|C9LvQz!qu)b7^VslXK?^RMe6E$54+>W2{mpabcPj`n4JcXEBsD4*#H9HY{)U$Ue5m zk^;LI_ec&5h7E-)p3ZwEO&H8ZOKVa^F{~8nKOCmrdSiW??vuyt_yaE)KL#n-NXuQo zNcIXSt<#wN1@LH=iQDNIki~g&D}n}lM@EWz?#-qOS!Yh8v!Q#nlo+QtA?T%HV}NyR zW(yR1woLhyDPF?+nyi=^=k|;Z_AQe!Y#3s7qESfKsnFhta8XeNDB{2vz>WJ$-{cVQL;j{)AW$7ir(IiSoVOJ-zZ?)%ddC zVTTU-3E&fbV_oAqRM$T$`w*jDFfZXtF;-IfigfXmu5z3geymG2H7o0`igBJi2r%PI zw0y7Cyd{=Nm#M;7U5?Fup+|c&mX9^6$1%o}+6>%gy5pMahU#nUwpM%0p{mWx`j=~P zD*k9)v_Fcg(czEkd2kD)NSwrm79$zcH!VtK?@?8=sq(%o+ArWPBMbV6DLq~#Wm|s3 zBmBg}C}aiguNHQTnXZctnMTzSj!!JC*A!wraU;P*-J#Bp%l5A5ltz~+!;(apGB&U1 z=pUQkF);2c6MjI&goMCgkfZU0wr-QUEYg3^uGm6`410RobSS+Smra(EsRaj^=BEQ| zK5Y|XZIa5*oVONQSo0_=K}(VT>pl}Q>vmbICLV}5;I?61BUY(6SX8C2mBVD#gJ5qTEvz3gbGYu&va4Q?J%KBMv3?aih@>@Fy zY@aSm0`cr;yA*ybJKV*FsQ#|OvQjQ@TUi1x<${nfS^g^JSidE$46VTilf^N=J=COl z!c-Mqnjb`BV{Jav*1}MmUhsFZRB`l{^71p$yOXP2ZC||4P zt8q1-zXU-f+Fmqy1&ty9?c_=>#oMw=Evy6NMLub^Wqdm8-aPEj(CXxnmQI$+sbe@B z*ba`Chu86CeZ4xBjlZhdUwLdx7#>;6$_B_h?9Y!+Xv?0^p8eHP*9o zaej$)jl$VgF~aIJ)+IJlxDdjO+y$}Z@x?fQyxvmwwaVV)VC$5bU8SRFU1Ye$*HHX? zj0W5Hbyiu;T3JJdNEYW0@{Q_NsLKbFiJwi)BnG;-q}0P+dfjg~k<)ZcJ=#PRDyz+_ z?0dMql$iF*uSxW-;nIb*Uf^+E}OmWE|GFA{qYTCC|0DqLMf^uRkcHB zpk}OX;mq;fyLYsO81L>HpEo{x#+vo(j_sb_INK#>QL`I2y1%GG_=qMyxLwI@iP?u* zZC986CERQ_5?O-rzC~0ePm*2FoD<7(VwsFIRhivtW?=9X%1SwoBiDfTgX&BItA6gN z2VuO`yq||II~;W(>&yS?B#apCg~{4TID%2GJ=BO{;xMpSH-2jcVGfu41aGwZdFa z6+BoztKYQ0y_UOzQ(^75iV7a$j*9xeS+*4<-gM^ZnCZ$D~C>sk~AVU$4D;yXP5kU z!;ze`o5nV*S-)Y;ri--vQNBdu$c9|~uDURrnG^-+=v z{$93V(_<%m<<8oQHLNb$Z}S|bPDaz=xGplkCGYpfvjHo=W`mXY5J6Q}wt6W<`7?uh z)Q5OKzZScR{DPN#=ycc)>h(ounEL1+iq7MMEk(4ljUm6^#E}VodihME6RlrM^g~Q6 zbt1;Z+7VV3LkiC}yCEb|jC6GmmG|qEWBr!!4nbszo?-}j9&PN>K&4$yi)*fc%zLn~ zKCyg!tg6n^Ax)|JF+EqAjqOiOW=tznL2Rdg@wOKuJR6KtgK~}%?ynPA>XsW*X-1L$ zm{bebLQYLV6TYV}$jKpv&Lb`sXkBz(G;x1vS?A#8mPh&xQM^>IQ-2b1DKfu7GhVY$ ztz||Z9`eGsK0{Jmi;BuIFeMZ5(5WP=UBwjsU@J~+U|4U=LfM1eZe(Ift=KKvPi8TB zF<_P#DtWZgQz3e{Y{nsGP(3LLh&?GG=)YAQeVQ5OxSDvR3v-~@#&H?hS+Mr0i}Vbp z6@h)HrtF>4QlBQSVF5wwC|V`%X{xsAy8L3-&1$W4w>6V7ITEaf?mY|oYq%C?P{x;9 ziZ#zr)sE1m1cgzJ6+-uJ9z;&FO0(rxM0?XrhSJeUJT}lpQH6m2LTSX*@$!1T-~h@h zk7+)ab#pPU)9I{KQ>~6K@h_8w{CTmP$d+P`w4jkUzjGTVW%y7J*d1TT5%XnxOT|h2Er( z?Z|pz$%HoUT1ESUzB&}DR%X`j3*J6T$@W}1wM7Fh3KV;Q`gpHeK4@Dl0Fqg*x|wUSlkDr2d1!mLq!Biy_Yt-tPv3mm7DP*&AKr6)t*e@9%v-Q{S-fl`G5% z>SFyJyfv7qK-|6T76+xt2ea6GHWDVXNq=rNI?hn632Hp+ERJWziclZ#xk-k}^59X3 z$`gl?zTvPDqq4->#;s;-x{^%A8Q1dd>1lL!j}|n8=A)Q@&rOW-#Oj!9QTCTU;lDYZ zUDHy{MauGFdAY}%f3~I0RWNLC&gL3n?^4se`rf|Jr#G?Qdj~-m8jOn@n9%Ao=8F~H zN9gCmDTr#K`b%3q`}#7^jOjJ6g>el=>kIC1WV7loTY<<@cp1ig+NxK6O1+1&N9*_G z)WY{%g+VJ$bHcnKi_5h}(Xb^3L(nk+lki%>yG4b+GkC$Ma!^BXY$zW^H z7gwO0=2@eNBSmz&DlKYXwxpIVoZ@K)9f&V{Wm5ix9N3Jjt=fQu|%(MXe?(BKjv+JR20Ysrp#A53QO>Q(Ap%?(9&tyUqYSimSG1Ep}2?MyYopc?c-K zW?i)Byii9}63UwGA}!1u8m9>brD|%{tVQ#z;_cpo>eBe_Rv!8BaA78qg!3|!d4m-i zubZhQqg(k}DaYR7=aK1~T9kPRF>1Wc4oGQ3ogUN(SiUx2n4O9ew(R5wnQBZfO=209 zZH$)-^(qe5<N#W;URto3G&nokQn1^wojGn?UHrY$+eLm_9T z(ostrsXvRD%l?9KHQOd+6N96^{nyHt>0w>8-{dtR9(hjT`qH_EY+q>BDA&_k^pH@B z^5s7^=_6J`6-R@q^7R66)u_mN2?Q?d|DS{(=W}EWq8}-O4uZv zebT6j)fcLotyGwWn9~6)X54^EEz))TMLX2;a=caDVhYcpWkt`^uXkrTjKZ_oqFdwF zTyAWsL{tk{-jWX!N6@-t{&27Rxzc4}m{_vPSr-}dqfSRJ7iL~VLu3BR=>;#G!j}(A zy0IR3e3YWtokIBrSq0M684q#ex7o z;;TRDLII`b_9*sk)!)=#%3m~Y7zkbCW#eERo@|LJ_5vogH7d6;CV4&y%9Go?D4*PTD9=H# zwU2X+81nd}Pt{^Wu|^i-{KfrJ@MfGW3{vTj*LWy?Rw>WcM6MEYZa3#WOCiQ@jlGBs>#-uJ*gRw9xQl++-#*aU*CZCB)1%3Dy_yI3m=0>wE0ZKN5AL+T>C7WGv-n(8lk zE^LY!j^LJZnI6?^g?=p64rw#)$&o zud>?P&$xx!QJ@wVd2~I4H!@B%Vua zKvt21>6U+tsPKw*yyeNLXNDyXrlNic*RYuC#*pVf{)(Epj;QlCO@B~~$qNqK^@bal zvp7#4XH@3j#&+A-neupHvysQM7N&SLrfMG}%`)-Il_vZ!E{<*dPk8AmbF9~3K^83WFg11N z^!c+>YuB$k!~T;S;A$9ZlSkFU7@J=4pY;6FDbR(*kjG01z;OFyS+Gtug#qKdbsN{5 zv2J!%lXh~3p`&Z4-<)_zRqmV!H72bvF)DJx8k(ykGo!BDzCW6Ig#|a2f@A?x8cTt! zwdu)hz7$j$1zYNv!k><4;x4Ll$%*MpG1AkItywobtzYwE3FB}gLiI1VxkLY0w!elp zlwbFU_|0);j6%(Vd8r3~LlQG|lg3(;E3;ZEdw1V=F}`G?#|uiMhT=_XPQ7-dU3NJx z&kDW}q5zxCk<}OZ(8VM<3wjnayOChx;Uh$?t$nz-Z?M{}T$QA6m#<2)dMZ73G*R#- zO1gSD6n78^lCdB2THm3e?!tE8cu@s~U06e~8Bd)wn-BaR=_TQ9C)3rI2e5Li-xB)q z=*7cBQO^*TR8k#R)WXnWF|$S*v!N(a)L6ZzhS^+6YL!CB%Rg6fO|Iy!vxYCn<{ukX zM|dKE@IYUfRChkn-9M;#TekcbFLWxw#f~#$*e_^t8BDCAI@= za1GpJNM{=rx$<$JOfqa|Yg{YzNrqqWQd0-8taoBaUijiBQ?v84gW89r`t81G(`?tw zj91=T*iaKY!N}hK++VsmZrJeZra?B4n^};%=aO;#rm0o4tJhekY!fGI9VS)CMV^ET z6=GOM&Gz}2#SdiQM9%LUnDwBO-_wJgXszaz1b!tW`_eR$B0 zVxJF(cwMn~v**eYPY+gy=_UUvvFb%<6n!$DE^HrC5!&WHuKPXKHJJuzKx?galiV2L zIgPq5b;)T1NG^M_si|eN>sGDbFomGivwq#`HD@$6hY>pW)SXZ48J)aKD#ZKq{Bqn{ zqw`XWU#}eNx7eq#<8UXL)>++j*9a||V!Bs^<_kMe4i8oA7)#$ro*W`=3gy^i`H+z= z_Iu+T=x$MC8=qRD3C(7jW;u!HjgCxTvu9lWoH_M0M-X0jx#Hg?YD9zmyjjLsmA0WQ zHGOk`k9tWWv)Pm=Fs!IYK}olBlY@0-J5UGNkbR$9l^;?>6e z5a8r*&$PD*Q$6T3K6mqAy0&;UA6<)^A^18==~ITDCyDmV#5x_e*|-qx(u3{C3qMz# zS~`x%U>9wztbfeHuw^~9CqQmp4pvPxLn zmEpA}b!8vbZN7^>*s18NYMWxHXg2u{Q*})>CkC^zQ-6C#Lbnm-N?}bO6E19&U zFV!b^o^BZ~)(J3;)A$R7LJ5LfS&Avfd2*Y`n-xnql0%oIs*OhS1;Z1*s5$IJ=HyecORaRLHg&?Aip|@_v$xTEb`W!&$tK zMNPty^)OV7ZPQGkP3vZmpZ;w4v^i>%5iu3yv+~!jGBSO6mslec3mPF~s(k1I+l02V5HAfi{DCR}FOxZJ@ zV#-WIY+|_-oaL*O(tiY_G~9;<-^2~B`A;(ADeY%1_kx)mNX>QM1tt_&1<={?6LJ}} zbW&cM<3?*0y?@lv;!te8ar({EXwSL}>L$JPPY$3B4*}1tSH`%}S?5CPmZo{Z0@eIf zc7`4KQ%#xLXhyy|g8-bIq0!(RzCvvFq0G0rrZutn`b5U5j zdNaky{h4_vd!Sh{Oq{gb!dBzyFzt~s#`D&r(T##%(D&^Hs6ylqgoCHh3qvzCg@j85}EC6yj9Q_qENGoJ7lL;f<^@=V`w z&Ff9UNTD3-S@2qzx2N&;P!aPh?aUu)`k>k`TO7XQD|wVZuXy@%&8-i;u}G^|e>!ws zyuU^+)aWLy&^H_-ll6L^bp~^iWMfrz(zXwH*~O71EQ2MBETOuE%V=aV!}5=3uO5!E zX*?}x#@NzExWeu}HHik-{N=oZ@pBxsjc!2u%Tg^tU8I+3GGPhJ0#=ZXF8U9|v1R}l zXJdor9yU6;^Kq(I*F3GiKd(=7i=o1^q8BQSb6O@&1)uojVhYc8DBLhHtCckprAWWQ z=E)K{q5+QC-(+V#C5Qi3Yi(f*o1M;3^}fffax*P?JUU}^vTsbQKH1BcuKNpGmnUV9 zHmohRu(#&Wy{0jqI~}G`cK=}me7~H4v{bWsuv_e?=4p-+DxYap{AHt+O|bv9eX=E-bN(HPv15GAcG{xx0`-u~LQx z9dhW45N1M^jUM3`-*}2|!;wWpgS$|$gPnsqVPJ7o+h~~WV*?H&DEgcb;qR4IJqcBP zT|EO@<&*W1JaUZ;=MEh0qn9K7t?XTGr?KWY$?;f)y1khs{^LPhay5*dl@-5~jYVE_ z@)PcSgQxCMA8w_N4pyV3?}1V6be(Jrd)}tvSibz|G^W=7@rE@iW2{G?~7=8I_7`O5F%D{OK`1BABqM z(ZaUs){PcPT=EKG(ky>0x~7VkbwXh~OhX%y80AliWt#avl@&tfy0|oVFQ)O^V+D5I zO>0(vL(tzVul9QNVnUeIcXvUna ztOco%tnJ2Q(FeLFw5nxZiPUm(i!*o892_}kpEJ4Uzai5&bsVNOF{wA6ev=#?Hctl& zj7XI}($nW>;#fDcnUmieo+PI9n>$(FPKvj(_fe>4R7!3Y3muQuF?G+wnu0VO?D9A- z%2)$zU^m_PWS#4UMk)N(q7DPiP1G*RFuWz&jeBJ-o}ZgU`?G@f&CgPhjc3=gp(q`= zC62e(P}dpRT=j2OQlS>e>^YQxjiI?*sfxIKFp;=Zo5u0wlJXbL+i+CVA;)Yuq)C57 z7pzvQZr>`qpHAOI5T0#XVEg3Vy%Hqck6o(AEXMdt*(Ff|G3Y(ADGgmfG0xx3a;M!$^U_>49etEfEBe?z6{n7JWfC%Il_QL(zJhA&9*n3y zW?K3&Cc*<+p)AaO?Sf}i7M1>^?vBND^hhX)6m&G;Nkc zq+AW3#AYQw6$HoeDGo*s!G%G5)CQHfGom||eAK$x`3~lFYSKlCER@uM%osA{(T0?~ zr|vKB8!beYvsbQ0{@D_dH}Ax>F1Ab_IMYr)_HRV_vva$LUX8qyECagQ%b%UBmtsib zZXWDWx%0>PIg^!+Jko!rAYyAVCb3u#=DOjU7n(i0PNS%gsABUm-CXc>Ye}wtm8UM+ ze>?OF!;%39ds_PoDG|9Jth;`-P9kp6{K(~;WVUYC{Gp-ZmN%qc|FMO+&T(%sxHz?r96(s3KE)NIW~Ny+yz$fr=Y7+QK=~XCvvrl zr1*4@sE_r>dH2Eoxpd9Sle3|Gddr7|3JKSN1K zM+BDAk1f@qHCkv!Li!)mYKAe=JFfFKBnFwdV=EGaBXwuk7oxnJUBEO$5!;Mv-k6J@ zx-QypvL@#Ct2*dNhcOg`{`UU)f_TD0Hi0}g%-|ZUN3uBoIcw!MOYEu1%%PaSLX;=A z*|HL=UCT~gPIwE!{MS)-RU5Au2UUxb&gLphlwML5fh73IXx;way_C(WQ{x6df=^uuV~W6(28QRcc@uEBU7;;3nyVuW6FUE$t@ZBUvKW7t+*>`mGOA}>y{H_j}4nVYhF?Kn|Y1*5m7?0O@JePb-N7e zqW!r(tyBY^7v`7A!LlKSiHfU;w0dOfqx?(@4|y?0tG@1`!I8yTuZ(R)Dbjz}D+iYJ znYCm(nabikxye)6#78U3zTYBR&zB>^9X>3N^^A|oC%!ss|3fOy%wokf)+``yHmN@; zSrE>wD(d@9z~Pz>xua5IL2hG6rfp(_wVwEs#N zv%K@L5lhl>x_Hke&wl7BOuEoWl?FW4KUV0g^R=vGsz`6`H8b>hiCHizSS#7kgH@B> zOxA{>qi!7KzaH&el{q^gRd1$8s%MSYC71QrJ8vq-dV!cMX!CoU3l+~bD8_i=*q&`i zb7$6`Jw%ytAc~e*Y-dVXAf%PBkRC@aTZ+lk_~ZR653Bz6cgvez_EtWa$i;(ZAZ`m; z?Z~yXrfiEfREkMOP#k`2gSGezT^WZ>tt|6Rou(Ep16v=egCv9@ASMzqFJMhPI}GLdIRho(i@m45!$Oni5M=HQMxX`I+ee3RzNHaByn+24@IGc8T-SYn)Jkl z(uzs);$;@W^wF&)5>;DRyedAhF4`ZKbSMFV<{D^OtR{jE}c%Mht4a) z7W5`2myQi*P7lm)fp^rZnrfq&O>4Fn);@Bu*0E`hEjP&Vhn6DB6QDfCKc|=Tgj!U; zME%&aWI{|KHcuZ6H*4PDlcwUSvp7$ly=~e$yVYk{cGF0EW3E>c;|mR-S_)UIOf539 zi&-$7f0;y?Q53D@M4@N_vcL5W}c-%qZj^88VC{sTO_J6=qbz!P!n}+HnANTdB}EO zgyt0{sEySl(NZTFa%F!|*l)@tJvF+oPvS4)!Za?C<&HY6Fyvv+ZqX>y#?M0CZ4m8` z_I6)(Z_y!1Fo}>F&6h27*_E!TcV=%N(Wyq7PkK(NX_w2ladD%W^=JP4(05Gan}(Tf zlp^!5Dak-yifCvEIR2SKM3&G5rSXZx0cJSXD+s9B>^iF3ZCx%__-HGnGc~o(s?f+x zJ_wh+#2ZXgYw0vqX9n6dHG8nxHKpB2A;NQ>xzP5Vt6{5Ltk-65r^kCYrR>Jbw#`4E z%Xr8$R}|lqhV27@yw%9R*>H3(lLh@&_e5W4!JoYpEM4i3qxuS41WOg4-g^>TYeM@r;vbgVLZ?gRDaiP)qkfy#fl!SFS zN!1=()U`+&)~5PP{sb>HTwfJ-BiPTf#H^l_)mrc9vX7)5xF8=&#Py|BQ}O8a`$oGE z^=y3ctYYTi8vb%OpT+ri4{t{A(|9v~7U?%we$CB&qoxq9dors8F3X>^L^`Xa`);s> zv`4!xeT~gZ%H;QW}_tkiu^cWgN;qdhgI;r_b-a$kXY{R;W!|P4qksgZ7$q;M*w_1|&{V9cg`$&PZ` zxk=g4FAvMdZPN2{wS0SH7SA@Vw8`Se<8-x2B{%CivSNEnG1uUkM>cZfj(igiiV&T&bnfm ztrgEV)lUbx-u56`&F&q{DkWu<#&}L+2V?4jYVP1H1ikhY-bKBtQiV(UdsMdX#p$ma zf3@vD%zv{qo`d{-2F7h@8Jrk3(|xQ?Oo0+pgaakUCTezaW}}OqU$2ZfG@`EQ8T!rC zb+Y`E(^@H*`gqS=y0@aVQJ*`sCDji%9ZTwUBL^I9)mqsBN00Jlbw@@bHB3lwk>6P~ zA&Ie`rGijc*hD!I_LPSYk}e2$*$2_hp>|{?ho=&qaWyom|3V7uhpbZM+mK|UR4bKM zg9M(p!swE#;DRo@6zMmpN2^YCuU$WL)>Jq43E`3*ClkyQv>(sTlF?9arU-qu60>y7 z&YaPqy1BffbKX;-vKSM7Dr`RY{ADu*oVxK|n=mxhUGaJq2C+<;UVgi}X#Y`f zUYb@~dn&6LVt1f+6gvoSQaXq($Tbc2CngPtNbg*e+$mujc<#eqE3 z+sz~jA3@sU?1&>xTf-R_vH6-{Ux@X4ydALNi_y@LM#_Z^GY#72D^ zgRFNM(cw|rtJO1*c^%5G_-`d0-FOrmT!DU;nc{x9OsXonv$3#H@1>VOO86ced`yO zFYQ@u_Qz$VPZH%%@`A`!ki`Xox=6ppzXf~nVnHy{6{0+Gtl*5VvZ*fJ(jbA~=vr<0 z2C)TYDLv}$tB)`I-q>RI;gXhQ{3W71d6ZcuRW7;^wx`;oai`TYYK2&=i*?a?eo-FF zC4^MRw6I)ZH>`>|*i#*oke+@PePK;*l1P7^3x3i4LD5>R6y?eDhm7{raH!}9z4<4} z)C9#hDaQG8vWbORL&>$JY)rQubty8ehDke5fTLXQStE_2fmJ{)y3_jnTGJVy+i=Lw_wRGP$#p;n*Xc39} zs$mlUsraQeTJ%&iSwcG~Sh_F8XZK*%)uJKDlH@_M6t|!a_70^>-xl-~iIT<4S_>{W z{DP-)m7x3Fu)j<_o_2Hfv03)A)6nU-Og>B%3q?Z~-4-Sr^c$`k;Ok>ZA510uYne5f zpIuehI#r7DoD^K1rU%8@$4`94$vwVr!ArhaWvzc{X+8tZg|CeQaAu>cYr zLyu>=g%Fl*!8+)I(HS|-))wm$cpgeZ(YPirrAyToKdsld3ua4}@w;;rf;y7y<+JHj zaeJS=eiD@zKWT!!3$;a7s|1Ii`CVrG;%AX81O7-Iu)7h4#!mmpV`Kdv{za`Us@a;$y9*lpT&@= zLCWxwst~rz&Mj#r;A>)1E}I4^{MOKGg>P9a-BgUrUe?S7Tu&N%__$9?N8);&D33t? zoGdQ?*!l~mNUSfq?QwxTX`k6<%wjP%O5vHwzJwO} zY&&W9NLMB!nTCXGp0PBojja05cCUoiVYB?0Alm=*|2IZLB+82>+JQ8A*~O6Oz&ksP zO*H`P9<3^v=c1@bY0(OW?Qjp9lRV@%hR+!~;dqJwp~9clY)8XQfde z<#+nmGNDS1O#d&XMLJa0$NGCV5DK!b9t=nglZ2b?fMaWD!##_82bUGvwf7uJoZn!5 zYt}?${T!#jVPm!4*w%J*%>(#c>QRjUl%f_41v(N29UUfnXjv6Un$O?k69V4tx)M4h_%!kUC{YmLiU9e0` zgsf!oy$VQ9B;;60w>Y9i;1ozlQU=V!S`r1i-ijv|2xj z&!e*HU(m=F40kLGg;>8Ql!_IwEpLXxbvm)EM^VhOWiDyqqZ&!h@Q7B&a>ONvykt1KYLjk2{TjD@ZrnQ zZi#L7rHm|Y?BR7YKb!+s&dG)Bdqqo3lxf9rhOWk~GIMPks|wLEbh0RtjTqX@XmfPy zWb?Ajd_xY744b|$m0-$oUJl;fVwH*Qjr${TnKN3AnM7KDo@*MLQ~``n(uUzb5I|1iTW2wh@#&98-gC$EDry z%+O)hoq_K6W^w)ku?ocX7=^p~yr>?A@rGKNi*rrWV z`laAe-7^qvO_08_pub+sPaN;%mr<3nP7DZ_(^gTP7>?Vy+U-w^^KTfwA5Eh!l@~(n z0?ZUOn=_!?D#m&8@Cibxmy;LcJh_XFX0eY6Qs#Ds)dI>PhQe2tYd#5@ep0el5A8)z zYns!(JSNXis3V0j(wl^BU1Vw}^OiUduslTdjQQ?q3BG&OaeBz};GI(JHR57q9uE0b zld@mv*Aa&0S&&zqZ-*>Kmm;$QmYYhOv=3#PAv6w_|2)oZ+qn%Sq><83|Cmm^hYt=$y*@GLU>WgPt08WwaI=oRP55i7VqE_8 zQ1-NO0$xm3;mzGmcTEzRRZRO_ruT@a?fD{Y4EQavFS3;)nUNMhSSd1OI1{h5?L@n} zGUa%bAFYcB@>fjY_r+&fhZqOnSee3>*YO_F7FeX`;DV_M4JL3Y{y5 zZN|RUMb5f>%hi;0&U|yGspWSIX*?g^@H3l0e_I!!6RVk;q|kDwT^Ai*Did=iS1cXT zY+I-N)m`$h6)yL>lkeVcbNl2b<=zt6CB2y>{zIi<+B8Z&n0x+R9*HTk!9EI9wmg#b zcD06rduV`)t9vb*ObnE5)Y6wELFvZv6?R><&swl+*ErWg9>OQWRg7aJCji^UA z?{Plu))cR&XDsXVk+}*{o{_YCOl3Kt4FaLaW8ntz355v(f8BZq#lr;$#S5)D7FsPP z$jGgkSr(cv8fy&k8hv&2CyYJF{v1hNdZPP0@OJb|F-d zU_;D15Xe87^^EE^Y$}#EC;w_moR=5xBM(rjA9mJhSx#+`z;E<^DQy*;+DsY8;q=enuUMSl%bov13>D-=y?3K7K*&eU|Edt%b&PV|3B2U)c!rSeC_ zj$PuJEcmz)F{Bvh$>ST^5XHt82D5x|FdrAnqi=km*#_#=ZmXQ3)#npVG^Vny4CB1n zlIRcy-P!L$eG>N4Lgz1uwyQfHt>Ox2`{KnjK(vD}c7N`idr)4?l><$>QfY4y=BLZL z&HgkmOj=!5nB`>tF8V~8hRm}sl~`lgRlGuYu9m1l%UZiB4fxA=2Z%kK3<^DSZi$mE zQ>ZlD7&OF%_t9w;(mKp@ZA0>_7M2yTELMFMqdw%!>2>R7*Lns`TnNEJMu)rdWZW7S zdWJ@&f9>xcmD!l*%H{{^fHK?V!4ZT7Q`ly6lD-vYW9I)abGpWt`HF}i>efv@rz7{D z%4B^ud*eSKhWvgj$-;Up$DGW|c6PhwTh-3=-)5wf&lSu1Z!h<-j**&HHFtRaJ3mEYu67yd$434P_yU3r@jE;H!5^~dfsR`)SHvL}W@h#@ZoZ<`Y9 zOm~@hH_K`)Wt+`>Y$}j%SYJ9;cT{XCGRwsHpk^TxlfeQmvsccpS~a_Be#iWk8>ZLI zoY}Nt_WU&)*Q{UHRBP9BI!>!pcBoV;kL%x@$`;SvX@?yvhbbKYJzIZt?X>0PbGmkF z?%Hvi^LN^^YsVeC@7>Ab({#;wy1kWd$>!4ix6k`Oo$h&g{_H(2++6E;#Fos_0)Qe6D^YyHu+)3%py@p6@*mCP2W@3gIouqh@GA4=2Avoz;=nzVeM;%WRl zSiY8}zt`2N$m!YXm1`<<7U<8dwEJz-?1l4(TPs`dxXti(TWr7eZd*Qi&K`62n!ER$ zedg>tXTLf7&pB}GL*^)L`Coc%%gQ5JuAg4dsg;V3i}QF zzFSoGET!M8lzy+uF{HQpwMAvGQu@71>G!Vml0H1&el7nux3W(u{XUfyiq7-1Po7wR z&8_TPO22RAtU~&IOX>G3rQfge0@7Rk+oG~xDgFMX^!rz?CB1$7Eh_t0-YYigzwmGW z_=j_D<$%)t2UKoTjJ=Q5&n*;h_viKK0EO~@b1Mgy?my7ee=$pPVD^{&F;_V$e$S>- z{2`_ILrU?7mcoaZ!bgS$2OIg zLU`NCY$3c|<=R4c`^uLK;U`t*%uS!SL#3?{-m$W#5Z?S*0eEq7~(xuV!Hl1_cCYuVBA|}q6on2MBHg?|Hwdtj}*+8n{Hh= z(=prJ-ZDMY);c{qTkB|Bxw>M>vX@?P=7N@m3p!e7SFLVd*xFg0?VMdXGc&VrW~SD$ zu-aK|Ynxux)}G$e(SG5Dc30bij@jz!*;;Fdp4(oXX`h~+nQ2+Qx}$35&K;{))%>oh zb+Z?&U9)n^j8-KC>dw{$oyy0;j)l{$tsRmG+gfKlOwKlg_n>%M(7q+y88|9F6<9X-U9nA}7X7oa< zXIFK$cDBwmcTTsotZu8-np;|DTAEkYR&vM2O{;Vhchp)}Pq$33Zdo}~?PzXqZ?COf z+19qOWm@9yY-ekg;^T%|%Ys#HEzPYR)9szBTcgn2yif4MZT3yxL+_`dPt+UoL-4gGU!-A<9J>bj*?d=O@ zTUW2HwzSW*PFFjoSI)GyceGYJ+uK*Sx32D-?WiqGe(H>w8QoKBU$C;h+S)p+Ptwx5 zdS>Cm&Q+^gXY`9J+gmz2W>zl@?=zGCOtqtR!Rnb+t5&twR_RS@E!B>;no4Bh?8=3D z)~e}Mt7rXp&OYb7sp$=8pWmV1vDayCU8s~Qtd51XRjsqtwwAVzj*hn3g>B94GplDP zH@9b|+O^j7NmsSa%(hpnwd$%>D_2%k)HAIstF?tQ&27_dEvv&Tr8T^|uw%jMm8znh zRegTRIl5?ChLvZq{c}Q_DMm z-r2!*Yw~`l5SZAs;k=nme#s=*?IkvvWVXG;E0Z`ZY?6e9y9wJ!ZDEr)E&iE=*Ad=C z_(g7DtEoviK_LOp>v19~^>9puL~P&p^wcg)e}XPYb^c zUJY-8x53ZCufadU-887!{WaJRC*bMuZ1@^@6Er!+?*A>^K|{5L_kl-1lUMBeiEtR6 z0?&Y(;3e?o@Ot@zB#qsD{O-UzRS&w(#AYFc(R;hW$)jGAuVN%&s)WuvCO4-kF~ z?xcog*N=cFz*FD`cm=%CsQkU%xND_y2jQ>7UvmB5a1XU{OIL#@!D)DbQO|pxQDWOw zgl~Z#=lZwc!*F|vke2=sxDbvS^}J<9iH);_FNN1~{k`xW_*3`~xT{1`yZ=a|p0~iL zxDyBu!BgQ`aD!20dkNti;rqG%1^5&AZ@8!WIJ<8?>@n(hC*d?)2cHd9%#|&UP&+f~ ze$yOSKAVin|2(70soALSU^74a-X|JWPX>&tM`K3SH|yuEKAvtoO#f%pb5&iPdbB@( z2k5`6-_axe_x$(udp54v?=~6ryY?uf=SPY4YMu|zm-5kSVbSxa{MZcC@^zw7`Raw9 zU*&Je!lLI}51+KKsOIkdzvpv4`O=Sheikq;99OC6e_p=FLw~-~4HI5!ROU`KR;8vg zYH)m(u|?v(QJKET*jA~$z^MDLFt%4JuP}C0D%WxSCZk^N9ma(f*LQ58$-{?<{|x+s zQJMOxQHAg=;|Z0@kBl0;ereS2JOtyo@;Ac&hFi`F>9&XZgnpksl~bR>sUml3h<6?e zkAktB^okxI%d3mxHH@X?gtNsN5c6q$~_ASKOOeL#c&B+4o`zKa1C4!&x6l_QC_;7 z@Kx~D@H%)Sd>gz4-Ujc4AA_HUpNCP-`X=G;!=J!k!H40W;NRina4U6;)-Im}cZGYw zD4!il_$YWBG<}ube?07hi{LPvfG5K#I18g(cP`-z;KlG#cm;d~yarwmZ-O_&_rTj> zln3u7d=I=2-VeVGAAmoD55nKWN8w{|&X%D(%5vrIT;B&C1P_PDz$)y3C%_&!2uI;k zcq*KRXTY=JMtBi?KD-QG38UQlTEeE!vhVvA_)d5$yaV0^KMC)JUxHtU--SPdzkt7m zkHEjef5EvLs4O4b!JXkAa6fo3JQB`_EpQ=xI*fAlV!}({a(Eh?fotG;cpi-M_a%fc zhgZQ@!|ULU@NMuGcpHpz`o{==8h##r1%4BLAN~aX3O)?~1pf{nhg+FEZtWlL3ipBs zz(e6t@Hp58kB41w5gdjS@MJgzXW?1!TzCPz7+wl}zM=fSg77u)dUzAO8NLVJ4nGX< zhWEhx;QjF1@B#QU_#pf}d=x$g=h!?%`P&BW2zQ73z=Po7@EBNy9qE%2T2R(J=z3w{#b3%>-v4!;Y31b+d43m<`h zh5v$cCAfS0hdaYP;C}F6cqE(;TcFPeRX$HA+y@uKC2%=B4bH$da6LQ^J_lX`FNasb zSHtVzjqq*o7I+)H6MhVS8h##r1%4BLAN~aX3O)?~1pf{nhg)q&`-eWiRr%~i_yBk) zJPIBM+u-rA3oe4gZ~~qTr{FA%^W<|0UjQ$Lm%=OHE8sQodUzAO8NLVJ4nGX`?2JQ%Vhx@>T;NkEXScM(%1Q_T2gM>%nQg|wi`hYVC zpA9#{i{SI&W$;RPHGD0+0lo!l*a+hV{BP%r|4;AxZ_}64?MA-#flcs8sHwi^Kh9fS zpP>5Q!}XKk61W1!`RZ!IXTweKIq-$>3RuqHe_LLz|4_c9D)9Vjitp@$L;su4|G#D4 zel7XG0lpR90^bkgeEk!I?}cB6--JJdzk&a|<^F%VeE#3&Ln0i z@ELF&JP$q>UJ73duZFLKH^R5Ws7Lt#;k)3c;OC+1r&MpF{^W;T{{?&q{t5mAM!m_l z%=dSOd%^?YVKC}T;(EzKuAc}O!4VksBxdhna>NXL7CaYT2%~=F#e}bdaoy#5!f%FA zFY-RZcfyaud*Byg)Q5bJ@PDc&|0(_e%JIKVcPQzPg8!%M{pR#}&*S$lgD-=xhPKXU z-{&Uy4tOj4Ap98o42=4_uMz$({4x9${2h#XyMGdv`0l^EBYZO44;}(zdHuKjbJTmD z!u`|mOt>DN4=;u**H;2M!n`1)YI+Y zE^se+AUqr%3tQk*U>6*KQIENd@M&-rJPU4sQGfXY!k5FBL$lwq`tt@D^_K4i}_ zyc>QNMt$Ws2!9{`6g~+50HdDr--Ne9uNK!|cPG3rjQYuWgpY&m@C4Wkqh4~H@X7FW z7}smp5sv!E=MugYz7$>!Uk9Te^6iA*13v)of^mH}>L0(#^>4!;!e79LVAMPQgRt4V z+4tEN?hN;YQQvqN;bUM8E`%q-sAn7@yc9kI&cJ8Es9%ih$Is{bi{Vx9H8AQG-%R+O z@O|)3_;DEZiC-if*PFjb_$Tn!FzONiLik^B%Pm7WJqhjxqyDgo@R4u z;U#bdoPw)i)E90dTv*rEce{e?X7^^_G3p85Nce5=-SBq!5g7G@pCkMg_$~MV{5gzz z!9NoIJ2cZm`~7X;PB7{N_a}TP^mTNluM+NrQ4iQpcoTyLKMMZ|=W1ZHa@rn7{odY$4}!kV zuXOVXx5B8`>n1!1$KZ1KOc?cfYYA_J&xV)4m%ymUyO!_`@U8F`_*GJ%748iWf=9sluoWH;yWt=lgUjJF;VfJWH^OJbOW;f3E8w;82KZKZ z3w%HPF#H6(7k(Lj6aE1H4E_c_0{;ddhgRUj(m&uY%XXH^H0Xd*L1Mqwv%43-EsU9rz>oOZYJSGkgqgv2!S&?cgqO zFL)q493Bf>;8S219Dt*689WWHf@i@E@FMsEcsYDIyav7jz6HJu-UdGe?}nd+UxMF& z--kbi55hmdzrugRt#%3Jv;&kF?(I+Amh->W{~t&CHh4Vjf{WlVjC!W12af9%v&5eT z&xQZD+t>YpeEtC-ius9G=kQg>ra8j~B|}2|ZpYhbQ!Sp&Xvj`cK9Cn0eBbu6#P8=D*QJ5A^Zh=2>uEF1J02m)7BNXg*(GN;Q{b4cnqw; zh44hU2#&y|@ELFhJ`0`;FNDvBFNRma*TC!Ho8dd*`{14MDcPQx?ddU!s(7`_Nz310=T zgKvU2!}r2F;78%7;TPcj@H_BF@R#sm_-FVS++xpAKHI@v;9l@RcsM*3w!o*rE;s;3 z;WBs{Tm{d98{kFo1@LnCa(E4V1AGg77rYIA2;L1p3%>-v0lyD_3Lk`jfPaPmhFk3w z%4r9t?(B3e)wVd33xC3GW;g|0sI;K4SWRt4L%OH-anMnj_}EF zKX?c{3O2(I_%zrDhu{P}1x~{=;d*#JycoU+UI||XuY+%bH^cYBJK#s*r{Ndi{qQ^R zNAQ>MVfbhG7~Db|#jGA}2X}#c!2{vp@L1Rap8~t!033zO;AwCbJPU4s7r__6%i+u6 zHSi7aE%06NHuxcUH~cL868r}IKKvy(`~bWQehPjbeieQj{t*5GJ_P>+{{iP5 z6v}5?xHH@n9sm!6$G{p~2v3BI;0Rm_p8;p!v*5Y#Lil|6Vt5sN4ZI${8NL&~58eqs z4)1|qgkOi>gFk`4hQEh@f&YSAHidF}65I{$1DoKHZ~<(CPlY}3B)9~wfKzZaJR5F; z&w($5SHM@o*TOf#x50PA+u=vxC*kMdSKznc1MuhYxA2ef@33-kD4%WMPH+#nKRgs3 z4XdydJ{|VMVK@m-g)8A2cn-V(J`Y|7Uj|IkKwQ2 z@8F~GpK$IWp`5mdyTZNULGTDTAGX5dVK*FvV{kcqCY*(9;YRpucnN$7dbU zZ-MWJABLZR_rfp3Z^9qIpTXb2N8sP!<8bRkLpkjTpA7edhrpv?Gwgs*gMDxaPQX*( zG&~cohv&nK;fvsv@Kx|S_$GKWd@sBMeiVKhegWPOzXN{+e+eIke}<1i^M&c-KimcG z1rLOW!((9!d18@{BgQvk&@GQ6iUIbqNFNZIO*T6Txx4?J7+u(=b-SD&UOYj@; z`|zjmLHGywSNLzZ)#0I>c7VIXec{1y9y|`V!xLaHTnxwI$?$Y|23!ZvgU^MR!k5CU z;p^ay@a^zD@B{EJ_$l~#_*M9A_(S*$_z?UP{0E$KL@1wa;m&YRcmO;M9s_G|Av_T- zf+KJ#d&w}T|3*qzOi{Vx9HSl`)X82C{K6oemIJ^gb5q=$h5B>!H8vY*s1^x?e zd1NT3C&As|KClTM2^YXN_*B>fPl8L}3OEHec>yd8c7 zeiD8Teg%FDJ^+6Xe+&Nz{|+njLiub1cY=Gs{o$eTXjp}v@aeE04#P=!DqIQIz;oaQ z@Okhu_%irv_;3w3mzj~ma1m%x|6SHNrG4e+h-7WjVnVfYDnFZ?q6Cj0^X z8T<`=1pW;^4!1r!RUj(m&uY%XX zH^H0Xd*L1Mqwv%43-EsU9rz>oOZYJSGkgr%83;c9!(HHB@IZJtJQlXVr@$^a07v06 zcp6*<&w?A^Meqgia`__`!ym$5z=zti!hG)Y~@Hy~>@Cx`!_*(cz_%`@%csu+E{3QGw{0jUQd;tC&{ucfb z{vDdbeQRgiz@6Y8aDR9xJQ`MECww~Whr@6Zo(fmOHSipG0el|3489D$8onOh1m6K~ zg&%|;gP(!-!LPyZ!XLw5!Qa70;XmQr=1@-C!(HLt@E~{uoDW;!@vs{X!ZElUJ`>Ku zwQwVRHoOGB1ik`Z3vYmLg}1=>!wDcPQx?ddU!s(7`_Nz310=TgKvU2!}r2F;78%7;TPcj@H_BF z@R#sm_-FVSw6iLF{D-^1z2JfHaCj_iflq;5Z~%_NW$-kpW7_=p&Vn1@Meqgia`>h};py-UxDK8Np9?RAFNIgb*TEa%+u?iQ2jE@sQ}FZftMJ?KhwvBhA^0cw4>+ea zl+U(sXSgRk03HU9fi<`go(LDg5x5jS1J1x_!E@n-@cHn?@GAHkcs+bGd?$P#yc2#L z-UGh~zYf0#e*%9Ee-Hlx{{^>f3+41AxEtIDHo+s|0@wzh3VYy5a0y%ir{HRMHrxcC z178TQfUktFg>Qs!gYSm7!;ipE!q364z;D3^;LqW2;UD4OVWmBk&o*!;xCh)H9tw|! zRoDri4*TISoP?*sm2eF_2VMZ52QPy!gRh3Khd04@z+2%5;m6=-;C=9G@VoHG@K^A6 z@KN|rIJYB|)An#zxHmiq9s%dWR(L$@hJ$bnE{D&Avv4ik2%ilvfiHotfY-ts;9KD> z@cr<^@DuP}_+|J__yhPe_#5~L{2P26ZrvHmX-D{ExF0+O9tE3W2YedrgF|ovo&u-g znQ%QkA6^V!1h0gzg4e+}!JFZG;T`a!@YC=M@P7Cm_#^mB_%Qr4d<@zdQ$GH~UEp5u zKzKMj7Pi2rz%DodN8vJf8e9d>f*asP@CER4_;Pp+d;@$7d>6b8ehA(TKMTJEzX87w ze+nOje}I35|BI!2io?QS*f^YRbJc3ARjbvOZQHhO+qP}nwr$(C_5Qx^xsI;$|KWXd z|76Ilfld(^o$;82DVUZSnS=RRjAdDcwb_U**@4~Jk3%_zlR1kExq|DtjeB{7r+JAt z`GC*)j$auxTcA%EMrJG~WHP2=dS+p67GgxazT!vzV2JF2PT?7iahaIOnT8pdo%vXlWmuWD*pMyQp554&LpYj~IFk#w zoa?xidw7_qc#$`FpU?P~Ul=4upigK4R_@3VwEO($!SVm!N{>DF;n*TB@ z^RO^Wu_9}*KAW*EyRbJ0aU>^jI_GgI*Kjj;@gPs|Jg@OCpYSz5@h3y(33Q6U=#0lC zOu@9w$Q;biVl2xltj$Jj$qww!ejLg%oXlBV$Q4}AZQRQvJk3kI$p?JScl^qrc>{gI zFfwB?A(Jr`(=!Wmvk*(N0;{tgo3af%vlj<)1jln4=W+>Ga}#&+0FUz=uksEb^A$hx z2SelwbPCUCjLXDK&NR%x?99iaEW^sI#fEIb_Uy*K9Kz9@#F<>c#f!Yb z`+UZ?{KEe`@csY&pOF}o37C{AnU0y6iv?MNpi?+TWgI5rpZuHuF&p!;2urgPYq9~GvmLv#4+nD;Cvpbo za~aoi3wQGnPx1n<^B$k_4L|c2Llq2kipUs@&)@kM|6wNPWC0duIaXyIHfAe!WDoY| zFplLE&gLSnKfSWL)dOvUuf z!rUyxlB~e$tjDHo!_Mr*fgHi{oW{9a!qwcwojkzfJjbiN!^eEZkNm+9MFX9}GaBPE zF_SY5GcY^zu_(*1GHbCRTd+O5u`h>kG$(N;7jQY(aVz)mFi-I!Z}2{!@h!hFNU=bl z(2T^GOu(c}$#l%jTr9{EEYE7J%O-5iPVC769L{l^$~j!jRouuO+|Oe?%PYLiM|{Z- z{LbLT1D(P#D&sH_|K#8NkJ*@)MOd1ZSd$IdobA|^eK?q-IFU0rpUb$GTezEtc#;=* zo%i^ZZ}^$N7^*~|Q$)sKeE!bA_zyENCkwDR%dsl!urXV)BYUtvhjA>Ya5filB{y(8 z_wgvt@G@`lAz$!4zcEG9X{qOe&i2^C==)up3xYWiJ6>fn1R`uk40IA zm061o*@ErajeR+UqdAE)xq!>Lj$65hhk1$@d4u=)jBojcLCOaDgk~hhWCA8-N~U9G z=3+sXV0l(!T{dBBc4AKs;Bb!PRL$CSzh67KH^J$;CBWu7w8m@Q5lDc z_$UA7f6T_bEW*;P#F}it=4{8V?8Ctv#fhB3`CP`e+``>F#FM%7OOe8bQD#Zct~ zogy*@oW+G)!S&q6 zy*$Fxyu_P)z~_9&uMAo#&?gKdGZqsv8B;MmvoJRcu_P<7I_t41+psfxaUe%q3{oY~Cp055CKE6zQ!*VhGZzc81k1A;>#_-3 zvlDxA0EcrNr*aM#a}_so2lw+B&+-ay^ATV21HUtP)j+3kjLJAn#6S5r|6?}hWf7KU zCDvpEHfK9_WgiaaC{E-I&gU|&neSeT_)ku_MK&DfS**qehmk`p+c^SG32xS6|nkSBPa*Last_?n;ilObya zIz?b~#$ytuU|MEm4(4YumSq*zW+S#_2X<#a4&@k5<}5Dc3a;li?&T4l<|W?b13u?F zer3>_fj(gvnX#CV$(V}inT5Goh$UHp)me{C*@m6jivu}=<2j9UxrD2^i930K$9axd zd54eriXZudA!-FWg=aLzWnw008fIX2=3`NoVP)20L$+Xhc4J=-;b>0cOfKMZuH#nj z;bETQMc&|jKI2<{VUXH^KA{jXN5V^qdrBL2z0`5&_}FN?4=E3qaUusPeYEBkOT zM{y!&a6XrDEw^wt5Ah@~@H+4DDc|rje=$_uK&Oa|!T9{0fAJq?Vonxdah79M)?s6| zVn_C1e-7hVPT_1W;!1AdcJAX*p5bNQ;zPdRdwyfEdVxM+8HKU=8~!Y)!@?}Z zimbuCD$~NrGUL42~9M5T-%OzaRP29-?JkE2x$~%0_SNzBy4AC&q zDLkVwE)z33(=Y?GGarkx3@fu18?pu4vm5(z2uE`gXL13Ta~-#G4-fMcFY*TO^BLdr z3xhNY^a;&KjL8H{%9KpU%*@4tEWz@u#=306*6hTd9Khim$Elpd#azXW+`;`k#}&HtExazT!vzV2BohPT?7iahaIOnT8pd zo%vXlWmuWD*pMyQp554&LpYj~IFk#woa?xidw7_qc#$`FpU?P~Ul^oipigK4R_@3VwtWBU#SVm!N{>DF;n*TB@^RO^Wu_9}*KAW*EyRbJ0aU>^jI_GgI*Kjj; z@gPs|Jg@OCpYSz5@h3yJ4RngY=#0lCOu@9w$Q;biVl2xltj$Jj$qww!ejLg%oXlBV z$Q4}AZQRQvJk3kI$p?JScl^qr?E-zmFfwB?A(Jr`(=!Wmvk*(N0;{tgo3af%vlj<) z1jln4=W+>Ga}#&+0FUz=uksEb^A$hx2Scc#f!Yb`+UZ?{K6m|0)0X=5@Rv}lQJdKF*9?qAWN`3 ztFbPdur)ieCkJpi$8jp>a4}bLBX@8=kMS(8@HQXuB|q>xgLe#c3dg97!$ka(fAc?P zV_p_vX;xxQHehqMV^{X!V2eV4VYf z!ZHeD^Edv%)cluOnTLg0iWOOd_1TPV*@eA1h$A_H(>aezxrUp$iwAjv=Xs5H`Gl|e zi9Z>#OQ2H(MrS-GVG5>YM&@9C7GqgfVQn^IOLky)_Tx~F;bhL@LayL?ZsT4a;b~st zO+MgrzT;O0?HcG4hLIVI37L$kn4Vdfn}t}C6LFZqGr8N5fJQ#eLt946wQ{G0zV8}qUVOS2MdvH_d3 z9lNp*2XhoBat7yf8P{?Pck>WW@&d2(9-s0JKl2wu^$c{1$QX>z-}x8+VJ7Be0TyRD zR%IPFW-E4N5BBFUj^z~2<|3}-25#p*9_1Nc<}E(t3%=(!2J02*6P8gJo4@f7rsluQ z$~-L0Qmn`ttj}g_%P#EAK^(~moX&Y%$~D}~T|CGWJkM*q%O`xzPyES{y#t*hFgoKg z2~#jFGcpJBvlz>=3Tv|wTe1VYvmb|Y3@39I7jgyHa~t>a2v748Z}I`3^Buo3XrDlz zFpSJtOvq$R#q`X=+$_YBtibB5$EIw<&g{j39KrFN#<^U=)!f9LJiy~T$E&=<$9%<) z{J{`?1D(P%8sjoClQRu7Fgx?HD9f-iYq23)usyr6FNbh6Cvheha5>j;EBEj)Pw^se z@IIgMEx#~Gzd)bRjKr8sz@$vcbj-|LEXWcp&uXm8CTz`4?8yNf&T*W|Ib6(D+{hi= z&tp8xE4{*_f9_SelhslMUFM?bwxlIGCe2kux}- z%eaLYCxbK_*3$QrLu`27ZFxAU+_J@G1$OBpRkO=*!+!uFg5>WR_0-0mSRQLV0|`Y zTXtb@4&q2o;B?O8Qm)}p?!xR5Kjp4+&WM|hf-c#{wKobULRK?eu=gkfaHVnQZkDyC-^ z=4K(5WCd1dJvL<aE{|t&f#LN;zsV^ejejlUg2#%;!A$u zcLpC8=oF4o8Hb7ZC;#Su%*MPd!qTk7nry)4Y{#zb!@(TIiJZatT*kHB!reT?lf1y| zyvL_}!_WN1P{RYAA~FW!^LPHmf0&6mS%Ae^j#XKQjoFGF*@OK#jAJ>4v$=>Xxq;ic zk4JfimwAg1`GW8Hjlo6)`h;Z^#^!JQgQ@v1voa40vlJ_`2J5pK+p-ILa}Y;z0;h8x zmvRj^a~BWt1kdvt@A3&>^AmqE%Ck!Jq785cVQ!zcWFgFXaBrC8w>#-@@ zurqscAV+XKr*STqa5Xn^ClByA&+#hn@G)QUBY!Z&=s>6NjK;W3%;ZeN49w1aEXp#h z%vx;77HrRM?8_k>%}Jce1zgT`+{!&X%u~F`8@$hFe9JEkGA7U`G$S!46EG=LG95EB z7Ynik%d;BmvI$$W6MJ$1hjSdKat;@B6*qDR_wyLf@(OSB5nu8HzccvQK&Nnw$~a8K zKlwNRV>aex5te2p)?@=VXFGOf9}eayPUH;E=Q6J47VhRDp5z5y=RH2<8-C_5h8h>> z6p=9)pTF}j{=-bn$pS3Sa;(ZaY|K{d$R6y^VI0dToXtgC$qn4jeLTuDyv$pC$QOLi zZwxj*&?hXTFgAbVA56`EnU#51n59^eHCUg`*p^+`n}ax#6F8moxRh(SnY(z9CwQLM zc$ZK3nxFWSAtwYnMPPKsV-ludT4rPp=4UaMWfj(DBerA*c4t2hee-r#*c<6C}Vkja5Qp&5xWnSe=|lIfV4xmb`TSf15bmrdB3 zo!FBDIGp1+m2i`jAG0wpi?B2+ zu_ha^Ioq)-`*1KvaUy4MK9_MVw{SNP@gy(sI`8o*-|#bkG1SyRr-+Qf`23xJ@gHVl zP8MKsmSa`cVPm#pNA_TU4&zu(;cPDAN^anG?&DFO;bq?9L%!g9eq*p{fj(gwg|Yb? z|6pqV%dE`9!Ysv#tik$h#V9EXfM2&U$RhHtft^9LNzI&uN^?C0xx-+{ptx&U3uV zJABMn{Ky{+F*DF9Jfkr#6Eiu}FaxtQAB(aKE3+0GvIX0-8~btyM{^Qqasiif9k+51 z5Azf+@&@no8Q<~?gUkx_3C&21$plQwluXCW%*BE%!Sbxex@^MM?8KfNz~LOnshq>b zT*Zyt!TmhOv%JFFe8iXh!0!w`JJ2Z{qcRQ?@lXEE|Co(=S%jroi8a}P&DoA!*@uHU ziW515^SO*`xrMuVh$nf0*Ljam`G%kQi=pNOIz?m*#^>++i~leabFu)7vmC3k4jZ!- zJF*A+a~Q{R3TJZ>S8@Zlb03fL3@`H*AMyp?^BaTB4fF}iD2&bD_y<$-UuI<<7G^0{ zWDVA5Gqz$sJBc$lYnkvDjs&-j*K z7-V6fPiRJBOeSDbrer#1W-bN<0%OWhzO03BSY|eJ<%03*-QJlyboX=%k%Pri^ zLp;d~yv}=k$~XMXUktT4&?zEgFg}0hU;Kxen3DxqoaI=Rb=a7#*pWThpTjtoQ#hN8 zxRM*Vo%?u{XLy;n_>eF7p5GX3NuW=W!|5a5H!DAW!f-ukkLQ@HId2Cqpg`bc(>}jK?HQ!L-cC9L&#REXyja%|>j= z4(!f;9Lh1A%voH>6nOwl-T*s~4!^1qqi@d@6e8#u@!XPUGeL^!5V=@7g zG9}Y7Gjp*ZORzkvu`ZjiH9N5<2XHvYaVqC+6`cig;~&g23v=Q?iX9vv)~ z`4|6TCgx-T7H2tDWgRwVD|TcL_UAB;YqJqsvID!bABS=bCvz4Tas}6O8~5@EPxBIQ z@&TXo9ltW@mO!5{jLcX}$Ye~#^vuHCEX0zm!0N2WrfkE`?8Si`!SS5Nxm?24+{B$c zz~el}tGvUt6GdQ2ixRzVEn}>Lk7kHib_>^z>nZFonN1#(g#$bH@&cFB%GchL%usF-H zD(kQ@Td^a1us?@!ET?cb7jY#wa69+$D9`XRZ}A~t@IAjV*v>$ou#Cdk{EdGwHUDK+ z=3!x$Vnxre_xBW+9ej1y*N0Hf0-jW-kup2#)78&gBxW<|gjs0UqZ$UgaG=<|}^W z4~Ezi=oFsO7?+8eoN1VW*_n?;S%#Haiw)U=?b(feIfSD*i8Hx?%ejtQxrc{&iWhl< z_xX%(`GrCD2Kt0%B*tU{CS^*dV`k=JL6%^7R%2Z@VQY3`PY&R4j^k9$;bN}hM(*H# z9^+YF;cY(ROMc*Y2HzLx6pm3Dhl%(n|K@+p#=I=T(yYXqY{2Gh$FA(d!5qbjoWc2A z#yMhxri&df!n!{M|p;qd5aJEg75i_!43ragk==Q=5PFisrfInG7k&06f3d@>$4f# zvI~225Jz$Xr*j^cat$|g7Z36T&+{7Z@(Ew_6Mr(~!9b@7jLvvW!W2x)jLgCOEXJ~| z!rE-amh8ap?8l)T!^xb*gOE3i82u_@cIGkb9$M{qo+aW0o|H8*i55AZn8@hb1|F<HQ@qFm zJwD|de&#QRIu_^@kueybzw4DPU1{1;Bv0xR_@_pp5jH`;C(*hTYh1X(}6yr8Hq8OfJvE>>6n?h zSdb-Hp4C{FP1u^9*pmY|oZ~o^bGVqRxRE=!pT~HXS9qI`_>v#^ox#rpI)!6Y#$h7< z$-ns@voSA=urw>NCL6Fh+p#PAa4<)4B4=XGb{GEUCA7)}s7GQCfV^!8+W42;P_F#Vw<5*7NY%bzTZs2zA<58aBW!~aLzTkU) zW3Y39K4BS!vH2VSU~2x$tjxp0EX9hf!TM~*w(P>*9K?~F!0DXFrCh_!+{J@D!SlSv zyL`ge{KTIOc|Oo70;4k?lQ0F-G9z;^KZ~&}tFSg3u_ZgOJNt1c$8a)daUoZ5J-2Z$ zkMJ}v@g^VeIp6UsgI);q3B$;Y#e_`8R7}q-%*{e9$qKB_dTh!z?95&q$PpaRX`IU? zT+L0~$pbvjbG*tse9Tw;$R7-GG0-VIqcJWMGda^R1G6(9i?R$Wvlbh&1>3V5`*H|J za}sBA0heACK}3FY^{3@&(`X8-ra9^a;x-jLqNp z2UGK3W@R20W+_%=4c2Efwq+Og<{*yb1WxBXF6A0-<}M!O37+RQ-sKa%<|qDS$ZLU4 z5g48En1m^qmKm9Y`B{u*S%tOPh%MQH-Pw;rIfj!tiwn7e>$#14d4#8Vi8uLx&-spD z8T5LfPZ&mKEGA?!reb<#VQv;;NmgKW)?-t)VQ2Q@K#t&ePUBoI;c9N;P9ETKp5s;C z;bXqyNB&@l8-Y&Y8I5t7n8}%j8JL~u`Ro>HwSSfCvZCFaVghuGk5VIPw+gi@h+e6H9zquL*5N^ioocM$0SU_w9LpH z%+F#h%POqRMr_Fr?9P51$}ybGSzO2!T+eOX%OgC^OT5Vke9m|L%AofGeZnv@V=*C< zF%{D@3v;s&OR@s1vmTqW4Lh?J2XX|*a~kJz30HFyck%#_^Bk}84j=OsKk^4d+z)gL z&uEOx#7xdK%)so-$D%C5%B;nPY{B;I#=acF(VWDYT)^dA$F1DM!#u@{yutf?#<%>! zAP)k4LNgL$G69n^CDSo8bFm;xuso}=E}O75JFzDRa5%?tD(7%9S8*eEa6ganEU)l3 zAMqtW@H>M)40H;|sEorz{F8t4KW1ZI7GY^tVof$+bGBnw_TgZT;zZ8id@kc!ZsBeo z;z?fMb>8DszTs#7VyH)fP7xV{@%cOd;y=v9oGifNEXS&>!^UjIj_kqy9LBMn!r5HJ zmE6GX+{dFl!^^zIhkU{J{KjC91AW3W3S;v({=wAzmsy#Ig;|OfS%dZ2jBVM4y*Y>@ zIf2tTk4w3Ro4Jbzd4lJ8jd%Hkulb2T8S+V>Qv^n5JSJfZre#LvV15>3Syo|fHeyS5 zV0ZT8P>$hb&f-F@;CgQ3ULN6TUgAwY;B&s?R|b6==o5yK8H)*-jH#HOS(uxJSdtZ3 zo%Pt1ZP=N;IFKVap3^v&OSqbwxRVEXoacCzclemE_>n&t;#r_mct&GfCT4P`VFqSr zJ{DyeR%R_WWDB-uH}>Taj^-rJ73dR|Q5c)Q@eiivzs$-!EX-1@$QrEAW^BtY?9D+O$qAg!d0fgh+{|4( z$P+xzYrM-Re9ce%$&jxDogy$g<1qyhjI)ja~2nJ z1=n*M_woo&^Ad0J0iW|7zcT2XK%X#-%vemwWK6~M%);C(#FDJQ>a546Y{Sm%#ep2b z@tnrFT*B4d#GO3A<2=W!yu-(Q#gF{K5N`vW!ZRAzU5-iVZ ztji{B%}(se0UXY8oXR;|%vIdT9o)}jJj*M*%}0F65B$#H?*pB}F)HIQ5&z`h{Eyj~ zmql2bl~|Jv*qrUym3=svqd1W>IG@Y7mRq=+hj@|~c%Aq7lyCT%zZmL6pi@M~V0`}0 zzxWR`F((VKILomr>##9fu_Jr1KZkKFr*JkGaV0l!JNNM@&+syD@gZOEJ-;#7$3UO3 zjKbLbjejsT|7BL@VPTeHMb=<_He*|MVQ&uNNKW8%&f`+9;b!jQL7w1wUgKRp;cI^4 zPlo&y=oEp`8IMVrf@ztNIhdctSe8{-n~m6#9oU`yIFw^JnX|Z%E4ZH9xR*zGnwNN! z5BQw#_?1CF2l|9zWX57bCSxk5XBOsWA(mtXR%bmnWgB*8FAn4gj^{Ma6Woi8)z-#aWJ3 zS%;0;iXGX5{W*+dIfb*ih%32)+qsWNd4`vHix2sN@A-|vegyi2WfaEdZ~TL)`7g6F z4-2ytE3yXbvl-j63wv`AM{)wEa~_v+4L5Ta5Ap=h^BV8+319OQe=_9HK&J?d&Uj41 z6imyE%)$ID#o*cm89LK4g!^K?1 zjoiWgJjS!U!rOerm;Au*3?3}dDIB9R4ioWD{>}fGjd@vwrCEtJ*?`U2j$PS@gE@*5 zIfL`LjBB}tyLpHwd4bn?k5BoApZSZSf(JT9WDLgV@BEAZFcWjK0E@F6tFjIovlTnC z2m5mv$8rj1a}if^1GjS@kMayJ^A;cS1>f@pxs7{ygr|9lH~E0i`Ho*1G*qBZ7)E9+CS)?E zVtQs_ZWdxmR$z73V^g+aXZGSij^KDs<6JJ`YHs3A9^i4F<5k|_W4_`?{$PmEfllEW zjd7Wn$(e>3n4S4plx0|%wb+m?*q+_kmqR$3lQ@$LxSZ>_m3w%Yr+AS!c%RSsmR}eo zOrTF_Mq*4RU{a=JI%Z}r7Gw#QXEoMk6Sih2_T&H#=QvK~94_W6ZsZQ`=P{n;72f6} zzT^jfXYjCrPT?4pahQmI@^AjfY|P6dEX_)+$p&oBcI?VN9L!Oi$Qhi^Wn9ZG+|5Hg z$qT&Bdwj|_{LEhr6)w;zB4aQ$Y{?Gn z&VC%qF`UdyZJgc!To3J%Iu_p&`ILC1+=WsDsaU*wdKacS&ukbb>@g+a-JA+3FbPC6) zjKf6ylYjF+W@BC!VQE%kO*UY2wqsZJ;b4y9M9$!RF5_Bm;cgz{NnYS}-s4lg;b;D0 zsHlNX5gCK=`8)sOKg`6OEWqL{$EvKu#%#ro?7{vV#<85j*<8ex+`#SJ$D=&M%e=*h ze8Knp#$eF`eZn#dWAiuu!PNYhS(%50S&9`|gZ0^rZP|srIfx@UfzvsUOSy)dxr+yR zg6DaSclm^``H4RnGJ2p>1V(2(CSeMuWk%*;eima{R$*;6VoP>lclP5@j^Sj^;zF+A zdT!%h9^q+T;!Qr_bH3wO28|Ku6NZr)iwT*GshFNwn45)Ik`-8;_1Khc*qOaJkRv#r z(>Rw)xSE@|lLvU5=XjNO_?WNwkv|wBW}s7eMq^wiW^$%s24-hI7G)V$W-T^k3$|xB z_T>wK3V^K*X7pIO6ySU)kAQxi60OSWZahS`h#IG7_i zjwf*nv$%juc_z>2CA^Z?v5kO;+$Te#IZSm4C4IA+db+WdfVC6+5sC zk7jT7XBtQIM4rm&oWq4&#$2xAYF^E?yp8Mm0898ZU*KzehaYhZzhO0Z@Nd>@5zDDD z4`d6rVKR^6F+7fgcml_A5;HiH^SOj8c^)t36)fP*yo2|01E1ite2L|JpP%wee$QX| zJ8QL!<ol%qI-r*Il)^K|C$Y+lIAxP~|IR^G*8KFX)~JYVJ8 z{E(Yj#h_BBXCLmzgLo+0@o;uy3XkUyj^ucr%&DBkY@WfhcmXfv zRlJ_Ju!#5b5kARHe1&iE16J~D{>W|olXY6fa%#w?Ok`_z*ZD3#=I8vDKeLAauzu@UPEFX1E!mcx8D=l`<6w^9 zIG)5Q%;Ewr<(WL6m+(qn$3ou8`}i<7@;ScDH(9~Y_!WQPR{p`-NwIwPWdfVC6+5sC zk7jT7XBtQIM4rm&oWq4&#$2xAYF^E?yp8Mm0898ZU*KzehaYhZzhO0Z@Nd>@6U(VF z4`d6rVKR^6F+7fgcml_A5;HiH^SOj8c^)t36)fP*yo2|01E1ite2L|JpP%wee$QX| zJ8QL#<ol%qI-r*Il)^K|C$Y+lIAxP~|IR^G*8KFX)~JYVJ8 z{E(Yj#h<7n8~?Z z#N|APdAyw0@J6oV-F%Rbv6L_Jb-v4w`8mJk&#d7;tlu$~Qxi60OSWZahS`h#IG7_i zjwf*nv$%juc_z>2CA^Z?v5kO;+$Te#IZSm4C2yr&vDwGJ(z6iXGU6 zN3%EkGmWEpB2VRX&f!8XV=h;5HLvDc-p2KOfF*pIFYq{lH_&4h%$8u`S z1KEOYn9QSi43Fa=p1`r3#0<{ld@kWip2v%M1q*mH@8G@Mz$f@DUt&4m=coLV-}6`g z&RU&g`844EJeY^EJ&#~_9?Mh?<7n8~?Z z#N|APdAyw0@J6oV-F%Rbv6L_Jb-v4w`8mJk&#d7;tbb%IrzUL1mTb$;46_&eaWF@4 z98cmDW^nTDwb1Y z9>^AK!(<-CV|W|~@dS?LBxZ0X=W_{H@;qM5D_Fprc?a+120p=O`4Y?dK0oD`{GPw^ zch(BW@@c^Rc`y%Sdmh2=JeH{(%2AxaQ#g&Yc{+1=HZSC5T*Di9EAL`4ALUbgp0Dz4 ze#p(N;!oVpzgV|hET=|1fQK-No!FH<*_Q)3oMV{I$(+G?T+9_bmlrXg*YYOb&U^R} zALlbH;~RXBpYRKQ$6xpxL)~Nf?8E(d5D#TL9?ot|;qe^8ksQyHIhC`R%`<7n8~?Z z#N|APdAyw0@J6oV-F%Rbv6L_Jb-v4w`8mJk&#d7;tluM+Qxi60OSWZahS`h#IG7_i zjwf*nv$%juc_z>2CA^Z?v5kO;+$Te#IZSm4C2y&saYDGJ(z6iXGU6 zN3%EkGmWEpB2VRX&f!8XV=h;5HLvDc-p2KOfF*pIFYq{lH_&4hv6U(VF z4`d6rVKR^6F+7fgcml_A5;HiH^SOj8c^)t36)fP*yo2|01E1ite2L|JpP%wee$QX| zJ8Sid<ol%qI-r*Il)^K|C$Y+lIAxP~|IR^G*8KFX)~JYVJ8 z{E(Yj#h#ET=|1fQK-No!FH<*_Q)3oMV{I$(+G?T+9_bmlrXg*YYOb&U^R} zALlbH;~RXBpYRKQ$6xpxL&wJQ*@ye_ARfwgJe=K_!s9uFBRQTYb1G*sn`iJWUcgIv z6|d(lEaLrqgimr4U*TK)fR+53KXM!YWS!ozoEowz6WN*_c_e$V4+n4<7n8~?Z z#N|APdAyw0@J6oV-F%Rbv6L_Jb-v4w`8mJk&#d7;tluY=Qxi60OSWZahS`h#IG7_i zjwf*nv$%juc_z>2CA^Z?v5kO;+$Te#IZSm4C2y-&j8TGJ(z6iXGU6 zN3%EkGmWEpB2VRX&f!8XV=h;5HLvDc-p2KOfF*pIFYq{lH_&4hv7t5(J z4`d6rVKR^6F+7fgcml_A5;HiH^SOj8c^)t36)fP*yo2|01E1ite2L|JpP%wee$QX| zJ8Sie<ol%qI-r*Il)^K|C$Y+lIAxP~|IR^G*8KFX)~JYVJ8 z{E(Yj#h<7n8~?Z z#N|APdAyw0@J6oV-F%Rbv6L_Jb-v4w`8mJk&#d7;tUn-@Qxi60OSWZahS`h#IG7_i zjwf*nv$%juc_z>2CA^Z?v5kO;+$Te#IZSm4C4Iz*s)}GJ(z6iXGU6 zN3%EkGmWEpB2VRX&f!8XV=h;5HLvDc-p2KOfF*pIFYq{lH_&4hfisjUp z2eJj*Fqud37#_z#Jb`05i5Z;9`CP)4JdYRi3KsBY-obmhflu&RzQl6A&rkU!zvr*~ zowWwX@@c^Rc`y%Sdmh2=JeH{(%2AxaQ#g&Yc{+1=HZSC5T*Di9EAL`4ALUbgp0Dz4 ze#p(N;!oVpzgTxjET=|1fQK-No!FH<*_Q)3oMV{I$(+G?T+9_bmlrXg*YYOb&U^R} zALlbH;~RXBpYRKQ$6xpxLqlWv?8E(d5D#TL9?ot|;qe^8ksQyHIhC`R%`ko_N)P&90l5N?UVfJD_4(14s z<4K&tEH2~Ck{>^$P#ByrP z1KEOYn9QSi43Fa=p1`r3#0<{ld@kWip2v%M1q*mH@8G@Mz$f@DUt&4m=coLV-}6`g z&RQd4`844EJeY^EJ&#~_9?Mh?poXT0u<{3PT7w}SE z#p`(si+DdD;gj6NSNIk`U?soikKD#TS!Z-Cr-p3GM7Cx}9?2f;!vP$|2q*G1W^yhU zaXHUn9xvxLypij8Hy`9qlZaHDNQhWLtJ-n7!DKgE@lZ zcoL^Diwn4vXYzbr!Yg?l3wbB+R(Z@>EXe94_QC=5iHR^J=c;ZCuX>Si-0I0$<}h{D@ol4Xe3>f3x1$SWb<3 zAX~5vlX(=6;c*1J4i*?7xa%#i_cnFi&iCx)~eL0ZBIfm(+%o&`=#azL2c@gt@EpOuOyoV3* zaX!N`zQOnS3BTZX{Dr?UG$EGHKHQH7@ldwo;q1l~9?u~h$?-gyQ#p&-JcDQP0$$3i zcs*}n5%1?Ce3F~^3g6-ftmN1Hk=ytu>zo+NsUe#(k*(R0N3sX|Z~%uf!ihYMnVic- zT+VZt$IE#QZ{#}O%?J4yOZg&S=ezuvpYvP(%o_f~`V(V0HDNQhWLtJ-n7!DKgE@lZ zcoL^Diwn4vXYzbr!Yg?l3wbB+IbEaB69fv@o$e#9;OhSl7`zgcfmET_gi zkS*AT$vle3@Hh_Q2^`Bw%-~GU=Mt{udAyicuz)x74&KWRe1gyNC6@Dje#$TTJ%8oz ztaVZ>p9b8Y2lFtt=Mn7AW0}gK9K{Jdh0{2jr!$9V^Fm(6HN1hh@-7zhQ9i}z`6}P$ zhuq96{>1J4i*-+q<z@|OsR^60CEKzy!|cU=9Ly0M z$CEgPSzN%SJd@}15?;ycSjanhA0OsMKF62&CM)U|n9?Zkoo=31dk7X){aug@<6i(x8p3WSe%?o)M*YF13%DY(1NBI<==c|01 zA96FR_!GDDFV>wJ%c&6$;2}(6Cw65|_T@kh=NP7QGG}le7jp&AR(Z@>EXe94_QC=5iHR^J=c;ZCuX>Si-0I0$<}h{D@ol4Xe3>f3x1qSWb<3 zAX~5vlX(=6;c*qPi1+gmKFLjdg>Uf#R`P59$Zh_r!YRINcWNUWhk?g@f9Kd0Wa3W7*Cg*Yy zm-8Iv@p4|n8@Y~m^FcnwQohL7`7S@^=lqsGvxfh${@hqjP1uYr*_NFdW-s>RV2AC z&ED+KG>+zpJeAWqhYPukxm?B7yqary8`tvzmhfr5z}NT=KjIdC!)or}->f%3mQ!OM z$QEqFWFEz1cpL}u1din-W^g9wa|u`SJYLKzSiqZk2k+$uKEY@C63h8MKjoMFp1<;U z)>;tDrvdlp!90xZc?7%jSf+9)M{xpA;WWCEBTypWf14R7GByo<$rluz+_zRI`x zAvd#%KXE(%V%_XmPK|f~4`C8Ju`7GBF9&is$1t6fIfL`Km@9ZLFJeBgg9AD;}tl($-ia&5G|6uLKv3&Mr0-LiHJFp9n zW^eXq8b|X)p33Q*!-ZVNT(073Ud^?oy79`jkiLKd-@B`jqb%UQunR38P!(8Sup9L&r5sO*EQkJot z6|7_xt69U)3iD?I6Pd(hhMB@trZK{FW-yD{%waC`n9l+hvWUejVJXX4&I(qtiq))P zXr=ixfr(6FGQ&(^D$^KYIy0EXZ00bRdCX@43t7Zsmavp%EN2BPS;cDBFm$H*Gl7Xr zVlu-_VJg!YVLCII#cbvhoGnmC} z<}jCe%x3`$S;S(Nu#{yiX9X)+#cI|tlxzM>U?P*4%rH}!$}~op&J1QTn>oy79`jki zLKd-@B`jqb%UQunR;I&H4L3={!CyZlbFmfQ<%y$MwreFW-*&N%w-<)S-?UTv6v++Wf{v^!Ae%K znl%iaXZ}oJB9oZRFjJVyG)9=t3}!K#Im~4q^I5<`7O|KmEM*zXS;0zHv6?juop1h3 zU?P*4%rH}!$}~op&J1QTn>oy79`jkiLKd-@B`jqb%UQunR;I&H4I&7{!CyZlbFmfQ<%y$MwreF zW-*&N%w-<)S-?UTv6v++Wf{v^!Ae%Knl%iqGJhs8kx5Kum?=zU8Y4_+2D6yW9Og2Q z`7B@|i&)GOma>fHtY9UpSj`%S^30zJOk@(18Dv5W z$tqT}hM|kip9xH45|bHb3R9WJ2-BItEM_x@xy)le3s}e^7PEwv5W$tqT}hN0Ew&jcniiOCEzg{e$qgz3y+7PFbd zT;?&K1uSF{i&?@_ma&`_tYj6dS;Nrf=FbEsGKt9yGli*4V}$938P!(8Sup9L&r z5sO*EQkJot6|7_xt69TPzWFnOiA-WL!%Sf+(->hoGnmC}<}jCe%x3`$S;S(Nu#{yi zX9X)+#cI|tbcOjdfr(6FGQ&(^D$^KYIy0EXZ00bRdCX@43t7Zsmavp%EN2BPS;cDB zFm$E)Gl7XrVlu-_VJg!YVLCII#cbvEMhTBSjsY%vx1eZVl`_Ry4w7iz(gi7nPH|dm1&GHof*tx zHglNEJm#~2g)Cw*OIXS>ma~GDtYS557`n#%nZQIQF_~eeFqLVHFr699Vm5P_%RJ_@ zfQ2k#F-us=GM2M~m8@blYZ$uL{F%T+CNY^|rZAOhj4+)U%wjfkn9Drovw(#xVlhit z$}*O-f|aadHES3uFn=a6kx5Kum?=zU8Y4_+2D6yW9Og2Q`7B@|i&)GOma>fHtY9Up zSj`%St}}loFp)`2W|%2VWf~()X9lyF%^c=3kNGTMA&Xed5|*-z<*Z;Ot60q%hORe% zCNPmnOlFuVOl2A)OlJnOn9UsKGLQKzU?GcG%o3KejODCgC97D?8isB#e-EM^HyS;lf! zu##1*W(`Ay=FbEsGKt9yGli*4V}$938P!(8Sup9L&r5sO*EQkJot6|7_xt69U) zE#}VzCNhc13^RrGL!nUZE}>8pHe*Y+WoL%ji~U%Sjo6gUc^KO<-tQ>eJ=ur-Ih3O~ zfv0d9XY+LC@N8bl%eaO&@K)Z%Vm`{J_&i_b+x(E5S;e2Yoqw@ztyu1jcmNM!5<9Ug zd$KPFayZ8@os;?h_4OHPUgJ24lbOjm{Qs|0?E3G1oo2XR^SGER82q!3ouAj>e}C;X z_-nwO2EPvNH2ATw)7yCuAL8S2>jrhfO|dm{1(;5~h#2HUAogX2uMofS1W z-lewlqXx&_V7nx0aQu&LS4It*@BG{Z{Tf8)5u8t#sKItPYH(iTZSTyrbtsf$du7z% zJcF-IJL`kT=g#vDbzQV<-r^}!0~arhnH7JvI5TH)sO$78i>HLTPF=Jp)HS-J>xdDP zhen2to;)sdab(u~kqf40{?CEYOBQD@Sv-DO_WvFpmz|k8{eQkOvSjYu{~qW+BskdQ z@Z?^58cLbmt>=Hn`lk)(K6&WaNVmyD7A%~WIW}`qW-yib`Tu8hZ06j|DU0Ic3p3~b zTeEYHgEEKBpB23EzXoEv40`;hWbUl_L8!6v;97;cPFpZ&(3xC zy69NEuK!-@M(k2IU@vv)yVMQbOI`Hy6+iBvz0^fRh}R9?OWn#{>W1v4E^n8*=+Epu z<+5g%y0pF274A|uY%g{9>{2&;FLlx9NqoL1?4@qgE_EaJQdho9UG!()p5_~Ue#MU) z{SLFIx~g63M(?F=>n?SXz0`$*`!;^uF}u_SkI3jyD0p1&TpC9=c3EnB-6k+PRLA!2 zb@8`#3dS4!AL_aUHPQF%dfer~c6^B+H+nDbS{M8?r%*Uv6d13YzFXZRLEZoAch+uo z;h@3)s=Ic#y7hagdvLe9_CY|=W5k#E`Mn!R1I^KShrf`RC{ z#FzLyI_%bOYtS!xJ)-@Rf;HYR`h7I`@89dYDfrpnJJ^md@qUxk#rOXm)U9e5--`8! zZcPa4cAZE2>PDf&pf-BkcEK7yZsuZka)J4xJx}33F-TDJUq3qbu&OhUI zi-H%s9=GqdMxl(LB6{48!5Tkq@Xv4l?H%k6wKy=evo88Ny2SfM@84bftquAW2jkIx z(d!)V7yVume^0PGv^?k+z2@;H{<0u=v1`8(+k;$!ebIi02kU?Jlf}iscc-HNk@LU( z)J@+JT;Je(ShQdCGrOmL-GlE|U4!xX@?Ynt-T@fwXfeeR2Ym$`$fMi z?5ST$QYaLCF2|QW_1hHm%Lt01{f-INJ@vaNDHMwSt{GqU)UW+MjsLx0qSs|l{c_rb zLbKz|0{7IfZ-d66ykIK~c0{zhK={zfXdG|Cjrvaijm-FR6R!_fOETR{W%by7aCCy7$! z#-VKI7ytg(AgKTMc@z?`*2mPkUo9v}u-5pIrg+X1k--x~RYxY5{(9{2ie(P$Q zgc97(qju?cZ}8q--X41U!&;%D_?M$y&hM_EXxHcchTofnqQ477&o8n|zsK~8J``yM%{jWf7VO*g{2Kq! z({}{l3ICIAXZ+vg^LIxpu<1kj{yDV^ZiKBQJ?QegO2%p zKNfV{=lk)X6F%R63px@1+ebM>aKisyDxBuOS}T!X@cn)zJ^~jZUBnad0}0#2!MK-{*o!%$;Us2`;_?#zvo5$O zIl@8^$wCRk5q(2qn_hnKOrt&%BC>x`a z`#HcY+Q#VQ{_WACD>lX?pZFD+t2V|?o}>eF&Bk<)KVQml#4$W-XearQ2Dpy3X}ZaO z$>DOu*KJHM`TdEAbHm2;lfNR&O&eyAyjjTOh;P|6U&}cnFmX2K8~LHd0*?5$jTs|v zB}}{xGeJHh85!KMX(r3{=YhFvW2Vbf?SVu`xazMZdF1E|>QW9s#A8ORs_?(2QM1`57Ux`-pW zKN@m%@M^ptUy}*_XTks6W15s7VCEwviEW5Fb`pARk&B3=^sDl`Hgj~tTwyiNW@Q`T zj{Rpb?*CYDxN2@^g;vT}SQYb(YOcz7WSkM;P8_Lp6r^}%3>>~9YW^{{#$|J4MR{g8dSRzEZpZTCP+I&q9*QAQYjo$R)ke`gRvb@>OP#&=Kr$oYM!E1b2XwdrbFY9 zj;0UyKYv}#|49#zGZR!R{6BGcCJsmU|6zu{q`{tt|Nm#OqdV$P`j2{_{-fXJfB*OY zrx*O^O-%ND4v%kOgoZf@80^|f{*xWzivPPg&lL(gOn!_kzhe1}RLBnW#sDhg3q{X; zU@wsg4Uz>6hi@mh*$e*nl`mKP$MO~b54ljjA)Ut&@JB2Emo@)1S0%K})?K_racA zT<3n^<9akegzJQnbk*G_`-vavK4Y)|*YBRwb#<}?*BL(&wg(<%Atxt~yp6M6-972P z<1_MB97WgX6?C1QL)Uh#&A8{c^RZQM;_mQRGAw}7mKzZ&E(=}!_SHe`;#n9Pszq7leCXF(EY70LWNm4qJBq*NlXO@w?Y7bqj zv&h5aPIO&8g5svy`fy`1#r2p;E$y&?uD#+((w9%MF7~Et_-*nK@de%cU!iY!)?;c1bq1l3azaVqbdIu9kpfSX_7~bC2X%bq#ge&VQ+s+l1B$fa=e&q zu1+QUpf3sg_eY9y)YcmX7|Dbj*O`P8eWKhtWsqggNRrI6J#~sPBysId*l<6(-hD_} zecOeu_9tz9vVg8-Zsd8jn6P)>lIO%@bbTPEe1;^DHZ*{|83&M`S@$WTx2c{uf2@nMfXr2?vwj4s8$;0&dB)|4EMd^9j z)=LjbzF$n&NlVCnm-N9M zPuoheEXgB@r8iwSHSw_*XgxOkw zj|uwU_Czh)NcUr|k^KAagu0nck`tH!2{{8E(RKEGx{kuwEac<`lJ;xc$l&@XNyf%g zT={m&Gc}MrSa~E5?nyqA%P9KN5V|f-C3)scx^BT(i*f%V$=z1a_3Mq)pNsyb>uij& z=tInh@yts}B3nK|=>LMggZN%#E?bbo0Y#r^0(sF-lNUz1GNd~cEr z?@M`hNg>PTzv*iDi8ArsY(sUW`%>GuG-f#UUin#yJKdk+)&x*Ke+Cn3;3T?saGnN)U7P{w6AaDN+ zA<60{o6Qo!9?YS8B||n#PSSn3?RVGSB1^+lLapvhSyidYer_*{o4%9mQ+AV0)n6pZ zPM~&8+DtavFH`=>HV=KO$mY2>`I)?kY$|Q7=5!#RFDH@YooyufiBBl4gyhQwbl+S+ z`3yQk*m>P3;#8aEfVUKJ<#5vSD=4CBsjZFU347rXUHxot{pue`-rkpN`nb{k+9ial zI7e}(kEbXBew1O$X1dSB%p0R(HQlTCk-e~xdi9ql6meb?-SY>Nw(m&pO4e%{?lW^iWb-`Wpo{XiX?x#khjDUbiEZy^3dnZ$vpwx)n2+OG`iA6tBFTQ*Eb_L-_Vw}M zQsy;>DTixqbp6yw{vY0;tIJB#I<6vYz#Zxhh3#8Y<4!&Ww(&5~5$jIQ$ARQii-LoQ zGj|19E_zEI!iG^+y$56M%9*;HY@(l&HwW77;` z*kYUAnMx>@QBOVdg+FQ6WKr8|ZS#RsScl?$*+D(i=1KQs7n2`Z16?DBQhWO^BX5>n zgevpIB$ei=UB`Yv9)s&BzdvP;xL;HME3DVPG{DQc(p!kP{)__OD6;P8`vyMxrPC~? z|E?9tXu#nExF7fpWija77Od^aPB6_0Qc-&&@)S=DLPSZA*N`wpk1+Emi!VPe1iITe zlzBuB+>tc>+{=A52>rZ|8<&kBF5KTSI*MGmTV*hJK8qiU2(Rc#v?O$2REVcnj|Vm&z->Ci*WM zrPv4lEZb>5`{nSt@YeUvTEIuTEr#LT=}j^NYrb)3C-wT^A+kieW-pT>ifhC@_vcy zs7s%(N0tNlE0E+sr*GkBQ1l-7AKXQWU_%ONs2&9?^~)gZMm&xIkW z&IcG=yRNK8I=z!j=*9lwf8l;$4iDjn^_UIG$fEO*j6P1Qnh9<6{!j6vIpxf*3CMeH z&--{;sbh_OM!|2peAIV@9Y-9*efNk2TnBIZ1yM&g(A;^-SemELWjaA(&pk$ymfc*h zA?VsY+(;{&`f-oXhQ$%CyBeH7w{{p}oaTN)^+b4vyR|3CS*|b%O$y^?kEI8P8?_ig zBDn47>vWC#Xbj*n+{jvxSZ>`mG$4VSxB-Af?yerNOyb(zMH{lYi8Q^*;il~X$>sVk z1-yd$oMu*)+z%sRS;f6c4^%VPB@*x!F7p(*v~qK4cyr=8(oEi&7ydm0?c)ub1j|D_ z^-Pe%yt$X)%#U}8KGf%VhfQ!6$h+(XT@cT4B5+rDQ~hCbl^1mb@N2v|A&8K~Tet`$ znJ1TmJm7Vtb!r~(0vBP6cs+Z;OEGVvJpg6AtBv3)cn(Q$R>NBwgf=wuHueFr=U-h8 zoFiZ4kM42jmt?@wgP(W=LO*_bEy5n*AFKuLEPvAlkaPSU-Qn{RzyE#&y39ZSJ%sW6 z^SzMn9ezTe&p&U6bOzo#eu#s%)66Wm>72a&^WZbCEA`3vKl2f4!qiZBo3sOUBHm$}Kk5$OuIXcnNKL@#I>&?bt%084vuY!P(MVrS|G5Ai|`biU## zui*HYIBElO-Y;3{1j}q@<}p}4XNHc4iL=t~C;*T=n$?aFwdsZ+ZW{9bw#( zg}@eYL+8L#5%*^lnuW#O?|wt7rQDjop)2D~d5R>TaeGyP`0yeN5yh96J{gvWdE-z= z!!srDgI|B%Hq_pPM|rDakil`@`VH`Tg4e_YAb=M`bGB2w9Y*?8rjv z9C{(pOWxEBgstW6Sc_cj`R!QHH^BZr%@-hEsTGkct&AmVh`CrmYR?P1- z7x1V2d9>RV)8#aC*etLC3eN4hn9S0XR@vnl#3{#H*o zd(B@o0P*ViqaLCuZ}{$1q-f;#pjWkt??%hO7CuA2Q7hktz7+5HZLa}%&mS=t!jJq3 z%VF|~|Evevw_7mZ0&b7M`wEDoK+_M=odlPh5O1I0*JFs_B1rokVci6WCn1o#U>FT= zo`Shs;cUNPwid3v1gbw^=`B#U!o)|Ai`uQwSHRg1pN9qCIfD2JR5cJD6@2gpcTC{# z3hsm;{$C_w*+G|0FM(aIfeGc3%*uDcSq2J2Y7?=QY&yi1>q~f*C^%->jZywgs@%^OiPajLDym=-zc~q1zoe?qZqmt z!RA?T_Ezx54&Dd2I!r3HZB77nGESf23hV{rMx zzpda3g!_L5S17d104Wy!a}4CE@L?KAsnD3IuvC9NvV6l?#`5K)RK}-t;l9 z5}stBvlsbrL3WFh1_Iz93fCc}y&`)Za&Z!EbAvNy(INU&xQJHKT**~*sQ{dZ=sZ;g zJVkarkgk`=l|FUeqPJ8|^A+_S1(QRf-#)^bpGaJTut!9L17LDgG>R%0$3&y4m(oR* zR3*+34atXPmdJ}HmJdZkFF=Gi3ra{m0yFa5Iq?Pu2K|df|qKM^m|yo5FI;< zK((TwG&_7Hnn%m7I?>)qu&fs;qJe7=wbAR_D5{7BcT(IG1ri{>lnC5u@wr4eJ0qU( z6nUN#do>}Y^WynGB9|bsNDXp9JZd+b1&g(Qh!7&ayags<;vcBe9xfgj58Wm4NvaTE z7N=4YQDPmf{G-KgR4lwI-c|$QHL(|!W@5$v+(X#w;wUP!-xP1674j`{!|&j3ix1Hc z5HIdR-+;SfIn{&`#J%a)OcFbPgfLkg9|g;M;v@4ROcnn@rMfgR2U8?rx_DbKn)yJy z78}9BO!2?T$n2qbX$rVUV#jdgk}KZT1bCi!a7XB#h~Li!DG+~O182oz(NQ>iD*pBX zEX%}W*C5?z;-sz!TOppj9j+_IZ+&3$Lj1u9u136&N=~oDf78qST0F!8XZ7M>GeUjp8q;uGl25k^|Qwe%lVDRUCc`!gu0~Uy<2+@v382N`Fk9QlccOSGIN$}A`&SH90SWJ$$V_+39m}>RwMaql400Z7hadd zV9hAJA<0{e2)87mp%BJNMh-&~@sicpRTAEjOdE#wB}g(3BHcvE{Ouqqk^_r?yC<1I zll}XWF^l0kO_FFr^aqk(Y0jT1>2L>`J(84i;VfHHt3cMdk~kV$^CYSB0DmkQH3+Vs zNSw!l6iT+Z15hMc^aYZ5Dw#z!juMH1dbdn+qc`BsBp+r&S1zfe>THGN*AdWFOU`B^ z!VAd`nz+1_TxkJUE4fcg_d3Zc`drsbCY(fq4HCyq;2I?%^h7pGZhC@ik=*WxT;57% z)423bvb+}D2T5HIMEEF~dI4OUWB{$V?3ocA0NBIqptY?7bBu#PPE5@^;GCIN9Q1?> zQ@R)?u8fr$?ZMR2N7$2@GZjKFX1fNQH`D1Ka6ZfllwyUx%to4B9A*?o1oC5sPlV2& z2@e8ylo7k2wZ|C;nueZWcKU$?FwtKkvr~)%4S;8vOq!IQV;%+}ULez@BO(MbPkup4 z$xPu!cu8eu(i?D}Swmw%I&l;pHjwNex{YGcXo_XUrSgg(+vcOaZB2Hob#o6*CCi z^}=dqH&x$WGMO3xYMF`>!=S5UPESMhH%wzQxCW-J6waEMVHW^sW=>GGvy~b3 z15DmB>#Ko#&-_Kt=LhD-9JKEfGjA(Q+8E6^2zRrhp1|#4CrjaMFFS$*oFhAz;yJVP z-5}h@exUi_S@w1ygy-1JG)e`sjtAf@h+R1o-FlHd<%J}I*?w;T4`r9)h>9?b#bzPC zc}9{9k_gUW+=!LHt!~c1?+${z>8R8F}PyZo+^AL z?CF_kUn$#ZC!9TFIrP{(XD6HiSHV_!Ay6fI8g)D23${INfz_~fu>jPvZzjUaD>jWj z^L1?66F949l^!4s?4ExCZ)AJ2Fll9r$^dxFj=PKKUQ%fS0N&DKdM13NyYc|=l{&EK z&%@F`9zf_PO}huUzjUh{BeuKM&XO(*E?xx+^_C z21z7HZ^nR2l8Wv@mn`ka1Gy*7r)`*2=~a3P(xl(*1w37Pnn`90=NQc_g%=WQ2Lb;T(NW_J!em)ou>d- zDy<(3QYLLp25FS8>y1W#kRBa_HFX+Yv=>lZZggbM0b~EB|_*S3)~B#rz~m! z$bQ+Shrk_>m2ZX4TlOO@UJuIJxkKn9TQ&`xugss8vWH}=DVM`Ccl!SM$=-bd?ucyp z0i<+HHfRq0jIx3$-~wb#v~_q&_V_xy+?7?(mn1>9f-1L(vKjOuB*{k8NSiFvbO%Y1 zg{FeslllGzk}7K^+`$}aM$3e2PhYCT_L@nhjoz#W?)$t*M|OP=pd2pj z=Z@02uzxa5Uc9+rduJqm9_tY1Ph^v*oof4%cDuEQE}Fh@9ib_T8^ z{-n~=Hy>ya9J!V%pQDSH;yUIOJ%nSwxDA_eCq$5pA8{Pl357e*Z_{G_fPA6TACUZU z=_0N>x_=GNj$C(Fzz%TB&OmmY+i@byPIJ4=M~pzOsRW6HaIN(FUE&V%5pnRf!<)tL zL2q)UyW+9YFW zW#_ppW^z7$7cb`VN$9+pj#SAx$P^w&ARi{(3B;Gd@lQPI%ov)DA7+wiaPec_e2uV2 z7?jiL10JV>?kMxuE;u{Jw~AmW{7yuL=d zXPD`uu%1ro@d!U-^ZW&pK1*j( zwm_J{e6t$d1E#4KUNV{QQb4kpHkyrRGm91?i5%v;TBMuHOrQl&9@B~5seGnh4)|jx zJ_YF(GR8%~6*1y+;EEZ|EtouIy3?_m5~lJ`aHY&!+JY)$-pC<*#!Tw~cm=cI9srfh zt6~JIVr2DjR?WoI=Fkh~%_9J6m^(BRddbwOA*^Lwhe24+qzwi94O69puz~p@3k_>z z7IOe^VpdU}&CCMYUTb0MX;-(E`8^1_cTC1BH01*`YcR-1W-zUkKQUU`0BmC}(5HS6 zEBF>dCpIPw5uDkz)Y^TlqdnkmY!1DTE!lP{FZ}4)0?bik5B%Apb zmH}-0`OpQiecaIn7ufbxQM<_IN5FM38{rC*5cVYv-Jz^(3?hWF_B5vtXB+;7Wdw_H zfTmSFXmxX$-Ms{sk!&z^T@-t#0A8Zmp{=mI!nzND?kYQnj!a!+H&&rxG3??zgpFlm zs1$si4W+Wl4R%Q-$W1n5F*|+N4Tg z+tVqYL^kFKgh^~(XK=}EBYlDIvE^^!ES3F{eyaPd@fl3g*a-5O&R$Lcm%$#Lj6e_A z9kkP$$$oVex-2$}X2%cNp?eVF5o>G@FWKzwS>STmX*vLM+0OLM&0}ZnK}z}T^!)%l zW(TLkx@H5*PPzZ!NyFL-&$&Y~B+mUR}v z@)dg}2f4gv^KQVTjt!>=rJmjT9(*I=i-{!sBCy?W`|Huw6Krn z!%Hjc768Co_9`9Oc*j<^19{J$-U{3YR`oNuPb`-z(`{`1ZxGr`N6@D0Zt0~%@UlnR zhT%@=ApMX5lfBYDg)niHPNuGNk}ja*1J2T=zasiRX*+uVT%_Xp0JusQ_d+v0qz|nQE5ayoE?*{pw-54Y1?i%J0Xqy0lHJtF|;jqT6!@G+!<-?dzhS)?z|6S zptP9}XBVVjeuoHmrOt1mOOo!P5_q!oAnkIcNJC68xhM7AiiV|1okzgrzI108BBV(V z&|sV{y^l?R_ZH;>sQk8p8$U?9eWIGOL#w*MfT^-Bt(725GAfUK*v&3D7l3 z3ok?1EYhR|Q8q^yt1!f0iFOxAM^bjM{uKf&^Z?28V_?4-=I z9ZUjbeg8%hr(_8%$Z46U4AIZXcGA;&R<@Dg=VX^h!{>RKyb>f(HlP6TAlWA>OG zi(CobNsx^Y0G=c}$igI9R!8SXQ)Iu>n3XE~sv9EQ zm+ia+FKM#N7hst#dq*{x4B3J^fIpCJ`5Bg(vKU$?Je2tc!^kJfF%uCWDm7 zw$U3`CX1or>6z>;os4@f>qZO83Rx3v?NrLXqYreIEGP=js%4Ky1Mot2ydUD#$R@9a zNv%vld&jS2&uNkKT2?m+T%GJ&DRA|&mk|j2MkeV4%LbWc6-c9OGmfhZn`B+xL7HV+ znuoN=_R!hSR@o`4AHJ0ZFGIX{vZ596@?N%Fjz0S!bELhek1~9m@OH@lsfDGzeA-}G z?v^WPM|Y2WrVA2ukayS#lf80{4~V1u5iRqb9q$_RBj3!r1}22OVAXl6RuP%3HpaHXjbk&(A?vUwOU^CWqvmS&+l>!%c|b zC+DHCD?B0(t%Wmx`5Ur4CeM2c-Enyr8lFzb=PD5Iq+AyY*8%d2p8z-|kG=!pX?eeK z0GyQ%>WX;h$=L{G7A-&YGsqSBtmPnAdg#L36e4<0X{eg@=@e1|t&-<8)KMuG|QXVCy8%9|w! zn6}ZY{I9XV zRmq2Ap(U)A|4rK>HS$v0<9sR4Isj5DpHE-4SMu$&_3>Js^a=6mxYLkk6rAv5)fkv~BlE?o5Tz zHu-3p=BXN0WR<#m6Z~!buU53*9~iCl@{MqF8kfK3x?& z+NN+*T(*Z7cST+*n&P3DPgSh_3Qzjj98j#Jy%{gXIoe|LR^+ci5(gEN=(v@SVsa6L zhZM*90e4t2^9DFS#q6`d9Z{VA177?UZZY7FD%#IRgyRbRUr6bMB7%zEClz&cIx#>| zG6Uq4VmFO^rxhhbpgXI0I~VYCiu?%xoL4vufJva@O&PodDF*jMpbLtZvLL@DmjB0E~)Pcz3Win`xnc~xQd zf$*B5vH)C+!b<~OtYRX4gs&^IXbNycp}&e|-c)3-L=v|YmuOiQr?^f(>TSiE3E<)t zR@#lZtFW5}VS-{dO=A)jnMnX7DW=o3B3aQy$Nf?if6+e5J;hfw@R_Rk=?!%E6;U*~ zOjA6jk4?Jb5zYBB6z)854-{<^o zUh)-7hrr~qLP7=ACkhTNTM88VTj+v9MZytyDN^M6!)LML%D-^#}gH$RclxLOVRtNyqiiN?5_d=oJ!e_0bjLz!5 zQoP6o?zJNLCvbI&CHFz<6;A5_f1@}=%bf;=uq)t=ihHyJ(xj*;0-#yJtVGxrMd$nQ z`Bt&h4Ozcaq&$S~y&`KU+V?>*^eNyU73^*_<&$DD6@}XrQ?3AKuUv0{s^j3aa4%Y{jLG(=cDA(@<@m0R0dck4kjcUOClpet#N0fW0 zUf{1xrE&16vJVv)jw#R4FnU~hoT`Z@l<9QtBtTh2)sa)m7@B6ERt~4Vk~7MSKcbmu zl_jHrJE!bV^Vajqz1;u^R1Ts;Xcv_JbWY-;@^}E68LXU2KVyjUYzVkerJXMTVM_HT zn1m~z^aY7f21UbJr1JDlBoU?DPV=Q`WiwUmuPC>3U~*NN^&7%oQ%<4@WQ?+$fn}_6 zG<|GtDEnW9@TPM7EO57!Z(cwbr_9<9z-{I7E8yalt-f$}M_IQW(eEmo==+eUyygc$ zlJenDm?SI5yCI1bWk;&<-c!bU!Dp&+4vi@Hm9Oa}Mw+sODp48Ator~wP`++}Nv87O zdk|(ROY8xEsI;S*$0Ox7`sq2GcGzg27Z)N~cth7Esgi_^X7Q!;+I2=$DK2!FnM1<$cs}!hQ8DWO7LV0Z% zNTo9VDoB;m)D=EoD0kC#LyfXU3iwN9HW#{DW$AeMe5G7T)r!~3kM|I$PMO&rmi5Ys z)aVA~Ln=2kD)VRp(xhzL3(IEZJgS_uD2pE>&sJrp5fHvrYUzvqPT9smhkQ_Op&7(S z<-c?`=#w(owj-#_H6Vh$Dv2tIyH%F;0PIms`yBuW)t^PsIjWW^;LJ(o>w*Z*s)^ws z`&7fJX6~Xo6oJfKRo~G9+)bsWWwpEN*kyRxuL@ZSF9%fdFQD^MMaQ6h-l`}%-EmM= zaSbLus(GG(`>JBELw88^vI;ssRedIOM^ygp0QXlNOoi~M>dRD^98+zlPx5iqT@_4D zs9t`D)}B#A${FuAF^KOMqbs+3Y##;F$O z!1A`Lr4A^)U)s#)Dv zc^?BVO*OR-Qc737OMqpD>hLj;2dZ@Ho=nw>BZ!cta;t>NL)G-3fXi0NsM40BYRy4} zT-B3m#LH7HRzR1p8ae=h9;>!0Abg_wNOQLWl@krkMXKdgGcHy+J_Y=#>iQ>`l&A*L zoUc@6R3Ji`>J^pppQ%s7nxMClvVmbox#P}R~tQKPCWrPQSQm!7OCvu0RCR({x!%4)j&GV^HFs_43?i%U(7{H_Ui6q!R=N* zw1>$awYdW#IH(KLA>6Cp8;X8$R1a-~&`G`UFif1)-Dn@eMZJm2BChI#C(s5rH75W< zPql9yg!|R0G-o)V?%@H>OC3sG=dJd`-yH}Ks#|enQ|O}}O2fUcde?a*e@Gog&)H#h zLjZ(+YD*$aj;LL_gZQgwyoZ;g>f8;0A5*t>2H=D`g1&|))ddm=1Jv(gfjgxRo(RBc zbt#<NWINTVd+P zui-OX?Mzj;2z5;|OfIQM()Z!Adc_7kX4=bt(;qSJX!jAna9jBmK?a zHFfP8Ps2OGf`dnBLXFbR!{8%pE>IK%^N#cDMNKA)<)Bmq~VPJe+wrRoDT*LbF0NVDzd z>WpI$maF&EY4<91IgOFk>UA_EyiiZ4QcI0GU;`{)s*lrbtyaBm4}88-_j7^nwYm?j zwd>Sddcve${Ubf>Z`6-0fH$c1Z{Vy^y@U^8lX^uE+R&`NLVtnKqV~B7XRYeacVO~X z-MkY%->GA^BeRcck8E(C)a!1*q)oktzMJ-%@n3@M*7Tyo40|-Q>GgHcq|+pEuV(2r zM0eD@qBVk(CYUCB&YB$=aJEmgg$m^^n)g%(bJZA@!Ng57Cmc9;&DT!I%tJG|6q$Ky zR`r49e$8rn|GYKVl^_Q-a(e1~G;>+x>8rVZ8D0))291I6utv8QUi>uesH}WM^W8`Y z{WX2<5ca5sLuWFNY1sZSIj#||f$oH62u-(6YFaJO1!#J`2JV!m+XVnlYhr0r>5S&+ z9}u3^JY0=D12t=|BZ(l*q29n<(CpL#cTv+_4-%|#_<-a?G;3*A8LH8a06a_++yU@# z&3c-0L}*@2N7zf62CAxD*4*ok-hvvU&QahktAAi{0UV+%;UW-QIY?r7Zi!1Au<;y!Q* zny4KJo2W^oLQj$=f*$r{jU^BfQZ!4cckgMWTL4JaSX$uazUJ+(z@=$Mu7qW}Cip!} zGBp3vv4;nm0fBIqsWDK6AWQS{I&j&VTpG4>H1bE_ay47%`OMQ4QN=o66F`&v#~Rl^ zA$+3Y?Lun{G7erk6V#OycD=%P0m_)d8%=3gJp>(%MQ7eYBti3TBeys`#{e$ zb9M0fT+^ou;N==QeFiHuQ>TKf)cp7Y@G8xa`+!$#P96dGQu8al9km+07+zj!&h~S~Y9w z6xdtM@B`4j)97e={$8_MiKcwe#8J8Eqo&=L$n2BmVko#a&EK>|Zm-?f3to0>YiJU+ zSL+f5ouhUlJ#J3gV0tZ_wd=+smwnn9)o786HjlO)UA6k@$i+>2opxf}wQu*qnTK`| zP1g5oyVL6WfOb?9EWNY=ROa>8CKmv3P`i@;#KcE?u`_ztSIamd`XTKHS`i)A&h&)N zPg^hxxMSLu8HjgW8x{fG3GL#I0G!lvY0EA^8{Z6Pr?huylsc_FeGT!>XdSM@*;%cS z*2U+v>Gb!L=e1)7!AqcanHa8vv=N(Oc|p7DHnP5`{VfL#3)X%)7q}4Zy-6UU+PPB^ zJxtp_2A1JkHUh#3?HU%sOWK%N04{6yK7;E>Z7iMKiPC;>N4#ilJ{6g-XkP^(&#T&k za*%7jYFJ*^R?sMXL;H{>ZMU>V^zDz+j;27jwV^Wsh}XJ=f!xs^ zrBU&&HfAO)6SU5>$WGM$Km~>*?M&J^NY+lIx?+kpSPsBFZJ*9aB2^ne2V?GQXVM?4 zq-pu|?N8VCScC`}+UhOv@<3Z91Uyr#8v`y&d!5!D54A7v!t#;!Of-CEYr8E0AV+(a z_Skc^L+C7Sp0+RTG309xX2JDiZT)5do@k?=!K6TYhXGfp%~2qFkv3``QYzNY*#TXt zc0(ulEYm)s;>t5^zlrF<=USN`0Oi`nRJ*UxUh4*7rS|$YM5xl<3j*MUb|WnVYqXX` zSiaQm%s>*gS`8J5UTG`x!M)Zx( zM_NI*YHvM;$y;sDCIH@Pt4a4k`zzH(KWZJ)zJ5q;q?R9_9f^mgLf;?4~=n2|9P(d^*SDp{oml z&{NlaD%0N+e06_~MD#Nh_O& zy50HEJ<|O=4kTOmI~6-}baQBBnyYK{N7y`_+Y4~{x+OF}d#qy#@I;rvM}h^qK6jxj z)cMh#aFK2fi`EwFcGJhSROdb$Eh^K+Il|#}G<{zBJ4HKZEdj&Fc_sr%(RBGl>x?$Eu`J@)|MweAt+S*QDDBS^ij z-52PPH@eQW8{eSI$VP-l-A)B?O}eU;@Y1YHzKi5rbT7YvmsZ^lZ^V16OP&Vqoo)a< zA@6mq9C-Pp3!vY&O(*FB6MKF4Gr;ZEr&Ph`9{qhP$~fo~XzjFDKSu+&qkiumgmuy{ zrh{qD`eLes?bELt3C=~om^M0G^+D7VZu-R<9U%wFXJoU>m5NN-?LkzeB z`mO=U#Y=yXN@d>q33Tl5pne;*&qrU;44tn&G7>%y>A$d*r}RFwn()(CIw8*^`XV!Q z{(1?G`bYIi)!>fl`L7W6xPDg*xD)#EV)#6%e=G+eK>rVm%ueY?Q;qtxzS0xIGy1~G z2y|BOo(b-pzVqSzh(<`nfe9(&}HcZrvUd*Z*M?^NBWqr;5u6$zYrux{|Ehc@zX{42fx1d!MI z8T3J^(?6p+O1=I$P1@e*hovAwgMR9A#B0=tCPUYx&n*F_9T36E&`5JdXG0~O#M@_Z9E@~b4CUJ(bTtg&g18yB(k7(4 zp$9!09)?TwS@JYg2Sd2uFrp)TdK>1Agz%u@JbitA48io2`x>&AfIDQkdKBcap>QeS zeg?A!DIGCfX$H>U(DO7R95aj_4DPt$98JDX7$h{>oHWG5A(sHdV5(1?GMw83a>h_V z6N0k_IsKaF49$E1&KoAAfCL)$97PgA23-n#1{mI~6cP4IM5+7-n$)2rk_4 z_#aqC7+i#C^d-ZUr+{BJEU5vBG}O|8$|yq|0(A_j_jfC!&Vb^{L;|!;%w0hfc>r24n4Jz7gxnmfD z^QgkRh7#H>OEA2p<4=i(U>~G(&yaHmCaH#Us_@)5JU#$nnqdZQd!!pG4k5D)LkF4< zJ}_MOhGnKZtVzJ@3LL~Uq@Zo#3y~Ggj1yX7lnFms4*gFC;IHZGu)<;@4ewi z0W3cl)>D6eG&I`^yM}(Wi?Q1ncN~^`jN!M?A_rr`dYJ4ren&G8N8>j%N;w&~?ErB$ zX5}H5ea4lUNYKStNE>mk#`Uzkax>DuvmE5L;rZ_=VS+}LjtB19O!nE`UixOg}KmyK_zU=wMa zPRsZx@BCn2)wkGveQtz#CwEsD+mdV=>ji9vG*01ea-yr!PsCaR|+H9vbu4qt9}T$HyR0 zuCcHjB+pn+o8FN=Uj%9}?&=59Xk0xCx+dd_W^m2MI6AT0 zVl;LKX*Kqux8tp`^SAK%&NxtrB;Fg_e*pPl{QU)lZN}<3@M&+l@fyP2rkW}U_n4$K zSUH&5$sycp+SG<598DKGAVDY7X8JpDXVU}+xOO$|q`8Kh=^Skixtq$j0pMX;Xhtrc zruEaH+i#jg%l`u=8J)@SGJSdop||O07M2H1#%RRzF?~rpaK5Jf^bPkjJ*Ror5mVO^ znE0FipmOa|(~M3K9y4t}33A+|r!DLgCW9-;Nz;7V9}6(eDMS*dOq1vzD>`lJhAkZ7 z8B=c>C(fJx8UrrSw3#*uf=n~NN7xId^Ry9n(d4)fT(Iei1bK#-hSBC_sA&}K)rFak z41!6xsrLi)QiN&h7(}>aiam-pM48;_q)fEQiT3KQn7*b>iL0jRA7FXSQvhP1k5wA>Oosreb$YzI|bG*L1E6xCGO>A7GMb z+CeXDk|~T1CncLYP^mM;bT1OPd!}CpLYHb<{wKI}Q-eL?WtiS>M!W~6E%bfQG`aNy z$uj*xGu(%!UjKkRGP%&KGTZbM6@7C|v*}08HKk7gJkMl$0b#yr(LgCwJ!jzrcM>e>@6M}=-!#?&qMd#F+xanj5qrKIYhX=zPt-(-HQNxwIF29yXs1KvVq87k+`WBj&DD&+<3_xEt`J zX8*mgJZ5gW2kyAplZ!T-FqiEEchbz(0vBK&?FgTz%zXOvoHmOkFgauPrqb0}^Y8J1 zpEHNhzxQ(9oc;v3K=UQ~xCNQ_zC`;jm^b|bz(sTW8gRkpc2rvnF&kCz8EU@x4uCN8 z%{6cqZsyZl6=D9-j848}P8kB-W%H6gu#7a@j{_HF?lS@KXmh_Mu)Jbc)3WobxiSrT zUNdjwBSMVXUj~y{^C9}QUN=7o2mFS41o@0JSN#l=+veu2Fo`#h8v*zo^F#;0@0yQ~ zgJptw0gbJR=1u{yOfpYik3h-hHMh}*6!X06Aot8J$I-r2v(Xhk@0+*ggG)2#Cjp*r zPNKg?&M^0E1^2)_x*qUMbGaC}EOQ|}pAXF)>16mLb0C$fv(0^|jFw{#rSsRh<_QA< z&oh7c7fIxs=Tg=7vH4Fb20Sr`-$uFxW|tb~b!<>7fa+iST?H7iHUY%0Y&S=Q6X)Y)P^g9!U9 z&2;L@#gf+moU3K@0}wY$|I@D<>9E#o`F zS%T$T3jm3hzk@)MEZ$VoOSWubp-ZtWOh&`*S(ec6o@(hri}U-IITPR|&GP3`=+Z4) zVquwKxtM@>4=g_PyJuSD(Ewyw{-rwmLrW3WE*@Fj=+7>)EjeC@kYkzH0f1Z!Zw9zL z%bYXtnQy5X0P@(9RDxWdSl-+MS75on2quM==2UnovMA^e`HC&>6#c0sx(6bZSZb)e zQEF*$fUwMxPQClgl1v}{=a%FX(3M+ulSzeT5*;V2wCtprah0VV72m5ZdMby#uoyGJ z)mT*DAo@$oU8+6RT9#MB*(=Mu?_u)VQrQe)o#n`T1gf_L&4TWYaX#kc5l% zSR7otT7QZLakD<4k?FEolHG!J#!ZTKkN6@1xKtWHo(N+Dy8-vwGO`tFUPDU zdZc^Y%4>q|gtd(REdQj{!4vQRYs|lB-zjUT5I#>^zj21{jP=wX5T3QJq6hk%br?-K z&RZYsLxe!9ay`5RS;yvpyI}p64g_7a&ZW?dXU&@r?zVL*O%mg+VeLTfSWo6a zch|Zi2Dk+4DLTKKXsuod*GX1RKDcD-L?cX6tQ+aH!9DBGv;(z4|!l!J0hh_>u6fkXIb%24C9Tnnoc0IN7k>uhe@{8!3V+|tK=4N zxz?Y*10c_OS_fzO)~8T3EgvRELFbBt;5rxtFZnmi!cR$G_NKoT#kGTPdx zvEJ7qiI>)1^hDNL_t3iPm31{8&3J8HK&6&Ct4|Gt_0~r{5a^B7^FCZRST`gh!A5KE zEih@auKWPk&DO8W(DoKf|8ybk{yY1pqfZJm?jAq*ob^$w;4ob2u$0KnPq z(QxFl&+f20!n)YKaE4D;JA4rE#@T)83gT{eluosH*!j~bXHUE1G+6Do3!8-q2kcIb z1m|V<=1Z7(+li^}cF=C`9XRu`o8AQgU%NF`@Oj8CpAIJ-wv+aT&d=`tvj2;t>yGQX ze*O(BD^n|XpS|~9n3Y*+*;ku3EGye(YUL;^3qfV?CCHGy1O#M?OqntTWGPdSAxl6I z5Pr}5{dJFf-97K__5QryulL=(UT*;B&p6iy4*?AJFsz(ql=eXu$Y9f|5yUuh60%@M z*Q0P0!r;ijonxH#fMzIT;wT)2F%~w%LpY<1vV;hRiB57wGU~pDN)+P=bwi^WyiPcZ zVf=R#rehhuNI>Ekk4E9T#53M?fb2XY-XEF?jLnU(naJ1_1V>4Xt3_~of#L8DxMYUA z37RR4eYBC9%E+$(caaf$9gfl%NArP8XB2-1E`#AW3J;l#@egsWvlxk#fMhccP!fEJ zae>~fX!T5I$fSZgV>UFg+I3!$^&+yNoP4vp2y=pqKX~J6yVXh7YwDA23R1pt8W&Nd?s+KS~I_V4pvSu z%Xb4{!@P6~9&DLc{UAHZY&-_|Ddw|2@P3+kgWfB4%-fHEvuECN1I~f@-2!lq%%`X` zOV` zzsL-vv^S0UF}32;nd|cqUtzJ|>!%+?{0VrD8GDlB2XOE*|4 z^G|vj%a~)~uu{%k@)-szn16S`(N*S+T#!np|2Sk-%*cMos+nFkAT>kC#6K^82 zI_4KYB9?1Rg)2Z8H?a< zF>T&OxV_AOsbc73zVre#Z!_QC2-45=r1$0k(?^Qn2bqs~!NU+UkMip~%#cX{hM8XO z@IJ!aNgd=-X7I-t9Al2s9~d0Rtqaq4nKi#dHo<&P0%McRTAJ+?^I1<=xyL+8-Ggc7 z;gjHIn1$Am-DkdMfTLMv#T0OJ%p@5G=a~oSPZd94t~>yL3rq|BMW#jO8_posth){% zCs;A|uwuiirw@;8SyoRX>XWPke*{*q&VcLN;+z*?Mtf;;4?!>aDLerU5 zL-o50tC7|$S5~+d05{gF^xkx5oui-FgH?JJoF^-496yd1>o5AHy;)EH0q;JnU0&dP zS)MOJ(~mXuI~<*1%`{`spVjIBn*pqiMhu>1?WH5WfvlB(!dMV1yaa>6tQ|q{7s48# zZI*MaSE&^r%38k_vM|=H{{X%>t0miu3`XfaUZGWQDAYR817Igx^Bt3TxyWOstp{6ba1| z*56COm9h-9gHy&T$pE07wR{diRIuKl?=Y{jvZyyx$?Boaj4GBRz16B&Z*@af!}^96 zt6G*bos_9#1wMevHP++wR;y=S-w4wUtd}?-jjTiG;NdzeCJwOY`dA-Q2{pjVy9+YN+8v2YFvQwLxzrujMf!wbm?d2cwu<8Qx0~Q<@zFI6DD?9&5A#n$xTs!@$k3 z+WtVC_gT&VfXuQM=((L^o$>@=o)sAde-Bt&zlHY&R`vyuMb^bOVA_`bES)?$$?l~5aN!k9g~NCOoIb^>*69obDSu<69M z4+g-QJunDkF6@)E73RuTJrCl>&Uyv_clMF*A@gACX~V*kolFNAyx1S_hiPwiuLD$k z*r^rZeAy`vV9byG+akyrcEww8N95WMS-{e#pYviJxE&5$u=aFxyD>y&vH(ioHm=el**^23!n# zo;JT?*}va~qd0aMb#&v|F_fa7XD85mGl8w7vO1A{{r@+r*dNYAc7ffs8X+aK4==$q zQ`m9Wppwe&q!R@f*0I_Re5%m)Ki& zz-*}l}~ zZDU)}%jO2VX$n?uvR57h*UnCT0;W6IE@2>@>?f$r+r^Hho>e#7s~T2%*v0E$lkAG^FgC^J(N}2q*pE>2Z<@V=meCpZ z_5I-Pv-b<&XqIhVhydr<$EfK$&#s~8?*aRDf8Z9_k3SC6i)_^i;H)|0w8wse!>1qB zhVu$l47MDh3FIW_iB$lc;ym*duIFh^;F}FmRK zlFDjd&KlaA_v82;1nvySO$qP*oR6M_qX16-rx-lTdHy;E139$;2tJ78Nrh%GCu}u- zju6g@5OC)>ZlA+SC?`w}l`ziF)L97Uv|I%|g0pW2{6%v5eunobjvpOIist0d)s5lE zo&t&G?4ng8jx#{#;1f81P?Iu|V?$L|66fw=;4X01(S~6%XUjntOW}yAxsu9x`%&O7 za!URO%{0#FyCCVDDB8o!;Oz5c%Y2aVn&I?+&EQHnW#Isnau%*3 zmNL%3!;qD8q)!7-!TIPYxT~CVTj8&g(?d&F6=#t)>8d%Z&G1me8KFJXT24D1s;}cr zPyu(1lTJBGJx4)hbpz)Wy5x-|$SLjGb3#Xsj7}>oTFK=(!mkE2$fDw24!+xoPT0rvzv30dYnC+5h~|yan`e7 zte5jN{VIK&#wWnt=DctQTtDZ>Kfn!ej?f}E$k}iagF_q!mDP7R3!Q)ubGj%s8sW61 zW45E5lAoY5#<@Z7&2i2I?ONXDXlMs#g46Z_$RtPg6>w9WVQTN+<3!U(z|$OGS}JEa zhv`(reNL7KY|e6yo`$hG4!&K-6UXuE#^3{vQy^3pIG;QW*&^q0N@lIOLzysrg6p^v z#D;q(3B;EBLKAQ&xu2hdhg00e3BXTtk5g4($5qjWg*`Vt0&X3+w`t9C zLb?4iSPA2P9uAdo?pey0BDgmJE5p`KMN_Z}4$aopWM zBeHm|=U4E4o_m=Nf+cXr=!iukS4PiY5_c<=)fc!&-h{toZX(qdDcqP5M4ifApjzf4 zH>MAOH15Cyz|*-R zxLhum67oE*3oTapTx~sY1>C#z+ZJ*^r5cxx%d;f!ktk165!p+;9K?iR0qM zg(r^NT>w(f9j4A@1$UYW4_CR4l(u7%3#I_~O+ z5&Si-iaOTy+=r;FZs7J)*S(QDO(%1%bMt81zlqyU+knm7i&}VS;hv}lY324E0m~xOgWFaEN1fcNWte6cw}4XAZtj=kFx|s_jy9EUaf@64 z=;b=nZ2Pz#8=!KV>;DKQ-OoK{kHG3AEsRKE?1imn-kn2+K!#%b{&Pv6nBdmD)+c*I(sn9eV3l98E%drH1Bi6_JGWC z_t6&U9Cw^nhIy_?j{qNV&l)g?1#S(k42#^q>CCJ(uYmS*PVjs_g3N~Z#2e7G<$2Rz z2s+8zy8*IOysG~|PV+wY!=N4S(VYmwp7*mi0(9Ud`y&=d-a9Nfa^mfxEpunyL%s0s z!h40b2wi!{Y0_@IemY|B&Re++G7p}?8H1j@vSk2x@w_=0^ya#$Pz^r)+3O@T#`}7s>mp5G0D%ehGuoyr++W#PBX0Mi8;Q?r z9Pdf$Jje60rvX3D`-nPw2|NaUEs)3y2#018&!z!`7kG^IP)X*!RRe!1yr$JKoyr@d zr}!f89eS0g@rEc*PUrFIH_G6BM?HZ|-s-)GGmH1A0VJCjM&0vEyd9rnemT7Om!Wc* z_d5OjxjbP$NFMJ$>RILUToT~DfVYftltSL}Yj9M=J6Q?t3NJedn#DXNtpz2#PWtGh zl*gs*pfcWlYU!2pY&ZZ^@P^6|?p5BJ2zamLg*#&oRlHTra9hoLDi)-MC#M{`me)ZE zWIeCtaad{KCADZ?mUqJRecrAL zz-M`f)?#pucbWk*&-n))?475_-~&9apw2Eg88}d zk8Q;qT=}2vgFiR^QaXg{&X1y=st14Fe{kf<*HYQy#os_lzBm6GH5h#OvEkr+`NP3b z@#BX_gFC~&cp9_y=P##@d;q_L*7>viTM6I-`Ob7J2JyMq;V76Ny8|{u_&pmy&hht+ z!fh!3H`)scfGCrSD)N+2w ztKcg5bKe4Ym7hVib|rs++R;^f7fLIt`CFYKtKm;kJGz!Xl>--~MPYy79_a6~yw(ucg00*2;HU3Y9i~J8h8M;I}*j z*-gF`HRjv-E53!z4*rtWAf5cr+5qq3KTS_SH($CIfF6FE1K_v#g-+ml`S%2H)W`QP z#^7zfJKb*m{B~N|2l!#1!`~qP2>k_?A$}^or|2u2JIxjFdeul{!-dPyT^Za6;!7ACy1NjGbs_g&)-jl z$}E2+wPEJ?njYZh`6C}=@BzOd1}Y2um!AMx}x$9~lVVMzD{*NwXD% zo=0RS1$Vn4J0*ywJ^j-H?RKcx3EJs^hrOUE1Rfj&*Ei$xI0~d`aO5QTA04}K7Ra_k z#YGVJJpyzU#8=|7x(SBJpSytP2bqV!y91h@0(~3?y#yO6pZ6B*{}?v?1h3F5bTU-XydRoj zf)}oV3m5R|EfXOqc>qU|f|O~HD1ke{qXkpc(u)zqt%a3XfzlRJi4z?B7Pxr9CJAuo z1)GBbNDwe?LM2h)uno8*!MD_Fz98`X3{fWw_Iw5_DFUCjKvD%Sb->C+LC^un(gZIK zKr>ws`6{er2o6whEmP1$IcAn1kTQsD!Tk%+yd*Hv9C8G2ECKwoVCh*n$`!m%8E&57 zs}hiW!4ut3DGqTg5bzLLjUd7nnzaHWeF9P^7$^n&nqWCq zHuZvs{{?9ftbYy{ zLg*0HO@Z4fz}p24#ejDR7FI&mDF_uJh%Uj-7I^3utfwrfM=(Zz=;@ZAd;napK$`?( zeFD=XP`NE&Qmd?AP<{da1_bS);06T+U62h49?FL4JA%HOfDa3z=nUP6;PY)DqkP72#x z;pmjmj+&{bg(7O{*$HM`6t`kU0ro>3~0Hq51|?T!bI_0Ou-< zrB{}laA+G$y9+ZqVcJ8u&IxWkh2JGZ#Y-rooYq@-IuBNSgkyXFe1(%)Ab!HlLO41j zT(5(QztFn{{sM&U^e~?lI#K2yC@i4hgM_OogAW$=pM{4I;Y&+E&I$1!E%3w%|KI`; zCfq~4(Qx6)&jE-K7P>+fDg5~V_uPcJAH!I*@C@}eVuW*)5X1_1d=Ffl@SQmrix;lh zhr#p0t}&=22w(pjvP5CjambQ{_7j-&1>uLIu$e48=mC`!;YUwFB~=*tBe;vgx0vvd zChRPQ_jKW)4F)rWpVON%Q#kPfWLd(TMyq%nUchsNC&oZ73ojjjhg{(_ zJ=1wY@wZUP7mhDNRv?U}Z?6i4U-!URk#N;HgmguCo{rWO3s=w@St1-xgRE5e>;$+n z;Ys?Mx?H%Ky2};9Pzk(W7213P)0M*Ow;-z$W>N}XE!?^pgEhjVOW~+i_=XAr)(H=< zhUsg6`sg?&~aO~S|zA!`=aQAepwSYrb#H-vA|Q*~4L z+%QPHaLN}d9m3}== z-WI+{pN;kl^KW7f1Hz}0Kn8_;+BzK)TECCr?+DxJe8{k{gNn%!;YV~fW>gqs50x?D zUMkMVg+Wgu+`GaSs%0jG@Nhz84oB2BB6oU@Y(>_3 z7&|G-$%5>ZsICOK)1qCeuxTgCp+eeTR8QrHgUC|>&QTO~500EfpM45|v*;ep)>Z2F1<=>6v> zdWN3xGomNtFzqk0><0-DsY>AetZ0%0T%c&i9x6eigc8VtMc2AOLPXER!1OuMj&DFh zMO*&|%`j0Vb-uzy)qCJQLi8(j=psdHX>Tb?l(iRDqD2q?1Q|lBzm9H&?_SU@8Gsr6v~F_647zmQ!Ev^HNsz+=x7PzEEjF2 zWwb&RdIZLY8ZvE|7Xr z)B#v&5dBAQ?M6}LuP}XG^iBXf zKWyF<4N{TaE;=d)=@8j{3DPNA%z^1H(Rmf%-6BaRa6Rx2?v^N%wy=9euaah;sAL$% zZi_bL!&tv4tOR60G(m0bK~Z@%$dIUiJ2dZzR`U?VuxR!w!W|K1zYN)^$j1O~Ok_pB z*tjU_AHeV8Hv*XuP5cPJq-dI!`zeuk161ybj(-E$wCHv$Y|eF1*5my0~S<(Nf z*)b=wr;hx*=ou>K9*BCV+q)pjItSUJD4X&EYw;HrkQ3qq$Xp(?5hv0aNL%s8^!%L^ zJ5e!mN<3Z<*=g~9Y7E+mE9hd`i@hnsbr4%9 z@y;JG=q3(X0^%-y<}!?Vh}pBaSe{~@EjTan(Hh9S#chl5;3IaP2hLY~i&8N^@xB_U zoDsjf1^|C?`!moC5cd^Bc2@k`WdH)jg#vIP;y=EE$~iGJ0KZD8xNbcL!^G-4h%8*Z zNY^YvoJQ~dNOAO1$fCp_C4xkYf20;-jM&EjN3r6|9B^@BB`vY>VrMIG=fw~8!BK+v z?P{1#6lZ<}E=e5t|Ie8Cj}+jN#V=B~Fh!ht6CP51HvDwlZ79-_erSDqf%#aGUrux}k4~neA|NQ>=R% zn(gA)=b_Re9-^A7Q~c|fFx@5Yconj4vHCs8dc;Zef#NOkPd@?PEB^ip9QBDuC&1kn zKYtyX{o*fP1~(widKRV!#WC05eMl_21l%3*y8l3i#aRrfjEFx^gw0X$vs4(3iDM3e zjEf7F0&rJsqJ(uq+(22$r1*W>=A07m{1x0i@g~YArp5j1p)w;@(W$HZ;wQ@y%dGe{ z3kK)J*_3t7i$ARb_dqP8>TE&GF2+?lA@QfzwT;B?VZ>r9d5;R)laj5pMSn`d)hNgJIHagl7GC(cz8N7vI$(l3O} zUGk|Lyn9GOX~))6vb74=(@V0O4J+OfUJd|0lC6{Q;48WFB4*?#*+}0woRKJk;m=<( z_zp;bF! ziGL{kMM#t_7>txC>HQZa@unT=Xvwlfn2wRupMxw`@_{Ri#YraFFcvRaMF-u^OH!W! zmmqO?3nWp(+XRv%d5c;t7bJJS04`b5)C$cM$&N#?nJRHR1h*F@MYLF@Njh)CX1b(? z+MpSd<<#-al>GM#tYk^L=;zOtsA+fLl4Ml{Z01PZ@*%q{`7{(Zb0uz+o90P4gD{pa z`JH~-0ts&zjtV7x^8ge{^hWr*BFRVqS1gI8UD6UsYbUr;$)~hjlt~_^iIq$IX|bx1 zlvBEVRdV1Bc&L;(Gyza0xzhrh)sld(5mJrh5M|A^l55m2uak(5z{)krHEKxJOJ1QB zx;C7z9v%?H6K!&qHqusRi{v|stX1+h*=&>ipaW0EDyO8|GQpje zeyWFxoisTJD)!Rftq`t*)P)uuN9nF8a8A;nsD0xsb*2NVE>df%Q(dJ(DdKdKKKUoC zxJ$pJ#mYmPOQngY^g}vZ=p{8$bJJVuOtqnp^!G1e(^tCYWjOMahEdz+jI^~JgZ|Pl zXt4^AcG7$EtTd(-T%eReZKfdUYe!%uSn5x8RfzQSAb39~Rj@G_DqT*MMwpZn2k+t1 zH)t7+kiK{pnvv31VxSTw-Dw9$(NZ3+-D5G*Fe`YEm7-maCr)~>60&&dp)CmTyfmT^ zBthCg3@eFJ3AMwLr28KNcR?Dn07uEv3d+(`q`P{6OO>u#1rHacjns}#lkVOFK)Up} z93(@UMMYDlRCfa^S<>1qaGNcC=K!o+l0Kk}Ge>&-TNt}6wS5V0bEU4d!IdXv?S!#> z>E9axFOV*!l&Vl_8vN~Aja8mUyeG6u3T=?yv!S}s*n%d$fH@4GN|Rr)Fu zRw|`CH({_!n)^3Ys-;i9j96-R+^-bQZ?T!T}oY*7U?gKgS1LJsL#+Qz402z4e2M8#@v)XO0V5^=?j0u zbceM0QNTN;qi=(BN%ym0x?9?jfEo2j_dE^mmUQY70D7f2>6mMuG;N@4ZDc>bgh5-Gkjma@)U8wlT>|aAjzOrSl;QVBMbgb`; z>^6Pm>@V9uTSWmf>sfGTWg!D_6etVt1PPL@KLVST(qpg58h*BGnt4bR@O%yo;cYgmE7?%*J$9*%lK4pCdgua z;5Jc~m=2O86H!KeK^8LzT(ZpXSNKbj<@UgIsw{)5){C;Z4rr#y{?GxQF3T6fScdGg z?Z9Qq;wekdl1v@)|i0HlkMIQS-wm#09k?T zyKzKaD7$Y1QY1S-d&yU1&(rN)EbE{ju0(eAVc0B{B}qZbWJQ#CmdmbEH?2aph621Q z^PxX)R4IFfn*CL>ffo=`wJd2V05!7bmP1x6TTNwkoosP6++LH(et@iA_Um>yYLGoj zi&dkn@DmujE-R9k#*DGK5do#LFq`F>w?e4%yImh`LiI`X6HHlKqtdK(}nG22uCOwmk>$w`5LVW3X4&u?x69SqPnjzb&(- z_IJPRD3#R%GN&~F49b2h02z{f+XHe(cJw@O!?Gi^l#IwWgn=8CabjR)OqQ7oZd|sM z%IdqapXkfW3E3c>FPN06>2)?G8{Q1rJ=tCQ`eIr(c^i&qWMdmJcwZ)>hRv)joOWsE zWT8g^pO>wor0s$1(uYu4ko7kqh(+0=H&m?UA5oopLcS~<#%$!l$r!YiZ~6#9oRqIf z2Kqb z@7%`q^pGF>4yHZjlY9WY?9gFW(x8 z!2tP>l-iz^m)`~#DDR^rI7t58XMhLG-&la@5P2o_tj@{vs9+40Pp<_RCLjI~D&g`r z3p_-~_h=Ddq`dbErV=Ip@Ly;~%YXY1Bu4HmgOynMm;V9~Cr|ntD)I93wB>VNekBrI zg8aLG;5JcSPe<&NpSSsIp8X=X*C5@1k%kzGQ zl?wSHUDm7ex2b_J;3X7?_a<*$%E*)YO}oMEqG{=j}}1IDzBrB#x{91{TJUWzbF4*4*0bE2)#vTVt3~-5J&3iUkwQA5$e~KuMq#3!hppn&JAj{5oQwnDlw$mG zkkg6}s4}%vJhKimd&QNFh{ZuM(+kc~@fsB|P6}W8DA!prI0<7eiug^Kk*nf$N+8`7 zdnmtlSCm+TcqrbYvf5KIW)0I`ioF61dMmnV|IbI^ehS8X71|Xbeu_Xk@p(qEj20_@ zMd2CP3{VKEk#$zlxB^xJ6+7s!mjo$Zv<3-QJi8jkLKNAQ3!hW8PyrsQD5j2JnBoxS zA>oR3l%7W@{8JEaq{4d=T$DmZjjU(|gSLud6jA5E#VQ_`BcwRRqx3~;yyAE_xbupr zw-8c-qJ}>6NL2JZ0xL<1bbF{=P)x3X+hj#R2DlVO$w6?b3Ogon7Zuy*U^7kOMM-eF zqL8Y=48?|SaG46Lb5O}roJvA~*@{zN!saD~l8U<=MNTGus>=%7E|6Tso;u+26wjw% zM)`_c9|KpQ*sg??LdAd7{V7s>LVMR&6i9pU#3`1ogGz})Is}zc#X9;tt4y(f1FV!Q z&a}W$h2l&cWL1ibyD?a;_}?**8b#YC;A$0X2jI3&kwz!3uPNNBK@q@FtKp1$#L{x}jJ}3&c%Dz^4eeU9naG zS%>2LZy@Vb{6`(SE`<%{-rb5~+F|TbT&E4nTZ+$V@$Xd}I15>yqQMOAwqhGC{{4!W zGz2lA`0FBU4l3;bg|Q*UY#LPVDCU%idRP%lpRtT6B$Tm?DvB;aHm30N2Yg)d**n19 zRXj&I=7eG?^))7OUxS-cyhIy+_Y@u_h-_LRXa<>4^nM0^_Z537Kbut;d%(>p1fh`4 zE40gjd!Pspg=|3~HNfqIBAOXsm8UW5JOQ;JTs2qF_#bzXe%XJ*+w6!$0%)A01&HOLyK{o@1a2=X4;jFvDc{}i@OeIS>EJhI7%Gdvb$|a=_9pcDQmPW(oW#z-8P{~!kJ`Gu(a)ARbU->fii3*hZ zK!jANe1&e|BIVra!(_c ztIC+;uvw|R_Z@Im$|Bl3t5&*g16QMzE`iNj<=6l;>y$rHDRfQgMF({1l@6&GY*1RL z&)2B@PXpO?rP~#FXi`>|0^Y2QrB%2^`2zi^o>t}M1JGrhtg0-#fwO`Ee_%H8e&bSr%*Y3osz(o6rAau=OL>Q(yD%dJoO`B}hkE3aLK zO20CRYKsA-T`5!sm8D2gLD4o(d}|7_drG4O+_dsIb*W~QVH@D@zH(I^Jj^PisCz!A z47vg`uiQYd!3WAaBe1fd{OAvGi^^Xf0>D~zla98XQ2p{Ua5k#IGRSOIEyp1{sdAx< zbxQSv5rd~yW;+l&)%IBsd)1P+5SfE&jPf2w)l)J6oK#Cc1Lv&z;(g#;RC$yFxT-$? z1u_qnM<)QDs&Qwic&TnaiaB_zYU;rGsGi;mO<&bxP9T1&5Bm`38C5=ILH?>N+PVo) z&CdgVR;8aoxPhuOIpBg+PyPj2u<9vlT7;;!d;y#1R6o+sAFA@FEGSI%7!}LmD)XB# z9ijS33)7LR%F)%`K5wbUMtRh7|m8>jkqJ2c}}e^Rl0Ugc^BEH2PX?iqt?DZW?vlzkAF>>kmoMO#RX17?Qm*RrMUXtz`#M<3SN%JW z01H&PbY`ef74Z}1P^4m0@_a@0G<{oLtg2ZLu0*x!A^@eTcv`H=RDu+6<*J9MO;Mpb zO4sG8YM9E-O4U5AyH%>(pP^E%lKKH&qk8ja#8Ruel?Ly1DoYV$*HjPDBU-Ooeg!HG zsvoGQ)2J$04J+4G0rYi3lj;N=$ZJ;p`VwR_%*8fZi{PjAXmmH8gXm};B{ z+=S{HZP8Dv66txEQsuY9-#wM>GK4#=x>pS=GpfUsC*N1CWC1X%QoaS7bE+h2vCXUA zGC}2mib1Dc7gUu|h;vcpvl9So^{#AKIib#?FH&vP54S?aR-Lba?4&w`9+Fe)^HU(F z)k~v6?9`X3-n3UsXkl?sTh1UdN3|nWOHS$-I%eRkuBTGgMP0{*X;<|>Z^N{k`jQ=R z?rIMmR6Nwj>C+KU^{EyNdZ|y)sSj_p8y^$%QU9nyxW4KVG2njcFQ~I{MqN-3@BZpy zI`t8tuFL>;R{e)9Ob4ouZO3&9Qg6Ntx54VP^MHq_UGKxgIdyp?0HNvwyPy)L_Ff8E zxcX`y1|!tpGQmZvyXjepQv1;Y5v^WN`>8SN)$~xts^9qtBu*XO2zb2uA$k#=SD$_j zAtk7T=~P6bI^a7*ouqb?!q^4%XOF^dvbv7;LQ>S~984@#?RgvUi|Pux>(bP!YXGFH z4|oEep}rLZK&Cpl0^YOKhp3p$R(sM^E~#%m3Y8r7AFaS$Rx>`uV6OTqWsZ4jhZP|C zYBAlW1?p(p94b`%Cjefg4t@->E9xZLVJucZMh7uV)P=N`m#V*-23MwLT!QIxb*>S( z3N`*#1)ex{MgRbn>UzpXtJJUNV(!)IHz<{^QJ2tZv|4o--HLVUh~?0{re05nTUyn# zt3cY+E5|X-8)_zP6?LeuQXjfg{fs{*)}_Ax3T)m|Pg5VPSKUn~tNPTsrvSLE-XlT~ z{c7zKkPWCS=zbYghfo`INd3h;xyyi0FT#r zmtubBH50+$5;Wel`JAZPN@r0oXzVFNR-J z&^*xvl}yd|;~-g@J`QG-t$BkB*(J@*McB;Iq*B(Et9gXlFnO9wR3+zY3i=UCf#wrR z%nCJchXZ#-6Y>*CvF3@j7%b6vdw?s|eDMzam1!)g2%=oGEDfYWbBr29m73p=fUDBv z)3Ls4&6^*?bdBbNPcT@k`RWUhI*l*wuUymk9fz!5vn>QcG-wLxW1l8XY5*KHYyK5t z(k&WCdJtMQ_4KN1)3{J`?1rYA@{kVA{vYvkbZTb5f=ZXBcPj>OX);^@@72W8alk%J z{}!kWXkJc(qe0E9M#zRVFH)0hMB~_psf=n|X)A0@GeoVc2~8LE%O^Fr%fL-(4o?6# zqq!tRfcG^!X`5wMv!Ax%A85{20=J;q(+m%bnn$(ZthEl*W;&sbs)nYGmSu~mPieo~ zjlt8}V|T&XY4=cP&tCf_Z9F(=cRzs4QTz7Gh{Z+Ap)B21n?-wrZrUX;!-~81;{aSU z4{hHtI8W`NEO0*Buu#B#wR=-Q{Iom1ft3KQY#gS~YA>t>3Dh8T3W`W%Exg!cOnFr!FqIvqrb(wZY-ELz(e3lgg>orsu?E__LbDjm4qmAo_%4My!8E$j6hiPjnPrHHkLh`i^Ij~Zo4Wx6bMcV%^ zLUu*_95w2SwHi8hQ=+XJfxl91DJ{5V+KDwVeN`(Cgw0AV<5O@|+D-J@t<@Uo&_SKn zYy`QcEw;g6qc(X8xa-QM;D438X_C zU$)f}KcUM#2bqm-i!I=`x~8pgbW*1{3P-1Oa@wmqt+S{8 znVs$}4F>IXE2$83&^()~0?xMSL0p4A8FFlDtH{H*a-nr}I zZ-DdAIjsfGQ|Gn^gI>BIY8ra$=6ykYbdPU_hcmi2^AVE2Ztv#^FhJ*22Xa=ohK}?H z>e8vZ6{Oqv2vpALR?;gnR2NO>C&F~Do8UHF_ihfj2;IS6;39Qms%4^dhs=mNTIX5> zl^EThBk&ii`@R+=PUpV`Bwlx01eNnT-$y_abYD8a$_1SZHC~c+0rWeh=vKW4c$&_S ziq~}A4*LHH8M+1$CYGtY>;p$xx~DwBW$QGVu#%?}&4J6;{n`euKo{@=tQ6|j($0C2 z&i^aS_KFU<5bjppVfw*KbTyRamFm3d-BG6dmx`Ej-7hCGSfTT!jjF4Po3y zTcz7Tn;F%*vJqIR(Os9oL#=Kjy#wlW57VChHC?k9gY`NdRqPGA(F({KbpccdT-W_W z4Vxxi{MR7OIZ^`O@*$b{y z_alAw)TLVz0T10eC-T>$V>)8)w{$Oj0xP|`_o*E3)BQsqao^VU4Ir|9-5Khs4(LMZ z`5V-||1ngCbek>#a7TB{51PZeCAF|QrYlOv;J9vc2DrPr5l3(nx~aEtAt!ZP?jgV_ z-JV3q?&%I@!pgKRZU~Xh=$_jLa$o21Ismh}Kd8Ylr!!LSJ+Iq$AGim)!*nEIK_`6{ z#ujxW63DFeZBrOLp`SEk&_@3Qwb5+#8|a;SQeS)rm*zZnTJgU6pXko=)4xtj*BSjdt&0BobrJvq^v~V|cUF&ol7y#2KlB}p1?fxZ zVGh>+d=ef)^lb(3eolXcUIn50A7UU2)7MbF60Tn^gGz+{k4M2p>R)gMiPC#6hrek3 zHEOuU=?mV)V7z{xJ1*9Fz5i(d67xTijpl6L^V#)fCDK$#br_(8~ zRQ*f0F?dmLq+~r!-$&)f3nf~LW2;!=K<|wXN zrT*1Jn0uAJo@QIEFOG(0jXu}~xLW;d$6%~p|HcuxZP4%chDxLUecFGxu8+71S(BdO z3!BY)@qP@p=$~$eN~?Y&oi1wA4~Jr~U2kWBu@3#G&A4Wr`WMtt>C&&R0O{7h!GV_uKk^=~M82edlVJ9?(blf*aItq(qt~>FZ5!yP)?i z2U*l#eHK=%4XKntoG{c`!JmymDhFq4*fI;#rwtt+!nB>?Fd4Hq1W?b)!La2ZaE^wi zTo5NiFav|Gh7fvNxEY?f3(no({5{W4~-VM!KnsfJy95&T8NN15Q#4DbI9E9r(sYUO4a)>K25X$YiU?kt0z?)hxP;|D-4 z8NRp=D>;UHG~3IDJ@lT=H7up$0(pidbk-r?5F7^00)z1$VktBXErDi{VZ$*DUNJP< zW3brZ|1|(5hC&w%mKwIxw|ZrUO#0xn+;D{!;|jy+v+#b^pjZxBrQw?=Fj!@%r5(6x zLoo+jjUjp^WVMEs3y8YT@B($Wt{H3-p;B*HwHIz14Au0}K%>EfI`Y>IrV}7dhE0?m zHXGj8z+a1D-EPFvYS>IQWt*Xl9NjRyrUSWY2=IXEc7wzg#ySl0)zIuTJfKcnm!XX6 z+it@oC2c*1*jwOk8B)CAz1PsA2I(^#+=dHs+b~5LZoffBH{XEaKr#S>hUddzbI36M zF>Ky3+Fyo8#h=%=3rE`WaRarn!;KeDK{LWwPaA)cM&mOu7G>-Shf1_D zh|W^Q7^{+ii#48-Ko)287r;@xahEk@=Z(xJXeJo9y1`MRv8V<%lZ+?Nf?P0uOM5TL z#uVB@OEFGUhLmbtMd|rPqcd%RrWr>!futKbl$B%{|I|Yz(-=VlUVe|3V*GNYUem2zYEQUEH9Pf}m_sxc%0#wv|JQ!QF$+(Cx}tBu_~kkuG}nunEI zWBYo@>Wo=?pn1*63W0}uqrMn68;m~RBI-utEM<<@jhkPCN|SNA5VB^YZ3zZjjIHBP zX*Kre0oP{iIRSFRm_`Rm+KoGCgR;ZeONT-`jW1Jv)@8g&-Pdm8n=Hs~8ON!f?lnfN z0@r7Jn+N!9V=CeLjm=|lG-$j)j)shVPl3B*v>k=YuyH$`kr*)=TrlY|4kE_ z^k^!`Dbw!Dz@0WZP^A4s1lr}kFcFHF0b&aD9F zYI2JOz|B-lRja$HlulZBn8qpV@-#j15>&iQ$B%>aHjQOK=41Mx8*pD!P8;0%nPPk4 z_KayqKj8kRr|B&dYC3!u{=!Tj_X8eolI{W*Vfx<+03uDldGOXPOPuN0OPF-LX@n1Q-t+;rA`(pTyP%S28rcGsB$JMgHC!-dQZ=7!8l#3= zifN4YXj4s%)UCK^TKy_WnrTB9Wa*|uRO)4zmS4tHGEG+ZU?t1+l@fq#)AQ6+yJY%y zB}k5mu@ktJC6T)VT zN$@)~TTP$-1+LAc`2iEVVOsY-25*`~Z(=I#CP&(6>@W?`iqdI%=O(x=)3a3mcblZN zm)v7oMbGptlPCSey{4j4IO;QfOZ|!4rb0T-(r+?1!{&ggW*FWFO~M?=hD@vG5bhn* zssV7rCii`ijhLFA1$@->*k2%HrnU7@88`Kb0l#aqw+1(18li$}(v-Xz+?45S%3to8 z{v^}WrY*D}&6t8WfZR8^QBgQ+8hL;q=1kW87@Rll$j9IV)9-)7!-AulbAjV9d{4LQB^fbKs|#gTLA53SKDESIE$GruW2&e!MX+BN~WR&@pCd3(S{+?>e81t4z zz+=r9sQQdE2U71M-h90i+<9}y<4{R3A9x2UiRR`1flD%%GXTF}-uOP^Og6tk$AePL zuT{c(s@b_8+(om1j%B8qOIx9mZr(zjy$tgmN(eH|y1NK4%UnpMUbgw6Ef~CH-ux`M z9CH_)l(}s7y@|Q!nr&!p%`<;~0$jd1>I7s3=Ku5{h2|4GAS*I=(HBQo%%<1jq1fz` z0dXyHs9ZDqP`XubHd2+VSPa>9^Tq}Q*kpd=KLpWi-c5h* ztHtbf3lnQKchTFh&0I}o^$l||9bUa@=C6e5cJp_y<05yM^-RD!&9C=iu*=-IAMkFo ziwd|N^U2$g-7-JD4*q)0f4z*z`ptHY;0DZ}(2HTvoT-47A#?2{Oy4m((Sey^a}6~+ zM$8+YgKX6ND>ahG%uVz&j+^<^S-)%k%N6hm^IEz*ljg=rn4U5_zXPlgl;1!WXjybbEI}467y)f(2@6Oi;BMe zh_U2xp%QEPmM-LZOAj3$NU$7kgJz;-pBn~~EZ-c!j4oJCcEUrl<@9*~QY=B#e@V4) zXj}ZEWpfp{G)sIK9Hm>Hpw@qerJBy(Wm+s$6=Yc|Y1bs%l1oqAB}-ZjWI2|1<^jKK zdHgxRb1g3ofXlP&H3N`u`IO#<1(t&k5N@I6{dT~MEEn!#@QP&>8y<=+Yba$bv0UAS z081^qHUU>=*_#ehZh7@5%%Q>}<-+t;%RahFl@`HGa8;I@F(B2JSN9{98q2A#V5Qa) zMWtn(u36kSz)`&=mZs8R39x}?qvZpt_^w-mD1T|PETf9O*|Nn3-dijwJ3v}3 z3(o-1W^sQSnl~(VZ^QIW%V%_Yzulq?L}VQnD@s*5Ewvg9c3D!>0qC~uq@}sX5@rSN zmgSu>c<8mXQun;ik`o9=w=GXlhTCshPk*ssz)}?gz@TL(wMB+3N4CMy9g89rn!^@r z22{o@)0DxFTUK5K?yjZ1ADR=EJu1j1E$XWnoU-`S=IlMo*R)ADZCOhR!HnhMr$O#p zzWW|z)^hkd$ecw+5Bj`iY6#o|Oa3Pae!&tzRl%a=MR!=SwtBq)+zBi3VK}m}il!9K z)+(Kf^OIJ$=u`JoR^54s^R(3k>bTfhtq{Vkz11Y0JaVvNEdjvM>cem0$jNFo?e{xd z{Z8|9vHD2~6<4c;ZSd}9W%mJO?pBd@;5@8;nSg0et7Us}>Ab9Vrb6azb(hvbAFHZMf(BEV|d4;Vaa^((zz0Z4) z^r`JdtKlYaX;%LBu##?7`UX@otiH(wF4OAI-5^<3w?08E*;cZ604`YxC`-?=8u|s? zWvl+x;Bu|b{s=31Rx>oQe5)BcAXi|uvmd0;%ATsTA}hHFR<2mBqg1-s>Z3StCI83K zb;osGKmV4csqJs(YH3-HtZebwd+%A9S!P*jR;F2*h9EK&6p*_ zaCDsU`~tuo8E5{0%!#qk|xT9o(K|%-KN2mGLn(0k|>Njzi@X zV~YaZX~w>{!M{6KseJ0l=F$5_w^ zD}Ib^X@L7PuF%sT!0|p3`QO84Fr)Jv0OuJMccBu(aHFL%lyQp|<1ogD zp8_7v*js|Z2*&+<%qWua(`s0`z=&Cd!6*jz4lYPEqx(I~D2CBbm6}+_)c>F0Fupth z_(eu4)om^@Sagh(z{pz;a)q&m68A&~cLi`sjDsJ*bTVUnFSx6WdsiV#VXP5l5#AS&Yy>!DTZx`M^pJV~+!7l*>qc2eLfIU^L+Q zj0?}hZ2{w1S``Z!zL!9X82f_}{0+w7X4oudtjUFD31cl= zU5p&6`gJpYx&kuHaL7YsBaBbzug{D!0!igQ<2=6nTQJ7RaD<0(#%I(k{ebZnwbf2A zYN^NNA%pceaFdKj$^e*RNWTI%&Dc&m#~H>CbdWmB7^35gImWv0aOLM2N6$jVmN`V* z!lTSvml3WVQ%5CdduG59aL1TS^f2bY9H@tf<4jw6Z#pssw4OOJzheOB%rwLy2p8sK zRAM{9^!O5UILU1EgNIYh@xQ>GX1dX#t~)b78RQHz=?a4IV1DQcV`rI>P0;jYrs!bI zi}^=1tavk*Y=v7NriC(0U*{&vdSW&CAR~J7Fb(`ST~3 zQ4&*1)!t;L%WBB3GT+_}Sqiha34^IjH8sGeF~8Ua*)?X?4=|n1{4)t$29uo$%}nNZ zOX1-<)A2=cS-76SWiwUuPd0Lx&GaV8Ws1K9AdmTz3~}Z&IT~;U%pTg96*9jV09VAE zrdr+&=9Z@sQZe(z3CK#AySu=ZGLz$hD`PH?#NbV)oGw8*bDWm73g#2kTT#h;ycLeB zm>%?nQ#JF8ZWya!27iUYT4wcbsN7<{&%-sVV;-#qSI<0q8t?|@uGax*WbRx94^2!q z9eXr0{prO0Hq){UR$7=VZox_`^FRtn8}m*ZLTYEaQFm=8lTQcXcbTj(80%u*`UdcB zW-VTer7l2G6T#SD%TD&4=n(0i1|q|?umQMN41a*Gq-F5 ze1z%J2S=k!E;ZKOXKoM!Fvhff3S^v__#1E!na8QsY?67}11eL@#q?86Gwo=}n_*5; z_u?$m^fkCSruZ)a=9!rl2*Q?il@2qGvJNi?&W@E%E0{e?ECPRCZBtmSkl;l*mIK-Au>H6O!+59@78jC@&- zTmw1B+V>$e{a6Rh;QU#Od~qcLSbuY1GmzDP4^$q_Cd3lL>fQ)k zC~K=5WMQnme?u0|dgT~AM6hbJfs0}_QYIYDYNg}D7}lG&;Nc>RO9v~LSkv?&Nj$59 zcK(-HPtGFv1lI0KgnNZ$wFQ^V`h$|?tE}`9I7(r8=Ypi-Km|6_SRIQI#5GnLtxK7# z(>LM$I;*e}vMiR*uaIT49KMH@9G0G*xLnqARHi6k{Vjl%LRL53!bPleR5dDLWw*j@ zDeIO8jFqw8u7RwARka#}m8@aHRk7AR3M1B*r5j|W zoPzfu)(kc4-D3?+f*WR~uLT)p1^)l`hm}dVF_zPMxE*I*z6R3|SnagvJY*$MXVoMt zgBJKHRxKqz)2u@JPHKjAfKET=Sf}Y5qj{FoU$AM*K1j*rQT8viC$eLY#32@Yw)GhR zj?f)0>dD?^0r6&^ei;ijh1WZSAF z?C&jbbd7zNHi_x%Q*_s5u&uAc=5_YrYRIzKMbz1m&32~agdBDyz291yQk>Hxuuw$tvP|JRn8m#Kr9a^Z=vpe=+ehqBFL2!-iRg|GL zvCmpzx`mzJ0DrCQJ(Lc#v87oc?d(uBRPL}Niy-S@e^CLOoos6mNEf?{57XW3==Wi> zhrQ(;Sm|XyL5IP8?Eg_-)z98Y>)8PNKPEJX*w6cd++(l!5m67bH|&Gy5w?p1OpmgE zqMPA9JLh$fF}6Vo5990?*?>P_ixu!N!Tx?4+(Y)`zX34CE}@srG~4bH$P7D#s*|(q ziF|0zv3q{R;5>T`b=28%ZrMR*$7#C*oIPg+Jx9kloZT37;P})*^El^sN;sT3tLT{1 zg)^3gAWm?ejRSX*Gf2s+E9a#*pyI~)?+9e4IGf)_ET=i8B5>}UU)o{CgY)NcM17WX z_$_F9a#(8t_u`zTmCu{=ES;9cu}?$P z!JH>KxJu_a9qrHz;Z)MH9m@HWwm9LOcRDZ_!3lW^gOQviZE$;m)07Mn#rcU|(9s;} zqmadLmiNGP9B09suz8X5Vi{zYIN6k4$8(l!hwL(EstPs}IDf^$dlF~M=a_9WCy6>? zuX2j0oopa=6Xl8KKlyGEner$m3I%g$y`et#) z{oyE^vyIMgb2xuc{+G+KE`y^y&Kla@<#WDG0-%7yIRp=doUiCbTf_;xh;VOkhP)sv z<$UgsAj&ukDMPu*dFe}Nmg8pxyn=JF1A~>E`R!1t;;;$4PRSz}yv?yv)GeG+stdPrZvO$Ujl<3W z*UqWC04sMmuZ?03ot$t=|L<~+dXdLEPVBp>m$P^8tbg z;XZg2QHOFPbDn29H(cHK?$YQuB z>E^r0JxXu2OWb>}Kr^1}M;#$4-24sTQn}Bbh1)dl%6O<;TbvixZkw_UdT7)ex55*$V(xn$Fjm4HrR!PB4S5b+8TU3H@S9wZ9}r+UcaBcSE4WUH09109 zxIm?f`)UzXs<{`~2(X5m@&jzva(j0`c8mK~0!ST~JB^U)x%XZM*T6lo4A-oY`}rXdPFZXdeHtyr@XJD|OE2O>f0QcSp&>ZA$$6?lj zA?~tH4Bq1|p8+?_{dXz25$>;B;bD~9Lq{<8xgTu;8RI^r@72b+W3S>$Jm9*Ku?g;9 z=D9 z%3J$40Cv1LihjgJ9vg7@Q-&^*aA zQ%9sLFOr@{H{NUyWT$v>256q>8Vt9mY28?QG4><975Dy zyk}@@WroW4sQMz>6$F z)K_?Ro1l`&`-DoJNxTbdAWP;g*C5WTyy_*elEUk8gxge}J?&r8d0pWk8N5AI6wTx< zIRGoyc}&`0XYuOk#?0nDN^{8Jja5M0Pmnk76v^+%TS7Vd}5GT!eI2H1I56fHd-c@qv{lUh^Tq zn|b@G74kN(I1GRm-hn4!rIp8{INNx&Q3#@)r!7SgcX;|znC{>;QAnLUk5Fjd<=tU` z>*DREjZ!!7_s#Io!&^ls?!CNM>CN27Q^bSx^FF3+#Sm}(D=>YJ_r$vZ4D0q z^4HU?@5I+oqm(m$=N$y-!vC2%+)iM>338He7X?SI{OTj%-1y%(BHUB_CDb>1ns2`Z z#@zX7v?`wAf43gSJovA~f;-E9qZd>0iQ#)uju6Ygav3C!U+@r` z7x~YtF^5ZhcS;B1`O<#?xXc&P(v`s9Psiz3__quIB=X0%!e0_!Ylp~^`J2B*5Lfw! zsHT&`Z~Y3!Qu%uN{nGfSA^^X}&zS)(o&Vjlz-91P{)E9yej*o+uJgks7|i0ocN$za zf7LjQ(< z8@M|D?n_Xq=dY%N@CN=8T4@{k;dPi;6Mu>YW6k_mcfsv#e&Yq$Y~ep12wW>aF#}v1 zf5R@AZs#w&jHvJM52XUo!FP#(%}#y-71i$Yv%UhLi@)Y5YLKtJJpUFv_y~Sn1WjK-Cbf2-6WF)_;3tUU zf%pqTEg%7c_YNVzKtT$9)et0ji3=`RF!d;6IWGvZ2MG}jcO#ZiLG2eHVS;#ilY|Q% zBmxj2SViZ|k%F(Nh<8D7;SN-y1cOguFj}yz8^&S;XWTFtE6AtTg*d@%ItDKa?5JLF zNszM~xOhRSJph*lrJjg7LGaB0JX{gzR{@YH82uFRBteNERFVZLpWyOb6|7&3!4yH) z6VOZ*MAFtFP2fpIglmGa^C0O0uU7!b5FGV{zf3_F^_X23Y}^OUEWv0KNVZ_g8ze`N z^aUK{3cgwdK%O9zzA4NX4E=}53IywEkt-C`x?-?Mpr-o74T0-v1Yayj(!*wnAbA~B zN(IyOZBm&a{SAY@QbGqDD7&;rWv=c19RW$LStI zi#?2;6>g~$eNMI#M7(_>>!NLLRRXHzQ6b(R#FyVWc4iz?$EKFFu46<;cBV|$%!nb!I zq)4INTNu0`+`9y(qlD{5Ad43M69in0(1%J2vBKnOkT_u#og-WnF7HN2mxQJC4OP6* zlUi;s3y0{vk|6x$G-A0T+-eJ(iNcN4v701Jbp;?$h3sz-*>$1oR~XC^DynfovW0I^Jvm3%TL5^j@bP@W^MpI8;GHj= z*$6;^FoUL9D4gtol_H^%e()PYE|rT)g)1o&E)&YCp>k8mp^sL}h40owvqHE`iHTJT zS5u9wO8BJ;j;e)kih!#TT4?F26`o1K;4NVotu}SSnE~MHh0oCTph4I+1kFZac__Fh z;ZGxwwFo^r;jdM=f_Btx!tj6Kprntsi)N{N-(B=m6^xw`y-B~HhbVB@fpM}Z=k%6iJQKFrXBeH1GXH>I_5$&BrfU%-(3vh8F%ThSHC^|@w z(qc>v-?tIHs}Ec%$AXi1a@1dC@dh^{x86JYj7HyEFH(su zPbAq3E?+dX8*U3k-~9_*p=k7T0E$HJws3Sqbn9v0ibZ?qJf}o7a~8N#(I@KxC=>15 z3UX8QO(YzZi{7F1ze2Q|4)-cWA5vMeO5{U%T(#&B?Xzk`E3*Ko70GF{cS|Js6*lWc zaW^5W7gbXotU=Tk36(~XoZ4BML{HGJq*=5<3UXWYmKP#x5mlanN~`FZQNY_oF7$C& zyJ(&&E_X!D)G68_%H9mFQ#AW7$X!t$?aRAFQd_{gMa7%oy+>rGcWST5!4vR45r=vi z`$Z8^n8Sd`NOhY*(Fa+O4T&r#;qRWPp$b=GSTsZl)rcrB7%HQpRTkjxi^8a^H72_A zCRD~nPyGzp1JPPXa1)|q3Xq2)B_%kMqAwf(m=Z0s1vf2PPcPaTQT{QwofUb^12-oM zu?IIVYNBHnTQTz~kfUPHx1nh#4ycABd-2zFQg}@K#sbX9L4123JRBE)a0)m_@qr1L zb`q!2DX_EncPe$dh_mT{>xB4II)OVWj`$Uvt2l?!7B}(XmC!sT9(e{HPK(!3HO*bT z=N-t-h&|}Q*F$`r9t$sV31!#b;?HI9=OeD1go>~DB<=amiQlEYqM!K9OvwDjLvxS? zh%ZyB9w<(E47ecirhLeP#ntp|o)Fv&C%sGbuUZ0xGHJikImTQl9wF&!LhpzWfZV z6o|{V!b73>Fl~E_#8b2rzafsGG@@91VH$uE@wfhfmx^z_1zDN+$cx}^iYEn7DHkvO z1YCusm_@yXMWHHrVEa%Qu51(n}!i$DDZxEArF8zE~IKSjw;n|SYQP-z#h{Qr8ncnwXn zL%d@%taOUwK7qAQOVtY zsMtwtauAulB=s0nj!8b}LgpapB4fuTr|GeGl(~{L!Va#1}f_~I9lEOh~dPpYTfcLYKmQaM` zDG^iE$V>9fA0XZm#w`GRBt5YJ_)1!-wtY^r^>a+cPx2qt3;ZRe?eHET8Kzxxpk#6! zfFMcWComl>NxlP{=Or6!p%NmwPI*qKCAHabds!kp29*R!$hR20BIz&zo+$Z@np=`2j|F2! z$&w$o0De_c^eae;q&X9ssgjp=KqXD`>>5ONO`a%Q(QbN-9@juuXE~7Cf{|WYrkFBMD;y&>_i4gJ!4X@F$q3?$i^jgJ>VWl2C2njLNf1$ARbCCQx#`YGDVFxQ<5r5p{6DK=yf(DvC@ugR$`=M z)j7#}s!PpF>Zxd9E8Um@&7)G40i2!GKOQRf(%FyT;h1#e&)^)SS6y*=j!PS9%jhU| zp{&43nn1U(vvl}H7;}*xp_<$Y>C+2=J1HHGh0IlY<|>GrbZs+2Iwc)!gNM^nWffH1 zrK_VMJ0qQRhRj21q59xi=^%ArdP+BUVbDu@tO&$g+U^fcAL)*V!1+pV?1tt!Y5Nsu z`bkewwaH)VwFBM*q;~H>7AW1$Ytl-91o;00+Sbr(fRU!YtxTDq08))=YD0ajwAFVNv-oV4&bLb@n*qtmNP(p;K! zyz~vK30wvNAVHdT41-ssSE#;}DCPZ!!6d1;81Q7N$OW=A=>`GFHR&Qcp-Pwjdj={Q z($7t>k|}-I0oiq_9~ITIq`y)1E?b&<6d~nE_vAt)SIVKZGfz6X87lcwDQ%?-q{9ng zrBM1=1yqWp>mI=04QV``7Z*!Y=>1nBWiNrORLYk^RwjKj9`Kt|<(rU|OMj+CwL)4+ zMT<)5FD$53No|f{n$^;XV=!GK^`}#>T4~HV1b9oT+yYsh^q=p5tCv3cJ_Z}4PmM#R zQMzdtxF)GM3AkqIQfgAUEp5CDM=jD&dOBLA+ZJOEZPE$y&@T0+_2rH~DtdwxQ?O9}4}rE}#lHYrV~ zynjl1bP~8}X()wjFJpg)`5lwhb%Jw{-Jo-XsL&H8`}QG>h089{Iv63#rQbbL z7LkfrF37(A5AZ12YjnO6ElZw-zZls!FF++$ww`XOI9Uz#I$V@3T7qyd$qvxAH(sVV z1=(d;-y--+kUgb<$`#p{m53}+*6=2*B+0~ykR{8uUqujCW&Q^NPm%RzV=z?~PHAA8 zY;X?bnk@Gx7)zJg5Xq4JCWT6-tT-Orby>4LxGdRn8<1?-c{=LLlP#t{yp%6v9swzk zolS!2LYey=7%P&w?*;CLY?zkAV%c>eVkwb*%f(=+%=RMUER$7G%6(Jz9__@-Wh>~g zrb6~+90n_8UwS~LO4jWJQY~Xp*{(*GF$PDqGRY#${g&)kdgAJ2&#lB@y)1zCOAWHZ z3;-HsyJ(IO{TY3mqT4bLb#9*uJqoatdO?I0a653@KTL8Z!dwc^1 zJ7h8?=Flk%8AL4IGOZ0{J+hDzX!gotyFvP7|4@aeU$$@&j19>4y8|#NTUw35AsKTo z$UWKm7LZX{J-wOl%al~%8Iu(bBeHRsbrMz{$g-m0Z$fr*Ke&go!<5cV%1Z4pI3-&_ zZ5z|FCn?XFk-fVVWLCB+8dI5*c~k9vURL!GHf`l%Duf)B@4pQzc5)%Tvh3xlbT)BJ zzV;;yI>=9|VDq>?^%Gm$P>LWctU=50OX|n%TCB#<>`+g z2sinsFT>F(`8>7VoR(kD2j?MgpzQjrd_8TjJmu%4@aHApPA`3L`A0P%K62IrsQAjS zzXa}_+=CVmKe=Bb;QsPZDue{cbIthu0_8VGpcy3pjh@tC`TJCOIWJ$r10YQPx)>x} z{txXnBILeQijR~tUWMibIg8f1DEUweNVI%@1_8#%MP~tzm5;p$%{ckzyC=pASzetN*hWs~@Wy*i1Wb3-TiB5sD_Yi2>Pak;-=Le}hW!0_Xco)EYhklQuJ?zmR4zRaw`KC~^9bUm z{J=`!%H?mCL$gADuN9h=@_AR7u96Q^Uu?C!k3y=EE67-_-1aY+z9qNg170UTH2`Dv z^6+N>Xpr|j4wXiE`MVfwlCLNN*DP0&qucVaa?GJcE~c)QR{0Oqz0oE=>;Pl!@=2=C z-;sYt4Y3{a3OdH^lxtEkcvs#{k71WQkN$2`x4i#RIO>!8Z^fkhSKYyRDE^eeil3sIj;Z|>kI*I~K!L^;-0TXk58>~;Vtf~5A&L)Z zcM+=Sr^hf%@qilZ!WA)6a2FKwRE3LDsOh1MR(R417N^)s8^Mc;V0s=dDXw(^5U&_g zLv~rgq3uC}B7su9D~hf3a3v~A-$G;*1g@g*IW7AUrS30a}yQ#vjwQk)GyoHrDC*|-wLiuQV_lqhz80Dq;5omAZ_Q}8!I zc2hC00V!A9*#=UfNT=#ur9zenc$MM}H)vKXde%Tzqi|ROS)IZ_=alt|VQ0u16b1B+ zN~7Z7-%x2%ys;8dH!Dt1Rr04QQ9A7hIU~U8>E5E4B477NHE+z(b^R=RK%gP!2?ZL@6_=6)Rf#+Ix`2 zDCeod6RX^C4_ut`?%nCxv*}`GDnFpd{x59rRvxBhEl25e9bB&RP&8zDN(B`P@|7_c5k!HqhUyxH$_4>sMasqA2;zn^Jqx5* z`4k-vl_;O5AWD^9^!_VT?!E`WO=b8`uu`sk{ys>BQuYO6sZ?gu`AU`2dKIRtm0NOf z1#6Vg{{m90%+WyQmQwgD95pC+{0**A=}662P0BCYpwgQpvH0e4r~e-l=^l=`0m?^fD&z-^E6k3KgA?uJ#6C zKpB|_*`V@}FK|Q3O9$ZLp0Yk29)^`|I)po-+(i59QRQ-~>D*VY@q_GvvLz9k6Uv!) z;NhWi!Ai&`m06SxPAS`{^f;|dYK6@i;dZLP=P8Py^)I1iN@^}?N1?c9k==c%gUgLtX> z4#2IqY8mASKB^|_rtnqS3_^BJ_3=`0eyWds5sSa-ICVq@s6JT=V}Yu#Xm=Q-VpCsU zuxinLaOYLa-vSq+@+bufRmCen!c>3Kr@i4S-H(VYLiOaMFdeC?qIDu#rKgkZ7*+3c zfXAx-SO=9j)t=)3TvRbANxP)_jyl!iRWCQd*k#ohjvxuD#pAdHS5$S^flE}~rzb8+ zwTxQxlU2{ffLvAm_6FiiQSG2!qg0jb4BV!vgtP!&Q-!*Nq^kxJKr&Qb8=#V@ayyJm zkgZxuT_!my&(#>rRc)ZXRGx~T0eHU3`vw37s@f^US*Uu0iaYRRj3CXbQ0lh3ttwH% zW{ZmTB&@Wm5>Eoqrn>YUxOP?7b0BwAu3P{*R6chQb*JjnWl*`RV(takrHc6uvTl`e z3dVX=EAuhftNLgdT%T(7{{Zh-c|{`l0hRtd$e>D*4Kl0>pc9o5RVVFfM^)b^19xBb z>N~)VslKLD=W*2wRKtCs>ZhN0LZ$V_93H9;cVJ?Zs+WTh^^|J)9>g-OdW@dw8P%FM zpgF6${3N(J)oR+K%&Wql1hG~BLr=g_bqmeGPF>XpxV<`e3v3=!x6mfaK^^!b$Z<87 zu9>5H)in?&wNL}%tS%{mO&9f#^!uGq|4XL|C)LMwu<5E^Ni{1sb=W?TQ|jxtpmJLM z6aB>Q>SdJXo>8amfE5q*P1-D+RWGHjn5X(BTF<=HUy2~}R*%tXl8@Sc1jJW8M_n}j zYVoJg3{cx$0vD*x!};NYAoYR&!Dg^}$6^F=UhO1@N{G7J0k}{#m(I$=)O}k32v>hH z4M2ptG8u!BYU^tNTu>jUS8J4-?F3o0x_An*81)=of>?F06)JIRHC>*I>ZSBo@GhzU zqzzBJIxQa_F017};1bj}c?kZB`eqzrNmRSh*>#forWD4K)uvvUzN-F>Hu)*)+)@}z zRj;M8R+{=lI&8b9_Ms|Vx_Yb*vJCa!H((`GoxTr)*VW%^;V4Tz`5cU8t2sU3a@6@- zppvUzKn+iM>OGWG=BtC=gogt4ue-n%s(+^XS&`cQc{sYEHhqp66|479(Xd3F`P4wxp*|7=K&N_lG5~kgR!Tp*)UUjXiFK=ss{!ay|D6wiz3RuFfR#SAuO6~~ zwdyvk45+`L7yF>Pt`uZQJyQVLJ@uwU7#mj49sqnq{SUpFN7c*e-o3Ampx%Qq^#_L# z?zmd!2!9XMC;tF^LS6AaY(7*!+zZ^K`UG99DRm{iq-NDuX>d;cTr~jm>d245*=jzb zz4uYgm2+@wr+J&o%J!PW)Y*7UbC+^^2MwEkqvM)rx(ggNA6Wr#(y&JWch)>goewS= z3!NLD&@8L~{G?_F4=S#jV|xL2)4W41YNs?AlqsIpWKen0UDGxT_!&*kM!-EZb-4)s ztma-LJa}sMQiat^6RgE0@YZ}`51fytc^;gvrf)ZJ=QNrq;QTb44gmZ$)xA&&(Acek z=|GJ`Is64_HoXWEtnmv#5a%@wRQ(CjJWAgxglg7KKo+JsM+FQc*0Xd?0PUeO zG&v)PGgH&C87kK`8Ppn;rBT!)z--OGg8<}c{`Vj?#C7L=a-j-^N^leg^CdVDJo0=AyO1Y+lZmVn`_}To>h-E^PN)^b5n$L59 zo78M5fXyk*tHU7Enj6PKW;ENw5!tM!i1xd4n(Cb}Hm}M1{}X=gvR>ehYH!lk-A+3} zS%JOQNK4l-Z5jQ&1P5($BUFxShp7?8QTxnmu;Qc*rS;lbTk;Gz7cGA&WGA#$F~FVF z?x1>)tG0I(0lH}~o`t_t+Nzf!JFR`0@*EFsI4xagwNFz9=BX{94V{-(OFetuTBkv% z_-G5MCg7{}d;!6q(?(KN#ZMbL0?uE%aWP~8S~=wbf!eoDU@%CVwg@W0+8Fv8;=Fd2 z3UwjcP0xV~)h;Z7N|^Sk7`P4Bz8ZkR2<vOqgU8^}U!72T~x+U-XGxS^eeOSLNMj4RW+k+GZFURzix*S`H1NQL$x?Gh@rkJ34FmDarofNJelY7eT> zPExJ1R$ETD{w?hZ%1rCDu^u4x+AKQ1ZP5NsuiZv%*I$@JllJ%Dfos+#r^DE7?Wfyd ztVP>Q?K7>~#BgwJ+Ak|0YuBFH2kwscQ_4^}v^|uob!ulPK<;W6+99$ots)SnyR~Ki zgUueT^&4=#+L;sJ`m_rP*RS11f1hDMyKFxIgW6Xn0Uy$a1cJM#T|~vkVXcB1Uq-ac zr~)#o-NyjAuRTcxn=$RGvrw7PJ~#j?54FE1Af!p{Vp_zfwC#UGb6UHZo`)IjG?m|G zwa?NzKd0@bt2?i4%0w)-y0e|Y9n}?X0I|~@q&k?r?!PX0IHohZ0^pzvqzdwJU55h1 zQOBh<%Sm^E>PybL$EgbLqFZqrgC}&K+ri37-6zXHTy-n9LFT4A_cL&(bgi^BpVp~b z5R1Ex!vS|j_jy0&=b`g^h*-|*%9W6L>bCj;?xmY!gLv!asENu)r{;qA>guRh?3}Kf zssMgENf_ev*A4s!T!3y*GC~T}8EN|yr2GDDkYL@@FJbV!Zo_U&EJSyQYW|_R@NcUi@?vNfNPWN3S$VJ`HJK+72j%R^N zye=^e+-2QQ25<>F4b9<-uI(vsi8|wl@Q|c)paY;}-43dBU)8BrKqW=DJOz$Ybvvn& zpQan3yz!cD(-z3mb=&?!EEzhl1ps8~zNMV`x^AQwT$WBm=N;L)SWf_QbYtTPDOb0Z zp13^SqyIscuUkfEAq6`5Rggm6TB;8g>B>DoZs;88moCg>K;(dqg+=^=SLN~Jx_qE)ICC{@l`t6Jy@yMY3RYL(Fw>{t?n;Mwr=Sjr@X38 zHRK`ZxT{-2JBTjbRXH@fbx~`<_2|T}0p6>NEI`zKI>TGQ_3I+n!QX&x z<6nqnP`9lKDnmNocBtIb1-}X0uQy6ecgX_GmPo}y9M~TE{2-; zALt%+2bs|IK7k+}>R42Hp41)q6Dm`>14jXv*2zO*Y(|&(7Rap5dl78T=~^iVn%7;n z!HjJ6Pp?7{NA>@F4bDz~k8Tuu{kI`7eM~<}pE@|`i|9c=uFqZrn~wTz)YjmnKV=J? zv;JH-jJfEqF9+wUzpxfo-1IZcp>j%pk>IEGm)-;Cu6N!I*%`evy#qY-(`$e`tN)m? z9#4IZ9|pbjhiC!x*4NVF;iK<=48&J|^%P8>(|<@`|N7}mXh#0}w@$!VfZlyMLJHJh zqBHLx{WV%Vg7p)W&7ar*lL8MR`f7Tigz9H$84c4{&}l@tehuCF5&HMd;3D-wu5f!n zzvMY^QToSTgt2IS++jo=qfecNm00~QAJ~l3o3=rAQE#Oc`jUR(N?3{4>!=uaS^rKk zWC{99>wvqWPkbB367^49MYu`&fHaU~eeeI^=&F7JEu$&=LKbYM>QB-ascHIuY{6aA zv#x3jFhjx?FE|!`Xwj8 z73#TEEH2V-c0^=1^!p9qiuKnn0#Ks=o_0v3dUg_wmFdsW5!y}tOH>>y*DIfftU~Wf zjSQ9g%T%qe(l=1vQLW!jH&KoLz3(vTTK)2NT!LHrY^tW!>F1;X)azAF2%OXrQxF-GZld#gP-&F~f+xjElg0$%Es9w;jzncx4ZTh=2@ZPSkp|goQ`uCz?r9(e@ z7qU)$)jQzs>W{cU)}`P0HMnm5ZQAel=#wb@=+(b1z#RJY_t(Q_zy6Ic;9)@jF{KKF z`b-{hLwW}^5H1+e@1pY5sQxt$;P>@;l+ljq&%O@axc)b13_j4afROj^jXTdoeMiXG##ZVT9!4rmq)DY`tIK~4xWyo#E;Az7? zN@?5;Rrc_A#t^^(@i6qV;pnX4dpe==G#uLx4_<~vw8VNFo};YX$FPmo0$)QE?a%xT z7b!ChFf4r);RYJaJZJ_P-nj}Z!G`8^T!Qlk2{k5%7&>S(6l&o203K$jONL6gVYw5+ zjWGO=R3Z&8--W*mhSqMVL>Zo@+#=fWsT6~;hTIZp#u+ln`$fYOKf~B1gQGJ-iZ>+F z-}bp|m}o&r35I9r3BO{v=K#$_!{roMNirNg1P{rEELyLx8fKmaAk`pdf=e@43K0A? z!zTL3B;9bIHpm%f z0z;GuDuo8=b=WL2ydXsoHw=|j9Vs?!r_ySP;ZrIhmKrkY)+jTm<6!!xp_N)a%MGdz za6Kywe>ee9X=tN$u*&cp?SiTeQB)VMF?>eZORb@up1)g$CG_5`Ggxl}-ej1i*I=`u z;d#vOwqgDx;4OxT&A_!9R?kAE&F~17*xC)HbnbM=u;VsVIt=gM0oQ5hIfvly8XCf3 zv&V3)4Vt}%m+8&bXXtweD*Xm`F=PXVCQ4!k4HMX;EEqDp`~z_J3|FXfGHmdm(%gta zbqg0{)Zp+RRK^X)B6xpbsHWQegyDC(F&`RI>7kr7{4)&Mlwmh5dDDg?v^APB4AZJO zYj{2p+??Uj9k@#K27VO)c18zE)$NTt%OE>ud@3F|2ctLHJZ}8^N2oX&t#m%-WIRhB z^f((o)_}Mg`(_b~oAK$jkexEVMRk-F3W}=Ml!I)9BajG8h7^8~}B+ghsEw>kqXQ_|nlCk6& zaPh`~!;oDz22rk-V9bueRk~s{6kssX7?T4JNyb&x7)&wV>%?HH@jYtiOfz!nOyio- z{u>OY8?|ZhmtnMP!r*n|EB^qHW!$_SQD+<9pl;*LQi<_jIW)_Ri>PLG)41$UaOK7iY139=JkSVSrLpTOqOLX$ zuL4(Ntd9h#H73vvR&VsajNluLHb$s48e9GVuE{9f0@KaLQR>3DZ5*0F)UC$K9^l%H z7P{o^#&SP!cZ_LvQ0XxCSz)EqxU~mXx{NU+kaZhBrhVhd-ep_U(c>6AYT{NP2zygsHMnD@ zPTFldmv#s3zxY`rt=s zo-=(y=bL_}l{GNtZ>plLbb#q@Ja9p#oP97IY}$7O+%bh!OfS&^&`nd#FVHMERa2{Hh3WKm7^^hB zU5&vSlMl7y)|#@kfZsCx?*ouJ)2kgI^(HwbehsF%ZBS`6J>Q5pn@kbMFxYJRr2#6p zO=A_1wVIOYCER9uuo$M>O}#8|cTB~}@Yi7)RKQWEsb?J`>oR>M2fW)9oeR=q+BOAQ zugS9lxIWXWjo|uCZ@c1p4w#;~4l9GEm}20DO|N%DHexELo#UwKdpg0nZyM_2)C#a+Df$25cEKHcrn7}u9@I(#$;3hK5O!${n?x; zZV7Pnri>{NTeG+jnn%sj6c9V}OM~!dZ&vPs?3j7o4FDX>cYGi_ZjOtDcSm#eBFLP~ zwq6)?Hmm6z!NuH8pYyqz2hD)HnZF#kZi zgtO*axr#Fy~c?%u9`js&^)vkAqAP8faZ*X+k{2%Rp6U+-e zpmN3ha35re=0%rbCCU8iLco*FwUiuOH7|S(7bL~pmj*|vxJrmR%^cSO_%-w2)V+~z zE~CXU!(8_RNTxZ3P7$x0^Y#OfWlo?pKHJPa3|Wr3f$rp7b9XTO<(XTk?3!=>lGe`x z^OL?9EHwKwp;=`1T#qrs3Z{P@4<9~Swwx*jppKf3^tj^ zEQqDWTz(TaTg`Xx1JGtpr(Ht3IpZ6+y<>hh5TwJr`Uhxsn(GbFylam58>Gv;^Dh9p z&8|kM^q7C6e7e^>dIsM6%nPX7yx$zL7-YbFJRX2Sa~fTcA@c(kH1C-MzJYAmyo|nA z8!^8?-?)#O|Dt-`eY2evnqy{(EsTwuH=Kv}2j)zA)lHaMmQ(({?h!ay=a$u2@X1u$gEn$pS9PvW^aik}YgX=dN0^enl)P z785lGrdl5T8Y*d)X4*Ynv%E@Q1f*Nm9tFv;#D)QvX<5<-N7pURuVXOF^50t+%(es$ zfaF+eDR0cR9Cbwyd6tluVJzR`G=*3SEU|R+6$PRaw?w0KC?+dMCoYWpV04EOnN3IpFFoi~ogY zgT*x+@J35HJ*iEW{Li7%Y&rA;xZ9S2Gz8INSx!rOtL4pu0JK>eO#rl89vgz@9gCdK zS2`>k=#!I9OW8MYd)Jb26)Ihpf(Hn&+u}v%Ts;;}8G`S%)Qm&3&vKDI+Ud9a+5z~0 zWjpn%3|cm3KxN3{Mc+8wvv8?BVc6pS0*sAVvZ%v*)Y3=m;C;)f76dqE`5+U3amzE* z9{a$u_i4x`EH<>3KeT*6iTkwWHL8uySmG!@nzi)OuQF$O>?5emTl81p*4CPy0&>)v zQ34e^t9SsMz4g?0&^%`SmcEH`u)5G6GdylBHo%ypm9q_Qovc6737oSv|5e0!()tIz zgk7z_ZpNUSRdOF8owDwX#o%e{r*t~tZoNQ1&Kau*AC5e%bw7YRYfV20xTm#i7d&`b zM`-8aZOy+2xQ|tT2ykC3+XjQ@tPyPnx2U$WkzH$uFXTMN^dt!Ymoqy+2C8^B$$F6#o9XkAQgMOUrK z3&EvWe|`^EQmqe?07$bszYSy8tV|wAy7kc}ILfe|H$j$Z{VoLLy7g!=JY-q#?g1{_ z>hvcDbF2#=0hep-y$>$W+R_FO`PNUA2&uq&h`Kilt?OvFU1W{@6qo0QHLVkx#a0Eq zeM_u$R4*vCW>E@UW<9+ak=?XT(E(Svb&g8a6;=z~XO&jnHH1`U{hsy=)mCq6RIIV4 zQf^;seVTsoTh^|Mz&?pRx?6wzUgj)T8W>t6>kc-LA=b@ndnl^7W7whk0v zu*cf@KCJXwef;6J&+0UQsQaz!0|6hf#{U1wh*dKMl_Bd+YQVi`{Z0?uuvOfKiH%r? z-vw^e`Ye(A){EVcjr|`7*BzHt`NgxeWv1oGN^NVUw$&_4E6cRK^xb>!{l01@LxyZn zh73_Q2qH_C3{eDBP!JiSfC$RQ$x`6=J-@%s=j`*`_ul88=bUrjZAt6k_QAI6sUQw- zTS~v!$hL(7EM;`tlbz6exGmfRu{_##aX)NMY}@rO^d`5Rq#JB%+m8%LIx+rQ1)?)! z${*@3jE|@y=*p%tIxG~-+);ylEt zdI6G$86WS2UJT>RWe{T-Pb~r##}Lzg9nWyO3AYK1SE-|t$aw!nSV>}J{0zNh25%WW zq%h7?^Z5v4^Y_3~8BryWOlNG>!`Lwf>up%cU?lH`+e}9K8W_uBxDEo#W-Kj+UJj%F zUl=>i*hmRoF5@|BY2`8Mj)R!b*d>N!0pmJlEQO3Hsydut_#}f@#2BZ$u9#8t5LgMr zD+`jP3>{4{oMNn-18|xlqqaaf;|iT~&M;aC z7@Mj1aGtR_8dx>si#zaF!}!w|k{1|%kHFYPM(t`4YZ<#!Az8<$KU`> z2z8k;MCoJ$gHL-_BSWMGuZi(H)jXOR1(f$(VSG+Klom!IbuF(lcGHXK8Y4Fcrdt`l zm9W{ym`*!UJ0rIb;5y^i5QNmh_>T^7HyFo1gh(f2Y$JGGjOhU&-elaP=0Xo6q6xfS z#(nyBu8*;dN{Ic84b-C@U~G9Fl7kE;or~`s2Cz+48@NC;|%T#kbKDamBO8#W0KBH*+(F{Fyra@b7l7SgSdxzpJo}|m>Wys!JRppivT^CXBWe?CsWx9 zu$OtBHY+b?l>nx_nN73-`Y`JPkGvGGBTIdeKZvJHR34l5j{KX8uGK));094fez`k30*7IHo66662YJbdF14 zHq!ijB6EmrCNWphJbN-T;3|kIOiLBO5oY;^2qKmFt}~3KF<*KerjIh+jsc`IyGo&O zj2S{7Ze}oFoeL|O%q3hn%3*d;h5R^^xfZ-!X4npZJm#$z5lcQ(u@P7S^U8}5DP(>V z4TTfT$LR%D#Jt*p6_ql#7sA*{=J%UHEMpFq0Gwhry#w{r%qp7bDQ60+O zg6ZT9P|1v-oT!TV^*Zp*GUrmW?HqGfE{NxuDjHp{W*)PESi{`T19pMwP5078=Gp~t zTg!|*g2?Ka|11P{iD`Wopq^RsA|x*}%jsp>z^tIkNh9<4M+l;cx%2{zH8XGa;bL83 zE~|rj3v)W1fvz$aDxrRjsa_4NmHAx^^xBx?^t`t-*HO9sI#WWeq7G)~dIWKU`8t(k zZ!)b^8@hv zEa#1|;>lWH0ZA{`0eT+1SswJ>^kKcS97JE1umhMM>o3Y%16bZP{1M1<>jE)|7ri7oZ-(8ltyTDC=+fQNvjGw;<{RtaZe2kMcm@Xr9ESik-a4+mLA zbefN5ouc~SAyy+FSPW|o6?$S>f6RhN9IKyZx8hj|%V8yfH7fxkNvyRrDU-~K{2G@o zh4tZ=lFeF1*E5Gz z^(??~)}RkSF6;K!kj!IM9)?H(>+HAiUdW0n$5KwP+TOszidc$3cqnGwryIJI^)J;m zPO^rW@K?s-2Z4B+^(OUi%UQKOP&mW7L??zSmJ1!+&$9Yw!^1h&SL*=Ivxdr`P|e!^ zExgyTM2mo3VDU0x>>}$2DgoEBN@cKeiIsW|R_a;XzlZ6|tjDQ{-oV=H1+0;Ei)v)e ztiyEly2ARK`Uowo=xOkGmDN81y=$zysj%6~3LJ(=JIfjY>^dv49ZTt8Irc;H2I~tU z^g3DJ(UI*Yi%GB6Tddw;NOrT{IE*XN!#YUy)?U`bIpFoNa;RG0&vM*@l>yehFR-FP z){&>c8)Errp>Ug3Kv~Hh)@BKK_gTq_;5}gVQ@wncWu$?;5mrzVuu+yP8>Yut+_jK= z$f~5C{v(!g5(*P6pTDraN!BD4=QJK<;MP= z4#e*4Od7`UU=LI8+LL{VvfsVzE~v+rlm;{pq2Yv}wC!v2zKoT2P~H(+7xFW-l; z18f(%Bg5I%Z^Bpv`+XCzNOngycv0*_loQ3XO9G*gz;5{w#6X%4UB|`BDzs zE`;0TxMonuWq&LHmdAdX8nF5790hC^u(PObT*&_D5!B1svGl3Y8Fo2+E>*#f-vm&_ z?i+!~S#}w9jLx%*X}h?{-b4q~TJ}9EI@PgD7h(;U*y;7KSF4Yfc;M)BnR35QJh2U`P5Uq&9+i|^bY&4&!BLZJw5>9J@!(H z2^;~@g)^7#WLM5=`n#Gv9N$=67dKAfV*u_POEYYGaOTuN!IN`uF^GFP z&67~@;xEl?&eA2o0yuSx;V6(ZNrj0ZPG=F+ z_i^$nps=6wL@B}z<~Use2;rQij$bGz^$R!(<1BFp@c^flhGoM!6aKIg!Ks}C^+?V+ zs=h{X0%*eRAm;)LSTtvk7V3vMVKl~jm?NPIRt!hG3&vtO|Ij8L$1#dPOyrbkp_jz5 z&}2X|=T$a%DV$?8vv-8kLx-(Y4s$DvrEzvrkKrh1(K)OrowIHT-j8v%(hE9+<8=)R znVh@}SXdV4H7b>5bBb?*n8RVy#X8OrO2EtIY@$RykCRSg6#1NIPa?nqj)Yz>g`D@Q z0Zwqbeujr4j+rv}VveF3R!TV5S3oS~)X##*NzP9C)})LRNx$YPP6_47r#Y=f@KDYX z(74qZ&Rh4utKcN;!ul#X&Gde#;*@crcb2oq8zSd8Idq0S&zXG_ST*N~j}c1^CwD%q zT;Qb8E_{)b@*Rk^oW+v}qK>2a1K<+p{WSpfoCZ3DT;`ov6})!Ne{|xz&e@R;g$~YV zlwI854AQtfM|Qe;DiG*z2*{UQQa7l?ON$O78|a z`BY0E;zZHd#$8VKIY{2)i0MFlpEG|Sj6L8iq-NqU=hInmJHq+h2+2{-T&gaQadwY_ zH_i!&fz5}UJv6-Yh_m)v=uL2#E25IR3pe5t9Jz8^ zgCMepTSt438~0uMe_?lS$Oue(aA#4;%ai*q)zbHJpQU@=i(5gTEO>L5YzNVYyNQlF zzT6+^CFRGpr9i=-`(-yk0GGK5rUSWGsR|y%6$V3LA9vaqV%g7idmSRd+;lptg>Vnh zU`Qx8>neC*+{?5}9pElr4qiBS4oz=Fa2HPp7Reo%k07GBwO3*6Aor=w;6-z<{lD$V z-M$1Ohq-|USc&0E>9dPiZWx`>*<98Hc)8rH9Qe!Q-ljTcKKDFT zf(y8ZoB;~C9#p+M!5u#Yg(7Y$Z92u=b-zHegsY(~y_CC*p2m~h?>Pv!jQcy)kWO*= zi*b=pbKiXo#B%PyZdf_PEu)RPg8MX$tW0c$PxZjP!*jesZqmVqueU+Z7^IV$_ zSH7Any$!5}o4pt!7r5IFLj59l`D@Ut<(6k7q&jY19waYub?e}vo*Qa~$Yt)?N5C4m zLG{pU1@N`d-SZZ73S*SHzu0Il34n#pM6KBC%T zJNKuzVdXmaTiVt-xKCz)c!N854K_QuPo;s_#hs+C^G$9#y-;p(uT$H&o4aQzh&|l7 zzraH;H;1;-K5iJ@$^G2j?Z5`OU)%*42jy#pq>F=gOQ zaUXkxMLY3Co1oy#dzmIvU3iJl0dwWO9Rr(tc!MJ#y7AOx+MQQg04pB6rz1i1)IxuP#GPl@}?k9YfZi1_nFlu8Hix{kthAkTLYB0;>v z1rXWCOZ*ag`+4K^S_qvvhAzn5mo`-oEr69)eo~BAoEbn$Vh;clxJ1`c{i=vw- zfp^axAd&Z@AC{TKQ~d^BGEYo{C@H+9T!14y-#ze<%3DIU$~4|BG29;I{qzn@r}HxD zXFSH6{y0DeZ_7y-%j7+vB0?5#9t)D$yxdoS^*t(0jbDIz<~Q+@`? za$X?i-j%$y zf-du3umCjhUQU3&MxGa)+?sf4Gzr_xd-E}Pzrwpssb354ayvX+6=Lb+1yOp}#p|JovzxrSKLKv>dT5HK zn|Fs^C_TJNs%Q1`^putK@xG=Pdp|E{66yoIajLft^8TgoFo$@b&PNcpd2i8C=nn5R z{c+D--m)#g?(sG}2S@jL3qAn$fTuVE55v6ARzqQgCpmyPM|u7Ey2VX`ZdGbYXfVY=#qs_{Te}P^a-h6`?rhWJesaojE4_XfqKYob^)cyHq=fY6{ ze*=|80{Kt>0LdV}8}at>PrVJv{ro42U?rG8uoobNKWzz?8Om=h!=(%3Cw4*o0Ka(v zyl{Th3-A!Zj~|5kL4Gg~lF|G@dix&YdkbMKmM?z|dU5i4RbSKit|mwxI)6 zE#kjPdq^=q=Ti_%_@!0^U&?=rMjlS`HHiRaden7spQAxBls$Q4wc)_@;iS9@f?2|Wjg2icLpI@&HwNK)NA+xx)m?*J0l=+ zk^kpr5NrACpM+!`f4~RWCI0nJc&O)x(K|A1OGMZZ#MG3x&W++|2!2mn)#n9 z0j}_6PXn~@>u6r_D&Iyw+%gL~}vPcjA#RUkymw%}Yl70LSXezg#@A)E3 z5AZvV!tEe`)>Zf$;O3V!_%QSTA7*#O)G^Qc+lE;zIVA|8T5Hi({r3`&jm3X&hdyO&@my{^3lyfxtY z2{u!r96!TKMe9w~U1rgowP=DCnOD7gC>M4|=F)EbTzWQ{^3PVgt?nDK(C^#~$K zu$}(CDOsQ!120AJ=PtNS6V%ZSc2v-o4UjJ2P{k}$@bbT~nI+iX0xVn5Pup6qKpqP$ zPY^Z_AYTwbJ;f7(Y^s$M34*H;b+KUAT}Yl3ygCS8nc&0({GAfyr2so4`1x_Ttq`1~ z@uy0Gm5vJM1QT>iofj;pj|Qp*J3auoDB#jOQLP}C%2RcMnN(%GEbu6RWP>1f5qOP) zZxSGRMbQ8MW4vH7jbUFEEcyuwZGwzLSaiGK9r_;Vx?phw!tE3+_zognf*XAhxhZI& zmQRmhocdM0f|W<%p-E;VXQHhTQ#xizvWA;qce+7bMK5tZSd}PXSDa2&X*-E1|+i z^!f}FR?r<8A^gV;>XE`}G|~|z+`kc$hlG2s!NXzU4cc2{g#XdOFJ35a1TjGvNoTG^ z;eYg^O%d8@oaKmcmjhU;aDgxUr3-Zo5RVD1bOkenGu{A}Exa}bUXJj>EL^PP!liVm z&le_9MX5k|x)E5R@clh-R4i;7fI^AT91n$3;TsEc}ID`VGQJ>h&}V7nK5Q z68Z>XrCHcT$G{fhr!)h3Rrmzm<=2G!(*atA1yXou6aMuAmU&(HQ5w`cgj%|q+X#d9+G{+F!~+(g{_o{4+zuO!^4nJ zO)ufw!b|Z0cZ6Tl+|ym*l1{-9?%OjJeP_yeMssBji8s?SG& z5uzdb!6QX8X=jfT@oz%!ps2kL3elnk*MS`p$>flX6|MLP{^CR>4%mzr1)f2G38J@t zKuC$A-+qBYlIRTWZpotW*Fi5ubZZ*0Bchafz|usEq|iGm+DW%!y69g@SdWRio&uI3 zlCHxA$rRnAe+m1O%zJC!&cEZ z^o>}X=sdl=+eLAAfn68zMxl2@^x+7wPSHDRsCS7JtFf?~qQ9mCyCsUDW%h`|)8MFA zq^khv6E*ijp zy~Je_i1>jkKG}|_BgDD?e-Ok8q!1;xe*pD^;y0ME87+?V z!5R*U6SW{77N=7Z6)S#xCiLRO3npPRUi|XUkW3K2NC(?Q@yHY+OAENlXNnh}1TRZ`nwmV>;$PlINIBw# zG>mv${6GbfTyfHIV0mKCvk=J_pZy$If!OQ@M}^{(e*-%qK0-TDkvKmESh2Wp7eXo# z3#oxuCJtK!-YM}Ke}L2CKq{tIi?4hEtVTRePw@rubh?li#ou;g4YgwN4p^xZ%c!PW zFMh~}qs!uiHvk&M(cb|yito;ZNRv38O4ZF`Gd%$vW3WTnS@c;tN}0?50>Hg-DNh(?+QGif2+CtWP|f z{sE$2Je{gP1L76bPaPD$K{?-$m{kw#w%Dm3B6q|d9IWr2cp@LX`{I%qs6P;|F9jGD z3#SmohWVpVmbg!iu;AIIVHAeq2MeDp-!QT zq?}4Su98KM1KT6XUIhg=$zP$s+$Hk^!1I)RM|aj=~45M;oK(`k|` zl-eGZ9Bl>2ko-c^DVY-8ad^*?9IA$~Y>A&2){rCFy%*SVNf!N@`I1CWNES#w_y?v7 zB_$0oeG2N(J1v=c2a@HI4_83%jAYr5;8jQ_;}GXr$-F0^a88m)CARYthaVKGCC6s~ ztC0xnfL)M0c^%kAiQOBLwURH-!%CfGlBP2+Nn{KV>m>s*2=}ri_%{U6C~12a3QdwF z(GY2tlv2C$isVb`Pq#=4sX}l~@;Fr|TO|xC*tAI^e!?Yamz<}f{dLK2)gX3AzS#)S zCE5Bi)^}4fTn>d>lAbr=uUB$!Hx&9Lj(?%hFPSF;aZsXt9j1pQ(}IEBmJHJ4dq*;d z25s(2b|is!U*bf`>;uV+EMUVD;Z|THk`VgcM=(p;=>Tv8x{zlRbo71bU| zR$T{}kZhrI_@v|-d6<$gH$lNgy1y84x=MFx0rp5gr<1UU^bS4Rp3q{fT5 z5|L8LOTeO})tjMyNV=ESa9C=h^Lvam<6U6!(hnEISb}u!Oo${(N7uo7l5`8*(8*F= z2t-n(zBIviM0$Q9^irjtR6-$5di4gpACd%SUE2J@iatorQ0*$FHh=8Q$hvO!*@X}l)m{nzzOMB^PyKH-6jMmmL|F& zmJ(_G=de;L{m%m;C#9pq@K7doUk`9f>Pmg))6#~60Oit8rbD4p+D7lVDyj32@Nib@ znhNjL(t#b|)ksfAf_Fi>o~nKqrJ=nLsg*9|1Jp^o99YUF>2H+2)=M9wIl0Ty`gh^B zLF)1h^ctn%XF+U|u4qDl%~CnNmaa%Q3Zd5`<on9er(ytVd zY?sREEpuI(v>(I{=`>H+ydf>88fT|8lLKCtw2Ee>Z%S{R0`Zpgb$TOoOTF$uy+^8e z4jy`?kuyN-lh)Eb(Jy7uCO#mIZi3rEX(r7t4M}58VGXyXD<8qw9jOoX1MW&)zJ|g* zX(}C|?n{6D0sbCHbzebmSo#*tjgCl@=8kq>8Ixuh;C5UZngjKR(tR}3_DH(I z50VqovRLpYrC;m@HYE+Fw~UkQ#j60$vY2O~;39h%1`$`;BjW9meJz7OH<^_tFx_Q3 z^57wp(aedb?4k~9*em;F3_LH{<};A=mKBZS3i`+%z6~qBvRK-J{A3}IV-5bYGAfD& z$aK#`FHq)3UAFzQXXtyiVA-$<#1L6VGl-$Gwe&NF$<{pt@qnx#9^r<|RFq^y$X+yq z7bzR|02U?NM+fPHvU&7zO0?`3x=jzsCg|BbEUWhc79;za4pgzSFKIX;PWDnDY{ttN z>A(_Xcj=3&MA^${pq?ZPI}VU6GgDPMMOH%d6Gvo!xWZVfO!ougOq2Q3oa#}TFQo_R zvSsw!9+MrUJ0wH4?n&@6W$ZeHlqK6m#rJGk1AU;MBilw@=i{>QZ7`NAo3 zS(gByT(*{iKO_5{-u)FaqY_x9>@XFQt7M0$xOrB#Sb~#h+LNa6pvUMWS`J(+9=Bx zf!8FHI|FN$ZKe{`71?7{ZfKEtJc5<0G6P-tYqFEmV7gW2@f57I$wIz@WV`G^G(@h; z3Yq{qWTg)waznP#1d&eJ2b5WL$wDqb@}}%%YGL1!Rnk7uEpy!fg&x^j>R$EAj?vg@ zpX^;KzxB&nLlMh>?5%!)LD}Z}5E+uKYzMe4d;S8z9oa8D@b1b+D**1v5|=~ozHCt$ zcn@SZn81c*>|{6^kwtU>jLJT)!y3k9zrBiB#$}9GAo)=C{w%0Z%AV|o$dqhuD0oit z_0$%3m6y>GagY4tSFi>*`S_1e_mzA60R=z#Tg@Q)%j2mA7$D!s05MQrLcAdPd!6vU zPi~>r?w7Z<0R+qI_5*~ILC`H>b756fr70mR6kqjy}ayxa%gUTumXv4Kml{?X%l_vj+O58`~sZ{z%ms?nnJSJB?4#^BTm#$f+ zd>5TGvg9+V-=8fHh=R==dBQw^#!BQ>&w^Mg-@Xdqq&)FEm@bol`8~iXxtBM}^&0J|#h_y$-0ntbeYfL8f2s?D^?m#Sf`UEci)V!19ieFM-T|7&5IpM$Y*#fjNiN`zvJ+JFZY zD%OtZ=0&PKx4VGl)kN*Xhf)RKjE1n(%u|%SEz4!}c&>{m!WQf%}9Z$dFhNA*d??n3BIDK138k&{w(38tNuYd*pc z=c3#Z2oYB$>pft5lu;i;&qMjeMnvYRjGYN%dzDFF0r)6?{t{Mvm9BJ~`YFGm%+X)@ z)mKmmP^QwUCs6sc9FYYnZIrw1Q}VkYvS0b^ZI}*LewYN25akcFhlDE6MdOl(DY?_& z{ebfOP0$Nhy3!bEgwiVx3X#feYHvp=vmYRqgUSU|QixX0pvKA}Wm+P@VWpTFaWP8w zc~Fm4#`^(_Q!alVj^dT?$RLuSY=0FXQMrk}#!XUA1|hO!tn!jlndxI zaa{T0zfjLr-lD=%p7KeunXf$D2vDH>Ee*sXuG zhPF;C1&cwfP?k}Rvr@Tz7I;-kuO=v*SC+hn6;&%^t*}y~OuGVNt#XnIV0Frnh2ULM zUTcM3gYxIqz#5hP3n9{^eAo?}ElN*{^Q!V=htpuCSLsg&#(rgu9AH2>KnMOoWkwzx-BAVygLqf@2Cepw$yXV8vn9?EvHm>}PTCNY3m2{CGDYF*C?S!(OQk+TU zfxECWr97|^>Q1V(asX!)=PE>8R2wO+cU8@$PUs%hpEQW+rb0Oj8?`Dp6PSlePM<@2 zs@|cafWQZ!3QjSnnS0_k5pAsfjvq! za}o3os$QbpCR+6@y{_X_$LO(-SLM;0IYAY2AH+n}W%^%$B-KYdpq{KMnG1y!)tmHj z<`LDxeK37Y_5JrSmZ4g{3+kDwkLazIrP@ogM%k*F!Qkbn!l=b`TvbYKk6hJbRNg1slJE-@4V^{szX<+j^0KP7ga^{bkwTW&~IC(ik%PalB#?Q6zWyI)Z4wR zdWV`B4XUUr@ETPEG@{m|+Qb2|S#_MU-zzGE2e1}Z3!NL=RM|!tYgc{bhN!Qr;@*S5 z4pshY5O1iyrk|rzRYUKiE>-yN@X)KeN3FL$6^CBQ{i=jK=nbgeq32;xC0z^Rkm@fZ z9Nkt83Si}d>X~Iw7*_p58^nmp`xYV_Rc)a+<(Mkt0VKy&+rwb`p(=m}qLbP{MKx#j zsDG3L3s*-{ zk{_Y&9z*bv>ZNqtiBenlA&7(OUuT0CtzI4gUYz>-pAkg7`ia%xC8%qE1u;>b^&+q& z^?wBjDOp|P0`(O2%tU~6btY};$J8gO`kJB6ryw%bPf=GWOZ|xQ-E6g>A9^`zS1Mr? zsE>rgSfP60WwhNEI^{exX;AlYo8GY|Ns4k!! zdPu#05;pIvKOY44Ks`c9&9M4inzR^E|8p3;QT1I~(U^J`bqB`PC4T`-sH>?LIjN4M zBh8dLDFVSeX%_v3keoFy_rjlx<~{l(!%Y(~2+Uoxms$-Tn%uJx@zm_xid$o^ru8Az zy)=b17Ur#aNR4S9%>qiueKn`80DhWNX8`;)^C_(l(ELaTl|W5dH9`u~JWbyN?bCQp z0fcChsKXelX`t6xm?mmD+#b+K&x07QS;YV`Leug&JVa`S8le!S8K*w;LCub)?d6Rc6_x3mH2D|cwpr6h zHHa&kv(%|*(YzfG-c`+C!H~SB@t|64t7apO3btvY(xA|;37`Yqbxlz^L^?Fp^qI#E z&HQwD=+yAn!Ah6LFa~f_!>8xrmS!7$SJ17=P65`Vd6J6uy_%f&V60DbmP%#)nwb^g z4QO7ck%vLejy8ZHjUWtbzpW9)K;(`lgW#s$R5?O zmI91v>fZ+#*UX^zk()N>A9#1y)>2u^L)-rkjCpDUZbM|R_Q)9+^U`jjJJMTwFbMv9 zwBK%nq_6h1r=aeqjs6Fizm_qH00XqU=~NJ?y-^RhLE6wTnBJ##@r9LOZRu=S3DJ5{ z)S=qQFA#2+Hj(z^1KLXZE+j&`!v!$Y+8tTU_}(%S!k&BNLcr2sM7 z&UfJ`R$ETh^LXusC*VCn`&J*YMD3a%!AsGW#sD1A`aXcaRPDl0*i6&b(YfQOw)G&0 z>Dodwj2+WPP(G2N4W(mJrj|{$plq!NRbz6rc|QOg*VTRjgVMcSH7*eupEshVA)ZPY`uR9oc-4=1$+YY||X_M`v6JEe`GJ><0Z zJ^JLbT)UpSG-tH3B1Bf9JxOJ>O6`h95UaE&sRwpe`zK9nozqV7!8@yuCGA!#i1pekAArl+*J%@I(01*ILZkLm zdUG{tr8cbSigrUdh%MTgbd|1ZkEeroO}mq_gjVe*o=|Vo-rWm-?b;LcLb;)Jrku7@ zJ7xf{OB+BN%S~-7y-99q{fA+!TU$&+#68*}6Rh-UlPE#%*KU7^H4JE9rF3#gdy&2? zxUF49Re(F%Ni)D*t(fKn?rA@p4$1r4xxTPDtc|12@`%=@7(t9`_d5W_wKrWL`A}OB z1=EkTJL&G3(2B|5q_*vQc%RbFpo6WG?rF-QU39~zVAEB%q#Fu*bld59chebNKy=qF zoBx;-86w^z4A4W5^78xl=My94TRx|Jq?cwOUOxJ}U2 z?Ey&CHTFR=N!LeT^e5{Q2H+t@x1T0&kLcXL0+yZ z(0xa90)@J2J3O4w6`umJME9@*pj6j(6TFkU=`X=_neJywqE6{Pq^M8pemMY92DAh6H5^Fb=`U@EOqFZ zEU4em{W~9yI(65cfnJwxg2o7M>NxbF;Vs=?jkrqPI?=1ZdUXDDQ0dhz+62>mI%Y16 z_3Ms>!ODQ{RT)+^sFROC;jZr6XCZk{cbrPx_jUhKb@GAkq655P-HuAcGNPNP260qZ z_AZEHx?9u_AJyb0Y$G*>yPd;KuE=?8b$8x2tK&^xvvYEQlAMR?e&AEoWWOP_fglHPj% zry%L05BnG*0s6&a7z@-(M?ehH&)W!*efp{rINGo0zle}R^wTMQ4b{i~31XQ3D+#az z`aK0$bh!Rv2|$GYrwI_F^uIiW`a%8Q^f*Q9Kc}?fkUop@m&5vcD#gd>rw74GtUjd! zym);R7a&2uma6B8`h$T0$$I_cP)N~Fr9k4Ee5!sPy&ux_ZdCI~*AE_pzhipc zGazQ@!$Pr?Onoq&*t7JNE5XawfBzYRIIh<<0OabEX$(70|A`xH=Ii5f;h{i(VmGit zeavZubV8p;#o}VUIUF8J^c9rXmFjaAsPGA26OrO^u(m=0TFQcis8hyqf)Gz2g%E7DE=gtMOPXFd#AYRfh ztAO`f%{c}*bsh>^h&n^9bKLhL5|DcCtkA81HK(D^P z47@&lMJ;#(`k)0M4(f~FLu5nxU?H&E`hwXoc1Qnn6Bd0}zn{+U_w+8bGd$4yl!G^{ z|9Ay{hY@`tJ=$aX+y01bTz~uuh!6F5=OVyI`sVMTFrnW`<*6xs%TBm;GMsu1n6qJk z-drw*6ngqy4cq7k*kf3_9U-~nlndZt`1U_o@ihFE2)(_A*W4iKWr$i1b#KFuT~PNi z+^4T~{0z>Nl=>S+X}~eSz<&AwX_Zz{OIr+ZK&fx{ji~U7kDv-CA$$ztYL`_AkOgf zC?w+z6O<1o8csY1V@ZZ!C#)#hfYuN0a>FErd&IDmrs7i#U)%zgX2`h@^<#!GY9M47 z7QPA7nT9a>`LhhOxRA^?>{tQG9K)J-K+H8PYXLFOz@P*x->`Kh92FRygVJeYQyeAII1yRrCP}a!;=XRxoBA5j@8x~?t6lG z$zY(DX}#f(?+{C)A@VVJXfmX42WU39$Pw8U1D8^&76bbx0=#O-p>q2*!=idvX*ImC z5Rz?%zstaDH>7mH%5}pz8pG}|ta=`?+%T+s1z4xy)-ixCLoHpwn}+rDYQ1IHMaSH3 zLv}N;9>bD3u+nR|{|Q9;3_(u=>o+{p2W-HQwg;vM4b4&TK4ch|0NggP>GX2PF#0JZ z?;1YX0^&V`hZ`K-H~dTa^#eoMTC8u_@OLddj2PlupfGCqib|wohSjwY88=+g0X#HR zQzH1tP({-z6NX>^zv~-(1yGnWlu_Zu$r$ntOgkI*(S>v|rcD938hg`VdXG^t4|;A! zwI?ule6Fdb~%{Wa7>jA<&^3^iV&8J=)s;_Fa|Fy_#M5NZ7H z4Penm9u4mtGS(jhIBeXmhp{;0JCy#!8+W_`D+$I@%6F5EkI}eJigCt=aCF4Dmh$qW z#$oC{rW-%#f%-Ay25P}%8MoOHM7D7TjS}P-*(1R6jLC5j$u~ZrGJSzDbQ!rqQbeZf_YI>44g8O#6Q=$e2iDMZLze zTVS)#_zRuU`;9B;U+@Nu%?$7cjWg*t8Zv&K1njnP=~v+0F^U(#%3b67djR*0g;bGv zU|dZ<|FBWE0oaJKn$9Gn#yfP-95X)l3c$Eg9}Y*4j2}`PaKgxUfH-OVoOaVGqt}aA zgOjP7Za!y|FLej@n4XQGd)M^17;A7hv8kNmVM=vDES{#fsc^m5)Di@LUMBxIc=tAS zPzl4=6hv)tKT|HH{QjoJRKpE0y+m!DKvM{fLI#-@s35Y>wE8Ki?>7ZdcP`YV&Id2d z^aOQ}516k1ijX2rQIy?Bnckw){6W*?PJn1r{alC~GR^D(7GwJHQ^XQ$@}ZnI&h%j$ zf`~Ugw+kS_r1={nNv2un5KFQtqX`~TOwX=|WSVLD8i1pw7An!CoARolaLjaszCX$^ zO??8rOw$D~5VK4lJ&oYAO+F@o98)n(YaKU5FM+XKlbNQK^GxwOAenD+eim4Pse(4S zLen}rZ=NtQ8-Nv=nA905HWgFaTVj&cK(f?ior1rUrXp&yoHDJTXY;h_yKk_fa?>q3 z=AJQabAVT2`YZ#+DoxAl;r*PcaxqqP-gMy^SgAJE(6=o$CIaC@ZD!jzUlK_kbGcT#sqQLR9KFXMoc>!z#BC!q%-rFX@MI=#!U;{A@b1lAx-H$GDT6% zf5N2K1DiCd)&fkKezd{6lliaT5umeqDQyrg=2bNa!qpr~$=)7w=mIQn7Eo}fk=C>&u^);8)!KR=2MS33vnz`@8N|5;^t!SUQ zBnQ0xW>yU(gUt#H{Dqj6bl?az?~s5OX1-Ak;sJ9U9fiWp>+&HPVIH9^A<|qG3M*0O z_r@V|(ELXVc+uva`@uV8K0`H#!{+_e%8W5@bO#n|K1IunGl%Yjv3T>UPk<$vQ|akX zHs7MnF~uBw3*dq&R$!KV2AhTENUF~ln|~dJUWs|h7>t#gPtx@~ zY5v{>kutNd48(GC4qfXr=F<4jEfr}{2(ujD0Nw%1n!O-~Tat6(Ho~%z?&L^|m3UE> z|HfeRpv7PKXf@r^vv;24hj^ZuHW57$WFv}22 zqGgJT?@1O{7O-QMeQIDC7C-tMrc6r$ZKGM1IXB=a+w%SY>-v_eOsF5XXq_OEYw4xA zgggs_$~XCzA|<>RSa#EnS!j7_1HwIF`H2ckMV9B^he)yI4rL`JmInHXOD(Ht`un71 z$rlK)%u@6eL{3@$GlF;8@-97w6_%GNL#njIN5EK>MSK~OXD!O}&^u?jN%JA+EtMZ2 zz-o)G7a`SHLc{f2lTF3PEbPEV)^AFK&$265Y*c&t0`}7xBR#elGiOWspQ;Y z@gIW14NJmYIO?=aT>;i*+13nj(-LgMb-88Pu?SeV<yd`hRAJ;f#zoJSZ;iPsP9^aSHSxNOQ8Y8VT+d)*ocKg zGvs3yV=chAW&Q@}J+%BzmFGv6oLmqmEC*9SoU(M#LE6dc#DqU*>zmJF?Jm~eeus#w zb>9~7+^jR`esQrzT) z{jI-lhOq#vp&iD8tk3&Ha-Vf3JyrXy9~VL)*g8SEaELXL-tVE-&*-Rrz`E!%6vC}< zehHBXYr+$78)>6M(*4Z;58EaigHO@Her>{aX z-WqonA_>;#J_ks&wnxBbk~MT3lF8PWH^X0wwVn=CN35s|VxPALCxDk`-E|Y-sFh2H zm~`v3XJPD^HKqtwvaG*82V%B$2Bj4_)(@!mblm!K1{RiUU7w4!=UKg8hDg432bE+C ztiMo^ve24Cm5gHRt2Ap{Vm+6S%TsC%rT)Vy>wER^aN7D0wJXc5J!cS0rS<0rkgT$L zM#1!1Yxe^vR9k=f6rjdBL1p?2Rt|mhbJ4ouRfyDD`=}Y!Y}H?e%`4XG3*fa_573G4 zn)O&8c&*mFe}J`F-9x}@w=Sl}`*mv)U7j1(oiq&GX-!`Rtjij*4A@QUFFshxE$c3t za_+X8d!W#34T}P=&l-0Rpx?@#gvfxEPk+!hWc^_R*lp`e{s4EZoD(44vu>eY>wW9C zM1TiYT?zC?tYf{fIcj~IUae!+H3mdIZe2j1C_S|PrvY)oI-hRZN$U*ys&C3VJc_8D zY^{|2I@`kOnB-#fq|IZGErWh=H=A|_i0(EsJ+L0O(!ZhLX-nOS%d^+EKNOPQwhZdr z`Pf?Nhx4_qrA*x4=0sJv0NXrzjsk7}oJV8_Y=6;7Bit7ADkLLp+bV!X+V;=`6lHsv z{*UFLZ5y4~57~NOhu&e^fne}rY`#grVr`o~hDe<4E)^6LY-gmfl4#p;9U#fpO^;}@ zE&n`3QfyafY9Q4Xtwfw@wm+$!eALFE>Os2gLKld~Y|ly|nQ7ZYU+ZMqmS+OXw%vXQ zdO5b0RD?Zl>)!_NxwcXI_lrE+Z7Of%+m?jGUx954)inxjI|TqIY^C(xEV7w%;i%Xa zN|lom8-uD_rMAtK;hwS`rDE!7TPhtm%59ae!PptwKQz8pVJo3CP^Ik=Rjkk2%IIs4 zb2cHJ3eMYZw}V%0J9i4a8ryi;D~+hbI5>9uX6 zOrYPE_ycSX*xq^_#6jEF;RyGR?Z_Xna@ST%KmR?O{a1LnZ#!`naXzqxMgtqRJwa!u zQClKa;l^wV+VaM2MYN)awrR7W_sCXs7*}c1)?=GFV5oh-6CT3s z@2Oxc!k$A%%SijA5b9BOF&$zK+H0LbjJ9uygZd$R6m_d(?a$I+Pn^Ag4l(ieS@a!4 zf<2e2uZi{#%ur9V|NSf69@zmO(NX)@i;zsWXN3SeW?xA??=1TY z63MnNrqA+n?91q$KW<;v1Y)ke=Ou{b*&qA{VxfK0?=XGB-b}~;BD>)`V8!-d=y+9P z|M40?slD_^SUF|i>IX-s?Z0n>WV!wR4n%#%UP$8!7519xkgT*vQbp;a{c%bGYVA$$ z!(W~K?^SSg$sY4Ntkm1tuR-Lp{kKf0H`r4@fO@0d`*|od*&SuL1kLu#X6Rk9`#lNJ zVy~eF?~YXAOuT$gtHrx>HEz) z_BTp^-L>~QL*$-)Y$-fEu;x1*OfY9GfG8yCdap^*Udb9gL=NTB0mnhFeZj8hkX zpX1OGsPA`d>49Xh!$F@3ggEY);NgH{%?gO%FF~ciA{?9J;62h2_cK70<5C!G9&}7+ z0UUOGTLBQ`_~$36$2tn%gkGE@XcVU79e$lqPjD=yp^;?Ae45utaYQrW?}$S_0g+V4 zyRHyPbDV1g@2EpUrGa$Eb2Qq0%<;4mScaqJ225u<%BYN;OmkLwjw^KO@*Vl_K(fH0p@E=6M+x0TCme6PgIDBOL%US5Ba|lUN*p0X zEOpe<$F3(GH8kB&=CChBWTzZgsYiR-kw|UFaz_}=6Psb34lgh88XU=Q05m%Iuj2=3au}%O)$DMiari5a`cJ@XaY)o4UUjU< zgQIJXsw}9tI^H(|v^msN?QM6&jUkrnj;b4w>~MrrCVs;qqYSXqvHeZxbvah2AnKbA z);O?Rj>)Uwbvr(y>Q;|q-86*T>yRY_>-!&dUmYLywZxmDUaGXWE~&$9q1g>uPc~X& z>?S~4+AR_aEmo{qcMnN$cMIfgftL_SW}|-P1})@aR5fqs^<^ z{sD@BPS18^p>7N3BzDpjKZRP6?shJeFV@{*Q@TXAfKRE;IzKxOU3B~3MbTB4(G=v} zbd@+cqPuQi9}x7={mdB?J$1vAA-$JwN<7GW>zeq%vybioZ~MNwD}2@U(|M)?v%jth z2fzmCT)h7V>e5bu=OEo#{+ea5PU%E3MEB~afDP59i~($zZh#K8;kuZ<;5kC4NkHRB z-DeLVy;RqnkHb;AFF8&-TK58*Mq_mKIA>_APSXsH<8PRt@R>Y8H=OdVq!snsVeBEPa$XlShR0~`d>Ri0J7U}w4g`mZ{JA7&^ z(K%v3w^aAmQPh^{zOM;_<+>O7v1Wy?IX}y-)V(zm5?1M~(;;@XuGv12uhI45??Tq< z?r}6`oz7uFv0k?>8JHV%YuUBjs2kiIwM{zxOu#nlKI2%z7F}}=Id9c%T!Uhp?n(vp zXuEDV2m5#E-q;N#cIvLP(Y8x>Y7UCsy4+vTxJPH_Gjgx)BTiM?r`!81iv7CEv!UPt zT?M{359$uE^K(d7rvwCtbGQF(J<1qad-P#H0 z!&O~+F(h2m{gsE}y6(&KK)Ipo!;cv^b39bnf#&)17X|10MxIrR+^fa20W!#0Xr|J!gB z9{nwT{qX9qa=wO7{~cQbetmiNEdu%yPJ1iVZ%9I8C;eF7qDA`hoVil0e`z%uOZ2}U zM5jCJGq!-)cr#v%H@`Su;E zuYMGC!}QzY&^TP5)dI{$=)c?o%#r%P*-9_fTkJp?r62SX2uABa*$9*|`UQ8P;8^`! zE4ngH@2dxS$&>J=79A){l!ES^YxXB(6~Tf zf#d88^~oICS)^aWvC75zoaJD>M4#kDu~a|cI#8DBuRH+Va{cTPXk4LxnwR%Vee6zf zS*4%L?|-ZHFTD)RHTsPg(70CrKCi(I`j2%eHtJ7T2Eiu%QqJt(tZ(%K8n@_QosPz> z`VQ1)fcpb*nRrv z7X!9mf7%QM59rJB$~ve&)fGGs>FX>2?67`1zserb_r472NA<6M3@*p?O`b=mkL$hs zNOwYifDe|F`b|%O{FHuj9iW`nk5+>2jQ*ctpgXI-(+Q2|^fn`E=k<;Gf%1a>zZ{sq zs6W6@c9-<;@qv3;zi1B{ujoJLak;9W&7uEmdVO;=Uf0(g11>l8&whc%oBCcw7>Qf@ zpJzhQZGF>bsNK=O^)|BrHr(*WcYuvByul%%kp?##N~MNI zFN4`AL(*BW9&Lyj0F*I?QRl#OtYHa%h%nA@k5g;L8y>JtG|AwKgP_TVt8G!6VtAn= zBuq6t&VL1HnqgNZFq>{js|E5IhWxr9pJ~{87<$e!#4QENY{Q7lAedu#r#HCFH8iUP z%z1_%PC~+b!_mdSTws{USsx1x@A8)fiwuKng3DqAP&t}6|zM!`lUgU4%w;J;IfP9-_*oP3b-LRfR&N~cmu7$jv zhD%RD!Y;!b2SC2tVCQJl9z%}!9^J6Y4A%P$KlKL6e#4zE&nTql#Xb; zYH&3`am}z`7znN#`tw8o4TFaLj+=&hYysXfbmRB2+lD1WP`hI|%)ZQBL)^EZyJt8z z9X+~lIIs(~2Zq2wNU$1z8;inbobwn2*^QMrXUJjf*B>ZOV-lyzyNq$1qvSTGUj&NB zXpaGk*Qns2lh61MKa=^5Gg_jX0pkxF04p@M)nh<98N0BjUu3Mb1h8VGm#^It<3Id1 z-`O~CIK*}_E@aoatMPtK)VdkxR)E;M}W z75F2XzQ$MCZtZ7G%?7N$aSQ+D{{hAUw*VVx?90abAY-*_&}FdE#&Odj#=UH&4K>!u zL@~_R;d>Orjlc3^;t1nm{?2WrF^-cFOO5UM7=50`Lg0VKkCK_Mmhww?pc{9+5$;RINvOLB38n2M4#_D&`IL%mrAC9IQ zf8zM{3}eTYsLeFqXbHMG#twQgn`=DN6qxgjukqHNZ(PBr@B(8gZ@h)Z0(RUN8F%s9 z^C)W^9~OfP5V(CG;ZAiW`~SBET|ne>ZU{8BgUZ_s2w$S+6=m5#(dts$Bh;~&rTT6 z)quQ{#;q%XdCHi69gU}ruiQi98RKPs7C&oTI|1sRGrm$EjpvQ^{6M*2e2qgi7me*I zgYJ@XPFt|PZ2aYQ5L_|NZHVHk@kAOLZy2AO0J@vTwfv5E%lJJ%TirHJ>2>d zUE`a{==(k6@CnfDzVSPrl?O(n88EA98sCOCQ+o$$cGLU(2%QT}u z3b!eyImkUGcPGg6n!YSW&1bsT59<0&hdI3~U`qK6utL*xw(dKbZt`FinU+jJQEd8! zGtNp(@8$xtv+1*4KEcM#R+#2^P^>l$;&;(CCM`dtt~Fg559#Yn-+zv7 zt~b3ZzWFgV90_KdP4CBnV2i0CYrWNEpM}~s(*lm(Z8sgXgUb$6 >GG#Q^qZI`Jl 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

kx^;HsWQZB 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 K%QYwa#Qi^r^{LDN literal 0 HcmV?d00001 diff --git a/L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.su b/L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.su new file mode 100644 index 0000000..93edb61 --- /dev/null +++ b/L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.su @@ -0,0 +1,3 @@ +stm32l4xx_ll_bus.h:1346:22:LL_APB1_GRP1_ForceReset 16 static +stm32l4xx_ll_bus.h:1428:22:LL_APB1_GRP1_ReleaseReset 16 static +stm32l4xx_ll_pwr.c:56:13:LL_PWR_DeInit 8 static diff --git a/L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.d b/L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.d new file mode 100644 index 0000000..3e2f730 --- /dev/null +++ b/L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.d @@ -0,0 +1,38 @@ +Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o: \ + ../Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.c \ + ../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_utils.h \ + ../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h \ + ../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h \ + ../Drivers/CMSIS/Include/core_cm4.h \ + ../Drivers/CMSIS/Include/cmsis_version.h \ + ../Drivers/CMSIS/Include/cmsis_compiler.h \ + ../Drivers/CMSIS/Include/cmsis_gcc.h \ + ../Drivers/CMSIS/Include/mpu_armv7.h \ + ../Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h \ + ../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_rcc.h \ + ../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_system.h \ + ../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_pwr.h + +../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_utils.h: + +../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l4xx.h: + +../Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h: + +../Drivers/CMSIS/Include/core_cm4.h: + +../Drivers/CMSIS/Include/cmsis_version.h: + +../Drivers/CMSIS/Include/cmsis_compiler.h: + +../Drivers/CMSIS/Include/cmsis_gcc.h: + +../Drivers/CMSIS/Include/mpu_armv7.h: + +../Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h: + +../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_rcc.h: + +../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_system.h: + +../Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_pwr.h: diff --git a/L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o b/L476_ats_blink-master/Debug/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o new file mode 100644 index 0000000000000000000000000000000000000000..68001cecd73f5c4fd30f8806a024f8ae710db19e GIT binary patch literal 957128 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 z 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%0DPumh*(= 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

BH6E|Lwb9e+}$b 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

}NUCy$@;t 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

PL{ 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 VO2x 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 Ms#jVea_r~-11b7w!2kdN literal 0 HcmV?d00001 diff --git a/L476_ats_blink-master/Debug/L476_ats_blink-master.list b/L476_ats_blink-master/Debug/L476_ats_blink-master.list new file mode 100644 index 0000000..6afdb85 --- /dev/null +++ b/L476_ats_blink-master/Debug/L476_ats_blink-master.list @@ -0,0 +1,1577 @@ + +L476_ats_blink-master.elf: file format elf32-littlearm + +Sections: +Idx Name Size VMA LMA File off Algn + 0 .isr_vector 00000188 08000000 08000000 00010000 2**0 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 1 .text 00000814 08000188 08000188 00010188 2**2 + CONTENTS, ALLOC, LOAD, READONLY, CODE + 2 .rodata 00000040 0800099c 0800099c 0001099c 2**2 + CONTENTS, ALLOC, LOAD, READONLY, DATA + 3 .ARM.extab 00000000 080009dc 080009dc 00020004 2**0 + CONTENTS + 4 .ARM 00000000 080009dc 080009dc 00020004 2**0 + CONTENTS + 5 .preinit_array 00000000 080009dc 080009dc 00020004 2**0 + CONTENTS, ALLOC, LOAD, DATA + 6 .init_array 00000004 080009dc 080009dc 000109dc 2**2 + CONTENTS, ALLOC, LOAD, DATA + 7 .fini_array 00000004 080009e0 080009e0 000109e0 2**2 + CONTENTS, ALLOC, LOAD, DATA + 8 .data 00000004 20000000 080009e4 00020000 2**2 + CONTENTS, ALLOC, LOAD, DATA + 9 .bss 0000001c 20000004 080009e8 00020004 2**2 + ALLOC + 10 ._user_heap_stack 00000600 20000020 080009e8 00020020 2**0 + ALLOC + 11 .ARM.attributes 00000030 00000000 00000000 00020004 2**0 + CONTENTS, READONLY + 12 .debug_info 0000206d 00000000 00000000 00020034 2**0 + CONTENTS, READONLY, DEBUGGING + 13 .debug_abbrev 0000074a 00000000 00000000 000220a1 2**0 + CONTENTS, READONLY, DEBUGGING + 14 .debug_aranges 000002d0 00000000 00000000 000227f0 2**3 + CONTENTS, READONLY, DEBUGGING + 15 .debug_ranges 00000278 00000000 00000000 00022ac0 2**3 + CONTENTS, READONLY, DEBUGGING + 16 .debug_macro 0001e117 00000000 00000000 00022d38 2**0 + CONTENTS, READONLY, DEBUGGING + 17 .debug_line 00001fee 00000000 00000000 00040e4f 2**0 + CONTENTS, READONLY, DEBUGGING + 18 .debug_str 000a94c9 00000000 00000000 00042e3d 2**0 + CONTENTS, READONLY, DEBUGGING + 19 .comment 0000007b 00000000 00000000 000ec306 2**0 + CONTENTS, READONLY + 20 .debug_frame 000009e4 00000000 00000000 000ec384 2**2 + CONTENTS, READONLY, DEBUGGING + +Disassembly of section .text: + +08000188 <__do_global_dtors_aux>: + 8000188: b510 push {r4, lr} + 800018a: 4c05 ldr r4, [pc, #20] ; (80001a0 <__do_global_dtors_aux+0x18>) + 800018c: 7823 ldrb r3, [r4, #0] + 800018e: b933 cbnz r3, 800019e <__do_global_dtors_aux+0x16> + 8000190: 4b04 ldr r3, [pc, #16] ; (80001a4 <__do_global_dtors_aux+0x1c>) + 8000192: b113 cbz r3, 800019a <__do_global_dtors_aux+0x12> + 8000194: 4804 ldr r0, [pc, #16] ; (80001a8 <__do_global_dtors_aux+0x20>) + 8000196: f3af 8000 nop.w + 800019a: 2301 movs r3, #1 + 800019c: 7023 strb r3, [r4, #0] + 800019e: bd10 pop {r4, pc} + 80001a0: 20000004 .word 0x20000004 + 80001a4: 00000000 .word 0x00000000 + 80001a8: 08000984 .word 0x08000984 + +080001ac : + 80001ac: b508 push {r3, lr} + 80001ae: 4b03 ldr r3, [pc, #12] ; (80001bc ) + 80001b0: b11b cbz r3, 80001ba + 80001b2: 4903 ldr r1, [pc, #12] ; (80001c0 ) + 80001b4: 4803 ldr r0, [pc, #12] ; (80001c4 ) + 80001b6: f3af 8000 nop.w + 80001ba: bd08 pop {r3, pc} + 80001bc: 00000000 .word 0x00000000 + 80001c0: 20000008 .word 0x20000008 + 80001c4: 08000984 .word 0x08000984 + +080001c8 : + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs) +{ + 80001c8: b480 push {r7} + 80001ca: b085 sub sp, #20 + 80001cc: af00 add r7, sp, #0 + 80001ce: 6078 str r0, [r7, #4] + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB2ENR, Periphs); + 80001d0: 4b08 ldr r3, [pc, #32] ; (80001f4 ) + 80001d2: 6cda ldr r2, [r3, #76] ; 0x4c + 80001d4: 4907 ldr r1, [pc, #28] ; (80001f4 ) + 80001d6: 687b ldr r3, [r7, #4] + 80001d8: 4313 orrs r3, r2 + 80001da: 64cb str r3, [r1, #76] ; 0x4c + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + 80001dc: 4b05 ldr r3, [pc, #20] ; (80001f4 ) + 80001de: 6cda ldr r2, [r3, #76] ; 0x4c + 80001e0: 687b ldr r3, [r7, #4] + 80001e2: 4013 ands r3, r2 + 80001e4: 60fb str r3, [r7, #12] + (void)tmpreg; + 80001e6: 68fb ldr r3, [r7, #12] +} + 80001e8: bf00 nop + 80001ea: 3714 adds r7, #20 + 80001ec: 46bd mov sp, r7 + 80001ee: f85d 7b04 ldr.w r7, [sp], #4 + 80001f2: 4770 bx lr + 80001f4: 40021000 .word 0x40021000 + +080001f8 : + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @arg @ref LL_GPIO_MODE_ANALOG + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) +{ + 80001f8: b480 push {r7} + 80001fa: b08b sub sp, #44 ; 0x2c + 80001fc: af00 add r7, sp, #0 + 80001fe: 60f8 str r0, [r7, #12] + 8000200: 60b9 str r1, [r7, #8] + 8000202: 607a str r2, [r7, #4] + MODIFY_REG(GPIOx->MODER, (GPIO_MODER_MODE0 << (POSITION_VAL(Pin) * 2U)), (Mode << (POSITION_VAL(Pin) * 2U))); + 8000204: 68fb ldr r3, [r7, #12] + 8000206: 681a ldr r2, [r3, #0] + 8000208: 68bb ldr r3, [r7, #8] + 800020a: 617b str r3, [r7, #20] + 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) ); + 800020c: 697b ldr r3, [r7, #20] + 800020e: fa93 f3a3 rbit r3, r3 + 8000212: 613b str r3, [r7, #16] + result |= value & 1U; + s--; + } + result <<= s; /* shift when v's highest bits are zero */ +#endif + return result; + 8000214: 693b ldr r3, [r7, #16] + 8000216: 61bb str r3, [r7, #24] + 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) + 8000218: 69bb ldr r3, [r7, #24] + 800021a: 2b00 cmp r3, #0 + 800021c: d101 bne.n 8000222 + { + return 32U; + 800021e: 2320 movs r3, #32 + 8000220: e003 b.n 800022a + } + return __builtin_clz(value); + 8000222: 69bb ldr r3, [r7, #24] + 8000224: fab3 f383 clz r3, r3 + 8000228: b2db uxtb r3, r3 + 800022a: 005b lsls r3, r3, #1 + 800022c: 2103 movs r1, #3 + 800022e: fa01 f303 lsl.w r3, r1, r3 + 8000232: 43db mvns r3, r3 + 8000234: 401a ands r2, r3 + 8000236: 68bb ldr r3, [r7, #8] + 8000238: 623b str r3, [r7, #32] + __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) ); + 800023a: 6a3b ldr r3, [r7, #32] + 800023c: fa93 f3a3 rbit r3, r3 + 8000240: 61fb str r3, [r7, #28] + return result; + 8000242: 69fb ldr r3, [r7, #28] + 8000244: 627b str r3, [r7, #36] ; 0x24 + if (value == 0U) + 8000246: 6a7b ldr r3, [r7, #36] ; 0x24 + 8000248: 2b00 cmp r3, #0 + 800024a: d101 bne.n 8000250 + return 32U; + 800024c: 2320 movs r3, #32 + 800024e: e003 b.n 8000258 + return __builtin_clz(value); + 8000250: 6a7b ldr r3, [r7, #36] ; 0x24 + 8000252: fab3 f383 clz r3, r3 + 8000256: b2db uxtb r3, r3 + 8000258: 005b lsls r3, r3, #1 + 800025a: 6879 ldr r1, [r7, #4] + 800025c: fa01 f303 lsl.w r3, r1, r3 + 8000260: 431a orrs r2, r3 + 8000262: 68fb ldr r3, [r7, #12] + 8000264: 601a str r2, [r3, #0] +} + 8000266: bf00 nop + 8000268: 372c adds r7, #44 ; 0x2c + 800026a: 46bd mov sp, r7 + 800026c: f85d 7b04 ldr.w r7, [sp], #4 + 8000270: 4770 bx lr + +08000272 : + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t OutputType) +{ + 8000272: b480 push {r7} + 8000274: b085 sub sp, #20 + 8000276: af00 add r7, sp, #0 + 8000278: 60f8 str r0, [r7, #12] + 800027a: 60b9 str r1, [r7, #8] + 800027c: 607a str r2, [r7, #4] + MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType)); + 800027e: 68fb ldr r3, [r7, #12] + 8000280: 685a ldr r2, [r3, #4] + 8000282: 68bb ldr r3, [r7, #8] + 8000284: 43db mvns r3, r3 + 8000286: 401a ands r2, r3 + 8000288: 68bb ldr r3, [r7, #8] + 800028a: 6879 ldr r1, [r7, #4] + 800028c: fb01 f303 mul.w r3, r1, r3 + 8000290: 431a orrs r2, r3 + 8000292: 68fb ldr r3, [r7, #12] + 8000294: 605a str r2, [r3, #4] +} + 8000296: bf00 nop + 8000298: 3714 adds r7, #20 + 800029a: 46bd mov sp, r7 + 800029c: f85d 7b04 ldr.w r7, [sp], #4 + 80002a0: 4770 bx lr + +080002a2 : + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + 80002a2: b480 push {r7} + 80002a4: b083 sub sp, #12 + 80002a6: af00 add r7, sp, #0 + 80002a8: 6078 str r0, [r7, #4] + 80002aa: 6039 str r1, [r7, #0] + return ((READ_BIT(GPIOx->IDR, PinMask) == (PinMask)) ? 1UL : 0UL); + 80002ac: 687b ldr r3, [r7, #4] + 80002ae: 691a ldr r2, [r3, #16] + 80002b0: 683b ldr r3, [r7, #0] + 80002b2: 4013 ands r3, r2 + 80002b4: 683a ldr r2, [r7, #0] + 80002b6: 429a cmp r2, r3 + 80002b8: d101 bne.n 80002be + 80002ba: 2301 movs r3, #1 + 80002bc: e000 b.n 80002c0 + 80002be: 2300 movs r3, #0 +} + 80002c0: 4618 mov r0, r3 + 80002c2: 370c adds r7, #12 + 80002c4: 46bd mov sp, r7 + 80002c6: f85d 7b04 ldr.w r7, [sp], #4 + 80002ca: 4770 bx lr + +080002cc : + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + 80002cc: b480 push {r7} + 80002ce: b083 sub sp, #12 + 80002d0: af00 add r7, sp, #0 + 80002d2: 6078 str r0, [r7, #4] + 80002d4: 6039 str r1, [r7, #0] + WRITE_REG(GPIOx->BSRR, PinMask); + 80002d6: 687b ldr r3, [r7, #4] + 80002d8: 683a ldr r2, [r7, #0] + 80002da: 619a str r2, [r3, #24] +} + 80002dc: bf00 nop + 80002de: 370c adds r7, #12 + 80002e0: 46bd mov sp, r7 + 80002e2: f85d 7b04 ldr.w r7, [sp], #4 + 80002e6: 4770 bx lr + +080002e8 : + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + 80002e8: b480 push {r7} + 80002ea: b083 sub sp, #12 + 80002ec: af00 add r7, sp, #0 + 80002ee: 6078 str r0, [r7, #4] + 80002f0: 6039 str r1, [r7, #0] + WRITE_REG(GPIOx->BRR, PinMask); + 80002f2: 687b ldr r3, [r7, #4] + 80002f4: 683a ldr r2, [r7, #0] + 80002f6: 629a str r2, [r3, #40] ; 0x28 +} + 80002f8: bf00 nop + 80002fa: 370c adds r7, #12 + 80002fc: 46bd mov sp, r7 + 80002fe: f85d 7b04 ldr.w r7, [sp], #4 + 8000302: 4770 bx lr + +08000304 : +#define LED_PIN LL_GPIO_PIN_5 +#define BUT_PORT GPIOC +#define BUT_PIN LL_GPIO_PIN_13 + +void GPIO_init(void) +{ + 8000304: b580 push {r7, lr} + 8000306: af00 add r7, sp, #0 +// PORT A +LL_AHB2_GRP1_EnableClock( LL_AHB2_GRP1_PERIPH_GPIOA ); + 8000308: 2001 movs r0, #1 + 800030a: f7ff ff5d bl 80001c8 +// Green LED (user LED) - PA5 +LL_GPIO_SetPinMode( LED_PORT, LED_PIN, LL_GPIO_MODE_OUTPUT ); + 800030e: 2201 movs r2, #1 + 8000310: 2120 movs r1, #32 + 8000312: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8000316: f7ff ff6f bl 80001f8 +LL_GPIO_SetPinOutputType( LED_PORT, LED_PIN, LL_GPIO_OUTPUT_PUSHPULL ); + 800031a: 2200 movs r2, #0 + 800031c: 2120 movs r1, #32 + 800031e: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8000322: f7ff ffa6 bl 8000272 + +// PORT C +LL_AHB2_GRP1_EnableClock( LL_AHB2_GRP1_PERIPH_GPIOC ); + 8000326: 2004 movs r0, #4 + 8000328: f7ff ff4e bl 80001c8 +// Blue button - PC13 +LL_GPIO_SetPinMode( BUT_PORT, BUT_PIN, LL_GPIO_MODE_INPUT ); + 800032c: 2200 movs r2, #0 + 800032e: f44f 5100 mov.w r1, #8192 ; 0x2000 + 8000332: 4802 ldr r0, [pc, #8] ; (800033c ) + 8000334: f7ff ff60 bl 80001f8 +} + 8000338: bf00 nop + 800033a: bd80 pop {r7, pc} + 800033c: 48000800 .word 0x48000800 + +08000340 : + + +void LED_GREEN( int val ) +{ + 8000340: b580 push {r7, lr} + 8000342: b082 sub sp, #8 + 8000344: af00 add r7, sp, #0 + 8000346: 6078 str r0, [r7, #4] +if ( val ) + 8000348: 687b ldr r3, [r7, #4] + 800034a: 2b00 cmp r3, #0 + 800034c: d005 beq.n 800035a + LL_GPIO_SetOutputPin( LED_PORT, LED_PIN ); + 800034e: 2120 movs r1, #32 + 8000350: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8000354: f7ff ffba bl 80002cc +else LL_GPIO_ResetOutputPin( LED_PORT, LED_PIN ); +} + 8000358: e004 b.n 8000364 +else LL_GPIO_ResetOutputPin( LED_PORT, LED_PIN ); + 800035a: 2120 movs r1, #32 + 800035c: f04f 4090 mov.w r0, #1207959552 ; 0x48000000 + 8000360: f7ff ffc2 bl 80002e8 +} + 8000364: bf00 nop + 8000366: 3708 adds r7, #8 + 8000368: 46bd mov sp, r7 + 800036a: bd80 pop {r7, pc} + +0800036c : + +int BLUE_BUTTON() +{ + 800036c: b580 push {r7, lr} + 800036e: af00 add r7, sp, #0 +return ( !LL_GPIO_IsInputPinSet( BUT_PORT, BUT_PIN ) ); + 8000370: f44f 5100 mov.w r1, #8192 ; 0x2000 + 8000374: 4805 ldr r0, [pc, #20] ; (800038c ) + 8000376: f7ff ff94 bl 80002a2 + 800037a: 4603 mov r3, r0 + 800037c: 2b00 cmp r3, #0 + 800037e: bf0c ite eq + 8000380: 2301 moveq r3, #1 + 8000382: 2300 movne r3, #0 + 8000384: b2db uxtb r3, r3 +} + 8000386: 4618 mov r0, r3 + 8000388: bd80 pop {r7, pc} + 800038a: bf00 nop + 800038c: 48000800 .word 0x48000800 + +08000390 : + * @brief Enable MSI oscillator + * @rmtoll CR MSION LL_RCC_MSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_Enable(void) +{ + 8000390: b480 push {r7} + 8000392: af00 add r7, sp, #0 + SET_BIT(RCC->CR, RCC_CR_MSION); + 8000394: 4b05 ldr r3, [pc, #20] ; (80003ac ) + 8000396: 681b ldr r3, [r3, #0] + 8000398: 4a04 ldr r2, [pc, #16] ; (80003ac ) + 800039a: f043 0301 orr.w r3, r3, #1 + 800039e: 6013 str r3, [r2, #0] +} + 80003a0: bf00 nop + 80003a2: 46bd mov sp, r7 + 80003a4: f85d 7b04 ldr.w r7, [sp], #4 + 80003a8: 4770 bx lr + 80003aa: bf00 nop + 80003ac: 40021000 .word 0x40021000 + +080003b0 : + * @brief Check if MSI oscillator Ready + * @rmtoll CR MSIRDY LL_RCC_MSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_IsReady(void) +{ + 80003b0: b480 push {r7} + 80003b2: af00 add r7, sp, #0 + return ((READ_BIT(RCC->CR, RCC_CR_MSIRDY) == RCC_CR_MSIRDY) ? 1UL : 0UL); + 80003b4: 4b06 ldr r3, [pc, #24] ; (80003d0 ) + 80003b6: 681b ldr r3, [r3, #0] + 80003b8: f003 0302 and.w r3, r3, #2 + 80003bc: 2b02 cmp r3, #2 + 80003be: d101 bne.n 80003c4 + 80003c0: 2301 movs r3, #1 + 80003c2: e000 b.n 80003c6 + 80003c4: 2300 movs r3, #0 +} + 80003c6: 4618 mov r0, r3 + 80003c8: 46bd mov sp, r7 + 80003ca: f85d 7b04 ldr.w r7, [sp], #4 + 80003ce: 4770 bx lr + 80003d0: 40021000 .word 0x40021000 + +080003d4 : + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source) +{ + 80003d4: b480 push {r7} + 80003d6: b083 sub sp, #12 + 80003d8: af00 add r7, sp, #0 + 80003da: 6078 str r0, [r7, #4] + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); + 80003dc: 4b06 ldr r3, [pc, #24] ; (80003f8 ) + 80003de: 689b ldr r3, [r3, #8] + 80003e0: f023 0203 bic.w r2, r3, #3 + 80003e4: 4904 ldr r1, [pc, #16] ; (80003f8 ) + 80003e6: 687b ldr r3, [r7, #4] + 80003e8: 4313 orrs r3, r2 + 80003ea: 608b str r3, [r1, #8] +} + 80003ec: bf00 nop + 80003ee: 370c adds r7, #12 + 80003f0: 46bd mov sp, r7 + 80003f2: f85d 7b04 ldr.w r7, [sp], #4 + 80003f6: 4770 bx lr + 80003f8: 40021000 .word 0x40021000 + +080003fc : + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void) +{ + 80003fc: b480 push {r7} + 80003fe: af00 add r7, sp, #0 + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); + 8000400: 4b04 ldr r3, [pc, #16] ; (8000414 ) + 8000402: 689b ldr r3, [r3, #8] + 8000404: f003 030c and.w r3, r3, #12 +} + 8000408: 4618 mov r0, r3 + 800040a: 46bd mov sp, r7 + 800040c: f85d 7b04 ldr.w r7, [sp], #4 + 8000410: 4770 bx lr + 8000412: bf00 nop + 8000414: 40021000 .word 0x40021000 + +08000418 : + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler) +{ + 8000418: b480 push {r7} + 800041a: b083 sub sp, #12 + 800041c: af00 add r7, sp, #0 + 800041e: 6078 str r0, [r7, #4] + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, Prescaler); + 8000420: 4b06 ldr r3, [pc, #24] ; (800043c ) + 8000422: 689b ldr r3, [r3, #8] + 8000424: f023 02f0 bic.w r2, r3, #240 ; 0xf0 + 8000428: 4904 ldr r1, [pc, #16] ; (800043c ) + 800042a: 687b ldr r3, [r7, #4] + 800042c: 4313 orrs r3, r2 + 800042e: 608b str r3, [r1, #8] +} + 8000430: bf00 nop + 8000432: 370c adds r7, #12 + 8000434: 46bd mov sp, r7 + 8000436: f85d 7b04 ldr.w r7, [sp], #4 + 800043a: 4770 bx lr + 800043c: 40021000 .word 0x40021000 + +08000440 : + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler) +{ + 8000440: b480 push {r7} + 8000442: b083 sub sp, #12 + 8000444: af00 add r7, sp, #0 + 8000446: 6078 str r0, [r7, #4] + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, Prescaler); + 8000448: 4b06 ldr r3, [pc, #24] ; (8000464 ) + 800044a: 689b ldr r3, [r3, #8] + 800044c: f423 62e0 bic.w r2, r3, #1792 ; 0x700 + 8000450: 4904 ldr r1, [pc, #16] ; (8000464 ) + 8000452: 687b ldr r3, [r7, #4] + 8000454: 4313 orrs r3, r2 + 8000456: 608b str r3, [r1, #8] +} + 8000458: bf00 nop + 800045a: 370c adds r7, #12 + 800045c: 46bd mov sp, r7 + 800045e: f85d 7b04 ldr.w r7, [sp], #4 + 8000462: 4770 bx lr + 8000464: 40021000 .word 0x40021000 + +08000468 : + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler) +{ + 8000468: b480 push {r7} + 800046a: b083 sub sp, #12 + 800046c: af00 add r7, sp, #0 + 800046e: 6078 str r0, [r7, #4] + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, Prescaler); + 8000470: 4b06 ldr r3, [pc, #24] ; (800048c ) + 8000472: 689b ldr r3, [r3, #8] + 8000474: f423 5260 bic.w r2, r3, #14336 ; 0x3800 + 8000478: 4904 ldr r1, [pc, #16] ; (800048c ) + 800047a: 687b ldr r3, [r7, #4] + 800047c: 4313 orrs r3, r2 + 800047e: 608b str r3, [r1, #8] +} + 8000480: bf00 nop + 8000482: 370c adds r7, #12 + 8000484: 46bd mov sp, r7 + 8000486: f85d 7b04 ldr.w r7, [sp], #4 + 800048a: 4770 bx lr + 800048c: 40021000 .word 0x40021000 + +08000490 : + * @brief Enable PLL + * @rmtoll CR PLLON LL_RCC_PLL_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Enable(void) +{ + 8000490: b480 push {r7} + 8000492: af00 add r7, sp, #0 + SET_BIT(RCC->CR, RCC_CR_PLLON); + 8000494: 4b05 ldr r3, [pc, #20] ; (80004ac ) + 8000496: 681b ldr r3, [r3, #0] + 8000498: 4a04 ldr r2, [pc, #16] ; (80004ac ) + 800049a: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 800049e: 6013 str r3, [r2, #0] +} + 80004a0: bf00 nop + 80004a2: 46bd mov sp, r7 + 80004a4: f85d 7b04 ldr.w r7, [sp], #4 + 80004a8: 4770 bx lr + 80004aa: bf00 nop + 80004ac: 40021000 .word 0x40021000 + +080004b0 : + * @brief Check if PLL Ready + * @rmtoll CR PLLRDY LL_RCC_PLL_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void) +{ + 80004b0: b480 push {r7} + 80004b2: af00 add r7, sp, #0 + return ((READ_BIT(RCC->CR, RCC_CR_PLLRDY) == RCC_CR_PLLRDY) ? 1UL : 0UL); + 80004b4: 4b07 ldr r3, [pc, #28] ; (80004d4 ) + 80004b6: 681b ldr r3, [r3, #0] + 80004b8: f003 7300 and.w r3, r3, #33554432 ; 0x2000000 + 80004bc: f1b3 7f00 cmp.w r3, #33554432 ; 0x2000000 + 80004c0: d101 bne.n 80004c6 + 80004c2: 2301 movs r3, #1 + 80004c4: e000 b.n 80004c8 + 80004c6: 2300 movs r3, #0 +} + 80004c8: 4618 mov r0, r3 + 80004ca: 46bd mov sp, r7 + 80004cc: f85d 7b04 ldr.w r7, [sp], #4 + 80004d0: 4770 bx lr + 80004d2: bf00 nop + 80004d4: 40021000 .word 0x40021000 + +080004d8 : + * @arg @ref LL_RCC_PLLR_DIV_6 + * @arg @ref LL_RCC_PLLR_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SYS(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLR) +{ + 80004d8: b480 push {r7} + 80004da: b085 sub sp, #20 + 80004dc: af00 add r7, sp, #0 + 80004de: 60f8 str r0, [r7, #12] + 80004e0: 60b9 str r1, [r7, #8] + 80004e2: 607a str r2, [r7, #4] + 80004e4: 603b str r3, [r7, #0] + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLR, + 80004e6: 4b0a ldr r3, [pc, #40] ; (8000510 ) + 80004e8: 68da ldr r2, [r3, #12] + 80004ea: 4b0a ldr r3, [pc, #40] ; (8000514 ) + 80004ec: 4013 ands r3, r2 + 80004ee: 68f9 ldr r1, [r7, #12] + 80004f0: 68ba ldr r2, [r7, #8] + 80004f2: 4311 orrs r1, r2 + 80004f4: 687a ldr r2, [r7, #4] + 80004f6: 0212 lsls r2, r2, #8 + 80004f8: 4311 orrs r1, r2 + 80004fa: 683a ldr r2, [r7, #0] + 80004fc: 430a orrs r2, r1 + 80004fe: 4904 ldr r1, [pc, #16] ; (8000510 ) + 8000500: 4313 orrs r3, r2 + 8000502: 60cb str r3, [r1, #12] + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLR); +} + 8000504: bf00 nop + 8000506: 3714 adds r7, #20 + 8000508: 46bd mov sp, r7 + 800050a: f85d 7b04 ldr.w r7, [sp], #4 + 800050e: 4770 bx lr + 8000510: 40021000 .word 0x40021000 + 8000514: f9ff808c .word 0xf9ff808c + +08000518 : + * @brief Enable PLL output mapped on SYSCLK domain + * @rmtoll PLLCFGR PLLREN LL_RCC_PLL_EnableDomain_SYS + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_SYS(void) +{ + 8000518: b480 push {r7} + 800051a: af00 add r7, sp, #0 + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLREN); + 800051c: 4b05 ldr r3, [pc, #20] ; (8000534 ) + 800051e: 68db ldr r3, [r3, #12] + 8000520: 4a04 ldr r2, [pc, #16] ; (8000534 ) + 8000522: f043 7380 orr.w r3, r3, #16777216 ; 0x1000000 + 8000526: 60d3 str r3, [r2, #12] +} + 8000528: bf00 nop + 800052a: 46bd mov sp, r7 + 800052c: f85d 7b04 ldr.w r7, [sp], #4 + 8000530: 4770 bx lr + 8000532: bf00 nop + 8000534: 40021000 .word 0x40021000 + +08000538 : + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency) +{ + 8000538: b480 push {r7} + 800053a: b083 sub sp, #12 + 800053c: af00 add r7, sp, #0 + 800053e: 6078 str r0, [r7, #4] + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency); + 8000540: 4b06 ldr r3, [pc, #24] ; (800055c ) + 8000542: 681b ldr r3, [r3, #0] + 8000544: f023 0207 bic.w r2, r3, #7 + 8000548: 4904 ldr r1, [pc, #16] ; (800055c ) + 800054a: 687b ldr r3, [r7, #4] + 800054c: 4313 orrs r3, r2 + 800054e: 600b str r3, [r1, #0] +} + 8000550: bf00 nop + 8000552: 370c adds r7, #12 + 8000554: 46bd mov sp, r7 + 8000556: f85d 7b04 ldr.w r7, [sp], #4 + 800055a: 4770 bx lr + 800055c: 40022000 .word 0x40022000 + +08000560

: +//} + +void SystemClock_Config(void); + +int main(void) +{ + 8000560: b580 push {r7, lr} + 8000562: af00 add r7, sp, #0 +/* Configure the system clock */ +SystemClock_Config(); + 8000564: f000 f820 bl 80005a8 + +// config GPIO +GPIO_init(); + 8000568: f7ff fecc bl 8000304 + +// init systick timer (tick period at 1 ms) +LL_Init1msTick( SystemCoreClock ); + 800056c: 4b0d ldr r3, [pc, #52] ; (80005a4 ) + 800056e: 681b ldr r3, [r3, #0] + 8000570: 4618 mov r0, r3 + 8000572: f000 f9af bl 80008d4 + +while (1) { + if ( BLUE_BUTTON() ) + 8000576: f7ff fef9 bl 800036c + 800057a: 4603 mov r3, r0 + 800057c: 2b00 cmp r3, #0 + 800057e: d003 beq.n 8000588 + LED_GREEN(1); + 8000580: 2001 movs r0, #1 + 8000582: f7ff fedd bl 8000340 + 8000586: e7f6 b.n 8000576 + else { + LED_GREEN(0); + 8000588: 2000 movs r0, #0 + 800058a: f7ff fed9 bl 8000340 + LL_mDelay(950); + 800058e: f240 30b6 movw r0, #950 ; 0x3b6 + 8000592: f000 f9ad bl 80008f0 + LED_GREEN(1); + 8000596: 2001 movs r0, #1 + 8000598: f7ff fed2 bl 8000340 + LL_mDelay(50); + 800059c: 2032 movs r0, #50 ; 0x32 + 800059e: f000 f9a7 bl 80008f0 + if ( BLUE_BUTTON() ) + 80005a2: e7e8 b.n 8000576 + 80005a4: 20000000 .word 0x20000000 + +080005a8 : + * PLL_R = 2 + * Flash Latency(WS) = 4 + * @param None + * @retval None + */ +void SystemClock_Config(void) { + 80005a8: b580 push {r7, lr} + 80005aa: af00 add r7, sp, #0 +/* MSI configuration and activation */ +LL_FLASH_SetLatency(LL_FLASH_LATENCY_4); + 80005ac: 2004 movs r0, #4 + 80005ae: f7ff ffc3 bl 8000538 +LL_RCC_MSI_Enable(); + 80005b2: f7ff feed bl 8000390 +while (LL_RCC_MSI_IsReady() != 1) + 80005b6: bf00 nop + 80005b8: f7ff fefa bl 80003b0 + 80005bc: 4603 mov r3, r0 + 80005be: 2b01 cmp r3, #1 + 80005c0: d1fa bne.n 80005b8 + { }; + +/* Main PLL configuration and activation */ +LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_MSI, LL_RCC_PLLM_DIV_1, 40, LL_RCC_PLLR_DIV_2); + 80005c2: 2300 movs r3, #0 + 80005c4: 2228 movs r2, #40 ; 0x28 + 80005c6: 2100 movs r1, #0 + 80005c8: 2001 movs r0, #1 + 80005ca: f7ff ff85 bl 80004d8 +LL_RCC_PLL_Enable(); + 80005ce: f7ff ff5f bl 8000490 +LL_RCC_PLL_EnableDomain_SYS(); + 80005d2: f7ff ffa1 bl 8000518 +while(LL_RCC_PLL_IsReady() != 1) + 80005d6: bf00 nop + 80005d8: f7ff ff6a bl 80004b0 + 80005dc: 4603 mov r3, r0 + 80005de: 2b01 cmp r3, #1 + 80005e0: d1fa bne.n 80005d8 + { }; + +/* Sysclk activation on the main PLL */ +LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1); + 80005e2: 2000 movs r0, #0 + 80005e4: f7ff ff18 bl 8000418 +LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); + 80005e8: 2003 movs r0, #3 + 80005ea: f7ff fef3 bl 80003d4 +while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + 80005ee: bf00 nop + 80005f0: f7ff ff04 bl 80003fc + 80005f4: 4603 mov r3, r0 + 80005f6: 2b0c cmp r3, #12 + 80005f8: d1fa bne.n 80005f0 + { }; + +/* Set APB1 & APB2 prescaler*/ +LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_1); + 80005fa: 2000 movs r0, #0 + 80005fc: f7ff ff20 bl 8000440 +LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_1); + 8000600: 2000 movs r0, #0 + 8000602: f7ff ff31 bl 8000468 + +/* Update the global variable called SystemCoreClock */ +SystemCoreClockUpdate(); + 8000606: f000 f867 bl 80006d8 +} + 800060a: bf00 nop + 800060c: bd80 pop {r7, pc} + +0800060e : +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + 800060e: b480 push {r7} + 8000610: af00 add r7, sp, #0 + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + 8000612: bf00 nop + 8000614: 46bd mov sp, r7 + 8000616: f85d 7b04 ldr.w r7, [sp], #4 + 800061a: 4770 bx lr + +0800061c : + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + 800061c: b480 push {r7} + 800061e: af00 add r7, sp, #0 + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + 8000620: e7fe b.n 8000620 + +08000622 : + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + 8000622: b480 push {r7} + 8000624: af00 add r7, sp, #0 + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + 8000626: e7fe b.n 8000626 + +08000628 : + +/** + * @brief This function handles Prefetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + 8000628: b480 push {r7} + 800062a: af00 add r7, sp, #0 + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + 800062c: e7fe b.n 800062c + +0800062e : + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + 800062e: b480 push {r7} + 8000630: af00 add r7, sp, #0 + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + 8000632: e7fe b.n 8000632 + +08000634 : + +/** + * @brief This function handles System service call via SWI instruction. + */ +void SVC_Handler(void) +{ + 8000634: b480 push {r7} + 8000636: af00 add r7, sp, #0 + + /* USER CODE END SVCall_IRQn 0 */ + /* USER CODE BEGIN SVCall_IRQn 1 */ + + /* USER CODE END SVCall_IRQn 1 */ +} + 8000638: bf00 nop + 800063a: 46bd mov sp, r7 + 800063c: f85d 7b04 ldr.w r7, [sp], #4 + 8000640: 4770 bx lr + +08000642 : + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + 8000642: b480 push {r7} + 8000644: af00 add r7, sp, #0 + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + 8000646: bf00 nop + 8000648: 46bd mov sp, r7 + 800064a: f85d 7b04 ldr.w r7, [sp], #4 + 800064e: 4770 bx lr + +08000650 : + +/** + * @brief This function handles Pendable request for system service. + */ +void PendSV_Handler(void) +{ + 8000650: b480 push {r7} + 8000652: af00 add r7, sp, #0 + + /* USER CODE END PendSV_IRQn 0 */ + /* USER CODE BEGIN PendSV_IRQn 1 */ + + /* USER CODE END PendSV_IRQn 1 */ +} + 8000654: bf00 nop + 8000656: 46bd mov sp, r7 + 8000658: f85d 7b04 ldr.w r7, [sp], #4 + 800065c: 4770 bx lr + +0800065e : + +/** + * @brief This function handles System tick timer. + */ +void SysTick_Handler(void) +{ + 800065e: b480 push {r7} + 8000660: af00 add r7, sp, #0 + /* USER CODE END SysTick_IRQn 0 */ + + /* USER CODE BEGIN SysTick_IRQn 1 */ + + /* USER CODE END SysTick_IRQn 1 */ +} + 8000662: bf00 nop + 8000664: 46bd mov sp, r7 + 8000666: f85d 7b04 ldr.w r7, [sp], #4 + 800066a: 4770 bx lr + +0800066c : + * @param None + * @retval None + */ + +void SystemInit(void) +{ + 800066c: b480 push {r7} + 800066e: af00 add r7, sp, #0 + /* FPU settings ------------------------------------------------------------*/ + #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) + SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ + 8000670: 4b17 ldr r3, [pc, #92] ; (80006d0 ) + 8000672: f8d3 3088 ldr.w r3, [r3, #136] ; 0x88 + 8000676: 4a16 ldr r2, [pc, #88] ; (80006d0 ) + 8000678: f443 0370 orr.w r3, r3, #15728640 ; 0xf00000 + 800067c: f8c2 3088 str.w r3, [r2, #136] ; 0x88 + #endif + + /* Reset the RCC clock configuration to the default reset state ------------*/ + /* Set MSION bit */ + RCC->CR |= RCC_CR_MSION; + 8000680: 4b14 ldr r3, [pc, #80] ; (80006d4 ) + 8000682: 681b ldr r3, [r3, #0] + 8000684: 4a13 ldr r2, [pc, #76] ; (80006d4 ) + 8000686: f043 0301 orr.w r3, r3, #1 + 800068a: 6013 str r3, [r2, #0] + + /* Reset CFGR register */ + RCC->CFGR = 0x00000000U; + 800068c: 4b11 ldr r3, [pc, #68] ; (80006d4 ) + 800068e: 2200 movs r2, #0 + 8000690: 609a str r2, [r3, #8] + + /* Reset HSEON, CSSON , HSION, and PLLON bits */ + RCC->CR &= 0xEAF6FFFFU; + 8000692: 4b10 ldr r3, [pc, #64] ; (80006d4 ) + 8000694: 681b ldr r3, [r3, #0] + 8000696: 4a0f ldr r2, [pc, #60] ; (80006d4 ) + 8000698: f023 53a8 bic.w r3, r3, #352321536 ; 0x15000000 + 800069c: f423 2310 bic.w r3, r3, #589824 ; 0x90000 + 80006a0: 6013 str r3, [r2, #0] + + /* Reset PLLCFGR register */ + RCC->PLLCFGR = 0x00001000U; + 80006a2: 4b0c ldr r3, [pc, #48] ; (80006d4 ) + 80006a4: f44f 5280 mov.w r2, #4096 ; 0x1000 + 80006a8: 60da str r2, [r3, #12] + + /* Reset HSEBYP bit */ + RCC->CR &= 0xFFFBFFFFU; + 80006aa: 4b0a ldr r3, [pc, #40] ; (80006d4 ) + 80006ac: 681b ldr r3, [r3, #0] + 80006ae: 4a09 ldr r2, [pc, #36] ; (80006d4 ) + 80006b0: f423 2380 bic.w r3, r3, #262144 ; 0x40000 + 80006b4: 6013 str r3, [r2, #0] + + /* Disable all interrupts */ + RCC->CIER = 0x00000000U; + 80006b6: 4b07 ldr r3, [pc, #28] ; (80006d4 ) + 80006b8: 2200 movs r2, #0 + 80006ba: 619a str r2, [r3, #24] + + /* Configure the Vector Table location add offset address ------------------*/ +#ifdef VECT_TAB_SRAM + SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ +#else + SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */ + 80006bc: 4b04 ldr r3, [pc, #16] ; (80006d0 ) + 80006be: f04f 6200 mov.w r2, #134217728 ; 0x8000000 + 80006c2: 609a str r2, [r3, #8] +#endif +} + 80006c4: bf00 nop + 80006c6: 46bd mov sp, r7 + 80006c8: f85d 7b04 ldr.w r7, [sp], #4 + 80006cc: 4770 bx lr + 80006ce: bf00 nop + 80006d0: e000ed00 .word 0xe000ed00 + 80006d4: 40021000 .word 0x40021000 + +080006d8 : + * + * @param None + * @retval None + */ +void SystemCoreClockUpdate(void) +{ + 80006d8: b480 push {r7} + 80006da: b087 sub sp, #28 + 80006dc: af00 add r7, sp, #0 + uint32_t tmp = 0U, msirange = 0U, pllvco = 0U, pllr = 2U, pllsource = 0U, pllm = 2U; + 80006de: 2300 movs r3, #0 + 80006e0: 60fb str r3, [r7, #12] + 80006e2: 2300 movs r3, #0 + 80006e4: 617b str r3, [r7, #20] + 80006e6: 2300 movs r3, #0 + 80006e8: 613b str r3, [r7, #16] + 80006ea: 2302 movs r3, #2 + 80006ec: 60bb str r3, [r7, #8] + 80006ee: 2300 movs r3, #0 + 80006f0: 607b str r3, [r7, #4] + 80006f2: 2302 movs r3, #2 + 80006f4: 603b str r3, [r7, #0] + + /* Get MSI Range frequency--------------------------------------------------*/ + if((RCC->CR & RCC_CR_MSIRGSEL) == RESET) + 80006f6: 4b4f ldr r3, [pc, #316] ; (8000834 ) + 80006f8: 681b ldr r3, [r3, #0] + 80006fa: f003 0308 and.w r3, r3, #8 + 80006fe: 2b00 cmp r3, #0 + 8000700: d107 bne.n 8000712 + { /* MSISRANGE from RCC_CSR applies */ + msirange = (RCC->CSR & RCC_CSR_MSISRANGE) >> 8U; + 8000702: 4b4c ldr r3, [pc, #304] ; (8000834 ) + 8000704: f8d3 3094 ldr.w r3, [r3, #148] ; 0x94 + 8000708: 0a1b lsrs r3, r3, #8 + 800070a: f003 030f and.w r3, r3, #15 + 800070e: 617b str r3, [r7, #20] + 8000710: e005 b.n 800071e + } + else + { /* MSIRANGE from RCC_CR applies */ + msirange = (RCC->CR & RCC_CR_MSIRANGE) >> 4U; + 8000712: 4b48 ldr r3, [pc, #288] ; (8000834 ) + 8000714: 681b ldr r3, [r3, #0] + 8000716: 091b lsrs r3, r3, #4 + 8000718: f003 030f and.w r3, r3, #15 + 800071c: 617b str r3, [r7, #20] + } + /*MSI frequency range in HZ*/ + msirange = MSIRangeTable[msirange]; + 800071e: 4a46 ldr r2, [pc, #280] ; (8000838 ) + 8000720: 697b ldr r3, [r7, #20] + 8000722: f852 3023 ldr.w r3, [r2, r3, lsl #2] + 8000726: 617b str r3, [r7, #20] + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (RCC->CFGR & RCC_CFGR_SWS) + 8000728: 4b42 ldr r3, [pc, #264] ; (8000834 ) + 800072a: 689b ldr r3, [r3, #8] + 800072c: f003 030c and.w r3, r3, #12 + 8000730: 2b0c cmp r3, #12 + 8000732: d865 bhi.n 8000800 + 8000734: a201 add r2, pc, #4 ; (adr r2, 800073c ) + 8000736: f852 f023 ldr.w pc, [r2, r3, lsl #2] + 800073a: bf00 nop + 800073c: 08000771 .word 0x08000771 + 8000740: 08000801 .word 0x08000801 + 8000744: 08000801 .word 0x08000801 + 8000748: 08000801 .word 0x08000801 + 800074c: 08000779 .word 0x08000779 + 8000750: 08000801 .word 0x08000801 + 8000754: 08000801 .word 0x08000801 + 8000758: 08000801 .word 0x08000801 + 800075c: 08000781 .word 0x08000781 + 8000760: 08000801 .word 0x08000801 + 8000764: 08000801 .word 0x08000801 + 8000768: 08000801 .word 0x08000801 + 800076c: 08000789 .word 0x08000789 + { + case 0x00: /* MSI used as system clock source */ + SystemCoreClock = msirange; + 8000770: 4a32 ldr r2, [pc, #200] ; (800083c ) + 8000772: 697b ldr r3, [r7, #20] + 8000774: 6013 str r3, [r2, #0] + break; + 8000776: e047 b.n 8000808 + + case 0x04: /* HSI used as system clock source */ + SystemCoreClock = HSI_VALUE; + 8000778: 4b30 ldr r3, [pc, #192] ; (800083c ) + 800077a: 4a31 ldr r2, [pc, #196] ; (8000840 ) + 800077c: 601a str r2, [r3, #0] + break; + 800077e: e043 b.n 8000808 + + case 0x08: /* HSE used as system clock source */ + SystemCoreClock = HSE_VALUE; + 8000780: 4b2e ldr r3, [pc, #184] ; (800083c ) + 8000782: 4a30 ldr r2, [pc, #192] ; (8000844 ) + 8000784: 601a str r2, [r3, #0] + break; + 8000786: e03f b.n 8000808 + + case 0x0C: /* PLL used as system clock source */ + /* PLL_VCO = (HSE_VALUE or HSI_VALUE or MSI_VALUE/ PLLM) * PLLN + SYSCLK = PLL_VCO / PLLR + */ + pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC); + 8000788: 4b2a ldr r3, [pc, #168] ; (8000834 ) + 800078a: 68db ldr r3, [r3, #12] + 800078c: f003 0303 and.w r3, r3, #3 + 8000790: 607b str r3, [r7, #4] + pllm = ((RCC->PLLCFGR & RCC_PLLCFGR_PLLM) >> 4U) + 1U ; + 8000792: 4b28 ldr r3, [pc, #160] ; (8000834 ) + 8000794: 68db ldr r3, [r3, #12] + 8000796: 091b lsrs r3, r3, #4 + 8000798: f003 0307 and.w r3, r3, #7 + 800079c: 3301 adds r3, #1 + 800079e: 603b str r3, [r7, #0] + + switch (pllsource) + 80007a0: 687b ldr r3, [r7, #4] + 80007a2: 2b02 cmp r3, #2 + 80007a4: d002 beq.n 80007ac + 80007a6: 2b03 cmp r3, #3 + 80007a8: d006 beq.n 80007b8 + 80007aa: e00b b.n 80007c4 + { + case 0x02: /* HSI used as PLL clock source */ + pllvco = (HSI_VALUE / pllm); + 80007ac: 4a24 ldr r2, [pc, #144] ; (8000840 ) + 80007ae: 683b ldr r3, [r7, #0] + 80007b0: fbb2 f3f3 udiv r3, r2, r3 + 80007b4: 613b str r3, [r7, #16] + break; + 80007b6: e00b b.n 80007d0 + + case 0x03: /* HSE used as PLL clock source */ + pllvco = (HSE_VALUE / pllm); + 80007b8: 4a22 ldr r2, [pc, #136] ; (8000844 ) + 80007ba: 683b ldr r3, [r7, #0] + 80007bc: fbb2 f3f3 udiv r3, r2, r3 + 80007c0: 613b str r3, [r7, #16] + break; + 80007c2: e005 b.n 80007d0 + + default: /* MSI used as PLL clock source */ + pllvco = (msirange / pllm); + 80007c4: 697a ldr r2, [r7, #20] + 80007c6: 683b ldr r3, [r7, #0] + 80007c8: fbb2 f3f3 udiv r3, r2, r3 + 80007cc: 613b str r3, [r7, #16] + break; + 80007ce: bf00 nop + } + pllvco = pllvco * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 8U); + 80007d0: 4b18 ldr r3, [pc, #96] ; (8000834 ) + 80007d2: 68db ldr r3, [r3, #12] + 80007d4: 0a1b lsrs r3, r3, #8 + 80007d6: f003 027f and.w r2, r3, #127 ; 0x7f + 80007da: 693b ldr r3, [r7, #16] + 80007dc: fb02 f303 mul.w r3, r2, r3 + 80007e0: 613b str r3, [r7, #16] + pllr = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLR) >> 25U) + 1U) * 2U; + 80007e2: 4b14 ldr r3, [pc, #80] ; (8000834 ) + 80007e4: 68db ldr r3, [r3, #12] + 80007e6: 0e5b lsrs r3, r3, #25 + 80007e8: f003 0303 and.w r3, r3, #3 + 80007ec: 3301 adds r3, #1 + 80007ee: 005b lsls r3, r3, #1 + 80007f0: 60bb str r3, [r7, #8] + SystemCoreClock = pllvco/pllr; + 80007f2: 693a ldr r2, [r7, #16] + 80007f4: 68bb ldr r3, [r7, #8] + 80007f6: fbb2 f3f3 udiv r3, r2, r3 + 80007fa: 4a10 ldr r2, [pc, #64] ; (800083c ) + 80007fc: 6013 str r3, [r2, #0] + break; + 80007fe: e003 b.n 8000808 + + default: + SystemCoreClock = msirange; + 8000800: 4a0e ldr r2, [pc, #56] ; (800083c ) + 8000802: 697b ldr r3, [r7, #20] + 8000804: 6013 str r3, [r2, #0] + break; + 8000806: bf00 nop + } + /* Compute HCLK clock frequency --------------------------------------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; + 8000808: 4b0a ldr r3, [pc, #40] ; (8000834 ) + 800080a: 689b ldr r3, [r3, #8] + 800080c: 091b lsrs r3, r3, #4 + 800080e: f003 030f and.w r3, r3, #15 + 8000812: 4a0d ldr r2, [pc, #52] ; (8000848 ) + 8000814: 5cd3 ldrb r3, [r2, r3] + 8000816: 60fb str r3, [r7, #12] + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; + 8000818: 4b08 ldr r3, [pc, #32] ; (800083c ) + 800081a: 681a ldr r2, [r3, #0] + 800081c: 68fb ldr r3, [r7, #12] + 800081e: fa22 f303 lsr.w r3, r2, r3 + 8000822: 4a06 ldr r2, [pc, #24] ; (800083c ) + 8000824: 6013 str r3, [r2, #0] +} + 8000826: bf00 nop + 8000828: 371c adds r7, #28 + 800082a: 46bd mov sp, r7 + 800082c: f85d 7b04 ldr.w r7, [sp], #4 + 8000830: 4770 bx lr + 8000832: bf00 nop + 8000834: 40021000 .word 0x40021000 + 8000838: 080009ac .word 0x080009ac + 800083c: 20000000 .word 0x20000000 + 8000840: 00f42400 .word 0x00f42400 + 8000844: 007a1200 .word 0x007a1200 + 8000848: 0800099c .word 0x0800099c + +0800084c : + + .section .text.Reset_Handler + .weak Reset_Handler + .type Reset_Handler, %function +Reset_Handler: + ldr sp, =_estack /* Set stack pointer */ + 800084c: f8df d034 ldr.w sp, [pc, #52] ; 8000884 + +/* Call the clock system initialization function.*/ + bl SystemInit + 8000850: f7ff ff0c bl 800066c + +/* Copy the data segment initializers from flash to SRAM */ + movs r1, #0 + 8000854: 2100 movs r1, #0 + b LoopCopyDataInit + 8000856: e003 b.n 8000860 + +08000858 : + +CopyDataInit: + ldr r3, =_sidata + 8000858: 4b0b ldr r3, [pc, #44] ; (8000888 ) + ldr r3, [r3, r1] + 800085a: 585b ldr r3, [r3, r1] + str r3, [r0, r1] + 800085c: 5043 str r3, [r0, r1] + adds r1, r1, #4 + 800085e: 3104 adds r1, #4 + +08000860 : + +LoopCopyDataInit: + ldr r0, =_sdata + 8000860: 480a ldr r0, [pc, #40] ; (800088c ) + ldr r3, =_edata + 8000862: 4b0b ldr r3, [pc, #44] ; (8000890 ) + adds r2, r0, r1 + 8000864: 1842 adds r2, r0, r1 + cmp r2, r3 + 8000866: 429a cmp r2, r3 + bcc CopyDataInit + 8000868: d3f6 bcc.n 8000858 + ldr r2, =_sbss + 800086a: 4a0a ldr r2, [pc, #40] ; (8000894 ) + b LoopFillZerobss + 800086c: e002 b.n 8000874 + +0800086e : +/* Zero fill the bss segment. */ +FillZerobss: + movs r3, #0 + 800086e: 2300 movs r3, #0 + str r3, [r2], #4 + 8000870: f842 3b04 str.w r3, [r2], #4 + +08000874 : + +LoopFillZerobss: + ldr r3, = _ebss + 8000874: 4b08 ldr r3, [pc, #32] ; (8000898 ) + cmp r2, r3 + 8000876: 429a cmp r2, r3 + bcc FillZerobss + 8000878: d3f9 bcc.n 800086e + +/* Call static constructors */ + bl __libc_init_array + 800087a: f000 f85f bl 800093c <__libc_init_array> +/* Call the application's entry point.*/ + bl main + 800087e: f7ff fe6f bl 8000560
+ +08000882 : + +LoopForever: + b LoopForever + 8000882: e7fe b.n 8000882 + ldr sp, =_estack /* Set stack pointer */ + 8000884: 20018000 .word 0x20018000 + ldr r3, =_sidata + 8000888: 080009e4 .word 0x080009e4 + ldr r0, =_sdata + 800088c: 20000000 .word 0x20000000 + ldr r3, =_edata + 8000890: 20000004 .word 0x20000004 + ldr r2, =_sbss + 8000894: 20000004 .word 0x20000004 + ldr r3, = _ebss + 8000898: 20000020 .word 0x20000020 + +0800089c : + * @retval : None +*/ + .section .text.Default_Handler,"ax",%progbits +Default_Handler: +Infinite_Loop: + b Infinite_Loop + 800089c: e7fe b.n 800089c + ... + +080008a0 : + * configuration by calling this function, for a delay use rather osDelay RTOS service. + * @param Ticks Number of ticks + * @retval None + */ +__STATIC_INLINE void LL_InitTick(uint32_t HCLKFrequency, uint32_t Ticks) +{ + 80008a0: b480 push {r7} + 80008a2: b083 sub sp, #12 + 80008a4: af00 add r7, sp, #0 + 80008a6: 6078 str r0, [r7, #4] + 80008a8: 6039 str r1, [r7, #0] + /* Configure the SysTick to have interrupt in 1ms time base */ + SysTick->LOAD = (uint32_t)((HCLKFrequency / Ticks) - 1UL); /* set reload register */ + 80008aa: 687a ldr r2, [r7, #4] + 80008ac: 683b ldr r3, [r7, #0] + 80008ae: fbb2 f3f3 udiv r3, r2, r3 + 80008b2: 4a07 ldr r2, [pc, #28] ; (80008d0 ) + 80008b4: 3b01 subs r3, #1 + 80008b6: 6053 str r3, [r2, #4] + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + 80008b8: 4b05 ldr r3, [pc, #20] ; (80008d0 ) + 80008ba: 2200 movs r2, #0 + 80008bc: 609a str r2, [r3, #8] + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + 80008be: 4b04 ldr r3, [pc, #16] ; (80008d0 ) + 80008c0: 2205 movs r2, #5 + 80008c2: 601a str r2, [r3, #0] + SysTick_CTRL_ENABLE_Msk; /* Enable the Systick Timer */ +} + 80008c4: bf00 nop + 80008c6: 370c adds r7, #12 + 80008c8: 46bd mov sp, r7 + 80008ca: f85d 7b04 ldr.w r7, [sp], #4 + 80008ce: 4770 bx lr + 80008d0: e000e010 .word 0xe000e010 + +080008d4 : + * @param HCLKFrequency HCLK frequency in Hz + * @note HCLK frequency can be calculated thanks to RCC helper macro or function @ref LL_RCC_GetSystemClocksFreq + * @retval None + */ +void LL_Init1msTick(uint32_t HCLKFrequency) +{ + 80008d4: b580 push {r7, lr} + 80008d6: b082 sub sp, #8 + 80008d8: af00 add r7, sp, #0 + 80008da: 6078 str r0, [r7, #4] + /* Use frequency provided in argument */ + LL_InitTick(HCLKFrequency, 1000U); + 80008dc: f44f 717a mov.w r1, #1000 ; 0x3e8 + 80008e0: 6878 ldr r0, [r7, #4] + 80008e2: f7ff ffdd bl 80008a0 +} + 80008e6: bf00 nop + 80008e8: 3708 adds r7, #8 + 80008ea: 46bd mov sp, r7 + 80008ec: bd80 pop {r7, pc} + ... + +080008f0 : + * will configure Systick to 1ms + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +void LL_mDelay(uint32_t Delay) +{ + 80008f0: b480 push {r7} + 80008f2: b085 sub sp, #20 + 80008f4: af00 add r7, sp, #0 + 80008f6: 6078 str r0, [r7, #4] + __IO uint32_t tmp = SysTick->CTRL; /* Clear the COUNTFLAG first */ + 80008f8: 4b0f ldr r3, [pc, #60] ; (8000938 ) + 80008fa: 681b ldr r3, [r3, #0] + 80008fc: 60bb str r3, [r7, #8] + uint32_t tmpDelay = Delay; + 80008fe: 687b ldr r3, [r7, #4] + 8000900: 60fb str r3, [r7, #12] + + /* Add this code to indicate that local variable is not used */ + ((void)tmp); + 8000902: 68bb ldr r3, [r7, #8] + + /* Add a period to guaranty minimum wait */ + if(tmpDelay < LL_MAX_DELAY) + 8000904: 68fb ldr r3, [r7, #12] + 8000906: f1b3 3fff cmp.w r3, #4294967295 + 800090a: d00c beq.n 8000926 + { + tmpDelay++; + 800090c: 68fb ldr r3, [r7, #12] + 800090e: 3301 adds r3, #1 + 8000910: 60fb str r3, [r7, #12] + } + + while (tmpDelay != 0U) + 8000912: e008 b.n 8000926 + { + if((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0U) + 8000914: 4b08 ldr r3, [pc, #32] ; (8000938 ) + 8000916: 681b ldr r3, [r3, #0] + 8000918: f403 3380 and.w r3, r3, #65536 ; 0x10000 + 800091c: 2b00 cmp r3, #0 + 800091e: d002 beq.n 8000926 + { + tmpDelay--; + 8000920: 68fb ldr r3, [r7, #12] + 8000922: 3b01 subs r3, #1 + 8000924: 60fb str r3, [r7, #12] + while (tmpDelay != 0U) + 8000926: 68fb ldr r3, [r7, #12] + 8000928: 2b00 cmp r3, #0 + 800092a: d1f3 bne.n 8000914 + } + } +} + 800092c: bf00 nop + 800092e: 3714 adds r7, #20 + 8000930: 46bd mov sp, r7 + 8000932: f85d 7b04 ldr.w r7, [sp], #4 + 8000936: 4770 bx lr + 8000938: e000e010 .word 0xe000e010 + +0800093c <__libc_init_array>: + 800093c: b570 push {r4, r5, r6, lr} + 800093e: 4e0d ldr r6, [pc, #52] ; (8000974 <__libc_init_array+0x38>) + 8000940: 4c0d ldr r4, [pc, #52] ; (8000978 <__libc_init_array+0x3c>) + 8000942: 1ba4 subs r4, r4, r6 + 8000944: 10a4 asrs r4, r4, #2 + 8000946: 2500 movs r5, #0 + 8000948: 42a5 cmp r5, r4 + 800094a: d109 bne.n 8000960 <__libc_init_array+0x24> + 800094c: 4e0b ldr r6, [pc, #44] ; (800097c <__libc_init_array+0x40>) + 800094e: 4c0c ldr r4, [pc, #48] ; (8000980 <__libc_init_array+0x44>) + 8000950: f000 f818 bl 8000984 <_init> + 8000954: 1ba4 subs r4, r4, r6 + 8000956: 10a4 asrs r4, r4, #2 + 8000958: 2500 movs r5, #0 + 800095a: 42a5 cmp r5, r4 + 800095c: d105 bne.n 800096a <__libc_init_array+0x2e> + 800095e: bd70 pop {r4, r5, r6, pc} + 8000960: f856 3025 ldr.w r3, [r6, r5, lsl #2] + 8000964: 4798 blx r3 + 8000966: 3501 adds r5, #1 + 8000968: e7ee b.n 8000948 <__libc_init_array+0xc> + 800096a: f856 3025 ldr.w r3, [r6, r5, lsl #2] + 800096e: 4798 blx r3 + 8000970: 3501 adds r5, #1 + 8000972: e7f2 b.n 800095a <__libc_init_array+0x1e> + 8000974: 080009dc .word 0x080009dc + 8000978: 080009dc .word 0x080009dc + 800097c: 080009dc .word 0x080009dc + 8000980: 080009e0 .word 0x080009e0 + +08000984 <_init>: + 8000984: b5f8 push {r3, r4, r5, r6, r7, lr} + 8000986: bf00 nop + 8000988: bcf8 pop {r3, r4, r5, r6, r7} + 800098a: bc08 pop {r3} + 800098c: 469e mov lr, r3 + 800098e: 4770 bx lr + +08000990 <_fini>: + 8000990: b5f8 push {r3, r4, r5, r6, r7, lr} + 8000992: bf00 nop + 8000994: bcf8 pop {r3, r4, r5, r6, r7} + 8000996: bc08 pop {r3} + 8000998: 469e mov lr, r3 + 800099a: 4770 bx lr diff --git a/L476_ats_blink-master/Debug/L476_ats_blink-master.map b/L476_ats_blink-master/Debug/L476_ats_blink-master.map new file mode 100644 index 0000000..9f408e1 --- /dev/null +++ b/L476_ats_blink-master/Debug/L476_ats_blink-master.map @@ -0,0 +1,1229 @@ +Archive member included to satisfy reference by file (symbol) + +c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-errno.o) + Core/Src/syscalls.o (__errno) +c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o (exit) +c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) (_global_impure_ptr) +c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o (__libc_init_array) +c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o (memset) + +Discarded input sections + + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + .data 0x0000000000000000 0x4 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + .text 0x0000000000000000 0x74 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .ARM.extab 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .ARM.exidx 0x0000000000000000 0x8 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .ARM.attributes + 0x0000000000000000 0x20 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/gpio.o + .text 0x0000000000000000 0x0 Core/Src/gpio.o + .data 0x0000000000000000 0x0 Core/Src/gpio.o + .bss 0x0000000000000000 0x0 Core/Src/gpio.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/main.o + .text 0x0000000000000000 0x0 Core/Src/main.o + .data 0x0000000000000000 0x0 Core/Src/main.o + .bss 0x0000000000000000 0x0 Core/Src/main.o + .debug_macro 0x0000000000000000 0xaa8 Core/Src/main.o + .debug_macro 0x0000000000000000 0x2e Core/Src/main.o + .debug_macro 0x0000000000000000 0x28 Core/Src/main.o + .debug_macro 0x0000000000000000 0x22 Core/Src/main.o + .debug_macro 0x0000000000000000 0x8e Core/Src/main.o + .debug_macro 0x0000000000000000 0x51 Core/Src/main.o + .debug_macro 0x0000000000000000 0xef Core/Src/main.o + .debug_macro 0x0000000000000000 0x6a Core/Src/main.o + .debug_macro 0x0000000000000000 0x1df Core/Src/main.o + .debug_macro 0x0000000000000000 0x1c Core/Src/main.o + .debug_macro 0x0000000000000000 0x22 Core/Src/main.o + .debug_macro 0x0000000000000000 0x101 Core/Src/main.o + .debug_macro 0x0000000000000000 0x1011 Core/Src/main.o + .debug_macro 0x0000000000000000 0x11f Core/Src/main.o + .debug_macro 0x0000000000000000 0x1a13d Core/Src/main.o + .debug_macro 0x0000000000000000 0x43 Core/Src/main.o + .debug_macro 0x0000000000000000 0x1b9 Core/Src/main.o + .debug_macro 0x0000000000000000 0x16a Core/Src/main.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/stm32l4xx_it.o + .text 0x0000000000000000 0x0 Core/Src/stm32l4xx_it.o + .data 0x0000000000000000 0x0 Core/Src/stm32l4xx_it.o + .bss 0x0000000000000000 0x0 Core/Src/stm32l4xx_it.o + .rodata.CHANNEL_OFFSET_TAB + 0x0000000000000000 0x7 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0xaa8 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x2e Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x28 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x22 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x8e Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x51 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0xef Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x6a Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x1df Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x1c Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x22 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x101 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x1011 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x11f Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x1a13d Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x43 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x716 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x2f5 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0xa7 Core/Src/stm32l4xx_it.o + .debug_macro 0x0000000000000000 0x16a Core/Src/stm32l4xx_it.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/syscalls.o + .text 0x0000000000000000 0x0 Core/Src/syscalls.o + .data 0x0000000000000000 0x0 Core/Src/syscalls.o + .bss 0x0000000000000000 0x0 Core/Src/syscalls.o + .bss.__env 0x0000000000000000 0x4 Core/Src/syscalls.o + .data.environ 0x0000000000000000 0x4 Core/Src/syscalls.o + .text.initialise_monitor_handles + 0x0000000000000000 0xe Core/Src/syscalls.o + .text._getpid 0x0000000000000000 0x10 Core/Src/syscalls.o + .text._kill 0x0000000000000000 0x20 Core/Src/syscalls.o + .text._exit 0x0000000000000000 0x14 Core/Src/syscalls.o + .text._read 0x0000000000000000 0x3a Core/Src/syscalls.o + .text._write 0x0000000000000000 0x38 Core/Src/syscalls.o + .text._close 0x0000000000000000 0x18 Core/Src/syscalls.o + .text._fstat 0x0000000000000000 0x20 Core/Src/syscalls.o + .text._isatty 0x0000000000000000 0x16 Core/Src/syscalls.o + .text._lseek 0x0000000000000000 0x1a Core/Src/syscalls.o + .text._open 0x0000000000000000 0x1c Core/Src/syscalls.o + .text._wait 0x0000000000000000 0x1e Core/Src/syscalls.o + .text._unlink 0x0000000000000000 0x1e Core/Src/syscalls.o + .text._times 0x0000000000000000 0x18 Core/Src/syscalls.o + .text._stat 0x0000000000000000 0x20 Core/Src/syscalls.o + .text._link 0x0000000000000000 0x20 Core/Src/syscalls.o + .text._fork 0x0000000000000000 0x16 Core/Src/syscalls.o + .text._execve 0x0000000000000000 0x22 Core/Src/syscalls.o + .debug_info 0x0000000000000000 0xebd Core/Src/syscalls.o + .debug_abbrev 0x0000000000000000 0x261 Core/Src/syscalls.o + .debug_aranges + 0x0000000000000000 0xa8 Core/Src/syscalls.o + .debug_ranges 0x0000000000000000 0x98 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x243 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0xaa8 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x22 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x40 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x18 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x94 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x3c Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x34 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x57 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x174 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x330 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x52 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x1f Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x43 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x20 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x1a3 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x35 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x6a Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x1c Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x52 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x40 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x40 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0xd7 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x1c Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x3d Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x35 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x122 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x16 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x16 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x29 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x241 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x1c Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x10 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x16 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x145 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x189 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x16 Core/Src/syscalls.o + .debug_macro 0x0000000000000000 0x88 Core/Src/syscalls.o + .debug_line 0x0000000000000000 0x73e Core/Src/syscalls.o + .debug_str 0x0000000000000000 0x89f3 Core/Src/syscalls.o + .comment 0x0000000000000000 0x7c Core/Src/syscalls.o + .debug_frame 0x0000000000000000 0x2ac Core/Src/syscalls.o + .ARM.attributes + 0x0000000000000000 0x39 Core/Src/syscalls.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/sysmem.o + .text 0x0000000000000000 0x0 Core/Src/sysmem.o + .data 0x0000000000000000 0x0 Core/Src/sysmem.o + .bss 0x0000000000000000 0x0 Core/Src/sysmem.o + .bss.__sbrk_heap_end + 0x0000000000000000 0x4 Core/Src/sysmem.o + .text._sbrk 0x0000000000000000 0x6c Core/Src/sysmem.o + .debug_info 0x0000000000000000 0x985 Core/Src/sysmem.o + .debug_abbrev 0x0000000000000000 0x19b Core/Src/sysmem.o + .debug_aranges + 0x0000000000000000 0x20 Core/Src/sysmem.o + .debug_ranges 0x0000000000000000 0x10 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0xee Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0xaa8 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x10 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x22 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x40 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x18 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x94 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x3c Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x34 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x174 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x57 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x52 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x1f Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x43 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x20 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x1a3 Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x23b Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0xef Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x6a Core/Src/sysmem.o + .debug_macro 0x0000000000000000 0x1df Core/Src/sysmem.o + .debug_line 0x0000000000000000 0x4c7 Core/Src/sysmem.o + .debug_str 0x0000000000000000 0x60c1 Core/Src/sysmem.o + .comment 0x0000000000000000 0x7c Core/Src/sysmem.o + .debug_frame 0x0000000000000000 0x34 Core/Src/sysmem.o + .ARM.attributes + 0x0000000000000000 0x39 Core/Src/sysmem.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .group 0x0000000000000000 0xc Core/Src/system_stm32l4xx.o + .text 0x0000000000000000 0x0 Core/Src/system_stm32l4xx.o + .data 0x0000000000000000 0x0 Core/Src/system_stm32l4xx.o + .bss 0x0000000000000000 0x0 Core/Src/system_stm32l4xx.o + .rodata.APBPrescTable + 0x0000000000000000 0x8 Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0xaa8 Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x2e Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x28 Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x22 Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x8e Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x51 Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0xef Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x6a Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x1df Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x1c Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x22 Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x101 Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x1011 Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x11f Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x1a13d Core/Src/system_stm32l4xx.o + .debug_macro 0x0000000000000000 0x43 Core/Src/system_stm32l4xx.o + .text 0x0000000000000000 0x14 Core/Startup/startup_stm32l476rgtx.o + .data 0x0000000000000000 0x0 Core/Startup/startup_stm32l476rgtx.o + .bss 0x0000000000000000 0x0 Core/Startup/startup_stm32l476rgtx.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .data 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .bss 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_EnableIT_0_31 + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_EnableIT_32_63 + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_DisableIT_0_31 + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_DisableIT_32_63 + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_EnableEvent_0_31 + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_EnableEvent_32_63 + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_DisableEvent_0_31 + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_DisableEvent_32_63 + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_EnableRisingTrig_0_31 + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_EnableRisingTrig_32_63 + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_DisableRisingTrig_0_31 + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_DisableRisingTrig_32_63 + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_EnableFallingTrig_0_31 + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_EnableFallingTrig_32_63 + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_DisableFallingTrig_0_31 + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_DisableFallingTrig_32_63 + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_DeInit + 0x0000000000000000 0x64 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_Init + 0x0000000000000000 0x1d8 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .text.LL_EXTI_StructInit + 0x0000000000000000 0x32 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_info 0x0000000000000000 0x56b Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_abbrev 0x0000000000000000 0x19e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_aranges + 0x0000000000000000 0xb0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_ranges 0x0000000000000000 0xa0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0xfb Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0xaa8 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x2e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x22 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x8e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x51 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0xef Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x6a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x1df Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x1c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x22 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x101 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x1011 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x11f Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x1a13d Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x43 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_macro 0x0000000000000000 0x15e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_line 0x0000000000000000 0x651 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_str 0x0000000000000000 0x9f070 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .comment 0x0000000000000000 0x7c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .debug_frame 0x0000000000000000 0x2fc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .ARM.attributes + 0x0000000000000000 0x39 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .data 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .bss 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_GPIO_SetPinMode + 0x0000000000000000 0x7a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_GPIO_SetPinOutputType + 0x0000000000000000 0x30 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_GPIO_SetPinSpeed + 0x0000000000000000 0x7a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_GPIO_SetPinPull + 0x0000000000000000 0x7a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_GPIO_SetAFPin_0_7 + 0x0000000000000000 0x7a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_GPIO_SetAFPin_8_15 + 0x0000000000000000 0x7e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_AHB2_GRP1_ForceReset + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_AHB2_GRP1_ReleaseReset + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_GPIO_DeInit + 0x0000000000000000 0xe8 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_GPIO_Init + 0x0000000000000000 0xec Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .text.LL_GPIO_StructInit + 0x0000000000000000 0x3a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_info 0x0000000000000000 0xa87 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_abbrev 0x0000000000000000 0x225 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_aranges + 0x0000000000000000 0x70 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_ranges 0x0000000000000000 0x60 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x110 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0xaa8 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x2e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x22 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x8e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x51 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0xef Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x6a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x1df Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x1c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x22 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x101 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x1011 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x11f Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x1a13d Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x43 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x164 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_macro 0x0000000000000000 0x1bf Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_line 0x0000000000000000 0x6a8 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_str 0x0000000000000000 0xa0040 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .comment 0x0000000000000000 0x7c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .debug_frame 0x0000000000000000 0x1c0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .ARM.attributes + 0x0000000000000000 0x39 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .text 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .data 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .bss 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .text.LL_APB1_GRP1_ForceReset + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .text.LL_APB1_GRP1_ReleaseReset + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .text.LL_PWR_DeInit + 0x0000000000000000 0x1a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_info 0x0000000000000000 0x3c2 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_abbrev 0x0000000000000000 0x125 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_aranges + 0x0000000000000000 0x30 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_ranges 0x0000000000000000 0x20 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0xe6 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0xaa8 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x2e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x22 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x8e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x51 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0xef Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x6a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x1df Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x1c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x22 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x101 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x1011 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x11f Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x1a13d Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x43 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x202 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_macro 0x0000000000000000 0x1bf Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_line 0x0000000000000000 0x4ee Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_str 0x0000000000000000 0x9fc80 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .comment 0x0000000000000000 0x7c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .debug_frame 0x0000000000000000 0x7c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .ARM.attributes + 0x0000000000000000 0x39 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .group 0x0000000000000000 0xc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .data 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .bss 0x0000000000000000 0x0 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_HSE_EnableBypass + 0x0000000000000000 0x20 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_HSE_DisableBypass + 0x0000000000000000 0x20 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_HSE_Enable + 0x0000000000000000 0x20 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_HSE_IsReady + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_HSI_Enable + 0x0000000000000000 0x20 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_HSI_IsReady + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_MSI_Enable + 0x0000000000000000 0x20 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_MSI_IsReady + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_MSI_IsEnabledRangeSelect + 0x0000000000000000 0x24 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_MSI_GetRange + 0x0000000000000000 0x1c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_MSI_GetRangeAfterStandby + 0x0000000000000000 0x1c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_SetSysClkSource + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_GetSysClkSource + 0x0000000000000000 0x1c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_SetAHBPrescaler + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_SetAPB1Prescaler + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_SetAPB2Prescaler + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_PLL_Enable + 0x0000000000000000 0x20 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_PLL_IsReady + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_PLL_ConfigDomain_SYS + 0x0000000000000000 0x40 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_PLL_EnableDomain_SYS + 0x0000000000000000 0x20 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_PLLSAI1_IsReady + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_RCC_PLLSAI2_IsReady + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_FLASH_SetLatency + 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_FLASH_GetLatency + 0x0000000000000000 0x1c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_PWR_GetRegulVoltageScaling + 0x0000000000000000 0x1c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_SetSystemCoreClock + 0x0000000000000000 0x20 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_SetFlashLatency + 0x0000000000000000 0xe4 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_PLL_ConfigSystemClock_MSI + 0x0000000000000000 0xe8 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_PLL_ConfigSystemClock_HSI + 0x0000000000000000 0x6c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_PLL_ConfigSystemClock_HSE + 0x0000000000000000 0x7a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.UTILS_GetPLLOutputFrequency + 0x0000000000000000 0x4a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.UTILS_PLL_IsBusy + 0x0000000000000000 0x3e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.UTILS_EnablePLLAndSwitchSystem + 0x0000000000000000 0xb4 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0xaa8 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x2e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x28 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x22 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x8e Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x51 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0xef Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x6a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x1df Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x1c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x22 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x101 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x1011 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x11f Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x1a13d Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x43 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x716 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x2f5 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x0000000000000000 0x208 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-errno.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-errno.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-errno.o) + .text.__errno 0x0000000000000000 0xc c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-errno.o) + .debug_frame 0x0000000000000000 0x20 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-errno.o) + .ARM.attributes + 0x0000000000000000 0x34 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-errno.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .text.exit 0x0000000000000000 0x28 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .debug_frame 0x0000000000000000 0x28 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .ARM.attributes + 0x0000000000000000 0x34 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-exit.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .data._impure_ptr + 0x0000000000000000 0x4 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .data.impure_data + 0x0000000000000000 0x60 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .rodata._global_impure_ptr + 0x0000000000000000 0x4 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .ARM.attributes + 0x0000000000000000 0x34 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-impure.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .text.memset 0x0000000000000000 0x10 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .debug_frame 0x0000000000000000 0x20 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .ARM.attributes + 0x0000000000000000 0x34 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-memset.o) + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o + .eh_frame 0x0000000000000000 0x4 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o + .ARM.attributes + 0x0000000000000000 0x34 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o + .text 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + .data 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + .bss 0x0000000000000000 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + +Memory Configuration + +Name Origin Length Attributes +RAM 0x0000000020000000 0x0000000000018000 xrw +RAM2 0x0000000010000000 0x0000000000008000 xrw +FLASH 0x0000000008000000 0x0000000000100000 xr +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard/crt0.o +LOAD Core/Src/gpio.o +LOAD Core/Src/main.o +LOAD Core/Src/stm32l4xx_it.o +LOAD Core/Src/syscalls.o +LOAD Core/Src/sysmem.o +LOAD Core/Src/system_stm32l4xx.o +LOAD Core/Startup/startup_stm32l476rgtx.o +LOAD Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o +LOAD Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o +LOAD Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o +LOAD Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o +START GROUP +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libm.a +END GROUP +START GROUP +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard\libgcc.a +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a +END GROUP +START GROUP +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard\libgcc.a +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a +END GROUP +START GROUP +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard\libgcc.a +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libnosys.a +END GROUP +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtend.o +LOAD c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + 0x0000000020018000 _estack = (ORIGIN (RAM) + LENGTH (RAM)) + 0x0000000000000200 _Min_Heap_Size = 0x200 + 0x0000000000000400 _Min_Stack_Size = 0x400 + +.isr_vector 0x0000000008000000 0x188 + 0x0000000008000000 . = ALIGN (0x4) + *(.isr_vector) + .isr_vector 0x0000000008000000 0x188 Core/Startup/startup_stm32l476rgtx.o + 0x0000000008000000 g_pfnVectors + 0x0000000008000188 . = ALIGN (0x4) + +.text 0x0000000008000188 0x814 + 0x0000000008000188 . = ALIGN (0x4) + *(.text) + .text 0x0000000008000188 0x40 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + *(.text*) + .text.LL_AHB2_GRP1_EnableClock + 0x00000000080001c8 0x30 Core/Src/gpio.o + .text.LL_GPIO_SetPinMode + 0x00000000080001f8 0x7a Core/Src/gpio.o + .text.LL_GPIO_SetPinOutputType + 0x0000000008000272 0x30 Core/Src/gpio.o + .text.LL_GPIO_IsInputPinSet + 0x00000000080002a2 0x2a Core/Src/gpio.o + .text.LL_GPIO_SetOutputPin + 0x00000000080002cc 0x1c Core/Src/gpio.o + .text.LL_GPIO_ResetOutputPin + 0x00000000080002e8 0x1c Core/Src/gpio.o + .text.GPIO_init + 0x0000000008000304 0x3c Core/Src/gpio.o + 0x0000000008000304 GPIO_init + .text.LED_GREEN + 0x0000000008000340 0x2c Core/Src/gpio.o + 0x0000000008000340 LED_GREEN + .text.BLUE_BUTTON + 0x000000000800036c 0x24 Core/Src/gpio.o + 0x000000000800036c BLUE_BUTTON + .text.LL_RCC_MSI_Enable + 0x0000000008000390 0x20 Core/Src/main.o + .text.LL_RCC_MSI_IsReady + 0x00000000080003b0 0x24 Core/Src/main.o + .text.LL_RCC_SetSysClkSource + 0x00000000080003d4 0x28 Core/Src/main.o + .text.LL_RCC_GetSysClkSource + 0x00000000080003fc 0x1c Core/Src/main.o + .text.LL_RCC_SetAHBPrescaler + 0x0000000008000418 0x28 Core/Src/main.o + .text.LL_RCC_SetAPB1Prescaler + 0x0000000008000440 0x28 Core/Src/main.o + .text.LL_RCC_SetAPB2Prescaler + 0x0000000008000468 0x28 Core/Src/main.o + .text.LL_RCC_PLL_Enable + 0x0000000008000490 0x20 Core/Src/main.o + .text.LL_RCC_PLL_IsReady + 0x00000000080004b0 0x28 Core/Src/main.o + .text.LL_RCC_PLL_ConfigDomain_SYS + 0x00000000080004d8 0x40 Core/Src/main.o + .text.LL_RCC_PLL_EnableDomain_SYS + 0x0000000008000518 0x20 Core/Src/main.o + .text.LL_FLASH_SetLatency + 0x0000000008000538 0x28 Core/Src/main.o + .text.main 0x0000000008000560 0x48 Core/Src/main.o + 0x0000000008000560 main + .text.SystemClock_Config + 0x00000000080005a8 0x66 Core/Src/main.o + 0x00000000080005a8 SystemClock_Config + .text.NMI_Handler + 0x000000000800060e 0xe Core/Src/stm32l4xx_it.o + 0x000000000800060e NMI_Handler + .text.HardFault_Handler + 0x000000000800061c 0x6 Core/Src/stm32l4xx_it.o + 0x000000000800061c HardFault_Handler + .text.MemManage_Handler + 0x0000000008000622 0x6 Core/Src/stm32l4xx_it.o + 0x0000000008000622 MemManage_Handler + .text.BusFault_Handler + 0x0000000008000628 0x6 Core/Src/stm32l4xx_it.o + 0x0000000008000628 BusFault_Handler + .text.UsageFault_Handler + 0x000000000800062e 0x6 Core/Src/stm32l4xx_it.o + 0x000000000800062e UsageFault_Handler + .text.SVC_Handler + 0x0000000008000634 0xe Core/Src/stm32l4xx_it.o + 0x0000000008000634 SVC_Handler + .text.DebugMon_Handler + 0x0000000008000642 0xe Core/Src/stm32l4xx_it.o + 0x0000000008000642 DebugMon_Handler + .text.PendSV_Handler + 0x0000000008000650 0xe Core/Src/stm32l4xx_it.o + 0x0000000008000650 PendSV_Handler + .text.SysTick_Handler + 0x000000000800065e 0xe Core/Src/stm32l4xx_it.o + 0x000000000800065e SysTick_Handler + .text.SystemInit + 0x000000000800066c 0x6c Core/Src/system_stm32l4xx.o + 0x000000000800066c SystemInit + .text.SystemCoreClockUpdate + 0x00000000080006d8 0x174 Core/Src/system_stm32l4xx.o + 0x00000000080006d8 SystemCoreClockUpdate + .text.Reset_Handler + 0x000000000800084c 0x50 Core/Startup/startup_stm32l476rgtx.o + 0x000000000800084c Reset_Handler + .text.Default_Handler + 0x000000000800089c 0x2 Core/Startup/startup_stm32l476rgtx.o + 0x000000000800089c RTC_Alarm_IRQHandler + 0x000000000800089c EXTI2_IRQHandler + 0x000000000800089c TIM8_TRG_COM_IRQHandler + 0x000000000800089c TIM8_CC_IRQHandler + 0x000000000800089c TIM1_CC_IRQHandler + 0x000000000800089c TSC_IRQHandler + 0x000000000800089c TAMP_STAMP_IRQHandler + 0x000000000800089c EXTI3_IRQHandler + 0x000000000800089c LPTIM2_IRQHandler + 0x000000000800089c DFSDM1_FLT1_IRQHandler + 0x000000000800089c I2C3_ER_IRQHandler + 0x000000000800089c DFSDM1_FLT2_IRQHandler + 0x000000000800089c EXTI0_IRQHandler + 0x000000000800089c I2C2_EV_IRQHandler + 0x000000000800089c CAN1_RX0_IRQHandler + 0x000000000800089c FPU_IRQHandler + 0x000000000800089c TIM1_UP_TIM16_IRQHandler + 0x000000000800089c ADC1_2_IRQHandler + 0x000000000800089c SPI1_IRQHandler + 0x000000000800089c TIM6_DAC_IRQHandler + 0x000000000800089c TIM8_UP_IRQHandler + 0x000000000800089c DMA2_Channel2_IRQHandler + 0x000000000800089c DMA1_Channel4_IRQHandler + 0x000000000800089c SAI2_IRQHandler + 0x000000000800089c DFSDM1_FLT3_IRQHandler + 0x000000000800089c USART3_IRQHandler + 0x000000000800089c DMA1_Channel7_IRQHandler + 0x000000000800089c CAN1_RX1_IRQHandler + 0x000000000800089c LCD_IRQHandler + 0x000000000800089c UART5_IRQHandler + 0x000000000800089c ADC3_IRQHandler + 0x000000000800089c TIM4_IRQHandler + 0x000000000800089c DMA2_Channel1_IRQHandler + 0x000000000800089c QUADSPI_IRQHandler + 0x000000000800089c I2C1_EV_IRQHandler + 0x000000000800089c DMA1_Channel6_IRQHandler + 0x000000000800089c UART4_IRQHandler + 0x000000000800089c DMA2_Channel4_IRQHandler + 0x000000000800089c TIM3_IRQHandler + 0x000000000800089c RCC_IRQHandler + 0x000000000800089c DMA1_Channel1_IRQHandler + 0x000000000800089c Default_Handler + 0x000000000800089c DMA2_Channel7_IRQHandler + 0x000000000800089c EXTI15_10_IRQHandler + 0x000000000800089c TIM7_IRQHandler + 0x000000000800089c SDMMC1_IRQHandler + 0x000000000800089c TIM5_IRQHandler + 0x000000000800089c I2C3_EV_IRQHandler + 0x000000000800089c EXTI9_5_IRQHandler + 0x000000000800089c RTC_WKUP_IRQHandler + 0x000000000800089c PVD_PVM_IRQHandler + 0x000000000800089c SPI2_IRQHandler + 0x000000000800089c CAN1_TX_IRQHandler + 0x000000000800089c DMA2_Channel5_IRQHandler + 0x000000000800089c DMA1_Channel5_IRQHandler + 0x000000000800089c EXTI4_IRQHandler + 0x000000000800089c RNG_IRQHandler + 0x000000000800089c TIM1_TRG_COM_TIM17_IRQHandler + 0x000000000800089c DMA1_Channel3_IRQHandler + 0x000000000800089c COMP_IRQHandler + 0x000000000800089c WWDG_IRQHandler + 0x000000000800089c LPUART1_IRQHandler + 0x000000000800089c DMA2_Channel6_IRQHandler + 0x000000000800089c TIM2_IRQHandler + 0x000000000800089c EXTI1_IRQHandler + 0x000000000800089c USART2_IRQHandler + 0x000000000800089c DFSDM1_FLT0_IRQHandler + 0x000000000800089c I2C2_ER_IRQHandler + 0x000000000800089c DMA1_Channel2_IRQHandler + 0x000000000800089c TIM8_BRK_IRQHandler + 0x000000000800089c CAN1_SCE_IRQHandler + 0x000000000800089c FLASH_IRQHandler + 0x000000000800089c USART1_IRQHandler + 0x000000000800089c OTG_FS_IRQHandler + 0x000000000800089c SPI3_IRQHandler + 0x000000000800089c I2C1_ER_IRQHandler + 0x000000000800089c FMC_IRQHandler + 0x000000000800089c SWPMI1_IRQHandler + 0x000000000800089c LPTIM1_IRQHandler + 0x000000000800089c SAI1_IRQHandler + 0x000000000800089c DMA2_Channel3_IRQHandler + 0x000000000800089c TIM1_BRK_TIM15_IRQHandler + *fill* 0x000000000800089e 0x2 + .text.LL_InitTick + 0x00000000080008a0 0x34 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .text.LL_Init1msTick + 0x00000000080008d4 0x1a Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + 0x00000000080008d4 LL_Init1msTick + *fill* 0x00000000080008ee 0x2 + .text.LL_mDelay + 0x00000000080008f0 0x4c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + 0x00000000080008f0 LL_mDelay + .text.__libc_init_array + 0x000000000800093c 0x48 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + 0x000000000800093c __libc_init_array + *(.glue_7) + .glue_7 0x0000000008000984 0x0 linker stubs + *(.glue_7t) + .glue_7t 0x0000000008000984 0x0 linker stubs + *(.eh_frame) + .eh_frame 0x0000000008000984 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + *(.init) + .init 0x0000000008000984 0x4 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + 0x0000000008000984 _init + .init 0x0000000008000988 0x8 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + *(.fini) + .fini 0x0000000008000990 0x4 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + 0x0000000008000990 _fini + .fini 0x0000000008000994 0x8 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o + 0x000000000800099c . = ALIGN (0x4) + 0x000000000800099c _etext = . + +.vfp11_veneer 0x000000000800099c 0x0 + .vfp11_veneer 0x000000000800099c 0x0 linker stubs + +.v4_bx 0x000000000800099c 0x0 + .v4_bx 0x000000000800099c 0x0 linker stubs + +.iplt 0x000000000800099c 0x0 + .iplt 0x000000000800099c 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + +.rodata 0x000000000800099c 0x40 + 0x000000000800099c . = ALIGN (0x4) + *(.rodata) + *(.rodata*) + .rodata.AHBPrescTable + 0x000000000800099c 0x10 Core/Src/system_stm32l4xx.o + 0x000000000800099c AHBPrescTable + .rodata.MSIRangeTable + 0x00000000080009ac 0x30 Core/Src/system_stm32l4xx.o + 0x00000000080009ac MSIRangeTable + 0x00000000080009dc . = ALIGN (0x4) + +.rel.dyn 0x00000000080009dc 0x0 + .rel.iplt 0x00000000080009dc 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + +.ARM.extab 0x00000000080009dc 0x0 + 0x00000000080009dc . = ALIGN (0x4) + *(.ARM.extab* .gnu.linkonce.armextab.*) + 0x00000000080009dc . = ALIGN (0x4) + +.ARM 0x00000000080009dc 0x0 + 0x00000000080009dc . = ALIGN (0x4) + 0x00000000080009dc __exidx_start = . + *(.ARM.exidx*) + 0x00000000080009dc __exidx_end = . + 0x00000000080009dc . = ALIGN (0x4) + +.preinit_array 0x00000000080009dc 0x0 + 0x00000000080009dc . = ALIGN (0x4) + 0x00000000080009dc PROVIDE (__preinit_array_start = .) + *(.preinit_array*) + 0x00000000080009dc PROVIDE (__preinit_array_end = .) + 0x00000000080009dc . = ALIGN (0x4) + +.init_array 0x00000000080009dc 0x4 + 0x00000000080009dc . = ALIGN (0x4) + 0x00000000080009dc PROVIDE (__init_array_start = .) + *(SORT_BY_NAME(.init_array.*)) + *(.init_array*) + .init_array 0x00000000080009dc 0x4 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + 0x00000000080009e0 PROVIDE (__init_array_end = .) + 0x00000000080009e0 . = ALIGN (0x4) + +.fini_array 0x00000000080009e0 0x4 + 0x00000000080009e0 . = ALIGN (0x4) + [!provide] PROVIDE (__fini_array_start = .) + *(SORT_BY_NAME(.fini_array.*)) + *(.fini_array*) + .fini_array 0x00000000080009e0 0x4 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + [!provide] PROVIDE (__fini_array_end = .) + 0x00000000080009e4 . = ALIGN (0x4) + 0x00000000080009e4 _sidata = LOADADDR (.data) + +.data 0x0000000020000000 0x4 load address 0x00000000080009e4 + 0x0000000020000000 . = ALIGN (0x4) + 0x0000000020000000 _sdata = . + *(.data) + *(.data*) + .data.SystemCoreClock + 0x0000000020000000 0x4 Core/Src/system_stm32l4xx.o + 0x0000000020000000 SystemCoreClock + 0x0000000020000004 . = ALIGN (0x4) + 0x0000000020000004 _edata = . + +.igot.plt 0x0000000020000004 0x0 load address 0x00000000080009e8 + .igot.plt 0x0000000020000004 0x0 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + 0x0000000020000004 . = ALIGN (0x4) + +.bss 0x0000000020000004 0x1c load address 0x00000000080009e8 + 0x0000000020000004 _sbss = . + 0x0000000020000004 __bss_start__ = _sbss + *(.bss) + .bss 0x0000000020000004 0x1c c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + *(.bss*) + *(COMMON) + 0x0000000020000020 . = ALIGN (0x4) + 0x0000000020000020 _ebss = . + 0x0000000020000020 __bss_end__ = _ebss + +._user_heap_stack + 0x0000000020000020 0x600 load address 0x00000000080009e8 + 0x0000000020000020 . = ALIGN (0x8) + [!provide] PROVIDE (end = .) + 0x0000000020000020 PROVIDE (_end = .) + 0x0000000020000220 . = (. + _Min_Heap_Size) + *fill* 0x0000000020000020 0x200 + 0x0000000020000620 . = (. + _Min_Stack_Size) + *fill* 0x0000000020000220 0x400 + 0x0000000020000620 . = ALIGN (0x8) + +/DISCARD/ + libc.a(*) + libm.a(*) + libgcc.a(*) + +.ARM.attributes + 0x0000000000000000 0x30 + *(.ARM.attributes) + .ARM.attributes + 0x0000000000000000 0x22 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crti.o + .ARM.attributes + 0x0000000000000022 0x34 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtbegin.o + .ARM.attributes + 0x0000000000000056 0x39 Core/Src/gpio.o + .ARM.attributes + 0x000000000000008f 0x39 Core/Src/main.o + .ARM.attributes + 0x00000000000000c8 0x39 Core/Src/stm32l4xx_it.o + .ARM.attributes + 0x0000000000000101 0x39 Core/Src/system_stm32l4xx.o + .ARM.attributes + 0x000000000000013a 0x21 Core/Startup/startup_stm32l476rgtx.o + .ARM.attributes + 0x000000000000015b 0x39 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .ARM.attributes + 0x0000000000000194 0x34 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) + .ARM.attributes + 0x00000000000001c8 0x22 c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v7e-m/fpv4-sp/hard/crtn.o +OUTPUT(L476_ats_blink-master.elf elf32-littlearm) + +.debug_info 0x0000000000000000 0x206d + .debug_info 0x0000000000000000 0x682 Core/Src/gpio.o + .debug_info 0x0000000000000682 0x5fd Core/Src/main.o + .debug_info 0x0000000000000c7f 0x1f7 Core/Src/stm32l4xx_it.o + .debug_info 0x0000000000000e76 0x5b4 Core/Src/system_stm32l4xx.o + .debug_info 0x000000000000142a 0x22 Core/Startup/startup_stm32l476rgtx.o + .debug_info 0x000000000000144c 0xc21 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + +.debug_abbrev 0x0000000000000000 0x74a + .debug_abbrev 0x0000000000000000 0x1ee Core/Src/gpio.o + .debug_abbrev 0x00000000000001ee 0x13b Core/Src/main.o + .debug_abbrev 0x0000000000000329 0xa3 Core/Src/stm32l4xx_it.o + .debug_abbrev 0x00000000000003cc 0x134 Core/Src/system_stm32l4xx.o + .debug_abbrev 0x0000000000000500 0x12 Core/Startup/startup_stm32l476rgtx.o + .debug_abbrev 0x0000000000000512 0x238 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + +.debug_aranges 0x0000000000000000 0x2d0 + .debug_aranges + 0x0000000000000000 0x60 Core/Src/gpio.o + .debug_aranges + 0x0000000000000060 0x88 Core/Src/main.o + .debug_aranges + 0x00000000000000e8 0x60 Core/Src/stm32l4xx_it.o + .debug_aranges + 0x0000000000000148 0x28 Core/Src/system_stm32l4xx.o + .debug_aranges + 0x0000000000000170 0x28 Core/Startup/startup_stm32l476rgtx.o + .debug_aranges + 0x0000000000000198 0x138 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + +.debug_ranges 0x0000000000000000 0x278 + .debug_ranges 0x0000000000000000 0x50 Core/Src/gpio.o + .debug_ranges 0x0000000000000050 0x78 Core/Src/main.o + .debug_ranges 0x00000000000000c8 0x50 Core/Src/stm32l4xx_it.o + .debug_ranges 0x0000000000000118 0x18 Core/Src/system_stm32l4xx.o + .debug_ranges 0x0000000000000130 0x20 Core/Startup/startup_stm32l476rgtx.o + .debug_ranges 0x0000000000000150 0x128 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + +.debug_macro 0x0000000000000000 0x1e117 + .debug_macro 0x0000000000000000 0x102 Core/Src/gpio.o + .debug_macro 0x0000000000000102 0xaa8 Core/Src/gpio.o + .debug_macro 0x0000000000000baa 0x2e Core/Src/gpio.o + .debug_macro 0x0000000000000bd8 0x28 Core/Src/gpio.o + .debug_macro 0x0000000000000c00 0x22 Core/Src/gpio.o + .debug_macro 0x0000000000000c22 0x8e Core/Src/gpio.o + .debug_macro 0x0000000000000cb0 0x51 Core/Src/gpio.o + .debug_macro 0x0000000000000d01 0xef Core/Src/gpio.o + .debug_macro 0x0000000000000df0 0x6a Core/Src/gpio.o + .debug_macro 0x0000000000000e5a 0x1df Core/Src/gpio.o + .debug_macro 0x0000000000001039 0x1c Core/Src/gpio.o + .debug_macro 0x0000000000001055 0x22 Core/Src/gpio.o + .debug_macro 0x0000000000001077 0x101 Core/Src/gpio.o + .debug_macro 0x0000000000001178 0x1011 Core/Src/gpio.o + .debug_macro 0x0000000000002189 0x11f Core/Src/gpio.o + .debug_macro 0x00000000000022a8 0x1a13d Core/Src/gpio.o + .debug_macro 0x000000000001c3e5 0x43 Core/Src/gpio.o + .debug_macro 0x000000000001c428 0x1b9 Core/Src/gpio.o + .debug_macro 0x000000000001c5e1 0x16a Core/Src/gpio.o + .debug_macro 0x000000000001c74b 0x105 Core/Src/main.o + .debug_macro 0x000000000001c850 0x716 Core/Src/main.o + .debug_macro 0x000000000001cf66 0x2f5 Core/Src/main.o + .debug_macro 0x000000000001d25b 0xa7 Core/Src/main.o + .debug_macro 0x000000000001d302 0x142 Core/Src/stm32l4xx_it.o + .debug_macro 0x000000000001d444 0x1bf Core/Src/stm32l4xx_it.o + .debug_macro 0x000000000001d603 0x164 Core/Src/stm32l4xx_it.o + .debug_macro 0x000000000001d767 0x1a7 Core/Src/stm32l4xx_it.o + .debug_macro 0x000000000001d90e 0x208 Core/Src/stm32l4xx_it.o + .debug_macro 0x000000000001db16 0x2cb Core/Src/stm32l4xx_it.o + .debug_macro 0x000000000001dde1 0x22 Core/Src/stm32l4xx_it.o + .debug_macro 0x000000000001de03 0xd4 Core/Src/system_stm32l4xx.o + .debug_macro 0x000000000001ded7 0x19f Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_macro 0x000000000001e076 0xa1 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + +.debug_line 0x0000000000000000 0x1fee + .debug_line 0x0000000000000000 0x58c Core/Src/gpio.o + .debug_line 0x000000000000058c 0x62f Core/Src/main.o + .debug_line 0x0000000000000bbb 0x624 Core/Src/stm32l4xx_it.o + .debug_line 0x00000000000011df 0x496 Core/Src/system_stm32l4xx.o + .debug_line 0x0000000000001675 0x87 Core/Startup/startup_stm32l476rgtx.o + .debug_line 0x00000000000016fc 0x8f2 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + +.debug_str 0x0000000000000000 0xa94c9 + .debug_str 0x0000000000000000 0x9f8ba Core/Src/gpio.o + 0x9fa7d (size before relaxing) + .debug_str 0x000000000009f8ba 0x541a Core/Src/main.o + 0xa4d32 (size before relaxing) + .debug_str 0x00000000000a4cd4 0x384b Core/Src/stm32l4xx_it.o + 0xa826a (size before relaxing) + .debug_str 0x00000000000a851f 0xd3 Core/Src/system_stm32l4xx.o + 0x9e65f (size before relaxing) + .debug_str 0x00000000000a85f2 0x36 Core/Startup/startup_stm32l476rgtx.o + 0xb0 (size before relaxing) + .debug_str 0x00000000000a8628 0xea1 Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + 0xa5325 (size before relaxing) + +.comment 0x0000000000000000 0x7b + .comment 0x0000000000000000 0x7b Core/Src/gpio.o + 0x7c (size before relaxing) + .comment 0x000000000000007b 0x7c Core/Src/main.o + .comment 0x000000000000007b 0x7c Core/Src/stm32l4xx_it.o + .comment 0x000000000000007b 0x7c Core/Src/system_stm32l4xx.o + .comment 0x000000000000007b 0x7c Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + +.debug_frame 0x0000000000000000 0x9e4 + .debug_frame 0x0000000000000000 0x15c Core/Src/gpio.o + .debug_frame 0x000000000000015c 0x1f8 Core/Src/main.o + .debug_frame 0x0000000000000354 0x110 Core/Src/stm32l4xx_it.o + .debug_frame 0x0000000000000464 0x58 Core/Src/system_stm32l4xx.o + .debug_frame 0x00000000000004bc 0x4fc Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o + .debug_frame 0x00000000000009b8 0x2c c:/st/stm32cubeide_1.4.0/stm32cubeide/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.7-2018-q2-update.win32_1.4.0.202007081208/tools/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v7e-m/fpv4-sp/hard\libc_nano.a(lib_a-init.o) diff --git a/L476_ats_blink-master/Debug/makefile b/L476_ats_blink-master/Debug/makefile new file mode 100644 index 0000000..698fc21 --- /dev/null +++ b/L476_ats_blink-master/Debug/makefile @@ -0,0 +1,79 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +-include ../makefile.init + +RM := rm -rf + +# All of the sources participating in the build are defined here +-include sources.mk +-include Drivers/STM32L4xx_HAL_Driver/Src/subdir.mk +-include Core/Startup/subdir.mk +-include Core/Src/subdir.mk +-include subdir.mk +-include objects.mk + +ifneq ($(MAKECMDGOALS),clean) +ifneq ($(strip $(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 + +# Add inputs and outputs from these tool invocations to the build variables +EXECUTABLES += \ +L476_ats_blink-master.elf \ + +SIZE_OUTPUT += \ +default.size.stdout \ + +OBJDUMP_LIST += \ +L476_ats_blink-master.list \ + +OBJCOPY_BIN += \ +L476_ats_blink-master.bin \ + + +# All Target +all: L476_ats_blink-master.elf secondary-outputs + +# Tool invocations +L476_ats_blink-master.elf: $(OBJS) $(USER_OBJS) C:\Users\adminaboyer\alex\enseignements_2020_21\TP_Prog_faible_energie\WorkSpace_STM32CubeIDE\L476_ats_blink-master\STM32L476RGTX_FLASH.ld + arm-none-eabi-gcc -o "L476_ats_blink-master.elf" @"objects.list" $(USER_OBJS) $(LIBS) -mcpu=cortex-m4 -T"C:\Users\adminaboyer\alex\enseignements_2020_21\TP_Prog_faible_energie\WorkSpace_STM32CubeIDE\L476_ats_blink-master\STM32L476RGTX_FLASH.ld" --specs=nosys.specs -Wl,-Map="L476_ats_blink-master.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) + arm-none-eabi-size $(EXECUTABLES) + @echo 'Finished building: $@' + @echo ' ' + +L476_ats_blink-master.list: $(EXECUTABLES) + arm-none-eabi-objdump -h -S $(EXECUTABLES) > "L476_ats_blink-master.list" + @echo 'Finished building: $@' + @echo ' ' + +L476_ats_blink-master.bin: $(EXECUTABLES) + arm-none-eabi-objcopy -O binary $(EXECUTABLES) "L476_ats_blink-master.bin" + @echo 'Finished building: $@' + @echo ' ' + +# Other Targets +clean: + -$(RM) * + -@echo ' ' + +secondary-outputs: $(SIZE_OUTPUT) $(OBJDUMP_LIST) $(OBJCOPY_BIN) + +.PHONY: all clean dependents +.SECONDARY: + +-include ../makefile.targets diff --git a/L476_ats_blink-master/Debug/objects.list b/L476_ats_blink-master/Debug/objects.list new file mode 100644 index 0000000..c4d2e3c --- /dev/null +++ b/L476_ats_blink-master/Debug/objects.list @@ -0,0 +1,11 @@ +"Core/Src/gpio.o" +"Core/Src/main.o" +"Core/Src/stm32l4xx_it.o" +"Core/Src/syscalls.o" +"Core/Src/sysmem.o" +"Core/Src/system_stm32l4xx.o" +"Core/Startup/startup_stm32l476rgtx.o" +"Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.o" +"Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.o" +"Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.o" +"Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.o" diff --git a/L476_ats_blink-master/Debug/objects.mk b/L476_ats_blink-master/Debug/objects.mk new file mode 100644 index 0000000..742c2da --- /dev/null +++ b/L476_ats_blink-master/Debug/objects.mk @@ -0,0 +1,8 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +USER_OBJS := + +LIBS := + diff --git a/L476_ats_blink-master/Debug/sources.mk b/L476_ats_blink-master/Debug/sources.mk new file mode 100644 index 0000000..0bb1d08 --- /dev/null +++ b/L476_ats_blink-master/Debug/sources.mk @@ -0,0 +1,25 @@ +################################################################################ +# Automatically-generated file. Do not edit! +################################################################################ + +ELF_SRCS := +OBJ_SRCS := +S_SRCS := +C_SRCS := +S_UPPER_SRCS := +O_SRCS := +SIZE_OUTPUT := +OBJDUMP_LIST := +EXECUTABLES := +OBJS := +S_DEPS := +S_UPPER_DEPS := +C_DEPS := +OBJCOPY_BIN := + +# Every subdirectory with source files must be described here +SUBDIRS := \ +Core/Src \ +Core/Startup \ +Drivers/STM32L4xx_HAL_Driver/Src \ + diff --git a/L476_ats_blink-master/Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h b/L476_ats_blink-master/Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h new file mode 100644 index 0000000..61341a7 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Device/ST/STM32L4xx/Include/stm32l476xx.h @@ -0,0 +1,18487 @@ +/** + ****************************************************************************** + * @file stm32l476xx.h + * @author MCD Application Team + * @brief CMSIS STM32L476xx 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) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under 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: + * opensource.org/licenses/Apache-2.0 + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS_Device + * @{ + */ + +/** @addtogroup stm32l476xx + * @{ + */ + +#ifndef __STM32L476xx_H +#define __STM32L476xx_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 0x0001 /*!< Cortex-M4 revision r0p1 */ +#define __MPU_PRESENT 1 /*!< STM32L4XX provides an MPU */ +#define __NVIC_PRIO_BITS 4 /*!< STM32L4XX uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */ +#define __FPU_PRESENT 1 /*!< FPU present */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief STM32L4XX 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 */ + TAMP_STAMP_IRQn = 2, /*!< Tamper and TimeStamp interrupts through the EXTI line */ + 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 */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ + ADC1_2_IRQn = 18, /*!< ADC1, ADC2 SAR global Interrupts */ + CAN1_TX_IRQn = 19, /*!< CAN1 TX Interrupt */ + CAN1_RX0_IRQn = 20, /*!< CAN1 RX0 Interrupt */ + CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */ + CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */ + EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */ + TIM1_BRK_TIM15_IRQn = 24, /*!< TIM1 Break interrupt and TIM15 global interrupt */ + TIM1_UP_TIM16_IRQn = 25, /*!< TIM1 Update Interrupt and TIM16 global interrupt */ + TIM1_TRG_COM_TIM17_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt 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 */ + DFSDM1_FLT3_IRQn = 42, /*!< DFSDM1 Filter 3 global Interrupt */ + TIM8_BRK_IRQn = 43, /*!< TIM8 Break Interrupt */ + TIM8_UP_IRQn = 44, /*!< TIM8 Update Interrupt */ + TIM8_TRG_COM_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt */ + TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */ + ADC3_IRQn = 47, /*!< ADC3 global Interrupt */ + FMC_IRQn = 48, /*!< FMC global Interrupt */ + SDMMC1_IRQn = 49, /*!< SDMMC1 global Interrupt */ + TIM5_IRQn = 50, /*!< TIM5 global Interrupt */ + SPI3_IRQn = 51, /*!< SPI3 global Interrupt */ + UART4_IRQn = 52, /*!< UART4 global Interrupt */ + UART5_IRQn = 53, /*!< UART5 global Interrupt */ + TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&2 underrun error interrupts */ + TIM7_IRQn = 55, /*!< TIM7 global interrupt */ + 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 */ + DFSDM1_FLT0_IRQn = 61, /*!< DFSDM1 Filter 0 global Interrupt */ + DFSDM1_FLT1_IRQn = 62, /*!< DFSDM1 Filter 1 global Interrupt */ + DFSDM1_FLT2_IRQn = 63, /*!< DFSDM1 Filter 2 global Interrupt */ + COMP_IRQn = 64, /*!< COMP1 and COMP2 Interrupts */ + LPTIM1_IRQn = 65, /*!< LP TIM1 interrupt */ + LPTIM2_IRQn = 66, /*!< LP TIM2 interrupt */ + OTG_FS_IRQn = 67, /*!< USB OTG FS global Interrupt */ + DMA2_Channel6_IRQn = 68, /*!< DMA2 Channel 6 global interrupt */ + DMA2_Channel7_IRQn = 69, /*!< DMA2 Channel 7 global interrupt */ + LPUART1_IRQn = 70, /*!< LP UART1 interrupt */ + QUADSPI_IRQn = 71, /*!< Quad SPI global interrupt */ + I2C3_EV_IRQn = 72, /*!< I2C3 event interrupt */ + I2C3_ER_IRQn = 73, /*!< I2C3 error interrupt */ + SAI1_IRQn = 74, /*!< Serial Audio Interface 1 global interrupt */ + SAI2_IRQn = 75, /*!< Serial Audio Interface 2 global interrupt */ + SWPMI1_IRQn = 76, /*!< Serial Wire Interface 1 global interrupt */ + TSC_IRQn = 77, /*!< Touch Sense Controller global interrupt */ + LCD_IRQn = 78, /*!< LCD global interrupt */ + RNG_IRQn = 80, /*!< RNG global interrupt */ + FPU_IRQn = 81 /*!< FPU global interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm4.h" /* Cortex-M4 processor and core peripherals */ +#include "system_stm32l4xx.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 1 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 */ + +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< ADC common status register, Address offset: ADC1 base address + 0x300 */ + uint32_t RESERVED; /*!< Reserved, Address offset: ADC1 base address + 0x304 */ + __IO uint32_t CCR; /*!< ADC common configuration register, Address offset: ADC1 base address + 0x308 */ + __IO uint32_t CDR; /*!< ADC common group regular data register Address offset: ADC1 base address + 0x30C */ +} ADC_Common_TypeDef; + + +/** + * @brief Controller Area Network TxMailBox + */ + +typedef struct +{ + __IO uint32_t TIR; /*!< CAN TX mailbox identifier register */ + __IO uint32_t TDTR; /*!< CAN mailbox data length control and time stamp register */ + __IO uint32_t TDLR; /*!< CAN mailbox data low register */ + __IO uint32_t TDHR; /*!< CAN mailbox data high register */ +} CAN_TxMailBox_TypeDef; + +/** + * @brief Controller Area Network FIFOMailBox + */ + +typedef struct +{ + __IO uint32_t RIR; /*!< CAN receive FIFO mailbox identifier register */ + __IO uint32_t RDTR; /*!< CAN receive FIFO mailbox data length control and time stamp register */ + __IO uint32_t RDLR; /*!< CAN receive FIFO mailbox data low register */ + __IO uint32_t RDHR; /*!< CAN receive FIFO mailbox data high register */ +} CAN_FIFOMailBox_TypeDef; + +/** + * @brief Controller Area Network FilterRegister + */ + +typedef struct +{ + __IO uint32_t FR1; /*!< CAN Filter bank register 1 */ + __IO uint32_t FR2; /*!< CAN Filter bank register 1 */ +} CAN_FilterRegister_TypeDef; + +/** + * @brief Controller Area Network + */ + +typedef struct +{ + __IO uint32_t MCR; /*!< CAN master control register, Address offset: 0x00 */ + __IO uint32_t MSR; /*!< CAN master status register, Address offset: 0x04 */ + __IO uint32_t TSR; /*!< CAN transmit status register, Address offset: 0x08 */ + __IO uint32_t RF0R; /*!< CAN receive FIFO 0 register, Address offset: 0x0C */ + __IO uint32_t RF1R; /*!< CAN receive FIFO 1 register, Address offset: 0x10 */ + __IO uint32_t IER; /*!< CAN interrupt enable register, Address offset: 0x14 */ + __IO uint32_t ESR; /*!< CAN error status register, Address offset: 0x18 */ + __IO uint32_t BTR; /*!< CAN bit timing register, Address offset: 0x1C */ + uint32_t RESERVED0[88]; /*!< Reserved, 0x020 - 0x17F */ + CAN_TxMailBox_TypeDef sTxMailBox[3]; /*!< CAN Tx MailBox, Address offset: 0x180 - 0x1AC */ + CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; /*!< CAN FIFO MailBox, Address offset: 0x1B0 - 0x1CC */ + uint32_t RESERVED1[12]; /*!< Reserved, 0x1D0 - 0x1FF */ + __IO uint32_t FMR; /*!< CAN filter master register, Address offset: 0x200 */ + __IO uint32_t FM1R; /*!< CAN filter mode register, Address offset: 0x204 */ + uint32_t RESERVED2; /*!< Reserved, 0x208 */ + __IO uint32_t FS1R; /*!< CAN filter scale register, Address offset: 0x20C */ + uint32_t RESERVED3; /*!< Reserved, 0x210 */ + __IO uint32_t FFA1R; /*!< CAN filter FIFO assignment register, Address offset: 0x214 */ + uint32_t RESERVED4; /*!< Reserved, 0x218 */ + __IO uint32_t FA1R; /*!< CAN filter activation register, Address offset: 0x21C */ + uint32_t RESERVED5[8]; /*!< Reserved, 0x220-0x23F */ + CAN_FilterRegister_TypeDef sFilterRegister[28]; /*!< CAN Filter Register, Address offset: 0x240-0x31C */ +} CAN_TypeDef; + + +/** + * @brief Comparator + */ + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, Address offset: 0x00 */ +} COMP_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< COMP control and status register, used for bits common to several COMP instances, Address offset: 0x00 */ +} COMP_Common_TypeDef; + +/** + * @brief CRC calculation unit + */ + +typedef struct +{ + __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */ + __IO uint8_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */ + uint8_t RESERVED0; /*!< Reserved, 0x05 */ + uint16_t RESERVED1; /*!< Reserved, 0x06 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ + uint32_t RESERVED2; /*!< 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 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 */ +} DAC_TypeDef; + +/** + * @brief DFSDM module registers + */ +typedef struct +{ + __IO uint32_t FLTCR1; /*!< DFSDM control register1, Address offset: 0x100 */ + __IO uint32_t FLTCR2; /*!< DFSDM control register2, Address offset: 0x104 */ + __IO uint32_t FLTISR; /*!< DFSDM interrupt and status register, Address offset: 0x108 */ + __IO uint32_t FLTICR; /*!< DFSDM interrupt flag clear register, Address offset: 0x10C */ + __IO uint32_t FLTJCHGR; /*!< DFSDM injected channel group selection register, Address offset: 0x110 */ + __IO uint32_t FLTFCR; /*!< DFSDM filter control register, Address offset: 0x114 */ + __IO uint32_t FLTJDATAR; /*!< DFSDM data register for injected group, Address offset: 0x118 */ + __IO uint32_t FLTRDATAR; /*!< DFSDM data register for regular group, Address offset: 0x11C */ + __IO uint32_t FLTAWHTR; /*!< DFSDM analog watchdog high threshold register, Address offset: 0x120 */ + __IO uint32_t FLTAWLTR; /*!< DFSDM analog watchdog low threshold register, Address offset: 0x124 */ + __IO uint32_t FLTAWSR; /*!< DFSDM analog watchdog status register Address offset: 0x128 */ + __IO uint32_t FLTAWCFR; /*!< DFSDM analog watchdog clear flag register Address offset: 0x12C */ + __IO uint32_t FLTEXMAX; /*!< DFSDM extreme detector maximum register, Address offset: 0x130 */ + __IO uint32_t FLTEXMIN; /*!< DFSDM extreme detector minimum register Address offset: 0x134 */ + __IO uint32_t FLTCNVTIMR; /*!< DFSDM conversion timer, Address offset: 0x138 */ +} DFSDM_Filter_TypeDef; + +/** + * @brief DFSDM channel configuration registers + */ +typedef struct +{ + __IO uint32_t CHCFGR1; /*!< DFSDM channel configuration register1, Address offset: 0x00 */ + __IO uint32_t CHCFGR2; /*!< DFSDM channel configuration register2, Address offset: 0x04 */ + __IO uint32_t CHAWSCDR; /*!< DFSDM channel analog watchdog and + short circuit detector register, Address offset: 0x08 */ + __IO uint32_t CHWDATAR; /*!< DFSDM channel watchdog filter data register, Address offset: 0x0C */ + __IO uint32_t CHDATINR; /*!< DFSDM channel data input register, Address offset: 0x10 */ +} DFSDM_Channel_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; + +typedef struct +{ + __IO uint32_t CSELR; /*!< DMA channel selection register */ +} DMA_Request_TypeDef; + +/* Legacy define */ +#define DMA_request_TypeDef DMA_Request_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 Firewall + */ + +typedef struct +{ + __IO uint32_t CSSA; /*!< Code Segment Start Address register, Address offset: 0x00 */ + __IO uint32_t CSL; /*!< Code Segment Length register, Address offset: 0x04 */ + __IO uint32_t NVDSSA; /*!< NON volatile data Segment Start Address register, Address offset: 0x08 */ + __IO uint32_t NVDSL; /*!< NON volatile data Segment Length register, Address offset: 0x0C */ + __IO uint32_t VDSSA ; /*!< Volatile data Segment Start Address register, Address offset: 0x10 */ + __IO uint32_t VDSL ; /*!< Volatile data Segment Length register, Address offset: 0x14 */ + uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x18 */ + uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x1C */ + __IO uint32_t CR ; /*!< Configuration register, Address offset: 0x20 */ +} FIREWALL_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 */ + __IO 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[4]; /*!< Reserved2, Address offset: 0x34-0x40 */ + __IO uint32_t PCROP2SR; /*!< FLASH bank2 PCROP start address register, Address offset: 0x44 */ + __IO uint32_t PCROP2ER; /*!< FLASH bank2 PCROP end address register, Address offset: 0x48 */ + __IO uint32_t WRP2AR; /*!< FLASH bank2 WRP area A address register, Address offset: 0x4C */ + __IO uint32_t WRP2BR; /*!< FLASH bank2 WRP area B address register, Address offset: 0x50 */ +} FLASH_TypeDef; + + +/** + * @brief Flexible Memory Controller + */ + +typedef struct +{ + __IO uint32_t BTCR[8]; /*!< NOR/PSRAM chip-select control register(BCR) and chip-select timing register(BTR), Address offset: 0x00-1C */ +} FMC_Bank1_TypeDef; + +/** + * @brief Flexible Memory Controller Bank1E + */ + +typedef struct +{ + __IO uint32_t BWTR[7]; /*!< NOR/PSRAM write timing registers, Address offset: 0x104-0x11C */ +} FMC_Bank1E_TypeDef; + +/** + * @brief Flexible Memory Controller Bank3 + */ + +typedef struct +{ + __IO uint32_t PCR; /*!< NAND Flash control register, Address offset: 0x80 */ + __IO uint32_t SR; /*!< NAND Flash FIFO status and interrupt register, Address offset: 0x84 */ + __IO uint32_t PMEM; /*!< NAND Flash Common memory space timing register, Address offset: 0x88 */ + __IO uint32_t PATT; /*!< NAND Flash Attribute memory space timing register, Address offset: 0x8C */ + uint32_t RESERVED0; /*!< Reserved, 0x90 */ + __IO uint32_t ECCR; /*!< NAND Flash ECC result registers, Address offset: 0x94 */ +} FMC_Bank3_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 */ + __IO uint32_t ASCR; /*!< GPIO analog switch control register, Address offset: 0x2C */ + +} 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 LCD + */ + +typedef struct +{ + __IO uint32_t CR; /*!< LCD control register, Address offset: 0x00 */ + __IO uint32_t FCR; /*!< LCD frame control register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< LCD status register, Address offset: 0x08 */ + __IO uint32_t CLR; /*!< LCD clear register, Address offset: 0x0C */ + uint32_t RESERVED; /*!< Reserved, Address offset: 0x10 */ + __IO uint32_t RAM[16]; /*!< LCD display memory, Address offset: 0x14-0x50 */ +} LCD_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 OTR; /*!< OPAMP offset trimming register for normal mode, Address offset: 0x04 */ + __IO uint32_t LPOTR; /*!< OPAMP offset trimming register for low power mode, Address offset: 0x08 */ +} OPAMP_TypeDef; + +typedef struct +{ + __IO uint32_t CSR; /*!< OPAMP control/status register, used for bits common to several OPAMP instances, Address offset: 0x00 */ +} OPAMP_Common_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 */ + __IO uint32_t PUCRH; /*!< Pull_up control register of portH, Address offset: 0x58 */ + __IO uint32_t PDCRH; /*!< Pull_Down control register of portH, Address offset: 0x5C */ +} PWR_TypeDef; + + +/** + * @brief QUAD Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR; /*!< QUADSPI Control register, Address offset: 0x00 */ + __IO uint32_t DCR; /*!< QUADSPI Device Configuration register, Address offset: 0x04 */ + __IO uint32_t SR; /*!< QUADSPI Status register, Address offset: 0x08 */ + __IO uint32_t FCR; /*!< QUADSPI Flag Clear register, Address offset: 0x0C */ + __IO uint32_t DLR; /*!< QUADSPI Data Length register, Address offset: 0x10 */ + __IO uint32_t CCR; /*!< QUADSPI Communication Configuration register, Address offset: 0x14 */ + __IO uint32_t AR; /*!< QUADSPI Address register, Address offset: 0x18 */ + __IO uint32_t ABR; /*!< QUADSPI Alternate Bytes register, Address offset: 0x1C */ + __IO uint32_t DR; /*!< QUADSPI Data register, Address offset: 0x20 */ + __IO uint32_t PSMKR; /*!< QUADSPI Polling Status Mask register, Address offset: 0x24 */ + __IO uint32_t PSMAR; /*!< QUADSPI Polling Status Match register, Address offset: 0x28 */ + __IO uint32_t PIR; /*!< QUADSPI Polling Interval register, Address offset: 0x2C */ + __IO uint32_t LPTR; /*!< QUADSPI Low Power Timeout register, Address offset: 0x30 */ +} QUADSPI_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 */ + __IO uint32_t PLLSAI1CFGR; /*!< RCC PLL SAI1 configuration register, Address offset: 0x10 */ + __IO uint32_t PLLSAI2CFGR; /*!< RCC PLL SAI2 configuration register, 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 RESERVED0; /*!< 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 RESERVED1; /*!< 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 RESERVED2; /*!< 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 RESERVED3; /*!< 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 RESERVED4; /*!< 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 RESERVED5; /*!< 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 RESERVED6; /*!< Reserved, Address offset: 0x84 */ + __IO uint32_t CCIPR; /*!< RCC peripherals independent clock configuration register, Address offset: 0x88 */ + uint32_t RESERVED7; /*!< 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 */ +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ + +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 CR; /*!< RTC control register, Address offset: 0x08 */ + __IO uint32_t ISR; /*!< RTC initialization 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 */ + uint32_t reserved; /*!< Reserved */ + __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x1C */ + __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x20 */ + __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */ + __IO uint32_t SSR; /*!< RTC sub second 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 */ + __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x3C */ + __IO uint32_t TAMPCR; /*!< RTC tamper configuration register, Address offset: 0x40 */ + __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */ + __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x48 */ + __IO uint32_t OR; /*!< RTC option register, Address offset: 0x4C */ + __IO uint32_t BKP0R; /*!< RTC backup register 0, Address offset: 0x50 */ + __IO uint32_t BKP1R; /*!< RTC backup register 1, Address offset: 0x54 */ + __IO uint32_t BKP2R; /*!< RTC backup register 2, Address offset: 0x58 */ + __IO uint32_t BKP3R; /*!< RTC backup register 3, Address offset: 0x5C */ + __IO uint32_t BKP4R; /*!< RTC backup register 4, Address offset: 0x60 */ + __IO uint32_t BKP5R; /*!< RTC backup register 5, Address offset: 0x64 */ + __IO uint32_t BKP6R; /*!< RTC backup register 6, Address offset: 0x68 */ + __IO uint32_t BKP7R; /*!< RTC backup register 7, Address offset: 0x6C */ + __IO uint32_t BKP8R; /*!< RTC backup register 8, Address offset: 0x70 */ + __IO uint32_t BKP9R; /*!< RTC backup register 9, Address offset: 0x74 */ + __IO uint32_t BKP10R; /*!< RTC backup register 10, Address offset: 0x78 */ + __IO uint32_t BKP11R; /*!< RTC backup register 11, Address offset: 0x7C */ + __IO uint32_t BKP12R; /*!< RTC backup register 12, Address offset: 0x80 */ + __IO uint32_t BKP13R; /*!< RTC backup register 13, Address offset: 0x84 */ + __IO uint32_t BKP14R; /*!< RTC backup register 14, Address offset: 0x88 */ + __IO uint32_t BKP15R; /*!< RTC backup register 15, Address offset: 0x8C */ + __IO uint32_t BKP16R; /*!< RTC backup register 16, Address offset: 0x90 */ + __IO uint32_t BKP17R; /*!< RTC backup register 17, Address offset: 0x94 */ + __IO uint32_t BKP18R; /*!< RTC backup register 18, Address offset: 0x98 */ + __IO uint32_t BKP19R; /*!< RTC backup register 19, Address offset: 0x9C */ + __IO uint32_t BKP20R; /*!< RTC backup register 20, Address offset: 0xA0 */ + __IO uint32_t BKP21R; /*!< RTC backup register 21, Address offset: 0xA4 */ + __IO uint32_t BKP22R; /*!< RTC backup register 22, Address offset: 0xA8 */ + __IO uint32_t BKP23R; /*!< RTC backup register 23, Address offset: 0xAC */ + __IO uint32_t BKP24R; /*!< RTC backup register 24, Address offset: 0xB0 */ + __IO uint32_t BKP25R; /*!< RTC backup register 25, Address offset: 0xB4 */ + __IO uint32_t BKP26R; /*!< RTC backup register 26, Address offset: 0xB8 */ + __IO uint32_t BKP27R; /*!< RTC backup register 27, Address offset: 0xBC */ + __IO uint32_t BKP28R; /*!< RTC backup register 28, Address offset: 0xC0 */ + __IO uint32_t BKP29R; /*!< RTC backup register 29, Address offset: 0xC4 */ + __IO uint32_t BKP30R; /*!< RTC backup register 30, Address offset: 0xC8 */ + __IO uint32_t BKP31R; /*!< RTC backup register 31, Address offset: 0xCC */ +} RTC_TypeDef; + +/** + * @brief Serial Audio Interface + */ + +typedef struct +{ + __IO uint32_t GCR; /*!< SAI global configuration register, Address offset: 0x00 */ +} 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 Secure digital input/output Interface + */ + +typedef struct +{ + __IO uint32_t POWER; /*!< SDMMC power control register, Address offset: 0x00 */ + __IO uint32_t CLKCR; /*!< SDMMC clock control register, Address offset: 0x04 */ + __IO uint32_t ARG; /*!< SDMMC argument register, Address offset: 0x08 */ + __IO uint32_t CMD; /*!< SDMMC command register, Address offset: 0x0C */ + __I uint32_t RESPCMD; /*!< SDMMC command response register, Address offset: 0x10 */ + __I uint32_t RESP1; /*!< SDMMC response 1 register, Address offset: 0x14 */ + __I uint32_t RESP2; /*!< SDMMC response 2 register, Address offset: 0x18 */ + __I uint32_t RESP3; /*!< SDMMC response 3 register, Address offset: 0x1C */ + __I uint32_t RESP4; /*!< SDMMC response 4 register, Address offset: 0x20 */ + __IO uint32_t DTIMER; /*!< SDMMC data timer register, Address offset: 0x24 */ + __IO uint32_t DLEN; /*!< SDMMC data length register, Address offset: 0x28 */ + __IO uint32_t DCTRL; /*!< SDMMC data control register, Address offset: 0x2C */ + __I uint32_t DCOUNT; /*!< SDMMC data counter register, Address offset: 0x30 */ + __I uint32_t STA; /*!< SDMMC status register, Address offset: 0x34 */ + __IO uint32_t ICR; /*!< SDMMC interrupt clear register, Address offset: 0x38 */ + __IO uint32_t MASK; /*!< SDMMC mask register, Address offset: 0x3C */ + uint32_t RESERVED0[2]; /*!< Reserved, 0x40-0x44 */ + __I uint32_t FIFOCNT; /*!< SDMMC FIFO counter register, Address offset: 0x48 */ + uint32_t RESERVED1[13]; /*!< Reserved, 0x4C-0x7C */ + __IO uint32_t FIFO; /*!< SDMMC data FIFO register, Address offset: 0x80 */ +} SDMMC_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 */ +} SPI_TypeDef; + + +/** + * @brief Single Wire Protocol Master Interface SPWMI + */ + +typedef struct +{ + __IO uint32_t CR; /*!< SWPMI Configuration/Control register, Address offset: 0x00 */ + __IO uint32_t BRR; /*!< SWPMI bitrate register, Address offset: 0x04 */ + uint32_t RESERVED1; /*!< Reserved, 0x08 */ + __IO uint32_t ISR; /*!< SWPMI Interrupt and Status register, Address offset: 0x0C */ + __IO uint32_t ICR; /*!< SWPMI Interrupt Flag Clear register, Address offset: 0x10 */ + __IO uint32_t IER; /*!< SWPMI Interrupt Enable register, Address offset: 0x14 */ + __IO uint32_t RFL; /*!< SWPMI Receive Frame Length register, Address offset: 0x18 */ + __IO uint32_t TDR; /*!< SWPMI Transmit data register, Address offset: 0x1C */ + __IO uint32_t RDR; /*!< SWPMI Receive data register, Address offset: 0x20 */ + __IO uint32_t OR; /*!< SWPMI Option register, Address offset: 0x24 */ +} SWPMI_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 SRAM2 control and status register, Address offset: 0x18 */ + __IO uint32_t CFGR2; /*!< SYSCFG configuration register 2, Address offset: 0x1C */ + __IO uint32_t SWPR; /*!< SYSCFG SRAM2 write protection register, Address offset: 0x20 */ + __IO uint32_t SKR; /*!< SYSCFG SRAM2 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 DCR; /*!< TIM DMA control register, Address offset: 0x48 */ + __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x4C */ + __IO uint32_t OR1; /*!< TIM option register 1, Address offset: 0x50 */ + __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x54 */ + __IO uint32_t CCR5; /*!< TIM capture/compare register5, Address offset: 0x58 */ + __IO uint32_t CCR6; /*!< TIM capture/compare register6, Address offset: 0x5C */ + __IO uint32_t OR2; /*!< TIM option register 2, Address offset: 0x60 */ + __IO uint32_t OR3; /*!< TIM option register 3, Address offset: 0x64 */ +} TIM_TypeDef; + + +/** + * @brief Touch Sensing Controller (TSC) + */ + +typedef struct +{ + __IO uint32_t CR; /*!< TSC control register, Address offset: 0x00 */ + __IO uint32_t IER; /*!< TSC interrupt enable register, Address offset: 0x04 */ + __IO uint32_t ICR; /*!< TSC interrupt clear register, Address offset: 0x08 */ + __IO uint32_t ISR; /*!< TSC interrupt status register, Address offset: 0x0C */ + __IO uint32_t IOHCR; /*!< TSC I/O hysteresis control register, Address offset: 0x10 */ + uint32_t RESERVED1; /*!< Reserved, Address offset: 0x14 */ + __IO uint32_t IOASCR; /*!< TSC I/O analog switch control register, Address offset: 0x18 */ + uint32_t RESERVED2; /*!< Reserved, Address offset: 0x1C */ + __IO uint32_t IOSCR; /*!< TSC I/O sampling control register, Address offset: 0x20 */ + uint32_t RESERVED3; /*!< Reserved, Address offset: 0x24 */ + __IO uint32_t IOCCR; /*!< TSC I/O channel control register, Address offset: 0x28 */ + uint32_t RESERVED4; /*!< Reserved, Address offset: 0x2C */ + __IO uint32_t IOGCSR; /*!< TSC I/O group control status register, Address offset: 0x30 */ + __IO uint32_t IOGXCR[8]; /*!< TSC I/O group x counter register, Address offset: 0x34-50 */ +} TSC_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 uint16_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */ + uint16_t RESERVED2; /*!< Reserved, 0x12 */ + __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */ + __IO uint16_t RQR; /*!< USART Request register, Address offset: 0x18 */ + uint16_t RESERVED3; /*!< Reserved, 0x1A */ + __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 uint16_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */ + uint16_t RESERVED4; /*!< Reserved, 0x26 */ + __IO uint16_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */ + uint16_t RESERVED5; /*!< Reserved, 0x2A */ +} USART_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 USB_OTG_Core_register + */ +typedef struct +{ + __IO uint32_t GOTGCTL; /*!< USB_OTG Control and Status Register 000h*/ + __IO uint32_t GOTGINT; /*!< USB_OTG Interrupt Register 004h*/ + __IO uint32_t GAHBCFG; /*!< Core AHB Configuration Register 008h*/ + __IO uint32_t GUSBCFG; /*!< Core USB Configuration Register 00Ch*/ + __IO uint32_t GRSTCTL; /*!< Core Reset Register 010h*/ + __IO uint32_t GINTSTS; /*!< Core Interrupt Register 014h*/ + __IO uint32_t GINTMSK; /*!< Core Interrupt Mask Register 018h*/ + __IO uint32_t GRXSTSR; /*!< Receive Sts Q Read Register 01Ch*/ + __IO uint32_t GRXSTSP; /*!< Receive Sts Q Read & POP Register 020h*/ + __IO uint32_t GRXFSIZ; /*!< Receive FIFO Size Register 024h*/ + __IO uint32_t DIEPTXF0_HNPTXFSIZ; /*!< EP0 / Non Periodic Tx FIFO Size Register 028h*/ + __IO uint32_t HNPTXSTS; /*!< Non Periodic Tx FIFO/Queue Sts reg 02Ch*/ + uint32_t Reserved30[2]; /*!< Reserved 030h*/ + __IO uint32_t GCCFG; /*!< General Purpose IO Register 038h*/ + __IO uint32_t CID; /*!< User ID Register 03Ch*/ + __IO uint32_t GSNPSID; /*!< USB_OTG core ID 040h*/ + __IO uint32_t GHWCFG1; /*!< User HW config1 044h*/ + __IO uint32_t GHWCFG2; /*!< User HW config2 048h*/ + __IO uint32_t GHWCFG3; /*!< User HW config3 04Ch*/ + uint32_t Reserved6; /*!< Reserved 050h*/ + __IO uint32_t GLPMCFG; /*!< LPM Register 054h*/ + __IO uint32_t GPWRDN; /*!< Power Down Register 058h*/ + __IO uint32_t GDFIFOCFG; /*!< DFIFO Software Config Register 05Ch*/ + __IO uint32_t GADPCTL; /*!< ADP Timer, Control and Status Register 060h*/ + uint32_t Reserved43[39]; /*!< Reserved 064h-0FFh*/ + __IO uint32_t HPTXFSIZ; /*!< Host Periodic Tx FIFO Size Reg 100h*/ + __IO uint32_t DIEPTXF[0x0F]; /*!< dev Periodic Transmit FIFO */ +} USB_OTG_GlobalTypeDef; + +/** + * @brief USB_OTG_device_Registers + */ +typedef struct +{ + __IO uint32_t DCFG; /* dev Configuration Register 800h*/ + __IO uint32_t DCTL; /* dev Control Register 804h*/ + __IO uint32_t DSTS; /* dev Status Register (RO) 808h*/ + uint32_t Reserved0C; /* Reserved 80Ch*/ + __IO uint32_t DIEPMSK; /* dev IN Endpoint Mask 810h*/ + __IO uint32_t DOEPMSK; /* dev OUT Endpoint Mask 814h*/ + __IO uint32_t DAINT; /* dev All Endpoints Itr Reg 818h*/ + __IO uint32_t DAINTMSK; /* dev All Endpoints Itr Mask 81Ch*/ + uint32_t Reserved20; /* Reserved 820h*/ + uint32_t Reserved24; /* Reserved 824h*/ + __IO uint32_t DVBUSDIS; /* dev VBUS discharge Register 828h*/ + __IO uint32_t DVBUSPULSE; /* dev VBUS Pulse Register 82Ch*/ + __IO uint32_t DTHRCTL; /* dev thr 830h*/ + __IO uint32_t DIEPEMPMSK; /* dev empty msk 834h*/ + __IO uint32_t DEACHINT; /* dedicated EP interrupt 838h*/ + __IO uint32_t DEACHMSK; /* dedicated EP msk 83Ch*/ + uint32_t Reserved40; /* Reserved 840h*/ + __IO uint32_t DINEP1MSK; /* dedicated EP mask 844h*/ + uint32_t Reserved44[15]; /* Reserved 848-880h*/ + __IO uint32_t DOUTEP1MSK; /* dedicated EP msk 884h*/ +} USB_OTG_DeviceTypeDef; + +/** + * @brief USB_OTG_IN_Endpoint-Specific_Register + */ +typedef struct +{ + __IO uint32_t DIEPCTL; /* dev IN Endpoint Control Reg 900h + (ep_num * 20h) + 00h*/ + uint32_t Reserved04; /* Reserved 900h + (ep_num * 20h) + 04h*/ + __IO uint32_t DIEPINT; /* dev IN Endpoint Itr Reg 900h + (ep_num * 20h) + 08h*/ + uint32_t Reserved0C; /* Reserved 900h + (ep_num * 20h) + 0Ch*/ + __IO uint32_t DIEPTSIZ; /* IN Endpoint Txfer Size 900h + (ep_num * 20h) + 10h*/ + __IO uint32_t DIEPDMA; /* IN Endpoint DMA Address Reg 900h + (ep_num * 20h) + 14h*/ + __IO uint32_t DTXFSTS; /*IN Endpoint Tx FIFO Status Reg 900h + (ep_num * 20h) + 18h*/ + uint32_t Reserved18; /* Reserved 900h+(ep_num*20h)+1Ch-900h+ (ep_num * 20h) + 1Ch*/ +} USB_OTG_INEndpointTypeDef; + +/** + * @brief USB_OTG_OUT_Endpoint-Specific_Registers + */ +typedef struct +{ + __IO uint32_t DOEPCTL; /* dev OUT Endpoint Control Reg B00h + (ep_num * 20h) + 00h*/ + uint32_t Reserved04; /* Reserved B00h + (ep_num * 20h) + 04h*/ + __IO uint32_t DOEPINT; /* dev OUT Endpoint Itr Reg B00h + (ep_num * 20h) + 08h*/ + uint32_t Reserved0C; /* Reserved B00h + (ep_num * 20h) + 0Ch*/ + __IO uint32_t DOEPTSIZ; /* dev OUT Endpoint Txfer Size B00h + (ep_num * 20h) + 10h*/ + __IO uint32_t DOEPDMA; /* dev OUT Endpoint DMA Address B00h + (ep_num * 20h) + 14h*/ + uint32_t Reserved18[2]; /* Reserved B00h + (ep_num * 20h) + 18h - B00h + (ep_num * 20h) + 1Ch*/ +} USB_OTG_OUTEndpointTypeDef; + +/** + * @brief USB_OTG_Host_Mode_Register_Structures + */ +typedef struct +{ + __IO uint32_t HCFG; /* Host Configuration Register 400h*/ + __IO uint32_t HFIR; /* Host Frame Interval Register 404h*/ + __IO uint32_t HFNUM; /* Host Frame Nbr/Frame Remaining 408h*/ + uint32_t Reserved40C; /* Reserved 40Ch*/ + __IO uint32_t HPTXSTS; /* Host Periodic Tx FIFO/ Queue Status 410h*/ + __IO uint32_t HAINT; /* Host All Channels Interrupt Register 414h*/ + __IO uint32_t HAINTMSK; /* Host All Channels Interrupt Mask 418h*/ +} USB_OTG_HostTypeDef; + +/** + * @brief USB_OTG_Host_Channel_Specific_Registers + */ +typedef struct +{ + __IO uint32_t HCCHAR; + __IO uint32_t HCSPLT; + __IO uint32_t HCINT; + __IO uint32_t HCINTMSK; + __IO uint32_t HCTSIZ; + __IO uint32_t HCDMA; + uint32_t Reserved[2]; +} USB_OTG_HostChannelTypeDef; + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ +#define FLASH_BASE (0x08000000UL) /*!< FLASH(up to 1 MB) base address */ +#define FLASH_END (0x080FFFFFUL) /*!< FLASH END address */ +#define FLASH_BANK1_END (0x0807FFFFUL) /*!< FLASH END address of bank1 */ +#define FLASH_BANK2_END (0x080FFFFFUL) /*!< FLASH END address of bank2 */ +#define SRAM1_BASE (0x20000000UL) /*!< SRAM1(up to 96 KB) base address */ +#define SRAM2_BASE (0x10000000UL) /*!< SRAM2(32 KB) base address */ +#define PERIPH_BASE (0x40000000UL) /*!< Peripheral base address */ +#define FMC_BASE (0x60000000UL) /*!< FMC base address */ +#define QSPI_BASE (0x90000000UL) /*!< QUADSPI memories accessible over AHB base address */ + +#define FMC_R_BASE (0xA0000000UL) /*!< FMC control registers base address */ +#define QSPI_R_BASE (0xA0001000UL) /*!< QUADSPI control registers base address */ +#define SRAM1_BB_BASE (0x22000000UL) /*!< SRAM1(96 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 (0x00018000UL) /*!< maximum SRAM1 size (up to 96 KBytes) */ +#define SRAM2_SIZE (0x00008000UL) /*!< SRAM2 size (32 KBytes) */ + +#define FLASH_SIZE_DATA_REGISTER ((uint32_t)0x1FFF75E0) + +#define FLASH_SIZE (((((*((uint32_t *)FLASH_SIZE_DATA_REGISTER)) & (0x0000FFFFU))== 0x0000FFFFU)) ? (0x400U << 10U) : \ + (((*((uint32_t *)FLASH_SIZE_DATA_REGISTER)) & (0x0000FFFFU)) << 10U)) + +/*!< 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) + +#define FMC_BANK1 FMC_BASE +#define FMC_BANK1_1 FMC_BANK1 +#define FMC_BANK1_2 (FMC_BANK1 + 0x04000000UL) +#define FMC_BANK1_3 (FMC_BANK1 + 0x08000000UL) +#define FMC_BANK1_4 (FMC_BANK1 + 0x0C000000UL) +#define FMC_BANK3 (FMC_BASE + 0x20000000UL) + +/*!< APB1 peripherals */ +#define TIM2_BASE (APB1PERIPH_BASE + 0x0000UL) +#define TIM3_BASE (APB1PERIPH_BASE + 0x0400UL) +#define TIM4_BASE (APB1PERIPH_BASE + 0x0800UL) +#define TIM5_BASE (APB1PERIPH_BASE + 0x0C00UL) +#define TIM6_BASE (APB1PERIPH_BASE + 0x1000UL) +#define TIM7_BASE (APB1PERIPH_BASE + 0x1400UL) +#define LCD_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 UART5_BASE (APB1PERIPH_BASE + 0x5000UL) +#define I2C1_BASE (APB1PERIPH_BASE + 0x5400UL) +#define I2C2_BASE (APB1PERIPH_BASE + 0x5800UL) +#define I2C3_BASE (APB1PERIPH_BASE + 0x5C00UL) +#define CAN1_BASE (APB1PERIPH_BASE + 0x6400UL) +#define PWR_BASE (APB1PERIPH_BASE + 0x7000UL) +#define DAC_BASE (APB1PERIPH_BASE + 0x7400UL) +#define DAC1_BASE (APB1PERIPH_BASE + 0x7400UL) +#define OPAMP_BASE (APB1PERIPH_BASE + 0x7800UL) +#define OPAMP1_BASE (APB1PERIPH_BASE + 0x7800UL) +#define OPAMP2_BASE (APB1PERIPH_BASE + 0x7810UL) +#define LPTIM1_BASE (APB1PERIPH_BASE + 0x7C00UL) +#define LPUART1_BASE (APB1PERIPH_BASE + 0x8000UL) +#define SWPMI1_BASE (APB1PERIPH_BASE + 0x8800UL) +#define LPTIM2_BASE (APB1PERIPH_BASE + 0x9400UL) + + +/*!< 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 EXTI_BASE (APB2PERIPH_BASE + 0x0400UL) +#define FIREWALL_BASE (APB2PERIPH_BASE + 0x1C00UL) +#define SDMMC1_BASE (APB2PERIPH_BASE + 0x2800UL) +#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) +#define SAI2_BASE (APB2PERIPH_BASE + 0x5800UL) +#define SAI2_Block_A_BASE (SAI2_BASE + 0x0004UL) +#define SAI2_Block_B_BASE (SAI2_BASE + 0x0024UL) +#define DFSDM1_BASE (APB2PERIPH_BASE + 0x6000UL) +#define DFSDM1_Channel0_BASE (DFSDM1_BASE + 0x0000UL) +#define DFSDM1_Channel1_BASE (DFSDM1_BASE + 0x0020UL) +#define DFSDM1_Channel2_BASE (DFSDM1_BASE + 0x0040UL) +#define DFSDM1_Channel3_BASE (DFSDM1_BASE + 0x0060UL) +#define DFSDM1_Channel4_BASE (DFSDM1_BASE + 0x0080UL) +#define DFSDM1_Channel5_BASE (DFSDM1_BASE + 0x00A0UL) +#define DFSDM1_Channel6_BASE (DFSDM1_BASE + 0x00C0UL) +#define DFSDM1_Channel7_BASE (DFSDM1_BASE + 0x00E0UL) +#define DFSDM1_Filter0_BASE (DFSDM1_BASE + 0x0100UL) +#define DFSDM1_Filter1_BASE (DFSDM1_BASE + 0x0180UL) +#define DFSDM1_Filter2_BASE (DFSDM1_BASE + 0x0200UL) +#define DFSDM1_Filter3_BASE (DFSDM1_BASE + 0x0280UL) + +/*!< AHB1 peripherals */ +#define DMA1_BASE (AHB1PERIPH_BASE) +#define DMA2_BASE (AHB1PERIPH_BASE + 0x0400UL) +#define RCC_BASE (AHB1PERIPH_BASE + 0x1000UL) +#define FLASH_R_BASE (AHB1PERIPH_BASE + 0x2000UL) +#define CRC_BASE (AHB1PERIPH_BASE + 0x3000UL) +#define TSC_BASE (AHB1PERIPH_BASE + 0x4000UL) + + +#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 DMA1_Channel7_BASE (DMA1_BASE + 0x0080UL) +#define DMA1_CSELR_BASE (DMA1_BASE + 0x00A8UL) + + +#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 DMA2_Channel7_BASE (DMA2_BASE + 0x0080UL) +#define DMA2_CSELR_BASE (DMA2_BASE + 0x00A8UL) + + +/*!< 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 GPIOH_BASE (AHB2PERIPH_BASE + 0x1C00UL) + +#define USBOTG_BASE (AHB2PERIPH_BASE + 0x08000000UL) + +#define ADC1_BASE (AHB2PERIPH_BASE + 0x08040000UL) +#define ADC2_BASE (AHB2PERIPH_BASE + 0x08040100UL) +#define ADC3_BASE (AHB2PERIPH_BASE + 0x08040200UL) +#define ADC123_COMMON_BASE (AHB2PERIPH_BASE + 0x08040300UL) + + +#define RNG_BASE (AHB2PERIPH_BASE + 0x08060800UL) + + +/*!< FMC Banks registers base address */ +#define FMC_Bank1_R_BASE (FMC_R_BASE + 0x0000UL) +#define FMC_Bank1E_R_BASE (FMC_R_BASE + 0x0104UL) +#define FMC_Bank3_R_BASE (FMC_R_BASE + 0x0080UL) + +/* Debug MCU registers base address */ +#define DBGMCU_BASE (0xE0042000UL) + +/*!< USB registers base address */ +#define USB_OTG_FS_PERIPH_BASE (0x50000000UL) + +#define USB_OTG_GLOBAL_BASE (0x00000000UL) +#define USB_OTG_DEVICE_BASE (0x00000800UL) +#define USB_OTG_IN_ENDPOINT_BASE (0x00000900UL) +#define USB_OTG_OUT_ENDPOINT_BASE (0x00000B00UL) +#define USB_OTG_EP_REG_SIZE (0x00000020UL) +#define USB_OTG_HOST_BASE (0x00000400UL) +#define USB_OTG_HOST_PORT_BASE (0x00000440UL) +#define USB_OTG_HOST_CHANNEL_BASE (0x00000500UL) +#define USB_OTG_HOST_CHANNEL_SIZE (0x00000020UL) +#define USB_OTG_PCGCCTL_BASE (0x00000E00UL) +#define USB_OTG_FIFO_BASE (0x00001000UL) +#define USB_OTG_FIFO_SIZE (0x00001000UL) + + +#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 TIM5 ((TIM_TypeDef *) TIM5_BASE) +#define TIM6 ((TIM_TypeDef *) TIM6_BASE) +#define TIM7 ((TIM_TypeDef *) TIM7_BASE) +#define LCD ((LCD_TypeDef *) LCD_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 UART5 ((USART_TypeDef *) UART5_BASE) +#define I2C1 ((I2C_TypeDef *) I2C1_BASE) +#define I2C2 ((I2C_TypeDef *) I2C2_BASE) +#define I2C3 ((I2C_TypeDef *) I2C3_BASE) +#define CAN ((CAN_TypeDef *) CAN1_BASE) +#define CAN1 ((CAN_TypeDef *) CAN1_BASE) +#define PWR ((PWR_TypeDef *) PWR_BASE) +#define DAC ((DAC_TypeDef *) DAC1_BASE) +#define DAC1 ((DAC_TypeDef *) DAC1_BASE) +#define OPAMP ((OPAMP_TypeDef *) OPAMP_BASE) +#define OPAMP1 ((OPAMP_TypeDef *) OPAMP1_BASE) +#define OPAMP2 ((OPAMP_TypeDef *) OPAMP2_BASE) +#define OPAMP12_COMMON ((OPAMP_Common_TypeDef *) OPAMP1_BASE) +#define LPTIM1 ((LPTIM_TypeDef *) LPTIM1_BASE) +#define LPUART1 ((USART_TypeDef *) LPUART1_BASE) +#define SWPMI1 ((SWPMI_TypeDef *) SWPMI1_BASE) +#define LPTIM2 ((LPTIM_TypeDef *) LPTIM2_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 COMP12_COMMON ((COMP_Common_TypeDef *) COMP2_BASE) +#define EXTI ((EXTI_TypeDef *) EXTI_BASE) +#define FIREWALL ((FIREWALL_TypeDef *) FIREWALL_BASE) +#define SDMMC1 ((SDMMC_TypeDef *) SDMMC1_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 SAI2 ((SAI_TypeDef *) SAI2_BASE) +#define SAI2_Block_A ((SAI_Block_TypeDef *)SAI2_Block_A_BASE) +#define SAI2_Block_B ((SAI_Block_TypeDef *)SAI2_Block_B_BASE) +#define DFSDM1_Channel0 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel0_BASE) +#define DFSDM1_Channel1 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel1_BASE) +#define DFSDM1_Channel2 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel2_BASE) +#define DFSDM1_Channel3 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel3_BASE) +#define DFSDM1_Channel4 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel4_BASE) +#define DFSDM1_Channel5 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel5_BASE) +#define DFSDM1_Channel6 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel6_BASE) +#define DFSDM1_Channel7 ((DFSDM_Channel_TypeDef *) DFSDM1_Channel7_BASE) +#define DFSDM1_Filter0 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter0_BASE) +#define DFSDM1_Filter1 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter1_BASE) +#define DFSDM1_Filter2 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter2_BASE) +#define DFSDM1_Filter3 ((DFSDM_Filter_TypeDef *) DFSDM1_Filter3_BASE) +/* Aliases to keep compatibility after DFSDM renaming */ +#define DFSDM_Channel0 DFSDM1_Channel0 +#define DFSDM_Channel1 DFSDM1_Channel1 +#define DFSDM_Channel2 DFSDM1_Channel2 +#define DFSDM_Channel3 DFSDM1_Channel3 +#define DFSDM_Channel4 DFSDM1_Channel4 +#define DFSDM_Channel5 DFSDM1_Channel5 +#define DFSDM_Channel6 DFSDM1_Channel6 +#define DFSDM_Channel7 DFSDM1_Channel7 +#define DFSDM_Filter0 DFSDM1_Filter0 +#define DFSDM_Filter1 DFSDM1_Filter1 +#define DFSDM_Filter2 DFSDM1_Filter2 +#define DFSDM_Filter3 DFSDM1_Filter3 +#define DMA1 ((DMA_TypeDef *) DMA1_BASE) +#define DMA2 ((DMA_TypeDef *) DMA2_BASE) +#define RCC ((RCC_TypeDef *) RCC_BASE) +#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) +#define CRC ((CRC_TypeDef *) CRC_BASE) +#define TSC ((TSC_TypeDef *) TSC_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 GPIOH ((GPIO_TypeDef *) GPIOH_BASE) +#define ADC1 ((ADC_TypeDef *) ADC1_BASE) +#define ADC2 ((ADC_TypeDef *) ADC2_BASE) +#define ADC3 ((ADC_TypeDef *) ADC3_BASE) +#define ADC123_COMMON ((ADC_Common_TypeDef *) ADC123_COMMON_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 DMA1_Channel7 ((DMA_Channel_TypeDef *) DMA1_Channel7_BASE) +#define DMA1_CSELR ((DMA_Request_TypeDef *) DMA1_CSELR_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 DMA2_Channel7 ((DMA_Channel_TypeDef *) DMA2_Channel7_BASE) +#define DMA2_CSELR ((DMA_Request_TypeDef *) DMA2_CSELR_BASE) + + +#define FMC_Bank1_R ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE) +#define FMC_Bank1E_R ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE) +#define FMC_Bank3_R ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE) + +#define QUADSPI ((QUADSPI_TypeDef *) QSPI_R_BASE) + +#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE) + +#define USB_OTG_FS ((USB_OTG_GlobalTypeDef *) USB_OTG_FS_PERIPH_BASE) +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + +/** @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 STM32L4 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 */ + +/* Legacy defines */ +#define ADC_IER_ADRDY (ADC_IER_ADRDYIE) +#define ADC_IER_EOSMP (ADC_IER_EOSMPIE) +#define ADC_IER_EOC (ADC_IER_EOCIE) +#define ADC_IER_EOS (ADC_IER_EOSIE) +#define ADC_IER_OVR (ADC_IER_OVRIE) +#define ADC_IER_JEOC (ADC_IER_JEOCIE) +#define ADC_IER_JEOS (ADC_IER_JEOSIE) +#define ADC_IER_AWD1 (ADC_IER_AWD1IE) +#define ADC_IER_AWD2 (ADC_IER_AWD2IE) +#define ADC_IER_AWD3 (ADC_IER_AWD3IE) +#define ADC_IER_JQOVF (ADC_IER_JQOVFIE) + +/******************** 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_ALIGN_Pos (5U) +#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00000020 */ +#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignement */ + +#define ADC_CFGR_EXTSEL_Pos (6U) +#define ADC_CFGR_EXTSEL_Msk (0xFUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003C0 */ +#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */ +#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */ +#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */ +#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */ +#define ADC_CFGR_EXTSEL_3 (0x8UL << 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_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 */ + +/******************** 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 */ + +/******************** 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_LT1_0 (0x001UL << ADC_TR1_LT1_Pos) /*!< 0x00000001 */ +#define ADC_TR1_LT1_1 (0x002UL << ADC_TR1_LT1_Pos) /*!< 0x00000002 */ +#define ADC_TR1_LT1_2 (0x004UL << ADC_TR1_LT1_Pos) /*!< 0x00000004 */ +#define ADC_TR1_LT1_3 (0x008UL << ADC_TR1_LT1_Pos) /*!< 0x00000008 */ +#define ADC_TR1_LT1_4 (0x010UL << ADC_TR1_LT1_Pos) /*!< 0x00000010 */ +#define ADC_TR1_LT1_5 (0x020UL << ADC_TR1_LT1_Pos) /*!< 0x00000020 */ +#define ADC_TR1_LT1_6 (0x040UL << ADC_TR1_LT1_Pos) /*!< 0x00000040 */ +#define ADC_TR1_LT1_7 (0x080UL << ADC_TR1_LT1_Pos) /*!< 0x00000080 */ +#define ADC_TR1_LT1_8 (0x100UL << ADC_TR1_LT1_Pos) /*!< 0x00000100 */ +#define ADC_TR1_LT1_9 (0x200UL << ADC_TR1_LT1_Pos) /*!< 0x00000200 */ +#define ADC_TR1_LT1_10 (0x400UL << ADC_TR1_LT1_Pos) /*!< 0x00000400 */ +#define ADC_TR1_LT1_11 (0x800UL << ADC_TR1_LT1_Pos) /*!< 0x00000800 */ + +#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 */ +#define ADC_TR1_HT1_0 (0x001UL << ADC_TR1_HT1_Pos) /*!< 0x00010000 */ +#define ADC_TR1_HT1_1 (0x002UL << ADC_TR1_HT1_Pos) /*!< 0x00020000 */ +#define ADC_TR1_HT1_2 (0x004UL << ADC_TR1_HT1_Pos) /*!< 0x00040000 */ +#define ADC_TR1_HT1_3 (0x008UL << ADC_TR1_HT1_Pos) /*!< 0x00080000 */ +#define ADC_TR1_HT1_4 (0x010UL << ADC_TR1_HT1_Pos) /*!< 0x00100000 */ +#define ADC_TR1_HT1_5 (0x020UL << ADC_TR1_HT1_Pos) /*!< 0x00200000 */ +#define ADC_TR1_HT1_6 (0x040UL << ADC_TR1_HT1_Pos) /*!< 0x00400000 */ +#define ADC_TR1_HT1_7 (0x080UL << ADC_TR1_HT1_Pos) /*!< 0x00800000 */ +#define ADC_TR1_HT1_8 (0x100UL << ADC_TR1_HT1_Pos) /*!< 0x01000000 */ +#define ADC_TR1_HT1_9 (0x200UL << ADC_TR1_HT1_Pos) /*!< 0x02000000 */ +#define ADC_TR1_HT1_10 (0x400UL << ADC_TR1_HT1_Pos) /*!< 0x04000000 */ +#define ADC_TR1_HT1_11 (0x800UL << ADC_TR1_HT1_Pos) /*!< 0x08000000 */ + +/******************** 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_LT2_0 (0x01UL << ADC_TR2_LT2_Pos) /*!< 0x00000001 */ +#define ADC_TR2_LT2_1 (0x02UL << ADC_TR2_LT2_Pos) /*!< 0x00000002 */ +#define ADC_TR2_LT2_2 (0x04UL << ADC_TR2_LT2_Pos) /*!< 0x00000004 */ +#define ADC_TR2_LT2_3 (0x08UL << ADC_TR2_LT2_Pos) /*!< 0x00000008 */ +#define ADC_TR2_LT2_4 (0x10UL << ADC_TR2_LT2_Pos) /*!< 0x00000010 */ +#define ADC_TR2_LT2_5 (0x20UL << ADC_TR2_LT2_Pos) /*!< 0x00000020 */ +#define ADC_TR2_LT2_6 (0x40UL << ADC_TR2_LT2_Pos) /*!< 0x00000040 */ +#define ADC_TR2_LT2_7 (0x80UL << ADC_TR2_LT2_Pos) /*!< 0x00000080 */ + +#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 */ +#define ADC_TR2_HT2_0 (0x01UL << ADC_TR2_HT2_Pos) /*!< 0x00010000 */ +#define ADC_TR2_HT2_1 (0x02UL << ADC_TR2_HT2_Pos) /*!< 0x00020000 */ +#define ADC_TR2_HT2_2 (0x04UL << ADC_TR2_HT2_Pos) /*!< 0x00040000 */ +#define ADC_TR2_HT2_3 (0x08UL << ADC_TR2_HT2_Pos) /*!< 0x00080000 */ +#define ADC_TR2_HT2_4 (0x10UL << ADC_TR2_HT2_Pos) /*!< 0x00100000 */ +#define ADC_TR2_HT2_5 (0x20UL << ADC_TR2_HT2_Pos) /*!< 0x00200000 */ +#define ADC_TR2_HT2_6 (0x40UL << ADC_TR2_HT2_Pos) /*!< 0x00400000 */ +#define ADC_TR2_HT2_7 (0x80UL << ADC_TR2_HT2_Pos) /*!< 0x00800000 */ + +/******************** 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_LT3_0 (0x01UL << ADC_TR3_LT3_Pos) /*!< 0x00000001 */ +#define ADC_TR3_LT3_1 (0x02UL << ADC_TR3_LT3_Pos) /*!< 0x00000002 */ +#define ADC_TR3_LT3_2 (0x04UL << ADC_TR3_LT3_Pos) /*!< 0x00000004 */ +#define ADC_TR3_LT3_3 (0x08UL << ADC_TR3_LT3_Pos) /*!< 0x00000008 */ +#define ADC_TR3_LT3_4 (0x10UL << ADC_TR3_LT3_Pos) /*!< 0x00000010 */ +#define ADC_TR3_LT3_5 (0x20UL << ADC_TR3_LT3_Pos) /*!< 0x00000020 */ +#define ADC_TR3_LT3_6 (0x40UL << ADC_TR3_LT3_Pos) /*!< 0x00000040 */ +#define ADC_TR3_LT3_7 (0x80UL << ADC_TR3_LT3_Pos) /*!< 0x00000080 */ + +#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 */ +#define ADC_TR3_HT3_0 (0x01UL << ADC_TR3_HT3_Pos) /*!< 0x00010000 */ +#define ADC_TR3_HT3_1 (0x02UL << ADC_TR3_HT3_Pos) /*!< 0x00020000 */ +#define ADC_TR3_HT3_2 (0x04UL << ADC_TR3_HT3_Pos) /*!< 0x00040000 */ +#define ADC_TR3_HT3_3 (0x08UL << ADC_TR3_HT3_Pos) /*!< 0x00080000 */ +#define ADC_TR3_HT3_4 (0x10UL << ADC_TR3_HT3_Pos) /*!< 0x00100000 */ +#define ADC_TR3_HT3_5 (0x20UL << ADC_TR3_HT3_Pos) /*!< 0x00200000 */ +#define ADC_TR3_HT3_6 (0x40UL << ADC_TR3_HT3_Pos) /*!< 0x00400000 */ +#define ADC_TR3_HT3_7 (0x80UL << ADC_TR3_HT3_Pos) /*!< 0x00800000 */ + +/******************** 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 */ +#define ADC_DR_RDATA_0 (0x0001UL << ADC_DR_RDATA_Pos) /*!< 0x00000001 */ +#define ADC_DR_RDATA_1 (0x0002UL << ADC_DR_RDATA_Pos) /*!< 0x00000002 */ +#define ADC_DR_RDATA_2 (0x0004UL << ADC_DR_RDATA_Pos) /*!< 0x00000004 */ +#define ADC_DR_RDATA_3 (0x0008UL << ADC_DR_RDATA_Pos) /*!< 0x00000008 */ +#define ADC_DR_RDATA_4 (0x0010UL << ADC_DR_RDATA_Pos) /*!< 0x00000010 */ +#define ADC_DR_RDATA_5 (0x0020UL << ADC_DR_RDATA_Pos) /*!< 0x00000020 */ +#define ADC_DR_RDATA_6 (0x0040UL << ADC_DR_RDATA_Pos) /*!< 0x00000040 */ +#define ADC_DR_RDATA_7 (0x0080UL << ADC_DR_RDATA_Pos) /*!< 0x00000080 */ +#define ADC_DR_RDATA_8 (0x0100UL << ADC_DR_RDATA_Pos) /*!< 0x00000100 */ +#define ADC_DR_RDATA_9 (0x0200UL << ADC_DR_RDATA_Pos) /*!< 0x00000200 */ +#define ADC_DR_RDATA_10 (0x0400UL << ADC_DR_RDATA_Pos) /*!< 0x00000400 */ +#define ADC_DR_RDATA_11 (0x0800UL << ADC_DR_RDATA_Pos) /*!< 0x00000800 */ +#define ADC_DR_RDATA_12 (0x1000UL << ADC_DR_RDATA_Pos) /*!< 0x00001000 */ +#define ADC_DR_RDATA_13 (0x2000UL << ADC_DR_RDATA_Pos) /*!< 0x00002000 */ +#define ADC_DR_RDATA_14 (0x4000UL << ADC_DR_RDATA_Pos) /*!< 0x00004000 */ +#define ADC_DR_RDATA_15 (0x8000UL << ADC_DR_RDATA_Pos) /*!< 0x00008000 */ + +/******************** 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 (0xFUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000003C */ +#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_JEXTEN_Pos (6U) +#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x000000C0 */ +#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */ +#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000040 */ +#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */ + +#define ADC_JSQR_JSQ1_Pos (8U) +#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001F00 */ +#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */ +#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000100 */ +#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */ +#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */ +#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */ +#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */ + +#define ADC_JSQR_JSQ2_Pos (14U) +#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 (20U) +#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x01F00000 */ +#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */ +#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00100000 */ +#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */ +#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */ +#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */ +#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */ + +#define ADC_JSQR_JSQ4_Pos (26U) +#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0x7C000000 */ +#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */ +#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x04000000 */ +#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */ +#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */ +#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */ +#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */ + +/******************** 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_OFFSET1_0 (0x001UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000001 */ +#define ADC_OFR1_OFFSET1_1 (0x002UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000002 */ +#define ADC_OFR1_OFFSET1_2 (0x004UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000004 */ +#define ADC_OFR1_OFFSET1_3 (0x008UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000008 */ +#define ADC_OFR1_OFFSET1_4 (0x010UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000010 */ +#define ADC_OFR1_OFFSET1_5 (0x020UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000020 */ +#define ADC_OFR1_OFFSET1_6 (0x040UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000040 */ +#define ADC_OFR1_OFFSET1_7 (0x080UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000080 */ +#define ADC_OFR1_OFFSET1_8 (0x100UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000100 */ +#define ADC_OFR1_OFFSET1_9 (0x200UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000200 */ +#define ADC_OFR1_OFFSET1_10 (0x400UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000400 */ +#define ADC_OFR1_OFFSET1_11 (0x800UL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000800 */ + +#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_OFFSET2_0 (0x001UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000001 */ +#define ADC_OFR2_OFFSET2_1 (0x002UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000002 */ +#define ADC_OFR2_OFFSET2_2 (0x004UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000004 */ +#define ADC_OFR2_OFFSET2_3 (0x008UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000008 */ +#define ADC_OFR2_OFFSET2_4 (0x010UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000010 */ +#define ADC_OFR2_OFFSET2_5 (0x020UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000020 */ +#define ADC_OFR2_OFFSET2_6 (0x040UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000040 */ +#define ADC_OFR2_OFFSET2_7 (0x080UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000080 */ +#define ADC_OFR2_OFFSET2_8 (0x100UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000100 */ +#define ADC_OFR2_OFFSET2_9 (0x200UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000200 */ +#define ADC_OFR2_OFFSET2_10 (0x400UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000400 */ +#define ADC_OFR2_OFFSET2_11 (0x800UL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000800 */ + +#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_OFFSET3_0 (0x001UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000001 */ +#define ADC_OFR3_OFFSET3_1 (0x002UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000002 */ +#define ADC_OFR3_OFFSET3_2 (0x004UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000004 */ +#define ADC_OFR3_OFFSET3_3 (0x008UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000008 */ +#define ADC_OFR3_OFFSET3_4 (0x010UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000010 */ +#define ADC_OFR3_OFFSET3_5 (0x020UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000020 */ +#define ADC_OFR3_OFFSET3_6 (0x040UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000040 */ +#define ADC_OFR3_OFFSET3_7 (0x080UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000080 */ +#define ADC_OFR3_OFFSET3_8 (0x100UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000100 */ +#define ADC_OFR3_OFFSET3_9 (0x200UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000200 */ +#define ADC_OFR3_OFFSET3_10 (0x400UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000400 */ +#define ADC_OFR3_OFFSET3_11 (0x800UL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000800 */ + +#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_OFFSET4_0 (0x001UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000001 */ +#define ADC_OFR4_OFFSET4_1 (0x002UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000002 */ +#define ADC_OFR4_OFFSET4_2 (0x004UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000004 */ +#define ADC_OFR4_OFFSET4_3 (0x008UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000008 */ +#define ADC_OFR4_OFFSET4_4 (0x010UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000010 */ +#define ADC_OFR4_OFFSET4_5 (0x020UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000020 */ +#define ADC_OFR4_OFFSET4_6 (0x040UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000040 */ +#define ADC_OFR4_OFFSET4_7 (0x080UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000080 */ +#define ADC_OFR4_OFFSET4_8 (0x100UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000100 */ +#define ADC_OFR4_OFFSET4_9 (0x200UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000200 */ +#define ADC_OFR4_OFFSET4_10 (0x400UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000400 */ +#define ADC_OFR4_OFFSET4_11 (0x800UL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000800 */ + +#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 */ +#define ADC_JDR1_JDATA_0 (0x0001UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000001 */ +#define ADC_JDR1_JDATA_1 (0x0002UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000002 */ +#define ADC_JDR1_JDATA_2 (0x0004UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000004 */ +#define ADC_JDR1_JDATA_3 (0x0008UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000008 */ +#define ADC_JDR1_JDATA_4 (0x0010UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000010 */ +#define ADC_JDR1_JDATA_5 (0x0020UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000020 */ +#define ADC_JDR1_JDATA_6 (0x0040UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000040 */ +#define ADC_JDR1_JDATA_7 (0x0080UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000080 */ +#define ADC_JDR1_JDATA_8 (0x0100UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000100 */ +#define ADC_JDR1_JDATA_9 (0x0200UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000200 */ +#define ADC_JDR1_JDATA_10 (0x0400UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000400 */ +#define ADC_JDR1_JDATA_11 (0x0800UL << ADC_JDR1_JDATA_Pos) /*!< 0x00000800 */ +#define ADC_JDR1_JDATA_12 (0x1000UL << ADC_JDR1_JDATA_Pos) /*!< 0x00001000 */ +#define ADC_JDR1_JDATA_13 (0x2000UL << ADC_JDR1_JDATA_Pos) /*!< 0x00002000 */ +#define ADC_JDR1_JDATA_14 (0x4000UL << ADC_JDR1_JDATA_Pos) /*!< 0x00004000 */ +#define ADC_JDR1_JDATA_15 (0x8000UL << ADC_JDR1_JDATA_Pos) /*!< 0x00008000 */ + +/******************** 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 */ +#define ADC_JDR2_JDATA_0 (0x0001UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000001 */ +#define ADC_JDR2_JDATA_1 (0x0002UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000002 */ +#define ADC_JDR2_JDATA_2 (0x0004UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000004 */ +#define ADC_JDR2_JDATA_3 (0x0008UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000008 */ +#define ADC_JDR2_JDATA_4 (0x0010UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000010 */ +#define ADC_JDR2_JDATA_5 (0x0020UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000020 */ +#define ADC_JDR2_JDATA_6 (0x0040UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000040 */ +#define ADC_JDR2_JDATA_7 (0x0080UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000080 */ +#define ADC_JDR2_JDATA_8 (0x0100UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000100 */ +#define ADC_JDR2_JDATA_9 (0x0200UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000200 */ +#define ADC_JDR2_JDATA_10 (0x0400UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000400 */ +#define ADC_JDR2_JDATA_11 (0x0800UL << ADC_JDR2_JDATA_Pos) /*!< 0x00000800 */ +#define ADC_JDR2_JDATA_12 (0x1000UL << ADC_JDR2_JDATA_Pos) /*!< 0x00001000 */ +#define ADC_JDR2_JDATA_13 (0x2000UL << ADC_JDR2_JDATA_Pos) /*!< 0x00002000 */ +#define ADC_JDR2_JDATA_14 (0x4000UL << ADC_JDR2_JDATA_Pos) /*!< 0x00004000 */ +#define ADC_JDR2_JDATA_15 (0x8000UL << ADC_JDR2_JDATA_Pos) /*!< 0x00008000 */ + +/******************** 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 */ +#define ADC_JDR3_JDATA_0 (0x0001UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000001 */ +#define ADC_JDR3_JDATA_1 (0x0002UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000002 */ +#define ADC_JDR3_JDATA_2 (0x0004UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000004 */ +#define ADC_JDR3_JDATA_3 (0x0008UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000008 */ +#define ADC_JDR3_JDATA_4 (0x0010UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000010 */ +#define ADC_JDR3_JDATA_5 (0x0020UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000020 */ +#define ADC_JDR3_JDATA_6 (0x0040UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000040 */ +#define ADC_JDR3_JDATA_7 (0x0080UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000080 */ +#define ADC_JDR3_JDATA_8 (0x0100UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000100 */ +#define ADC_JDR3_JDATA_9 (0x0200UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000200 */ +#define ADC_JDR3_JDATA_10 (0x0400UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000400 */ +#define ADC_JDR3_JDATA_11 (0x0800UL << ADC_JDR3_JDATA_Pos) /*!< 0x00000800 */ +#define ADC_JDR3_JDATA_12 (0x1000UL << ADC_JDR3_JDATA_Pos) /*!< 0x00001000 */ +#define ADC_JDR3_JDATA_13 (0x2000UL << ADC_JDR3_JDATA_Pos) /*!< 0x00002000 */ +#define ADC_JDR3_JDATA_14 (0x4000UL << ADC_JDR3_JDATA_Pos) /*!< 0x00004000 */ +#define ADC_JDR3_JDATA_15 (0x8000UL << ADC_JDR3_JDATA_Pos) /*!< 0x00008000 */ + +/******************** 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 */ +#define ADC_JDR4_JDATA_0 (0x0001UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000001 */ +#define ADC_JDR4_JDATA_1 (0x0002UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000002 */ +#define ADC_JDR4_JDATA_2 (0x0004UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000004 */ +#define ADC_JDR4_JDATA_3 (0x0008UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000008 */ +#define ADC_JDR4_JDATA_4 (0x0010UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000010 */ +#define ADC_JDR4_JDATA_5 (0x0020UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000020 */ +#define ADC_JDR4_JDATA_6 (0x0040UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000040 */ +#define ADC_JDR4_JDATA_7 (0x0080UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000080 */ +#define ADC_JDR4_JDATA_8 (0x0100UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000100 */ +#define ADC_JDR4_JDATA_9 (0x0200UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000200 */ +#define ADC_JDR4_JDATA_10 (0x0400UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000400 */ +#define ADC_JDR4_JDATA_11 (0x0800UL << ADC_JDR4_JDATA_Pos) /*!< 0x00000800 */ +#define ADC_JDR4_JDATA_12 (0x1000UL << ADC_JDR4_JDATA_Pos) /*!< 0x00001000 */ +#define ADC_JDR4_JDATA_13 (0x2000UL << ADC_JDR4_JDATA_Pos) /*!< 0x00002000 */ +#define ADC_JDR4_JDATA_14 (0x4000UL << ADC_JDR4_JDATA_Pos) /*!< 0x00004000 */ +#define ADC_JDR4_JDATA_15 (0x8000UL << ADC_JDR4_JDATA_Pos) /*!< 0x00008000 */ + +/******************** 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) /*!< 0x00000040 */ + +#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) /*!< 0x00400000 */ + +/************************* 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_TSEN_Pos (23U) +#define ADC_CCR_TSEN_Msk (0x1UL << ADC_CCR_TSEN_Pos) /*!< 0x00800000 */ +#define ADC_CCR_TSEN ADC_CCR_TSEN_Msk /*!< ADC internal path to temperature sensor enable */ +#define ADC_CCR_VBATEN_Pos (24U) +#define ADC_CCR_VBATEN_Msk (0x1UL << ADC_CCR_VBATEN_Pos) /*!< 0x01000000 */ +#define ADC_CCR_VBATEN ADC_CCR_VBATEN_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_MST_0 (0x0001UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000001 */ +#define ADC_CDR_RDATA_MST_1 (0x0002UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000002 */ +#define ADC_CDR_RDATA_MST_2 (0x0004UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000004 */ +#define ADC_CDR_RDATA_MST_3 (0x0008UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000008 */ +#define ADC_CDR_RDATA_MST_4 (0x0010UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000010 */ +#define ADC_CDR_RDATA_MST_5 (0x0020UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000020 */ +#define ADC_CDR_RDATA_MST_6 (0x0040UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000040 */ +#define ADC_CDR_RDATA_MST_7 (0x0080UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000080 */ +#define ADC_CDR_RDATA_MST_8 (0x0100UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000100 */ +#define ADC_CDR_RDATA_MST_9 (0x0200UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000200 */ +#define ADC_CDR_RDATA_MST_10 (0x0400UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000400 */ +#define ADC_CDR_RDATA_MST_11 (0x0800UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00000800 */ +#define ADC_CDR_RDATA_MST_12 (0x1000UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00001000 */ +#define ADC_CDR_RDATA_MST_13 (0x2000UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00002000 */ +#define ADC_CDR_RDATA_MST_14 (0x4000UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00004000 */ +#define ADC_CDR_RDATA_MST_15 (0x8000UL << ADC_CDR_RDATA_MST_Pos) /*!< 0x00008000 */ + +#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 */ +#define ADC_CDR_RDATA_SLV_0 (0x0001UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00010000 */ +#define ADC_CDR_RDATA_SLV_1 (0x0002UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00020000 */ +#define ADC_CDR_RDATA_SLV_2 (0x0004UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00040000 */ +#define ADC_CDR_RDATA_SLV_3 (0x0008UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00080000 */ +#define ADC_CDR_RDATA_SLV_4 (0x0010UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00100000 */ +#define ADC_CDR_RDATA_SLV_5 (0x0020UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00200000 */ +#define ADC_CDR_RDATA_SLV_6 (0x0040UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00400000 */ +#define ADC_CDR_RDATA_SLV_7 (0x0080UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x00800000 */ +#define ADC_CDR_RDATA_SLV_8 (0x0100UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x01000000 */ +#define ADC_CDR_RDATA_SLV_9 (0x0200UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x02000000 */ +#define ADC_CDR_RDATA_SLV_10 (0x0400UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x04000000 */ +#define ADC_CDR_RDATA_SLV_11 (0x0800UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x08000000 */ +#define ADC_CDR_RDATA_SLV_12 (0x1000UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x10000000 */ +#define ADC_CDR_RDATA_SLV_13 (0x2000UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x20000000 */ +#define ADC_CDR_RDATA_SLV_14 (0x4000UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x40000000 */ +#define ADC_CDR_RDATA_SLV_15 (0x8000UL << ADC_CDR_RDATA_SLV_Pos) /*!< 0x80000000 */ + +/******************************************************************************/ +/* */ +/* Controller Area Network */ +/* */ +/******************************************************************************/ +/*!*/ +#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_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 /*!
© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

qMyaud!@V$aBEsPt+Ac& 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%0AC^mo-$Lj(MoFA4rp-_i=9M8sk$4Y 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%0DXaBk(n!)*>OHEv)@QY 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∓=(}Fh9 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 z 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

+ * + * This software component is licensed by ST under 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: + * opensource.org/licenses/Apache-2.0 + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l4xx + * @{ + */ + +#ifndef __STM32L4xx_H +#define __STM32L4xx_H + +#ifdef __cplusplus + extern "C" { +#endif /* __cplusplus */ + +/** @addtogroup Library_configuration_section + * @{ + */ + +/** + * @brief STM32 Family + */ +#if !defined (STM32L4) +#define STM32L4 +#endif /* STM32L4 */ + +/* Uncomment the line below according to the target STM32L4 device used in your + application + */ + +#if !defined (STM32L412xx) && !defined (STM32L422xx) && \ + !defined (STM32L431xx) && !defined (STM32L432xx) && !defined (STM32L433xx) && !defined (STM32L442xx) && !defined (STM32L443xx) && \ + !defined (STM32L451xx) && !defined (STM32L452xx) && !defined (STM32L462xx) && \ + !defined (STM32L471xx) && !defined (STM32L475xx) && !defined (STM32L476xx) && !defined (STM32L485xx) && !defined (STM32L486xx) && \ + !defined (STM32L496xx) && !defined (STM32L4A6xx) && \ + !defined (STM32L4P5xx) && !defined (STM32L4Q5xx) && \ + !defined (STM32L4R5xx) && !defined (STM32L4R7xx) && !defined (STM32L4R9xx) && !defined (STM32L4S5xx) && !defined (STM32L4S7xx) && !defined (STM32L4S9xx) + /* #define STM32L412xx */ /*!< STM32L412xx Devices */ + /* #define STM32L422xx */ /*!< STM32L422xx Devices */ + /* #define STM32L431xx */ /*!< STM32L431xx Devices */ + /* #define STM32L432xx */ /*!< STM32L432xx Devices */ + /* #define STM32L433xx */ /*!< STM32L433xx Devices */ + /* #define STM32L442xx */ /*!< STM32L442xx Devices */ + /* #define STM32L443xx */ /*!< STM32L443xx Devices */ + /* #define STM32L451xx */ /*!< STM32L451xx Devices */ + /* #define STM32L452xx */ /*!< STM32L452xx Devices */ + /* #define STM32L462xx */ /*!< STM32L462xx Devices */ + /* #define STM32L471xx */ /*!< STM32L471xx Devices */ + /* #define STM32L475xx */ /*!< STM32L475xx Devices */ + /* #define STM32L476xx */ /*!< STM32L476xx Devices */ + /* #define STM32L485xx */ /*!< STM32L485xx Devices */ + /* #define STM32L486xx */ /*!< STM32L486xx Devices */ + /* #define STM32L496xx */ /*!< STM32L496xx Devices */ + /* #define STM32L4A6xx */ /*!< STM32L4A6xx Devices */ + /* #define STM32L4P5xx */ /*!< STM32L4Q5xx Devices */ + /* #define STM32L4R5xx */ /*!< STM32L4R5xx Devices */ + /* #define STM32L4R7xx */ /*!< STM32L4R7xx Devices */ + /* #define STM32L4R9xx */ /*!< STM32L4R9xx Devices */ + /* #define STM32L4S5xx */ /*!< STM32L4S5xx Devices */ + /* #define STM32L4S7xx */ /*!< STM32L4S7xx Devices */ + /* #define STM32L4S9xx */ /*!< STM32L4S9xx Devices */ +#endif + +/* Tip: To avoid modifying this file each time you need to switch between these + devices, you can define the device in your toolchain compiler preprocessor. + */ +#if !defined (USE_HAL_DRIVER) +/** + * @brief Comment the line below if you will not use the peripherals drivers. + In this case, these drivers will not be included and the application code will + be based on direct access to peripherals registers + */ + /*#define USE_HAL_DRIVER */ +#endif /* USE_HAL_DRIVER */ + +/** + * @brief CMSIS Device version number + */ +#define __STM32L4_CMSIS_VERSION_MAIN (0x01) /*!< [31:24] main version */ +#define __STM32L4_CMSIS_VERSION_SUB1 (0x07) /*!< [23:16] sub1 version */ +#define __STM32L4_CMSIS_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */ +#define __STM32L4_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */ +#define __STM32L4_CMSIS_VERSION ((__STM32L4_CMSIS_VERSION_MAIN << 24)\ + |(__STM32L4_CMSIS_VERSION_SUB1 << 16)\ + |(__STM32L4_CMSIS_VERSION_SUB2 << 8 )\ + |(__STM32L4_CMSIS_VERSION_RC)) + +/** + * @} + */ + +/** @addtogroup Device_Included + * @{ + */ + +#if defined(STM32L412xx) + #include "stm32l412xx.h" +#elif defined(STM32L422xx) + #include "stm32l422xx.h" +#elif defined(STM32L431xx) + #include "stm32l431xx.h" +#elif defined(STM32L432xx) + #include "stm32l432xx.h" +#elif defined(STM32L433xx) + #include "stm32l433xx.h" +#elif defined(STM32L442xx) + #include "stm32l442xx.h" +#elif defined(STM32L443xx) + #include "stm32l443xx.h" +#elif defined(STM32L451xx) + #include "stm32l451xx.h" +#elif defined(STM32L452xx) + #include "stm32l452xx.h" +#elif defined(STM32L462xx) + #include "stm32l462xx.h" +#elif defined(STM32L471xx) + #include "stm32l471xx.h" +#elif defined(STM32L475xx) + #include "stm32l475xx.h" +#elif defined(STM32L476xx) + #include "stm32l476xx.h" +#elif defined(STM32L485xx) + #include "stm32l485xx.h" +#elif defined(STM32L486xx) + #include "stm32l486xx.h" +#elif defined(STM32L496xx) + #include "stm32l496xx.h" +#elif defined(STM32L4A6xx) + #include "stm32l4a6xx.h" +#elif defined(STM32L4P5xx) + #include "stm32l4p5xx.h" +#elif defined(STM32L4Q5xx) + #include "stm32l4q5xx.h" +#elif defined(STM32L4R5xx) + #include "stm32l4r5xx.h" +#elif defined(STM32L4R7xx) + #include "stm32l4r7xx.h" +#elif defined(STM32L4R9xx) + #include "stm32l4r9xx.h" +#elif defined(STM32L4S5xx) + #include "stm32l4s5xx.h" +#elif defined(STM32L4S7xx) + #include "stm32l4s7xx.h" +#elif defined(STM32L4S9xx) + #include "stm32l4s9xx.h" +#else + #error "Please select first the target STM32L4xx device used in your application (in stm32l4xx.h file)" +#endif + +/** + * @} + */ + +/** @addtogroup Exported_types + * @{ + */ +typedef enum +{ + RESET = 0, + SET = !RESET +} FlagStatus, ITStatus; + +typedef enum +{ + DISABLE = 0, + ENABLE = !DISABLE +} FunctionalState; +#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE)) + +typedef enum +{ + SUCCESS = 0, + ERROR = !SUCCESS +} ErrorStatus; + +/** + * @} + */ + + +/** @addtogroup Exported_macros + * @{ + */ +#define SET_BIT(REG, BIT) ((REG) |= (BIT)) + +#define CLEAR_BIT(REG, BIT) ((REG) &= ~(BIT)) + +#define READ_BIT(REG, BIT) ((REG) & (BIT)) + +#define CLEAR_REG(REG) ((REG) = (0x0)) + +#define WRITE_REG(REG, VAL) ((REG) = (VAL)) + +#define READ_REG(REG) ((REG)) + +#define MODIFY_REG(REG, CLEARMASK, SETMASK) WRITE_REG((REG), (((READ_REG(REG)) & (~(CLEARMASK))) | (SETMASK))) + +#define POSITION_VAL(VAL) (__CLZ(__RBIT(VAL))) + + +/** + * @} + */ + +#if defined (USE_HAL_DRIVER) + #include "stm32l4xx_hal.h" +#endif /* USE_HAL_DRIVER */ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __STM32L4xx_H */ +/** + * @} + */ + +/** + * @} + */ + + + + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h b/L476_ats_blink-master/Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h new file mode 100644 index 0000000..00166a5 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Device/ST/STM32L4xx/Include/system_stm32l4xx.h @@ -0,0 +1,107 @@ +/** + ****************************************************************************** + * @file system_stm32l4xx.h + * @author MCD Application Team + * @brief CMSIS Cortex-M4 Device System Source File for STM32L4xx devices. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under 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: + * opensource.org/licenses/Apache-2.0 + * + ****************************************************************************** + */ + +/** @addtogroup CMSIS + * @{ + */ + +/** @addtogroup stm32l4xx_system + * @{ + */ + +/** + * @brief Define to prevent recursive inclusion + */ +#ifndef __SYSTEM_STM32L4XX_H +#define __SYSTEM_STM32L4XX_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup STM32L4xx_System_Includes + * @{ + */ + +/** + * @} + */ + + +/** @addtogroup STM32L4xx_System_Exported_Variables + * @{ + */ + /* The SystemCoreClock variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetSysClockFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ +extern uint32_t SystemCoreClock; /*!< System Clock Frequency (Core Clock) */ + +extern const uint8_t AHBPrescTable[16]; /*!< AHB prescalers table values */ +extern const uint8_t APBPrescTable[8]; /*!< APB prescalers table values */ +extern const uint32_t MSIRangeTable[12]; /*!< MSI ranges table values */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Exported_Constants + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Exported_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32L4xx_System_Exported_Functions + * @{ + */ + +extern void SystemInit(void); +extern void SystemCoreClockUpdate(void); +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /*__SYSTEM_STM32L4XX_H */ + +/** + * @} + */ + +/** + * @} + */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armcc.h b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armcc.h new file mode 100644 index 0000000..59f173a --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armcc.h @@ -0,0 +1,894 @@ +/**************************************************************************//** + * @file cmsis_armcc.h + * @brief CMSIS compiler ARMCC (Arm Compiler 5) header file + * @version V5.1.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_ARMCC_H +#define __CMSIS_ARMCC_H + + +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 400677) + #error "Please use Arm Compiler Toolchain V4.0.677 or later!" +#endif + +/* CMSIS compiler control architecture macros */ +#if ((defined (__TARGET_ARCH_6_M ) && (__TARGET_ARCH_6_M == 1)) || \ + (defined (__TARGET_ARCH_6S_M ) && (__TARGET_ARCH_6S_M == 1)) ) + #define __ARM_ARCH_6M__ 1 +#endif + +#if (defined (__TARGET_ARCH_7_M ) && (__TARGET_ARCH_7_M == 1)) + #define __ARM_ARCH_7M__ 1 +#endif + +#if (defined (__TARGET_ARCH_7E_M) && (__TARGET_ARCH_7E_M == 1)) + #define __ARM_ARCH_7EM__ 1 +#endif + + /* __ARM_ARCH_8M_BASE__ not applicable */ + /* __ARM_ARCH_8M_MAIN__ not applicable */ + +/* CMSIS compiler control DSP macros */ +#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + #define __ARM_FEATURE_DSP 1 +#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 static __forceinline +#endif +#ifndef __NO_RETURN + #define __NO_RETURN __declspec(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 __packed struct +#endif +#ifndef __PACKED_UNION + #define __PACKED_UNION __packed union +#endif +#ifndef __UNALIGNED_UINT32 /* deprecated */ + #define __UNALIGNED_UINT32(x) (*((__packed uint32_t *)(x))) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #define __UNALIGNED_UINT16_WRITE(addr, val) ((*((__packed uint16_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #define __UNALIGNED_UINT16_READ(addr) (*((const __packed uint16_t *)(addr))) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #define __UNALIGNED_UINT32_WRITE(addr, val) ((*((__packed uint32_t *)(addr))) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #define __UNALIGNED_UINT32_READ(addr) (*((const __packed uint32_t *)(addr))) +#endif +#ifndef __ALIGNED + #define __ALIGNED(x) __attribute__((aligned(x))) +#endif +#ifndef __RESTRICT + #define __RESTRICT __restrict +#endif +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __memory_changed() +#endif + +/* ######################### Startup and Lowlevel Init ######################## */ + +#ifndef __PROGRAM_START +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section("RESET"))) +#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. + */ +/* intrinsic void __enable_irq(); */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); */ + +/** + \brief Get Control Register + \details Returns the content of the Control Register. + \return Control Register value + */ +__STATIC_INLINE uint32_t __get_CONTROL(void) +{ + register uint32_t __regControl __ASM("control"); + return(__regControl); +} + + +/** + \brief Set Control Register + \details Writes the given value to the Control Register. + \param [in] control Control Register value to set + */ +__STATIC_INLINE void __set_CONTROL(uint32_t control) +{ + register uint32_t __regControl __ASM("control"); + __regControl = control; +} + + +/** + \brief Get IPSR Register + \details Returns the content of the IPSR Register. + \return IPSR Register value + */ +__STATIC_INLINE uint32_t __get_IPSR(void) +{ + register uint32_t __regIPSR __ASM("ipsr"); + return(__regIPSR); +} + + +/** + \brief Get APSR Register + \details Returns the content of the APSR Register. + \return APSR Register value + */ +__STATIC_INLINE uint32_t __get_APSR(void) +{ + register uint32_t __regAPSR __ASM("apsr"); + return(__regAPSR); +} + + +/** + \brief Get xPSR Register + \details Returns the content of the xPSR Register. + \return xPSR Register value + */ +__STATIC_INLINE uint32_t __get_xPSR(void) +{ + register uint32_t __regXPSR __ASM("xpsr"); + return(__regXPSR); +} + + +/** + \brief Get Process Stack Pointer + \details Returns the current value of the Process Stack Pointer (PSP). + \return PSP Register value + */ +__STATIC_INLINE uint32_t __get_PSP(void) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + return(__regProcessStackPointer); +} + + +/** + \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_INLINE void __set_PSP(uint32_t topOfProcStack) +{ + register uint32_t __regProcessStackPointer __ASM("psp"); + __regProcessStackPointer = topOfProcStack; +} + + +/** + \brief Get Main Stack Pointer + \details Returns the current value of the Main Stack Pointer (MSP). + \return MSP Register value + */ +__STATIC_INLINE uint32_t __get_MSP(void) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + return(__regMainStackPointer); +} + + +/** + \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_INLINE void __set_MSP(uint32_t topOfMainStack) +{ + register uint32_t __regMainStackPointer __ASM("msp"); + __regMainStackPointer = topOfMainStack; +} + + +/** + \brief Get Priority Mask + \details Returns the current state of the priority mask bit from the Priority Mask Register. + \return Priority Mask value + */ +__STATIC_INLINE uint32_t __get_PRIMASK(void) +{ + register uint32_t __regPriMask __ASM("primask"); + return(__regPriMask); +} + + +/** + \brief Set Priority Mask + \details Assigns the given value to the Priority Mask Register. + \param [in] priMask Priority Mask + */ +__STATIC_INLINE void __set_PRIMASK(uint32_t priMask) +{ + register uint32_t __regPriMask __ASM("primask"); + __regPriMask = (priMask); +} + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +/** + \brief Enable FIQ + \details Enables FIQ interrupts by clearing the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __enable_fault_irq __enable_fiq + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq + + +/** + \brief Get Base Priority + \details Returns the current value of the Base Priority register. + \return Base Priority register value + */ +__STATIC_INLINE uint32_t __get_BASEPRI(void) +{ + register uint32_t __regBasePri __ASM("basepri"); + return(__regBasePri); +} + + +/** + \brief Set Base Priority + \details Assigns the given value to the Base Priority register. + \param [in] basePri Base Priority value to set + */ +__STATIC_INLINE void __set_BASEPRI(uint32_t basePri) +{ + register uint32_t __regBasePri __ASM("basepri"); + __regBasePri = (basePri & 0xFFU); +} + + +/** + \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_INLINE void __set_BASEPRI_MAX(uint32_t basePri) +{ + register uint32_t __regBasePriMax __ASM("basepri_max"); + __regBasePriMax = (basePri & 0xFFU); +} + + +/** + \brief Get Fault Mask + \details Returns the current value of the Fault Mask register. + \return Fault Mask register value + */ +__STATIC_INLINE uint32_t __get_FAULTMASK(void) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + return(__regFaultMask); +} + + +/** + \brief Set Fault Mask + \details Assigns the given value to the Fault Mask register. + \param [in] faultMask Fault Mask value to set + */ +__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask) +{ + register uint32_t __regFaultMask __ASM("faultmask"); + __regFaultMask = (faultMask & (uint32_t)1U); +} + +#endif /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ + + +/** + \brief Get FPSCR + \details Returns the current value of the Floating Point Status/Control register. + \return Floating Point Status/Control register value + */ +__STATIC_INLINE uint32_t __get_FPSCR(void) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + return(__regfpscr); +#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_INLINE void __set_FPSCR(uint32_t fpscr) +{ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + register uint32_t __regfpscr __ASM("fpscr"); + __regfpscr = (fpscr); +#else + (void)fpscr; +#endif +} + + +/*@} end of CMSIS_Core_RegAccFunctions */ + + +/* ########################## Core Instruction Access ######################### */ +/** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface + Access to dedicated instructions + @{ +*/ + +/** + \brief No Operation + \details No Operation does nothing. This instruction can be used for code alignment purposes. + */ +#define __NOP __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 __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 __wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __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. + */ +#define __ISB() do {\ + __schedule_barrier();\ + __isb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \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. + */ +#define __DSB() do {\ + __schedule_barrier();\ + __dsb(0xF);\ + __schedule_barrier();\ + } while (0U) + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() do {\ + __schedule_barrier();\ + __dmb(0xF);\ + __schedule_barrier();\ + } while (0U) + + +/** + \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 + */ +#define __REV __rev + + +/** + \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 + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value) +{ + rev16 r0, r0 + bx lr +} +#endif + + +/** + \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 + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int16_t __REVSH(int16_t value) +{ + revsh r0, r0 + bx lr +} +#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 + */ +#define __ROR __ror + + +/** + \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) __breakpoint(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 + */ +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + #define __RBIT __rbit +#else +__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value) +{ + uint32_t result; + 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 */ + return result; +} +#endif + + +/** + \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 + */ +#define __CLZ __clz + + +#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 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) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXB(ptr) ((uint8_t ) __ldrex(ptr)) +#else + #define __LDREXB(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint8_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \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) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXH(ptr) ((uint16_t) __ldrex(ptr)) +#else + #define __LDREXH(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint16_t) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \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) + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __LDREXW(ptr) ((uint32_t ) __ldrex(ptr)) +#else + #define __LDREXW(ptr) _Pragma("push") _Pragma("diag_suppress 3731") ((uint32_t ) __ldrex(ptr)) _Pragma("pop") +#endif + + +/** + \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 + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXB(value, ptr) __strex(value, ptr) +#else + #define __STREXB(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \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 + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXH(value, ptr) __strex(value, ptr) +#else + #define __STREXH(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \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 + */ +#if defined(__ARMCC_VERSION) && (__ARMCC_VERSION < 5060020) + #define __STREXW(value, ptr) __strex(value, ptr) +#else + #define __STREXW(value, ptr) _Pragma("push") _Pragma("diag_suppress 3731") __strex(value, ptr) _Pragma("pop") +#endif + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __clrex + + +/** + \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 + */ +#define __SSAT __ssat + + +/** + \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 + */ +#define __USAT __usat + + +/** + \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 + */ +#ifndef __NO_EMBEDDED_ASM +__attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value) +{ + rrx r0, r0 + bx lr +} +#endif + + +/** + \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) + */ +#define __LDRBT(ptr) ((uint8_t ) __ldrt(ptr)) + + +/** + \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) + */ +#define __LDRHT(ptr) ((uint16_t) __ldrt(ptr)) + + +/** + \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) + */ +#define __LDRT(ptr) ((uint32_t ) __ldrt(ptr)) + + +/** + \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 + */ +#define __STRBT(value, ptr) __strt(value, ptr) + + +/** + \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 + */ +#define __STRHT(value, ptr) __strt(value, ptr) + + +/** + \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 + */ +#define __STRT(value, ptr) __strt(value, ptr) + +#else /* ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \ + (defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 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 + */ +__attribute__((always_inline)) __STATIC_INLINE 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 + */ +__attribute__((always_inline)) __STATIC_INLINE 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)) ) */ + +/*@}*/ /* end of group CMSIS_Core_InstructionInterface */ + + +/* ################### Compiler specific Intrinsics ########################### */ +/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics + Access to dedicated SIMD instructions + @{ +*/ + +#if ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) + +#define __SADD8 __sadd8 +#define __QADD8 __qadd8 +#define __SHADD8 __shadd8 +#define __UADD8 __uadd8 +#define __UQADD8 __uqadd8 +#define __UHADD8 __uhadd8 +#define __SSUB8 __ssub8 +#define __QSUB8 __qsub8 +#define __SHSUB8 __shsub8 +#define __USUB8 __usub8 +#define __UQSUB8 __uqsub8 +#define __UHSUB8 __uhsub8 +#define __SADD16 __sadd16 +#define __QADD16 __qadd16 +#define __SHADD16 __shadd16 +#define __UADD16 __uadd16 +#define __UQADD16 __uqadd16 +#define __UHADD16 __uhadd16 +#define __SSUB16 __ssub16 +#define __QSUB16 __qsub16 +#define __SHSUB16 __shsub16 +#define __USUB16 __usub16 +#define __UQSUB16 __uqsub16 +#define __UHSUB16 __uhsub16 +#define __SASX __sasx +#define __QASX __qasx +#define __SHASX __shasx +#define __UASX __uasx +#define __UQASX __uqasx +#define __UHASX __uhasx +#define __SSAX __ssax +#define __QSAX __qsax +#define __SHSAX __shsax +#define __USAX __usax +#define __UQSAX __uqsax +#define __UHSAX __uhsax +#define __USAD8 __usad8 +#define __USADA8 __usada8 +#define __SSAT16 __ssat16 +#define __USAT16 __usat16 +#define __UXTB16 __uxtb16 +#define __UXTAB16 __uxtab16 +#define __SXTB16 __sxtb16 +#define __SXTAB16 __sxtab16 +#define __SMUAD __smuad +#define __SMUADX __smuadx +#define __SMLAD __smlad +#define __SMLADX __smladx +#define __SMLALD __smlald +#define __SMLALDX __smlaldx +#define __SMUSD __smusd +#define __SMUSDX __smusdx +#define __SMLSD __smlsd +#define __SMLSDX __smlsdx +#define __SMLSLD __smlsld +#define __SMLSLDX __smlsldx +#define __SEL __sel +#define __QADD __qadd +#define __QSUB __qsub + +#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) ) + +#define __SMMLA(ARG1,ARG2,ARG3) ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \ + ((int64_t)(ARG3) << 32U) ) >> 32U)) + +#endif /* ((defined (__ARM_ARCH_7EM__) && (__ARM_ARCH_7EM__ == 1)) ) */ +/*@} end of group CMSIS_SIMD_intrinsics */ + + +#endif /* __CMSIS_ARMCC_H */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armclang.h b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armclang.h new file mode 100644 index 0000000..e917f35 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armclang.h @@ -0,0 +1,1444 @@ +/**************************************************************************//** + * @file cmsis_armclang.h + * @brief CMSIS compiler armclang (Arm Compiler 6) 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. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +#ifndef __ARM_COMPAT_H +#include /* Compatibility header for Arm Compiler 5 intrinsics */ +#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 clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang 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 +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section("RESET"))) +#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. + */ +/* intrinsic void __enable_irq(); see arm_compat.h */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); see arm_compat.h */ + + +/** + \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) ); + 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) ); + 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. + */ +#define __enable_fault_irq __enable_fiq /* see arm_compat.h */ + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq /* see arm_compat.h */ + + +/** + \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 in non-secure + mode. + + \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 in non-secure + mode. + + \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. + + \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. + + \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 + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)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 + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#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 __builtin_arm_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 __builtin_arm_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 __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_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. + */ +#define __ISB() __builtin_arm_isb(0xF) + +/** + \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. + */ +#define __DSB() __builtin_arm_dsb(0xF) + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF) + + +/** + \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 + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \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 + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \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 + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \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 + */ +#define __RBIT __builtin_arm_rbit + +/** + \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 Compiler 6.10 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) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \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) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \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) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \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 + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \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 + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \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 + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#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] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __builtin_arm_ssat + + +/** + \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 + */ +#define __USAT __builtin_arm_usat + + +/** + \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; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \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) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \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) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \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 + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \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 + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \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 + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#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)) + +#define __SADD8 __builtin_arm_sadd8 +#define __QADD8 __builtin_arm_qadd8 +#define __SHADD8 __builtin_arm_shadd8 +#define __UADD8 __builtin_arm_uadd8 +#define __UQADD8 __builtin_arm_uqadd8 +#define __UHADD8 __builtin_arm_uhadd8 +#define __SSUB8 __builtin_arm_ssub8 +#define __QSUB8 __builtin_arm_qsub8 +#define __SHSUB8 __builtin_arm_shsub8 +#define __USUB8 __builtin_arm_usub8 +#define __UQSUB8 __builtin_arm_uqsub8 +#define __UHSUB8 __builtin_arm_uhsub8 +#define __SADD16 __builtin_arm_sadd16 +#define __QADD16 __builtin_arm_qadd16 +#define __SHADD16 __builtin_arm_shadd16 +#define __UADD16 __builtin_arm_uadd16 +#define __UQADD16 __builtin_arm_uqadd16 +#define __UHADD16 __builtin_arm_uhadd16 +#define __SSUB16 __builtin_arm_ssub16 +#define __QSUB16 __builtin_arm_qsub16 +#define __SHSUB16 __builtin_arm_shsub16 +#define __USUB16 __builtin_arm_usub16 +#define __UQSUB16 __builtin_arm_uqsub16 +#define __UHSUB16 __builtin_arm_uhsub16 +#define __SASX __builtin_arm_sasx +#define __QASX __builtin_arm_qasx +#define __SHASX __builtin_arm_shasx +#define __UASX __builtin_arm_uasx +#define __UQASX __builtin_arm_uqasx +#define __UHASX __builtin_arm_uhasx +#define __SSAX __builtin_arm_ssax +#define __QSAX __builtin_arm_qsax +#define __SHSAX __builtin_arm_shsax +#define __USAX __builtin_arm_usax +#define __UQSAX __builtin_arm_uqsax +#define __UHSAX __builtin_arm_uhsax +#define __USAD8 __builtin_arm_usad8 +#define __USADA8 __builtin_arm_usada8 +#define __SSAT16 __builtin_arm_ssat16 +#define __USAT16 __builtin_arm_usat16 +#define __UXTB16 __builtin_arm_uxtb16 +#define __UXTAB16 __builtin_arm_uxtab16 +#define __SXTB16 __builtin_arm_sxtb16 +#define __SXTAB16 __builtin_arm_sxtab16 +#define __SMUAD __builtin_arm_smuad +#define __SMUADX __builtin_arm_smuadx +#define __SMLAD __builtin_arm_smlad +#define __SMLADX __builtin_arm_smladx +#define __SMLALD __builtin_arm_smlald +#define __SMLALDX __builtin_arm_smlaldx +#define __SMUSD __builtin_arm_smusd +#define __SMUSDX __builtin_arm_smusdx +#define __SMLSD __builtin_arm_smlsd +#define __SMLSDX __builtin_arm_smlsdx +#define __SMLSLD __builtin_arm_smlsld +#define __SMLSLDX __builtin_arm_smlsldx +#define __SEL __builtin_arm_sel +#define __QADD __builtin_arm_qadd +#define __QSUB __builtin_arm_qsub + +#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 */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armclang_ltm.h b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armclang_ltm.h new file mode 100644 index 0000000..feec324 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_armclang_ltm.h @@ -0,0 +1,1891 @@ +/**************************************************************************//** + * @file cmsis_armclang_ltm.h + * @brief CMSIS compiler armclang (Arm Compiler 6) header file + * @version V1.2.0 + * @date 08. May 2019 + ******************************************************************************/ +/* + * Copyright (c) 2018-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. + */ + +/*lint -esym(9058, IRQn)*/ /* disable MISRA 2012 Rule 2.4 for IRQn */ + +#ifndef __CMSIS_ARMCLANG_H +#define __CMSIS_ARMCLANG_H + +#pragma clang system_header /* treat file as system include file */ + +#ifndef __ARM_COMPAT_H +#include /* Compatibility header for Arm Compiler 5 intrinsics */ +#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 clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32 */ + struct __attribute__((packed)) T_UINT32 { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v) +#endif +#ifndef __UNALIGNED_UINT16_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_WRITE */ + __PACKED_STRUCT T_UINT16_WRITE { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT16_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT16_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT16_READ */ + __PACKED_STRUCT T_UINT16_READ { uint16_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v) +#endif +#ifndef __UNALIGNED_UINT32_WRITE + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_WRITE)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_WRITE */ + __PACKED_STRUCT T_UINT32_WRITE { uint32_t v; }; + #pragma clang diagnostic pop + #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val)) +#endif +#ifndef __UNALIGNED_UINT32_READ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wpacked" +/*lint -esym(9058, T_UINT32_READ)*/ /* disable MISRA 2012 Rule 2.4 for T_UINT32_READ */ + __PACKED_STRUCT T_UINT32_READ { uint32_t v; }; + #pragma clang 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 +#define __PROGRAM_START __main +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP Image$$ARM_LIB_STACK$$ZI$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT Image$$ARM_LIB_STACK$$ZI$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __Vectors +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE __attribute((used, section("RESET"))) +#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. + */ +/* intrinsic void __enable_irq(); see arm_compat.h */ + + +/** + \brief Disable IRQ Interrupts + \details Disables IRQ interrupts by setting the I-bit in the CPSR. + Can only be executed in Privileged modes. + */ +/* intrinsic void __disable_irq(); see arm_compat.h */ + + +/** + \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) ); + 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) ); + 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. + */ +#define __enable_fault_irq __enable_fiq /* see arm_compat.h */ + + +/** + \brief Disable FIQ + \details Disables FIQ interrupts by setting the F-bit in the CPSR. + Can only be executed in Privileged modes. + */ +#define __disable_fault_irq __disable_fiq /* see arm_compat.h */ + + +/** + \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 in non-secure + mode. + + \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 in non-secure + mode. + + \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. + + \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. + + \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 + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __get_FPSCR (uint32_t)__builtin_arm_get_fpscr +#else +#define __get_FPSCR() ((uint32_t)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 + */ +#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) +#define __set_FPSCR __builtin_arm_set_fpscr +#else +#define __set_FPSCR(x) ((void)(x)) +#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_USE_REG(r) "l" (r) +#else +#define __CMSIS_GCC_OUT_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 __builtin_arm_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 __builtin_arm_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 __builtin_arm_wfe + + +/** + \brief Send Event + \details Send Event is a hint instruction. It causes an event to be signaled to the CPU. + */ +#define __SEV __builtin_arm_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. + */ +#define __ISB() __builtin_arm_isb(0xF) + +/** + \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. + */ +#define __DSB() __builtin_arm_dsb(0xF) + + +/** + \brief Data Memory Barrier + \details Ensures the apparent order of the explicit memory operations before + and after the instruction, without ensuring their completion. + */ +#define __DMB() __builtin_arm_dmb(0xF) + + +/** + \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 + */ +#define __REV(value) __builtin_bswap32(value) + + +/** + \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 + */ +#define __REV16(value) __ROR(__REV(value), 16) + + +/** + \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 + */ +#define __REVSH(value) (int16_t)__builtin_bswap16(value) + + +/** + \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 + */ +#define __RBIT __builtin_arm_rbit + +/** + \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 Compiler 6.10 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) + */ +#define __LDREXB (uint8_t)__builtin_arm_ldrex + + +/** + \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) + */ +#define __LDREXH (uint16_t)__builtin_arm_ldrex + + +/** + \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) + */ +#define __LDREXW (uint32_t)__builtin_arm_ldrex + + +/** + \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 + */ +#define __STREXB (uint32_t)__builtin_arm_strex + + +/** + \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 + */ +#define __STREXH (uint32_t)__builtin_arm_strex + + +/** + \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 + */ +#define __STREXW (uint32_t)__builtin_arm_strex + + +/** + \brief Remove the exclusive lock + \details Removes the exclusive lock which is created by LDREX. + */ +#define __CLREX __builtin_arm_clrex + +#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] value Value to be saturated + \param [in] sat Bit position to saturate to (1..32) + \return Saturated value + */ +#define __SSAT __builtin_arm_ssat + + +/** + \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 + */ +#define __USAT __builtin_arm_usat + + +/** + \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; + + __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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; + + __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*ptr) ); + 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) + */ +#define __LDAEXB (uint8_t)__builtin_arm_ldaex + + +/** + \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) + */ +#define __LDAEXH (uint16_t)__builtin_arm_ldaex + + +/** + \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) + */ +#define __LDAEX (uint32_t)__builtin_arm_ldaex + + +/** + \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 + */ +#define __STLEXB (uint32_t)__builtin_arm_stlex + + +/** + \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 + */ +#define __STLEXH (uint32_t)__builtin_arm_stlex + + +/** + \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 + */ +#define __STLEX (uint32_t)__builtin_arm_stlex + +#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); +} + +#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 */ + + +#endif /* __CMSIS_ARMCLANG_H */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_compiler.h b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_compiler.h new file mode 100644 index 0000000..adbf296 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/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/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_gcc.h b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_gcc.h new file mode 100644 index 0000000..3ddcc58 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/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/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_iccarm.h b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_iccarm.h new file mode 100644 index 0000000..12d68fd --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_iccarm.h @@ -0,0 +1,964 @@ +/**************************************************************************//** + * @file cmsis_iccarm.h + * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file + * @version V5.1.0 + * @date 08. May 2019 + ******************************************************************************/ + +//------------------------------------------------------------------------------ +// +// Copyright (c) 2017-2019 IAR Systems +// Copyright (c) 2017-2019 Arm Limited. All rights reserved. +// +// 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 +// http://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_ICCARM_H__ +#define __CMSIS_ICCARM_H__ + +#ifndef __ICCARM__ + #error This file should only be compiled by ICCARM +#endif + +#pragma system_include + +#define __IAR_FT _Pragma("inline=forced") __intrinsic + +#if (__VER__ >= 8000000) + #define __ICCARM_V8 1 +#else + #define __ICCARM_V8 0 +#endif + +#ifndef __ALIGNED + #if __ICCARM_V8 + #define __ALIGNED(x) __attribute__((aligned(x))) + #elif (__VER__ >= 7080000) + /* Needs IAR language extensions */ + #define __ALIGNED(x) __attribute__((aligned(x))) + #else + #warning No compiler specific solution for __ALIGNED.__ALIGNED is ignored. + #define __ALIGNED(x) + #endif +#endif + + +/* Define compiler macros for CPU architecture, used in CMSIS 5. + */ +#if __ARM_ARCH_6M__ || __ARM_ARCH_7M__ || __ARM_ARCH_7EM__ || __ARM_ARCH_8M_BASE__ || __ARM_ARCH_8M_MAIN__ +/* Macros already defined */ +#else + #if defined(__ARM8M_MAINLINE__) || defined(__ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM_ARCH_PROFILE) && __ARM_ARCH_PROFILE == 'M' + #if __ARM_ARCH == 6 + #define __ARM_ARCH_6M__ 1 + #elif __ARM_ARCH == 7 + #if __ARM_FEATURE_DSP + #define __ARM_ARCH_7EM__ 1 + #else + #define __ARM_ARCH_7M__ 1 + #endif + #endif /* __ARM_ARCH */ + #endif /* __ARM_ARCH_PROFILE == 'M' */ +#endif + +/* Alternativ core deduction for older ICCARM's */ +#if !defined(__ARM_ARCH_6M__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7EM__) && \ + !defined(__ARM_ARCH_8M_BASE__) && !defined(__ARM_ARCH_8M_MAIN__) + #if defined(__ARM6M__) && (__CORE__ == __ARM6M__) + #define __ARM_ARCH_6M__ 1 + #elif defined(__ARM7M__) && (__CORE__ == __ARM7M__) + #define __ARM_ARCH_7M__ 1 + #elif defined(__ARM7EM__) && (__CORE__ == __ARM7EM__) + #define __ARM_ARCH_7EM__ 1 + #elif defined(__ARM8M_BASELINE__) && (__CORE == __ARM8M_BASELINE__) + #define __ARM_ARCH_8M_BASE__ 1 + #elif defined(__ARM8M_MAINLINE__) && (__CORE == __ARM8M_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #elif defined(__ARM8EM_MAINLINE__) && (__CORE == __ARM8EM_MAINLINE__) + #define __ARM_ARCH_8M_MAIN__ 1 + #else + #error "Unknown target." + #endif +#endif + + + +#if defined(__ARM_ARCH_6M__) && __ARM_ARCH_6M__==1 + #define __IAR_M0_FAMILY 1 +#elif defined(__ARM_ARCH_8M_BASE__) && __ARM_ARCH_8M_BASE__==1 + #define __IAR_M0_FAMILY 1 +#else + #define __IAR_M0_FAMILY 0 +#endif + + +#ifndef __ASM + #define __ASM __asm +#endif + +#ifndef __COMPILER_BARRIER + #define __COMPILER_BARRIER() __ASM volatile("":::"memory") +#endif + +#ifndef __INLINE + #define __INLINE inline +#endif + +#ifndef __NO_RETURN + #if __ICCARM_V8 + #define __NO_RETURN __attribute__((__noreturn__)) + #else + #define __NO_RETURN _Pragma("object_attribute=__noreturn") + #endif +#endif + +#ifndef __PACKED + #if __ICCARM_V8 + #define __PACKED __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED __packed + #endif +#endif + +#ifndef __PACKED_STRUCT + #if __ICCARM_V8 + #define __PACKED_STRUCT struct __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_STRUCT __packed struct + #endif +#endif + +#ifndef __PACKED_UNION + #if __ICCARM_V8 + #define __PACKED_UNION union __attribute__((packed, aligned(1))) + #else + /* Needs IAR language extensions */ + #define __PACKED_UNION __packed union + #endif +#endif + +#ifndef __RESTRICT + #if __ICCARM_V8 + #define __RESTRICT __restrict + #else + /* Needs IAR language extensions */ + #define __RESTRICT restrict + #endif +#endif + +#ifndef __STATIC_INLINE + #define __STATIC_INLINE static inline +#endif + +#ifndef __FORCEINLINE + #define __FORCEINLINE _Pragma("inline=forced") +#endif + +#ifndef __STATIC_FORCEINLINE + #define __STATIC_FORCEINLINE __FORCEINLINE __STATIC_INLINE +#endif + +#ifndef __UNALIGNED_UINT16_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint16_t __iar_uint16_read(void const *ptr) +{ + return *(__packed uint16_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT16_READ(PTR) __iar_uint16_read(PTR) +#endif + + +#ifndef __UNALIGNED_UINT16_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint16_write(void const *ptr, uint16_t val) +{ + *(__packed uint16_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT16_WRITE(PTR,VAL) __iar_uint16_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32_READ +#pragma language=save +#pragma language=extended +__IAR_FT uint32_t __iar_uint32_read(void const *ptr) +{ + return *(__packed uint32_t*)(ptr); +} +#pragma language=restore +#define __UNALIGNED_UINT32_READ(PTR) __iar_uint32_read(PTR) +#endif + +#ifndef __UNALIGNED_UINT32_WRITE +#pragma language=save +#pragma language=extended +__IAR_FT void __iar_uint32_write(void const *ptr, uint32_t val) +{ + *(__packed uint32_t*)(ptr) = val;; +} +#pragma language=restore +#define __UNALIGNED_UINT32_WRITE(PTR,VAL) __iar_uint32_write(PTR,VAL) +#endif + +#ifndef __UNALIGNED_UINT32 /* deprecated */ +#pragma language=save +#pragma language=extended +__packed struct __iar_u32 { uint32_t v; }; +#pragma language=restore +#define __UNALIGNED_UINT32(PTR) (((struct __iar_u32 *)(PTR))->v) +#endif + +#ifndef __USED + #if __ICCARM_V8 + #define __USED __attribute__((used)) + #else + #define __USED _Pragma("__root") + #endif +#endif + +#ifndef __WEAK + #if __ICCARM_V8 + #define __WEAK __attribute__((weak)) + #else + #define __WEAK _Pragma("__weak") + #endif +#endif + +#ifndef __PROGRAM_START +#define __PROGRAM_START __iar_program_start +#endif + +#ifndef __INITIAL_SP +#define __INITIAL_SP CSTACK$$Limit +#endif + +#ifndef __STACK_LIMIT +#define __STACK_LIMIT CSTACK$$Base +#endif + +#ifndef __VECTOR_TABLE +#define __VECTOR_TABLE __vector_table +#endif + +#ifndef __VECTOR_TABLE_ATTRIBUTE +#define __VECTOR_TABLE_ATTRIBUTE @".intvec" +#endif + +#ifndef __ICCARM_INTRINSICS_VERSION__ + #define __ICCARM_INTRINSICS_VERSION__ 0 +#endif + +#if __ICCARM_INTRINSICS_VERSION__ == 2 + + #if defined(__CLZ) + #undef __CLZ + #endif + #if defined(__REVSH) + #undef __REVSH + #endif + #if defined(__RBIT) + #undef __RBIT + #endif + #if defined(__SSAT) + #undef __SSAT + #endif + #if defined(__USAT) + #undef __USAT + #endif + + #include "iccarm_builtin.h" + + #define __disable_fault_irq __iar_builtin_disable_fiq + #define __disable_irq __iar_builtin_disable_interrupt + #define __enable_fault_irq __iar_builtin_enable_fiq + #define __enable_irq __iar_builtin_enable_interrupt + #define __arm_rsr __iar_builtin_rsr + #define __arm_wsr __iar_builtin_wsr + + + #define __get_APSR() (__arm_rsr("APSR")) + #define __get_BASEPRI() (__arm_rsr("BASEPRI")) + #define __get_CONTROL() (__arm_rsr("CONTROL")) + #define __get_FAULTMASK() (__arm_rsr("FAULTMASK")) + + #if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) ) + #define __get_FPSCR() (__arm_rsr("FPSCR")) + #define __set_FPSCR(VALUE) (__arm_wsr("FPSCR", (VALUE))) + #else + #define __get_FPSCR() ( 0 ) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #define __get_IPSR() (__arm_rsr("IPSR")) + #define __get_MSP() (__arm_rsr("MSP")) + #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 + #define __get_MSPLIM() (0U) + #else + #define __get_MSPLIM() (__arm_rsr("MSPLIM")) + #endif + #define __get_PRIMASK() (__arm_rsr("PRIMASK")) + #define __get_PSP() (__arm_rsr("PSP")) + + #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 + #define __get_PSPLIM() (0U) + #else + #define __get_PSPLIM() (__arm_rsr("PSPLIM")) + #endif + + #define __get_xPSR() (__arm_rsr("xPSR")) + + #define __set_BASEPRI(VALUE) (__arm_wsr("BASEPRI", (VALUE))) + #define __set_BASEPRI_MAX(VALUE) (__arm_wsr("BASEPRI_MAX", (VALUE))) + #define __set_CONTROL(VALUE) (__arm_wsr("CONTROL", (VALUE))) + #define __set_FAULTMASK(VALUE) (__arm_wsr("FAULTMASK", (VALUE))) + #define __set_MSP(VALUE) (__arm_wsr("MSP", (VALUE))) + + #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 + #define __set_MSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_MSPLIM(VALUE) (__arm_wsr("MSPLIM", (VALUE))) + #endif + #define __set_PRIMASK(VALUE) (__arm_wsr("PRIMASK", (VALUE))) + #define __set_PSP(VALUE) (__arm_wsr("PSP", (VALUE))) + #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 + #define __set_PSPLIM(VALUE) ((void)(VALUE)) + #else + #define __set_PSPLIM(VALUE) (__arm_wsr("PSPLIM", (VALUE))) + #endif + + #define __TZ_get_CONTROL_NS() (__arm_rsr("CONTROL_NS")) + #define __TZ_set_CONTROL_NS(VALUE) (__arm_wsr("CONTROL_NS", (VALUE))) + #define __TZ_get_PSP_NS() (__arm_rsr("PSP_NS")) + #define __TZ_set_PSP_NS(VALUE) (__arm_wsr("PSP_NS", (VALUE))) + #define __TZ_get_MSP_NS() (__arm_rsr("MSP_NS")) + #define __TZ_set_MSP_NS(VALUE) (__arm_wsr("MSP_NS", (VALUE))) + #define __TZ_get_SP_NS() (__arm_rsr("SP_NS")) + #define __TZ_set_SP_NS(VALUE) (__arm_wsr("SP_NS", (VALUE))) + #define __TZ_get_PRIMASK_NS() (__arm_rsr("PRIMASK_NS")) + #define __TZ_set_PRIMASK_NS(VALUE) (__arm_wsr("PRIMASK_NS", (VALUE))) + #define __TZ_get_BASEPRI_NS() (__arm_rsr("BASEPRI_NS")) + #define __TZ_set_BASEPRI_NS(VALUE) (__arm_wsr("BASEPRI_NS", (VALUE))) + #define __TZ_get_FAULTMASK_NS() (__arm_rsr("FAULTMASK_NS")) + #define __TZ_set_FAULTMASK_NS(VALUE)(__arm_wsr("FAULTMASK_NS", (VALUE))) + + #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 + #define __TZ_get_PSPLIM_NS() (0U) + #define __TZ_set_PSPLIM_NS(VALUE) ((void)(VALUE)) + #else + #define __TZ_get_PSPLIM_NS() (__arm_rsr("PSPLIM_NS")) + #define __TZ_set_PSPLIM_NS(VALUE) (__arm_wsr("PSPLIM_NS", (VALUE))) + #endif + + #define __TZ_get_MSPLIM_NS() (__arm_rsr("MSPLIM_NS")) + #define __TZ_set_MSPLIM_NS(VALUE) (__arm_wsr("MSPLIM_NS", (VALUE))) + + #define __NOP __iar_builtin_no_operation + + #define __CLZ __iar_builtin_CLZ + #define __CLREX __iar_builtin_CLREX + + #define __DMB __iar_builtin_DMB + #define __DSB __iar_builtin_DSB + #define __ISB __iar_builtin_ISB + + #define __LDREXB __iar_builtin_LDREXB + #define __LDREXH __iar_builtin_LDREXH + #define __LDREXW __iar_builtin_LDREX + + #define __RBIT __iar_builtin_RBIT + #define __REV __iar_builtin_REV + #define __REV16 __iar_builtin_REV16 + + __IAR_FT int16_t __REVSH(int16_t val) + { + return (int16_t) __iar_builtin_REVSH(val); + } + + #define __ROR __iar_builtin_ROR + #define __RRX __iar_builtin_RRX + + #define __SEV __iar_builtin_SEV + + #if !__IAR_M0_FAMILY + #define __SSAT __iar_builtin_SSAT + #endif + + #define __STREXB __iar_builtin_STREXB + #define __STREXH __iar_builtin_STREXH + #define __STREXW __iar_builtin_STREX + + #if !__IAR_M0_FAMILY + #define __USAT __iar_builtin_USAT + #endif + + #define __WFE __iar_builtin_WFE + #define __WFI __iar_builtin_WFI + + #if __ARM_MEDIA__ + #define __SADD8 __iar_builtin_SADD8 + #define __QADD8 __iar_builtin_QADD8 + #define __SHADD8 __iar_builtin_SHADD8 + #define __UADD8 __iar_builtin_UADD8 + #define __UQADD8 __iar_builtin_UQADD8 + #define __UHADD8 __iar_builtin_UHADD8 + #define __SSUB8 __iar_builtin_SSUB8 + #define __QSUB8 __iar_builtin_QSUB8 + #define __SHSUB8 __iar_builtin_SHSUB8 + #define __USUB8 __iar_builtin_USUB8 + #define __UQSUB8 __iar_builtin_UQSUB8 + #define __UHSUB8 __iar_builtin_UHSUB8 + #define __SADD16 __iar_builtin_SADD16 + #define __QADD16 __iar_builtin_QADD16 + #define __SHADD16 __iar_builtin_SHADD16 + #define __UADD16 __iar_builtin_UADD16 + #define __UQADD16 __iar_builtin_UQADD16 + #define __UHADD16 __iar_builtin_UHADD16 + #define __SSUB16 __iar_builtin_SSUB16 + #define __QSUB16 __iar_builtin_QSUB16 + #define __SHSUB16 __iar_builtin_SHSUB16 + #define __USUB16 __iar_builtin_USUB16 + #define __UQSUB16 __iar_builtin_UQSUB16 + #define __UHSUB16 __iar_builtin_UHSUB16 + #define __SASX __iar_builtin_SASX + #define __QASX __iar_builtin_QASX + #define __SHASX __iar_builtin_SHASX + #define __UASX __iar_builtin_UASX + #define __UQASX __iar_builtin_UQASX + #define __UHASX __iar_builtin_UHASX + #define __SSAX __iar_builtin_SSAX + #define __QSAX __iar_builtin_QSAX + #define __SHSAX __iar_builtin_SHSAX + #define __USAX __iar_builtin_USAX + #define __UQSAX __iar_builtin_UQSAX + #define __UHSAX __iar_builtin_UHSAX + #define __USAD8 __iar_builtin_USAD8 + #define __USADA8 __iar_builtin_USADA8 + #define __SSAT16 __iar_builtin_SSAT16 + #define __USAT16 __iar_builtin_USAT16 + #define __UXTB16 __iar_builtin_UXTB16 + #define __UXTAB16 __iar_builtin_UXTAB16 + #define __SXTB16 __iar_builtin_SXTB16 + #define __SXTAB16 __iar_builtin_SXTAB16 + #define __SMUAD __iar_builtin_SMUAD + #define __SMUADX __iar_builtin_SMUADX + #define __SMMLA __iar_builtin_SMMLA + #define __SMLAD __iar_builtin_SMLAD + #define __SMLADX __iar_builtin_SMLADX + #define __SMLALD __iar_builtin_SMLALD + #define __SMLALDX __iar_builtin_SMLALDX + #define __SMUSD __iar_builtin_SMUSD + #define __SMUSDX __iar_builtin_SMUSDX + #define __SMLSD __iar_builtin_SMLSD + #define __SMLSDX __iar_builtin_SMLSDX + #define __SMLSLD __iar_builtin_SMLSLD + #define __SMLSLDX __iar_builtin_SMLSLDX + #define __SEL __iar_builtin_SEL + #define __QADD __iar_builtin_QADD + #define __QSUB __iar_builtin_QSUB + #define __PKHBT __iar_builtin_PKHBT + #define __PKHTB __iar_builtin_PKHTB + #endif + +#else /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #define __CLZ __cmsis_iar_clz_not_active + #define __SSAT __cmsis_iar_ssat_not_active + #define __USAT __cmsis_iar_usat_not_active + #define __RBIT __cmsis_iar_rbit_not_active + #define __get_APSR __cmsis_iar_get_APSR_not_active + #endif + + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #define __get_FPSCR __cmsis_iar_get_FPSR_not_active + #define __set_FPSCR __cmsis_iar_set_FPSR_not_active + #endif + + #ifdef __INTRINSICS_INCLUDED + #error intrinsics.h is already included previously! + #endif + + #include + + #if __IAR_M0_FAMILY + /* Avoid clash between intrinsics.h and arm_math.h when compiling for Cortex-M0. */ + #undef __CLZ + #undef __SSAT + #undef __USAT + #undef __RBIT + #undef __get_APSR + + __STATIC_INLINE uint8_t __CLZ(uint32_t data) + { + if (data == 0U) { return 32U; } + + uint32_t count = 0U; + uint32_t mask = 0x80000000U; + + while ((data & mask) == 0U) + { + count += 1U; + mask = mask >> 1U; + } + return count; + } + + __STATIC_INLINE uint32_t __RBIT(uint32_t v) + { + uint8_t sc = 31U; + uint32_t r = v; + for (v >>= 1U; v; v >>= 1U) + { + r <<= 1U; + r |= v & 1U; + sc--; + } + return (r << sc); + } + + __STATIC_INLINE uint32_t __get_APSR(void) + { + uint32_t res; + __asm("MRS %0,APSR" : "=r" (res)); + return res; + } + + #endif + + #if (!((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \ + (defined (__FPU_USED ) && (__FPU_USED == 1U)) )) + #undef __get_FPSCR + #undef __set_FPSCR + #define __get_FPSCR() (0) + #define __set_FPSCR(VALUE) ((void)VALUE) + #endif + + #pragma diag_suppress=Pe940 + #pragma diag_suppress=Pe177 + + #define __enable_irq __enable_interrupt + #define __disable_irq __disable_interrupt + #define __NOP __no_operation + + #define __get_xPSR __get_PSR + + #if (!defined(__ARM_ARCH_6M__) || __ARM_ARCH_6M__==0) + + __IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr) + { + return __LDREX((unsigned long *)ptr); + } + + __IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr) + { + return __STREX(value, (unsigned long *)ptr); + } + #endif + + + /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + #if (__CORTEX_M >= 0x03) + + __IAR_FT uint32_t __RRX(uint32_t value) + { + uint32_t result; + __ASM("RRX %0, %1" : "=r"(result) : "r" (value) : "cc"); + return(result); + } + + __IAR_FT void __set_BASEPRI_MAX(uint32_t value) + { + __asm volatile("MSR BASEPRI_MAX,%0"::"r" (value)); + } + + + #define __enable_fault_irq __enable_fiq + #define __disable_fault_irq __disable_fiq + + + #endif /* (__CORTEX_M >= 0x03) */ + + __IAR_FT uint32_t __ROR(uint32_t op1, uint32_t op2) + { + return (op1 >> op2) | (op1 << ((sizeof(op1)*8)-op2)); + } + + #if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + __IAR_FT uint32_t __get_MSPLIM(void) + { + uint32_t res; + #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 + res = 0U; + #else + __asm volatile("MRS %0,MSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_MSPLIM(uint32_t value) + { + #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)value; + #else + __asm volatile("MSR MSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __get_PSPLIM(void) + { + uint32_t res; + #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 + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __set_PSPLIM(uint32_t value) + { + #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)value; + #else + __asm volatile("MSR PSPLIM,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_CONTROL_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,CONTROL_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_CONTROL_NS(uint32_t value) + { + __asm volatile("MSR CONTROL_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PSP_NS(uint32_t value) + { + __asm volatile("MSR PSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_MSP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSP_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSP_NS(uint32_t value) + { + __asm volatile("MSR MSP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_SP_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,SP_NS" : "=r" (res)); + return res; + } + __IAR_FT void __TZ_set_SP_NS(uint32_t value) + { + __asm volatile("MSR SP_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PRIMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,PRIMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_PRIMASK_NS(uint32_t value) + { + __asm volatile("MSR PRIMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_BASEPRI_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,BASEPRI_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_BASEPRI_NS(uint32_t value) + { + __asm volatile("MSR BASEPRI_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_FAULTMASK_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,FAULTMASK_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_FAULTMASK_NS(uint32_t value) + { + __asm volatile("MSR FAULTMASK_NS,%0" :: "r" (value)); + } + + __IAR_FT uint32_t __TZ_get_PSPLIM_NS(void) + { + uint32_t res; + #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 + res = 0U; + #else + __asm volatile("MRS %0,PSPLIM_NS" : "=r" (res)); + #endif + return res; + } + + __IAR_FT void __TZ_set_PSPLIM_NS(uint32_t value) + { + #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)value; + #else + __asm volatile("MSR PSPLIM_NS,%0" :: "r" (value)); + #endif + } + + __IAR_FT uint32_t __TZ_get_MSPLIM_NS(void) + { + uint32_t res; + __asm volatile("MRS %0,MSPLIM_NS" : "=r" (res)); + return res; + } + + __IAR_FT void __TZ_set_MSPLIM_NS(uint32_t value) + { + __asm volatile("MSR MSPLIM_NS,%0" :: "r" (value)); + } + + #endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#endif /* __ICCARM_INTRINSICS_VERSION__ == 2 */ + +#define __BKPT(value) __asm volatile ("BKPT %0" : : "i"(value)) + +#if __IAR_M0_FAMILY + __STATIC_INLINE 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; + } + + __STATIC_INLINE 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 + +#if (__CORTEX_M >= 0x03) /* __CORTEX_M is defined in core_cm0.h, core_cm3.h and core_cm4.h. */ + + __IAR_FT uint8_t __LDRBT(volatile uint8_t *addr) + { + uint32_t res; + __ASM("LDRBT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDRHT(volatile uint16_t *addr) + { + uint32_t res; + __ASM("LDRHT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDRT(volatile uint32_t *addr) + { + uint32_t res; + __ASM("LDRT %0, [%1]" : "=r" (res) : "r" (addr) : "memory"); + return res; + } + + __IAR_FT void __STRBT(uint8_t value, volatile uint8_t *addr) + { + __ASM("STRBT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRHT(uint16_t value, volatile uint16_t *addr) + { + __ASM("STRHT %1, [%0]" : : "r" (addr), "r" ((uint32_t)value) : "memory"); + } + + __IAR_FT void __STRT(uint32_t value, volatile uint32_t *addr) + { + __ASM("STRT %1, [%0]" : : "r" (addr), "r" (value) : "memory"); + } + +#endif /* (__CORTEX_M >= 0x03) */ + +#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \ + (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) ) + + + __IAR_FT uint8_t __LDAB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDA(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDA %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT void __STLB(uint8_t value, volatile uint8_t *ptr) + { + __ASM volatile ("STLB %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STLH(uint16_t value, volatile uint16_t *ptr) + { + __ASM volatile ("STLH %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT void __STL(uint32_t value, volatile uint32_t *ptr) + { + __ASM volatile ("STL %1, [%0]" :: "r" (ptr), "r" (value) : "memory"); + } + + __IAR_FT uint8_t __LDAEXB(volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXB %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint8_t)res); + } + + __IAR_FT uint16_t __LDAEXH(volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEXH %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return ((uint16_t)res); + } + + __IAR_FT uint32_t __LDAEX(volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("LDAEX %0, [%1]" : "=r" (res) : "r" (ptr) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXB(uint8_t value, volatile uint8_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXB %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEXH(uint16_t value, volatile uint16_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEXH %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + + __IAR_FT uint32_t __STLEX(uint32_t value, volatile uint32_t *ptr) + { + uint32_t res; + __ASM volatile ("STLEX %0, %2, [%1]" : "=r" (res) : "r" (ptr), "r" (value) : "memory"); + return res; + } + +#endif /* __ARM_ARCH_8M_MAIN__ or __ARM_ARCH_8M_BASE__ */ + +#undef __IAR_FT +#undef __IAR_M0_FAMILY +#undef __ICCARM_V8 + +#pragma diag_default=Pe940 +#pragma diag_default=Pe177 + +#endif /* __CMSIS_ICCARM_H__ */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_version.h b/L476_ats_blink-master/Drivers/CMSIS/Include/cmsis_version.h new file mode 100644 index 0000000..f2e2746 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/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/L476_ats_blink-master/Drivers/CMSIS/Include/core_armv81mml.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_armv81mml.h new file mode 100644 index 0000000..8441e57 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_armv81mml.h @@ -0,0 +1,2968 @@ +/**************************************************************************//** + * @file core_armv81mml.h + * @brief CMSIS Armv8.1-M Mainline Core Peripheral Access Layer Header File + * @version V1.0.0 + * @date 15. March 2019 + ******************************************************************************/ +/* + * Copyright (c) 2018-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_ARMV81MML_H_GENERIC +#define __CORE_ARMV81MML_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_ARMV81MML + @{ + */ + +#include "cmsis_version.h" + +#define __ARM_ARCH_8M_MAIN__ 1 // patching for now +/* CMSIS ARMV81MML definitions */ +#define __ARMv81MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv81MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv81MML_CMSIS_VERSION ((__ARMv81MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv81MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (81U) /*!< 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 + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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_ARMV81MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV81MML_H_DEPENDANT +#define __CORE_ARMV81MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv81MML_REV + #define __ARMv81MML_REV 0x0000U + #warning "__ARMv81MML_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 __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_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 ARMv81MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU 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:7; /*!< bit: 9..15 Reserved */ + 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 (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + 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_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT 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_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-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __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 SHPR[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 ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS 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_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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 */ + +/* 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN 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 */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#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_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT 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_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT 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_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF 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 */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM 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 */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power 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 */ + +/*@} 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[29U]; + __OM uint32_t IWR; /*!< Offset: 0xEF8 ( /W) ITM Integration Write Register */ + __IM uint32_t IRR; /*!< Offset: 0xEFC (R/ ) ITM Integration Read Register */ + __IOM uint32_t IMCR; /*!< Offset: 0xF00 (R/W) ITM Integration Mode Control Register */ + 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[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __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 Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< 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_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA 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 Integration Write Register Definitions */ +#define ITM_IWR_ATVALIDM_Pos 0U /*!< ITM IWR: ATVALIDM Position */ +#define ITM_IWR_ATVALIDM_Msk (1UL /*<< ITM_IWR_ATVALIDM_Pos*/) /*!< ITM IWR: ATVALIDM Mask */ + +/* ITM Integration Read Register Definitions */ +#define ITM_IRR_ATREADYM_Pos 0U /*!< ITM IRR: ATREADYM Position */ +#define ITM_IRR_ATREADYM_Msk (1UL /*<< ITM_IRR_ATREADYM_Pos*/) /*!< ITM IRR: ATREADYM Mask */ + +/* ITM Integration Mode Control Register Definitions */ +#define ITM_IMCR_INTEGRATION_Pos 0U /*!< ITM IMCR: INTEGRATION Position */ +#define ITM_IMCR_INTEGRATION_Msk (1UL /*<< ITM_IMCR_INTEGRATION_Pos*/) /*!< ITM IMCR: INTEGRATION 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 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} 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_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS 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 Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#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_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH 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 Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes 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 */ + __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 (0x3UL << 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 (0x3UL << 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_ATREADY_Pos 0U /*!< TPI ITATBCTR2: ATREADY Position */ +#define TPI_ITATBCTR2_ATREADY_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY_Pos*/) /*!< TPI ITATBCTR2: ATREADY 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 (0x3UL << 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 (0x3UL << 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_ATREADY_Pos 0U /*!< TPI ITATBCTR0: ATREADY Position */ +#define TPI_ITATBCTR0_ATREADY_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY_Pos*/) /*!< TPI ITATBCTR0: ATREADY Mask */ + +/* TPI Integration Mode Control Register Definitions */ +#define TPI_ITCTRL_Mode_Pos 0U /*!< TPI ITCTRL: Mode Position */ +#define TPI_ITCTRL_Mode_Msk (0x1UL /*<< 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_MajorType_Pos 4U /*!< TPI DEVTYPE: MajorType Position */ +#define TPI_DEVTYPE_MajorType_Msk (0xFUL << TPI_DEVTYPE_MajorType_Pos) /*!< TPI DEVTYPE: MajorType Mask */ + +#define TPI_DEVTYPE_SubType_Pos 0U /*!< TPI DEVTYPE: SubType Position */ +#define TPI_DEVTYPE_SubType_Msk (0xFUL /*<< TPI_DEVTYPE_SubType_Pos*/) /*!< TPI DEVTYPE: SubType 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 Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} 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_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_PXN_Pos 4U /*!< MPU RLAR: PXN Position */ +#define MPU_RLAR_PXN_Msk (0x1UL << MPU_RLAR_PXN_Pos) /*!< MPU RLAR: PXN Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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 */ +} 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_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL 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_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY 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_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context 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 */ + +/*@} 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 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status 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_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST 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 */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN 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 + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * 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 + + + +/** + \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 << 8U) ); /* Insert write key and priorty 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) + { + NVIC->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \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); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((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->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((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; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \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 vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \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(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state 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 TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->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 << 8U) ); /* Insert write key and priorty group */ + SCB_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \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 TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \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 TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state 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 TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.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)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else 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 */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## 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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#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_ARMV81MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_armv8mbl.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_armv8mbl.h new file mode 100644 index 0000000..344dca5 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_armv8mbl.h @@ -0,0 +1,1921 @@ +/**************************************************************************//** + * @file core_armv8mbl.h + * @brief CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 12. November 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. + */ + +#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_ARMV8MBL_H_GENERIC +#define __CORE_ARMV8MBL_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_ARMv8MBL + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __ARMv8MBL_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MBL_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MBL_CMSIS_VERSION ((__ARMv8MBL_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MBL_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M ( 2U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MBL_H_DEPENDANT +#define __CORE_ARMV8MBL_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MBL_REV + #define __ARMv8MBL_REV 0x0000U + #warning "__ARMv8MBL_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 __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #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 + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT 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 ARMv8MBL */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU 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:28; /*!< bit: 0..27 Reserved */ + 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 */ + + +/** + \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:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + 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_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T 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-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} 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 */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __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 */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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 */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* 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 */ +#endif + +/* 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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 */ + +/* 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN 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 */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED 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_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_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \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_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 */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} 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 */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#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_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH 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 Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes 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 */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER 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_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan 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 Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented 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_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth 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 Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* 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_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status 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_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST 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_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 */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA 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_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 */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN 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 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 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 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 + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick 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 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \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); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \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->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (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. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \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) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \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 = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \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 TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \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 TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state 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 TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.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) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## 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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_ARMV8MBL_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_armv8mml.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_armv8mml.h new file mode 100644 index 0000000..5ddb8ae --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_armv8mml.h @@ -0,0 +1,2835 @@ +/**************************************************************************//** + * @file core_armv8mml.h + * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 12. September 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. + */ + +#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_ARMV8MML_H_GENERIC +#define __CORE_ARMV8MML_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_ARMv8MML + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS Armv8MML definitions */ +#define __ARMv8MML_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __ARMv8MML_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __ARMv8MML_CMSIS_VERSION ((__ARMv8MML_CMSIS_VERSION_MAIN << 16U) | \ + __ARMv8MML_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (81U) /*!< 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 + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined(__ARM_FEATURE_DSP) + #if defined(__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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_ARMV8MML_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_ARMV8MML_H_DEPENDANT +#define __CORE_ARMV8MML_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __ARMv8MML_REV + #define __ARMv8MML_REV 0x0000U + #warning "__ARMv8MML_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 __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_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 ARMv8MML */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU 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:7; /*!< bit: 9..15 Reserved */ + 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 (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + 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_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT 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_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-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __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 SHPR[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 ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ +} 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS 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_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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 */ + +/* 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN 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 */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#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_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT 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_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT 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_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF 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 */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set 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 */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power 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 */ + +/*@} 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[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __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 Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* ITM Trace Privilege Register Definitions */ +#define ITM_TPR_PRIVMASK_Pos 0U /*!< ITM TPR: PRIVMASK Position */ +#define ITM_TPR_PRIVMASK_Msk (0xFUL /*<< 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_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA 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 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} 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_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS 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 Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#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_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH 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 Sizes Register */ + __IOM uint32_t CSPSR; /*!< Offset: 0x004 (R/W) Current Parallel Port Sizes 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 */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[809U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( /W) Software Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R/ ) Software Lock Status Register */ + uint32_t RESERVED4[4U]; + __IM uint32_t TYPE; /*!< Offset: 0xFC8 (R/ ) Device Identifier Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Register */ +} TPI_Type; + +/* TPI Asynchronous Clock Prescaler Register Definitions */ +#define TPI_ACPR_SWOSCALER_Pos 0U /*!< TPI ACPR: SWOSCALER Position */ +#define TPI_ACPR_SWOSCALER_Msk (0xFFFFUL /*<< TPI_ACPR_SWOSCALER_Pos*/) /*!< TPI ACPR: SWOSCALER 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_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan 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 Periodic Synchronization Control Register Definitions */ +#define TPI_PSCR_PSCount_Pos 0U /*!< TPI PSCR: PSCount Position */ +#define TPI_PSCR_PSCount_Msk (0x1FUL /*<< TPI_PSCR_PSCount_Pos*/) /*!< TPI PSCR: TPSCount Mask */ + +/* TPI Software Lock Status Register Definitions */ +#define TPI_LSR_nTT_Pos 1U /*!< TPI LSR: Not thirty-two bit. Position */ +#define TPI_LSR_nTT_Msk (0x1UL << TPI_LSR_nTT_Pos) /*!< TPI LSR: Not thirty-two bit. Mask */ + +#define TPI_LSR_SLK_Pos 1U /*!< TPI LSR: Software Lock status Position */ +#define TPI_LSR_SLK_Msk (0x1UL << TPI_LSR_SLK_Pos) /*!< TPI LSR: Software Lock status Mask */ + +#define TPI_LSR_SLI_Pos 0U /*!< TPI LSR: Software Lock implemented Position */ +#define TPI_LSR_SLI_Msk (0x1UL /*<< TPI_LSR_SLI_Pos*/) /*!< TPI LSR: Software Lock implemented 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_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFO depth Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFO depth 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 Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} 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_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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 */ +} 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_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL 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_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY 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_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context 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 */ + +/*@} 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 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status 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_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST 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 */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN 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 + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * 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 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \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); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((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->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((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; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \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 vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \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(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state 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 TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->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_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \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 TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \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 TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state 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 TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.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)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else 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 */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## 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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#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_ARMV8MML_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm0.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm0.h new file mode 100644 index 0000000..cafae5a --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm0.h @@ -0,0 +1,952 @@ +/**************************************************************************//** + * @file core_cm0.h + * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File + * @version V5.0.6 + * @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_CM0_H_GENERIC +#define __CORE_CM0_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_M0 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0 definitions */ +#define __CM0_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16U) | \ + __CM0_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0_H_DEPENDANT +#define __CORE_CM0_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0_REV + #define __CM0_REV 0x0000U + #warning "__CM0_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #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_M0 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick 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:28; /*!< bit: 0..27 Reserved */ + 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 */ + + +/** + \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:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + 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_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T 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 _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL 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[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} 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 */ + uint32_t RESERVED0; + __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 */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State 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_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE 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_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 */ + +/* 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_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 */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \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_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0 header file. + @{ + */ +/*@} 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 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 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 */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick 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 not available for Cortex-M0 */ + #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 */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \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[0U] = (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[0U] & (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[0U] = (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[0U] & (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[0U] = (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[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \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[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \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[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (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. + Address 0 must be mapped to SRAM. + \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 = 0x0U; + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M0 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 = 0x0U; + 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 = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## 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) +{ + 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 */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm0plus.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm0plus.h new file mode 100644 index 0000000..d104965 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm0plus.h @@ -0,0 +1,1085 @@ +/**************************************************************************//** + * @file core_cm0plus.h + * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File + * @version V5.0.7 + * @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_CM0PLUS_H_GENERIC +#define __CORE_CM0PLUS_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-M0+ + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM0+ definitions */ +#define __CM0PLUS_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM0PLUS_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM0PLUS_CMSIS_VERSION ((__CM0PLUS_CMSIS_VERSION_MAIN << 16U) | \ + __CM0PLUS_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (0U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM0PLUS_H_DEPENDANT +#define __CORE_CM0PLUS_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM0PLUS_REV + #define __CM0PLUS_REV 0x0000U + #warning "__CM0PLUS_REV 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 __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #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-M0+ */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU 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:28; /*!< bit: 0..27 Reserved */ + 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 */ + + +/** + \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:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + 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_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T 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 _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#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[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RESERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} 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 */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __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 */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State 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_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* SCB Interrupt Control State Register Definitions */ +#define SCB_VTOR_TBLOFF_Pos 8U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* 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_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 */ + +/* 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_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 */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \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 */ + +#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 */ +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* 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 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << 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 + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M0+ header file. + @{ + */ +/*@} 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 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 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 */ + +#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 + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick 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 not available for Cortex-M0+ */ + #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 */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \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[0U] = (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[0U] & (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[0U] = (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[0U] & (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[0U] = (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[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \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[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \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[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (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. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t vectors = SCB->VTOR; +#else + uint32_t vectors = 0x0U; +#endif + (* (int *) (vectors + ((int32_t)IRQn + NVIC_USER_IRQ_OFFSET) * 4)) = vector; + /* ARM Application Note 321 states that the M0+ 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) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t vectors = SCB->VTOR; +#else + uint32_t vectors = 0x0U; +#endif + 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 = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __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) +{ + 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 */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM0PLUS_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm1.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm1.h new file mode 100644 index 0000000..76b4569 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm1.h @@ -0,0 +1,979 @@ +/**************************************************************************//** + * @file core_cm1.h + * @brief CMSIS Cortex-M1 Core Peripheral Access Layer Header File + * @version V1.0.1 + * @date 12. November 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. + */ + +#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_CM1_H_GENERIC +#define __CORE_CM1_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_M1 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM1 definitions */ +#define __CM1_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM1_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM1_CMSIS_VERSION ((__CM1_CMSIS_VERSION_MAIN << 16U) | \ + __CM1_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (1U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM1_H_DEPENDANT +#define __CORE_CM1_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM1_REV + #define __CM1_REV 0x0100U + #warning "__CM1_REV not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #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_M1 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick 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:28; /*!< bit: 0..27 Reserved */ + 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 */ + + +/** + \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:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + 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_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T 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 _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL 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[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} 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 */ + uint32_t RESERVED0; + __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 */ + uint32_t RESERVED1; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State 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_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE 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_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 */ + +/* 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_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 */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED 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[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#define SCnSCB_ACTLR_ITCMUAEN_Pos 4U /*!< ACTLR: Instruction TCM Upper Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMUAEN_Msk (1UL << SCnSCB_ACTLR_ITCMUAEN_Pos) /*!< ACTLR: Instruction TCM Upper Alias Enable Mask */ + +#define SCnSCB_ACTLR_ITCMLAEN_Pos 3U /*!< ACTLR: Instruction TCM Lower Alias Enable Position */ +#define SCnSCB_ACTLR_ITCMLAEN_Msk (1UL << SCnSCB_ACTLR_ITCMLAEN_Pos) /*!< ACTLR: Instruction TCM Lower Alias Enable 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_CoreDebug Core Debug Registers (CoreDebug) + \brief Cortex-M1 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the Cortex-M1 header file. + @{ + */ +/*@} 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 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 */ + + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick 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 not available for Cortex-M1 */ + #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 */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \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[0U] = (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[0U] & (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[0U] = (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[0U] & (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[0U] = (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[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \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[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \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[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (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. + Address 0 must be mapped to SRAM. + \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 *)0x0U; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M1 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 *)0x0U; + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \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 = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## 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) +{ + 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 */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM1_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm23.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm23.h new file mode 100644 index 0000000..b79c6af --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm23.h @@ -0,0 +1,1996 @@ +/**************************************************************************//** + * @file core_cm23.h + * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 12. November 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. + */ + +#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_CM23_H_GENERIC +#define __CORE_CM23_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_M23 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS definitions */ +#define __CM23_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM23_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM23_CMSIS_VERSION ((__CM23_CMSIS_VERSION_MAIN << 16U) | \ + __CM23_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (23U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM23_H_DEPENDANT +#define __CORE_CM23_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM23_REV + #define __CM23_REV 0x0000U + #warning "__CM23_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 __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __VTOR_PRESENT + #define __VTOR_PRESENT 0U + #warning "__VTOR_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __NVIC_PRIO_BITS + #define __NVIC_PRIO_BITS 2U + #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 + + #ifndef __ETM_PRESENT + #define __ETM_PRESENT 0U + #warning "__ETM_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __MTB_PRESENT + #define __MTB_PRESENT 0U + #warning "__MTB_PRESENT 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_M23 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU 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:28; /*!< bit: 0..27 Reserved */ + 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 */ + + +/** + \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:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + 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_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T 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-pointer select */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint32_t IPR[124U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} 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 */ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + __IOM uint32_t VTOR; /*!< Offset: 0x008 (R/W) Vector Table Offset Register */ +#else + uint32_t RESERVED0; +#endif + __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 */ + uint32_t RESERVED1; + __IOM uint32_t SHPR[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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 */ + +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) +/* 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 */ +#endif + +/* 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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS Mask */ + +#define SCB_AIRCR_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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 */ + +/* 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN 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 */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED 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_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_SVCALLACT_Pos 7U /*!< SCB SHCSR: SVCALLACT Position */ +#define SCB_SHCSR_SVCALLACT_Msk (1UL << SCB_SHCSR_SVCALLACT_Pos) /*!< SCB SHCSR: SVCALLACT Mask */ + +#define SCB_SHCSR_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT Mask */ + +/*@} end of group CMSIS_SCB */ + + +/** + \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_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 */ + uint32_t RESERVED0[6U]; + __IM uint32_t PCSR; /*!< Offset: 0x01C (R/ ) Program Counter Sample Register */ + __IOM uint32_t COMP0; /*!< Offset: 0x020 (R/W) Comparator Register 0 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ +} 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 */ + +/* DWT Comparator Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#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_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x3UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH 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 */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __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/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} 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_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan 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 Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S 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_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< 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 Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + uint32_t RESERVED0[7U]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} MPU_Type; + +#define MPU_TYPE_RALIASES 1U + +/* 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_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: EN Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: EN Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#endif +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status 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_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST 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_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 */ +#define CoreDebug_DEMCR_DWTENA_Pos 24U /*!< CoreDebug DEMCR: DWTENA Position */ +#define CoreDebug_DEMCR_DWTENA_Msk (1UL << CoreDebug_DEMCR_DWTENA_Pos) /*!< CoreDebug DEMCR: DWTENA 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_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 */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN 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 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 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 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 + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick 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 not available for Cortex-M23 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for Cortex-M23 */ + #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 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + +#define __NVIC_SetPriorityGrouping(X) (void)(X) +#define __NVIC_GetPriorityGrouping() (0U) + +/** + \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); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \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->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (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. + If VTOR is not present address 0 must be mapped to SRAM. + \param [in] IRQn Interrupt number + \param [in] vector Address of interrupt handler function + */ +__STATIC_INLINE void __NVIC_SetVector(IRQn_Type IRQn, uint32_t vector) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \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) +{ +#if defined (__VTOR_PRESENT) && (__VTOR_PRESENT == 1U) + uint32_t *vectors = (uint32_t *)SCB->VTOR; +#else + uint32_t *vectors = (uint32_t *)0x0U; +#endif + return vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \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 = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \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 TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \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 TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state 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 TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[_IP_IDX(IRQn)] = ((uint32_t)(NVIC_NS->IPR[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB_NS->SHPR[_SHP_IDX(IRQn)] = ((uint32_t)(SCB_NS->SHPR[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IPR[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB_NS->SHPR[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.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) +{ + return 0U; /* No FPU */ +} + + +/*@} end of CMSIS_Core_FpuFunctions */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## 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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#endif + +/*@} end of CMSIS_Core_SysTickFunctions */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM23_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm3.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm3.h new file mode 100644 index 0000000..8157ca7 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm3.h @@ -0,0 +1,1937 @@ +/**************************************************************************//** + * @file core_cm3.h + * @brief CMSIS Cortex-M3 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_CM3_H_GENERIC +#define __CORE_CM3_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_M3 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM3 definitions */ +#define __CM3_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM3_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM3_CMSIS_VERSION ((__CM3_CMSIS_VERSION_MAIN << 16U) | \ + __CM3_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (3U) /*!< Cortex-M Core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_CM3_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM3_H_DEPENDANT +#define __CORE_CM3_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM3_REV + #define __CM3_REV 0x0200U + #warning "__CM3_REV 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_M3 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU 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:27; /*!< bit: 0..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 */ + + +/** + \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 _reserved1:8; /*!< bit: 16..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_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 _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#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 */ +#if defined (__CM3_REV) && (__CM3_REV < 0x0201U) /* core r2p1 */ +#define SCB_VTOR_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#else +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos) /*!< SCB VTOR: TBLOFF Mask */ +#endif + +/* 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_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_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 */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +#else + uint32_t RESERVED1[1U]; +#endif +} 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 */ +#if defined (__CM3_REV) && (__CM3_REV >= 0x200U) +#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 */ +#endif + +/*@} 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 + + +/** + \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 + +/*@} */ + + + +/******************************************************************************* + * 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 */ + + +/** + \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 M3 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) +{ + 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_CM3_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm33.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm33.h new file mode 100644 index 0000000..7fed59a --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm33.h @@ -0,0 +1,2910 @@ +/**************************************************************************//** + * @file core_cm33.h + * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File + * @version V5.1.0 + * @date 12. November 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. + */ + +#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_CM33_H_GENERIC +#define __CORE_CM33_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_M33 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM33 definitions */ +#define __CM33_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM33_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM33_CMSIS_VERSION ((__CM33_CMSIS_VERSION_MAIN << 16U) | \ + __CM33_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (33U) /*!< 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 + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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_CM33_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM33_H_DEPENDANT +#define __CORE_CM33_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM33_REV + #define __CM33_REV 0x0000U + #warning "__CM33_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 __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_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_M33 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU 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:7; /*!< bit: 9..15 Reserved */ + 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 (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + 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_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT 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_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-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __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 SHPR[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 ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ +} 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS 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_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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 */ + +/* 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN 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 */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#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_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT 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_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT 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_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF 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 */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set 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 */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power 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 */ + +/*@} 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[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __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 Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* 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_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA 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 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} 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_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS 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 Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#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_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH 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 */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __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/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} 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_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan 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 Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S 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_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< 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 Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} 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_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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 */ +} 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_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL 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_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY 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_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context 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 */ + +/*@} 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 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status 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_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST 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 */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN 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 + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * 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 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \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); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((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->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((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; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \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 vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \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(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state 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 TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->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_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \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 TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \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 TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state 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 TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.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)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else 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 */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## 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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#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_CM33_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm35p.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm35p.h new file mode 100644 index 0000000..5579c82 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm35p.h @@ -0,0 +1,2910 @@ +/**************************************************************************//** + * @file core_cm35p.h + * @brief CMSIS Cortex-M35P Core Peripheral Access Layer Header File + * @version V1.0.0 + * @date 12. November 2018 + ******************************************************************************/ +/* + * Copyright (c) 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. + */ + +#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_CM35P_H_GENERIC +#define __CORE_CM35P_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_M35P + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM35P definitions */ +#define __CM35P_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM35P_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM35P_CMSIS_VERSION ((__CM35P_CMSIS_VERSION_MAIN << 16U) | \ + __CM35P_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (35U) /*!< 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 + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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 + + #if defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1U) + #if defined (__DSP_PRESENT) && (__DSP_PRESENT == 1U) + #define __DSP_USED 1U + #else + #error "Compiler generates DSP (SIMD) instructions for a devices without DSP extensions (check __DSP_PRESENT)" + #define __DSP_USED 0U + #endif + #else + #define __DSP_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_CM35P_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM35P_H_DEPENDANT +#define __CORE_CM35P_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM35P_REV + #define __CM35P_REV 0x0000U + #warning "__CM35P_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 __SAUREGION_PRESENT + #define __SAUREGION_PRESENT 0U + #warning "__SAUREGION_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DSP_PRESENT + #define __DSP_PRESENT 0U + #warning "__DSP_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_M35P */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU Register + - Core SAU 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:7; /*!< bit: 9..15 Reserved */ + 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 (read 0) */ + uint32_t IT:2; /*!< bit: 25..26 saved IT state (read 0) */ + 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_IT_Pos 25U /*!< xPSR: IT Position */ +#define xPSR_IT_Msk (3UL << xPSR_IT_Pos) /*!< xPSR: IT 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_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-pointer select */ + uint32_t FPCA:1; /*!< bit: 2 Floating-point context active */ + uint32_t SFPA:1; /*!< bit: 3 Secure floating-point active */ + uint32_t _reserved1:28; /*!< bit: 4..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SFPA_Pos 3U /*!< CONTROL: SFPA Position */ +#define CONTROL_SFPA_Msk (1UL << CONTROL_SFPA_Pos) /*!< CONTROL: SFPA Mask */ + +#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[16U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[16U]; + __IOM uint32_t ICER[16U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[16U]; + __IOM uint32_t ISPR[16U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[16U]; + __IOM uint32_t ICPR[16U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[16U]; + __IOM uint32_t IABR[16U]; /*!< Offset: 0x200 (R/W) Interrupt Active bit Register */ + uint32_t RESERVED4[16U]; + __IOM uint32_t ITNS[16U]; /*!< Offset: 0x280 (R/W) Interrupt Non-Secure State Register */ + uint32_t RESERVED5[16U]; + __IOM uint8_t IPR[496U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register (8Bit wide) */ + uint32_t RESERVED6[580U]; + __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 SHPR[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 ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_ADR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MMFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[6U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + __IOM uint32_t NSACR; /*!< Offset: 0x08C (R/W) Non-Secure Access Control Register */ + uint32_t RESERVED3[92U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ +} 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_PENDNMISET_Pos 31U /*!< SCB ICSR: PENDNMISET Position */ +#define SCB_ICSR_PENDNMISET_Msk (1UL << SCB_ICSR_PENDNMISET_Pos) /*!< SCB ICSR: PENDNMISET Mask */ + +#define SCB_ICSR_NMIPENDSET_Pos SCB_ICSR_PENDNMISET_Pos /*!< SCB ICSR: NMIPENDSET Position, backward compatibility */ +#define SCB_ICSR_NMIPENDSET_Msk SCB_ICSR_PENDNMISET_Msk /*!< SCB ICSR: NMIPENDSET Mask, backward compatibility */ + +#define SCB_ICSR_PENDNMICLR_Pos 30U /*!< SCB ICSR: PENDNMICLR Position */ +#define SCB_ICSR_PENDNMICLR_Msk (1UL << SCB_ICSR_PENDNMICLR_Pos) /*!< SCB ICSR: PENDNMICLR 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_STTNS_Pos 24U /*!< SCB ICSR: STTNS Position (Security Extension) */ +#define SCB_ICSR_STTNS_Msk (1UL << SCB_ICSR_STTNS_Pos) /*!< SCB ICSR: STTNS Mask (Security Extension) */ + +#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_PRIS_Pos 14U /*!< SCB AIRCR: PRIS Position */ +#define SCB_AIRCR_PRIS_Msk (1UL << SCB_AIRCR_PRIS_Pos) /*!< SCB AIRCR: PRIS Mask */ + +#define SCB_AIRCR_BFHFNMINS_Pos 13U /*!< SCB AIRCR: BFHFNMINS Position */ +#define SCB_AIRCR_BFHFNMINS_Msk (1UL << SCB_AIRCR_BFHFNMINS_Pos) /*!< SCB AIRCR: BFHFNMINS 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_SYSRESETREQS_Pos 3U /*!< SCB AIRCR: SYSRESETREQS Position */ +#define SCB_AIRCR_SYSRESETREQS_Msk (1UL << SCB_AIRCR_SYSRESETREQS_Pos) /*!< SCB AIRCR: SYSRESETREQS 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 */ + +/* 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_SLEEPDEEPS_Pos 3U /*!< SCB SCR: SLEEPDEEPS Position */ +#define SCB_SCR_SLEEPDEEPS_Msk (1UL << SCB_SCR_SLEEPDEEPS_Pos) /*!< SCB SCR: SLEEPDEEPS 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_BP_Pos 18U /*!< SCB CCR: BP Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: BP Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: IC Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: IC Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: DC Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: DC Mask */ + +#define SCB_CCR_STKOFHFNMIGN_Pos 10U /*!< SCB CCR: STKOFHFNMIGN Position */ +#define SCB_CCR_STKOFHFNMIGN_Msk (1UL << SCB_CCR_STKOFHFNMIGN_Pos) /*!< SCB CCR: STKOFHFNMIGN 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 */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_HARDFAULTPENDED_Pos 21U /*!< SCB SHCSR: HARDFAULTPENDED Position */ +#define SCB_SHCSR_HARDFAULTPENDED_Msk (1UL << SCB_SHCSR_HARDFAULTPENDED_Pos) /*!< SCB SHCSR: HARDFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTPENDED_Pos 20U /*!< SCB SHCSR: SECUREFAULTPENDED Position */ +#define SCB_SHCSR_SECUREFAULTPENDED_Msk (1UL << SCB_SHCSR_SECUREFAULTPENDED_Pos) /*!< SCB SHCSR: SECUREFAULTPENDED Mask */ + +#define SCB_SHCSR_SECUREFAULTENA_Pos 19U /*!< SCB SHCSR: SECUREFAULTENA Position */ +#define SCB_SHCSR_SECUREFAULTENA_Msk (1UL << SCB_SHCSR_SECUREFAULTENA_Pos) /*!< SCB SHCSR: SECUREFAULTENA Mask */ + +#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_NMIACT_Pos 5U /*!< SCB SHCSR: NMIACT Position */ +#define SCB_SHCSR_NMIACT_Msk (1UL << SCB_SHCSR_NMIACT_Pos) /*!< SCB SHCSR: NMIACT Mask */ + +#define SCB_SHCSR_SECUREFAULTACT_Pos 4U /*!< SCB SHCSR: SECUREFAULTACT Position */ +#define SCB_SHCSR_SECUREFAULTACT_Msk (1UL << SCB_SHCSR_SECUREFAULTACT_Pos) /*!< SCB SHCSR: SECUREFAULTACT 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_HARDFAULTACT_Pos 2U /*!< SCB SHCSR: HARDFAULTACT Position */ +#define SCB_SHCSR_HARDFAULTACT_Msk (1UL << SCB_SHCSR_HARDFAULTACT_Pos) /*!< SCB SHCSR: HARDFAULTACT 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_STKOF_Pos (SCB_CFSR_USGFAULTSR_Pos + 4U) /*!< SCB CFSR (UFSR): STKOF Position */ +#define SCB_CFSR_STKOF_Msk (1UL << SCB_CFSR_STKOF_Pos) /*!< SCB CFSR (UFSR): STKOF 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 */ + +/* SCB Non-Secure Access Control Register Definitions */ +#define SCB_NSACR_CP11_Pos 11U /*!< SCB NSACR: CP11 Position */ +#define SCB_NSACR_CP11_Msk (1UL << SCB_NSACR_CP11_Pos) /*!< SCB NSACR: CP11 Mask */ + +#define SCB_NSACR_CP10_Pos 10U /*!< SCB NSACR: CP10 Position */ +#define SCB_NSACR_CP10_Msk (1UL << SCB_NSACR_CP10_Pos) /*!< SCB NSACR: CP10 Mask */ + +#define SCB_NSACR_CPn_Pos 0U /*!< SCB NSACR: CPn Position */ +#define SCB_NSACR_CPn_Msk (1UL /*<< SCB_NSACR_CPn_Pos*/) /*!< SCB NSACR: CPn Mask */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set 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 */ + __IOM uint32_t CPPWR; /*!< Offset: 0x00C (R/W) Coprocessor Power 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 */ + +/*@} 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[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) ITM Device Architecture Register */ + uint32_t RESERVED6[4U]; + __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 Stimulus Port Register Definitions */ +#define ITM_STIM_DISABLED_Pos 1U /*!< ITM STIM: DISABLED Position */ +#define ITM_STIM_DISABLED_Msk (0x1UL << ITM_STIM_DISABLED_Pos) /*!< ITM STIM: DISABLED Mask */ + +#define ITM_STIM_FIFOREADY_Pos 0U /*!< ITM STIM: FIFOREADY Position */ +#define ITM_STIM_FIFOREADY_Msk (0x1UL /*<< ITM_STIM_FIFOREADY_Pos*/) /*!< ITM STIM: FIFOREADY Mask */ + +/* 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_STALLENA_Pos 5U /*!< ITM TCR: STALLENA Position */ +#define ITM_TCR_STALLENA_Msk (1UL << ITM_TCR_STALLENA_Pos) /*!< ITM TCR: STALLENA 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 */ + uint32_t RESERVED1[1U]; + __IOM uint32_t FUNCTION0; /*!< Offset: 0x028 (R/W) Function Register 0 */ + uint32_t RESERVED2[1U]; + __IOM uint32_t COMP1; /*!< Offset: 0x030 (R/W) Comparator Register 1 */ + uint32_t RESERVED3[1U]; + __IOM uint32_t FUNCTION1; /*!< Offset: 0x038 (R/W) Function Register 1 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t COMP2; /*!< Offset: 0x040 (R/W) Comparator Register 2 */ + uint32_t RESERVED5[1U]; + __IOM uint32_t FUNCTION2; /*!< Offset: 0x048 (R/W) Function Register 2 */ + uint32_t RESERVED6[1U]; + __IOM uint32_t COMP3; /*!< Offset: 0x050 (R/W) Comparator Register 3 */ + uint32_t RESERVED7[1U]; + __IOM uint32_t FUNCTION3; /*!< Offset: 0x058 (R/W) Function Register 3 */ + uint32_t RESERVED8[1U]; + __IOM uint32_t COMP4; /*!< Offset: 0x060 (R/W) Comparator Register 4 */ + uint32_t RESERVED9[1U]; + __IOM uint32_t FUNCTION4; /*!< Offset: 0x068 (R/W) Function Register 4 */ + uint32_t RESERVED10[1U]; + __IOM uint32_t COMP5; /*!< Offset: 0x070 (R/W) Comparator Register 5 */ + uint32_t RESERVED11[1U]; + __IOM uint32_t FUNCTION5; /*!< Offset: 0x078 (R/W) Function Register 5 */ + uint32_t RESERVED12[1U]; + __IOM uint32_t COMP6; /*!< Offset: 0x080 (R/W) Comparator Register 6 */ + uint32_t RESERVED13[1U]; + __IOM uint32_t FUNCTION6; /*!< Offset: 0x088 (R/W) Function Register 6 */ + uint32_t RESERVED14[1U]; + __IOM uint32_t COMP7; /*!< Offset: 0x090 (R/W) Comparator Register 7 */ + uint32_t RESERVED15[1U]; + __IOM uint32_t FUNCTION7; /*!< Offset: 0x098 (R/W) Function Register 7 */ + uint32_t RESERVED16[1U]; + __IOM uint32_t COMP8; /*!< Offset: 0x0A0 (R/W) Comparator Register 8 */ + uint32_t RESERVED17[1U]; + __IOM uint32_t FUNCTION8; /*!< Offset: 0x0A8 (R/W) Function Register 8 */ + uint32_t RESERVED18[1U]; + __IOM uint32_t COMP9; /*!< Offset: 0x0B0 (R/W) Comparator Register 9 */ + uint32_t RESERVED19[1U]; + __IOM uint32_t FUNCTION9; /*!< Offset: 0x0B8 (R/W) Function Register 9 */ + uint32_t RESERVED20[1U]; + __IOM uint32_t COMP10; /*!< Offset: 0x0C0 (R/W) Comparator Register 10 */ + uint32_t RESERVED21[1U]; + __IOM uint32_t FUNCTION10; /*!< Offset: 0x0C8 (R/W) Function Register 10 */ + uint32_t RESERVED22[1U]; + __IOM uint32_t COMP11; /*!< Offset: 0x0D0 (R/W) Comparator Register 11 */ + uint32_t RESERVED23[1U]; + __IOM uint32_t FUNCTION11; /*!< Offset: 0x0D8 (R/W) Function Register 11 */ + uint32_t RESERVED24[1U]; + __IOM uint32_t COMP12; /*!< Offset: 0x0E0 (R/W) Comparator Register 12 */ + uint32_t RESERVED25[1U]; + __IOM uint32_t FUNCTION12; /*!< Offset: 0x0E8 (R/W) Function Register 12 */ + uint32_t RESERVED26[1U]; + __IOM uint32_t COMP13; /*!< Offset: 0x0F0 (R/W) Comparator Register 13 */ + uint32_t RESERVED27[1U]; + __IOM uint32_t FUNCTION13; /*!< Offset: 0x0F8 (R/W) Function Register 13 */ + uint32_t RESERVED28[1U]; + __IOM uint32_t COMP14; /*!< Offset: 0x100 (R/W) Comparator Register 14 */ + uint32_t RESERVED29[1U]; + __IOM uint32_t FUNCTION14; /*!< Offset: 0x108 (R/W) Function Register 14 */ + uint32_t RESERVED30[1U]; + __IOM uint32_t COMP15; /*!< Offset: 0x110 (R/W) Comparator Register 15 */ + uint32_t RESERVED31[1U]; + __IOM uint32_t FUNCTION15; /*!< Offset: 0x118 (R/W) Function Register 15 */ + uint32_t RESERVED32[934U]; + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ + uint32_t RESERVED33[1U]; + __IM uint32_t DEVARCH; /*!< Offset: 0xFBC (R/ ) Device Architecture Register */ +} 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_CYCDISS_Pos 23U /*!< DWT CTRL: CYCDISS Position */ +#define DWT_CTRL_CYCDISS_Msk (0x1UL << DWT_CTRL_CYCDISS_Pos) /*!< DWT CTRL: CYCDISS 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 Function Register Definitions */ +#define DWT_FUNCTION_ID_Pos 27U /*!< DWT FUNCTION: ID Position */ +#define DWT_FUNCTION_ID_Msk (0x1FUL << DWT_FUNCTION_ID_Pos) /*!< DWT FUNCTION: ID Mask */ + +#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_DATAVSIZE_Pos 10U /*!< DWT FUNCTION: DATAVSIZE Position */ +#define DWT_FUNCTION_DATAVSIZE_Msk (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos) /*!< DWT FUNCTION: DATAVSIZE Mask */ + +#define DWT_FUNCTION_ACTION_Pos 4U /*!< DWT FUNCTION: ACTION Position */ +#define DWT_FUNCTION_ACTION_Msk (0x1UL << DWT_FUNCTION_ACTION_Pos) /*!< DWT FUNCTION: ACTION Mask */ + +#define DWT_FUNCTION_MATCH_Pos 0U /*!< DWT FUNCTION: MATCH Position */ +#define DWT_FUNCTION_MATCH_Msk (0xFUL /*<< DWT_FUNCTION_MATCH_Pos*/) /*!< DWT FUNCTION: MATCH 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 */ + __IOM uint32_t PSCR; /*!< Offset: 0x308 (R/W) Periodic Synchronization Control Register */ + uint32_t RESERVED3[759U]; + __IM uint32_t TRIGGER; /*!< Offset: 0xEE8 (R/ ) TRIGGER Register */ + __IM uint32_t ITFTTD0; /*!< Offset: 0xEEC (R/ ) Integration Test FIFO Test Data 0 Register */ + __IOM uint32_t ITATBCTR2; /*!< Offset: 0xEF0 (R/W) Integration Test ATB Control Register 2 */ + uint32_t RESERVED4[1U]; + __IM uint32_t ITATBCTR0; /*!< Offset: 0xEF8 (R/ ) Integration Test ATB Control Register 0 */ + __IM uint32_t ITFTTD1; /*!< Offset: 0xEFC (R/ ) Integration Test FIFO Test Data 1 Register */ + __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/ ) Device Configuration Register */ + __IM uint32_t DEVTYPE; /*!< Offset: 0xFCC (R/ ) Device Type Identifier Register */ +} 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_FOnMan_Pos 6U /*!< TPI FFCR: FOnMan Position */ +#define TPI_FFCR_FOnMan_Msk (0x1UL << TPI_FFCR_FOnMan_Pos) /*!< TPI FFCR: FOnMan 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 Test FIFO Test Data 0 Register Definitions */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD0: ATB Interface 2 ATVALIDPosition */ +#define TPI_ITFTTD0_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD0: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD0_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD0_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD0: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD0_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD0: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD0_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD0_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD0: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data2_Pos 16U /*!< TPI ITFTTD0: ATB Interface 1 data2 Position */ +#define TPI_ITFTTD0_ATB_IF1_data2_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data2 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data1_Pos 8U /*!< TPI ITFTTD0: ATB Interface 1 data1 Position */ +#define TPI_ITFTTD0_ATB_IF1_data1_Msk (0xFFUL << TPI_ITFTTD0_ATB_IF1_data1_Pos) /*!< TPI ITFTTD0: ATB Interface 1 data1 Mask */ + +#define TPI_ITFTTD0_ATB_IF1_data0_Pos 0U /*!< TPI ITFTTD0: ATB Interface 1 data0 Position */ +#define TPI_ITFTTD0_ATB_IF1_data0_Msk (0xFFUL /*<< TPI_ITFTTD0_ATB_IF1_data0_Pos*/) /*!< TPI ITFTTD0: ATB Interface 1 data0 Mask */ + +/* TPI Integration Test ATB Control Register 2 Register Definitions */ +#define TPI_ITATBCTR2_AFVALID2S_Pos 1U /*!< TPI ITATBCTR2: AFVALID2S Position */ +#define TPI_ITATBCTR2_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID2S_Pos) /*!< TPI ITATBCTR2: AFVALID2SS Mask */ + +#define TPI_ITATBCTR2_AFVALID1S_Pos 1U /*!< TPI ITATBCTR2: AFVALID1S Position */ +#define TPI_ITATBCTR2_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR2_AFVALID1S_Pos) /*!< TPI ITATBCTR2: AFVALID1SS Mask */ + +#define TPI_ITATBCTR2_ATREADY2S_Pos 0U /*!< TPI ITATBCTR2: ATREADY2S Position */ +#define TPI_ITATBCTR2_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY2S_Pos*/) /*!< TPI ITATBCTR2: ATREADY2S Mask */ + +#define TPI_ITATBCTR2_ATREADY1S_Pos 0U /*!< TPI ITATBCTR2: ATREADY1S Position */ +#define TPI_ITATBCTR2_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR2_ATREADY1S_Pos*/) /*!< TPI ITATBCTR2: ATREADY1S Mask */ + +/* TPI Integration Test FIFO Test Data 1 Register Definitions */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Pos 29U /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF2_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 2 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF2_bytecount_Pos 27U /*!< TPI ITFTTD1: ATB Interface 2 byte count Position */ +#define TPI_ITFTTD1_ATB_IF2_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF2_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 2 byte count Mask */ + +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Pos 26U /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Position */ +#define TPI_ITFTTD1_ATB_IF1_ATVALID_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_ATVALID_Pos) /*!< TPI ITFTTD1: ATB Interface 1 ATVALID Mask */ + +#define TPI_ITFTTD1_ATB_IF1_bytecount_Pos 24U /*!< TPI ITFTTD1: ATB Interface 1 byte count Position */ +#define TPI_ITFTTD1_ATB_IF1_bytecount_Msk (0x3UL << TPI_ITFTTD1_ATB_IF1_bytecount_Pos) /*!< TPI ITFTTD1: ATB Interface 1 byte countt Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data2_Pos 16U /*!< TPI ITFTTD1: ATB Interface 2 data2 Position */ +#define TPI_ITFTTD1_ATB_IF2_data2_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data2 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data1_Pos 8U /*!< TPI ITFTTD1: ATB Interface 2 data1 Position */ +#define TPI_ITFTTD1_ATB_IF2_data1_Msk (0xFFUL << TPI_ITFTTD1_ATB_IF2_data1_Pos) /*!< TPI ITFTTD1: ATB Interface 2 data1 Mask */ + +#define TPI_ITFTTD1_ATB_IF2_data0_Pos 0U /*!< TPI ITFTTD1: ATB Interface 2 data0 Position */ +#define TPI_ITFTTD1_ATB_IF2_data0_Msk (0xFFUL /*<< TPI_ITFTTD1_ATB_IF2_data0_Pos*/) /*!< TPI ITFTTD1: ATB Interface 2 data0 Mask */ + +/* TPI Integration Test ATB Control Register 0 Definitions */ +#define TPI_ITATBCTR0_AFVALID2S_Pos 1U /*!< TPI ITATBCTR0: AFVALID2S Position */ +#define TPI_ITATBCTR0_AFVALID2S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID2S_Pos) /*!< TPI ITATBCTR0: AFVALID2SS Mask */ + +#define TPI_ITATBCTR0_AFVALID1S_Pos 1U /*!< TPI ITATBCTR0: AFVALID1S Position */ +#define TPI_ITATBCTR0_AFVALID1S_Msk (0x1UL << TPI_ITATBCTR0_AFVALID1S_Pos) /*!< TPI ITATBCTR0: AFVALID1SS Mask */ + +#define TPI_ITATBCTR0_ATREADY2S_Pos 0U /*!< TPI ITATBCTR0: ATREADY2S Position */ +#define TPI_ITATBCTR0_ATREADY2S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY2S_Pos*/) /*!< TPI ITATBCTR0: ATREADY2S Mask */ + +#define TPI_ITATBCTR0_ATREADY1S_Pos 0U /*!< TPI ITATBCTR0: ATREADY1S Position */ +#define TPI_ITATBCTR0_ATREADY1S_Msk (0x1UL /*<< TPI_ITATBCTR0_ATREADY1S_Pos*/) /*!< TPI ITATBCTR0: ATREADY1S 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_FIFOSZ_Pos 6U /*!< TPI DEVID: FIFOSZ Position */ +#define TPI_DEVID_FIFOSZ_Msk (0x7UL << TPI_DEVID_FIFOSZ_Pos) /*!< TPI DEVID: FIFOSZ Mask */ + +#define TPI_DEVID_NrTraceInput_Pos 0U /*!< TPI DEVID: NrTraceInput Position */ +#define TPI_DEVID_NrTraceInput_Msk (0x3FUL /*<< 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 Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) MPU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) MPU Region Limit Address Register */ + __IOM uint32_t RBAR_A1; /*!< Offset: 0x014 (R/W) MPU Region Base Address Register Alias 1 */ + __IOM uint32_t RLAR_A1; /*!< Offset: 0x018 (R/W) MPU Region Limit Address Register Alias 1 */ + __IOM uint32_t RBAR_A2; /*!< Offset: 0x01C (R/W) MPU Region Base Address Register Alias 2 */ + __IOM uint32_t RLAR_A2; /*!< Offset: 0x020 (R/W) MPU Region Limit Address Register Alias 2 */ + __IOM uint32_t RBAR_A3; /*!< Offset: 0x024 (R/W) MPU Region Base Address Register Alias 3 */ + __IOM uint32_t RLAR_A3; /*!< Offset: 0x028 (R/W) MPU Region Limit Address Register Alias 3 */ + uint32_t RESERVED0[1]; + union { + __IOM uint32_t MAIR[2]; + struct { + __IOM uint32_t MAIR0; /*!< Offset: 0x030 (R/W) MPU Memory Attribute Indirection Register 0 */ + __IOM uint32_t MAIR1; /*!< Offset: 0x034 (R/W) MPU Memory Attribute Indirection Register 1 */ + }; + }; +} 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_BASE_Pos 5U /*!< MPU RBAR: BASE Position */ +#define MPU_RBAR_BASE_Msk (0x7FFFFFFUL << MPU_RBAR_BASE_Pos) /*!< MPU RBAR: BASE Mask */ + +#define MPU_RBAR_SH_Pos 3U /*!< MPU RBAR: SH Position */ +#define MPU_RBAR_SH_Msk (0x3UL << MPU_RBAR_SH_Pos) /*!< MPU RBAR: SH Mask */ + +#define MPU_RBAR_AP_Pos 1U /*!< MPU RBAR: AP Position */ +#define MPU_RBAR_AP_Msk (0x3UL << MPU_RBAR_AP_Pos) /*!< MPU RBAR: AP Mask */ + +#define MPU_RBAR_XN_Pos 0U /*!< MPU RBAR: XN Position */ +#define MPU_RBAR_XN_Msk (01UL /*<< MPU_RBAR_XN_Pos*/) /*!< MPU RBAR: XN Mask */ + +/* MPU Region Limit Address Register Definitions */ +#define MPU_RLAR_LIMIT_Pos 5U /*!< MPU RLAR: LIMIT Position */ +#define MPU_RLAR_LIMIT_Msk (0x7FFFFFFUL << MPU_RLAR_LIMIT_Pos) /*!< MPU RLAR: LIMIT Mask */ + +#define MPU_RLAR_AttrIndx_Pos 1U /*!< MPU RLAR: AttrIndx Position */ +#define MPU_RLAR_AttrIndx_Msk (0x7UL << MPU_RLAR_AttrIndx_Pos) /*!< MPU RLAR: AttrIndx Mask */ + +#define MPU_RLAR_EN_Pos 0U /*!< MPU RLAR: Region enable bit Position */ +#define MPU_RLAR_EN_Msk (1UL /*<< MPU_RLAR_EN_Pos*/) /*!< MPU RLAR: Region enable bit Disable Mask */ + +/* MPU Memory Attribute Indirection Register 0 Definitions */ +#define MPU_MAIR0_Attr3_Pos 24U /*!< MPU MAIR0: Attr3 Position */ +#define MPU_MAIR0_Attr3_Msk (0xFFUL << MPU_MAIR0_Attr3_Pos) /*!< MPU MAIR0: Attr3 Mask */ + +#define MPU_MAIR0_Attr2_Pos 16U /*!< MPU MAIR0: Attr2 Position */ +#define MPU_MAIR0_Attr2_Msk (0xFFUL << MPU_MAIR0_Attr2_Pos) /*!< MPU MAIR0: Attr2 Mask */ + +#define MPU_MAIR0_Attr1_Pos 8U /*!< MPU MAIR0: Attr1 Position */ +#define MPU_MAIR0_Attr1_Msk (0xFFUL << MPU_MAIR0_Attr1_Pos) /*!< MPU MAIR0: Attr1 Mask */ + +#define MPU_MAIR0_Attr0_Pos 0U /*!< MPU MAIR0: Attr0 Position */ +#define MPU_MAIR0_Attr0_Msk (0xFFUL /*<< MPU_MAIR0_Attr0_Pos*/) /*!< MPU MAIR0: Attr0 Mask */ + +/* MPU Memory Attribute Indirection Register 1 Definitions */ +#define MPU_MAIR1_Attr7_Pos 24U /*!< MPU MAIR1: Attr7 Position */ +#define MPU_MAIR1_Attr7_Msk (0xFFUL << MPU_MAIR1_Attr7_Pos) /*!< MPU MAIR1: Attr7 Mask */ + +#define MPU_MAIR1_Attr6_Pos 16U /*!< MPU MAIR1: Attr6 Position */ +#define MPU_MAIR1_Attr6_Msk (0xFFUL << MPU_MAIR1_Attr6_Pos) /*!< MPU MAIR1: Attr6 Mask */ + +#define MPU_MAIR1_Attr5_Pos 8U /*!< MPU MAIR1: Attr5 Position */ +#define MPU_MAIR1_Attr5_Msk (0xFFUL << MPU_MAIR1_Attr5_Pos) /*!< MPU MAIR1: Attr5 Mask */ + +#define MPU_MAIR1_Attr4_Pos 0U /*!< MPU MAIR1: Attr4 Position */ +#define MPU_MAIR1_Attr4_Msk (0xFFUL /*<< MPU_MAIR1_Attr4_Pos*/) /*!< MPU MAIR1: Attr4 Mask */ + +/*@} end of group CMSIS_MPU */ +#endif + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_SAU Security Attribution Unit (SAU) + \brief Type definitions for the Security Attribution Unit (SAU) + @{ + */ + +/** + \brief Structure type to access the Security Attribution Unit (SAU). + */ +typedef struct +{ + __IOM uint32_t CTRL; /*!< Offset: 0x000 (R/W) SAU Control Register */ + __IM uint32_t TYPE; /*!< Offset: 0x004 (R/ ) SAU Type Register */ +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) + __IOM uint32_t RNR; /*!< Offset: 0x008 (R/W) SAU Region Number Register */ + __IOM uint32_t RBAR; /*!< Offset: 0x00C (R/W) SAU Region Base Address Register */ + __IOM uint32_t RLAR; /*!< Offset: 0x010 (R/W) SAU Region Limit Address Register */ +#else + uint32_t RESERVED0[3]; +#endif + __IOM uint32_t SFSR; /*!< Offset: 0x014 (R/W) Secure Fault Status Register */ + __IOM uint32_t SFAR; /*!< Offset: 0x018 (R/W) Secure Fault Address Register */ +} SAU_Type; + +/* SAU Control Register Definitions */ +#define SAU_CTRL_ALLNS_Pos 1U /*!< SAU CTRL: ALLNS Position */ +#define SAU_CTRL_ALLNS_Msk (1UL << SAU_CTRL_ALLNS_Pos) /*!< SAU CTRL: ALLNS Mask */ + +#define SAU_CTRL_ENABLE_Pos 0U /*!< SAU CTRL: ENABLE Position */ +#define SAU_CTRL_ENABLE_Msk (1UL /*<< SAU_CTRL_ENABLE_Pos*/) /*!< SAU CTRL: ENABLE Mask */ + +/* SAU Type Register Definitions */ +#define SAU_TYPE_SREGION_Pos 0U /*!< SAU TYPE: SREGION Position */ +#define SAU_TYPE_SREGION_Msk (0xFFUL /*<< SAU_TYPE_SREGION_Pos*/) /*!< SAU TYPE: SREGION Mask */ + +#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) +/* SAU Region Number Register Definitions */ +#define SAU_RNR_REGION_Pos 0U /*!< SAU RNR: REGION Position */ +#define SAU_RNR_REGION_Msk (0xFFUL /*<< SAU_RNR_REGION_Pos*/) /*!< SAU RNR: REGION Mask */ + +/* SAU Region Base Address Register Definitions */ +#define SAU_RBAR_BADDR_Pos 5U /*!< SAU RBAR: BADDR Position */ +#define SAU_RBAR_BADDR_Msk (0x7FFFFFFUL << SAU_RBAR_BADDR_Pos) /*!< SAU RBAR: BADDR Mask */ + +/* SAU Region Limit Address Register Definitions */ +#define SAU_RLAR_LADDR_Pos 5U /*!< SAU RLAR: LADDR Position */ +#define SAU_RLAR_LADDR_Msk (0x7FFFFFFUL << SAU_RLAR_LADDR_Pos) /*!< SAU RLAR: LADDR Mask */ + +#define SAU_RLAR_NSC_Pos 1U /*!< SAU RLAR: NSC Position */ +#define SAU_RLAR_NSC_Msk (1UL << SAU_RLAR_NSC_Pos) /*!< SAU RLAR: NSC Mask */ + +#define SAU_RLAR_ENABLE_Pos 0U /*!< SAU RLAR: ENABLE Position */ +#define SAU_RLAR_ENABLE_Msk (1UL /*<< SAU_RLAR_ENABLE_Pos*/) /*!< SAU RLAR: ENABLE Mask */ + +#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */ + +/* Secure Fault Status Register Definitions */ +#define SAU_SFSR_LSERR_Pos 7U /*!< SAU SFSR: LSERR Position */ +#define SAU_SFSR_LSERR_Msk (1UL << SAU_SFSR_LSERR_Pos) /*!< SAU SFSR: LSERR Mask */ + +#define SAU_SFSR_SFARVALID_Pos 6U /*!< SAU SFSR: SFARVALID Position */ +#define SAU_SFSR_SFARVALID_Msk (1UL << SAU_SFSR_SFARVALID_Pos) /*!< SAU SFSR: SFARVALID Mask */ + +#define SAU_SFSR_LSPERR_Pos 5U /*!< SAU SFSR: LSPERR Position */ +#define SAU_SFSR_LSPERR_Msk (1UL << SAU_SFSR_LSPERR_Pos) /*!< SAU SFSR: LSPERR Mask */ + +#define SAU_SFSR_INVTRAN_Pos 4U /*!< SAU SFSR: INVTRAN Position */ +#define SAU_SFSR_INVTRAN_Msk (1UL << SAU_SFSR_INVTRAN_Pos) /*!< SAU SFSR: INVTRAN Mask */ + +#define SAU_SFSR_AUVIOL_Pos 3U /*!< SAU SFSR: AUVIOL Position */ +#define SAU_SFSR_AUVIOL_Msk (1UL << SAU_SFSR_AUVIOL_Pos) /*!< SAU SFSR: AUVIOL Mask */ + +#define SAU_SFSR_INVER_Pos 2U /*!< SAU SFSR: INVER Position */ +#define SAU_SFSR_INVER_Msk (1UL << SAU_SFSR_INVER_Pos) /*!< SAU SFSR: INVER Mask */ + +#define SAU_SFSR_INVIS_Pos 1U /*!< SAU SFSR: INVIS Position */ +#define SAU_SFSR_INVIS_Msk (1UL << SAU_SFSR_INVIS_Pos) /*!< SAU SFSR: INVIS Mask */ + +#define SAU_SFSR_INVEP_Pos 0U /*!< SAU SFSR: INVEP Position */ +#define SAU_SFSR_INVEP_Msk (1UL /*<< SAU_SFSR_INVEP_Pos*/) /*!< SAU SFSR: INVEP Mask */ + +/*@} end of group CMSIS_SAU */ +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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 */ +} 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_LSPENS_Pos 29U /*!< FPCCR: LSPENS Position */ +#define FPU_FPCCR_LSPENS_Msk (1UL << FPU_FPCCR_LSPENS_Pos) /*!< FPCCR: LSPENS bit Mask */ + +#define FPU_FPCCR_CLRONRET_Pos 28U /*!< FPCCR: CLRONRET Position */ +#define FPU_FPCCR_CLRONRET_Msk (1UL << FPU_FPCCR_CLRONRET_Pos) /*!< FPCCR: CLRONRET bit Mask */ + +#define FPU_FPCCR_CLRONRETS_Pos 27U /*!< FPCCR: CLRONRETS Position */ +#define FPU_FPCCR_CLRONRETS_Msk (1UL << FPU_FPCCR_CLRONRETS_Pos) /*!< FPCCR: CLRONRETS bit Mask */ + +#define FPU_FPCCR_TS_Pos 26U /*!< FPCCR: TS Position */ +#define FPU_FPCCR_TS_Msk (1UL << FPU_FPCCR_TS_Pos) /*!< FPCCR: TS bit Mask */ + +#define FPU_FPCCR_UFRDY_Pos 10U /*!< FPCCR: UFRDY Position */ +#define FPU_FPCCR_UFRDY_Msk (1UL << FPU_FPCCR_UFRDY_Pos) /*!< FPCCR: UFRDY bit Mask */ + +#define FPU_FPCCR_SPLIMVIOL_Pos 9U /*!< FPCCR: SPLIMVIOL Position */ +#define FPU_FPCCR_SPLIMVIOL_Msk (1UL << FPU_FPCCR_SPLIMVIOL_Pos) /*!< FPCCR: SPLIMVIOL 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_SFRDY_Pos 7U /*!< FPCCR: SFRDY Position */ +#define FPU_FPCCR_SFRDY_Msk (1UL << FPU_FPCCR_SFRDY_Pos) /*!< FPCCR: SFRDY 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_S_Pos 2U /*!< FPCCR: Security status of the FP context bit Position */ +#define FPU_FPCCR_S_Msk (1UL << FPU_FPCCR_S_Pos) /*!< FPCCR: Security status of the FP context 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 */ + +/*@} 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 */ + uint32_t RESERVED4[1U]; + __IOM uint32_t DAUTHCTRL; /*!< Offset: 0x014 (R/W) Debug Authentication Control Register */ + __IOM uint32_t DSCSR; /*!< Offset: 0x018 (R/W) Debug Security Control and Status 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_RESTART_ST_Pos 26U /*!< CoreDebug DHCSR: S_RESTART_ST Position */ +#define CoreDebug_DHCSR_S_RESTART_ST_Msk (1UL << CoreDebug_DHCSR_S_RESTART_ST_Pos) /*!< CoreDebug DHCSR: S_RESTART_ST 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 */ + +/* Debug Authentication Control Register Definitions */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos 3U /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Position */ +#define CoreDebug_DAUTHCTRL_INTSPNIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPNIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPNIDEN, Mask */ + +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos 2U /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPNIDENSEL_Msk (1UL << CoreDebug_DAUTHCTRL_SPNIDENSEL_Pos) /*!< CoreDebug DAUTHCTRL: SPNIDENSEL Mask */ + +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Pos 1U /*!< CoreDebug DAUTHCTRL: INTSPIDEN Position */ +#define CoreDebug_DAUTHCTRL_INTSPIDEN_Msk (1UL << CoreDebug_DAUTHCTRL_INTSPIDEN_Pos) /*!< CoreDebug DAUTHCTRL: INTSPIDEN Mask */ + +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Pos 0U /*!< CoreDebug DAUTHCTRL: SPIDENSEL Position */ +#define CoreDebug_DAUTHCTRL_SPIDENSEL_Msk (1UL /*<< CoreDebug_DAUTHCTRL_SPIDENSEL_Pos*/) /*!< CoreDebug DAUTHCTRL: SPIDENSEL Mask */ + +/* Debug Security Control and Status Register Definitions */ +#define CoreDebug_DSCSR_CDS_Pos 16U /*!< CoreDebug DSCSR: CDS Position */ +#define CoreDebug_DSCSR_CDS_Msk (1UL << CoreDebug_DSCSR_CDS_Pos) /*!< CoreDebug DSCSR: CDS Mask */ + +#define CoreDebug_DSCSR_SBRSEL_Pos 1U /*!< CoreDebug DSCSR: SBRSEL Position */ +#define CoreDebug_DSCSR_SBRSEL_Msk (1UL << CoreDebug_DSCSR_SBRSEL_Pos) /*!< CoreDebug DSCSR: SBRSEL Mask */ + +#define CoreDebug_DSCSR_SBRSELEN_Pos 0U /*!< CoreDebug DSCSR: SBRSELEN Position */ +#define CoreDebug_DSCSR_SBRSELEN_Msk (1UL /*<< CoreDebug_DSCSR_SBRSELEN_Pos*/) /*!< CoreDebug DSCSR: SBRSELEN 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 + + #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SAU_BASE (SCS_BASE + 0x0DD0UL) /*!< Security Attribution Unit */ + #define SAU ((SAU_Type *) SAU_BASE ) /*!< Security Attribution Unit */ + #endif + + #define FPU_BASE (SCS_BASE + 0x0F30UL) /*!< Floating Point Unit */ + #define FPU ((FPU_Type *) FPU_BASE ) /*!< Floating Point Unit */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + #define SCS_BASE_NS (0xE002E000UL) /*!< System Control Space Base Address (non-secure address space) */ + #define CoreDebug_BASE_NS (0xE002EDF0UL) /*!< Core Debug Base Address (non-secure address space) */ + #define SysTick_BASE_NS (SCS_BASE_NS + 0x0010UL) /*!< SysTick Base Address (non-secure address space) */ + #define NVIC_BASE_NS (SCS_BASE_NS + 0x0100UL) /*!< NVIC Base Address (non-secure address space) */ + #define SCB_BASE_NS (SCS_BASE_NS + 0x0D00UL) /*!< System Control Block Base Address (non-secure address space) */ + + #define SCnSCB_NS ((SCnSCB_Type *) SCS_BASE_NS ) /*!< System control Register not in SCB(non-secure address space) */ + #define SCB_NS ((SCB_Type *) SCB_BASE_NS ) /*!< SCB configuration struct (non-secure address space) */ + #define SysTick_NS ((SysTick_Type *) SysTick_BASE_NS ) /*!< SysTick configuration struct (non-secure address space) */ + #define NVIC_NS ((NVIC_Type *) NVIC_BASE_NS ) /*!< NVIC configuration struct (non-secure address space) */ + #define CoreDebug_NS ((CoreDebug_Type *) CoreDebug_BASE_NS) /*!< Core Debug configuration struct (non-secure address space) */ + + #if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + #define MPU_BASE_NS (SCS_BASE_NS + 0x0D90UL) /*!< Memory Protection Unit (non-secure address space) */ + #define MPU_NS ((MPU_Type *) MPU_BASE_NS ) /*!< Memory Protection Unit (non-secure address space) */ + #endif + + #define FPU_BASE_NS (SCS_BASE_NS + 0x0F30UL) /*!< Floating Point Unit (non-secure address space) */ + #define FPU_NS ((FPU_Type *) FPU_BASE_NS ) /*!< Floating Point Unit (non-secure address space) */ + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ +/*@} */ + + + +/******************************************************************************* + * 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 + + +/* Special LR values for Secure/Non-Secure call handling and exception handling */ + +/* Function Return Payload (from ARMv8-M Architecture Reference Manual) LR value on entry from Secure BLXNS */ +#define FNC_RETURN (0xFEFFFFFFUL) /* bit [0] ignored when processing a branch */ + +/* The following EXC_RETURN mask values are used to evaluate the LR on exception entry */ +#define EXC_RETURN_PREFIX (0xFF000000UL) /* bits [31:24] set to indicate an EXC_RETURN value */ +#define EXC_RETURN_S (0x00000040UL) /* bit [6] stack used to push registers: 0=Non-secure 1=Secure */ +#define EXC_RETURN_DCRS (0x00000020UL) /* bit [5] stacking rules for called registers: 0=skipped 1=saved */ +#define EXC_RETURN_FTYPE (0x00000010UL) /* bit [4] allocate stack for floating-point context: 0=done 1=skipped */ +#define EXC_RETURN_MODE (0x00000008UL) /* bit [3] processor mode for return: 0=Handler mode 1=Thread mode */ +#define EXC_RETURN_SPSEL (0x00000004UL) /* bit [2] stack pointer used to restore context: 0=MSP 1=PSP */ +#define EXC_RETURN_ES (0x00000001UL) /* bit [0] security state exception was taken to: 0=Non-secure 1=Secure */ + +/* Integrity Signature (from ARMv8-M Architecture Reference Manual) for exception context stacking */ +#if defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U) /* Value for processors with floating-point extension: */ +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125AUL) /* bit [0] SFTC must match LR bit[4] EXC_RETURN_FTYPE */ +#else +#define EXC_INTEGRITY_SIGNATURE (0xFEFA125BUL) /* Value for processors without floating-point extension */ +#endif + + +/** + \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); + } +} + + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Get Interrupt Target State + \details Reads the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + \return 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_GetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Target State + \details Sets the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_SetTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] |= ((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Clear Interrupt Target State + \details Clears the interrupt target field in the NVIC and returns the interrupt target bit for the device specific interrupt. + \param [in] IRQn Device specific interrupt number. + \return 0 if interrupt is assigned to Secure + 1 if interrupt is assigned to Non Secure + \note IRQn must not be negative. + */ +__STATIC_INLINE uint32_t NVIC_ClearTargetState(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] &= ~((uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL))); + return((uint32_t)(((NVIC->ITNS[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + + +/** + \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->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB->SHPR[(((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->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB->SHPR[(((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; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + __DSB(); +} + + +/** + \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 vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \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(); + } +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief Set Priority Grouping (non-secure) + \details Sets the non-secure priority grouping field when in secure state 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 TZ_NVIC_SetPriorityGrouping_NS(uint32_t PriorityGroup) +{ + uint32_t reg_value; + uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07UL); /* only values 0..7 are used */ + + reg_value = SCB_NS->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_NS->AIRCR = reg_value; +} + + +/** + \brief Get Priority Grouping (non-secure) + \details Reads the priority grouping field from the non-secure NVIC when in secure state. + \return Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field). + */ +__STATIC_INLINE uint32_t TZ_NVIC_GetPriorityGrouping_NS(void) +{ + return ((uint32_t)((SCB_NS->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos)); +} + + +/** + \brief Enable Interrupt (non-secure) + \details Enables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_EnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Interrupt Enable status (non-secure) + \details Returns a device specific interrupt enable status from the non-secure NVIC interrupt controller when in secure state. + \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 TZ_NVIC_GetEnableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISER[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Disable Interrupt (non-secure) + \details Disables a device specific interrupt in the non-secure NVIC interrupt controller when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_DisableIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICER[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Pending Interrupt (non-secure) + \details Reads the NVIC pending register in the non-secure NVIC when in secure state and returns the pending bit for the specified device specific interrupt. + \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 TZ_NVIC_GetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Pending Interrupt (non-secure) + \details Sets the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_SetPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ISPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Clear Pending Interrupt (non-secure) + \details Clears the pending bit of a device specific interrupt in the non-secure NVIC pending register when in secure state. + \param [in] IRQn Device specific interrupt number. + \note IRQn must not be negative. + */ +__STATIC_INLINE void TZ_NVIC_ClearPendingIRQ_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \brief Get Active Interrupt (non-secure) + \details Reads the active register in non-secure NVIC when in secure state 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 TZ_NVIC_GetActive_NS(IRQn_Type IRQn) +{ + if ((int32_t)(IRQn) >= 0) + { + return((uint32_t)(((NVIC_NS->IABR[(((uint32_t)IRQn) >> 5UL)] & (1UL << (((uint32_t)IRQn) & 0x1FUL))) != 0UL) ? 1UL : 0UL)); + } + else + { + return(0U); + } +} + + +/** + \brief Set Interrupt Priority (non-secure) + \details Sets the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 non-secure processor exception. + */ +__STATIC_INLINE void TZ_NVIC_SetPriority_NS(IRQn_Type IRQn, uint32_t priority) +{ + if ((int32_t)(IRQn) >= 0) + { + NVIC_NS->IPR[((uint32_t)IRQn)] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } + else + { + SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] = (uint8_t)((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL); + } +} + + +/** + \brief Get Interrupt Priority (non-secure) + \details Reads the priority of a non-secure device specific interrupt or a non-secure processor exception when in secure state. + 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 TZ_NVIC_GetPriority_NS(IRQn_Type IRQn) +{ + + if ((int32_t)(IRQn) >= 0) + { + return(((uint32_t)NVIC_NS->IPR[((uint32_t)IRQn)] >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return(((uint32_t)SCB_NS->SHPR[(((uint32_t)IRQn) & 0xFUL)-4UL] >> (8U - __NVIC_PRIO_BITS))); + } +} +#endif /* defined (__ARM_FEATURE_CMSE) &&(__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_NVICFunctions */ + +/* ########################## MPU functions #################################### */ + +#if defined (__MPU_PRESENT) && (__MPU_PRESENT == 1U) + +#include "mpu_armv8.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)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else 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 */ + + + +/* ########################## SAU functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_SAUFunctions SAU Functions + \brief Functions that configure the SAU. + @{ + */ + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) + +/** + \brief Enable SAU + \details Enables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Enable(void) +{ + SAU->CTRL |= (SAU_CTRL_ENABLE_Msk); +} + + + +/** + \brief Disable SAU + \details Disables the Security Attribution Unit (SAU). + */ +__STATIC_INLINE void TZ_SAU_Disable(void) +{ + SAU->CTRL &= ~(SAU_CTRL_ENABLE_Msk); +} + +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +/*@} end of CMSIS_Core_SAUFunctions */ + + + + +/* ################################## 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 */ +} + +#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) +/** + \brief System Tick Configuration (non-secure) + \details Initializes the non-secure System Timer and its interrupt when in secure state, 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 TZ_SysTick_Config_NS is not included. In this case, the file device.h + must contain a vendor-specific implementation of this function. + + */ +__STATIC_INLINE uint32_t TZ_SysTick_Config_NS(uint32_t ticks) +{ + if ((ticks - 1UL) > SysTick_LOAD_RELOAD_Msk) + { + return (1UL); /* Reload value impossible */ + } + + SysTick_NS->LOAD = (uint32_t)(ticks - 1UL); /* set reload register */ + TZ_NVIC_SetPriority_NS (SysTick_IRQn, (1UL << __NVIC_PRIO_BITS) - 1UL); /* set Priority for Systick Interrupt */ + SysTick_NS->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick_NS->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_TICKINT_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ + return (0UL); /* Function successful */ +} +#endif /* defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */ + +#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_CM35P_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm4.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm4.h new file mode 100644 index 0000000..12c023b --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/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/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm7.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm7.h new file mode 100644 index 0000000..c4515d8 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_cm7.h @@ -0,0 +1,2725 @@ +/**************************************************************************//** + * @file core_cm7.h + * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File + * @version V5.1.1 + * @date 28. 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_CM7_H_GENERIC +#define __CORE_CM7_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_M7 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS CM7 definitions */ +#define __CM7_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __CM7_CMSIS_VERSION_SUB ( __CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __CM7_CMSIS_VERSION ((__CM7_CMSIS_VERSION_MAIN << 16U) | \ + __CM7_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_M (7U) /*!< 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_CM7_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_CM7_H_DEPENDANT +#define __CORE_CM7_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __CM7_REV + #define __CM7_REV 0x0000U + #warning "__CM7_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 __ICACHE_PRESENT + #define __ICACHE_PRESENT 0U + #warning "__ICACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DCACHE_PRESENT + #define __DCACHE_PRESENT 0U + #warning "__DCACHE_PRESENT not defined in device header file; using default!" + #endif + + #ifndef __DTCM_PRESENT + #define __DTCM_PRESENT 0U + #warning "__DTCM_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_M7 */ + + + +/******************************************************************************* + * 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 SHPR[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 ID_PFR[2U]; /*!< Offset: 0x040 (R/ ) Processor Feature Register */ + __IM uint32_t ID_DFR; /*!< Offset: 0x048 (R/ ) Debug Feature Register */ + __IM uint32_t ID_AFR; /*!< Offset: 0x04C (R/ ) Auxiliary Feature Register */ + __IM uint32_t ID_MFR[4U]; /*!< Offset: 0x050 (R/ ) Memory Model Feature Register */ + __IM uint32_t ID_ISAR[5U]; /*!< Offset: 0x060 (R/ ) Instruction Set Attributes Register */ + uint32_t RESERVED0[1U]; + __IM uint32_t CLIDR; /*!< Offset: 0x078 (R/ ) Cache Level ID register */ + __IM uint32_t CTR; /*!< Offset: 0x07C (R/ ) Cache Type register */ + __IM uint32_t CCSIDR; /*!< Offset: 0x080 (R/ ) Cache Size ID Register */ + __IOM uint32_t CSSELR; /*!< Offset: 0x084 (R/W) Cache Size Selection Register */ + __IOM uint32_t CPACR; /*!< Offset: 0x088 (R/W) Coprocessor Access Control Register */ + uint32_t RESERVED3[93U]; + __OM uint32_t STIR; /*!< Offset: 0x200 ( /W) Software Triggered Interrupt Register */ + uint32_t RESERVED4[15U]; + __IM uint32_t MVFR0; /*!< Offset: 0x240 (R/ ) Media and VFP Feature Register 0 */ + __IM uint32_t MVFR1; /*!< Offset: 0x244 (R/ ) Media and VFP Feature Register 1 */ + __IM uint32_t MVFR2; /*!< Offset: 0x248 (R/ ) Media and VFP Feature Register 2 */ + uint32_t RESERVED5[1U]; + __OM uint32_t ICIALLU; /*!< Offset: 0x250 ( /W) I-Cache Invalidate All to PoU */ + uint32_t RESERVED6[1U]; + __OM uint32_t ICIMVAU; /*!< Offset: 0x258 ( /W) I-Cache Invalidate by MVA to PoU */ + __OM uint32_t DCIMVAC; /*!< Offset: 0x25C ( /W) D-Cache Invalidate by MVA to PoC */ + __OM uint32_t DCISW; /*!< Offset: 0x260 ( /W) D-Cache Invalidate by Set-way */ + __OM uint32_t DCCMVAU; /*!< Offset: 0x264 ( /W) D-Cache Clean by MVA to PoU */ + __OM uint32_t DCCMVAC; /*!< Offset: 0x268 ( /W) D-Cache Clean by MVA to PoC */ + __OM uint32_t DCCSW; /*!< Offset: 0x26C ( /W) D-Cache Clean by Set-way */ + __OM uint32_t DCCIMVAC; /*!< Offset: 0x270 ( /W) D-Cache Clean and Invalidate by MVA to PoC */ + __OM uint32_t DCCISW; /*!< Offset: 0x274 ( /W) D-Cache Clean and Invalidate by Set-way */ + uint32_t RESERVED7[6U]; + __IOM uint32_t ITCMCR; /*!< Offset: 0x290 (R/W) Instruction Tightly-Coupled Memory Control Register */ + __IOM uint32_t DTCMCR; /*!< Offset: 0x294 (R/W) Data Tightly-Coupled Memory Control Registers */ + __IOM uint32_t AHBPCR; /*!< Offset: 0x298 (R/W) AHBP Control Register */ + __IOM uint32_t CACR; /*!< Offset: 0x29C (R/W) L1 Cache Control Register */ + __IOM uint32_t AHBSCR; /*!< Offset: 0x2A0 (R/W) AHB Slave Control Register */ + uint32_t RESERVED8[1U]; + __IOM uint32_t ABFSR; /*!< Offset: 0x2A8 (R/W) Auxiliary Bus Fault Status 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_BP_Pos 18U /*!< SCB CCR: Branch prediction enable bit Position */ +#define SCB_CCR_BP_Msk (1UL << SCB_CCR_BP_Pos) /*!< SCB CCR: Branch prediction enable bit Mask */ + +#define SCB_CCR_IC_Pos 17U /*!< SCB CCR: Instruction cache enable bit Position */ +#define SCB_CCR_IC_Msk (1UL << SCB_CCR_IC_Pos) /*!< SCB CCR: Instruction cache enable bit Mask */ + +#define SCB_CCR_DC_Pos 16U /*!< SCB CCR: Cache enable bit Position */ +#define SCB_CCR_DC_Msk (1UL << SCB_CCR_DC_Pos) /*!< SCB CCR: Cache enable bit Mask */ + +#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 */ + +/* SCB Cache Level ID Register Definitions */ +#define SCB_CLIDR_LOUU_Pos 27U /*!< SCB CLIDR: LoUU Position */ +#define SCB_CLIDR_LOUU_Msk (7UL << SCB_CLIDR_LOUU_Pos) /*!< SCB CLIDR: LoUU Mask */ + +#define SCB_CLIDR_LOC_Pos 24U /*!< SCB CLIDR: LoC Position */ +#define SCB_CLIDR_LOC_Msk (7UL << SCB_CLIDR_LOC_Pos) /*!< SCB CLIDR: LoC Mask */ + +/* SCB Cache Type Register Definitions */ +#define SCB_CTR_FORMAT_Pos 29U /*!< SCB CTR: Format Position */ +#define SCB_CTR_FORMAT_Msk (7UL << SCB_CTR_FORMAT_Pos) /*!< SCB CTR: Format Mask */ + +#define SCB_CTR_CWG_Pos 24U /*!< SCB CTR: CWG Position */ +#define SCB_CTR_CWG_Msk (0xFUL << SCB_CTR_CWG_Pos) /*!< SCB CTR: CWG Mask */ + +#define SCB_CTR_ERG_Pos 20U /*!< SCB CTR: ERG Position */ +#define SCB_CTR_ERG_Msk (0xFUL << SCB_CTR_ERG_Pos) /*!< SCB CTR: ERG Mask */ + +#define SCB_CTR_DMINLINE_Pos 16U /*!< SCB CTR: DminLine Position */ +#define SCB_CTR_DMINLINE_Msk (0xFUL << SCB_CTR_DMINLINE_Pos) /*!< SCB CTR: DminLine Mask */ + +#define SCB_CTR_IMINLINE_Pos 0U /*!< SCB CTR: ImInLine Position */ +#define SCB_CTR_IMINLINE_Msk (0xFUL /*<< SCB_CTR_IMINLINE_Pos*/) /*!< SCB CTR: ImInLine Mask */ + +/* SCB Cache Size ID Register Definitions */ +#define SCB_CCSIDR_WT_Pos 31U /*!< SCB CCSIDR: WT Position */ +#define SCB_CCSIDR_WT_Msk (1UL << SCB_CCSIDR_WT_Pos) /*!< SCB CCSIDR: WT Mask */ + +#define SCB_CCSIDR_WB_Pos 30U /*!< SCB CCSIDR: WB Position */ +#define SCB_CCSIDR_WB_Msk (1UL << SCB_CCSIDR_WB_Pos) /*!< SCB CCSIDR: WB Mask */ + +#define SCB_CCSIDR_RA_Pos 29U /*!< SCB CCSIDR: RA Position */ +#define SCB_CCSIDR_RA_Msk (1UL << SCB_CCSIDR_RA_Pos) /*!< SCB CCSIDR: RA Mask */ + +#define SCB_CCSIDR_WA_Pos 28U /*!< SCB CCSIDR: WA Position */ +#define SCB_CCSIDR_WA_Msk (1UL << SCB_CCSIDR_WA_Pos) /*!< SCB CCSIDR: WA Mask */ + +#define SCB_CCSIDR_NUMSETS_Pos 13U /*!< SCB CCSIDR: NumSets Position */ +#define SCB_CCSIDR_NUMSETS_Msk (0x7FFFUL << SCB_CCSIDR_NUMSETS_Pos) /*!< SCB CCSIDR: NumSets Mask */ + +#define SCB_CCSIDR_ASSOCIATIVITY_Pos 3U /*!< SCB CCSIDR: Associativity Position */ +#define SCB_CCSIDR_ASSOCIATIVITY_Msk (0x3FFUL << SCB_CCSIDR_ASSOCIATIVITY_Pos) /*!< SCB CCSIDR: Associativity Mask */ + +#define SCB_CCSIDR_LINESIZE_Pos 0U /*!< SCB CCSIDR: LineSize Position */ +#define SCB_CCSIDR_LINESIZE_Msk (7UL /*<< SCB_CCSIDR_LINESIZE_Pos*/) /*!< SCB CCSIDR: LineSize Mask */ + +/* SCB Cache Size Selection Register Definitions */ +#define SCB_CSSELR_LEVEL_Pos 1U /*!< SCB CSSELR: Level Position */ +#define SCB_CSSELR_LEVEL_Msk (7UL << SCB_CSSELR_LEVEL_Pos) /*!< SCB CSSELR: Level Mask */ + +#define SCB_CSSELR_IND_Pos 0U /*!< SCB CSSELR: InD Position */ +#define SCB_CSSELR_IND_Msk (1UL /*<< SCB_CSSELR_IND_Pos*/) /*!< SCB CSSELR: InD Mask */ + +/* SCB Software Triggered Interrupt Register Definitions */ +#define SCB_STIR_INTID_Pos 0U /*!< SCB STIR: INTID Position */ +#define SCB_STIR_INTID_Msk (0x1FFUL /*<< SCB_STIR_INTID_Pos*/) /*!< SCB STIR: INTID Mask */ + +/* SCB D-Cache Invalidate by Set-way Register Definitions */ +#define SCB_DCISW_WAY_Pos 30U /*!< SCB DCISW: Way Position */ +#define SCB_DCISW_WAY_Msk (3UL << SCB_DCISW_WAY_Pos) /*!< SCB DCISW: Way Mask */ + +#define SCB_DCISW_SET_Pos 5U /*!< SCB DCISW: Set Position */ +#define SCB_DCISW_SET_Msk (0x1FFUL << SCB_DCISW_SET_Pos) /*!< SCB DCISW: Set Mask */ + +/* SCB D-Cache Clean by Set-way Register Definitions */ +#define SCB_DCCSW_WAY_Pos 30U /*!< SCB DCCSW: Way Position */ +#define SCB_DCCSW_WAY_Msk (3UL << SCB_DCCSW_WAY_Pos) /*!< SCB DCCSW: Way Mask */ + +#define SCB_DCCSW_SET_Pos 5U /*!< SCB DCCSW: Set Position */ +#define SCB_DCCSW_SET_Msk (0x1FFUL << SCB_DCCSW_SET_Pos) /*!< SCB DCCSW: Set Mask */ + +/* SCB D-Cache Clean and Invalidate by Set-way Register Definitions */ +#define SCB_DCCISW_WAY_Pos 30U /*!< SCB DCCISW: Way Position */ +#define SCB_DCCISW_WAY_Msk (3UL << SCB_DCCISW_WAY_Pos) /*!< SCB DCCISW: Way Mask */ + +#define SCB_DCCISW_SET_Pos 5U /*!< SCB DCCISW: Set Position */ +#define SCB_DCCISW_SET_Msk (0x1FFUL << SCB_DCCISW_SET_Pos) /*!< SCB DCCISW: Set Mask */ + +/* Instruction Tightly-Coupled Memory Control Register Definitions */ +#define SCB_ITCMCR_SZ_Pos 3U /*!< SCB ITCMCR: SZ Position */ +#define SCB_ITCMCR_SZ_Msk (0xFUL << SCB_ITCMCR_SZ_Pos) /*!< SCB ITCMCR: SZ Mask */ + +#define SCB_ITCMCR_RETEN_Pos 2U /*!< SCB ITCMCR: RETEN Position */ +#define SCB_ITCMCR_RETEN_Msk (1UL << SCB_ITCMCR_RETEN_Pos) /*!< SCB ITCMCR: RETEN Mask */ + +#define SCB_ITCMCR_RMW_Pos 1U /*!< SCB ITCMCR: RMW Position */ +#define SCB_ITCMCR_RMW_Msk (1UL << SCB_ITCMCR_RMW_Pos) /*!< SCB ITCMCR: RMW Mask */ + +#define SCB_ITCMCR_EN_Pos 0U /*!< SCB ITCMCR: EN Position */ +#define SCB_ITCMCR_EN_Msk (1UL /*<< SCB_ITCMCR_EN_Pos*/) /*!< SCB ITCMCR: EN Mask */ + +/* Data Tightly-Coupled Memory Control Register Definitions */ +#define SCB_DTCMCR_SZ_Pos 3U /*!< SCB DTCMCR: SZ Position */ +#define SCB_DTCMCR_SZ_Msk (0xFUL << SCB_DTCMCR_SZ_Pos) /*!< SCB DTCMCR: SZ Mask */ + +#define SCB_DTCMCR_RETEN_Pos 2U /*!< SCB DTCMCR: RETEN Position */ +#define SCB_DTCMCR_RETEN_Msk (1UL << SCB_DTCMCR_RETEN_Pos) /*!< SCB DTCMCR: RETEN Mask */ + +#define SCB_DTCMCR_RMW_Pos 1U /*!< SCB DTCMCR: RMW Position */ +#define SCB_DTCMCR_RMW_Msk (1UL << SCB_DTCMCR_RMW_Pos) /*!< SCB DTCMCR: RMW Mask */ + +#define SCB_DTCMCR_EN_Pos 0U /*!< SCB DTCMCR: EN Position */ +#define SCB_DTCMCR_EN_Msk (1UL /*<< SCB_DTCMCR_EN_Pos*/) /*!< SCB DTCMCR: EN Mask */ + +/* AHBP Control Register Definitions */ +#define SCB_AHBPCR_SZ_Pos 1U /*!< SCB AHBPCR: SZ Position */ +#define SCB_AHBPCR_SZ_Msk (7UL << SCB_AHBPCR_SZ_Pos) /*!< SCB AHBPCR: SZ Mask */ + +#define SCB_AHBPCR_EN_Pos 0U /*!< SCB AHBPCR: EN Position */ +#define SCB_AHBPCR_EN_Msk (1UL /*<< SCB_AHBPCR_EN_Pos*/) /*!< SCB AHBPCR: EN Mask */ + +/* L1 Cache Control Register Definitions */ +#define SCB_CACR_FORCEWT_Pos 2U /*!< SCB CACR: FORCEWT Position */ +#define SCB_CACR_FORCEWT_Msk (1UL << SCB_CACR_FORCEWT_Pos) /*!< SCB CACR: FORCEWT Mask */ + +#define SCB_CACR_ECCEN_Pos 1U /*!< SCB CACR: ECCEN Position */ +#define SCB_CACR_ECCEN_Msk (1UL << SCB_CACR_ECCEN_Pos) /*!< SCB CACR: ECCEN Mask */ + +#define SCB_CACR_SIWT_Pos 0U /*!< SCB CACR: SIWT Position */ +#define SCB_CACR_SIWT_Msk (1UL /*<< SCB_CACR_SIWT_Pos*/) /*!< SCB CACR: SIWT Mask */ + +/* AHBS Control Register Definitions */ +#define SCB_AHBSCR_INITCOUNT_Pos 11U /*!< SCB AHBSCR: INITCOUNT Position */ +#define SCB_AHBSCR_INITCOUNT_Msk (0x1FUL << SCB_AHBPCR_INITCOUNT_Pos) /*!< SCB AHBSCR: INITCOUNT Mask */ + +#define SCB_AHBSCR_TPRI_Pos 2U /*!< SCB AHBSCR: TPRI Position */ +#define SCB_AHBSCR_TPRI_Msk (0x1FFUL << SCB_AHBPCR_TPRI_Pos) /*!< SCB AHBSCR: TPRI Mask */ + +#define SCB_AHBSCR_CTL_Pos 0U /*!< SCB AHBSCR: CTL Position*/ +#define SCB_AHBSCR_CTL_Msk (3UL /*<< SCB_AHBPCR_CTL_Pos*/) /*!< SCB AHBSCR: CTL Mask */ + +/* Auxiliary Bus Fault Status Register Definitions */ +#define SCB_ABFSR_AXIMTYPE_Pos 8U /*!< SCB ABFSR: AXIMTYPE Position*/ +#define SCB_ABFSR_AXIMTYPE_Msk (3UL << SCB_ABFSR_AXIMTYPE_Pos) /*!< SCB ABFSR: AXIMTYPE Mask */ + +#define SCB_ABFSR_EPPB_Pos 4U /*!< SCB ABFSR: EPPB Position*/ +#define SCB_ABFSR_EPPB_Msk (1UL << SCB_ABFSR_EPPB_Pos) /*!< SCB ABFSR: EPPB Mask */ + +#define SCB_ABFSR_AXIM_Pos 3U /*!< SCB ABFSR: AXIM Position*/ +#define SCB_ABFSR_AXIM_Msk (1UL << SCB_ABFSR_AXIM_Pos) /*!< SCB ABFSR: AXIM Mask */ + +#define SCB_ABFSR_AHBP_Pos 2U /*!< SCB ABFSR: AHBP Position*/ +#define SCB_ABFSR_AHBP_Msk (1UL << SCB_ABFSR_AHBP_Pos) /*!< SCB ABFSR: AHBP Mask */ + +#define SCB_ABFSR_DTCM_Pos 1U /*!< SCB ABFSR: DTCM Position*/ +#define SCB_ABFSR_DTCM_Msk (1UL << SCB_ABFSR_DTCM_Pos) /*!< SCB ABFSR: DTCM Mask */ + +#define SCB_ABFSR_ITCM_Pos 0U /*!< SCB ABFSR: ITCM Position*/ +#define SCB_ABFSR_ITCM_Msk (1UL /*<< SCB_ABFSR_ITCM_Pos*/) /*!< SCB ABFSR: ITCM 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_DISDYNADD_Pos 26U /*!< ACTLR: DISDYNADD Position */ +#define SCnSCB_ACTLR_DISDYNADD_Msk (1UL << SCnSCB_ACTLR_DISDYNADD_Pos) /*!< ACTLR: DISDYNADD Mask */ + +#define SCnSCB_ACTLR_DISISSCH1_Pos 21U /*!< ACTLR: DISISSCH1 Position */ +#define SCnSCB_ACTLR_DISISSCH1_Msk (0x1FUL << SCnSCB_ACTLR_DISISSCH1_Pos) /*!< ACTLR: DISISSCH1 Mask */ + +#define SCnSCB_ACTLR_DISDI_Pos 16U /*!< ACTLR: DISDI Position */ +#define SCnSCB_ACTLR_DISDI_Msk (0x1FUL << SCnSCB_ACTLR_DISDI_Pos) /*!< ACTLR: DISDI Mask */ + +#define SCnSCB_ACTLR_DISCRITAXIRUR_Pos 15U /*!< ACTLR: DISCRITAXIRUR Position */ +#define SCnSCB_ACTLR_DISCRITAXIRUR_Msk (1UL << SCnSCB_ACTLR_DISCRITAXIRUR_Pos) /*!< ACTLR: DISCRITAXIRUR Mask */ + +#define SCnSCB_ACTLR_DISBTACALLOC_Pos 14U /*!< ACTLR: DISBTACALLOC Position */ +#define SCnSCB_ACTLR_DISBTACALLOC_Msk (1UL << SCnSCB_ACTLR_DISBTACALLOC_Pos) /*!< ACTLR: DISBTACALLOC Mask */ + +#define SCnSCB_ACTLR_DISBTACREAD_Pos 13U /*!< ACTLR: DISBTACREAD Position */ +#define SCnSCB_ACTLR_DISBTACREAD_Msk (1UL << SCnSCB_ACTLR_DISBTACREAD_Pos) /*!< ACTLR: DISBTACREAD Mask */ + +#define SCnSCB_ACTLR_DISITMATBFLUSH_Pos 12U /*!< ACTLR: DISITMATBFLUSH Position */ +#define SCnSCB_ACTLR_DISITMATBFLUSH_Msk (1UL << SCnSCB_ACTLR_DISITMATBFLUSH_Pos) /*!< ACTLR: DISITMATBFLUSH Mask */ + +#define SCnSCB_ACTLR_DISRAMODE_Pos 11U /*!< ACTLR: DISRAMODE Position */ +#define SCnSCB_ACTLR_DISRAMODE_Msk (1UL << SCnSCB_ACTLR_DISRAMODE_Pos) /*!< ACTLR: DISRAMODE Mask */ + +#define SCnSCB_ACTLR_FPEXCODIS_Pos 10U /*!< ACTLR: FPEXCODIS Position */ +#define SCnSCB_ACTLR_FPEXCODIS_Msk (1UL << SCnSCB_ACTLR_FPEXCODIS_Pos) /*!< ACTLR: FPEXCODIS 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_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 */ + uint32_t RESERVED3[981U]; + __OM uint32_t LAR; /*!< Offset: 0xFB0 ( W) Lock Access Register */ + __IM uint32_t LSR; /*!< Offset: 0xFB4 (R ) Lock Status Register */ +} 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->SHPR[(((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->SHPR[(((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; + __DSB(); +} + + +/** + \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 = SCB->MVFR0; + if ((mvfr0 & (FPU_MVFR0_Single_precision_Msk | FPU_MVFR0_Double_precision_Msk)) == 0x220U) + { + return 2U; /* Double + Single precision FPU */ + } + else 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 */ + + + +/* ########################## Cache functions #################################### */ +/** + \ingroup CMSIS_Core_FunctionInterface + \defgroup CMSIS_Core_CacheFunctions Cache Functions + \brief Functions that configure Instruction and Data cache. + @{ + */ + +/* Cache Size ID Register Macros */ +#define CCSIDR_WAYS(x) (((x) & SCB_CCSIDR_ASSOCIATIVITY_Msk) >> SCB_CCSIDR_ASSOCIATIVITY_Pos) +#define CCSIDR_SETS(x) (((x) & SCB_CCSIDR_NUMSETS_Msk ) >> SCB_CCSIDR_NUMSETS_Pos ) + +#define __SCB_DCACHE_LINE_SIZE 32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ +#define __SCB_ICACHE_LINE_SIZE 32U /*!< Cortex-M7 cache line size is fixed to 32 bytes (8 words). See also register SCB_CCSIDR */ + +/** + \brief Enable I-Cache + \details Turns on I-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if (SCB->CCR & SCB_CCR_IC_Msk) return; /* return if ICache is already enabled */ + + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + SCB->CCR |= (uint32_t)SCB_CCR_IC_Msk; /* enable I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable I-Cache + \details Turns off I-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->CCR &= ~(uint32_t)SCB_CCR_IC_Msk; /* disable I-Cache */ + SCB->ICIALLU = 0UL; /* invalidate I-Cache */ + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate I-Cache + \details Invalidates I-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateICache (void) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + __DSB(); + __ISB(); + SCB->ICIALLU = 0UL; + __DSB(); + __ISB(); + #endif +} + + +/** + \brief I-Cache Invalidate by address + \details Invalidates I-Cache for the given address. + I-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + I-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] isize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateICache_by_Addr (void *addr, int32_t isize) +{ + #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) + if ( isize > 0 ) { + int32_t op_size = isize + (((uint32_t)addr) & (__SCB_ICACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_ICACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->ICIMVAU = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_ICACHE_LINE_SIZE; + op_size -= __SCB_ICACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief Enable D-Cache + \details Turns on D-Cache + */ +__STATIC_FORCEINLINE void SCB_EnableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + if (SCB->CCR & SCB_CCR_DC_Msk) return; /* return if DCache is already enabled */ + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + __DSB(); + + SCB->CCR |= (uint32_t)SCB_CCR_DC_Msk; /* enable D-Cache */ + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Disable D-Cache + \details Turns off D-Cache + */ +__STATIC_FORCEINLINE void SCB_DisableDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + SCB->CCR &= ~(uint32_t)SCB_CCR_DC_Msk; /* disable D-Cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Invalidate D-Cache + \details Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_InvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCISW = (((sets << SCB_DCISW_SET_Pos) & SCB_DCISW_SET_Msk) | + ((ways << SCB_DCISW_WAY_Pos) & SCB_DCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean D-Cache + \details Cleans D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCSW = (((sets << SCB_DCCSW_SET_Pos) & SCB_DCCSW_SET_Msk) | + ((ways << SCB_DCCSW_WAY_Pos) & SCB_DCCSW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief Clean & Invalidate D-Cache + \details Cleans and Invalidates D-Cache + */ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache (void) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + uint32_t ccsidr; + uint32_t sets; + uint32_t ways; + + SCB->CSSELR = 0U; /* select Level 1 data cache */ + __DSB(); + + ccsidr = SCB->CCSIDR; + + /* clean & invalidate D-Cache */ + sets = (uint32_t)(CCSIDR_SETS(ccsidr)); + do { + ways = (uint32_t)(CCSIDR_WAYS(ccsidr)); + do { + SCB->DCCISW = (((sets << SCB_DCCISW_SET_Pos) & SCB_DCCISW_SET_Msk) | + ((ways << SCB_DCCISW_WAY_Pos) & SCB_DCCISW_WAY_Msk) ); + #if defined ( __CC_ARM ) + __schedule_barrier(); + #endif + } while (ways-- != 0U); + } while(sets-- != 0U); + + __DSB(); + __ISB(); + #endif +} + + +/** + \brief D-Cache Invalidate by address + \details Invalidates D-Cache for the given address. + D-Cache is invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are invalidated. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_InvalidateDCache_by_Addr (void *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean by address + \details Cleans D-Cache for the given address + D-Cache is cleaned starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned. + \param[in] addr address + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + + +/** + \brief D-Cache Clean and Invalidate by address + \details Cleans and invalidates D_Cache for the given address + D-Cache is cleaned and invalidated starting from a 32 byte aligned address in 32 byte granularity. + D-Cache memory blocks which are part of given address + given size are cleaned and invalidated. + \param[in] addr address (aligned to 32-byte boundary) + \param[in] dsize size of memory block (in number of bytes) +*/ +__STATIC_FORCEINLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) +{ + #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) + if ( dsize > 0 ) { + int32_t op_size = dsize + (((uint32_t)addr) & (__SCB_DCACHE_LINE_SIZE - 1U)); + uint32_t op_addr = (uint32_t)addr /* & ~(__SCB_DCACHE_LINE_SIZE - 1U) */; + + __DSB(); + + do { + SCB->DCCIMVAC = op_addr; /* register accepts only 32byte aligned values, only bits 31..5 are valid */ + op_addr += __SCB_DCACHE_LINE_SIZE; + op_size -= __SCB_DCACHE_LINE_SIZE; + } while ( op_size > 0 ); + + __DSB(); + __ISB(); + } + #endif +} + +/*@} end of CMSIS_Core_CacheFunctions */ + + + +/* ################################## 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_CM7_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_sc000.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_sc000.h new file mode 100644 index 0000000..cf92577 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_sc000.h @@ -0,0 +1,1025 @@ +/**************************************************************************//** + * @file core_sc000.h + * @brief CMSIS SC000 Core Peripheral Access Layer Header File + * @version V5.0.6 + * @date 12. November 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. + */ + +#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_SC000_H_GENERIC +#define __CORE_SC000_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 SC000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC000 definitions */ +#define __SC000_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC000_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC000_CMSIS_VERSION ((__SC000_CMSIS_VERSION_MAIN << 16U) | \ + __SC000_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (000U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC000_H_DEPENDANT +#define __CORE_SC000_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC000_REV + #define __SC000_REV 0x0000U + #warning "__SC000_REV 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 2U + #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 SC000 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core MPU 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:28; /*!< bit: 0..27 Reserved */ + 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 */ + + +/** + \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:15; /*!< bit: 9..23 Reserved */ + uint32_t T:1; /*!< bit: 24 Thumb bit (read 0) */ + uint32_t _reserved1:3; /*!< bit: 25..27 Reserved */ + 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_T_Pos 24U /*!< xPSR: T Position */ +#define xPSR_T_Msk (1UL << xPSR_T_Pos) /*!< xPSR: T 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 _reserved0:1; /*!< bit: 0 Reserved */ + uint32_t SPSEL:1; /*!< bit: 1 Stack to be used */ + uint32_t _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#define CONTROL_SPSEL_Pos 1U /*!< CONTROL: SPSEL Position */ +#define CONTROL_SPSEL_Msk (1UL << CONTROL_SPSEL_Pos) /*!< CONTROL: SPSEL 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[1U]; /*!< Offset: 0x000 (R/W) Interrupt Set Enable Register */ + uint32_t RESERVED0[31U]; + __IOM uint32_t ICER[1U]; /*!< Offset: 0x080 (R/W) Interrupt Clear Enable Register */ + uint32_t RSERVED1[31U]; + __IOM uint32_t ISPR[1U]; /*!< Offset: 0x100 (R/W) Interrupt Set Pending Register */ + uint32_t RESERVED2[31U]; + __IOM uint32_t ICPR[1U]; /*!< Offset: 0x180 (R/W) Interrupt Clear Pending Register */ + uint32_t RESERVED3[31U]; + uint32_t RESERVED4[64U]; + __IOM uint32_t IP[8U]; /*!< Offset: 0x300 (R/W) Interrupt Priority Register */ +} NVIC_Type; + +/*@} 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 */ + uint32_t RESERVED0[1U]; + __IOM uint32_t SHP[2U]; /*!< Offset: 0x01C (R/W) System Handlers Priority Registers. [0] is RESERVED */ + __IOM uint32_t SHCSR; /*!< Offset: 0x024 (R/W) System Handler Control and State Register */ + uint32_t RESERVED1[154U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features 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_VECTACTIVE_Pos 0U /*!< SCB ICSR: VECTACTIVE Position */ +#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL /*<< SCB_ICSR_VECTACTIVE_Pos*/) /*!< SCB ICSR: VECTACTIVE Mask */ + +/* SCB Interrupt Control State 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_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 */ + +/* 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_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 */ + +/* SCB System Handler Control and State Register Definitions */ +#define SCB_SHCSR_SVCALLPENDED_Pos 15U /*!< SCB SHCSR: SVCALLPENDED Position */ +#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED 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[2U]; + __IOM uint32_t ACTLR; /*!< Offset: 0x008 (R/W) Auxiliary Control Register */ +} SCnSCB_Type; + +/* Auxiliary Control Register Definitions */ +#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 */ + +#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 */ +} MPU_Type; + +/* 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 8U /*!< MPU RBAR: ADDR Position */ +#define MPU_RBAR_ADDR_Msk (0xFFFFFFUL << 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 + + +/** + \ingroup CMSIS_core_register + \defgroup CMSIS_CoreDebug Core Debug Registers (CoreDebug) + \brief SC000 Core Debug Registers (DCB registers, SHCSR, and DFSR) are only accessible over DAP and not via processor. + Therefore they are not covered by the SC000 header file. + @{ + */ +/*@} 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 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 */ + +#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 + +/*@} */ + + + +/******************************************************************************* + * Hardware Abstraction Layer + Core Function Interface contains: + - Core NVIC Functions + - Core SysTick 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 not available for SC000 */ +/*#define NVIC_GetPriorityGrouping __NVIC_GetPriorityGrouping not available for SC000 */ + #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 not available for SC000 */ + #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 */ + + +/* Interrupt Priorities are WORD accessible only under Armv6-M */ +/* The following MACROS handle generation of the register offset and byte masks */ +#define _BIT_SHIFT(IRQn) ( ((((uint32_t)(int32_t)(IRQn)) ) & 0x03UL) * 8UL) +#define _SHP_IDX(IRQn) ( (((((uint32_t)(int32_t)(IRQn)) & 0x0FUL)-8UL) >> 2UL) ) +#define _IP_IDX(IRQn) ( (((uint32_t)(int32_t)(IRQn)) >> 2UL) ) + + +/** + \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[0U] = (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[0U] & (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[0U] = (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[0U] & (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[0U] = (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[0U] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL)); + } +} + + +/** + \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[_IP_IDX(IRQn)] = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } + else + { + SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) | + (((priority << (8U - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn))); + } +} + + +/** + \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[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } + else + { + return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & (uint32_t)0xFFUL) >> (8U - __NVIC_PRIO_BITS))); + } +} + + +/** + \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; + vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; + /* ARM Application Note 321 states that the M0 and M0+ do not require the architectural barrier - assume SC000 is the same */ +} + + +/** + \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 vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET]; +} + + +/** + \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 = ((0x5FAUL << SCB_AIRCR_VECTKEY_Pos) | + SCB_AIRCR_SYSRESETREQ_Msk); + __DSB(); /* Ensure completion of memory access */ + + for(;;) /* wait until reset */ + { + __NOP(); + } +} + +/*@} end of CMSIS_Core_NVICFunctions */ + + +/* ########################## 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) +{ + 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 */ + + + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC000_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/core_sc300.h b/L476_ats_blink-master/Drivers/CMSIS/Include/core_sc300.h new file mode 100644 index 0000000..40f3af8 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/core_sc300.h @@ -0,0 +1,1912 @@ +/**************************************************************************//** + * @file core_sc300.h + * @brief CMSIS SC300 Core Peripheral Access Layer Header File + * @version V5.0.8 + * @date 31. 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. + */ + +#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_SC300_H_GENERIC +#define __CORE_SC300_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 SC3000 + @{ + */ + +#include "cmsis_version.h" + +/* CMSIS SC300 definitions */ +#define __SC300_CMSIS_VERSION_MAIN (__CM_CMSIS_VERSION_MAIN) /*!< \deprecated [31:16] CMSIS HAL main version */ +#define __SC300_CMSIS_VERSION_SUB (__CM_CMSIS_VERSION_SUB) /*!< \deprecated [15:0] CMSIS HAL sub version */ +#define __SC300_CMSIS_VERSION ((__SC300_CMSIS_VERSION_MAIN << 16U) | \ + __SC300_CMSIS_VERSION_SUB ) /*!< \deprecated CMSIS HAL version number */ + +#define __CORTEX_SC (300U) /*!< Cortex secure core */ + +/** __FPU_USED indicates whether an FPU is used or not. + This core does not support an FPU at all +*/ +#define __FPU_USED 0U + +#if defined ( __CC_ARM ) + #if defined __TARGET_FPU_VFP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) + #if defined __ARM_FP + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __GNUC__ ) + #if defined (__VFP_FP__) && !defined(__SOFTFP__) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __ICCARM__ ) + #if defined __ARMVFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TI_ARM__ ) + #if defined __TI_VFP_SUPPORT__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __TASKING__ ) + #if defined __FPU_VFP__ + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#elif defined ( __CSMC__ ) + #if ( __CSMC__ & 0x400U) + #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)" + #endif + +#endif + +#include "cmsis_compiler.h" /* CMSIS compiler specific defines */ + + +#ifdef __cplusplus +} +#endif + +#endif /* __CORE_SC300_H_GENERIC */ + +#ifndef __CMSIS_GENERIC + +#ifndef __CORE_SC300_H_DEPENDANT +#define __CORE_SC300_H_DEPENDANT + +#ifdef __cplusplus + extern "C" { +#endif + +/* check device defines and use defaults */ +#if defined __CHECK_DEVICE_DEFINES + #ifndef __SC300_REV + #define __SC300_REV 0x0000U + #warning "__SC300_REV 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 SC300 */ + + + +/******************************************************************************* + * Register Abstraction + Core Register contain: + - Core Register + - Core NVIC Register + - Core SCB Register + - Core SysTick Register + - Core Debug Register + - Core MPU 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:27; /*!< bit: 0..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 */ + + +/** + \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 _reserved1:8; /*!< bit: 16..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_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 _reserved1:30; /*!< bit: 2..31 Reserved */ + } b; /*!< Structure used for bit access */ + uint32_t w; /*!< Type used for word access */ +} CONTROL_Type; + +/* CONTROL Register Definitions */ +#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 */ + uint32_t RESERVED1[129U]; + __IOM uint32_t SFCR; /*!< Offset: 0x290 (R/W) Security Features 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_TBLBASE_Pos 29U /*!< SCB VTOR: TBLBASE Position */ +#define SCB_VTOR_TBLBASE_Msk (1UL << SCB_VTOR_TBLBASE_Pos) /*!< SCB VTOR: TBLBASE Mask */ + +#define SCB_VTOR_TBLOFF_Pos 7U /*!< SCB VTOR: TBLOFF Position */ +#define SCB_VTOR_TBLOFF_Msk (0x3FFFFFUL << 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_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_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_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 (0xFUL /*<< 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; + +/* 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 + + +/** + \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 + +/*@} */ + + + +/******************************************************************************* + * 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 */ + + +/** + \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 M3 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 */ + + +/* ########################## 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) +{ + 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_SC300_H_DEPENDANT */ + +#endif /* __CMSIS_GENERIC */ diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/mpu_armv7.h b/L476_ats_blink-master/Drivers/CMSIS/Include/mpu_armv7.h new file mode 100644 index 0000000..66ef59b --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/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/L476_ats_blink-master/Drivers/CMSIS/Include/mpu_armv8.h b/L476_ats_blink-master/Drivers/CMSIS/Include/mpu_armv8.h new file mode 100644 index 0000000..0041d4d --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/mpu_armv8.h @@ -0,0 +1,346 @@ +/****************************************************************************** + * @file mpu_armv8.h + * @brief CMSIS MPU API for Armv8-M and Armv8.1-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_ARMV8_H +#define ARM_MPU_ARMV8_H + +/** \brief Attribute for device memory (outer only) */ +#define ARM_MPU_ATTR_DEVICE ( 0U ) + +/** \brief Attribute for non-cacheable, normal memory */ +#define ARM_MPU_ATTR_NON_CACHEABLE ( 4U ) + +/** \brief Attribute for normal memory (outer and inner) +* \param NT Non-Transient: Set to 1 for non-transient data. +* \param WB Write-Back: Set to 1 to use write-back update policy. +* \param RA Read Allocation: Set to 1 to use cache allocation on read miss. +* \param WA Write Allocation: Set to 1 to use cache allocation on write miss. +*/ +#define ARM_MPU_ATTR_MEMORY_(NT, WB, RA, WA) \ + (((NT & 1U) << 3U) | ((WB & 1U) << 2U) | ((RA & 1U) << 1U) | (WA & 1U)) + +/** \brief Device memory type non Gathering, non Re-ordering, non Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRnE (0U) + +/** \brief Device memory type non Gathering, non Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGnRE (1U) + +/** \brief Device memory type non Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_nGRE (2U) + +/** \brief Device memory type Gathering, Re-ordering, Early Write Acknowledgement */ +#define ARM_MPU_ATTR_DEVICE_GRE (3U) + +/** \brief Memory Attribute +* \param O Outer memory attributes +* \param I O == ARM_MPU_ATTR_DEVICE: Device memory attributes, else: Inner memory attributes +*/ +#define ARM_MPU_ATTR(O, I) (((O & 0xFU) << 4U) | (((O & 0xFU) != 0U) ? (I & 0xFU) : ((I & 0x3U) << 2U))) + +/** \brief Normal memory non-shareable */ +#define ARM_MPU_SH_NON (0U) + +/** \brief Normal memory outer shareable */ +#define ARM_MPU_SH_OUTER (2U) + +/** \brief Normal memory inner shareable */ +#define ARM_MPU_SH_INNER (3U) + +/** \brief Memory access permissions +* \param RO Read-Only: Set to 1 for read-only memory. +* \param NP Non-Privileged: Set to 1 for non-privileged memory. +*/ +#define ARM_MPU_AP_(RO, NP) (((RO & 1U) << 1U) | (NP & 1U)) + +/** \brief Region Base Address Register value +* \param BASE The base address bits [31:5] of a memory region. The value is zero extended. Effective address gets 32 byte aligned. +* \param SH Defines the Shareability domain for this memory region. +* \param RO Read-Only: Set to 1 for a read-only memory region. +* \param NP Non-Privileged: Set to 1 for a non-privileged memory region. +* \oaram XN eXecute Never: Set to 1 for a non-executable memory region. +*/ +#define ARM_MPU_RBAR(BASE, SH, RO, NP, XN) \ + ((BASE & MPU_RBAR_BASE_Msk) | \ + ((SH << MPU_RBAR_SH_Pos) & MPU_RBAR_SH_Msk) | \ + ((ARM_MPU_AP_(RO, NP) << MPU_RBAR_AP_Pos) & MPU_RBAR_AP_Msk) | \ + ((XN << MPU_RBAR_XN_Pos) & MPU_RBAR_XN_Msk)) + +/** \brief Region Limit Address Register value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR(LIMIT, IDX) \ + ((LIMIT & MPU_RLAR_LIMIT_Msk) | \ + ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +#if defined(MPU_RLAR_PXN_Pos) + +/** \brief Region Limit Address Register with PXN value +* \param LIMIT The limit address bits [31:5] for this memory region. The value is one extended. +* \param PXN Privileged execute never. Defines whether code can be executed from this privileged region. +* \param IDX The attribute index to be associated with this memory region. +*/ +#define ARM_MPU_RLAR_PXN(LIMIT, PXN, IDX) \ + ((LIMIT & MPU_RLAR_LIMIT_Msk) | \ + ((PXN << MPU_RLAR_PXN_Pos) & MPU_RLAR_PXN_Msk) | \ + ((IDX << MPU_RLAR_AttrIndx_Pos) & MPU_RLAR_AttrIndx_Msk) | \ + (MPU_RLAR_EN_Msk)) + +#endif + +/** +* Struct for a single MPU Region +*/ +typedef struct { + uint32_t RBAR; /*!< Region Base Address Register value */ + uint32_t RLAR; /*!< Region Limit Address Register value */ +} 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; +} + +#ifdef MPU_NS +/** Enable the Non-secure MPU. +* \param MPU_Control Default access permissions for unconfigured regions. +*/ +__STATIC_INLINE void ARM_MPU_Enable_NS(uint32_t MPU_Control) +{ + MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; +#endif + __DSB(); + __ISB(); +} + +/** Disable the Non-secure MPU. +*/ +__STATIC_INLINE void ARM_MPU_Disable_NS(void) +{ + __DMB(); +#ifdef SCB_SHCSR_MEMFAULTENA_Msk + SCB_NS->SHCSR &= ~SCB_SHCSR_MEMFAULTENA_Msk; +#endif + MPU_NS->CTRL &= ~MPU_CTRL_ENABLE_Msk; +} +#endif + +/** Set the memory attribute encoding to the given MPU. +* \param mpu Pointer to the MPU to be configured. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttrEx(MPU_Type* mpu, uint8_t idx, uint8_t attr) +{ + const uint8_t reg = idx / 4U; + const uint32_t pos = ((idx % 4U) * 8U); + const uint32_t mask = 0xFFU << pos; + + if (reg >= (sizeof(mpu->MAIR) / sizeof(mpu->MAIR[0]))) { + return; // invalid index + } + + mpu->MAIR[reg] = ((mpu->MAIR[reg] & ~mask) | ((attr << pos) & mask)); +} + +/** Set the memory attribute encoding. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU, idx, attr); +} + +#ifdef MPU_NS +/** Set the memory attribute encoding to the Non-secure MPU. +* \param idx The attribute index to be set [0-7] +* \param attr The attribute value to be set. +*/ +__STATIC_INLINE void ARM_MPU_SetMemAttr_NS(uint8_t idx, uint8_t attr) +{ + ARM_MPU_SetMemAttrEx(MPU_NS, idx, attr); +} +#endif + +/** Clear and disable the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegionEx(MPU_Type* mpu, uint32_t rnr) +{ + mpu->RNR = rnr; + mpu->RLAR = 0U; +} + +/** Clear and disable the given MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU, rnr); +} + +#ifdef MPU_NS +/** Clear and disable the given Non-secure MPU region. +* \param rnr Region number to be cleared. +*/ +__STATIC_INLINE void ARM_MPU_ClrRegion_NS(uint32_t rnr) +{ + ARM_MPU_ClrRegionEx(MPU_NS, rnr); +} +#endif + +/** Configure the given MPU region of the given MPU. +* \param mpu Pointer to MPU to be used. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegionEx(MPU_Type* mpu, uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + mpu->RNR = rnr; + mpu->RBAR = rbar; + mpu->RLAR = rlar; +} + +/** Configure the given MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU, rnr, rbar, rlar); +} + +#ifdef MPU_NS +/** Configure the given Non-secure MPU region. +* \param rnr Region number to be configured. +* \param rbar Value for RBAR register. +* \param rlar Value for RLAR register. +*/ +__STATIC_INLINE void ARM_MPU_SetRegion_NS(uint32_t rnr, uint32_t rbar, uint32_t rlar) +{ + ARM_MPU_SetRegionEx(MPU_NS, rnr, rbar, rlar); +} +#endif + +/** 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 to the given MPU. +* \param mpu Pointer to the MPU registers to be used. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_LoadEx(MPU_Type* mpu, uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + const uint32_t rowWordSize = sizeof(ARM_MPU_Region_t)/4U; + if (cnt == 1U) { + mpu->RNR = rnr; + ARM_MPU_OrderedMemcpy(&(mpu->RBAR), &(table->RBAR), rowWordSize); + } else { + uint32_t rnrBase = rnr & ~(MPU_TYPE_RALIASES-1U); + uint32_t rnrOffset = rnr % MPU_TYPE_RALIASES; + + mpu->RNR = rnrBase; + while ((rnrOffset + cnt) > MPU_TYPE_RALIASES) { + uint32_t c = MPU_TYPE_RALIASES - rnrOffset; + ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize); + table += c; + cnt -= c; + rnrOffset = 0U; + rnrBase += MPU_TYPE_RALIASES; + mpu->RNR = rnrBase; + } + + ARM_MPU_OrderedMemcpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), cnt*rowWordSize); + } +} + +/** Load the given number of MPU regions from a table. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU, rnr, table, cnt); +} + +#ifdef MPU_NS +/** Load the given number of MPU regions from a table to the Non-secure MPU. +* \param rnr First region number to be configured. +* \param table Pointer to the MPU configuration table. +* \param cnt Amount of regions to be configured. +*/ +__STATIC_INLINE void ARM_MPU_Load_NS(uint32_t rnr, ARM_MPU_Region_t const* table, uint32_t cnt) +{ + ARM_MPU_LoadEx(MPU_NS, rnr, table, cnt); +} +#endif + +#endif + diff --git a/L476_ats_blink-master/Drivers/CMSIS/Include/tz_context.h b/L476_ats_blink-master/Drivers/CMSIS/Include/tz_context.h new file mode 100644 index 0000000..0d09749 --- /dev/null +++ b/L476_ats_blink-master/Drivers/CMSIS/Include/tz_context.h @@ -0,0 +1,70 @@ +/****************************************************************************** + * @file tz_context.h + * @brief Context Management for Armv8-M TrustZone + * @version V1.0.1 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-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. + */ + +#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 TZ_CONTEXT_H +#define TZ_CONTEXT_H + +#include + +#ifndef TZ_MODULEID_T +#define TZ_MODULEID_T +/// \details Data type that identifies secure software modules called by a process. +typedef uint32_t TZ_ModuleId_t; +#endif + +/// \details TZ Memory ID identifies an allocated memory slot. +typedef uint32_t TZ_MemoryId_t; + +/// Initialize secure context memory system +/// \return execution status (1: success, 0: error) +uint32_t TZ_InitContextSystem_S (void); + +/// Allocate context memory for calling secure software modules in TrustZone +/// \param[in] module identifies software modules called from non-secure mode +/// \return value != 0 id TrustZone memory slot identifier +/// \return value 0 no memory available or internal error +TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); + +/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); + +/// Load secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); + +/// Store secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); + +#endif // TZ_CONTEXT_H diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_bus.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_bus.h new file mode 100644 index 0000000..cf79193 --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_bus.h @@ -0,0 +1,1957 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_bus.h + * @author MCD Application Team + * @brief Header file of BUS LL module. + + @verbatim + ##### RCC Limitations ##### + ============================================================================== + [..] + A delay between an RCC peripheral clock enable and the effective peripheral + enabling should be taken into account in order to manage the peripheral read/write + from/to registers. + (+) This delay depends on the peripheral mapping. + (++) AHB & APB peripherals, 1 dummy read is necessary + + [..] + Workarounds: + (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_BUS_H +#define STM32L4xx_LL_BUS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup BUS_LL BUS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + * @{ + */ + +/** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + * @{ + */ +#define LL_AHB1_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHB1ENR_DMA1EN +#define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHB1ENR_DMA2EN +#if defined(DMAMUX1) +#define LL_AHB1_GRP1_PERIPH_DMAMUX1 RCC_AHB1ENR_DMAMUX1EN +#endif /* DMAMUX1 */ +#define LL_AHB1_GRP1_PERIPH_FLASH RCC_AHB1ENR_FLASHEN +#define LL_AHB1_GRP1_PERIPH_CRC RCC_AHB1ENR_CRCEN +#define LL_AHB1_GRP1_PERIPH_TSC RCC_AHB1ENR_TSCEN +#if defined(DMA2D) +#define LL_AHB1_GRP1_PERIPH_DMA2D RCC_AHB1ENR_DMA2DEN +#endif /* DMA2D */ +#if defined(GFXMMU) +#define LL_AHB1_GRP1_PERIPH_GFXMMU RCC_AHB1ENR_GFXMMUEN +#endif /* GFXMMU */ +#define LL_AHB1_GRP1_PERIPH_SRAM1 RCC_AHB1SMENR_SRAM1SMEN +/** + * @} + */ + +/** @defgroup BUS_LL_EC_AHB2_GRP1_PERIPH AHB2 GRP1 PERIPH + * @{ + */ +#define LL_AHB2_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_AHB2_GRP1_PERIPH_GPIOA RCC_AHB2ENR_GPIOAEN +#define LL_AHB2_GRP1_PERIPH_GPIOB RCC_AHB2ENR_GPIOBEN +#define LL_AHB2_GRP1_PERIPH_GPIOC RCC_AHB2ENR_GPIOCEN +#if defined(GPIOD) +#define LL_AHB2_GRP1_PERIPH_GPIOD RCC_AHB2ENR_GPIODEN +#endif /*GPIOD*/ +#if defined(GPIOE) +#define LL_AHB2_GRP1_PERIPH_GPIOE RCC_AHB2ENR_GPIOEEN +#endif /*GPIOE*/ +#if defined(GPIOF) +#define LL_AHB2_GRP1_PERIPH_GPIOF RCC_AHB2ENR_GPIOFEN +#endif /* GPIOF */ +#if defined(GPIOG) +#define LL_AHB2_GRP1_PERIPH_GPIOG RCC_AHB2ENR_GPIOGEN +#endif /* GPIOG */ +#define LL_AHB2_GRP1_PERIPH_GPIOH RCC_AHB2ENR_GPIOHEN +#if defined(GPIOI) +#define LL_AHB2_GRP1_PERIPH_GPIOI RCC_AHB2ENR_GPIOIEN +#endif /* GPIOI */ +#if defined(USB_OTG_FS) +#define LL_AHB2_GRP1_PERIPH_OTGFS RCC_AHB2ENR_OTGFSEN +#endif /* USB_OTG_FS */ +#define LL_AHB2_GRP1_PERIPH_ADC RCC_AHB2ENR_ADCEN +#if defined(DCMI) +#define LL_AHB2_GRP1_PERIPH_DCMI RCC_AHB2ENR_DCMIEN +#endif /* DCMI */ +#if defined(AES) +#define LL_AHB2_GRP1_PERIPH_AES RCC_AHB2ENR_AESEN +#endif /* AES */ +#if defined(HASH) +#define LL_AHB2_GRP1_PERIPH_HASH RCC_AHB2ENR_HASHEN +#endif /* HASH */ +#define LL_AHB2_GRP1_PERIPH_RNG RCC_AHB2ENR_RNGEN +#if defined(OCTOSPIM) +#define LL_AHB2_GRP1_PERIPH_OSPIM RCC_AHB2ENR_OSPIMEN +#endif /* OCTOSPIM */ +#if defined(PKA) +#define LL_AHB2_GRP1_PERIPH_PKA RCC_AHB2ENR_PKAEN +#endif /* PKA */ +#if defined(SDMMC1) && defined(RCC_AHB2ENR_SDMMC1EN) +#define LL_AHB2_GRP1_PERIPH_SDMMC1 RCC_AHB2ENR_SDMMC1EN +#endif /* SDMMC1 && RCC_AHB2ENR_SDMMC1EN */ +#define LL_AHB2_GRP1_PERIPH_SRAM2 RCC_AHB2SMENR_SRAM2SMEN +#if defined(SRAM3_BASE) +#define LL_AHB2_GRP1_PERIPH_SRAM3 RCC_AHB2SMENR_SRAM3SMEN +#endif /* SRAM3_BASE */ +/** + * @} + */ + +/** @defgroup BUS_LL_EC_AHB3_GRP1_PERIPH AHB3 GRP1 PERIPH + * @{ + */ +#define LL_AHB3_GRP1_PERIPH_ALL 0xFFFFFFFFU +#if defined(FMC_Bank1_R) +#define LL_AHB3_GRP1_PERIPH_FMC RCC_AHB3ENR_FMCEN +#endif /* FMC_Bank1_R */ +#if defined(QUADSPI) +#define LL_AHB3_GRP1_PERIPH_QSPI RCC_AHB3ENR_QSPIEN +#endif /* QUADSPI */ +#if defined(OCTOSPI1) +#define LL_AHB3_GRP1_PERIPH_OSPI1 RCC_AHB3ENR_OSPI1EN +#endif /* OCTOSPI1 */ +#if defined(OCTOSPI2) +#define LL_AHB3_GRP1_PERIPH_OSPI2 RCC_AHB3ENR_OSPI2EN +#endif /* OCTOSPI2 */ +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + * @{ + */ +#define LL_APB1_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR1_TIM2EN +#if defined(TIM3) +#define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR1_TIM3EN +#endif /* TIM3 */ +#if defined(TIM4) +#define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR1_TIM4EN +#endif /* TIM4 */ +#if defined(TIM5) +#define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR1_TIM5EN +#endif /* TIM5 */ +#define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR1_TIM6EN +#define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR1_TIM7EN +#if defined(LCD) +#define LL_APB1_GRP1_PERIPH_LCD RCC_APB1ENR1_LCDEN +#endif /* LCD */ +#if defined(RCC_APB1ENR1_RTCAPBEN) +#define LL_APB1_GRP1_PERIPH_RTCAPB RCC_APB1ENR1_RTCAPBEN +#endif /* RCC_APB1ENR1_RTCAPBEN */ +#define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR1_WWDGEN +#if defined(SPI2) +#define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR1_SPI2EN +#endif /* SPI2 */ +#define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR1_SPI3EN +#define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR1_USART2EN +#if defined(USART3) +#define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR1_USART3EN +#endif /* USART3 */ +#if defined(UART4) +#define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR1_UART4EN +#endif /* UART4 */ +#if defined(UART5) +#define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR1_UART5EN +#endif /* UART5 */ +#define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR1_I2C1EN +#if defined(I2C2) +#define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR1_I2C2EN +#endif /* I2C2 */ +#define LL_APB1_GRP1_PERIPH_I2C3 RCC_APB1ENR1_I2C3EN +#if defined(CRS) +#define LL_APB1_GRP1_PERIPH_CRS RCC_APB1ENR1_CRSEN +#endif /* CRS */ +#define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR1_CAN1EN +#if defined(CAN2) +#define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR1_CAN2EN +#endif /* CAN2 */ +#if defined(USB) +#define LL_APB1_GRP1_PERIPH_USB RCC_APB1ENR1_USBFSEN +#endif /* USB */ +#define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR1_PWREN +#define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR1_DAC1EN +#define LL_APB1_GRP1_PERIPH_OPAMP RCC_APB1ENR1_OPAMPEN +#define LL_APB1_GRP1_PERIPH_LPTIM1 RCC_APB1ENR1_LPTIM1EN +/** + * @} + */ + + +/** @defgroup BUS_LL_EC_APB1_GRP2_PERIPH APB1 GRP2 PERIPH + * @{ + */ +#define LL_APB1_GRP2_PERIPH_ALL 0xFFFFFFFFU +#define LL_APB1_GRP2_PERIPH_LPUART1 RCC_APB1ENR2_LPUART1EN +#if defined(I2C4) +#define LL_APB1_GRP2_PERIPH_I2C4 RCC_APB1ENR2_I2C4EN +#endif /* I2C4 */ +#if defined(SWPMI1) +#define LL_APB1_GRP2_PERIPH_SWPMI1 RCC_APB1ENR2_SWPMI1EN +#endif /* SWPMI1 */ +#define LL_APB1_GRP2_PERIPH_LPTIM2 RCC_APB1ENR2_LPTIM2EN +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + * @{ + */ +#define LL_APB2_GRP1_PERIPH_ALL 0xFFFFFFFFU +#define LL_APB2_GRP1_PERIPH_SYSCFG RCC_APB2ENR_SYSCFGEN +#define LL_APB2_GRP1_PERIPH_FW RCC_APB2ENR_FWEN +#if defined(SDMMC1) && defined(RCC_APB2ENR_SDMMC1EN) +#define LL_APB2_GRP1_PERIPH_SDMMC1 RCC_APB2ENR_SDMMC1EN +#endif /* SDMMC1 && RCC_APB2ENR_SDMMC1EN */ +#define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN +#define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN +#if defined(TIM8) +#define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN +#endif /* TIM8 */ +#define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN +#define LL_APB2_GRP1_PERIPH_TIM15 RCC_APB2ENR_TIM15EN +#define LL_APB2_GRP1_PERIPH_TIM16 RCC_APB2ENR_TIM16EN +#if defined(TIM17) +#define LL_APB2_GRP1_PERIPH_TIM17 RCC_APB2ENR_TIM17EN +#endif /* TIM17 */ +#define LL_APB2_GRP1_PERIPH_SAI1 RCC_APB2ENR_SAI1EN +#if defined(SAI2) +#define LL_APB2_GRP1_PERIPH_SAI2 RCC_APB2ENR_SAI2EN +#endif /* SAI2 */ +#if defined(DFSDM1_Channel0) +#define LL_APB2_GRP1_PERIPH_DFSDM1 RCC_APB2ENR_DFSDM1EN +#endif /* DFSDM1_Channel0 */ +#if defined(LTDC) +#define LL_APB2_GRP1_PERIPH_LTDC RCC_APB2ENR_LTDCEN +#endif /* LTDC */ +#if defined(DSI) +#define LL_APB2_GRP1_PERIPH_DSI RCC_APB2ENR_DSIEN +#endif /* DSI */ +/** + * @} + */ + +/** Legacy definitions for compatibility purpose +@cond 0 +*/ +#if defined(DFSDM1_Channel0) +#define LL_APB2_GRP1_PERIPH_DFSDM LL_APB2_GRP1_PERIPH_DFSDM1 +#endif /* DFSDM1_Channel0 */ +/** +@endcond + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + * @{ + */ + +/** @defgroup BUS_LL_EF_AHB1 AHB1 + * @{ + */ + +/** + * @brief Enable AHB1 peripherals clock. + * @rmtoll AHB1ENR DMA1EN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR DMA2EN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR DMAMUX1EN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR FLASHEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR CRCEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR TSCEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR DMA2DEN LL_AHB1_GRP1_EnableClock\n + * AHB1ENR GFXMMUEN LL_AHB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_TSC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB1ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB1ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if AHB1 peripheral clock is enabled or not + * @rmtoll AHB1ENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR DMAMUX1EN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR FLASHEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR TSCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR DMA2DEN LL_AHB1_GRP1_IsEnabledClock\n + * AHB1ENR GFXMMUEN LL_AHB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_TSC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*) + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->AHB1ENR, Periphs) == Periphs) ? 1UL : 0UL); +} + +/** + * @brief Disable AHB1 peripherals clock. + * @rmtoll AHB1ENR DMA1EN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR DMA2EN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR DMAMUX1EN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR FLASHEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR CRCEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR TSCEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR DMA2DEN LL_AHB1_GRP1_DisableClock\n + * AHB1ENR GFXMMUEN LL_AHB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_TSC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB1ENR, Periphs); +} + +/** + * @brief Force AHB1 peripherals reset. + * @rmtoll AHB1RSTR DMA1RST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR DMA2RST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR DMAMUX1RST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR FLASHRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR CRCRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR TSCRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ForceReset\n + * AHB1RSTR GFXMMURST LL_AHB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_TSC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->AHB1RSTR, Periphs); +} + +/** + * @brief Release AHB1 peripherals reset. + * @rmtoll AHB1RSTR DMA1RST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR DMA2RST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR DMAMUX1RST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR FLASHRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR CRCRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR TSCRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR DMA2DRST LL_AHB1_GRP1_ReleaseReset\n + * AHB1RSTR GFXMMURST LL_AHB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_TSC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB1RSTR, Periphs); +} + +/** + * @brief Enable AHB1 peripheral clocks in Sleep and Stop modes + * @rmtoll AHB1SMENR DMA1SMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHB1SMENR DMA2SMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHB1SMENR DMAMUX1SMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHB1SMENR FLASHSMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHB1SMENR SRAM1SMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHB1SMENR CRCSMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHB1SMENR TSCSMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHB1SMENR DMA2DSMEN LL_AHB1_GRP1_EnableClockStopSleep\n + * AHB1SMENR GFXMMUSMEN LL_AHB1_GRP1_EnableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_TSC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_EnableClockStopSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB1SMENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB1SMENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable AHB1 peripheral clocks in Sleep and Stop modes + * @rmtoll AHB1SMENR DMA1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHB1SMENR DMA2SMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHB1SMENR DMAMUX1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHB1SMENR FLASHSMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHB1SMENR SRAM1SMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHB1SMENR CRCSMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHB1SMENR TSCSMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHB1SMENR DMA2DSMEN LL_AHB1_GRP1_DisableClockStopSleep\n + * AHB1SMENR GFXMMUSMEN LL_AHB1_GRP1_DisableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMAMUX1 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM1 + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_TSC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2D (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_GFXMMU (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_DisableClockStopSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB1SMENR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_AHB2 AHB2 + * @{ + */ + +/** + * @brief Enable AHB2 peripherals clock. + * @rmtoll AHB2ENR GPIOAEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR GPIOBEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR GPIOCEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR GPIODEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR GPIOEEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR GPIOFEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR GPIOGEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR GPIOHEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR GPIOIEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR OTGFSEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR ADCEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR DCMIEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR AESEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR HASHEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR RNGEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR OSPIMEN LL_AHB2_GRP1_EnableClock\n + * AHB2ENR SDMMC1EN LL_AHB2_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_ADC + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB2ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB2ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if AHB2 peripheral clock is enabled or not + * @rmtoll AHB2ENR GPIOAEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR GPIOBEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR GPIOCEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR GPIODEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR GPIOEEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR GPIOFEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR GPIOGEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR GPIOHEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR GPIOIEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR OTGFSEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR ADCEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR DCMIEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR AESEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR HASHEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR RNGEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR OSPIMEN LL_AHB2_GRP1_IsEnabledClock\n + * AHB2ENR SDMMC1EN LL_AHB2_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_ADC + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*) + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_AHB2_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->AHB2ENR, Periphs) == Periphs) ? 1UL : 0UL); +} + +/** + * @brief Disable AHB2 peripherals clock. + * @rmtoll AHB2ENR GPIOAEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR GPIOBEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR GPIOCEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR GPIODEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR GPIOEEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR GPIOFEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR GPIOGEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR GPIOHEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR GPIOIEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR OTGFSEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR ADCEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR DCMIEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR AESEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR HASHEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR RNGEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR OSPIMEN LL_AHB2_GRP1_DisableClock\n + * AHB2ENR SDMMC1EN LL_AHB2_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_ADC + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB2ENR, Periphs); +} + +/** + * @brief Force AHB2 peripherals reset. + * @rmtoll AHB2RSTR GPIOARST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR GPIOBRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR GPIOCRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR GPIODRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR GPIOERST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR GPIOFRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR GPIOGRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR GPIOHRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR GPIOIRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR ADCRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR DCMIRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR AESRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR HASHRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR RNGRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR OSPIMRST LL_AHB2_GRP1_ForceReset\n + * AHB2RSTR SDMMC1RST LL_AHB2_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_ADC + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->AHB2RSTR, Periphs); +} + +/** + * @brief Release AHB2 peripherals reset. + * @rmtoll AHB2RSTR GPIOARST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR GPIOBRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR GPIOCRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR GPIODRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR GPIOERST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR GPIOFRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR GPIOGRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR GPIOHRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR GPIOIRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR OTGFSRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR ADCRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR DCMIRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR AESRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR HASHRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR RNGRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR OSPIMRST LL_AHB2_GRP1_ReleaseReset\n + * AHB2RSTR SDMMC1RST LL_AHB2_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_ADC + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB2RSTR, Periphs); +} + +/** + * @brief Enable AHB2 peripheral clocks in Sleep and Stop modes + * @rmtoll AHB2SMENR GPIOASMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR GPIOBSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR GPIOCSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR GPIODSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR GPIOESMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR GPIOFSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR GPIOGSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR GPIOHSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR GPIOISMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR SRAM2SMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR SRAM3SMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR OTGFSSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR ADCSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR DCMISMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR AESSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR HASHSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR RNGSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR OSPIMSMEN LL_AHB2_GRP1_EnableClockStopSleep\n + * AHB2SMENR SDMMC1SMEN LL_AHB2_GRP1_EnableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2 + * @arg @ref LL_AHB2_GRP1_PERIPH_SRAM3 (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_ADC + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_EnableClockStopSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB2SMENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB2SMENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable AHB2 peripheral clocks in Sleep and Stop modes + * @rmtoll AHB2SMENR GPIOASMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR GPIOBSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR GPIOCSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR GPIODSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR GPIOESMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR GPIOFSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR GPIOGSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR GPIOHSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR GPIOISMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR SRAM2SMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR SRAM3SMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR OTGFSSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR ADCSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR DCMISMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR AESSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR HASHSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR RNGSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR OSPIMSMEN LL_AHB2_GRP1_DisableClockStopSleep\n + * AHB2SMENR SDMMC1SMEN LL_AHB2_GRP1_DisableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOD (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOH + * @arg @ref LL_AHB2_GRP1_PERIPH_GPIOI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_SRAM2 + * @arg @ref LL_AHB2_GRP1_PERIPH_SRAM3 (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_ADC + * @arg @ref LL_AHB2_GRP1_PERIPH_DCMI (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_AES (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_HASH (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_RNG + * @arg @ref LL_AHB2_GRP1_PERIPH_OSPIM (*) + * @arg @ref LL_AHB2_GRP1_PERIPH_SDMMC1 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB2_GRP1_DisableClockStopSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB2SMENR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_AHB3 AHB3 + * @{ + */ + +/** + * @brief Enable AHB3 peripherals clock. + * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_EnableClock\n + * AHB3ENR QSPIEN LL_AHB3_GRP1_EnableClock\n + * AHB3ENR OSPI1EN LL_AHB3_GRP1_EnableClock\n + * AHB3ENR OSPI2EN LL_AHB3_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB3ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB3ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if AHB3 peripheral clock is enabled or not + * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_IsEnabledClock\n + * AHB3ENR QSPIEN LL_AHB3_GRP1_IsEnabledClock\n + * AHB3ENR OSPI1EN LL_AHB3_GRP1_IsEnabledClock\n + * AHB3ENR OSPI2EN LL_AHB3_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*) + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_AHB3_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->AHB3ENR, Periphs) == Periphs) ? 1UL : 0UL); +} + +/** + * @brief Disable AHB3 peripherals clock. + * @rmtoll AHB3ENR FMCEN LL_AHB3_GRP1_DisableClock\n + * AHB3ENR QSPIEN LL_AHB3_GRP1_DisableClock\n + * AHB3ENR OSPI1EN LL_AHB3_GRP1_DisableClock\n + * AHB3ENR OSPI2EN LL_AHB3_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB3ENR, Periphs); +} + +/** + * @brief Force AHB3 peripherals reset. + * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ForceReset\n + * AHB3RSTR QSPIRST LL_AHB3_GRP1_ForceReset\n + * AHB3RSTR OSPI1RST LL_AHB3_GRP1_ForceReset\n + * AHB3RSTR OSPI2RST LL_AHB3_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_ALL + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->AHB3RSTR, Periphs); +} + +/** + * @brief Release AHB3 peripherals reset. + * @rmtoll AHB3RSTR FMCRST LL_AHB3_GRP1_ReleaseReset\n + * AHB3RSTR QSPIRST LL_AHB3_GRP1_ReleaseReset\n + * AHB3RSTR OSPI1RST LL_AHB3_GRP1_ReleaseReset\n + * AHB3RSTR OSPI2RST LL_AHB3_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB2_GRP1_PERIPH_ALL + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB3RSTR, Periphs); +} + +/** + * @brief Enable AHB3 peripheral clocks in Sleep and Stop modes + * @rmtoll AHB3SMENR FMCSMEN LL_AHB3_GRP1_EnableClockStopSleep\n + * AHB3SMENR QSPISMEN LL_AHB3_GRP1_EnableClockStopSleep\n + * AHB3SMENR OSPI1SMEN LL_AHB3_GRP1_EnableClockStopSleep\n + * AHB3SMENR OSPI2SMEN LL_AHB3_GRP1_EnableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_EnableClockStopSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHB3SMENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHB3SMENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable AHB3 peripheral clocks in Sleep and Stop modes + * @rmtoll AHB3SMENR FMCSMEN LL_AHB3_GRP1_DisableClockStopSleep\n + * AHB3SMENR QSPISMEN LL_AHB3_GRP1_DisableClockStopSleep\n + * AHB3SMENR OSPI1SMEN LL_AHB3_GRP1_DisableClockStopSleep\n + * AHB3SMENR OSPI2SMEN LL_AHB3_GRP1_DisableClockStopSleep\n + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB3_GRP1_PERIPH_FMC (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_QSPI (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI1 (*) + * @arg @ref LL_AHB3_GRP1_PERIPH_OSPI2 (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB3_GRP1_DisableClockStopSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHB3SMENR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB1 APB1 + * @{ + */ + +/** + * @brief Enable APB1 peripherals clock. + * @rmtoll APB1ENR1 TIM2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 TIM3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 TIM4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 TIM5EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 TIM6EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 TIM7EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 LCDEN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 RTCAPBEN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 WWDGEN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 SPI2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 SPI3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 USART2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 USART3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 UART4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 UART5EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 I2C1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 I2C2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 I2C3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 CRSEN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 CAN1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 USBFSEN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 CAN2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 PWREN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 DAC1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 OPAMPEN LL_APB1_GRP1_EnableClock\n + * APB1ENR1 LPTIM1EN LL_APB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB1ENR1, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1ENR1, Periphs); + (void)tmpreg; +} + +/** + * @brief Enable APB1 peripherals clock. + * @rmtoll APB1ENR2 LPUART1EN LL_APB1_GRP2_EnableClock\n + * APB1ENR2 I2C4EN LL_APB1_GRP2_EnableClock\n + * APB1ENR2 SWPMI1EN LL_APB1_GRP2_EnableClock\n + * APB1ENR2 LPTIM2EN LL_APB1_GRP2_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1 + * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP2_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB1ENR2, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1ENR2, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB1 peripheral clock is enabled or not + * @rmtoll APB1ENR1 TIM2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 TIM3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 TIM4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 TIM5EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 TIM6EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 TIM7EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 LCDEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 RTCAPBEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 WWDGEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 SPI2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 SPI3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 USART2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 USART3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 UART4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 UART5EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 I2C1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 I2C2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 I2C3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 CRSEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 CAN1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 USBFSEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 CAN2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 PWREN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 DAC1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 OPAMPEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR1 LPTIM1EN LL_APB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->APB1ENR1, Periphs) == Periphs) ? 1UL : 0UL); +} + +/** + * @brief Check if APB1 peripheral clock is enabled or not + * @rmtoll APB1ENR2 LPUART1EN LL_APB1_GRP2_IsEnabledClock\n + * APB1ENR2 I2C4EN LL_APB1_GRP2_IsEnabledClock\n + * APB1ENR2 SWPMI1EN LL_APB1_GRP2_IsEnabledClock\n + * APB1ENR2 LPTIM2EN LL_APB1_GRP2_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1 + * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2 + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB1_GRP2_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->APB1ENR2, Periphs) == Periphs) ? 1UL : 0UL); +} + +/** + * @brief Disable APB1 peripherals clock. + * @rmtoll APB1ENR1 TIM2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 TIM3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 TIM4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 TIM5EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 TIM6EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 TIM7EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 LCDEN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 RTCAPBEN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 WWDGEN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 SPI2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 SPI3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 USART2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 USART3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 UART4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 UART5EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 I2C1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 I2C2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 I2C3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 CRSEN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 CAN1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 USBFSEN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 CAN2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 PWREN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 DAC1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 OPAMPEN LL_APB1_GRP1_DisableClock\n + * APB1ENR1 LPTIM1EN LL_APB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1ENR1, Periphs); +} + +/** + * @brief Disable APB1 peripherals clock. + * @rmtoll APB1ENR2 LPUART1EN LL_APB1_GRP2_DisableClock\n + * APB1ENR2 I2C4EN LL_APB1_GRP2_DisableClock\n + * APB1ENR2 SWPMI1EN LL_APB1_GRP2_DisableClock\n + * APB1ENR2 LPTIM2EN LL_APB1_GRP2_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1 + * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP2_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1ENR2, Periphs); +} + +/** + * @brief Force APB1 peripherals reset. + * @rmtoll APB1RSTR1 TIM2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 TIM3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 TIM4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 TIM5RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 TIM6RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 TIM7RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 LCDRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 SPI2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 SPI3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 USART2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 USART3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 UART4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 UART5RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 I2C1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 I2C2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 I2C3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 CRSRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 CAN1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 USBFSRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 CAN2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 PWRRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 DAC1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 OPAMPRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR1 LPTIM1RST LL_APB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_ALL + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB1RSTR1, Periphs); +} + +/** + * @brief Force APB1 peripherals reset. + * @rmtoll APB1RSTR2 LPUART1RST LL_APB1_GRP2_ForceReset\n + * APB1RSTR2 I2C4RST LL_APB1_GRP2_ForceReset\n + * APB1RSTR2 SWPMI1RST LL_APB1_GRP2_ForceReset\n + * APB1RSTR2 LPTIM2RST LL_APB1_GRP2_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP2_PERIPH_ALL + * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1 + * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP2_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB1RSTR2, Periphs); +} + +/** + * @brief Release APB1 peripherals reset. + * @rmtoll APB1RSTR1 TIM2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 TIM3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 TIM4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 TIM5RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 TIM6RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 TIM7RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 LCDRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 SPI2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 SPI3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 USART2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 USART3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 UART4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 UART5RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 I2C1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 I2C2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 I2C3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 CRSRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 CAN1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 USBFSRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 CAN2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 PWRRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 DAC1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 OPAMPRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR1 LPTIM1RST LL_APB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_ALL + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1RSTR1, Periphs); +} + +/** + * @brief Release APB1 peripherals reset. + * @rmtoll APB1RSTR2 LPUART1RST LL_APB1_GRP2_ReleaseReset\n + * APB1RSTR2 I2C4RST LL_APB1_GRP2_ReleaseReset\n + * APB1RSTR2 SWPMI1RST LL_APB1_GRP2_ReleaseReset\n + * APB1RSTR2 LPTIM2RST LL_APB1_GRP2_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP2_PERIPH_ALL + * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1 + * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP2_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1RSTR2, Periphs); +} + +/** + * @brief Enable APB1 peripheral clocks in Sleep and Stop modes + * @rmtoll APB1SMENR1 TIM2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 TIM3SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 TIM4SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 TIM5SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 TIM6SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 TIM7SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 LCDSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 RTCAPBSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 WWDGSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 SPI2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 SPI3SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 USART2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 USART3SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 UART4SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 UART5SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 I2C1SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 I2C2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 I2C3SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 CRSSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 CAN1SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 USBFSSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 CAN2SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 PWRSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 DAC1SMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 OPAMPSMEN LL_APB1_GRP1_EnableClockStopSleep\n + * APB1SMENR1 LPTIM1SMEN LL_APB1_GRP1_EnableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_EnableClockStopSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB1SMENR1, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1SMENR1, Periphs); + (void)tmpreg; +} + +/** + * @brief Enable APB1 peripheral clocks in Sleep and Stop modes + * @rmtoll APB1SMENR2 LPUART1SMEN LL_APB1_GRP2_EnableClockStopSleep\n + * APB1SMENR2 I2C4SMEN LL_APB1_GRP2_EnableClockStopSleep\n + * APB1SMENR2 SWPMI1SMEN LL_APB1_GRP2_EnableClockStopSleep\n + * APB1SMENR2 LPTIM2SMEN LL_APB1_GRP2_EnableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1 + * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP2_EnableClockStopSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB1SMENR2, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1SMENR2, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable APB1 peripheral clocks in Sleep and Stop modes + * @rmtoll APB1SMENR1 TIM2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 TIM3SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 TIM4SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 TIM5SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 TIM6SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 TIM7SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 LCDSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 RTCAPBSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 WWDGSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 SPI2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 SPI3SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 USART2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 USART3SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 UART4SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 UART5SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 I2C1SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 I2C2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 I2C3SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 CRSSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 CAN1SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 USBFSSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 CAN2SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 PWRSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 DAC1SMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 OPAMPSMEN LL_APB1_GRP1_DisableClockStopSleep\n + * APB1SMENR1 LPTIM1SMEN LL_APB1_GRP1_DisableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 + * @arg @ref LL_APB1_GRP1_PERIPH_LCD (*) + * @arg @ref LL_APB1_GRP1_PERIPH_RTCAPB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C3 + * @arg @ref LL_APB1_GRP1_PERIPH_CRS (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 + * @arg @ref LL_APB1_GRP1_PERIPH_OPAMP + * @arg @ref LL_APB1_GRP1_PERIPH_LPTIM1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_DisableClockStopSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1SMENR1, Periphs); +} + +/** + * @brief Disable APB1 peripheral clocks in Sleep and Stop modes + * @rmtoll APB1SMENR2 LPUART1SMEN LL_APB1_GRP2_DisableClockStopSleep\n + * APB1SMENR2 I2C4SMEN LL_APB1_GRP2_DisableClockStopSleep\n + * APB1SMENR2 SWPMI1SMEN LL_APB1_GRP2_DisableClockStopSleep\n + * APB1SMENR2 LPTIM2SMEN LL_APB1_GRP2_DisableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP2_PERIPH_LPUART1 + * @arg @ref LL_APB1_GRP2_PERIPH_I2C4 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_SWPMI1 (*) + * @arg @ref LL_APB1_GRP2_PERIPH_LPTIM2 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP2_DisableClockStopSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1SMENR2, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB2 APB2 + * @{ + */ + +/** + * @brief Enable APB2 peripherals clock. + * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_EnableClock\n + * APB2ENR FWEN LL_APB2_GRP1_EnableClock\n + * APB2ENR SDMMC1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_EnableClock\n + * APB2ENR USART1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM15EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM16EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM17EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SAI1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR SAI2EN LL_APB2_GRP1_EnableClock\n + * APB2ENR DFSDM1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR LTDCEN LL_APB2_GRP1_EnableClock\n + * APB2ENR DSIEN LL_APB2_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_FW + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB2ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB2 peripheral clock is enabled or not + * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR FWEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SDMMC1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM15EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM16EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM17EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SAI1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SAI2EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR DFSDM1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR LTDCEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR DSIEN LL_APB2_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_FW + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return ((READ_BIT(RCC->APB2ENR, Periphs) == Periphs) ? 1UL : 0UL); +} + +/** + * @brief Disable APB2 peripherals clock. + * @rmtoll APB2ENR SYSCFGEN LL_APB2_GRP1_DisableClock\n + * APB2ENR SDMMC1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_DisableClock\n + * APB2ENR USART1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM15EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM16EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM17EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SAI1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR SAI2EN LL_APB2_GRP1_DisableClock\n + * APB2ENR DFSDM1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR LTDCEN LL_APB2_GRP1_DisableClock\n + * APB2ENR DSIEN LL_APB2_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2ENR, Periphs); +} + +/** + * @brief Force APB2 peripherals reset. + * @rmtoll APB2RSTR SYSCFGRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SDMMC1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM8RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM15RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM16RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM17RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SAI1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SAI2RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR DFSDM1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR LTDCRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR DSIRST LL_APB2_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB2RSTR, Periphs); +} + +/** + * @brief Release APB2 peripherals reset. + * @rmtoll APB2RSTR SYSCFGRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SDMMC1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SPI1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM8RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR USART1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM15RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM16RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM17RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SAI1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SAI2RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR DFSDM1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR LTDCRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR DSIRST LL_APB2_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2RSTR, Periphs); +} + +/** + * @brief Enable APB2 peripheral clocks in Sleep and Stop modes + * @rmtoll APB2SMENR SYSCFGSMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR SDMMC1SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR TIM1SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR SPI1SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR TIM8SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR USART1SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR TIM15SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR TIM16SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR TIM17SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR SAI1SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR SAI2SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR DFSDM1SMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR LTDCSMEN LL_APB2_GRP1_EnableClockStopSleep\n + * APB2SMENR DSISMEN LL_APB2_GRP1_EnableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_EnableClockStopSleep(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB2SMENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2SMENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Disable APB2 peripheral clocks in Sleep and Stop modes + * @rmtoll APB2SMENR SYSCFGSMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR SDMMC1SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR TIM1SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR SPI1SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR TIM8SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR USART1SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR TIM15SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR TIM16SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR TIM17SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR SAI1SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR SAI2SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR DFSDM1SMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR LTDCSMEN LL_APB2_GRP1_DisableClockStopSleep\n + * APB2SMENR DSISMEN LL_APB2_GRP1_DisableClockStopSleep + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_SYSCFG + * @arg @ref LL_APB2_GRP1_PERIPH_SDMMC1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SAI1 + * @arg @ref LL_APB2_GRP1_PERIPH_SAI2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DFSDM1 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_LTDC (*) + * @arg @ref LL_APB2_GRP1_PERIPH_DSI (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_DisableClockStopSleep(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2SMENR, Periphs); +} + +/** + * @} + */ + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RCC) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_BUS_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_cortex.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_cortex.h new file mode 100644 index 0000000..2cb0a88 --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_cortex.h @@ -0,0 +1,639 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_cortex.h + * @author MCD Application Team + * @brief Header file of CORTEX LL module. + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL CORTEX driver contains a set of generic APIs that can be + used by user: + (+) SYSTICK configuration used by @ref LL_mDelay and @ref LL_Init1msTick + functions + (+) Low power mode configuration (SCB register of Cortex-MCU) + (+) MPU API to configure and enable regions + (+) API to access to MCU info (CPUID register) + (+) API to enable fault handler (SHCSR accesses) + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_CORTEX_H +#define STM32L4xx_LL_CORTEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +/** @defgroup CORTEX_LL CORTEX + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Constants CORTEX Exported Constants + * @{ + */ + +/** @defgroup CORTEX_LL_EC_CLKSOURCE_HCLK SYSTICK Clock Source + * @{ + */ +#define LL_SYSTICK_CLKSOURCE_HCLK_DIV8 0x00000000U /*!< AHB clock divided by 8 selected as SysTick clock source.*/ +#define LL_SYSTICK_CLKSOURCE_HCLK SysTick_CTRL_CLKSOURCE_Msk /*!< AHB clock selected as SysTick clock source. */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_FAULT Handler Fault type + * @{ + */ +#define LL_HANDLER_FAULT_USG SCB_SHCSR_USGFAULTENA_Msk /*!< Usage fault */ +#define LL_HANDLER_FAULT_BUS SCB_SHCSR_BUSFAULTENA_Msk /*!< Bus fault */ +#define LL_HANDLER_FAULT_MEM SCB_SHCSR_MEMFAULTENA_Msk /*!< Memory management fault */ +/** + * @} + */ + +#if __MPU_PRESENT + +/** @defgroup CORTEX_LL_EC_CTRL_HFNMI_PRIVDEF MPU Control + * @{ + */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF_NONE 0x00000000U /*!< Disable NMI and privileged SW access */ +#define LL_MPU_CTRL_HARDFAULT_NMI MPU_CTRL_HFNMIENA_Msk /*!< Enables the operation of MPU during hard fault, NMI, and FAULTMASK handlers */ +#define LL_MPU_CTRL_PRIVILEGED_DEFAULT MPU_CTRL_PRIVDEFENA_Msk /*!< Enable privileged software access to default memory map */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF (MPU_CTRL_HFNMIENA_Msk | MPU_CTRL_PRIVDEFENA_Msk) /*!< Enable NMI and privileged SW access */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION MPU Region Number + * @{ + */ +#define LL_MPU_REGION_NUMBER0 0x00U /*!< REGION Number 0 */ +#define LL_MPU_REGION_NUMBER1 0x01U /*!< REGION Number 1 */ +#define LL_MPU_REGION_NUMBER2 0x02U /*!< REGION Number 2 */ +#define LL_MPU_REGION_NUMBER3 0x03U /*!< REGION Number 3 */ +#define LL_MPU_REGION_NUMBER4 0x04U /*!< REGION Number 4 */ +#define LL_MPU_REGION_NUMBER5 0x05U /*!< REGION Number 5 */ +#define LL_MPU_REGION_NUMBER6 0x06U /*!< REGION Number 6 */ +#define LL_MPU_REGION_NUMBER7 0x07U /*!< REGION Number 7 */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_SIZE MPU Region Size + * @{ + */ +#define LL_MPU_REGION_SIZE_32B (0x04U << MPU_RASR_SIZE_Pos) /*!< 32B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64B (0x05U << MPU_RASR_SIZE_Pos) /*!< 64B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128B (0x06U << MPU_RASR_SIZE_Pos) /*!< 128B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256B (0x07U << MPU_RASR_SIZE_Pos) /*!< 256B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512B (0x08U << MPU_RASR_SIZE_Pos) /*!< 512B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1KB (0x09U << MPU_RASR_SIZE_Pos) /*!< 1KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2KB (0x0AU << MPU_RASR_SIZE_Pos) /*!< 2KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4KB (0x0BU << MPU_RASR_SIZE_Pos) /*!< 4KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8KB (0x0CU << MPU_RASR_SIZE_Pos) /*!< 8KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16KB (0x0DU << MPU_RASR_SIZE_Pos) /*!< 16KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32KB (0x0EU << MPU_RASR_SIZE_Pos) /*!< 32KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64KB (0x0FU << MPU_RASR_SIZE_Pos) /*!< 64KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128KB (0x10U << MPU_RASR_SIZE_Pos) /*!< 128KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256KB (0x11U << MPU_RASR_SIZE_Pos) /*!< 256KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512KB (0x12U << MPU_RASR_SIZE_Pos) /*!< 512KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1MB (0x13U << MPU_RASR_SIZE_Pos) /*!< 1MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2MB (0x14U << MPU_RASR_SIZE_Pos) /*!< 2MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4MB (0x15U << MPU_RASR_SIZE_Pos) /*!< 4MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8MB (0x16U << MPU_RASR_SIZE_Pos) /*!< 8MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16MB (0x17U << MPU_RASR_SIZE_Pos) /*!< 16MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32MB (0x18U << MPU_RASR_SIZE_Pos) /*!< 32MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64MB (0x19U << MPU_RASR_SIZE_Pos) /*!< 64MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128MB (0x1AU << MPU_RASR_SIZE_Pos) /*!< 128MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256MB (0x1BU << MPU_RASR_SIZE_Pos) /*!< 256MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512MB (0x1CU << MPU_RASR_SIZE_Pos) /*!< 512MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1GB (0x1DU << MPU_RASR_SIZE_Pos) /*!< 1GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2GB (0x1EU << MPU_RASR_SIZE_Pos) /*!< 2GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4GB (0x1FU << MPU_RASR_SIZE_Pos) /*!< 4GB Size of the MPU protection region */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_PRIVILEDGES MPU Region Privileges + * @{ + */ +#define LL_MPU_REGION_NO_ACCESS (0x00U << MPU_RASR_AP_Pos) /*!< No access*/ +#define LL_MPU_REGION_PRIV_RW (0x01U << MPU_RASR_AP_Pos) /*!< RW privileged (privileged access only)*/ +#define LL_MPU_REGION_PRIV_RW_URO (0x02U << MPU_RASR_AP_Pos) /*!< RW privileged - RO user (Write in a user program generates a fault) */ +#define LL_MPU_REGION_FULL_ACCESS (0x03U << MPU_RASR_AP_Pos) /*!< RW privileged & user (Full access) */ +#define LL_MPU_REGION_PRIV_RO (0x05U << MPU_RASR_AP_Pos) /*!< RO privileged (privileged read only)*/ +#define LL_MPU_REGION_PRIV_RO_URO (0x06U << MPU_RASR_AP_Pos) /*!< RO privileged & user (read only) */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_TEX MPU TEX Level + * @{ + */ +#define LL_MPU_TEX_LEVEL0 (0x00U << MPU_RASR_TEX_Pos) /*!< b000 for TEX bits */ +#define LL_MPU_TEX_LEVEL1 (0x01U << MPU_RASR_TEX_Pos) /*!< b001 for TEX bits */ +#define LL_MPU_TEX_LEVEL2 (0x02U << MPU_RASR_TEX_Pos) /*!< b010 for TEX bits */ +#define LL_MPU_TEX_LEVEL4 (0x04U << MPU_RASR_TEX_Pos) /*!< b100 for TEX bits */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_INSTRUCTION_ACCESS MPU Instruction Access + * @{ + */ +#define LL_MPU_INSTRUCTION_ACCESS_ENABLE 0x00U /*!< Instruction fetches enabled */ +#define LL_MPU_INSTRUCTION_ACCESS_DISABLE MPU_RASR_XN_Msk /*!< Instruction fetches disabled*/ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_SHAREABLE_ACCESS MPU Shareable Access + * @{ + */ +#define LL_MPU_ACCESS_SHAREABLE MPU_RASR_S_Msk /*!< Shareable memory attribute */ +#define LL_MPU_ACCESS_NOT_SHAREABLE 0x00U /*!< Not Shareable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_CACHEABLE_ACCESS MPU Cacheable Access + * @{ + */ +#define LL_MPU_ACCESS_CACHEABLE MPU_RASR_C_Msk /*!< Cacheable memory attribute */ +#define LL_MPU_ACCESS_NOT_CACHEABLE 0x00U /*!< Not Cacheable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_BUFFERABLE_ACCESS MPU Bufferable Access + * @{ + */ +#define LL_MPU_ACCESS_BUFFERABLE MPU_RASR_B_Msk /*!< Bufferable memory attribute */ +#define LL_MPU_ACCESS_NOT_BUFFERABLE 0x00U /*!< Not Bufferable memory attribute */ +/** + * @} + */ +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Functions CORTEX Exported Functions + * @{ + */ + +/** @defgroup CORTEX_LL_EF_SYSTICK SYSTICK + * @{ + */ + +/** + * @brief This function checks if the Systick counter flag is active or not. + * @note It can be used in timeout function on application side. + * @rmtoll STK_CTRL COUNTFLAG LL_SYSTICK_IsActiveCounterFlag + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsActiveCounterFlag(void) +{ + return ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == (SysTick_CTRL_COUNTFLAG_Msk)); +} + +/** + * @brief Configures the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_SetClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_SetClkSource(uint32_t Source) +{ + if (Source == LL_SYSTICK_CLKSOURCE_HCLK) + { + SET_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } + else + { + CLEAR_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } +} + +/** + * @brief Get the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_GetClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + */ +__STATIC_INLINE uint32_t LL_SYSTICK_GetClkSource(void) +{ + return READ_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); +} + +/** + * @brief Enable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_EnableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_EnableIT(void) +{ + SET_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Disable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_DisableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_DisableIT(void) +{ + CLEAR_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Checks if the SYSTICK interrupt is enabled or disabled. + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_IsEnabledIT + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsEnabledIT(void) +{ + return (READ_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk) == (SysTick_CTRL_TICKINT_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_LOW_POWER_MODE LOW POWER MODE + * @{ + */ + +/** + * @brief Processor uses sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleep(void) +{ + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Processor uses deep sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableDeepSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableDeepSleep(void) +{ + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Configures sleep-on-exit when returning from Handler mode to Thread mode. + * @note Setting this bit to 1 enables an interrupt-driven application to avoid returning to an + * empty main application. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_EnableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleepOnExit(void) +{ + /* Set SLEEPONEXIT bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Do not sleep when returning to Thread mode. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_DisableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableSleepOnExit(void) +{ + /* Clear SLEEPONEXIT bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Enabled events and all interrupts, including disabled interrupts, can wakeup the + * processor. + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_EnableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableEventOnPend(void) +{ + /* Set SEVEONPEND bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @brief Only enabled interrupts or events can wakeup the processor, disabled interrupts are + * excluded + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_DisableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableEventOnPend(void) +{ + /* Clear SEVEONPEND bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_HANDLER HANDLER + * @{ + */ + +/** + * @brief Enable a fault in System handler control register (SHCSR) + * @rmtoll SCB_SHCSR MEMFAULTENA LL_HANDLER_EnableFault + * @param Fault This parameter can be a combination of the following values: + * @arg @ref LL_HANDLER_FAULT_USG + * @arg @ref LL_HANDLER_FAULT_BUS + * @arg @ref LL_HANDLER_FAULT_MEM + * @retval None + */ +__STATIC_INLINE void LL_HANDLER_EnableFault(uint32_t Fault) +{ + /* Enable the system handler fault */ + SET_BIT(SCB->SHCSR, Fault); +} + +/** + * @brief Disable a fault in System handler control register (SHCSR) + * @rmtoll SCB_SHCSR MEMFAULTENA LL_HANDLER_DisableFault + * @param Fault This parameter can be a combination of the following values: + * @arg @ref LL_HANDLER_FAULT_USG + * @arg @ref LL_HANDLER_FAULT_BUS + * @arg @ref LL_HANDLER_FAULT_MEM + * @retval None + */ +__STATIC_INLINE void LL_HANDLER_DisableFault(uint32_t Fault) +{ + /* Disable the system handler fault */ + CLEAR_BIT(SCB->SHCSR, Fault); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_MCU_INFO MCU INFO + * @{ + */ + +/** + * @brief Get Implementer code + * @rmtoll SCB_CPUID IMPLEMENTER LL_CPUID_GetImplementer + * @retval Value should be equal to 0x41 for ARM + */ +__STATIC_INLINE uint32_t LL_CPUID_GetImplementer(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_IMPLEMENTER_Msk) >> SCB_CPUID_IMPLEMENTER_Pos); +} + +/** + * @brief Get Variant number (The r value in the rnpn product revision identifier) + * @rmtoll SCB_CPUID VARIANT LL_CPUID_GetVariant + * @retval Value between 0 and 255 (0x0: revision 0) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetVariant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_VARIANT_Msk) >> SCB_CPUID_VARIANT_Pos); +} + +/** + * @brief Get Constant number + * @rmtoll SCB_CPUID ARCHITECTURE LL_CPUID_GetConstant + * @retval Value should be equal to 0xF for Cortex-M4 devices + */ +__STATIC_INLINE uint32_t LL_CPUID_GetConstant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_ARCHITECTURE_Msk) >> SCB_CPUID_ARCHITECTURE_Pos); +} + +/** + * @brief Get Part number + * @rmtoll SCB_CPUID PARTNO LL_CPUID_GetParNo + * @retval Value should be equal to 0xC24 for Cortex-M4 + */ +__STATIC_INLINE uint32_t LL_CPUID_GetParNo(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_PARTNO_Msk) >> SCB_CPUID_PARTNO_Pos); +} + +/** + * @brief Get Revision number (The p value in the rnpn product revision identifier, indicates patch release) + * @rmtoll SCB_CPUID REVISION LL_CPUID_GetRevision + * @retval Value between 0 and 255 (0x1: patch 1) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetRevision(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_REVISION_Msk) >> SCB_CPUID_REVISION_Pos); +} + +/** + * @} + */ + +#if __MPU_PRESENT +/** @defgroup CORTEX_LL_EF_MPU MPU + * @{ + */ + +/** + * @brief Enable MPU with input options + * @rmtoll MPU_CTRL ENABLE LL_MPU_Enable + * @param Options This parameter can be one of the following values: + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF_NONE + * @arg @ref LL_MPU_CTRL_HARDFAULT_NMI + * @arg @ref LL_MPU_CTRL_PRIVILEGED_DEFAULT + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF + * @retval None + */ +__STATIC_INLINE void LL_MPU_Enable(uint32_t Options) +{ + /* Enable the MPU*/ + WRITE_REG(MPU->CTRL, (MPU_CTRL_ENABLE_Msk | Options)); + /* Ensure MPU settings take effects */ + __DSB(); + /* Sequence instruction fetches using update settings */ + __ISB(); +} + +/** + * @brief Disable MPU + * @rmtoll MPU_CTRL ENABLE LL_MPU_Disable + * @retval None + */ +__STATIC_INLINE void LL_MPU_Disable(void) +{ + /* Make sure outstanding transfers are done */ + __DMB(); + /* Disable MPU*/ + WRITE_REG(MPU->CTRL, 0U); +} + +/** + * @brief Check if MPU is enabled or not + * @rmtoll MPU_CTRL ENABLE LL_MPU_IsEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_MPU_IsEnabled(void) +{ + return (READ_BIT(MPU->CTRL, MPU_CTRL_ENABLE_Msk) == (MPU_CTRL_ENABLE_Msk)); +} + +/** + * @brief Enable a MPU region + * @rmtoll MPU_RASR ENABLE LL_MPU_EnableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_EnableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Enable the MPU region */ + SET_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @brief Configure and enable a region + * @rmtoll MPU_RNR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR ADDR LL_MPU_ConfigRegion\n + * MPU_RASR XN LL_MPU_ConfigRegion\n + * MPU_RASR AP LL_MPU_ConfigRegion\n + * MPU_RASR S LL_MPU_ConfigRegion\n + * MPU_RASR C LL_MPU_ConfigRegion\n + * MPU_RASR B LL_MPU_ConfigRegion\n + * MPU_RASR SIZE LL_MPU_ConfigRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @param Address Value of region base address + * @param SubRegionDisable Sub-region disable value between Min_Data = 0x00 and Max_Data = 0xFF + * @param Attributes This parameter can be a combination of the following values: + * @arg @ref LL_MPU_REGION_SIZE_32B or @ref LL_MPU_REGION_SIZE_64B or @ref LL_MPU_REGION_SIZE_128B or @ref LL_MPU_REGION_SIZE_256B or @ref LL_MPU_REGION_SIZE_512B + * or @ref LL_MPU_REGION_SIZE_1KB or @ref LL_MPU_REGION_SIZE_2KB or @ref LL_MPU_REGION_SIZE_4KB or @ref LL_MPU_REGION_SIZE_8KB or @ref LL_MPU_REGION_SIZE_16KB + * or @ref LL_MPU_REGION_SIZE_32KB or @ref LL_MPU_REGION_SIZE_64KB or @ref LL_MPU_REGION_SIZE_128KB or @ref LL_MPU_REGION_SIZE_256KB or @ref LL_MPU_REGION_SIZE_512KB + * or @ref LL_MPU_REGION_SIZE_1MB or @ref LL_MPU_REGION_SIZE_2MB or @ref LL_MPU_REGION_SIZE_4MB or @ref LL_MPU_REGION_SIZE_8MB or @ref LL_MPU_REGION_SIZE_16MB + * or @ref LL_MPU_REGION_SIZE_32MB or @ref LL_MPU_REGION_SIZE_64MB or @ref LL_MPU_REGION_SIZE_128MB or @ref LL_MPU_REGION_SIZE_256MB or @ref LL_MPU_REGION_SIZE_512MB + * or @ref LL_MPU_REGION_SIZE_1GB or @ref LL_MPU_REGION_SIZE_2GB or @ref LL_MPU_REGION_SIZE_4GB + * @arg @ref LL_MPU_REGION_NO_ACCESS or @ref LL_MPU_REGION_PRIV_RW or @ref LL_MPU_REGION_PRIV_RW_URO or @ref LL_MPU_REGION_FULL_ACCESS + * or @ref LL_MPU_REGION_PRIV_RO or @ref LL_MPU_REGION_PRIV_RO_URO + * @arg @ref LL_MPU_TEX_LEVEL0 or @ref LL_MPU_TEX_LEVEL1 or @ref LL_MPU_TEX_LEVEL2 or @ref LL_MPU_TEX_LEVEL4 + * @arg @ref LL_MPU_INSTRUCTION_ACCESS_ENABLE or @ref LL_MPU_INSTRUCTION_ACCESS_DISABLE + * @arg @ref LL_MPU_ACCESS_SHAREABLE or @ref LL_MPU_ACCESS_NOT_SHAREABLE + * @arg @ref LL_MPU_ACCESS_CACHEABLE or @ref LL_MPU_ACCESS_NOT_CACHEABLE + * @arg @ref LL_MPU_ACCESS_BUFFERABLE or @ref LL_MPU_ACCESS_NOT_BUFFERABLE + * @retval None + */ +__STATIC_INLINE void LL_MPU_ConfigRegion(uint32_t Region, uint32_t SubRegionDisable, uint32_t Address, uint32_t Attributes) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Set base address */ + WRITE_REG(MPU->RBAR, (Address & 0xFFFFFFE0U)); + /* Configure MPU */ + WRITE_REG(MPU->RASR, (MPU_RASR_ENABLE_Msk | Attributes | SubRegionDisable << MPU_RASR_SRD_Pos)); +} + +/** + * @brief Disable a region + * @rmtoll MPU_RNR REGION LL_MPU_DisableRegion\n + * MPU_RASR ENABLE LL_MPU_DisableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_DisableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Disable the MPU region */ + CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @} + */ + +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_CORTEX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_crs.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_crs.h new file mode 100644 index 0000000..ccc4719 --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_crs.h @@ -0,0 +1,788 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_crs.h + * @author MCD Application Team + * @brief Header file of CRS LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_CRS_H +#define STM32L4xx_LL_CRS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined(CRS) + +/** @defgroup CRS_LL CRS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup CRS_LL_Exported_Constants CRS Exported Constants + * @{ + */ + +/** @defgroup CRS_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_CRS_ReadReg function + * @{ + */ +#define LL_CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF +#define LL_CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF +#define LL_CRS_ISR_ERRF CRS_ISR_ERRF +#define LL_CRS_ISR_ESYNCF CRS_ISR_ESYNCF +#define LL_CRS_ISR_SYNCERR CRS_ISR_SYNCERR +#define LL_CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS +#define LL_CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF +/** + * @} + */ + +/** @defgroup CRS_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_CRS_ReadReg and LL_CRS_WriteReg functions + * @{ + */ +#define LL_CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE +#define LL_CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE +#define LL_CRS_CR_ERRIE CRS_CR_ERRIE +#define LL_CRS_CR_ESYNCIE CRS_CR_ESYNCIE +/** + * @} + */ + +/** @defgroup CRS_LL_EC_SYNC_DIV Synchronization Signal Divider + * @{ + */ +#define LL_CRS_SYNC_DIV_1 ((uint32_t)0x00U) /*!< Synchro Signal not divided (default) */ +#define LL_CRS_SYNC_DIV_2 CRS_CFGR_SYNCDIV_0 /*!< Synchro Signal divided by 2 */ +#define LL_CRS_SYNC_DIV_4 CRS_CFGR_SYNCDIV_1 /*!< Synchro Signal divided by 4 */ +#define LL_CRS_SYNC_DIV_8 (CRS_CFGR_SYNCDIV_1 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 8 */ +#define LL_CRS_SYNC_DIV_16 CRS_CFGR_SYNCDIV_2 /*!< Synchro Signal divided by 16 */ +#define LL_CRS_SYNC_DIV_32 (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 32 */ +#define LL_CRS_SYNC_DIV_64 (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_1) /*!< Synchro Signal divided by 64 */ +#define LL_CRS_SYNC_DIV_128 CRS_CFGR_SYNCDIV /*!< Synchro Signal divided by 128 */ +/** + * @} + */ + +/** @defgroup CRS_LL_EC_SYNC_SOURCE Synchronization Signal Source + * @{ + */ +#define LL_CRS_SYNC_SOURCE_GPIO ((uint32_t)0x00U) /*!< Synchro Signal soucre GPIO */ +#define LL_CRS_SYNC_SOURCE_LSE CRS_CFGR_SYNCSRC_0 /*!< Synchro Signal source LSE */ +#define LL_CRS_SYNC_SOURCE_USB CRS_CFGR_SYNCSRC_1 /*!< Synchro Signal source USB SOF (default)*/ +/** + * @} + */ + +/** @defgroup CRS_LL_EC_SYNC_POLARITY Synchronization Signal Polarity + * @{ + */ +#define LL_CRS_SYNC_POLARITY_RISING ((uint32_t)0x00U) /*!< Synchro Active on rising edge (default) */ +#define LL_CRS_SYNC_POLARITY_FALLING CRS_CFGR_SYNCPOL /*!< Synchro Active on falling edge */ +/** + * @} + */ + +/** @defgroup CRS_LL_EC_FREQERRORDIR Frequency Error Direction + * @{ + */ +#define LL_CRS_FREQ_ERROR_DIR_UP ((uint32_t)0x00U) /*!< Upcounting direction, the actual frequency is above the target */ +#define LL_CRS_FREQ_ERROR_DIR_DOWN ((uint32_t)CRS_ISR_FEDIR) /*!< Downcounting direction, the actual frequency is below the target */ +/** + * @} + */ + +/** @defgroup CRS_LL_EC_DEFAULTVALUES Default Values + * @{ + */ +/** + * @brief Reset value of the RELOAD field + * @note The reset value of the RELOAD field corresponds to a target frequency of 48 MHz + * and a synchronization signal frequency of 1 kHz (SOF signal from USB) + */ +#define LL_CRS_RELOADVALUE_DEFAULT ((uint32_t)0xBB7FU) + +/** + * @brief Reset value of Frequency error limit. + */ +#define LL_CRS_ERRORLIMIT_DEFAULT ((uint32_t)0x22U) + +/** + * @brief Reset value of the HSI48 Calibration field + * @note The default value is 64 for STM32L412xx/L422xx, 32 otherwise, which corresponds + * to the middle of the trimming interval. + * The trimming step is around 67 kHz between two consecutive TRIM steps. + * A higher TRIM value corresponds to a higher output frequency + */ +#if defined (STM32L412xx) || defined (STM32L422xx) +#define LL_CRS_HSI48CALIBRATION_DEFAULT ((uint32_t)64U) +#else +#define LL_CRS_HSI48CALIBRATION_DEFAULT ((uint32_t)32U) +#endif +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup CRS_LL_Exported_Macros CRS Exported Macros + * @{ + */ + +/** @defgroup CRS_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in CRS register + * @param __INSTANCE__ CRS Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_CRS_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in CRS register + * @param __INSTANCE__ CRS Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_CRS_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup CRS_LL_EM_Exported_Macros_Calculate_Reload Exported_Macros_Calculate_Reload + * @{ + */ + +/** + * @brief Macro to calculate reload value to be set in CRS register according to target and sync frequencies + * @note The RELOAD value should be selected according to the ratio between + * the target frequency and the frequency of the synchronization source after + * prescaling. It is then decreased by one in order to reach the expected + * synchronization on the zero value. The formula is the following: + * RELOAD = (fTARGET / fSYNC) -1 + * @param __FTARGET__ Target frequency (value in Hz) + * @param __FSYNC__ Synchronization signal frequency (value in Hz) + * @retval Reload value (in Hz) + */ +#define __LL_CRS_CALC_CALCULATE_RELOADVALUE(__FTARGET__, __FSYNC__) (((__FTARGET__) / (__FSYNC__)) - 1U) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup CRS_LL_Exported_Functions CRS Exported Functions + * @{ + */ + +/** @defgroup CRS_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Enable Frequency error counter + * @note When this bit is set, the CRS_CFGR register is write-protected and cannot be modified + * @rmtoll CR CEN LL_CRS_EnableFreqErrorCounter + * @retval None + */ +__STATIC_INLINE void LL_CRS_EnableFreqErrorCounter(void) +{ + SET_BIT(CRS->CR, CRS_CR_CEN); +} + +/** + * @brief Disable Frequency error counter + * @rmtoll CR CEN LL_CRS_DisableFreqErrorCounter + * @retval None + */ +__STATIC_INLINE void LL_CRS_DisableFreqErrorCounter(void) +{ + CLEAR_BIT(CRS->CR, CRS_CR_CEN); +} + +/** + * @brief Check if Frequency error counter is enabled or not + * @rmtoll CR CEN LL_CRS_IsEnabledFreqErrorCounter + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsEnabledFreqErrorCounter(void) +{ + return (READ_BIT(CRS->CR, CRS_CR_CEN) == (CRS_CR_CEN)); +} + +/** + * @brief Enable Automatic trimming counter + * @rmtoll CR AUTOTRIMEN LL_CRS_EnableAutoTrimming + * @retval None + */ +__STATIC_INLINE void LL_CRS_EnableAutoTrimming(void) +{ + SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN); +} + +/** + * @brief Disable Automatic trimming counter + * @rmtoll CR AUTOTRIMEN LL_CRS_DisableAutoTrimming + * @retval None + */ +__STATIC_INLINE void LL_CRS_DisableAutoTrimming(void) +{ + CLEAR_BIT(CRS->CR, CRS_CR_AUTOTRIMEN); +} + +/** + * @brief Check if Automatic trimming is enabled or not + * @rmtoll CR AUTOTRIMEN LL_CRS_IsEnabledAutoTrimming + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsEnabledAutoTrimming(void) +{ + return (READ_BIT(CRS->CR, CRS_CR_AUTOTRIMEN) == (CRS_CR_AUTOTRIMEN)); +} + +/** + * @brief Set HSI48 oscillator smooth trimming + * @note When the AUTOTRIMEN bit is set, this field is controlled by hardware and is read-only + * @rmtoll CR TRIM LL_CRS_SetHSI48SmoothTrimming + * @param Value a number between Min_Data = 0 and Max_Data = 127 for STM32L412xx/L422xx or 63 otherwise + * @note Default value can be set thanks to @ref LL_CRS_HSI48CALIBRATION_DEFAULT + * @retval None + */ +__STATIC_INLINE void LL_CRS_SetHSI48SmoothTrimming(uint32_t Value) +{ + MODIFY_REG(CRS->CR, CRS_CR_TRIM, Value << CRS_CR_TRIM_Pos); +} + +/** + * @brief Get HSI48 oscillator smooth trimming + * @rmtoll CR TRIM LL_CRS_GetHSI48SmoothTrimming + * @retval a number between Min_Data = 0 and Max_Data = 127 for STM32L412xx/L422xx or 63 otherwise + */ +__STATIC_INLINE uint32_t LL_CRS_GetHSI48SmoothTrimming(void) +{ + return (uint32_t)(READ_BIT(CRS->CR, CRS_CR_TRIM) >> CRS_CR_TRIM_Pos); +} + +/** + * @brief Set counter reload value + * @rmtoll CFGR RELOAD LL_CRS_SetReloadCounter + * @param Value a number between Min_Data = 0 and Max_Data = 0xFFFF + * @note Default value can be set thanks to @ref LL_CRS_RELOADVALUE_DEFAULT + * Otherwise it can be calculated in using macro @ref __LL_CRS_CALC_CALCULATE_RELOADVALUE (_FTARGET_, _FSYNC_) + * @retval None + */ +__STATIC_INLINE void LL_CRS_SetReloadCounter(uint32_t Value) +{ + MODIFY_REG(CRS->CFGR, CRS_CFGR_RELOAD, Value); +} + +/** + * @brief Get counter reload value + * @rmtoll CFGR RELOAD LL_CRS_GetReloadCounter + * @retval a number between Min_Data = 0 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_CRS_GetReloadCounter(void) +{ + return (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_RELOAD)); +} + +/** + * @brief Set frequency error limit + * @rmtoll CFGR FELIM LL_CRS_SetFreqErrorLimit + * @param Value a number between Min_Data = 0 and Max_Data = 255 + * @note Default value can be set thanks to @ref LL_CRS_ERRORLIMIT_DEFAULT + * @retval None + */ +__STATIC_INLINE void LL_CRS_SetFreqErrorLimit(uint32_t Value) +{ + MODIFY_REG(CRS->CFGR, CRS_CFGR_FELIM, Value << CRS_CFGR_FELIM_Pos); +} + +/** + * @brief Get frequency error limit + * @rmtoll CFGR FELIM LL_CRS_GetFreqErrorLimit + * @retval A number between Min_Data = 0 and Max_Data = 255 + */ +__STATIC_INLINE uint32_t LL_CRS_GetFreqErrorLimit(void) +{ + return (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_FELIM) >> CRS_CFGR_FELIM_Pos); +} + +/** + * @brief Set division factor for SYNC signal + * @rmtoll CFGR SYNCDIV LL_CRS_SetSyncDivider + * @param Divider This parameter can be one of the following values: + * @arg @ref LL_CRS_SYNC_DIV_1 + * @arg @ref LL_CRS_SYNC_DIV_2 + * @arg @ref LL_CRS_SYNC_DIV_4 + * @arg @ref LL_CRS_SYNC_DIV_8 + * @arg @ref LL_CRS_SYNC_DIV_16 + * @arg @ref LL_CRS_SYNC_DIV_32 + * @arg @ref LL_CRS_SYNC_DIV_64 + * @arg @ref LL_CRS_SYNC_DIV_128 + * @retval None + */ +__STATIC_INLINE void LL_CRS_SetSyncDivider(uint32_t Divider) +{ + MODIFY_REG(CRS->CFGR, CRS_CFGR_SYNCDIV, Divider); +} + +/** + * @brief Get division factor for SYNC signal + * @rmtoll CFGR SYNCDIV LL_CRS_GetSyncDivider + * @retval Returned value can be one of the following values: + * @arg @ref LL_CRS_SYNC_DIV_1 + * @arg @ref LL_CRS_SYNC_DIV_2 + * @arg @ref LL_CRS_SYNC_DIV_4 + * @arg @ref LL_CRS_SYNC_DIV_8 + * @arg @ref LL_CRS_SYNC_DIV_16 + * @arg @ref LL_CRS_SYNC_DIV_32 + * @arg @ref LL_CRS_SYNC_DIV_64 + * @arg @ref LL_CRS_SYNC_DIV_128 + */ +__STATIC_INLINE uint32_t LL_CRS_GetSyncDivider(void) +{ + return (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_SYNCDIV)); +} + +/** + * @brief Set SYNC signal source + * @rmtoll CFGR SYNCSRC LL_CRS_SetSyncSignalSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_CRS_SYNC_SOURCE_GPIO + * @arg @ref LL_CRS_SYNC_SOURCE_LSE + * @arg @ref LL_CRS_SYNC_SOURCE_USB + * @retval None + */ +__STATIC_INLINE void LL_CRS_SetSyncSignalSource(uint32_t Source) +{ + MODIFY_REG(CRS->CFGR, CRS_CFGR_SYNCSRC, Source); +} + +/** + * @brief Get SYNC signal source + * @rmtoll CFGR SYNCSRC LL_CRS_GetSyncSignalSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_CRS_SYNC_SOURCE_GPIO + * @arg @ref LL_CRS_SYNC_SOURCE_LSE + * @arg @ref LL_CRS_SYNC_SOURCE_USB + */ +__STATIC_INLINE uint32_t LL_CRS_GetSyncSignalSource(void) +{ + return (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_SYNCSRC)); +} + +/** + * @brief Set input polarity for the SYNC signal source + * @rmtoll CFGR SYNCPOL LL_CRS_SetSyncPolarity + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_CRS_SYNC_POLARITY_RISING + * @arg @ref LL_CRS_SYNC_POLARITY_FALLING + * @retval None + */ +__STATIC_INLINE void LL_CRS_SetSyncPolarity(uint32_t Polarity) +{ + MODIFY_REG(CRS->CFGR, CRS_CFGR_SYNCPOL, Polarity); +} + +/** + * @brief Get input polarity for the SYNC signal source + * @rmtoll CFGR SYNCPOL LL_CRS_GetSyncPolarity + * @retval Returned value can be one of the following values: + * @arg @ref LL_CRS_SYNC_POLARITY_RISING + * @arg @ref LL_CRS_SYNC_POLARITY_FALLING + */ +__STATIC_INLINE uint32_t LL_CRS_GetSyncPolarity(void) +{ + return (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_SYNCPOL)); +} + +/** + * @brief Configure CRS for the synchronization + * @rmtoll CR TRIM LL_CRS_ConfigSynchronization\n + * CFGR RELOAD LL_CRS_ConfigSynchronization\n + * CFGR FELIM LL_CRS_ConfigSynchronization\n + * CFGR SYNCDIV LL_CRS_ConfigSynchronization\n + * CFGR SYNCSRC LL_CRS_ConfigSynchronization\n + * CFGR SYNCPOL LL_CRS_ConfigSynchronization + * @param HSI48CalibrationValue a number between Min_Data = 0 and Max_Data = 63 + * @param ErrorLimitValue a number between Min_Data = 0 and Max_Data = 0xFFFF + * @param ReloadValue a number between Min_Data = 0 and Max_Data = 255 + * @param Settings This parameter can be a combination of the following values: + * @arg @ref LL_CRS_SYNC_DIV_1 or @ref LL_CRS_SYNC_DIV_2 or @ref LL_CRS_SYNC_DIV_4 or @ref LL_CRS_SYNC_DIV_8 + * or @ref LL_CRS_SYNC_DIV_16 or @ref LL_CRS_SYNC_DIV_32 or @ref LL_CRS_SYNC_DIV_64 or @ref LL_CRS_SYNC_DIV_128 + * @arg @ref LL_CRS_SYNC_SOURCE_GPIO or @ref LL_CRS_SYNC_SOURCE_LSE or @ref LL_CRS_SYNC_SOURCE_USB + * @arg @ref LL_CRS_SYNC_POLARITY_RISING or @ref LL_CRS_SYNC_POLARITY_FALLING + * @retval None + */ +__STATIC_INLINE void LL_CRS_ConfigSynchronization(uint32_t HSI48CalibrationValue, uint32_t ErrorLimitValue, uint32_t ReloadValue, uint32_t Settings) +{ + MODIFY_REG(CRS->CR, CRS_CR_TRIM, HSI48CalibrationValue); + MODIFY_REG(CRS->CFGR, + CRS_CFGR_RELOAD | CRS_CFGR_FELIM | CRS_CFGR_SYNCDIV | CRS_CFGR_SYNCSRC | CRS_CFGR_SYNCPOL, + ReloadValue | (ErrorLimitValue << CRS_CFGR_FELIM_Pos) | Settings); +} + +/** + * @} + */ + +/** @defgroup CRS_LL_EF_CRS_Management CRS_Management + * @{ + */ + +/** + * @brief Generate software SYNC event + * @rmtoll CR SWSYNC LL_CRS_GenerateEvent_SWSYNC + * @retval None + */ +__STATIC_INLINE void LL_CRS_GenerateEvent_SWSYNC(void) +{ + SET_BIT(CRS->CR, CRS_CR_SWSYNC); +} + +/** + * @brief Get the frequency error direction latched in the time of the last + * SYNC event + * @rmtoll ISR FEDIR LL_CRS_GetFreqErrorDirection + * @retval Returned value can be one of the following values: + * @arg @ref LL_CRS_FREQ_ERROR_DIR_UP + * @arg @ref LL_CRS_FREQ_ERROR_DIR_DOWN + */ +__STATIC_INLINE uint32_t LL_CRS_GetFreqErrorDirection(void) +{ + return (uint32_t)(READ_BIT(CRS->ISR, CRS_ISR_FEDIR)); +} + +/** + * @brief Get the frequency error counter value latched in the time of the last SYNC event + * @rmtoll ISR FECAP LL_CRS_GetFreqErrorCapture + * @retval A number between Min_Data = 0x0000 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_CRS_GetFreqErrorCapture(void) +{ + return (uint32_t)(READ_BIT(CRS->ISR, CRS_ISR_FECAP) >> CRS_ISR_FECAP_Pos); +} + +/** + * @} + */ + +/** @defgroup CRS_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Check if SYNC event OK signal occurred or not + * @rmtoll ISR SYNCOKF LL_CRS_IsActiveFlag_SYNCOK + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_SYNCOK(void) +{ + return (READ_BIT(CRS->ISR, CRS_ISR_SYNCOKF) == (CRS_ISR_SYNCOKF)); +} + +/** + * @brief Check if SYNC warning signal occurred or not + * @rmtoll ISR SYNCWARNF LL_CRS_IsActiveFlag_SYNCWARN + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_SYNCWARN(void) +{ + return (READ_BIT(CRS->ISR, CRS_ISR_SYNCWARNF) == (CRS_ISR_SYNCWARNF)); +} + +/** + * @brief Check if Synchronization or trimming error signal occurred or not + * @rmtoll ISR ERRF LL_CRS_IsActiveFlag_ERR + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_ERR(void) +{ + return (READ_BIT(CRS->ISR, CRS_ISR_ERRF) == (CRS_ISR_ERRF)); +} + +/** + * @brief Check if Expected SYNC signal occurred or not + * @rmtoll ISR ESYNCF LL_CRS_IsActiveFlag_ESYNC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_ESYNC(void) +{ + return (READ_BIT(CRS->ISR, CRS_ISR_ESYNCF) == (CRS_ISR_ESYNCF)); +} + +/** + * @brief Check if SYNC error signal occurred or not + * @rmtoll ISR SYNCERR LL_CRS_IsActiveFlag_SYNCERR + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_SYNCERR(void) +{ + return (READ_BIT(CRS->ISR, CRS_ISR_SYNCERR) == (CRS_ISR_SYNCERR)); +} + +/** + * @brief Check if SYNC missed error signal occurred or not + * @rmtoll ISR SYNCMISS LL_CRS_IsActiveFlag_SYNCMISS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_SYNCMISS(void) +{ + return (READ_BIT(CRS->ISR, CRS_ISR_SYNCMISS) == (CRS_ISR_SYNCMISS)); +} + +/** + * @brief Check if Trimming overflow or underflow occurred or not + * @rmtoll ISR TRIMOVF LL_CRS_IsActiveFlag_TRIMOVF + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_TRIMOVF(void) +{ + return (READ_BIT(CRS->ISR, CRS_ISR_TRIMOVF) == (CRS_ISR_TRIMOVF)); +} + +/** + * @brief Clear the SYNC event OK flag + * @rmtoll ICR SYNCOKC LL_CRS_ClearFlag_SYNCOK + * @retval None + */ +__STATIC_INLINE void LL_CRS_ClearFlag_SYNCOK(void) +{ + WRITE_REG(CRS->ICR, CRS_ICR_SYNCOKC); +} + +/** + * @brief Clear the SYNC warning flag + * @rmtoll ICR SYNCWARNC LL_CRS_ClearFlag_SYNCWARN + * @retval None + */ +__STATIC_INLINE void LL_CRS_ClearFlag_SYNCWARN(void) +{ + WRITE_REG(CRS->ICR, CRS_ICR_SYNCWARNC); +} + +/** + * @brief Clear TRIMOVF, SYNCMISS and SYNCERR bits and consequently also + * the ERR flag + * @rmtoll ICR ERRC LL_CRS_ClearFlag_ERR + * @retval None + */ +__STATIC_INLINE void LL_CRS_ClearFlag_ERR(void) +{ + WRITE_REG(CRS->ICR, CRS_ICR_ERRC); +} + +/** + * @brief Clear Expected SYNC flag + * @rmtoll ICR ESYNCC LL_CRS_ClearFlag_ESYNC + * @retval None + */ +__STATIC_INLINE void LL_CRS_ClearFlag_ESYNC(void) +{ + WRITE_REG(CRS->ICR, CRS_ICR_ESYNCC); +} + +/** + * @} + */ + +/** @defgroup CRS_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable SYNC event OK interrupt + * @rmtoll CR SYNCOKIE LL_CRS_EnableIT_SYNCOK + * @retval None + */ +__STATIC_INLINE void LL_CRS_EnableIT_SYNCOK(void) +{ + SET_BIT(CRS->CR, CRS_CR_SYNCOKIE); +} + +/** + * @brief Disable SYNC event OK interrupt + * @rmtoll CR SYNCOKIE LL_CRS_DisableIT_SYNCOK + * @retval None + */ +__STATIC_INLINE void LL_CRS_DisableIT_SYNCOK(void) +{ + CLEAR_BIT(CRS->CR, CRS_CR_SYNCOKIE); +} + +/** + * @brief Check if SYNC event OK interrupt is enabled or not + * @rmtoll CR SYNCOKIE LL_CRS_IsEnabledIT_SYNCOK + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsEnabledIT_SYNCOK(void) +{ + return (READ_BIT(CRS->CR, CRS_CR_SYNCOKIE) == (CRS_CR_SYNCOKIE)); +} + +/** + * @brief Enable SYNC warning interrupt + * @rmtoll CR SYNCWARNIE LL_CRS_EnableIT_SYNCWARN + * @retval None + */ +__STATIC_INLINE void LL_CRS_EnableIT_SYNCWARN(void) +{ + SET_BIT(CRS->CR, CRS_CR_SYNCWARNIE); +} + +/** + * @brief Disable SYNC warning interrupt + * @rmtoll CR SYNCWARNIE LL_CRS_DisableIT_SYNCWARN + * @retval None + */ +__STATIC_INLINE void LL_CRS_DisableIT_SYNCWARN(void) +{ + CLEAR_BIT(CRS->CR, CRS_CR_SYNCWARNIE); +} + +/** + * @brief Check if SYNC warning interrupt is enabled or not + * @rmtoll CR SYNCWARNIE LL_CRS_IsEnabledIT_SYNCWARN + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsEnabledIT_SYNCWARN(void) +{ + return (READ_BIT(CRS->CR, CRS_CR_SYNCWARNIE) == (CRS_CR_SYNCWARNIE)); +} + +/** + * @brief Enable Synchronization or trimming error interrupt + * @rmtoll CR ERRIE LL_CRS_EnableIT_ERR + * @retval None + */ +__STATIC_INLINE void LL_CRS_EnableIT_ERR(void) +{ + SET_BIT(CRS->CR, CRS_CR_ERRIE); +} + +/** + * @brief Disable Synchronization or trimming error interrupt + * @rmtoll CR ERRIE LL_CRS_DisableIT_ERR + * @retval None + */ +__STATIC_INLINE void LL_CRS_DisableIT_ERR(void) +{ + CLEAR_BIT(CRS->CR, CRS_CR_ERRIE); +} + +/** + * @brief Check if Synchronization or trimming error interrupt is enabled or not + * @rmtoll CR ERRIE LL_CRS_IsEnabledIT_ERR + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsEnabledIT_ERR(void) +{ + return (READ_BIT(CRS->CR, CRS_CR_ERRIE) == (CRS_CR_ERRIE)); +} + +/** + * @brief Enable Expected SYNC interrupt + * @rmtoll CR ESYNCIE LL_CRS_EnableIT_ESYNC + * @retval None + */ +__STATIC_INLINE void LL_CRS_EnableIT_ESYNC(void) +{ + SET_BIT(CRS->CR, CRS_CR_ESYNCIE); +} + +/** + * @brief Disable Expected SYNC interrupt + * @rmtoll CR ESYNCIE LL_CRS_DisableIT_ESYNC + * @retval None + */ +__STATIC_INLINE void LL_CRS_DisableIT_ESYNC(void) +{ + CLEAR_BIT(CRS->CR, CRS_CR_ESYNCIE); +} + +/** + * @brief Check if Expected SYNC interrupt is enabled or not + * @rmtoll CR ESYNCIE LL_CRS_IsEnabledIT_ESYNC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_CRS_IsEnabledIT_ESYNC(void) +{ + return (READ_BIT(CRS->CR, CRS_CR_ESYNCIE) == (CRS_CR_ESYNCIE)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup CRS_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_CRS_DeInit(void); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(CRS) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_CRS_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dma.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dma.h new file mode 100644 index 0000000..fea188e --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dma.h @@ -0,0 +1,2404 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_dma.h + * @author MCD Application Team + * @brief Header file of DMA LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_DMA_H +#define STM32L4xx_LL_DMA_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" +#if defined(DMAMUX1) +#include "stm32l4xx_ll_dmamux.h" +#endif /* DMAMUX1 */ + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined (DMA1) || defined (DMA2) + +/** @defgroup DMA_LL DMA + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup DMA_LL_Private_Variables DMA Private Variables + * @{ + */ +/* Array used to get the DMA channel register offset versus channel index LL_DMA_CHANNEL_x */ +static const uint8_t CHANNEL_OFFSET_TAB[] = +{ + (uint8_t)(DMA1_Channel1_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel2_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel3_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel4_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel5_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel6_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel7_BASE - DMA1_BASE) +}; +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +#if defined(DMAMUX1) +#else +/** @defgroup DMA_LL_Private_Constants DMA Private Constants + * @{ + */ +/* Define used to get CSELR register offset */ +#define DMA_CSELR_OFFSET (uint32_t)(DMA1_CSELR_BASE - DMA1_BASE) + +/* Defines used for the bit position in the register and perform offsets */ +#define DMA_POSITION_CSELR_CXS POSITION_VAL(DMA_CSELR_C1S << (Channel*4U)) +/** + * @} + */ +#endif /* DMAMUX1 */ + +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +#if defined(DMAMUX1) +/** @defgroup DMA_LL_Private_Macros DMA Private Macros + * @{ + */ +/** + * @brief Helper macro to convert DMA Instance DMAx into DMAMUX channel + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 13 are mapped to DMA2 channel 1 to 7. + * @param __DMA_INSTANCE__ DMAx + * @retval Channel_Offset (LL_DMA_CHANNEL_7 or 0). + */ +#define __LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(__DMA_INSTANCE__) \ +(((__DMA_INSTANCE__) == DMA1) ? 0x00000000U : LL_DMA_CHANNEL_7) + +/** + * @} + */ +#else +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_Private_Macros DMA Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ +#endif /* DMAMUX1 */ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_ES_INIT DMA Exported Init structure + * @{ + */ +typedef struct +{ + uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer + or as Source base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer + or as Destination base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, + from memory to memory or from peripheral to memory. + This parameter can be a value of @ref DMA_LL_EC_DIRECTION + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */ + + uint32_t Mode; /*!< Specifies the normal or circular operation mode. + This parameter can be a value of @ref DMA_LL_EC_MODE + @note: The circular buffer mode cannot be used if the memory to memory + data transfer direction is configured on the selected Channel + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */ + + uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_PERIPH + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */ + + uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_MEMORY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */ + + uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */ + + uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */ + + uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. + The data unit is equal to the source buffer configuration set in PeripheralSize + or MemorySize parameters depending in the transfer direction. + This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */ +#if defined(DMAMUX1) + + uint32_t PeriphRequest; /*!< Specifies the peripheral request. + This parameter can be a value of @ref DMAMUX_LL_EC_REQUEST + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphRequest(). */ +#else + + uint32_t PeriphRequest; /*!< Specifies the peripheral request. + This parameter can be a value of @ref DMA_LL_EC_REQUEST + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphRequest(). */ +#endif /* DMAMUX1 */ + + uint32_t Priority; /*!< Specifies the channel priority level. + This parameter can be a value of @ref DMA_LL_EC_PRIORITY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetChannelPriorityLevel(). */ + +} LL_DMA_InitTypeDef; +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Constants DMA Exported Constants + * @{ + */ +/** @defgroup DMA_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_DMA_WriteReg function + * @{ + */ +#define LL_DMA_IFCR_CGIF1 DMA_IFCR_CGIF1 /*!< Channel 1 global flag */ +#define LL_DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1 /*!< Channel 1 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1 /*!< Channel 1 half transfer flag */ +#define LL_DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1 /*!< Channel 1 transfer error flag */ +#define LL_DMA_IFCR_CGIF2 DMA_IFCR_CGIF2 /*!< Channel 2 global flag */ +#define LL_DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2 /*!< Channel 2 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2 /*!< Channel 2 half transfer flag */ +#define LL_DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2 /*!< Channel 2 transfer error flag */ +#define LL_DMA_IFCR_CGIF3 DMA_IFCR_CGIF3 /*!< Channel 3 global flag */ +#define LL_DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3 /*!< Channel 3 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3 /*!< Channel 3 half transfer flag */ +#define LL_DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3 /*!< Channel 3 transfer error flag */ +#define LL_DMA_IFCR_CGIF4 DMA_IFCR_CGIF4 /*!< Channel 4 global flag */ +#define LL_DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4 /*!< Channel 4 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4 /*!< Channel 4 half transfer flag */ +#define LL_DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4 /*!< Channel 4 transfer error flag */ +#define LL_DMA_IFCR_CGIF5 DMA_IFCR_CGIF5 /*!< Channel 5 global flag */ +#define LL_DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5 /*!< Channel 5 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5 /*!< Channel 5 half transfer flag */ +#define LL_DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5 /*!< Channel 5 transfer error flag */ +#define LL_DMA_IFCR_CGIF6 DMA_IFCR_CGIF6 /*!< Channel 6 global flag */ +#define LL_DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6 /*!< Channel 6 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6 /*!< Channel 6 half transfer flag */ +#define LL_DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6 /*!< Channel 6 transfer error flag */ +#define LL_DMA_IFCR_CGIF7 DMA_IFCR_CGIF7 /*!< Channel 7 global flag */ +#define LL_DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7 /*!< Channel 7 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7 /*!< Channel 7 half transfer flag */ +#define LL_DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7 /*!< Channel 7 transfer error flag */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_DMA_ReadReg function + * @{ + */ +#define LL_DMA_ISR_GIF1 DMA_ISR_GIF1 /*!< Channel 1 global flag */ +#define LL_DMA_ISR_TCIF1 DMA_ISR_TCIF1 /*!< Channel 1 transfer complete flag */ +#define LL_DMA_ISR_HTIF1 DMA_ISR_HTIF1 /*!< Channel 1 half transfer flag */ +#define LL_DMA_ISR_TEIF1 DMA_ISR_TEIF1 /*!< Channel 1 transfer error flag */ +#define LL_DMA_ISR_GIF2 DMA_ISR_GIF2 /*!< Channel 2 global flag */ +#define LL_DMA_ISR_TCIF2 DMA_ISR_TCIF2 /*!< Channel 2 transfer complete flag */ +#define LL_DMA_ISR_HTIF2 DMA_ISR_HTIF2 /*!< Channel 2 half transfer flag */ +#define LL_DMA_ISR_TEIF2 DMA_ISR_TEIF2 /*!< Channel 2 transfer error flag */ +#define LL_DMA_ISR_GIF3 DMA_ISR_GIF3 /*!< Channel 3 global flag */ +#define LL_DMA_ISR_TCIF3 DMA_ISR_TCIF3 /*!< Channel 3 transfer complete flag */ +#define LL_DMA_ISR_HTIF3 DMA_ISR_HTIF3 /*!< Channel 3 half transfer flag */ +#define LL_DMA_ISR_TEIF3 DMA_ISR_TEIF3 /*!< Channel 3 transfer error flag */ +#define LL_DMA_ISR_GIF4 DMA_ISR_GIF4 /*!< Channel 4 global flag */ +#define LL_DMA_ISR_TCIF4 DMA_ISR_TCIF4 /*!< Channel 4 transfer complete flag */ +#define LL_DMA_ISR_HTIF4 DMA_ISR_HTIF4 /*!< Channel 4 half transfer flag */ +#define LL_DMA_ISR_TEIF4 DMA_ISR_TEIF4 /*!< Channel 4 transfer error flag */ +#define LL_DMA_ISR_GIF5 DMA_ISR_GIF5 /*!< Channel 5 global flag */ +#define LL_DMA_ISR_TCIF5 DMA_ISR_TCIF5 /*!< Channel 5 transfer complete flag */ +#define LL_DMA_ISR_HTIF5 DMA_ISR_HTIF5 /*!< Channel 5 half transfer flag */ +#define LL_DMA_ISR_TEIF5 DMA_ISR_TEIF5 /*!< Channel 5 transfer error flag */ +#define LL_DMA_ISR_GIF6 DMA_ISR_GIF6 /*!< Channel 6 global flag */ +#define LL_DMA_ISR_TCIF6 DMA_ISR_TCIF6 /*!< Channel 6 transfer complete flag */ +#define LL_DMA_ISR_HTIF6 DMA_ISR_HTIF6 /*!< Channel 6 half transfer flag */ +#define LL_DMA_ISR_TEIF6 DMA_ISR_TEIF6 /*!< Channel 6 transfer error flag */ +#define LL_DMA_ISR_GIF7 DMA_ISR_GIF7 /*!< Channel 7 global flag */ +#define LL_DMA_ISR_TCIF7 DMA_ISR_TCIF7 /*!< Channel 7 transfer complete flag */ +#define LL_DMA_ISR_HTIF7 DMA_ISR_HTIF7 /*!< Channel 7 half transfer flag */ +#define LL_DMA_ISR_TEIF7 DMA_ISR_TEIF7 /*!< Channel 7 transfer error flag */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMA_WriteReg functions + * @{ + */ +#define LL_DMA_CCR_TCIE DMA_CCR_TCIE /*!< Transfer complete interrupt */ +#define LL_DMA_CCR_HTIE DMA_CCR_HTIE /*!< Half Transfer interrupt */ +#define LL_DMA_CCR_TEIE DMA_CCR_TEIE /*!< Transfer error interrupt */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_CHANNEL CHANNEL + * @{ + */ +#define LL_DMA_CHANNEL_1 0x00000000U /*!< DMA Channel 1 */ +#define LL_DMA_CHANNEL_2 0x00000001U /*!< DMA Channel 2 */ +#define LL_DMA_CHANNEL_3 0x00000002U /*!< DMA Channel 3 */ +#define LL_DMA_CHANNEL_4 0x00000003U /*!< DMA Channel 4 */ +#define LL_DMA_CHANNEL_5 0x00000004U /*!< DMA Channel 5 */ +#define LL_DMA_CHANNEL_6 0x00000005U /*!< DMA Channel 6 */ +#define LL_DMA_CHANNEL_7 0x00000006U /*!< DMA Channel 7 */ +#if defined(USE_FULL_LL_DRIVER) +#define LL_DMA_CHANNEL_ALL 0xFFFF0000U /*!< DMA Channel all (used only for function @ref LL_DMA_DeInit(). */ +#endif /*USE_FULL_LL_DRIVER*/ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_DIRECTION Transfer Direction + * @{ + */ +#define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CCR_DIR /*!< Memory to peripheral direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM /*!< Memory to memory direction */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MODE Transfer mode + * @{ + */ +#define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */ +#define LL_DMA_MODE_CIRCULAR DMA_CCR_CIRC /*!< Circular Mode */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PERIPH Peripheral increment mode + * @{ + */ +#define LL_DMA_PERIPH_INCREMENT DMA_CCR_PINC /*!< Peripheral increment mode Enable */ +#define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MEMORY Memory increment mode + * @{ + */ +#define LL_DMA_MEMORY_INCREMENT DMA_CCR_MINC /*!< Memory increment mode Enable */ +#define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PDATAALIGN Peripheral data alignment + * @{ + */ +#define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */ +#define LL_DMA_PDATAALIGN_HALFWORD DMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */ +#define LL_DMA_PDATAALIGN_WORD DMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MDATAALIGN Memory data alignment + * @{ + */ +#define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */ +#define LL_DMA_MDATAALIGN_HALFWORD DMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */ +#define LL_DMA_MDATAALIGN_WORD DMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PRIORITY Transfer Priority level + * @{ + */ +#define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */ +#define LL_DMA_PRIORITY_MEDIUM DMA_CCR_PL_0 /*!< Priority level : Medium */ +#define LL_DMA_PRIORITY_HIGH DMA_CCR_PL_1 /*!< Priority level : High */ +#define LL_DMA_PRIORITY_VERYHIGH DMA_CCR_PL /*!< Priority level : Very_High */ +/** + * @} + */ + +#if !defined (DMAMUX1) +/** @defgroup DMA_LL_EC_REQUEST Transfer peripheral request + * @{ + */ +#define LL_DMA_REQUEST_0 0x00000000U /*!< DMA peripheral request 0 */ +#define LL_DMA_REQUEST_1 0x00000001U /*!< DMA peripheral request 1 */ +#define LL_DMA_REQUEST_2 0x00000002U /*!< DMA peripheral request 2 */ +#define LL_DMA_REQUEST_3 0x00000003U /*!< DMA peripheral request 3 */ +#define LL_DMA_REQUEST_4 0x00000004U /*!< DMA peripheral request 4 */ +#define LL_DMA_REQUEST_5 0x00000005U /*!< DMA peripheral request 5 */ +#define LL_DMA_REQUEST_6 0x00000006U /*!< DMA peripheral request 6 */ +#define LL_DMA_REQUEST_7 0x00000007U /*!< DMA peripheral request 7 */ +/** + * @} + */ +#endif /* !defined DMAMUX1 */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Macros DMA Exported Macros + * @{ + */ + +/** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros + * @{ + */ +/** + * @brief Write a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely + * @{ + */ +/** + * @brief Convert DMAx_Channely into DMAx + * @param __CHANNEL_INSTANCE__ DMAx_Channely + * @retval DMAx + */ +#if defined(DMA2) +#define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)DMA1_Channel7)) ? DMA2 : DMA1) +#else +#define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (DMA1) +#endif + +/** + * @brief Convert DMAx_Channely into LL_DMA_CHANNEL_y + * @param __CHANNEL_INSTANCE__ DMAx_Channely + * @retval LL_DMA_CHANNEL_y + */ +#if defined (DMA2) +#if defined (DMA2_Channel6) && defined (DMA2_Channel7) +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#else +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#endif +#else +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#endif + +/** + * @brief Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely + * @param __DMA_INSTANCE__ DMAx + * @param __CHANNEL__ LL_DMA_CHANNEL_y + * @retval DMAx_Channely + */ +#if defined (DMA2) +#if defined (DMA2_Channel6) && defined (DMA2_Channel7) +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA2_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA2_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA2_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA2_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA2_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA2_Channel6 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_7))) ? DMA1_Channel7 : \ + DMA2_Channel7) +#else +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA2_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA2_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA2_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA2_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA2_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + DMA1_Channel7) +#endif +#else +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + DMA1_Channel7) +#endif + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Functions DMA Exported Functions + * @{ + */ + +/** @defgroup DMA_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Enable DMA channel. + * @rmtoll CCR EN LL_DMA_EnableChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN); +} + +/** + * @brief Disable DMA channel. + * @rmtoll CCR EN LL_DMA_DisableChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN); +} + +/** + * @brief Check if DMA channel is enabled or disabled. + * @rmtoll CCR EN LL_DMA_IsEnabledChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_EN) == (DMA_CCR_EN)) ? 1UL : 0UL); +} + +/** + * @brief Configure all parameters link to DMA transfer. + * @rmtoll CCR DIR LL_DMA_ConfigTransfer\n + * CCR MEM2MEM LL_DMA_ConfigTransfer\n + * CCR CIRC LL_DMA_ConfigTransfer\n + * CCR PINC LL_DMA_ConfigTransfer\n + * CCR MINC LL_DMA_ConfigTransfer\n + * CCR PSIZE LL_DMA_ConfigTransfer\n + * CCR MSIZE LL_DMA_ConfigTransfer\n + * CCR PL LL_DMA_ConfigTransfer + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR + * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT + * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT + * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD + * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD + * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM | DMA_CCR_CIRC | DMA_CCR_PINC | DMA_CCR_MINC | DMA_CCR_PSIZE | DMA_CCR_MSIZE | DMA_CCR_PL, + Configuration); +} + +/** + * @brief Set Data transfer direction (read from peripheral or from memory). + * @rmtoll CCR DIR LL_DMA_SetDataTransferDirection\n + * CCR MEM2MEM LL_DMA_SetDataTransferDirection + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM, Direction); +} + +/** + * @brief Get Data transfer direction (read from peripheral or from memory). + * @rmtoll CCR DIR LL_DMA_GetDataTransferDirection\n + * CCR MEM2MEM LL_DMA_GetDataTransferDirection + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM)); +} + +/** + * @brief Set DMA mode circular or normal. + * @note The circular buffer mode cannot be used if the memory-to-memory + * data transfer is configured on the selected Channel. + * @rmtoll CCR CIRC LL_DMA_SetMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_CIRC, + Mode); +} + +/** + * @brief Get DMA mode circular or normal. + * @rmtoll CCR CIRC LL_DMA_GetMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + */ +__STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_CIRC)); +} + +/** + * @brief Set Peripheral increment mode. + * @rmtoll CCR PINC LL_DMA_SetPeriphIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values: + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PINC, + PeriphOrM2MSrcIncMode); +} + +/** + * @brief Get Peripheral increment mode. + * @rmtoll CCR PINC LL_DMA_GetPeriphIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_PINC)); +} + +/** + * @brief Set Memory increment mode. + * @rmtoll CCR MINC LL_DMA_SetMemoryIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryOrM2MDstIncMode This parameter can be one of the following values: + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_MINC, + MemoryOrM2MDstIncMode); +} + +/** + * @brief Get Memory increment mode. + * @rmtoll CCR MINC LL_DMA_GetMemoryIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_MINC)); +} + +/** + * @brief Set Peripheral size. + * @rmtoll CCR PSIZE LL_DMA_SetPeriphSize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PSIZE, + PeriphOrM2MSrcDataSize); +} + +/** + * @brief Get Peripheral size. + * @rmtoll CCR PSIZE LL_DMA_GetPeriphSize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_PSIZE)); +} + +/** + * @brief Set Memory size. + * @rmtoll CCR MSIZE LL_DMA_SetMemorySize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryOrM2MDstDataSize This parameter can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_MSIZE, + MemoryOrM2MDstDataSize); +} + +/** + * @brief Get Memory size. + * @rmtoll CCR MSIZE LL_DMA_GetMemorySize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_MSIZE)); +} + +/** + * @brief Set Channel priority level. + * @rmtoll CCR PL LL_DMA_SetChannelPriorityLevel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Priority This parameter can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Priority) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PL, + Priority); +} + +/** + * @brief Get Channel priority level. + * @rmtoll CCR PL LL_DMA_GetChannelPriorityLevel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + */ +__STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_PL)); +} + +/** + * @brief Set Number of data to transfer. + * @note This action has no effect if + * channel is enabled. + * @rmtoll CNDTR NDT LL_DMA_SetDataLength + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t NbData) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CNDTR, + DMA_CNDTR_NDT, NbData); +} + +/** + * @brief Get Number of data to transfer. + * @note Once the channel is enabled, the return value indicate the + * remaining bytes to be transmitted. + * @rmtoll CNDTR NDT LL_DMA_GetDataLength + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CNDTR, + DMA_CNDTR_NDT)); +} + +/** + * @brief Configure the Source and Destination addresses. + * @note This API must not be called when the DMA channel is enabled. + * @note Each IP using DMA provides an API to get directly the register adress (LL_PPP_DMA_GetRegAddr). + * @rmtoll CPAR PA LL_DMA_ConfigAddresses\n + * CMAR MA LL_DMA_ConfigAddresses + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress, + uint32_t DstAddress, uint32_t Direction) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + /* Direction Memory to Periph */ + if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) + { + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, SrcAddress); + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, DstAddress); + } + /* Direction Periph to Memory and Memory to Memory */ + else + { + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, SrcAddress); + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, DstAddress); + } +} + +/** + * @brief Set the Memory address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CMAR MA LL_DMA_SetMemoryAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, MemoryAddress); +} + +/** + * @brief Set the Peripheral address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CPAR PA LL_DMA_SetPeriphAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphAddress) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, PeriphAddress); +} + +/** + * @brief Get Memory address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @rmtoll CMAR MA LL_DMA_GetMemoryAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR)); +} + +/** + * @brief Get Peripheral address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @rmtoll CPAR PA LL_DMA_GetPeriphAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR)); +} + +/** + * @brief Set the Memory to Memory Source address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CPAR PA LL_DMA_SetM2MSrcAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, MemoryAddress); +} + +/** + * @brief Set the Memory to Memory Destination address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CMAR MA LL_DMA_SetM2MDstAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, MemoryAddress); +} + +/** + * @brief Get the Memory to Memory Source address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @rmtoll CPAR PA LL_DMA_GetM2MSrcAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR)); +} + +/** + * @brief Get the Memory to Memory Destination address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @rmtoll CMAR MA LL_DMA_GetM2MDstAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR)); +} + +#if defined(DMAMUX1) +/** + * @brief Set DMA request for DMA Channels on DMAMUX Channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 13 are mapped to DMA2 channel 1 to 7. + * @rmtoll CxCR DMAREQ_ID LL_DMA_SetPeriphRequest + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Request This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_MEM2MEM + * @arg @ref LL_DMAMUX_REQ_GENERATOR0 + * @arg @ref LL_DMAMUX_REQ_GENERATOR1 + * @arg @ref LL_DMAMUX_REQ_GENERATOR2 + * @arg @ref LL_DMAMUX_REQ_GENERATOR3 + * @arg @ref LL_DMAMUX_REQ_ADC1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM6_UP + * @arg @ref LL_DMAMUX_REQ_TIM7_UP + * @arg @ref LL_DMAMUX_REQ_SPI1_RX + * @arg @ref LL_DMAMUX_REQ_SPI1_TX + * @arg @ref LL_DMAMUX_REQ_SPI2_RX + * @arg @ref LL_DMAMUX_REQ_SPI2_TX + * @arg @ref LL_DMAMUX_REQ_SPI3_RX + * @arg @ref LL_DMAMUX_REQ_SPI3_TX + * @arg @ref LL_DMAMUX_REQ_I2C1_RX + * @arg @ref LL_DMAMUX_REQ_I2C1_TX + * @arg @ref LL_DMAMUX_REQ_I2C2_RX + * @arg @ref LL_DMAMUX_REQ_I2C2_TX + * @arg @ref LL_DMAMUX_REQ_I2C3_RX + * @arg @ref LL_DMAMUX_REQ_I2C3_TX + * @arg @ref LL_DMAMUX_REQ_I2C4_RX + * @arg @ref LL_DMAMUX_REQ_I2C4_TX + * @arg @ref LL_DMAMUX_REQ_USART1_RX + * @arg @ref LL_DMAMUX_REQ_USART1_TX + * @arg @ref LL_DMAMUX_REQ_USART2_RX + * @arg @ref LL_DMAMUX_REQ_USART2_TX + * @arg @ref LL_DMAMUX_REQ_USART3_RX + * @arg @ref LL_DMAMUX_REQ_USART3_TX + * @arg @ref LL_DMAMUX_REQ_UART4_RX + * @arg @ref LL_DMAMUX_REQ_UART4_TX + * @arg @ref LL_DMAMUX_REQ_UART5_RX + * @arg @ref LL_DMAMUX_REQ_UART5_TX + * @arg @ref LL_DMAMUX_REQ_LPUART1_RX + * @arg @ref LL_DMAMUX_REQ_LPUART1_TX + * @arg @ref LL_DMAMUX_REQ_SAI1_A + * @arg @ref LL_DMAMUX_REQ_SAI1_B + * @arg @ref LL_DMAMUX_REQ_SAI2_A + * @arg @ref LL_DMAMUX_REQ_SAI2_B + * @arg @ref LL_DMAMUX_REQ_OSPI1 + * @arg @ref LL_DMAMUX_REQ_OSPI2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM1_UP + * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM1_COM + * @arg @ref LL_DMAMUX_REQ_TIM8_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM8_UP + * @arg @ref LL_DMAMUX_REQ_TIM8_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM8_COM + * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM2_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM3_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM4_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM4_UP + * @arg @ref LL_DMAMUX_REQ_TIM5_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM5_UP + * @arg @ref LL_DMAMUX_REQ_TIM5_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM15_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM15_UP + * @arg @ref LL_DMAMUX_REQ_TIM15_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM15_COM + * @arg @ref LL_DMAMUX_REQ_TIM16_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM16_UP + * @arg @ref LL_DMAMUX_REQ_TIM17_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM17_UP + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT0 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT1 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT2 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT3 + * @arg @ref LL_DMAMUX_REQ_DCMI + * @arg @ref LL_DMAMUX_REQ_AES_IN + * @arg @ref LL_DMAMUX_REQ_AES_OUT + * @arg @ref LL_DMAMUX_REQ_HASH_IN + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Request) +{ + uint32_t dmamux_ccr_offset = ((((uint32_t)DMAx ^ (uint32_t)DMA1) >> 10U) * 7U); + MODIFY_REG((DMAMUX1_Channel0 + Channel + dmamux_ccr_offset)->CCR, DMAMUX_CxCR_DMAREQ_ID, Request); +} + +/** + * @brief Get DMA request for DMA Channels on DMAMUX Channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 13 are mapped to DMA2 channel 1 to 7. + * @rmtoll CxCR DMAREQ_ID LL_DMA_GetPeriphRequest + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_MEM2MEM + * @arg @ref LL_DMAMUX_REQ_GENERATOR0 + * @arg @ref LL_DMAMUX_REQ_GENERATOR1 + * @arg @ref LL_DMAMUX_REQ_GENERATOR2 + * @arg @ref LL_DMAMUX_REQ_GENERATOR3 + * @arg @ref LL_DMAMUX_REQ_ADC1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM6_UP + * @arg @ref LL_DMAMUX_REQ_TIM7_UP + * @arg @ref LL_DMAMUX_REQ_SPI1_RX + * @arg @ref LL_DMAMUX_REQ_SPI1_TX + * @arg @ref LL_DMAMUX_REQ_SPI2_RX + * @arg @ref LL_DMAMUX_REQ_SPI2_TX + * @arg @ref LL_DMAMUX_REQ_SPI3_RX + * @arg @ref LL_DMAMUX_REQ_SPI3_TX + * @arg @ref LL_DMAMUX_REQ_I2C1_RX + * @arg @ref LL_DMAMUX_REQ_I2C1_TX + * @arg @ref LL_DMAMUX_REQ_I2C2_RX + * @arg @ref LL_DMAMUX_REQ_I2C2_TX + * @arg @ref LL_DMAMUX_REQ_I2C3_RX + * @arg @ref LL_DMAMUX_REQ_I2C3_TX + * @arg @ref LL_DMAMUX_REQ_I2C4_RX + * @arg @ref LL_DMAMUX_REQ_I2C4_TX + * @arg @ref LL_DMAMUX_REQ_USART1_RX + * @arg @ref LL_DMAMUX_REQ_USART1_TX + * @arg @ref LL_DMAMUX_REQ_USART2_RX + * @arg @ref LL_DMAMUX_REQ_USART2_TX + * @arg @ref LL_DMAMUX_REQ_USART3_RX + * @arg @ref LL_DMAMUX_REQ_USART3_TX + * @arg @ref LL_DMAMUX_REQ_UART4_RX + * @arg @ref LL_DMAMUX_REQ_UART4_TX + * @arg @ref LL_DMAMUX_REQ_UART5_RX + * @arg @ref LL_DMAMUX_REQ_UART5_TX + * @arg @ref LL_DMAMUX_REQ_LPUART1_RX + * @arg @ref LL_DMAMUX_REQ_LPUART1_TX + * @arg @ref LL_DMAMUX_REQ_SAI1_A + * @arg @ref LL_DMAMUX_REQ_SAI1_B + * @arg @ref LL_DMAMUX_REQ_SAI2_A + * @arg @ref LL_DMAMUX_REQ_SAI2_B + * @arg @ref LL_DMAMUX_REQ_OSPI1 + * @arg @ref LL_DMAMUX_REQ_OSPI2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM1_UP + * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM1_COM + * @arg @ref LL_DMAMUX_REQ_TIM8_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM8_UP + * @arg @ref LL_DMAMUX_REQ_TIM8_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM8_COM + * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM2_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM3_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM4_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM4_UP + * @arg @ref LL_DMAMUX_REQ_TIM5_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM5_UP + * @arg @ref LL_DMAMUX_REQ_TIM5_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM15_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM15_UP + * @arg @ref LL_DMAMUX_REQ_TIM15_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM15_COM + * @arg @ref LL_DMAMUX_REQ_TIM16_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM16_UP + * @arg @ref LL_DMAMUX_REQ_TIM17_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM17_UP + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT0 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT1 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT2 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT3 + * @arg @ref LL_DMAMUX_REQ_DCMI + * @arg @ref LL_DMAMUX_REQ_AES_IN + * @arg @ref LL_DMAMUX_REQ_AES_OUT + * @arg @ref LL_DMAMUX_REQ_HASH_IN + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dmamux_ccr_offset = ((((uint32_t)DMAx ^ (uint32_t)DMA1) >> 10U) * 7U); + return (READ_BIT((DMAMUX1_Channel0 + Channel + dmamux_ccr_offset)->CCR, DMAMUX_CxCR_DMAREQ_ID)); +} +#else +/** + * @brief Set DMA request for DMA instance on Channel x. + * @note Please refer to Reference Manual to get the available mapping of Request value link to Channel Selection. + * @rmtoll CSELR C1S LL_DMA_SetPeriphRequest\n + * CSELR C2S LL_DMA_SetPeriphRequest\n + * CSELR C3S LL_DMA_SetPeriphRequest\n + * CSELR C4S LL_DMA_SetPeriphRequest\n + * CSELR C5S LL_DMA_SetPeriphRequest\n + * CSELR C6S LL_DMA_SetPeriphRequest\n + * CSELR C7S LL_DMA_SetPeriphRequest + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphRequest This parameter can be one of the following values: + * @arg @ref LL_DMA_REQUEST_0 + * @arg @ref LL_DMA_REQUEST_1 + * @arg @ref LL_DMA_REQUEST_2 + * @arg @ref LL_DMA_REQUEST_3 + * @arg @ref LL_DMA_REQUEST_4 + * @arg @ref LL_DMA_REQUEST_5 + * @arg @ref LL_DMA_REQUEST_6 + * @arg @ref LL_DMA_REQUEST_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphRequest) +{ + MODIFY_REG(((DMA_Request_TypeDef *)((uint32_t)((uint32_t)DMAx + DMA_CSELR_OFFSET)))->CSELR, + DMA_CSELR_C1S << ((Channel) * 4U), PeriphRequest << DMA_POSITION_CSELR_CXS); +} + +/** + * @brief Get DMA request for DMA instance on Channel x. + * @rmtoll CSELR C1S LL_DMA_GetPeriphRequest\n + * CSELR C2S LL_DMA_GetPeriphRequest\n + * CSELR C3S LL_DMA_GetPeriphRequest\n + * CSELR C4S LL_DMA_GetPeriphRequest\n + * CSELR C5S LL_DMA_GetPeriphRequest\n + * CSELR C6S LL_DMA_GetPeriphRequest\n + * CSELR C7S LL_DMA_GetPeriphRequest + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_REQUEST_0 + * @arg @ref LL_DMA_REQUEST_1 + * @arg @ref LL_DMA_REQUEST_2 + * @arg @ref LL_DMA_REQUEST_3 + * @arg @ref LL_DMA_REQUEST_4 + * @arg @ref LL_DMA_REQUEST_5 + * @arg @ref LL_DMA_REQUEST_6 + * @arg @ref LL_DMA_REQUEST_7 + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Request_TypeDef *)((uint32_t)((uint32_t)DMAx + DMA_CSELR_OFFSET)))->CSELR, + DMA_CSELR_C1S << ((Channel) * 4U)) >> DMA_POSITION_CSELR_CXS); +} +#endif /* DMAMUX1 */ + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Channel 1 global interrupt flag. + * @rmtoll ISR GIF1 LL_DMA_IsActiveFlag_GI1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI1(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF1) == (DMA_ISR_GIF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 2 global interrupt flag. + * @rmtoll ISR GIF2 LL_DMA_IsActiveFlag_GI2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI2(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF2) == (DMA_ISR_GIF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 3 global interrupt flag. + * @rmtoll ISR GIF3 LL_DMA_IsActiveFlag_GI3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI3(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF3) == (DMA_ISR_GIF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 4 global interrupt flag. + * @rmtoll ISR GIF4 LL_DMA_IsActiveFlag_GI4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI4(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF4) == (DMA_ISR_GIF4)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 5 global interrupt flag. + * @rmtoll ISR GIF5 LL_DMA_IsActiveFlag_GI5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI5(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF5) == (DMA_ISR_GIF5)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 6 global interrupt flag. + * @rmtoll ISR GIF6 LL_DMA_IsActiveFlag_GI6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI6(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF6) == (DMA_ISR_GIF6)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 7 global interrupt flag. + * @rmtoll ISR GIF7 LL_DMA_IsActiveFlag_GI7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI7(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF7) == (DMA_ISR_GIF7)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 1 transfer complete flag. + * @rmtoll ISR TCIF1 LL_DMA_IsActiveFlag_TC1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF1) == (DMA_ISR_TCIF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 2 transfer complete flag. + * @rmtoll ISR TCIF2 LL_DMA_IsActiveFlag_TC2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF2) == (DMA_ISR_TCIF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 3 transfer complete flag. + * @rmtoll ISR TCIF3 LL_DMA_IsActiveFlag_TC3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF3) == (DMA_ISR_TCIF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 4 transfer complete flag. + * @rmtoll ISR TCIF4 LL_DMA_IsActiveFlag_TC4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF4) == (DMA_ISR_TCIF4)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 5 transfer complete flag. + * @rmtoll ISR TCIF5 LL_DMA_IsActiveFlag_TC5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF5) == (DMA_ISR_TCIF5)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 6 transfer complete flag. + * @rmtoll ISR TCIF6 LL_DMA_IsActiveFlag_TC6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF6) == (DMA_ISR_TCIF6)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 7 transfer complete flag. + * @rmtoll ISR TCIF7 LL_DMA_IsActiveFlag_TC7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF7) == (DMA_ISR_TCIF7)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 1 half transfer flag. + * @rmtoll ISR HTIF1 LL_DMA_IsActiveFlag_HT1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF1) == (DMA_ISR_HTIF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 2 half transfer flag. + * @rmtoll ISR HTIF2 LL_DMA_IsActiveFlag_HT2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF2) == (DMA_ISR_HTIF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 3 half transfer flag. + * @rmtoll ISR HTIF3 LL_DMA_IsActiveFlag_HT3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF3) == (DMA_ISR_HTIF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 4 half transfer flag. + * @rmtoll ISR HTIF4 LL_DMA_IsActiveFlag_HT4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF4) == (DMA_ISR_HTIF4)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 5 half transfer flag. + * @rmtoll ISR HTIF5 LL_DMA_IsActiveFlag_HT5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF5) == (DMA_ISR_HTIF5)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 6 half transfer flag. + * @rmtoll ISR HTIF6 LL_DMA_IsActiveFlag_HT6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF6) == (DMA_ISR_HTIF6)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 7 half transfer flag. + * @rmtoll ISR HTIF7 LL_DMA_IsActiveFlag_HT7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF7) == (DMA_ISR_HTIF7)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 1 transfer error flag. + * @rmtoll ISR TEIF1 LL_DMA_IsActiveFlag_TE1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF1) == (DMA_ISR_TEIF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 2 transfer error flag. + * @rmtoll ISR TEIF2 LL_DMA_IsActiveFlag_TE2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF2) == (DMA_ISR_TEIF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 3 transfer error flag. + * @rmtoll ISR TEIF3 LL_DMA_IsActiveFlag_TE3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF3) == (DMA_ISR_TEIF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 4 transfer error flag. + * @rmtoll ISR TEIF4 LL_DMA_IsActiveFlag_TE4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF4) == (DMA_ISR_TEIF4)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 5 transfer error flag. + * @rmtoll ISR TEIF5 LL_DMA_IsActiveFlag_TE5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF5) == (DMA_ISR_TEIF5)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 6 transfer error flag. + * @rmtoll ISR TEIF6 LL_DMA_IsActiveFlag_TE6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF6) == (DMA_ISR_TEIF6)) ? 1UL : 0UL); +} + +/** + * @brief Get Channel 7 transfer error flag. + * @rmtoll ISR TEIF7 LL_DMA_IsActiveFlag_TE7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) +{ + return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF7) == (DMA_ISR_TEIF7)) ? 1UL : 0UL); +} + +/** + * @brief Clear Channel 1 global interrupt flag. + * @rmtoll IFCR CGIF1 LL_DMA_ClearFlag_GI1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF1); +} + +/** + * @brief Clear Channel 2 global interrupt flag. + * @rmtoll IFCR CGIF2 LL_DMA_ClearFlag_GI2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF2); +} + +/** + * @brief Clear Channel 3 global interrupt flag. + * @rmtoll IFCR CGIF3 LL_DMA_ClearFlag_GI3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF3); +} + +/** + * @brief Clear Channel 4 global interrupt flag. + * @rmtoll IFCR CGIF4 LL_DMA_ClearFlag_GI4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF4); +} + +/** + * @brief Clear Channel 5 global interrupt flag. + * @rmtoll IFCR CGIF5 LL_DMA_ClearFlag_GI5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF5); +} + +/** + * @brief Clear Channel 6 global interrupt flag. + * @rmtoll IFCR CGIF6 LL_DMA_ClearFlag_GI6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF6); +} + +/** + * @brief Clear Channel 7 global interrupt flag. + * @rmtoll IFCR CGIF7 LL_DMA_ClearFlag_GI7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF7); +} + +/** + * @brief Clear Channel 1 transfer complete flag. + * @rmtoll IFCR CTCIF1 LL_DMA_ClearFlag_TC1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF1); +} + +/** + * @brief Clear Channel 2 transfer complete flag. + * @rmtoll IFCR CTCIF2 LL_DMA_ClearFlag_TC2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF2); +} + +/** + * @brief Clear Channel 3 transfer complete flag. + * @rmtoll IFCR CTCIF3 LL_DMA_ClearFlag_TC3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF3); +} + +/** + * @brief Clear Channel 4 transfer complete flag. + * @rmtoll IFCR CTCIF4 LL_DMA_ClearFlag_TC4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF4); +} + +/** + * @brief Clear Channel 5 transfer complete flag. + * @rmtoll IFCR CTCIF5 LL_DMA_ClearFlag_TC5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF5); +} + +/** + * @brief Clear Channel 6 transfer complete flag. + * @rmtoll IFCR CTCIF6 LL_DMA_ClearFlag_TC6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF6); +} + +/** + * @brief Clear Channel 7 transfer complete flag. + * @rmtoll IFCR CTCIF7 LL_DMA_ClearFlag_TC7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF7); +} + +/** + * @brief Clear Channel 1 half transfer flag. + * @rmtoll IFCR CHTIF1 LL_DMA_ClearFlag_HT1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF1); +} + +/** + * @brief Clear Channel 2 half transfer flag. + * @rmtoll IFCR CHTIF2 LL_DMA_ClearFlag_HT2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF2); +} + +/** + * @brief Clear Channel 3 half transfer flag. + * @rmtoll IFCR CHTIF3 LL_DMA_ClearFlag_HT3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF3); +} + +/** + * @brief Clear Channel 4 half transfer flag. + * @rmtoll IFCR CHTIF4 LL_DMA_ClearFlag_HT4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF4); +} + +/** + * @brief Clear Channel 5 half transfer flag. + * @rmtoll IFCR CHTIF5 LL_DMA_ClearFlag_HT5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF5); +} + +/** + * @brief Clear Channel 6 half transfer flag. + * @rmtoll IFCR CHTIF6 LL_DMA_ClearFlag_HT6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF6); +} + +/** + * @brief Clear Channel 7 half transfer flag. + * @rmtoll IFCR CHTIF7 LL_DMA_ClearFlag_HT7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF7); +} + +/** + * @brief Clear Channel 1 transfer error flag. + * @rmtoll IFCR CTEIF1 LL_DMA_ClearFlag_TE1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF1); +} + +/** + * @brief Clear Channel 2 transfer error flag. + * @rmtoll IFCR CTEIF2 LL_DMA_ClearFlag_TE2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF2); +} + +/** + * @brief Clear Channel 3 transfer error flag. + * @rmtoll IFCR CTEIF3 LL_DMA_ClearFlag_TE3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF3); +} + +/** + * @brief Clear Channel 4 transfer error flag. + * @rmtoll IFCR CTEIF4 LL_DMA_ClearFlag_TE4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF4); +} + +/** + * @brief Clear Channel 5 transfer error flag. + * @rmtoll IFCR CTEIF5 LL_DMA_ClearFlag_TE5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF5); +} + +/** + * @brief Clear Channel 6 transfer error flag. + * @rmtoll IFCR CTEIF6 LL_DMA_ClearFlag_TE6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF6); +} + +/** + * @brief Clear Channel 7 transfer error flag. + * @rmtoll IFCR CTEIF7 LL_DMA_ClearFlag_TE7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF7); +} + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_IT_Management IT_Management + * @{ + */ +/** + * @brief Enable Transfer complete interrupt. + * @rmtoll CCR TCIE LL_DMA_EnableIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE); +} + +/** + * @brief Enable Half transfer interrupt. + * @rmtoll CCR HTIE LL_DMA_EnableIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE); +} + +/** + * @brief Enable Transfer error interrupt. + * @rmtoll CCR TEIE LL_DMA_EnableIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TEIE); +} + +/** + * @brief Disable Transfer complete interrupt. + * @rmtoll CCR TCIE LL_DMA_DisableIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE); +} + +/** + * @brief Disable Half transfer interrupt. + * @rmtoll CCR HTIE LL_DMA_DisableIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE); +} + +/** + * @brief Disable Transfer error interrupt. + * @rmtoll CCR TEIE LL_DMA_DisableIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TEIE); +} + +/** + * @brief Check if Transfer complete Interrupt is enabled. + * @rmtoll CCR TCIE LL_DMA_IsEnabledIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_TCIE) == (DMA_CCR_TCIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Half transfer Interrupt is enabled. + * @rmtoll CCR HTIE LL_DMA_IsEnabledIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_HTIE) == (DMA_CCR_HTIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Transfer error Interrupt is enabled. + * @rmtoll CCR TEIE LL_DMA_IsEnabledIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + uint32_t dma_base_addr = (uint32_t)DMAx; + return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, + DMA_CCR_TEIE) == (DMA_CCR_TEIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions + * @{ + */ +ErrorStatus LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct); +ErrorStatus LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel); +void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMA1 || DMA2 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_DMA_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dmamux.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dmamux.h new file mode 100644 index 0000000..2769c21 --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_dmamux.h @@ -0,0 +1,1984 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_dmamux.h + * @author MCD Application Team + * @brief Header file of DMAMUX LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_DMAMUX_H +#define STM32L4xx_LL_DMAMUX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined (DMAMUX1) + +/** @defgroup DMAMUX_LL DMAMUX + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup DMAMUX_LL_Private_Constants DMAMUX Private Constants + * @{ + */ +/* Define used to get DMAMUX CCR register size */ +#define DMAMUX_CCR_SIZE 0x00000004UL + +/* Define used to get DMAMUX RGCR register size */ +#define DMAMUX_RGCR_SIZE 0x00000004UL +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup DMAMUX_LL_Exported_Constants DMAMUX Exported Constants + * @{ + */ +/** @defgroup DMAMUX_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_DMAMUX_WriteReg function + * @{ + */ +#define LL_DMAMUX_CFR_CSOF0 DMAMUX_CFR_CSOF0 /*!< Synchronization Event Overrun Flag Channel 0 */ +#define LL_DMAMUX_CFR_CSOF1 DMAMUX_CFR_CSOF1 /*!< Synchronization Event Overrun Flag Channel 1 */ +#define LL_DMAMUX_CFR_CSOF2 DMAMUX_CFR_CSOF2 /*!< Synchronization Event Overrun Flag Channel 2 */ +#define LL_DMAMUX_CFR_CSOF3 DMAMUX_CFR_CSOF3 /*!< Synchronization Event Overrun Flag Channel 3 */ +#define LL_DMAMUX_CFR_CSOF4 DMAMUX_CFR_CSOF4 /*!< Synchronization Event Overrun Flag Channel 4 */ +#define LL_DMAMUX_CFR_CSOF5 DMAMUX_CFR_CSOF5 /*!< Synchronization Event Overrun Flag Channel 5 */ +#define LL_DMAMUX_CFR_CSOF6 DMAMUX_CFR_CSOF6 /*!< Synchronization Event Overrun Flag Channel 6 */ +#define LL_DMAMUX_CFR_CSOF7 DMAMUX_CFR_CSOF7 /*!< Synchronization Event Overrun Flag Channel 7 */ +#define LL_DMAMUX_CFR_CSOF8 DMAMUX_CFR_CSOF8 /*!< Synchronization Event Overrun Flag Channel 8 */ +#define LL_DMAMUX_CFR_CSOF9 DMAMUX_CFR_CSOF9 /*!< Synchronization Event Overrun Flag Channel 9 */ +#define LL_DMAMUX_CFR_CSOF10 DMAMUX_CFR_CSOF10 /*!< Synchronization Event Overrun Flag Channel 10 */ +#define LL_DMAMUX_CFR_CSOF11 DMAMUX_CFR_CSOF11 /*!< Synchronization Event Overrun Flag Channel 11 */ +#define LL_DMAMUX_CFR_CSOF12 DMAMUX_CFR_CSOF12 /*!< Synchronization Event Overrun Flag Channel 12 */ +#define LL_DMAMUX_CFR_CSOF13 DMAMUX_CFR_CSOF13 /*!< Synchronization Event Overrun Flag Channel 13 */ +#define LL_DMAMUX_RGCFR_RGCOF0 DMAMUX_RGCFR_COF0 /*!< Request Generator 0 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGCFR_RGCOF1 DMAMUX_RGCFR_COF1 /*!< Request Generator 1 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGCFR_RGCOF2 DMAMUX_RGCFR_COF2 /*!< Request Generator 2 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGCFR_RGCOF3 DMAMUX_RGCFR_COF3 /*!< Request Generator 3 Trigger Event Overrun Flag */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_DMAMUX_ReadReg function + * @{ + */ +#define LL_DMAMUX_CSR_SOF0 DMAMUX_CSR_SOF0 /*!< Synchronization Event Overrun Flag Channel 0 */ +#define LL_DMAMUX_CSR_SOF1 DMAMUX_CSR_SOF1 /*!< Synchronization Event Overrun Flag Channel 1 */ +#define LL_DMAMUX_CSR_SOF2 DMAMUX_CSR_SOF2 /*!< Synchronization Event Overrun Flag Channel 2 */ +#define LL_DMAMUX_CSR_SOF3 DMAMUX_CSR_SOF3 /*!< Synchronization Event Overrun Flag Channel 3 */ +#define LL_DMAMUX_CSR_SOF4 DMAMUX_CSR_SOF4 /*!< Synchronization Event Overrun Flag Channel 4 */ +#define LL_DMAMUX_CSR_SOF5 DMAMUX_CSR_SOF5 /*!< Synchronization Event Overrun Flag Channel 5 */ +#define LL_DMAMUX_CSR_SOF6 DMAMUX_CSR_SOF6 /*!< Synchronization Event Overrun Flag Channel 6 */ +#define LL_DMAMUX_CSR_SOF7 DMAMUX_CSR_SOF7 /*!< Synchronization Event Overrun Flag Channel 7 */ +#define LL_DMAMUX_CSR_SOF8 DMAMUX_CSR_SOF8 /*!< Synchronization Event Overrun Flag Channel 8 */ +#define LL_DMAMUX_CSR_SOF9 DMAMUX_CSR_SOF9 /*!< Synchronization Event Overrun Flag Channel 9 */ +#define LL_DMAMUX_CSR_SOF10 DMAMUX_CSR_SOF10 /*!< Synchronization Event Overrun Flag Channel 10 */ +#define LL_DMAMUX_CSR_SOF11 DMAMUX_CSR_SOF11 /*!< Synchronization Event Overrun Flag Channel 11 */ +#define LL_DMAMUX_CSR_SOF12 DMAMUX_CSR_SOF12 /*!< Synchronization Event Overrun Flag Channel 12 */ +#define LL_DMAMUX_CSR_SOF13 DMAMUX_CSR_SOF13 /*!< Synchronization Event Overrun Flag Channel 13 */ +#define LL_DMAMUX_RGSR_RGOF0 DMAMUX_RGSR_OF0 /*!< Request Generator 0 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGSR_RGOF1 DMAMUX_RGSR_OF1 /*!< Request Generator 1 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGSR_RGOF2 DMAMUX_RGSR_OF2 /*!< Request Generator 2 Trigger Event Overrun Flag */ +#define LL_DMAMUX_RGSR_RGOF3 DMAMUX_RGSR_OF3 /*!< Request Generator 3 Trigger Event Overrun Flag */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMAMUX_WriteReg functions + * @{ + */ +#define LL_DMAMUX_CCR_SOIE DMAMUX_CxCR_SOIE /*!< Synchronization Event Overrun Interrupt */ +#define LL_DMAMUX_RGCR_RGOIE DMAMUX_RGxCR_OIE /*!< Request Generation Trigger Event Overrun Interrupt */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_REQUEST Transfer request + * @{ + */ +#define LL_DMAMUX_REQ_MEM2MEM 0U /*!< Memory to memory transfer */ + +#define LL_DMAMUX_REQ_GENERATOR0 1U /*!< DMAMUX request generator 0 */ +#define LL_DMAMUX_REQ_GENERATOR1 2U /*!< DMAMUX request generator 1 */ +#define LL_DMAMUX_REQ_GENERATOR2 3U /*!< DMAMUX request generator 2 */ +#define LL_DMAMUX_REQ_GENERATOR3 4U /*!< DMAMUX request generator 3 */ + +#define LL_DMAMUX_REQ_ADC1 5U /*!< DMAMUX ADC1 request */ + +#if defined (ADC2) + +#define LL_DMAMUX_REQ_ADC2 6U /*!< DMAMUX ADC1 request */ + +#define LL_DMAMUX_REQ_DAC1_CH1 7U /*!< DMAMUX DAC1 CH1 request */ +#define LL_DMAMUX_REQ_DAC1_CH2 8U /*!< DMAMUX DAC1 CH2 request */ + +#define LL_DMAMUX_REQ_TIM6_UP 9U /*!< DMAMUX TIM6 UP request */ +#define LL_DMAMUX_REQ_TIM7_UP 10U /*!< DMAMUX TIM7 UP request */ + +#define LL_DMAMUX_REQ_SPI1_RX 11U /*!< DMAMUX SPI1 RX request */ +#define LL_DMAMUX_REQ_SPI1_TX 12U /*!< DMAMUX SPI1 TX request */ +#define LL_DMAMUX_REQ_SPI2_RX 13U /*!< DMAMUX SPI2 RX request */ +#define LL_DMAMUX_REQ_SPI2_TX 14U /*!< DMAMUX SPI2 TX request */ +#define LL_DMAMUX_REQ_SPI3_RX 15U /*!< DMAMUX SPI3 RX request */ +#define LL_DMAMUX_REQ_SPI3_TX 16U /*!< DMAMUX SPI3 TX request */ + +#define LL_DMAMUX_REQ_I2C1_RX 17U /*!< DMAMUX I2C1 RX request */ +#define LL_DMAMUX_REQ_I2C1_TX 18U /*!< DMAMUX I2C1 TX request */ +#define LL_DMAMUX_REQ_I2C2_RX 19U /*!< DMAMUX I2C2 RX request */ +#define LL_DMAMUX_REQ_I2C2_TX 20U /*!< DMAMUX I2C2 TX request */ +#define LL_DMAMUX_REQ_I2C3_RX 21U /*!< DMAMUX I2C3 RX request */ +#define LL_DMAMUX_REQ_I2C3_TX 22U /*!< DMAMUX I2C3 TX request */ +#define LL_DMAMUX_REQ_I2C4_RX 23U /*!< DMAMUX I2C4 RX request */ +#define LL_DMAMUX_REQ_I2C4_TX 24U /*!< DMAMUX I2C4 TX request */ + +#define LL_DMAMUX_REQ_USART1_RX 25U /*!< DMAMUX USART1 RX request */ +#define LL_DMAMUX_REQ_USART1_TX 26U /*!< DMAMUX USART1 TX request */ +#define LL_DMAMUX_REQ_USART2_RX 27U /*!< DMAMUX USART2 RX request */ +#define LL_DMAMUX_REQ_USART2_TX 28U /*!< DMAMUX USART2 TX request */ +#define LL_DMAMUX_REQ_USART3_RX 29U /*!< DMAMUX USART3 RX request */ +#define LL_DMAMUX_REQ_USART3_TX 30U /*!< DMAMUX USART3 TX request */ + +#define LL_DMAMUX_REQ_UART4_RX 31U /*!< DMAMUX UART4 RX request */ +#define LL_DMAMUX_REQ_UART4_TX 32U /*!< DMAMUX UART4 TX request */ +#define LL_DMAMUX_REQ_UART5_RX 33U /*!< DMAMUX UART5 RX request */ +#define LL_DMAMUX_REQ_UART5_TX 34U /*!< DMAMUX UART5 TX request */ + +#define LL_DMAMUX_REQ_LPUART1_RX 35U /*!< DMAMUX LPUART1 RX request */ +#define LL_DMAMUX_REQ_LPUART1_TX 36U /*!< DMAMUX LPUART1 TX request */ + +#define LL_DMAMUX_REQ_SAI1_A 37U /*!< DMAMUX SAI1 A request */ +#define LL_DMAMUX_REQ_SAI1_B 38U /*!< DMAMUX SAI1 B request */ +#define LL_DMAMUX_REQ_SAI2_A 39U /*!< DMAMUX SAI2 A request */ +#define LL_DMAMUX_REQ_SAI2_B 40U /*!< DMAMUX SAI2 B request */ + +#define LL_DMAMUX_REQ_OSPI1 41U /*!< DMAMUX OCTOSPI1 request */ +#define LL_DMAMUX_REQ_OSPI2 42U /*!< DMAMUX OCTOSPI2 request */ + +#define LL_DMAMUX_REQ_TIM1_CH1 43U /*!< DMAMUX TIM1 CH1 request */ +#define LL_DMAMUX_REQ_TIM1_CH2 44U /*!< DMAMUX TIM1 CH2 request */ +#define LL_DMAMUX_REQ_TIM1_CH3 45U /*!< DMAMUX TIM1 CH3 request */ +#define LL_DMAMUX_REQ_TIM1_CH4 46U /*!< DMAMUX TIM1 CH4 request */ +#define LL_DMAMUX_REQ_TIM1_UP 47U /*!< DMAMUX TIM1 UP request */ +#define LL_DMAMUX_REQ_TIM1_TRIG 48U /*!< DMAMUX TIM1 TRIG request */ +#define LL_DMAMUX_REQ_TIM1_COM 49U /*!< DMAMUX TIM1 COM request */ + +#define LL_DMAMUX_REQ_TIM8_CH1 50U /*!< DMAMUX TIM8 CH1 request */ +#define LL_DMAMUX_REQ_TIM8_CH2 51U /*!< DMAMUX TIM8 CH2 request */ +#define LL_DMAMUX_REQ_TIM8_CH3 52U /*!< DMAMUX TIM8 CH3 request */ +#define LL_DMAMUX_REQ_TIM8_CH4 53U /*!< DMAMUX TIM8 CH4 request */ +#define LL_DMAMUX_REQ_TIM8_UP 54U /*!< DMAMUX TIM8 UP request */ +#define LL_DMAMUX_REQ_TIM8_TRIG 55U /*!< DMAMUX TIM8 TRIG request */ +#define LL_DMAMUX_REQ_TIM8_COM 56U /*!< DMAMUX TIM8 COM request */ + +#define LL_DMAMUX_REQ_TIM2_CH1 57U /*!< DMAMUX TIM2 CH1 request */ +#define LL_DMAMUX_REQ_TIM2_CH2 58U /*!< DMAMUX TIM2 CH2 request */ +#define LL_DMAMUX_REQ_TIM2_CH3 59U /*!< DMAMUX TIM2 CH3 request */ +#define LL_DMAMUX_REQ_TIM2_CH4 60U /*!< DMAMUX TIM2 CH4 request */ +#define LL_DMAMUX_REQ_TIM2_UP 61U /*!< DMAMUX TIM2 UP request */ + +#define LL_DMAMUX_REQ_TIM3_CH1 62U /*!< DMAMUX TIM3 CH1 request */ +#define LL_DMAMUX_REQ_TIM3_CH2 63U /*!< DMAMUX TIM3 CH2 request */ +#define LL_DMAMUX_REQ_TIM3_CH3 64U /*!< DMAMUX TIM3 CH3 request */ +#define LL_DMAMUX_REQ_TIM3_CH4 65U /*!< DMAMUX TIM3 CH4 request */ +#define LL_DMAMUX_REQ_TIM3_UP 66U /*!< DMAMUX TIM3 UP request */ +#define LL_DMAMUX_REQ_TIM3_TRIG 67U /*!< DMAMUX TIM3 TRIG request */ + +#define LL_DMAMUX_REQ_TIM4_CH1 68U /*!< DMAMUX TIM4 CH1 request */ +#define LL_DMAMUX_REQ_TIM4_CH2 69U /*!< DMAMUX TIM4 CH2 request */ +#define LL_DMAMUX_REQ_TIM4_CH3 70U /*!< DMAMUX TIM4 CH3 request */ +#define LL_DMAMUX_REQ_TIM4_CH4 71U /*!< DMAMUX TIM4 CH4 request */ +#define LL_DMAMUX_REQ_TIM4_UP 72U /*!< DMAMUX TIM4 UP request */ + +#define LL_DMAMUX_REQ_TIM5_CH1 73U /*!< DMAMUX TIM5 CH1 request */ +#define LL_DMAMUX_REQ_TIM5_CH2 74U /*!< DMAMUX TIM5 CH2 request */ +#define LL_DMAMUX_REQ_TIM5_CH3 75U /*!< DMAMUX TIM5 CH3 request */ +#define LL_DMAMUX_REQ_TIM5_CH4 76U /*!< DMAMUX TIM5 CH4 request */ +#define LL_DMAMUX_REQ_TIM5_UP 77U /*!< DMAMUX TIM5 UP request */ +#define LL_DMAMUX_REQ_TIM5_TRIG 78U /*!< DMAMUX TIM5 TRIG request */ +#define LL_DMAMUX_REQ_TIM15_CH1 79U /*!< DMAMUX TIM15 CH1 request */ +#define LL_DMAMUX_REQ_TIM15_UP 80U /*!< DMAMUX TIM15 UP request */ +#define LL_DMAMUX_REQ_TIM15_TRIG 81U /*!< DMAMUX TIM15 TRIG request */ +#define LL_DMAMUX_REQ_TIM15_COM 82U /*!< DMAMUX TIM15 COM request */ + +#define LL_DMAMUX_REQ_TIM16_CH1 83U /*!< DMAMUX TIM16 CH1 request */ +#define LL_DMAMUX_REQ_TIM16_UP 84U /*!< DMAMUX TIM16 UP request */ +#define LL_DMAMUX_REQ_TIM17_CH1 85U /*!< DMAMUX TIM17 CH1 request */ +#define LL_DMAMUX_REQ_TIM17_UP 86U /*!< DMAMUX TIM17 UP request */ + +#define LL_DMAMUX_REQ_DFSDM1_FLT0 87U /*!< DMAMUX DFSDM1_FLT0 request */ +#define LL_DMAMUX_REQ_DFSDM1_FLT1 88U /*!< DMAMUX DFSDM1_FLT1 request */ +#define LL_DMAMUX_REQ_DFSDM1_FLT2 89U /*!< DMAMUX DFSDM1_FLT2 request */ +#define LL_DMAMUX_REQ_DFSDM1_FLT3 90U /*!< DMAMUX DFSDM1_FLT3 request */ + +#define LL_DMAMUX_REQ_DCMI 91U /*!< DMAMUX DCMI request */ +#define LL_DMAMUX_REQ_DCMI_PSSI 91U /*!< DMAMUX PSSI request */ + +#define LL_DMAMUX_REQ_AES_IN 92U /*!< DMAMUX AES_IN request */ +#define LL_DMAMUX_REQ_AES_OUT 93U /*!< DMAMUX AES_OUT request */ + +#define LL_DMAMUX_REQ_HASH_IN 94U /*!< DMAMUX HASH_IN request */ + +#else + +#define LL_DMAMUX_REQ_DAC1_CH1 6U /*!< DMAMUX DAC1 CH1 request */ +#define LL_DMAMUX_REQ_DAC1_CH2 7U /*!< DMAMUX DAC1 CH2 request */ + +#define LL_DMAMUX_REQ_TIM6_UP 8U /*!< DMAMUX TIM6 UP request */ +#define LL_DMAMUX_REQ_TIM7_UP 9U /*!< DMAMUX TIM7 UP request */ + +#define LL_DMAMUX_REQ_SPI1_RX 10U /*!< DMAMUX SPI1 RX request */ +#define LL_DMAMUX_REQ_SPI1_TX 11U /*!< DMAMUX SPI1 TX request */ +#define LL_DMAMUX_REQ_SPI2_RX 12U /*!< DMAMUX SPI2 RX request */ +#define LL_DMAMUX_REQ_SPI2_TX 13U /*!< DMAMUX SPI2 TX request */ +#define LL_DMAMUX_REQ_SPI3_RX 14U /*!< DMAMUX SPI3 RX request */ +#define LL_DMAMUX_REQ_SPI3_TX 15U /*!< DMAMUX SPI3 TX request */ + +#define LL_DMAMUX_REQ_I2C1_RX 16U /*!< DMAMUX I2C1 RX request */ +#define LL_DMAMUX_REQ_I2C1_TX 17U /*!< DMAMUX I2C1 TX request */ +#define LL_DMAMUX_REQ_I2C2_RX 18U /*!< DMAMUX I2C2 RX request */ +#define LL_DMAMUX_REQ_I2C2_TX 19U /*!< DMAMUX I2C2 TX request */ +#define LL_DMAMUX_REQ_I2C3_RX 20U /*!< DMAMUX I2C3 RX request */ +#define LL_DMAMUX_REQ_I2C3_TX 21U /*!< DMAMUX I2C3 TX request */ +#define LL_DMAMUX_REQ_I2C4_RX 22U /*!< DMAMUX I2C4 RX request */ +#define LL_DMAMUX_REQ_I2C4_TX 23U /*!< DMAMUX I2C4 TX request */ + +#define LL_DMAMUX_REQ_USART1_RX 24U /*!< DMAMUX USART1 RX request */ +#define LL_DMAMUX_REQ_USART1_TX 25U /*!< DMAMUX USART1 TX request */ +#define LL_DMAMUX_REQ_USART2_RX 26U /*!< DMAMUX USART2 RX request */ +#define LL_DMAMUX_REQ_USART2_TX 27U /*!< DMAMUX USART2 TX request */ +#define LL_DMAMUX_REQ_USART3_RX 28U /*!< DMAMUX USART3 RX request */ +#define LL_DMAMUX_REQ_USART3_TX 29U /*!< DMAMUX USART3 TX request */ + +#define LL_DMAMUX_REQ_UART4_RX 30U /*!< DMAMUX UART4 RX request */ +#define LL_DMAMUX_REQ_UART4_TX 31U /*!< DMAMUX UART4 TX request */ +#define LL_DMAMUX_REQ_UART5_RX 32U /*!< DMAMUX UART5 RX request */ +#define LL_DMAMUX_REQ_UART5_TX 33U /*!< DMAMUX UART5 TX request */ + +#define LL_DMAMUX_REQ_LPUART1_RX 34U /*!< DMAMUX LPUART1 RX request */ +#define LL_DMAMUX_REQ_LPUART1_TX 35U /*!< DMAMUX LPUART1 TX request */ + +#define LL_DMAMUX_REQ_SAI1_A 36U /*!< DMAMUX SAI1 A request */ +#define LL_DMAMUX_REQ_SAI1_B 37U /*!< DMAMUX SAI1 B request */ +#define LL_DMAMUX_REQ_SAI2_A 38U /*!< DMAMUX SAI2 A request */ +#define LL_DMAMUX_REQ_SAI2_B 39U /*!< DMAMUX SAI2 B request */ + +#define LL_DMAMUX_REQ_OSPI1 40U /*!< DMAMUX OCTOSPI1 request */ +#define LL_DMAMUX_REQ_OSPI2 41U /*!< DMAMUX OCTOSPI2 request */ + +#define LL_DMAMUX_REQ_TIM1_CH1 42U /*!< DMAMUX TIM1 CH1 request */ +#define LL_DMAMUX_REQ_TIM1_CH2 43U /*!< DMAMUX TIM1 CH2 request */ +#define LL_DMAMUX_REQ_TIM1_CH3 44U /*!< DMAMUX TIM1 CH3 request */ +#define LL_DMAMUX_REQ_TIM1_CH4 45U /*!< DMAMUX TIM1 CH4 request */ +#define LL_DMAMUX_REQ_TIM1_UP 46U /*!< DMAMUX TIM1 UP request */ +#define LL_DMAMUX_REQ_TIM1_TRIG 47U /*!< DMAMUX TIM1 TRIG request */ +#define LL_DMAMUX_REQ_TIM1_COM 48U /*!< DMAMUX TIM1 COM request */ + +#define LL_DMAMUX_REQ_TIM8_CH1 49U /*!< DMAMUX TIM8 CH1 request */ +#define LL_DMAMUX_REQ_TIM8_CH2 50U /*!< DMAMUX TIM8 CH2 request */ +#define LL_DMAMUX_REQ_TIM8_CH3 51U /*!< DMAMUX TIM8 CH3 request */ +#define LL_DMAMUX_REQ_TIM8_CH4 52U /*!< DMAMUX TIM8 CH4 request */ +#define LL_DMAMUX_REQ_TIM8_UP 53U /*!< DMAMUX TIM8 UP request */ +#define LL_DMAMUX_REQ_TIM8_TRIG 54U /*!< DMAMUX TIM8 TRIG request */ +#define LL_DMAMUX_REQ_TIM8_COM 55U /*!< DMAMUX TIM8 COM request */ + +#define LL_DMAMUX_REQ_TIM2_CH1 56U /*!< DMAMUX TIM2 CH1 request */ +#define LL_DMAMUX_REQ_TIM2_CH2 57U /*!< DMAMUX TIM2 CH2 request */ +#define LL_DMAMUX_REQ_TIM2_CH3 58U /*!< DMAMUX TIM2 CH3 request */ +#define LL_DMAMUX_REQ_TIM2_CH4 59U /*!< DMAMUX TIM2 CH4 request */ +#define LL_DMAMUX_REQ_TIM2_UP 60U /*!< DMAMUX TIM2 UP request */ + +#define LL_DMAMUX_REQ_TIM3_CH1 61U /*!< DMAMUX TIM3 CH1 request */ +#define LL_DMAMUX_REQ_TIM3_CH2 62U /*!< DMAMUX TIM3 CH2 request */ +#define LL_DMAMUX_REQ_TIM3_CH3 63U /*!< DMAMUX TIM3 CH3 request */ +#define LL_DMAMUX_REQ_TIM3_CH4 64U /*!< DMAMUX TIM3 CH4 request */ +#define LL_DMAMUX_REQ_TIM3_UP 65U /*!< DMAMUX TIM3 UP request */ +#define LL_DMAMUX_REQ_TIM3_TRIG 66U /*!< DMAMUX TIM3 TRIG request */ + +#define LL_DMAMUX_REQ_TIM4_CH1 67U /*!< DMAMUX TIM4 CH1 request */ +#define LL_DMAMUX_REQ_TIM4_CH2 68U /*!< DMAMUX TIM4 CH2 request */ +#define LL_DMAMUX_REQ_TIM4_CH3 69U /*!< DMAMUX TIM4 CH3 request */ +#define LL_DMAMUX_REQ_TIM4_CH4 70U /*!< DMAMUX TIM4 CH4 request */ +#define LL_DMAMUX_REQ_TIM4_UP 71U /*!< DMAMUX TIM4 UP request */ + +#define LL_DMAMUX_REQ_TIM5_CH1 72U /*!< DMAMUX TIM5 CH1 request */ +#define LL_DMAMUX_REQ_TIM5_CH2 73U /*!< DMAMUX TIM5 CH2 request */ +#define LL_DMAMUX_REQ_TIM5_CH3 74U /*!< DMAMUX TIM5 CH3 request */ +#define LL_DMAMUX_REQ_TIM5_CH4 75U /*!< DMAMUX TIM5 CH4 request */ +#define LL_DMAMUX_REQ_TIM5_UP 76U /*!< DMAMUX TIM5 UP request */ +#define LL_DMAMUX_REQ_TIM5_TRIG 77U /*!< DMAMUX TIM5 TRIG request */ +#define LL_DMAMUX_REQ_TIM15_CH1 78U /*!< DMAMUX TIM15 CH1 request */ +#define LL_DMAMUX_REQ_TIM15_UP 79U /*!< DMAMUX TIM15 UP request */ +#define LL_DMAMUX_REQ_TIM15_TRIG 80U /*!< DMAMUX TIM15 TRIG request */ +#define LL_DMAMUX_REQ_TIM15_COM 81U /*!< DMAMUX TIM15 COM request */ + +#define LL_DMAMUX_REQ_TIM16_CH1 82U /*!< DMAMUX TIM16 CH1 request */ +#define LL_DMAMUX_REQ_TIM16_UP 83U /*!< DMAMUX TIM16 UP request */ +#define LL_DMAMUX_REQ_TIM17_CH1 84U /*!< DMAMUX TIM17 CH1 request */ +#define LL_DMAMUX_REQ_TIM17_UP 85U /*!< DMAMUX TIM17 UP request */ + +#define LL_DMAMUX_REQ_DFSDM1_FLT0 86U /*!< DMAMUX DFSDM1_FLT0 request */ +#define LL_DMAMUX_REQ_DFSDM1_FLT1 87U /*!< DMAMUX DFSDM1_FLT1 request */ +#define LL_DMAMUX_REQ_DFSDM1_FLT2 88U /*!< DMAMUX DFSDM1_FLT2 request */ +#define LL_DMAMUX_REQ_DFSDM1_FLT3 89U /*!< DMAMUX DFSDM1_FLT3 request */ + +#define LL_DMAMUX_REQ_DCMI 90U /*!< DMAMUX DCMI request */ + +#define LL_DMAMUX_REQ_AES_IN 91U /*!< DMAMUX AES_IN request */ +#define LL_DMAMUX_REQ_AES_OUT 92U /*!< DMAMUX AES_OUT request */ + +#define LL_DMAMUX_REQ_HASH_IN 93U /*!< DMAMUX HASH_IN request */ + +#endif + +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_CHANNEL DMAMUX Channel + * @{ + */ +#define LL_DMAMUX_CHANNEL_0 0x00000000U /*!< DMAMUX Channel 0 connected to DMA1 Channel 1 */ +#define LL_DMAMUX_CHANNEL_1 0x00000001U /*!< DMAMUX Channel 1 connected to DMA1 Channel 2 */ +#define LL_DMAMUX_CHANNEL_2 0x00000002U /*!< DMAMUX Channel 2 connected to DMA1 Channel 3 */ +#define LL_DMAMUX_CHANNEL_3 0x00000003U /*!< DMAMUX Channel 3 connected to DMA1 Channel 4 */ +#define LL_DMAMUX_CHANNEL_4 0x00000004U /*!< DMAMUX Channel 4 connected to DMA1 Channel 5 */ +#define LL_DMAMUX_CHANNEL_5 0x00000005U /*!< DMAMUX Channel 5 connected to DMA1 Channel 6 */ +#define LL_DMAMUX_CHANNEL_6 0x00000006U /*!< DMAMUX Channel 6 connected to DMA1 Channel 7 */ +#define LL_DMAMUX_CHANNEL_7 0x00000007U /*!< DMAMUX Channel 7 connected to DMA2 Channel 1 */ +#define LL_DMAMUX_CHANNEL_8 0x00000008U /*!< DMAMUX Channel 8 connected to DMA2 Channel 2 */ +#define LL_DMAMUX_CHANNEL_9 0x00000009U /*!< DMAMUX Channel 9 connected to DMA2 Channel 3 */ +#define LL_DMAMUX_CHANNEL_10 0x0000000AU /*!< DMAMUX Channel 10 connected to DMA2 Channel 4 */ +#define LL_DMAMUX_CHANNEL_11 0x0000000BU /*!< DMAMUX Channel 11 connected to DMA2 Channel 5 */ +#define LL_DMAMUX_CHANNEL_12 0x0000000CU /*!< DMAMUX Channel 12 connected to DMA2 Channel 6 */ +#define LL_DMAMUX_CHANNEL_13 0x0000000DU /*!< DMAMUX Channel 13 connected to DMA2 Channel 7 */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_SYNC_NO Synchronization Signal Polarity + * @{ + */ +#define LL_DMAMUX_SYNC_NO_EVENT 0x00000000U /*!< All requests are blocked */ +#define LL_DMAMUX_SYNC_POL_RISING DMAMUX_CxCR_SPOL_0 /*!< Synchronization on event on rising edge */ +#define LL_DMAMUX_SYNC_POL_FALLING DMAMUX_CxCR_SPOL_1 /*!< Synchronization on event on falling edge */ +#define LL_DMAMUX_SYNC_POL_RISING_FALLING (DMAMUX_CxCR_SPOL_0 | DMAMUX_CxCR_SPOL_1) /*!< Synchronization on event on rising and falling edge */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_SYNC_EVT Synchronization Signal Event + * @{ + */ +#define LL_DMAMUX_SYNC_EXTI_LINE0 0x00000000U /*!< Synchronization signal from EXTI Line0 */ +#define LL_DMAMUX_SYNC_EXTI_LINE1 DMAMUX_CxCR_SYNC_ID_0 /*!< Synchronization signal from EXTI Line1 */ +#define LL_DMAMUX_SYNC_EXTI_LINE2 DMAMUX_CxCR_SYNC_ID_1 /*!< Synchronization signal from EXTI Line2 */ +#define LL_DMAMUX_SYNC_EXTI_LINE3 (DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line3 */ +#define LL_DMAMUX_SYNC_EXTI_LINE4 DMAMUX_CxCR_SYNC_ID_2 /*!< Synchronization signal from EXTI Line4 */ +#define LL_DMAMUX_SYNC_EXTI_LINE5 (DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line5 */ +#define LL_DMAMUX_SYNC_EXTI_LINE6 (DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from EXTI Line6 */ +#define LL_DMAMUX_SYNC_EXTI_LINE7 (DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line7 */ +#define LL_DMAMUX_SYNC_EXTI_LINE8 DMAMUX_CxCR_SYNC_ID_3 /*!< Synchronization signal from EXTI Line8 */ +#define LL_DMAMUX_SYNC_EXTI_LINE9 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line9 */ +#define LL_DMAMUX_SYNC_EXTI_LINE10 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from EXTI Line10 */ +#define LL_DMAMUX_SYNC_EXTI_LINE11 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line11 */ +#define LL_DMAMUX_SYNC_EXTI_LINE12 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2) /*!< Synchronization signal from EXTI Line12 */ +#define LL_DMAMUX_SYNC_EXTI_LINE13 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line13 */ +#define LL_DMAMUX_SYNC_EXTI_LINE14 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from EXTI Line14 */ +#define LL_DMAMUX_SYNC_EXTI_LINE15 (DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from EXTI Line15 */ +#define LL_DMAMUX_SYNC_DMAMUX_CH0 DMAMUX_CxCR_SYNC_ID_4 /*!< Synchronization signal from DMAMUX channel0 Event */ +#define LL_DMAMUX_SYNC_DMAMUX_CH1 (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from DMAMUX channel1 Event */ +#define LL_DMAMUX_SYNC_DMAMUX_CH2 (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from DMAMUX channel2 Event */ +#define LL_DMAMUX_SYNC_DMAMUX_CH3 (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from DMAMUX channel3 Event */ +#define LL_DMAMUX_SYNC_LPTIM1_OUT (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_2) /*!< Synchronization signal from LPTIM1 Ouput */ +#define LL_DMAMUX_SYNC_LPTIM2_OUT (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from LPTIM2 Ouput */ +#define LL_DMAMUX_SYNC_DSI_TE (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1) /*!< Synchronization signal from DSI Tearing Effect */ +#define LL_DMAMUX_SYNC_DSI_REFRESH_END (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_2 | DMAMUX_CxCR_SYNC_ID_1 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from DSI End of Refresh */ +#define LL_DMAMUX_SYNC_DMA2D_TX_END (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_3) /*!< Synchronization signal from DMA2D End of Transfer */ +#define LL_DMAMUX_SYNC_LTDC_LINE_IT (DMAMUX_CxCR_SYNC_ID_4 | DMAMUX_CxCR_SYNC_ID_3 | DMAMUX_CxCR_SYNC_ID_0) /*!< Synchronization signal from LTDC Line Interrupt */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_REQUEST_GENERATOR Request Generator Channel + * @{ + */ +#define LL_DMAMUX_REQ_GEN_0 0x00000000U +#define LL_DMAMUX_REQ_GEN_1 0x00000001U +#define LL_DMAMUX_REQ_GEN_2 0x00000002U +#define LL_DMAMUX_REQ_GEN_3 0x00000003U +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_REQUEST_GEN_POLARITY External Request Signal Generation Polarity + * @{ + */ +#define LL_DMAMUX_REQ_GEN_NO_EVENT 0x00000000U /*!< No external DMA request generation */ +#define LL_DMAMUX_REQ_GEN_POL_RISING DMAMUX_RGxCR_GPOL_0 /*!< External DMA request generation on event on rising edge */ +#define LL_DMAMUX_REQ_GEN_POL_FALLING DMAMUX_RGxCR_GPOL_1 /*!< External DMA request generation on event on falling edge */ +#define LL_DMAMUX_REQ_GEN_POL_RISING_FALLING (DMAMUX_RGxCR_GPOL_0 | DMAMUX_RGxCR_GPOL_1) /*!< External DMA request generation on rising and falling edge */ +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EC_REQUEST_GEN External Request Signal Generation + * @{ + */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE0 0x00000000U /*!< Request signal generation from EXTI Line0 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE1 DMAMUX_RGxCR_SIG_ID_0 /*!< Request signal generation from EXTI Line1 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE2 DMAMUX_RGxCR_SIG_ID_1 /*!< Request signal generation from EXTI Line2 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE3 (DMAMUX_RGxCR_SIG_ID_1 |DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line3 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE4 DMAMUX_RGxCR_SIG_ID_2 /*!< Request signal generation from EXTI Line4 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE5 (DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line5 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE6 (DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from EXTI Line6 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE7 (DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line7 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE8 DMAMUX_RGxCR_SIG_ID_3 /*!< Request signal generation from EXTI Line8 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE9 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line9 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE10 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from EXTI Line10 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE11 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line11 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE12 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2) /*!< Request signal generation from EXTI Line12 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE13 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line13 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE14 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from EXTI Line14 */ +#define LL_DMAMUX_REQ_GEN_EXTI_LINE15 (DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from EXTI Line15 */ +#define LL_DMAMUX_REQ_GEN_DMAMUX_CH0 DMAMUX_RGxCR_SIG_ID_4 /*!< Request signal generation from DMAMUX channel0 Event */ +#define LL_DMAMUX_REQ_GEN_DMAMUX_CH1 (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from DMAMUX channel1 Event */ +#define LL_DMAMUX_REQ_GEN_DMAMUX_CH2 (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from DMAMUX channel2 Event */ +#define LL_DMAMUX_REQ_GEN_DMAMUX_CH3 (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from DMAMUX channel3 Event */ +#define LL_DMAMUX_REQ_GEN_LPTIM1_OUT (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_2) /*!< Request signal generation from LPTIM1 Ouput */ +#define LL_DMAMUX_REQ_GEN_LPTIM2_OUT (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from LPTIM2 Ouput */ +#define LL_DMAMUX_REQ_GEN_DSI_TE (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1) /*!< Request signal generation from DSI Tearing Effect */ +#define LL_DMAMUX_REQ_GEN_DSI_REFRESH_END (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_2 | DMAMUX_RGxCR_SIG_ID_1 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from DSI End of Refresh */ +#define LL_DMAMUX_REQ_GEN_DMA2D_TX_END (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_3) /*!< Request signal generation from DMA2D End of Transfer */ +#define LL_DMAMUX_REQ_GEN_LTDC_LINE_IT (DMAMUX_RGxCR_SIG_ID_4 | DMAMUX_RGxCR_SIG_ID_3 | DMAMUX_RGxCR_SIG_ID_0) /*!< Request signal generation from LTDC Line Interrupt */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup DMAMUX_LL_Exported_Macros DMAMUX Exported Macros + * @{ + */ + +/** @defgroup DMAMUX_LL_EM_WRITE_READ Common Write and read registers macros + * @{ + */ +/** + * @brief Write a value in DMAMUX register + * @param __INSTANCE__ DMAMUX Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_DMAMUX_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in DMAMUX register + * @param __INSTANCE__ DMAMUX Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_DMAMUX_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup DMAMUX_LL_Exported_Functions DMAMUX Exported Functions + * @{ + */ + +/** @defgroup DMAMUX_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Set DMAMUX request ID for DMAMUX Channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 13 are mapped to DMA2 channel 1 to 7. + * @rmtoll CxCR DMAREQ_ID LL_DMAMUX_SetRequestID + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @param Request This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_MEM2MEM + * @arg @ref LL_DMAMUX_REQ_GENERATOR0 + * @arg @ref LL_DMAMUX_REQ_GENERATOR1 + * @arg @ref LL_DMAMUX_REQ_GENERATOR2 + * @arg @ref LL_DMAMUX_REQ_GENERATOR3 + * @arg @ref LL_DMAMUX_REQ_ADC1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM6_UP + * @arg @ref LL_DMAMUX_REQ_TIM7_UP + * @arg @ref LL_DMAMUX_REQ_SPI1_RX + * @arg @ref LL_DMAMUX_REQ_SPI1_TX + * @arg @ref LL_DMAMUX_REQ_SPI2_RX + * @arg @ref LL_DMAMUX_REQ_SPI2_TX + * @arg @ref LL_DMAMUX_REQ_SPI3_RX + * @arg @ref LL_DMAMUX_REQ_SPI3_TX + * @arg @ref LL_DMAMUX_REQ_I2C1_RX + * @arg @ref LL_DMAMUX_REQ_I2C1_TX + * @arg @ref LL_DMAMUX_REQ_I2C2_RX + * @arg @ref LL_DMAMUX_REQ_I2C2_TX + * @arg @ref LL_DMAMUX_REQ_I2C3_RX + * @arg @ref LL_DMAMUX_REQ_I2C3_TX + * @arg @ref LL_DMAMUX_REQ_I2C4_RX + * @arg @ref LL_DMAMUX_REQ_I2C4_TX + * @arg @ref LL_DMAMUX_REQ_USART1_RX + * @arg @ref LL_DMAMUX_REQ_USART1_TX + * @arg @ref LL_DMAMUX_REQ_USART2_RX + * @arg @ref LL_DMAMUX_REQ_USART2_TX + * @arg @ref LL_DMAMUX_REQ_USART3_RX + * @arg @ref LL_DMAMUX_REQ_USART3_TX + * @arg @ref LL_DMAMUX_REQ_UART4_RX + * @arg @ref LL_DMAMUX_REQ_UART4_TX + * @arg @ref LL_DMAMUX_REQ_UART5_RX + * @arg @ref LL_DMAMUX_REQ_UART5_TX + * @arg @ref LL_DMAMUX_REQ_LPUART1_RX + * @arg @ref LL_DMAMUX_REQ_LPUART1_TX + * @arg @ref LL_DMAMUX_REQ_SAI1_A + * @arg @ref LL_DMAMUX_REQ_SAI1_B + * @arg @ref LL_DMAMUX_REQ_SAI2_A + * @arg @ref LL_DMAMUX_REQ_SAI2_B + * @arg @ref LL_DMAMUX_REQ_OSPI1 + * @arg @ref LL_DMAMUX_REQ_OSPI2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM1_UP + * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM1_COM + * @arg @ref LL_DMAMUX_REQ_TIM8_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM8_UP + * @arg @ref LL_DMAMUX_REQ_TIM8_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM8_COM + * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM2_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM3_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM4_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM4_UP + * @arg @ref LL_DMAMUX_REQ_TIM5_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM5_UP + * @arg @ref LL_DMAMUX_REQ_TIM5_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM15_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM15_UP + * @arg @ref LL_DMAMUX_REQ_TIM15_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM15_COM + * @arg @ref LL_DMAMUX_REQ_TIM16_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM16_UP + * @arg @ref LL_DMAMUX_REQ_TIM17_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM17_UP + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT0 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT1 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT2 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT3 + * @arg @ref LL_DMAMUX_REQ_DCMI + * @arg @ref LL_DMAMUX_REQ_AES_IN + * @arg @ref LL_DMAMUX_REQ_AES_OUT + * @arg @ref LL_DMAMUX_REQ_HASH_IN + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetRequestID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t Request) +{ + (void)(DMAMUXx); + MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_DMAREQ_ID, Request); +} + +/** + * @brief Get DMAMUX request ID for DMAMUX Channel x. + * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. + * DMAMUX channel 7 to 13 are mapped to DMA2 channel 1 to 7. + * @rmtoll CxCR DMAREQ_ID LL_DMAMUX_GetRequestID + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_MEM2MEM + * @arg @ref LL_DMAMUX_REQ_GENERATOR0 + * @arg @ref LL_DMAMUX_REQ_GENERATOR1 + * @arg @ref LL_DMAMUX_REQ_GENERATOR2 + * @arg @ref LL_DMAMUX_REQ_GENERATOR3 + * @arg @ref LL_DMAMUX_REQ_ADC1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH1 + * @arg @ref LL_DMAMUX_REQ_DAC1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM6_UP + * @arg @ref LL_DMAMUX_REQ_TIM7_UP + * @arg @ref LL_DMAMUX_REQ_SPI1_RX + * @arg @ref LL_DMAMUX_REQ_SPI1_TX + * @arg @ref LL_DMAMUX_REQ_SPI2_RX + * @arg @ref LL_DMAMUX_REQ_SPI2_TX + * @arg @ref LL_DMAMUX_REQ_SPI3_RX + * @arg @ref LL_DMAMUX_REQ_SPI3_TX + * @arg @ref LL_DMAMUX_REQ_I2C1_RX + * @arg @ref LL_DMAMUX_REQ_I2C1_TX + * @arg @ref LL_DMAMUX_REQ_I2C2_RX + * @arg @ref LL_DMAMUX_REQ_I2C2_TX + * @arg @ref LL_DMAMUX_REQ_I2C3_RX + * @arg @ref LL_DMAMUX_REQ_I2C3_TX + * @arg @ref LL_DMAMUX_REQ_I2C4_RX + * @arg @ref LL_DMAMUX_REQ_I2C4_TX + * @arg @ref LL_DMAMUX_REQ_USART1_RX + * @arg @ref LL_DMAMUX_REQ_USART1_TX + * @arg @ref LL_DMAMUX_REQ_USART2_RX + * @arg @ref LL_DMAMUX_REQ_USART2_TX + * @arg @ref LL_DMAMUX_REQ_USART3_RX + * @arg @ref LL_DMAMUX_REQ_USART3_TX + * @arg @ref LL_DMAMUX_REQ_UART4_RX + * @arg @ref LL_DMAMUX_REQ_UART4_TX + * @arg @ref LL_DMAMUX_REQ_UART5_RX + * @arg @ref LL_DMAMUX_REQ_UART5_TX + * @arg @ref LL_DMAMUX_REQ_LPUART1_RX + * @arg @ref LL_DMAMUX_REQ_LPUART1_TX + * @arg @ref LL_DMAMUX_REQ_SAI1_A + * @arg @ref LL_DMAMUX_REQ_SAI1_B + * @arg @ref LL_DMAMUX_REQ_SAI2_A + * @arg @ref LL_DMAMUX_REQ_SAI2_B + * @arg @ref LL_DMAMUX_REQ_OSPI1 + * @arg @ref LL_DMAMUX_REQ_OSPI2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM1_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM1_UP + * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM1_COM + * @arg @ref LL_DMAMUX_REQ_TIM8_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM8_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM8_UP + * @arg @ref LL_DMAMUX_REQ_TIM8_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM8_COM + * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM2_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM3_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM3_UP + * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM4_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM4_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM4_UP + * @arg @ref LL_DMAMUX_REQ_TIM5_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH2 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH3 + * @arg @ref LL_DMAMUX_REQ_TIM5_CH4 + * @arg @ref LL_DMAMUX_REQ_TIM5_UP + * @arg @ref LL_DMAMUX_REQ_TIM5_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM15_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM15_UP + * @arg @ref LL_DMAMUX_REQ_TIM15_TRIG + * @arg @ref LL_DMAMUX_REQ_TIM15_COM + * @arg @ref LL_DMAMUX_REQ_TIM16_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM16_UP + * @arg @ref LL_DMAMUX_REQ_TIM17_CH1 + * @arg @ref LL_DMAMUX_REQ_TIM17_UP + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT0 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT1 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT2 + * @arg @ref LL_DMAMUX_REQ_DFSDM1_FLT3 + * @arg @ref LL_DMAMUX_REQ_DCMI + * @arg @ref LL_DMAMUX_REQ_AES_IN + * @arg @ref LL_DMAMUX_REQ_AES_OUT + * @arg @ref LL_DMAMUX_REQ_HASH_IN + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return (uint32_t)(READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_DMAREQ_ID)); +} + +/** + * @brief Set the number of DMA request that will be autorized after a synchronization event and/or the number of DMA request needed to generate an event. + * @rmtoll CxCR NBREQ LL_DMAMUX_SetSyncRequestNb + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @param RequestNb This parameter must be a value between Min_Data = 1 and Max_Data = 32. + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetSyncRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t RequestNb) +{ + (void)(DMAMUXx); + MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_NBREQ, ((RequestNb - 1U) << DMAMUX_CxCR_NBREQ_Pos)); +} + +/** + * @brief Get the number of DMA request that will be autorized after a synchronization event and/or the number of DMA request needed to generate an event. + * @rmtoll CxCR NBREQ LL_DMAMUX_GetSyncRequestNb + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval Between Min_Data = 1 and Max_Data = 32 + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return (uint32_t)(((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_NBREQ)) >> DMAMUX_CxCR_NBREQ_Pos) + 1U); +} + +/** + * @brief Set the polarity of the signal on which the DMA request is synchronized. + * @rmtoll CxCR SPOL LL_DMAMUX_SetSyncPolarity + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_SYNC_NO_EVENT + * @arg @ref LL_DMAMUX_SYNC_POL_RISING + * @arg @ref LL_DMAMUX_SYNC_POL_FALLING + * @arg @ref LL_DMAMUX_SYNC_POL_RISING_FALLING + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetSyncPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t Polarity) +{ + (void)(DMAMUXx); + MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SPOL, Polarity); +} + +/** + * @brief Get the polarity of the signal on which the DMA request is synchronized. + * @rmtoll CxCR SPOL LL_DMAMUX_GetSyncPolarity + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_SYNC_NO_EVENT + * @arg @ref LL_DMAMUX_SYNC_POL_RISING + * @arg @ref LL_DMAMUX_SYNC_POL_FALLING + * @arg @ref LL_DMAMUX_SYNC_POL_RISING_FALLING + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return (uint32_t)(READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SPOL)); +} + +/** + * @brief Enable the Event Generation on DMAMUX channel x. + * @rmtoll CxCR EGE LL_DMAMUX_EnableEventGeneration + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_EnableEventGeneration(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + SET_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_EGE); +} + +/** + * @brief Disable the Event Generation on DMAMUX channel x. + * @rmtoll CxCR EGE LL_DMAMUX_DisableEventGeneration + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_DisableEventGeneration(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + CLEAR_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_EGE); +} + +/** + * @brief Check if the Event Generation on DMAMUX channel x is enabled or disabled. + * @rmtoll CxCR EGE LL_DMAMUX_IsEnabledEventGeneration + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledEventGeneration(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return ((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_EGE) == (DMAMUX_CxCR_EGE))? 1UL : 0UL); +} + +/** + * @brief Enable the synchronization mode. + * @rmtoll CxCR SE LL_DMAMUX_EnableSync + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_EnableSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + SET_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SE); +} + +/** + * @brief Disable the synchronization mode. + * @rmtoll CxCR SE LL_DMAMUX_DisableSync + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_DisableSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + CLEAR_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SE); +} + +/** + * @brief Check if the synchronization mode is enabled or disabled. + * @rmtoll CxCR SE LL_DMAMUX_IsEnabledSync + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledSync(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return ((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SE) == (DMAMUX_CxCR_SE))? 1UL : 0UL); +} + +/** + * @brief Set DMAMUX synchronization ID on DMAMUX Channel x. + * @rmtoll CxCR SYNC_ID LL_DMAMUX_SetSyncID + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @param SyncID This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE0 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE1 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE2 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE3 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE4 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE5 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE6 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE7 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE8 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE9 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE10 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE11 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE12 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE13 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE14 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE15 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH0 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH1 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH2 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH3 + * @arg @ref LL_DMAMUX_SYNC_LPTIM1_OUT + * @arg @ref LL_DMAMUX_SYNC_LPTIM2_OUT + * @arg @ref LL_DMAMUX_SYNC_DSI_TE + * @arg @ref LL_DMAMUX_SYNC_DSI_REFRESH_END + * @arg @ref LL_DMAMUX_SYNC_DMA2D_TX_END + * @arg @ref LL_DMAMUX_SYNC_LTDC_LINE_IT + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetSyncID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel, uint32_t SyncID) +{ + (void)(DMAMUXx); + MODIFY_REG((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SYNC_ID, SyncID); +} + +/** + * @brief Get DMAMUX synchronization ID on DMAMUX Channel x. + * @rmtoll CxCR SYNC_ID LL_DMAMUX_GetSyncID + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE0 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE1 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE2 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE3 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE4 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE5 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE6 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE7 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE8 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE9 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE10 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE11 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE12 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE13 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE14 + * @arg @ref LL_DMAMUX_SYNC_EXTI_LINE15 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH0 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH1 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH2 + * @arg @ref LL_DMAMUX_SYNC_DMAMUX_CH3 + * @arg @ref LL_DMAMUX_SYNC_LPTIM1_OUT + * @arg @ref LL_DMAMUX_SYNC_LPTIM2_OUT + * @arg @ref LL_DMAMUX_SYNC_DSI_TE + * @arg @ref LL_DMAMUX_SYNC_DSI_REFRESH_END + * @arg @ref LL_DMAMUX_SYNC_DMA2D_TX_END + * @arg @ref LL_DMAMUX_SYNC_LTDC_LINE_IT + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetSyncID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return (uint32_t)(READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SYNC_ID)); +} + +/** + * @brief Enable the Request Generator. + * @rmtoll RGxCR GE LL_DMAMUX_EnableRequestGen + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_EnableRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + SET_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GE); +} + +/** + * @brief Disable the Request Generator. + * @rmtoll RGxCR GE LL_DMAMUX_DisableRequestGen + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_DisableRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + CLEAR_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GE); +} + +/** + * @brief Check if the Request Generator is enabled or disabled. + * @rmtoll RGxCR GE LL_DMAMUX_IsEnabledRequestGen + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledRequestGen(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + return ((READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GE) == (DMAMUX_RGxCR_GE))? 1UL : 0UL); +} + +/** + * @brief Set the polarity of the signal on which the DMA request is generated. + * @rmtoll RGxCR GPOL LL_DMAMUX_SetRequestGenPolarity + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_NO_EVENT + * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING + * @arg @ref LL_DMAMUX_REQ_GEN_POL_FALLING + * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING_FALLING + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetRequestGenPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, uint32_t Polarity) +{ + (void)(DMAMUXx); + MODIFY_REG(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GPOL, Polarity); +} + +/** + * @brief Get the polarity of the signal on which the DMA request is generated. + * @rmtoll RGxCR GPOL LL_DMAMUX_GetRequestGenPolarity + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_NO_EVENT + * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING + * @arg @ref LL_DMAMUX_REQ_GEN_POL_FALLING + * @arg @ref LL_DMAMUX_REQ_GEN_POL_RISING_FALLING + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestGenPolarity(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + return (uint32_t)(READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GPOL)); +} + +/** + * @brief Set the number of DMA request that will be autorized after a generation event. + * @note This field can only be written when Generator is disabled. + * @rmtoll RGxCR GNBREQ LL_DMAMUX_SetGenRequestNb + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @param RequestNb This parameter must be a value between Min_Data = 1 and Max_Data = 32. + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetGenRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, uint32_t RequestNb) +{ + (void)(DMAMUXx); + MODIFY_REG(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GNBREQ, (RequestNb - 1U) << DMAMUX_RGxCR_GNBREQ_Pos); +} + +/** + * @brief Get the number of DMA request that will be autorized after a generation event. + * @rmtoll RGxCR GNBREQ LL_DMAMUX_GetGenRequestNb + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval Between Min_Data = 1 and Max_Data = 32 + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetGenRequestNb(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + return (uint32_t)((READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_GNBREQ) >> DMAMUX_RGxCR_GNBREQ_Pos) + 1U); +} + +/** + * @brief Set DMAMUX external Request Signal ID on DMAMUX Request Generation Trigger Event Channel x. + * @rmtoll RGxCR SIG_ID LL_DMAMUX_SetRequestSignalID + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @param RequestSignalID This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE0 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE1 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE2 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE3 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE4 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE5 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE6 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE7 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE8 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE9 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE10 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE11 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE12 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE13 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE14 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE15 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH0 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH1 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH2 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH3 + * @arg @ref LL_DMAMUX_REQ_GEN_LPTIM1_OUT + * @arg @ref LL_DMAMUX_REQ_GEN_LPTIM2_OUT + * @arg @ref LL_DMAMUX_REQ_GEN_DSI_TE + * @arg @ref LL_DMAMUX_REQ_GEN_DSI_REFRESH_END + * @arg @ref LL_DMAMUX_REQ_GEN_DMA2D_TX_END + * @arg @ref LL_DMAMUX_REQ_GEN_LTDC_LINE_IT + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_SetRequestSignalID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel, uint32_t RequestSignalID) +{ + (void)(DMAMUXx); + MODIFY_REG(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_SIG_ID, RequestSignalID); +} + +/** + * @brief Get DMAMUX external Request Signal ID set on DMAMUX Channel x. + * @rmtoll RGxCR SIG_ID LL_DMAMUX_GetRequestSignalID + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE0 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE1 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE2 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE3 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE4 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE5 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE6 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE7 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE8 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE9 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE10 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE11 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE12 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE13 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE14 + * @arg @ref LL_DMAMUX_REQ_GEN_EXTI_LINE15 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH0 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH1 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH2 + * @arg @ref LL_DMAMUX_REQ_GEN_DMAMUX_CH3 + * @arg @ref LL_DMAMUX_REQ_GEN_LPTIM1_OUT + * @arg @ref LL_DMAMUX_REQ_GEN_LPTIM2_OUT + * @arg @ref LL_DMAMUX_REQ_GEN_DSI_TE + * @arg @ref LL_DMAMUX_REQ_GEN_DSI_REFRESH_END + * @arg @ref LL_DMAMUX_REQ_GEN_DMA2D_TX_END + * @arg @ref LL_DMAMUX_REQ_GEN_LTDC_LINE_IT + */ +__STATIC_INLINE uint32_t LL_DMAMUX_GetRequestSignalID(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + return (uint32_t)(READ_BIT(((DMAMUX_RequestGen_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_RequestGenerator0 + (DMAMUX_RGCR_SIZE * (RequestGenChannel)))))->RGCR, DMAMUX_RGxCR_SIG_ID)); +} + +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Synchronization Event Overrun Flag Channel 0. + * @rmtoll CSR SOF0 LL_DMAMUX_IsActiveFlag_SO0 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO0(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF0) == (DMAMUX_CSR_SOF0)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 1. + * @rmtoll CSR SOF1 LL_DMAMUX_IsActiveFlag_SO1 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO1(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF1) == (DMAMUX_CSR_SOF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 2. + * @rmtoll CSR SOF2 LL_DMAMUX_IsActiveFlag_SO2 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO2(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF2) == (DMAMUX_CSR_SOF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 3. + * @rmtoll CSR SOF3 LL_DMAMUX_IsActiveFlag_SO3 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO3(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF3) == (DMAMUX_CSR_SOF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 4. + * @rmtoll CSR SOF4 LL_DMAMUX_IsActiveFlag_SO4 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO4(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF4) == (DMAMUX_CSR_SOF4)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 5. + * @rmtoll CSR SOF5 LL_DMAMUX_IsActiveFlag_SO5 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO5(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF5) == (DMAMUX_CSR_SOF5)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 6. + * @rmtoll CSR SOF6 LL_DMAMUX_IsActiveFlag_SO6 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO6(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF6) == (DMAMUX_CSR_SOF6)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 7. + * @rmtoll CSR SOF7 LL_DMAMUX_IsActiveFlag_SO7 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO7(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF7) == (DMAMUX_CSR_SOF7)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 8. + * @rmtoll CSR SOF8 LL_DMAMUX_IsActiveFlag_SO8 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO8(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF8) == (DMAMUX_CSR_SOF8)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 9. + * @rmtoll CSR SOF9 LL_DMAMUX_IsActiveFlag_SO9 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO9(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF9) == (DMAMUX_CSR_SOF9)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 10. + * @rmtoll CSR SOF10 LL_DMAMUX_IsActiveFlag_SO10 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO10(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF10) == (DMAMUX_CSR_SOF10)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 11. + * @rmtoll CSR SOF11 LL_DMAMUX_IsActiveFlag_SO11 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO11(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF11) == (DMAMUX_CSR_SOF11)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 12. + * @rmtoll CSR SOF12 LL_DMAMUX_IsActiveFlag_SO12 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO12(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF12) == (DMAMUX_CSR_SOF12)) ? 1UL : 0UL); +} + +/** + * @brief Get Synchronization Event Overrun Flag Channel 13. + * @rmtoll CSR SOF13 LL_DMAMUX_IsActiveFlag_SO13 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_SO13(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_ChannelStatus->CSR, DMAMUX_CSR_SOF13) == (DMAMUX_CSR_SOF13)) ? 1UL : 0UL); +} + +/** + * @brief Get Request Generator 0 Trigger Event Overrun Flag. + * @rmtoll RGSR OF0 LL_DMAMUX_IsActiveFlag_RGO0 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO0(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF0) == (DMAMUX_RGSR_OF0)) ? 1UL : 0UL); +} + +/** + * @brief Get Request Generator 1 Trigger Event Overrun Flag. + * @rmtoll RGSR OF1 LL_DMAMUX_IsActiveFlag_RGO1 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO1(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF1) == (DMAMUX_RGSR_OF1)) ? 1UL : 0UL); +} + +/** + * @brief Get Request Generator 2 Trigger Event Overrun Flag. + * @rmtoll RGSR OF2 LL_DMAMUX_IsActiveFlag_RGO2 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO2(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF2) == (DMAMUX_RGSR_OF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Request Generator 3 Trigger Event Overrun Flag. + * @rmtoll RGSR OF3 LL_DMAMUX_IsActiveFlag_RGO3 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsActiveFlag_RGO3(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + return ((READ_BIT(DMAMUX1_RequestGenStatus->RGSR, DMAMUX_RGSR_OF3) == (DMAMUX_RGSR_OF3)) ? 1UL : 0UL); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 0. + * @rmtoll CFR CSOF0 LL_DMAMUX_ClearFlag_SO0 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO0(DMAMUX_Channel_TypeDef * DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF0); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 1. + * @rmtoll CFR CSOF1 LL_DMAMUX_ClearFlag_SO1 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO1(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF1); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 2. + * @rmtoll CFR CSOF2 LL_DMAMUX_ClearFlag_SO2 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO2(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF2); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 3. + * @rmtoll CFR CSOF3 LL_DMAMUX_ClearFlag_SO3 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO3(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF3); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 4. + * @rmtoll CFR CSOF4 LL_DMAMUX_ClearFlag_SO4 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO4(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF4); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 5. + * @rmtoll CFR CSOF5 LL_DMAMUX_ClearFlag_SO5 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO5(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF5); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 6. + * @rmtoll CFR CSOF6 LL_DMAMUX_ClearFlag_SO6 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO6(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF6); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 7. + * @rmtoll CFR CSOF7 LL_DMAMUX_ClearFlag_SO7 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO7(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF7); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 8. + * @rmtoll CFR CSOF8 LL_DMAMUX_ClearFlag_SO8 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO8(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF8); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 9. + * @rmtoll CFR CSOF9 LL_DMAMUX_ClearFlag_SO9 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO9(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF9); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 10. + * @rmtoll CFR CSOF10 LL_DMAMUX_ClearFlag_SO10 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO10(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF10); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 11. + * @rmtoll CFR CSOF11 LL_DMAMUX_ClearFlag_SO11 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO11(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF11); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 12. + * @rmtoll CFR CSOF12 LL_DMAMUX_ClearFlag_SO12 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO12(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF12); +} + +/** + * @brief Clear Synchronization Event Overrun Flag Channel 13. + * @rmtoll CFR CSOF13 LL_DMAMUX_ClearFlag_SO13 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_SO13(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_ChannelStatus->CFR, DMAMUX_CFR_CSOF13); +} + +/** + * @brief Clear Request Generator 0 Trigger Event Overrun Flag. + * @rmtoll RGCFR COF0 LL_DMAMUX_ClearFlag_RGO0 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO0(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF0); +} + +/** + * @brief Clear Request Generator 1 Trigger Event Overrun Flag. + * @rmtoll RGCFR COF1 LL_DMAMUX_ClearFlag_RGO1 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO1(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF1); +} + +/** + * @brief Clear Request Generator 2 Trigger Event Overrun Flag. + * @rmtoll RGCFR COF2 LL_DMAMUX_ClearFlag_RGO2 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO2(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF2); +} + +/** + * @brief Clear Request Generator 3 Trigger Event Overrun Flag. + * @rmtoll RGCFR COF3 LL_DMAMUX_ClearFlag_RGO3 + * @param DMAMUXx DMAMUXx DMAMUXx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_ClearFlag_RGO3(DMAMUX_Channel_TypeDef *DMAMUXx) +{ + (void)(DMAMUXx); + SET_BIT(DMAMUX1_RequestGenStatus->RGCFR, DMAMUX_RGCFR_COF3); +} + +/** + * @} + */ + +/** @defgroup DMAMUX_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable the Synchronization Event Overrun Interrupt on DMAMUX channel x. + * @rmtoll CxCR SOIE LL_DMAMUX_EnableIT_SO + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_EnableIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + SET_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SOIE); +} + +/** + * @brief Disable the Synchronization Event Overrun Interrupt on DMAMUX channel x. + * @rmtoll CxCR SOIE LL_DMAMUX_DisableIT_SO + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_DisableIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + CLEAR_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SOIE); +} + +/** + * @brief Check if the Synchronization Event Overrun Interrupt on DMAMUX channel x is enabled or disabled. + * @rmtoll CxCR SOIE LL_DMAMUX_IsEnabledIT_SO + * @param DMAMUXx DMAMUXx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_CHANNEL_0 + * @arg @ref LL_DMAMUX_CHANNEL_1 + * @arg @ref LL_DMAMUX_CHANNEL_2 + * @arg @ref LL_DMAMUX_CHANNEL_3 + * @arg @ref LL_DMAMUX_CHANNEL_4 + * @arg @ref LL_DMAMUX_CHANNEL_5 + * @arg @ref LL_DMAMUX_CHANNEL_6 + * @arg @ref LL_DMAMUX_CHANNEL_7 + * @arg @ref LL_DMAMUX_CHANNEL_8 + * @arg @ref LL_DMAMUX_CHANNEL_9 + * @arg @ref LL_DMAMUX_CHANNEL_10 + * @arg @ref LL_DMAMUX_CHANNEL_11 + * @arg @ref LL_DMAMUX_CHANNEL_12 + * @arg @ref LL_DMAMUX_CHANNEL_13 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_SO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t Channel) +{ + (void)(DMAMUXx); + return (((READ_BIT((DMAMUX1_Channel0 + Channel)->CCR, DMAMUX_CxCR_SOIE)) == (DMAMUX_CxCR_SOIE))? 1UL : 0UL); +} + +/** + * @brief Enable the Request Generation Trigger Event Overrun Interrupt on DMAMUX channel x. + * @rmtoll RGxCR OIE LL_DMAMUX_EnableIT_RGO + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_EnableIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + SET_BIT((DMAMUX1_RequestGenerator0 + RequestGenChannel)->RGCR, DMAMUX_RGxCR_OIE); +} + +/** + * @brief Disable the Request Generation Trigger Event Overrun Interrupt on DMAMUX channel x. + * @rmtoll RGxCR OIE LL_DMAMUX_DisableIT_RGO + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval None + */ +__STATIC_INLINE void LL_DMAMUX_DisableIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + CLEAR_BIT((DMAMUX1_RequestGenerator0 + RequestGenChannel)->RGCR, DMAMUX_RGxCR_OIE); +} + +/** + * @brief Check if the Request Generation Trigger Event Overrun Interrupt on DMAMUX channel x is enabled or disabled. + * @rmtoll RGxCR OIE LL_DMAMUX_IsEnabledIT_RGO + * @param DMAMUXx DMAMUXx Instance + * @param RequestGenChannel This parameter can be one of the following values: + * @arg @ref LL_DMAMUX_REQ_GEN_0 + * @arg @ref LL_DMAMUX_REQ_GEN_1 + * @arg @ref LL_DMAMUX_REQ_GEN_2 + * @arg @ref LL_DMAMUX_REQ_GEN_3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMAMUX_IsEnabledIT_RGO(DMAMUX_Channel_TypeDef *DMAMUXx, uint32_t RequestGenChannel) +{ + (void)(DMAMUXx); + return ((READ_BIT((DMAMUX1_RequestGenerator0 + RequestGenChannel)->RGCR, DMAMUX_RGxCR_OIE) == (DMAMUX_RGxCR_OIE))? 1UL : 0UL); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMAMUX1 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_DMAMUX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_exti.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_exti.h new file mode 100644 index 0000000..6e06963 --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_exti.h @@ -0,0 +1,1361 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_exti.h + * @author MCD Application Team + * @brief Header file of EXTI LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_EXTI_H +#define STM32L4xx_LL_EXTI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined (EXTI) + +/** @defgroup EXTI_LL EXTI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private Macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_Private_Macros EXTI Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_ES_INIT EXTI Exported Init structure + * @{ + */ +typedef struct +{ + + uint32_t Line_0_31; /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 0 to 31 + This parameter can be any combination of @ref EXTI_LL_EC_LINE */ + + uint32_t Line_32_63; /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 32 to 63 + This parameter can be any combination of @ref EXTI_LL_EC_LINE */ + + FunctionalState LineCommand; /*!< Specifies the new state of the selected EXTI lines. + This parameter can be set either to ENABLE or DISABLE */ + + uint8_t Mode; /*!< Specifies the mode for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_MODE. */ + + uint8_t Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_TRIGGER. */ +} LL_EXTI_InitTypeDef; + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Constants EXTI Exported Constants + * @{ + */ + +/** @defgroup EXTI_LL_EC_LINE LINE + * @{ + */ +#define LL_EXTI_LINE_0 EXTI_IMR1_IM0 /*!< Extended line 0 */ +#define LL_EXTI_LINE_1 EXTI_IMR1_IM1 /*!< Extended line 1 */ +#define LL_EXTI_LINE_2 EXTI_IMR1_IM2 /*!< Extended line 2 */ +#define LL_EXTI_LINE_3 EXTI_IMR1_IM3 /*!< Extended line 3 */ +#define LL_EXTI_LINE_4 EXTI_IMR1_IM4 /*!< Extended line 4 */ +#define LL_EXTI_LINE_5 EXTI_IMR1_IM5 /*!< Extended line 5 */ +#define LL_EXTI_LINE_6 EXTI_IMR1_IM6 /*!< Extended line 6 */ +#define LL_EXTI_LINE_7 EXTI_IMR1_IM7 /*!< Extended line 7 */ +#define LL_EXTI_LINE_8 EXTI_IMR1_IM8 /*!< Extended line 8 */ +#define LL_EXTI_LINE_9 EXTI_IMR1_IM9 /*!< Extended line 9 */ +#define LL_EXTI_LINE_10 EXTI_IMR1_IM10 /*!< Extended line 10 */ +#define LL_EXTI_LINE_11 EXTI_IMR1_IM11 /*!< Extended line 11 */ +#define LL_EXTI_LINE_12 EXTI_IMR1_IM12 /*!< Extended line 12 */ +#define LL_EXTI_LINE_13 EXTI_IMR1_IM13 /*!< Extended line 13 */ +#define LL_EXTI_LINE_14 EXTI_IMR1_IM14 /*!< Extended line 14 */ +#define LL_EXTI_LINE_15 EXTI_IMR1_IM15 /*!< Extended line 15 */ +#if defined(EXTI_IMR1_IM16) +#define LL_EXTI_LINE_16 EXTI_IMR1_IM16 /*!< Extended line 16 */ +#endif +#define LL_EXTI_LINE_17 EXTI_IMR1_IM17 /*!< Extended line 17 */ +#if defined(EXTI_IMR1_IM18) +#define LL_EXTI_LINE_18 EXTI_IMR1_IM18 /*!< Extended line 18 */ +#endif +#define LL_EXTI_LINE_19 EXTI_IMR1_IM19 /*!< Extended line 19 */ +#if defined(EXTI_IMR1_IM20) +#define LL_EXTI_LINE_20 EXTI_IMR1_IM20 /*!< Extended line 20 */ +#endif +#if defined(EXTI_IMR1_IM21) +#define LL_EXTI_LINE_21 EXTI_IMR1_IM21 /*!< Extended line 21 */ +#endif +#if defined(EXTI_IMR1_IM22) +#define LL_EXTI_LINE_22 EXTI_IMR1_IM22 /*!< Extended line 22 */ +#endif +#define LL_EXTI_LINE_23 EXTI_IMR1_IM23 /*!< Extended line 23 */ +#if defined(EXTI_IMR1_IM24) +#define LL_EXTI_LINE_24 EXTI_IMR1_IM24 /*!< Extended line 24 */ +#endif +#if defined(EXTI_IMR1_IM25) +#define LL_EXTI_LINE_25 EXTI_IMR1_IM25 /*!< Extended line 25 */ +#endif +#if defined(EXTI_IMR1_IM26) +#define LL_EXTI_LINE_26 EXTI_IMR1_IM26 /*!< Extended line 26 */ +#endif +#if defined(EXTI_IMR1_IM27) +#define LL_EXTI_LINE_27 EXTI_IMR1_IM27 /*!< Extended line 27 */ +#endif +#if defined(EXTI_IMR1_IM28) +#define LL_EXTI_LINE_28 EXTI_IMR1_IM28 /*!< Extended line 28 */ +#endif +#if defined(EXTI_IMR1_IM29) +#define LL_EXTI_LINE_29 EXTI_IMR1_IM29 /*!< Extended line 29 */ +#endif +#if defined(EXTI_IMR1_IM30) +#define LL_EXTI_LINE_30 EXTI_IMR1_IM30 /*!< Extended line 30 */ +#endif +#if defined(EXTI_IMR1_IM31) +#define LL_EXTI_LINE_31 EXTI_IMR1_IM31 /*!< Extended line 31 */ +#endif +#define LL_EXTI_LINE_ALL_0_31 EXTI_IMR1_IM /*!< All Extended line not reserved*/ + +#define LL_EXTI_LINE_32 EXTI_IMR2_IM32 /*!< Extended line 32 */ +#if defined(EXTI_IMR2_IM33) +#define LL_EXTI_LINE_33 EXTI_IMR2_IM33 /*!< Extended line 33 */ +#endif +#if defined(EXTI_IMR2_IM34) +#define LL_EXTI_LINE_34 EXTI_IMR2_IM34 /*!< Extended line 34 */ +#endif +#if defined(EXTI_IMR2_IM35) +#define LL_EXTI_LINE_35 EXTI_IMR2_IM35 /*!< Extended line 35 */ +#endif +#if defined(EXTI_IMR2_IM36) +#define LL_EXTI_LINE_36 EXTI_IMR2_IM36 /*!< Extended line 36 */ +#endif +#if defined(EXTI_IMR2_IM37) +#define LL_EXTI_LINE_37 EXTI_IMR2_IM37 /*!< Extended line 37 */ +#endif +#if defined(EXTI_IMR2_IM38) +#define LL_EXTI_LINE_38 EXTI_IMR2_IM38 /*!< Extended line 38 */ +#endif +#if defined(EXTI_IMR2_IM39) +#define LL_EXTI_LINE_39 EXTI_IMR2_IM39 /*!< Extended line 39 */ +#endif +#if defined(EXTI_IMR2_IM40) +#define LL_EXTI_LINE_40 EXTI_IMR2_IM40 /*!< Extended line 40 */ +#endif +#define LL_EXTI_LINE_ALL_32_63 EXTI_IMR2_IM /*!< All Extended line not reserved*/ + + +#define LL_EXTI_LINE_ALL (0xFFFFFFFFU) /*!< All Extended line */ + +#if defined(USE_FULL_LL_DRIVER) +#define LL_EXTI_LINE_NONE (0x00000000U) /*!< None Extended line */ +#endif /*USE_FULL_LL_DRIVER*/ + +/** + * @} + */ + + +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup EXTI_LL_EC_MODE Mode + * @{ + */ +#define LL_EXTI_MODE_IT ((uint8_t)0x00U) /*!< Interrupt Mode */ +#define LL_EXTI_MODE_EVENT ((uint8_t)0x01U) /*!< Event Mode */ +#define LL_EXTI_MODE_IT_EVENT ((uint8_t)0x02U) /*!< Interrupt & Event Mode */ +/** + * @} + */ + +/** @defgroup EXTI_LL_EC_TRIGGER Edge Trigger + * @{ + */ +#define LL_EXTI_TRIGGER_NONE ((uint8_t)0x00U) /*!< No Trigger Mode */ +#define LL_EXTI_TRIGGER_RISING ((uint8_t)0x01U) /*!< Trigger Rising Mode */ +#define LL_EXTI_TRIGGER_FALLING ((uint8_t)0x02U) /*!< Trigger Falling Mode */ +#define LL_EXTI_TRIGGER_RISING_FALLING ((uint8_t)0x03U) /*!< Trigger Rising & Falling Mode */ + +/** + * @} + */ + + +#endif /*USE_FULL_LL_DRIVER*/ + + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Macros EXTI Exported Macros + * @{ + */ + +/** @defgroup EXTI_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in EXTI register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_EXTI_WriteReg(__REG__, __VALUE__) WRITE_REG(EXTI->__REG__, (__VALUE__)) + +/** + * @brief Read a value in EXTI register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_EXTI_ReadReg(__REG__) READ_REG(EXTI->__REG__) +/** + * @} + */ + + +/** + * @} + */ + + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Functions EXTI Exported Functions + * @{ + */ +/** @defgroup EXTI_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR1 IMx LL_EXTI_EnableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableIT_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->IMR1, ExtiLine); +} +/** + * @brief Enable ExtiLine Interrupt request for Lines in range 32 to 63 + * @note The reset value for the direct lines (lines from 32 to 34, line + * 39) is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR2 IMx LL_EXTI_EnableIT_32_63 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34(*) + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @arg @ref LL_EXTI_LINE_39(*) + * @arg @ref LL_EXTI_LINE_40(*) + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note (*): Available in some devices + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableIT_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->IMR2, ExtiLine); +} + +/** + * @brief Disable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR1 IMx LL_EXTI_DisableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableIT_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->IMR1, ExtiLine); +} + +/** + * @brief Disable ExtiLine Interrupt request for Lines in range 32 to 63 + * @note The reset value for the direct lines (lines from 32 to 34, line + * 39) is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR2 IMx LL_EXTI_DisableIT_32_63 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34(*) + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @arg @ref LL_EXTI_LINE_39(*) + * @arg @ref LL_EXTI_LINE_40(*) + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note (*): Available in some devices + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableIT_32_63(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->IMR2, ExtiLine); +} + +/** + * @brief Indicate if ExtiLine Interrupt request is enabled for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR1 IMx LL_EXTI_IsEnabledIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->IMR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +/** + * @brief Indicate if ExtiLine Interrupt request is enabled for Lines in range 32 to 63 + * @note The reset value for the direct lines (lines from 32 to 34, line + * 39) is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR2 IMx LL_EXTI_IsEnabledIT_32_63 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34(*) + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @arg @ref LL_EXTI_LINE_39(*) + * @arg @ref LL_EXTI_LINE_40(*) + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note (*): Available in some devices + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->IMR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Event_Management Event_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR1 EMx LL_EXTI_EnableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->EMR1, ExtiLine); + +} + +/** + * @brief Enable ExtiLine Event request for Lines in range 32 to 63 + * @rmtoll EMR2 EMx LL_EXTI_EnableEvent_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34(*) + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @arg @ref LL_EXTI_LINE_39(*) + * @arg @ref LL_EXTI_LINE_40(*) + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note (*): Available in some devices + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableEvent_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->EMR2, ExtiLine); +} + +/** + * @brief Disable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR1 EMx LL_EXTI_DisableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->EMR1, ExtiLine); +} + +/** + * @brief Disable ExtiLine Event request for Lines in range 32 to 63 + * @rmtoll EMR2 EMx LL_EXTI_DisableEvent_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34(*) + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @arg @ref LL_EXTI_LINE_39(*) + * @arg @ref LL_EXTI_LINE_40(*) + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note (*): Available in some devices + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableEvent_32_63(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->EMR2, ExtiLine); +} + +/** + * @brief Indicate if ExtiLine Event request is enabled for Lines in range 0 to 31 + * @rmtoll EMR1 EMx LL_EXTI_IsEnabledEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_23 + * @arg @ref LL_EXTI_LINE_24 + * @arg @ref LL_EXTI_LINE_25 + * @arg @ref LL_EXTI_LINE_26 + * @arg @ref LL_EXTI_LINE_27 + * @arg @ref LL_EXTI_LINE_28 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->EMR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); + +} + +/** + * @brief Indicate if ExtiLine Event request is enabled for Lines in range 32 to 63 + * @rmtoll EMR2 EMx LL_EXTI_IsEnabledEvent_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_32 + * @arg @ref LL_EXTI_LINE_33 + * @arg @ref LL_EXTI_LINE_34(*) + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @arg @ref LL_EXTI_LINE_39(*) + * @arg @ref LL_EXTI_LINE_40(*) + * @arg @ref LL_EXTI_LINE_ALL_32_63 + * @note (*): Available in some devices + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->EMR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Rising_Trigger_Management Rising_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR1 RTx LL_EXTI_EnableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->RTSR1, ExtiLine); + +} + +/** + * @brief Enable ExtiLine Rising Edge Trigger for Lines in range 32 to 63 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set.Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR2 RTx LL_EXTI_EnableRisingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableRisingTrig_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->RTSR2, ExtiLine); +} + +/** + * @brief Disable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR1 RTx LL_EXTI_DisableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->RTSR1, ExtiLine); + +} + +/** + * @brief Disable ExtiLine Rising Edge Trigger for Lines in range 32 to 63 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR2 RTx LL_EXTI_DisableRisingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableRisingTrig_32_63(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->RTSR2, ExtiLine); +} + +/** + * @brief Check if rising edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll RTSR1 RTx LL_EXTI_IsEnabledRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->RTSR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +/** + * @brief Check if rising edge trigger is enabled for Lines in range 32 to 63 + * @rmtoll RTSR2 RTx LL_EXTI_IsEnabledRisingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->RTSR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Falling_Trigger_Management Falling_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll FTSR1 FTx LL_EXTI_EnableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->FTSR1, ExtiLine); +} + +/** + * @brief Enable ExtiLine Falling Edge Trigger for Lines in range 32 to 63 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a Falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll FTSR2 FTx LL_EXTI_EnableFallingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableFallingTrig_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->FTSR2, ExtiLine); +} + +/** + * @brief Disable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a Falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for the same interrupt line. + * In this case, both generate a trigger condition. + * @rmtoll FTSR1 FTx LL_EXTI_DisableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->FTSR1, ExtiLine); +} + +/** + * @brief Disable ExtiLine Falling Edge Trigger for Lines in range 32 to 63 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a Falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for the same interrupt line. + * In this case, both generate a trigger condition. + * @rmtoll FTSR2 FTx LL_EXTI_DisableFallingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableFallingTrig_32_63(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->FTSR2, ExtiLine); +} + +/** + * @brief Check if falling edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll FTSR1 FTx LL_EXTI_IsEnabledFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->FTSR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +/** + * @brief Check if falling edge trigger is enabled for Lines in range 32 to 63 + * @rmtoll FTSR2 FTx LL_EXTI_IsEnabledFallingTrig_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->FTSR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Software_Interrupt_Management Software_Interrupt_Management + * @{ + */ + +/** + * @brief Generate a software Interrupt Event for Lines in range 0 to 31 + * @note If the interrupt is enabled on this line in the EXTI_IMR1, writing a 1 to + * this bit when it is at '0' sets the corresponding pending bit in EXTI_PR1 + * resulting in an interrupt request generation. + * This bit is cleared by clearing the corresponding bit in the EXTI_PR1 + * register (by writing a 1 into the bit) + * @rmtoll SWIER1 SWIx LL_EXTI_GenerateSWI_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_GenerateSWI_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->SWIER1, ExtiLine); +} + +/** + * @brief Generate a software Interrupt Event for Lines in range 32 to 63 + * @note If the interrupt is enabled on this line inthe EXTI_IMR2, writing a 1 to + * this bit when it is at '0' sets the corresponding pending bit in EXTI_PR2 + * resulting in an interrupt request generation. + * This bit is cleared by clearing the corresponding bit in the EXTI_PR2 + * register (by writing a 1 into the bit) + * @rmtoll SWIER2 SWIx LL_EXTI_GenerateSWI_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @retval None + */ +__STATIC_INLINE void LL_EXTI_GenerateSWI_32_63(uint32_t ExtiLine) +{ + SET_BIT(EXTI->SWIER2, ExtiLine); +} + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Flag_Management Flag_Management + * @{ + */ + +/** + * @brief Check if the ExtLine Flag is set or not for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR1 PIFx LL_EXTI_IsActiveFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsActiveFlag_0_31(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->PR1, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +/** + * @brief Check if the ExtLine Flag is set or not for Lines in range 32 to 63 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR2 PIFx LL_EXTI_IsActiveFlag_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsActiveFlag_32_63(uint32_t ExtiLine) +{ + return ((READ_BIT(EXTI->PR2, ExtiLine) == (ExtiLine)) ? 1UL : 0UL); +} + +/** + * @brief Read ExtLine Combination Flag for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR1 PIFx LL_EXTI_ReadFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval @note This bit is set when the selected edge event arrives on the interrupt + */ +__STATIC_INLINE uint32_t LL_EXTI_ReadFlag_0_31(uint32_t ExtiLine) +{ + return (uint32_t)(READ_BIT(EXTI->PR1, ExtiLine)); +} + +/** + * @brief Read ExtLine Combination Flag for Lines in range 32 to 63 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR2 PIFx LL_EXTI_ReadFlag_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @retval @note This bit is set when the selected edge event arrives on the interrupt + */ +__STATIC_INLINE uint32_t LL_EXTI_ReadFlag_32_63(uint32_t ExtiLine) +{ + return (uint32_t)(READ_BIT(EXTI->PR2, ExtiLine)); +} + +/** + * @brief Clear ExtLine Flags for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR1 PIFx LL_EXTI_ClearFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_20 + * @arg @ref LL_EXTI_LINE_21 + * @arg @ref LL_EXTI_LINE_22 + * @arg @ref LL_EXTI_LINE_29 + * @arg @ref LL_EXTI_LINE_30 + * @arg @ref LL_EXTI_LINE_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_ClearFlag_0_31(uint32_t ExtiLine) +{ + WRITE_REG(EXTI->PR1, ExtiLine); +} + +/** + * @brief Clear ExtLine Flags for Lines in range 32 to 63 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR2 PIFx LL_EXTI_ClearFlag_32_63 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_35 + * @arg @ref LL_EXTI_LINE_36 + * @arg @ref LL_EXTI_LINE_37 + * @arg @ref LL_EXTI_LINE_38 + * @retval None + */ +__STATIC_INLINE void LL_EXTI_ClearFlag_32_63(uint32_t ExtiLine) +{ + WRITE_REG(EXTI->PR2, ExtiLine); +} + + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct); +uint32_t LL_EXTI_DeInit(void); +void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct); + + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* EXTI */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_EXTI_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_gpio.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_gpio.h new file mode 100644 index 0000000..0285810 --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_gpio.h @@ -0,0 +1,1058 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_gpio.h + * @author MCD Application Team + * @brief Header file of GPIO LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_GPIO_H +#define STM32L4xx_LL_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) + +/** @defgroup GPIO_LL GPIO + * @{ + */ +/** MISRA C:2012 deviation rule has been granted for following rules: + * Rule-18.1_d - Medium: Array pointer `GPIOx' is accessed with index [..,..] + * which may be out of array bounds [..,UNKNOWN] in following APIs: + * LL_GPIO_GetAFPin_0_7 + * LL_GPIO_SetAFPin_0_7 + * LL_GPIO_SetAFPin_8_15 + * LL_GPIO_GetAFPin_8_15 + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_Private_Macros GPIO Private Macros + * @{ + */ + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures + * @{ + */ + +/** + * @brief LL GPIO Init Structure definition + */ +typedef struct +{ + uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_LL_EC_PIN */ + + uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_MODE. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/ + + uint32_t Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_SPEED. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/ + + uint32_t OutputType; /*!< Specifies the operating output type for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_OUTPUT. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/ + + uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_PULL. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/ + + uint32_t Alternate; /*!< Specifies the Peripheral to be connected to the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_AF. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetAFPin_0_7() and LL_GPIO_SetAFPin_8_15().*/ +} LL_GPIO_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants + * @{ + */ + +/** @defgroup GPIO_LL_EC_PIN PIN + * @{ + */ +#define LL_GPIO_PIN_0 GPIO_BSRR_BS0 /*!< Select pin 0 */ +#define LL_GPIO_PIN_1 GPIO_BSRR_BS1 /*!< Select pin 1 */ +#define LL_GPIO_PIN_2 GPIO_BSRR_BS2 /*!< Select pin 2 */ +#define LL_GPIO_PIN_3 GPIO_BSRR_BS3 /*!< Select pin 3 */ +#define LL_GPIO_PIN_4 GPIO_BSRR_BS4 /*!< Select pin 4 */ +#define LL_GPIO_PIN_5 GPIO_BSRR_BS5 /*!< Select pin 5 */ +#define LL_GPIO_PIN_6 GPIO_BSRR_BS6 /*!< Select pin 6 */ +#define LL_GPIO_PIN_7 GPIO_BSRR_BS7 /*!< Select pin 7 */ +#define LL_GPIO_PIN_8 GPIO_BSRR_BS8 /*!< Select pin 8 */ +#define LL_GPIO_PIN_9 GPIO_BSRR_BS9 /*!< Select pin 9 */ +#define LL_GPIO_PIN_10 GPIO_BSRR_BS10 /*!< Select pin 10 */ +#define LL_GPIO_PIN_11 GPIO_BSRR_BS11 /*!< Select pin 11 */ +#define LL_GPIO_PIN_12 GPIO_BSRR_BS12 /*!< Select pin 12 */ +#define LL_GPIO_PIN_13 GPIO_BSRR_BS13 /*!< Select pin 13 */ +#define LL_GPIO_PIN_14 GPIO_BSRR_BS14 /*!< Select pin 14 */ +#define LL_GPIO_PIN_15 GPIO_BSRR_BS15 /*!< Select pin 15 */ +#define LL_GPIO_PIN_ALL (GPIO_BSRR_BS0 | GPIO_BSRR_BS1 | GPIO_BSRR_BS2 | \ + GPIO_BSRR_BS3 | GPIO_BSRR_BS4 | GPIO_BSRR_BS5 | \ + GPIO_BSRR_BS6 | GPIO_BSRR_BS7 | GPIO_BSRR_BS8 | \ + GPIO_BSRR_BS9 | GPIO_BSRR_BS10 | GPIO_BSRR_BS11 | \ + GPIO_BSRR_BS12 | GPIO_BSRR_BS13 | GPIO_BSRR_BS14 | \ + GPIO_BSRR_BS15) /*!< Select all pins */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_MODE Mode + * @{ + */ +#define LL_GPIO_MODE_INPUT (0x00000000U) /*!< Select input mode */ +#define LL_GPIO_MODE_OUTPUT GPIO_MODER_MODE0_0 /*!< Select output mode */ +#define LL_GPIO_MODE_ALTERNATE GPIO_MODER_MODE0_1 /*!< Select alternate function mode */ +#define LL_GPIO_MODE_ANALOG GPIO_MODER_MODE0 /*!< Select analog mode */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_OUTPUT Output Type + * @{ + */ +#define LL_GPIO_OUTPUT_PUSHPULL (0x00000000U) /*!< Select push-pull as output type */ +#define LL_GPIO_OUTPUT_OPENDRAIN GPIO_OTYPER_OT0 /*!< Select open-drain as output type */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_SPEED Output Speed + * @{ + */ +#define LL_GPIO_SPEED_FREQ_LOW (0x00000000U) /*!< Select I/O low output speed */ +#define LL_GPIO_SPEED_FREQ_MEDIUM GPIO_OSPEEDR_OSPEED0_0 /*!< Select I/O medium output speed */ +#define LL_GPIO_SPEED_FREQ_HIGH GPIO_OSPEEDR_OSPEED0_1 /*!< Select I/O fast output speed */ +#define LL_GPIO_SPEED_FREQ_VERY_HIGH GPIO_OSPEEDR_OSPEED0 /*!< Select I/O high output speed */ +/** + * @} + */ +#define LL_GPIO_SPEED_LOW LL_GPIO_SPEED_FREQ_LOW +#define LL_GPIO_SPEED_MEDIUM LL_GPIO_SPEED_FREQ_MEDIUM +#define LL_GPIO_SPEED_FAST LL_GPIO_SPEED_FREQ_HIGH +#define LL_GPIO_SPEED_HIGH LL_GPIO_SPEED_FREQ_VERY_HIGH + +/** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down + * @{ + */ +#define LL_GPIO_PULL_NO (0x00000000U) /*!< Select I/O no pull */ +#define LL_GPIO_PULL_UP GPIO_PUPDR_PUPD0_0 /*!< Select I/O pull up */ +#define LL_GPIO_PULL_DOWN GPIO_PUPDR_PUPD0_1 /*!< Select I/O pull down */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_AF Alternate Function + * @{ + */ +#define LL_GPIO_AF_0 (0x0000000U) /*!< Select alternate function 0 */ +#define LL_GPIO_AF_1 (0x0000001U) /*!< Select alternate function 1 */ +#define LL_GPIO_AF_2 (0x0000002U) /*!< Select alternate function 2 */ +#define LL_GPIO_AF_3 (0x0000003U) /*!< Select alternate function 3 */ +#define LL_GPIO_AF_4 (0x0000004U) /*!< Select alternate function 4 */ +#define LL_GPIO_AF_5 (0x0000005U) /*!< Select alternate function 5 */ +#define LL_GPIO_AF_6 (0x0000006U) /*!< Select alternate function 6 */ +#define LL_GPIO_AF_7 (0x0000007U) /*!< Select alternate function 7 */ +#define LL_GPIO_AF_8 (0x0000008U) /*!< Select alternate function 8 */ +#define LL_GPIO_AF_9 (0x0000009U) /*!< Select alternate function 9 */ +#define LL_GPIO_AF_10 (0x000000AU) /*!< Select alternate function 10 */ +#define LL_GPIO_AF_11 (0x000000BU) /*!< Select alternate function 11 */ +#define LL_GPIO_AF_12 (0x000000CU) /*!< Select alternate function 12 */ +#define LL_GPIO_AF_13 (0x000000DU) /*!< Select alternate function 13 */ +#define LL_GPIO_AF_14 (0x000000EU) /*!< Select alternate function 14 */ +#define LL_GPIO_AF_15 (0x000000FU) /*!< Select alternate function 15 */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros + * @{ + */ + +/** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions + * @{ + */ + +/** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration + * @{ + */ + +/** + * @brief Configure gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll MODER MODEy LL_GPIO_SetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @arg @ref LL_GPIO_MODE_ANALOG + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) +{ + MODIFY_REG(GPIOx->MODER, (GPIO_MODER_MODE0 << (POSITION_VAL(Pin) * 2U)), (Mode << (POSITION_VAL(Pin) * 2U))); +} + +/** + * @brief Return gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Input mode, General purpose output, Alternate function mode or Analog. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll MODER MODEy LL_GPIO_GetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @arg @ref LL_GPIO_MODE_ANALOG + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->MODER, + (GPIO_MODER_MODE0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U)); +} + +/** + * @brief Configure gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @rmtoll OTYPER OTy LL_GPIO_SetPinOutputType + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @param OutputType This parameter can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t PinMask, uint32_t OutputType) +{ + MODIFY_REG(GPIOx->OTYPER, PinMask, (PinMask * OutputType)); +} + +/** + * @brief Return gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll OTYPER OTy LL_GPIO_GetPinOutputType + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->OTYPER, Pin) >> POSITION_VAL(Pin)); +} + +/** + * @brief Configure gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium, Fast or High speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll OSPEEDR OSPEEDy LL_GPIO_SetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Speed This parameter can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed) +{ + MODIFY_REG(GPIOx->OSPEEDR, (GPIO_OSPEEDR_OSPEED0 << (POSITION_VAL(Pin) * 2U)), + (Speed << (POSITION_VAL(Pin) * 2U))); +} + +/** + * @brief Return gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium, Fast or High speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll OSPEEDR OSPEEDy LL_GPIO_GetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + * @arg @ref LL_GPIO_SPEED_FREQ_VERY_HIGH + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->OSPEEDR, + (GPIO_OSPEEDR_OSPEED0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U)); +} + +/** + * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll PUPDR PUPDy LL_GPIO_SetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Pull This parameter can be one of the following values: + * @arg @ref LL_GPIO_PULL_NO + * @arg @ref LL_GPIO_PULL_UP + * @arg @ref LL_GPIO_PULL_DOWN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull) +{ + MODIFY_REG(GPIOx->PUPDR, (GPIO_PUPDR_PUPD0 << (POSITION_VAL(Pin) * 2U)), (Pull << (POSITION_VAL(Pin) * 2U))); +} + +/** + * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port + * @note Warning: only one pin can be passed as parameter. + * @rmtoll PUPDR PUPDy LL_GPIO_GetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_PULL_NO + * @arg @ref LL_GPIO_PULL_UP + * @arg @ref LL_GPIO_PULL_DOWN + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->PUPDR, + (GPIO_PUPDR_PUPD0 << (POSITION_VAL(Pin) * 2U))) >> (POSITION_VAL(Pin) * 2U)); +} + +/** + * @brief Configure gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. + * @note Possible values are from AF0 to AF15 depending on target. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll AFRL AFSELy LL_GPIO_SetAFPin_0_7 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @param Alternate This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) +{ + MODIFY_REG(GPIOx->AFR[0], (GPIO_AFRL_AFSEL0 << (POSITION_VAL(Pin) * 4U)), + (Alternate << (POSITION_VAL(Pin) * 4U))); +} + +/** + * @brief Return gpio alternate function of a dedicated pin from 0 to 7 for a dedicated port. + * @rmtoll AFRL AFSELy LL_GPIO_GetAFPin_0_7 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + */ +__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_0_7(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->AFR[0], + (GPIO_AFRL_AFSEL0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); +} + +/** + * @brief Configure gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. + * @note Possible values are from AF0 to AF15 depending on target. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll AFRH AFSELy LL_GPIO_SetAFPin_8_15 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Alternate This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Alternate) +{ + MODIFY_REG(GPIOx->AFR[1], (GPIO_AFRH_AFSEL8 << (POSITION_VAL(Pin >> 8U) * 4U)), + (Alternate << (POSITION_VAL(Pin >> 8U) * 4U))); +} + +/** + * @brief Return gpio alternate function of a dedicated pin from 8 to 15 for a dedicated port. + * @note Possible values are from AF0 to AF15 depending on target. + * @rmtoll AFRH AFSELy LL_GPIO_GetAFPin_8_15 + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_AF_0 + * @arg @ref LL_GPIO_AF_1 + * @arg @ref LL_GPIO_AF_2 + * @arg @ref LL_GPIO_AF_3 + * @arg @ref LL_GPIO_AF_4 + * @arg @ref LL_GPIO_AF_5 + * @arg @ref LL_GPIO_AF_6 + * @arg @ref LL_GPIO_AF_7 + * @arg @ref LL_GPIO_AF_8 + * @arg @ref LL_GPIO_AF_9 + * @arg @ref LL_GPIO_AF_10 + * @arg @ref LL_GPIO_AF_11 + * @arg @ref LL_GPIO_AF_12 + * @arg @ref LL_GPIO_AF_13 + * @arg @ref LL_GPIO_AF_14 + * @arg @ref LL_GPIO_AF_15 + */ +__STATIC_INLINE uint32_t LL_GPIO_GetAFPin_8_15(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (uint32_t)(READ_BIT(GPIOx->AFR[1], + (GPIO_AFRH_AFSEL8 << (POSITION_VAL(Pin >> 8U) * 4U))) >> (POSITION_VAL(Pin >> 8U) * 4U)); +} + +#if defined(GPIO_ASCR_ASC0) +/** + * @brief Connect analog switch to ADC input of several pins for a dedicated port. + * @note This bit must be set prior to the ADC conversion. + * Only the IO which connected to the ADC input are effective. + * Other IO must be kept reset value + * @rmtoll ASCR ASCy LL_GPIO_EnablePinAnalogControl + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_EnablePinAnalogControl(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + SET_BIT(GPIOx->ASCR, PinMask); +} + +/** + * @brief Disconnect analog switch to ADC input of several pins for a dedicated port. + * @rmtoll ASCR ASCy LL_GPIO_DisablePinAnalogControl + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_DisablePinAnalogControl(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + CLEAR_BIT(GPIOx->ASCR, PinMask); +} +#endif /* GPIO_ASCR_ASC0 */ + +/** + * @brief Lock configuration of several pins for a dedicated port. + * @note When the lock sequence has been applied on a port bit, the + * value of this port bit can no longer be modified until the + * next reset. + * @note Each lock bit freezes a specific configuration register + * (control and alternate function registers). + * @rmtoll LCKR LCKK LL_GPIO_LockPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + __IO uint32_t temp; + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); + WRITE_REG(GPIOx->LCKR, PinMask); + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | PinMask); + /* Read LCKK register. This read is mandatory to complete key lock sequence */ + temp = READ_REG(GPIOx->LCKR); + (void) temp; +} + +/** + * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0. + * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return ((READ_BIT(GPIOx->LCKR, PinMask) == (PinMask)) ? 1UL : 0UL); +} + +/** + * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0. + * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked + * @param GPIOx GPIO Port + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) +{ + return ((READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup GPIO_LL_EF_Data_Access Data Access + * @{ + */ + +/** + * @brief Return full input data register value for a dedicated port. + * @rmtoll IDR IDy LL_GPIO_ReadInputPort + * @param GPIOx GPIO Port + * @retval Input data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) +{ + return (uint32_t)(READ_REG(GPIOx->IDR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll IDR IDy LL_GPIO_IsInputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return ((READ_BIT(GPIOx->IDR, PinMask) == (PinMask)) ? 1UL : 0UL); +} + +/** + * @brief Write output data register for the port. + * @rmtoll ODR ODy LL_GPIO_WriteOutputPort + * @param GPIOx GPIO Port + * @param PortValue Level value for each pin of the port + * @retval None + */ +__STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue) +{ + WRITE_REG(GPIOx->ODR, PortValue); +} + +/** + * @brief Return full output data register value for a dedicated port. + * @rmtoll ODR ODy LL_GPIO_ReadOutputPort + * @param GPIOx GPIO Port + * @retval Output data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) +{ + return (uint32_t)(READ_REG(GPIOx->ODR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return ((READ_BIT(GPIOx->ODR, PinMask) == (PinMask)) ? 1UL : 0UL); +} + +/** + * @brief Set several pins to high level on dedicated gpio port. + * @rmtoll BSRR BSy LL_GPIO_SetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BSRR, PinMask); +} + +/** + * @brief Set several pins to low level on dedicated gpio port. + * @rmtoll BRR BRy LL_GPIO_ResetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BRR, PinMask); +} + +/** + * @brief Toggle data value for several pin of dedicated port. + * @rmtoll ODR ODy LL_GPIO_TogglePin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + uint32_t odr = READ_REG(GPIOx->ODR); + WRITE_REG(GPIOx->BSRR, ((odr & PinMask) << 16u) | (~odr & PinMask)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx); +ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct); +void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) */ +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_GPIO_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_pwr.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_pwr.h new file mode 100644 index 0000000..436649c --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_pwr.h @@ -0,0 +1,1678 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_pwr.h + * @author MCD Application Team + * @brief Header file of PWR LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_PWR_H +#define STM32L4xx_LL_PWR_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined(PWR) + +/** @defgroup PWR_LL PWR + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Constants PWR Exported Constants + * @{ + */ + +/** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_PWR_WriteReg function + * @{ + */ +#define LL_PWR_SCR_CSBF PWR_SCR_CSBF +#define LL_PWR_SCR_CWUF PWR_SCR_CWUF +#define LL_PWR_SCR_CWUF5 PWR_SCR_CWUF5 +#define LL_PWR_SCR_CWUF4 PWR_SCR_CWUF4 +#define LL_PWR_SCR_CWUF3 PWR_SCR_CWUF3 +#define LL_PWR_SCR_CWUF2 PWR_SCR_CWUF2 +#define LL_PWR_SCR_CWUF1 PWR_SCR_CWUF1 +/** + * @} + */ + +/** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_PWR_ReadReg function + * @{ + */ +#define LL_PWR_SR1_WUFI PWR_SR1_WUFI +#if defined(PWR_SR1_EXT_SMPS_RDY) +#define LL_PWR_SR1_EXT_SMPS_RDY PWR_SR1_EXT_SMPS_RDY +#endif /* PWR_SR1_EXT_SMPS_RDY */ +#define LL_PWR_SR1_SBF PWR_SR1_SBF +#define LL_PWR_SR1_WUF5 PWR_SR1_WUF5 +#define LL_PWR_SR1_WUF4 PWR_SR1_WUF4 +#define LL_PWR_SR1_WUF3 PWR_SR1_WUF3 +#define LL_PWR_SR1_WUF2 PWR_SR1_WUF2 +#define LL_PWR_SR1_WUF1 PWR_SR1_WUF1 +#if defined(PWR_SR2_PVMO4) +#define LL_PWR_SR2_PVMO4 PWR_SR2_PVMO4 +#endif /* PWR_SR2_PVMO4 */ +#if defined(PWR_SR2_PVMO3) +#define LL_PWR_SR2_PVMO3 PWR_SR2_PVMO3 +#endif /* PWR_SR2_PVMO3 */ +#if defined(PWR_SR2_PVMO2) +#define LL_PWR_SR2_PVMO2 PWR_SR2_PVMO2 +#endif /* PWR_SR2_PVMO2 */ +#if defined(PWR_SR2_PVMO1) +#define LL_PWR_SR2_PVMO1 PWR_SR2_PVMO1 +#endif /* PWR_SR2_PVMO1 */ +#define LL_PWR_SR2_PVDO PWR_SR2_PVDO +#define LL_PWR_SR2_VOSF PWR_SR2_VOSF +#define LL_PWR_SR2_REGLPF PWR_SR2_REGLPF +#define LL_PWR_SR2_REGLPS PWR_SR2_REGLPS +/** + * @} + */ + +/** @defgroup PWR_LL_EC_REGU_VOLTAGE REGU VOLTAGE + * @{ + */ +#define LL_PWR_REGU_VOLTAGE_SCALE1 (PWR_CR1_VOS_0) +#define LL_PWR_REGU_VOLTAGE_SCALE2 (PWR_CR1_VOS_1) +/** + * @} + */ + +/** @defgroup PWR_LL_EC_MODE_PWR MODE PWR + * @{ + */ +#define LL_PWR_MODE_STOP0 (PWR_CR1_LPMS_STOP0) +#define LL_PWR_MODE_STOP1 (PWR_CR1_LPMS_STOP1) +#define LL_PWR_MODE_STOP2 (PWR_CR1_LPMS_STOP2) +#define LL_PWR_MODE_STANDBY (PWR_CR1_LPMS_STANDBY) +#define LL_PWR_MODE_SHUTDOWN (PWR_CR1_LPMS_SHUTDOWN) +/** + * @} + */ + +/** @defgroup PWR_LL_EC_PVM_VDDUSB_1 Peripheral voltage monitoring + * @{ + */ +#if defined(PWR_CR2_PVME1) +#define LL_PWR_PVM_VDDUSB_1_2V (PWR_CR2_PVME1) /* Monitoring VDDUSB vs. 1.2V */ +#endif +#if defined(PWR_CR2_PVME2) +#define LL_PWR_PVM_VDDIO2_0_9V (PWR_CR2_PVME2) /* Monitoring VDDIO2 vs. 0.9V */ +#endif +#if defined(PWR_CR2_PVME3) +#define LL_PWR_PVM_VDDA_1_62V (PWR_CR2_PVME3) /* Monitoring VDDA vs. 1.62V */ +#endif +#if defined(PWR_CR2_PVME4) +#define LL_PWR_PVM_VDDA_2_2V (PWR_CR2_PVME4) /* Monitoring VDDA vs. 2.2V */ +#endif +/** + * @} + */ + +/** @defgroup PWR_LL_EC_PVDLEVEL PVDLEVEL + * @{ + */ +#define LL_PWR_PVDLEVEL_0 (PWR_CR2_PLS_LEV0) /* VPVD0 around 2.0 V */ +#define LL_PWR_PVDLEVEL_1 (PWR_CR2_PLS_LEV1) /* VPVD1 around 2.2 V */ +#define LL_PWR_PVDLEVEL_2 (PWR_CR2_PLS_LEV2) /* VPVD2 around 2.4 V */ +#define LL_PWR_PVDLEVEL_3 (PWR_CR2_PLS_LEV3) /* VPVD3 around 2.5 V */ +#define LL_PWR_PVDLEVEL_4 (PWR_CR2_PLS_LEV4) /* VPVD4 around 2.6 V */ +#define LL_PWR_PVDLEVEL_5 (PWR_CR2_PLS_LEV5) /* VPVD5 around 2.8 V */ +#define LL_PWR_PVDLEVEL_6 (PWR_CR2_PLS_LEV6) /* VPVD6 around 2.9 V */ +#define LL_PWR_PVDLEVEL_7 (PWR_CR2_PLS_LEV7) /* External input analog voltage (Compare internally to VREFINT) */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_WAKEUP WAKEUP + * @{ + */ +#define LL_PWR_WAKEUP_PIN1 (PWR_CR3_EWUP1) +#define LL_PWR_WAKEUP_PIN2 (PWR_CR3_EWUP2) +#define LL_PWR_WAKEUP_PIN3 (PWR_CR3_EWUP3) +#define LL_PWR_WAKEUP_PIN4 (PWR_CR3_EWUP4) +#define LL_PWR_WAKEUP_PIN5 (PWR_CR3_EWUP5) +/** + * @} + */ + +/** @defgroup PWR_LL_EC_BATT_CHARG_RESISTOR BATT CHARG RESISTOR + * @{ + */ +#define LL_PWR_BATT_CHARG_RESISTOR_5K (0x00000000U) +#define LL_PWR_BATT_CHARGRESISTOR_1_5K (PWR_CR4_VBRS) +/** + * @} + */ + +/** @defgroup PWR_LL_EC_SRAM2_CONTENT_RETENTION SRAM2 CONTENT RETENTION + * @{ + */ +#define LL_PWR_NO_SRAM2_RETENTION (0x00000000U) +#if defined(PWR_CR3_RRS_1) +#define LL_PWR_FULL_SRAM2_RETENTION PWR_CR3_RRS_0 +#define LL_PWR_4KBYTES_SRAM2_RETENTION PWR_CR3_RRS_1 +#else +#define LL_PWR_FULL_SRAM2_RETENTION PWR_CR3_RRS +#endif /* PWR_CR3_RRS_1 */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_GPIO GPIO + * @{ + */ +#define LL_PWR_GPIO_A ((uint32_t)(&(PWR->PUCRA))) +#define LL_PWR_GPIO_B ((uint32_t)(&(PWR->PUCRB))) +#define LL_PWR_GPIO_C ((uint32_t)(&(PWR->PUCRC))) +#define LL_PWR_GPIO_D ((uint32_t)(&(PWR->PUCRD))) +#define LL_PWR_GPIO_E ((uint32_t)(&(PWR->PUCRE))) +#if defined(GPIOF) +#define LL_PWR_GPIO_F ((uint32_t)(&(PWR->PUCRF))) +#endif +#if defined(GPIOG) +#define LL_PWR_GPIO_G ((uint32_t)(&(PWR->PUCRG))) +#endif +#if defined(GPIOH) +#define LL_PWR_GPIO_H ((uint32_t)(&(PWR->PUCRH))) +#endif +#if defined(GPIOI) +#define LL_PWR_GPIO_I ((uint32_t)(&(PWR->PUCRI))) +#endif +/** + * @} + */ + +/** @defgroup PWR_LL_EC_GPIO_BIT GPIO BIT + * @{ + */ +#define LL_PWR_GPIO_BIT_0 (0x00000001U) +#define LL_PWR_GPIO_BIT_1 (0x00000002U) +#define LL_PWR_GPIO_BIT_2 (0x00000004U) +#define LL_PWR_GPIO_BIT_3 (0x00000008U) +#define LL_PWR_GPIO_BIT_4 (0x00000010U) +#define LL_PWR_GPIO_BIT_5 (0x00000020U) +#define LL_PWR_GPIO_BIT_6 (0x00000040U) +#define LL_PWR_GPIO_BIT_7 (0x00000080U) +#define LL_PWR_GPIO_BIT_8 (0x00000100U) +#define LL_PWR_GPIO_BIT_9 (0x00000200U) +#define LL_PWR_GPIO_BIT_10 (0x00000400U) +#define LL_PWR_GPIO_BIT_11 (0x00000800U) +#define LL_PWR_GPIO_BIT_12 (0x00001000U) +#define LL_PWR_GPIO_BIT_13 (0x00002000U) +#define LL_PWR_GPIO_BIT_14 (0x00004000U) +#define LL_PWR_GPIO_BIT_15 (0x00008000U) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Macros PWR Exported Macros + * @{ + */ + +/** @defgroup PWR_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in PWR register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__)) + +/** + * @brief Read a value in PWR register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__) +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @defgroup PWR_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Switch the regulator from main mode to low-power mode + * @rmtoll CR1 LPR LL_PWR_EnableLowPowerRunMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableLowPowerRunMode(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_LPR); +} + +/** + * @brief Switch the regulator from low-power mode to main mode + * @rmtoll CR1 LPR LL_PWR_DisableLowPowerRunMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableLowPowerRunMode(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_LPR); +} + +/** + * @brief Switch from run main mode to run low-power mode. + * @rmtoll CR1 LPR LL_PWR_EnterLowPowerRunMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnterLowPowerRunMode(void) +{ + LL_PWR_EnableLowPowerRunMode(); +} + +/** + * @brief Switch from run main mode to low-power mode. + * @rmtoll CR1 LPR LL_PWR_ExitLowPowerRunMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_ExitLowPowerRunMode(void) +{ + LL_PWR_DisableLowPowerRunMode(); +} + +/** + * @brief Check if the regulator is in low-power mode + * @rmtoll CR1 LPR LL_PWR_IsEnabledLowPowerRunMode + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledLowPowerRunMode(void) +{ + return ((READ_BIT(PWR->CR1, PWR_CR1_LPR) == (PWR_CR1_LPR)) ? 1UL : 0UL); +} + +/** + * @brief Set the main internal regulator output voltage + * @note This configuration may be completed with LL_PWR_EnableRange1BoostMode() on STM32L4Rx/STM32L4Sx devices. + * @rmtoll CR1 VOS LL_PWR_SetRegulVoltageScaling + * @param VoltageScaling This parameter can be one of the following values: + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetRegulVoltageScaling(uint32_t VoltageScaling) +{ + MODIFY_REG(PWR->CR1, PWR_CR1_VOS, VoltageScaling); +} + +/** + * @brief Get the main internal regulator output voltage + * @rmtoll CR1 VOS LL_PWR_GetRegulVoltageScaling + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE1 + * @arg @ref LL_PWR_REGU_VOLTAGE_SCALE2 + */ +__STATIC_INLINE uint32_t LL_PWR_GetRegulVoltageScaling(void) +{ + return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_VOS)); +} + +#if defined(PWR_CR5_R1MODE) +/** + * @brief Enable main regulator voltage range 1 boost mode + * @rmtoll CR5 R1MODE LL_PWR_EnableRange1BoostMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableRange1BoostMode(void) +{ + CLEAR_BIT(PWR->CR5, PWR_CR5_R1MODE); +} + +/** + * @brief Disable main regulator voltage range 1 boost mode + * @rmtoll CR5 R1MODE LL_PWR_DisableRange1BoostMode + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableRange1BoostMode(void) +{ + SET_BIT(PWR->CR5, PWR_CR5_R1MODE); +} + +/** + * @brief Check if the main regulator voltage range 1 boost mode is enabled + * @rmtoll CR5 R1MODE LL_PWR_IsEnabledRange1BoostMode + * @retval Inverted state of bit (0 or 1). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledRange1BoostMode(void) +{ + return ((READ_BIT(PWR->CR5, PWR_CR5_R1MODE) == 0x0U) ? 1UL : 0UL); +} +#endif /* PWR_CR5_R1MODE */ + +/** + * @brief Enable access to the backup domain + * @rmtoll CR1 DBP LL_PWR_EnableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableBkUpAccess(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_DBP); +} + +/** + * @brief Disable access to the backup domain + * @rmtoll CR1 DBP LL_PWR_DisableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableBkUpAccess(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_DBP); +} + +/** + * @brief Check if the backup domain is enabled + * @rmtoll CR1 DBP LL_PWR_IsEnabledBkUpAccess + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void) +{ + return ((READ_BIT(PWR->CR1, PWR_CR1_DBP) == (PWR_CR1_DBP)) ? 1UL : 0UL); +} + +/** + * @brief Set Low-Power mode + * @rmtoll CR1 LPMS LL_PWR_SetPowerMode + * @param LowPowerMode This parameter can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP0 + * @arg @ref LL_PWR_MODE_STOP1 + * @arg @ref LL_PWR_MODE_STOP2 + * @arg @ref LL_PWR_MODE_STANDBY + * @arg @ref LL_PWR_MODE_SHUTDOWN + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPowerMode(uint32_t LowPowerMode) +{ + MODIFY_REG(PWR->CR1, PWR_CR1_LPMS, LowPowerMode); +} + +/** + * @brief Get Low-Power mode + * @rmtoll CR1 LPMS LL_PWR_GetPowerMode + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP0 + * @arg @ref LL_PWR_MODE_STOP1 + * @arg @ref LL_PWR_MODE_STOP2 + * @arg @ref LL_PWR_MODE_STANDBY + * @arg @ref LL_PWR_MODE_SHUTDOWN + */ +__STATIC_INLINE uint32_t LL_PWR_GetPowerMode(void) +{ + return (uint32_t)(READ_BIT(PWR->CR1, PWR_CR1_LPMS)); +} + +#if defined(PWR_CR1_RRSTP) +/** + * @brief Enable SRAM3 content retention in Stop mode + * @rmtoll CR1 RRSTP LL_PWR_EnableSRAM3Retention + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableSRAM3Retention(void) +{ + SET_BIT(PWR->CR1, PWR_CR1_RRSTP); +} + +/** + * @brief Disable SRAM3 content retention in Stop mode + * @rmtoll CR1 RRSTP LL_PWR_DisableSRAM3Retention + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableSRAM3Retention(void) +{ + CLEAR_BIT(PWR->CR1, PWR_CR1_RRSTP); +} + +/** + * @brief Check if SRAM3 content retention in Stop mode is enabled + * @rmtoll CR1 RRSTP LL_PWR_IsEnabledSRAM3Retention + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledSRAM3Retention(void) +{ + return ((READ_BIT(PWR->CR1, PWR_CR1_RRSTP) == (PWR_CR1_RRSTP)) ? 1UL : 0UL); +} +#endif /* PWR_CR1_RRSTP */ + +#if defined(PWR_CR3_DSIPDEN) +/** + * @brief Enable pull-down activation on DSI pins + * @rmtoll CR3 DSIPDEN LL_PWR_EnableDSIPinsPDActivation + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableDSIPinsPDActivation(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_DSIPDEN); +} + +/** + * @brief Disable pull-down activation on DSI pins + * @rmtoll CR3 DSIPDEN LL_PWR_DisableDSIPinsPDActivation + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableDSIPinsPDActivation(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_DSIPDEN); +} + +/** + * @brief Check if pull-down activation on DSI pins is enabled + * @rmtoll CR3 DSIPDEN LL_PWR_IsEnabledDSIPinsPDActivation + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledDSIPinsPDActivation(void) +{ + return ((READ_BIT(PWR->CR3, PWR_CR3_DSIPDEN) == (PWR_CR3_DSIPDEN)) ? 1UL : 0UL); +} +#endif /* PWR_CR3_DSIPDEN */ + +#if defined(PWR_CR2_USV) +/** + * @brief Enable VDDUSB supply + * @rmtoll CR2 USV LL_PWR_EnableVddUSB + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableVddUSB(void) +{ + SET_BIT(PWR->CR2, PWR_CR2_USV); +} + +/** + * @brief Disable VDDUSB supply + * @rmtoll CR2 USV LL_PWR_DisableVddUSB + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableVddUSB(void) +{ + CLEAR_BIT(PWR->CR2, PWR_CR2_USV); +} + +/** + * @brief Check if VDDUSB supply is enabled + * @rmtoll CR2 USV LL_PWR_IsEnabledVddUSB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledVddUSB(void) +{ + return ((READ_BIT(PWR->CR2, PWR_CR2_USV) == (PWR_CR2_USV)) ? 1UL : 0UL); +} +#endif + +#if defined(PWR_CR2_IOSV) +/** + * @brief Enable VDDIO2 supply + * @rmtoll CR2 IOSV LL_PWR_EnableVddIO2 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableVddIO2(void) +{ + SET_BIT(PWR->CR2, PWR_CR2_IOSV); +} + +/** + * @brief Disable VDDIO2 supply + * @rmtoll CR2 IOSV LL_PWR_DisableVddIO2 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableVddIO2(void) +{ + CLEAR_BIT(PWR->CR2, PWR_CR2_IOSV); +} + +/** + * @brief Check if VDDIO2 supply is enabled + * @rmtoll CR2 IOSV LL_PWR_IsEnabledVddIO2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledVddIO2(void) +{ + return ((READ_BIT(PWR->CR2, PWR_CR2_IOSV) == (PWR_CR2_IOSV)) ? 1UL : 0UL); +} +#endif + +/** + * @brief Enable the Power Voltage Monitoring on a peripheral + * @rmtoll CR2 PVME1 LL_PWR_EnablePVM\n + * CR2 PVME2 LL_PWR_EnablePVM\n + * CR2 PVME3 LL_PWR_EnablePVM\n + * CR2 PVME4 LL_PWR_EnablePVM + * @param PeriphVoltage This parameter can be one of the following values: + * @arg @ref LL_PWR_PVM_VDDUSB_1_2V (*) + * @arg @ref LL_PWR_PVM_VDDIO2_0_9V (*) + * @arg @ref LL_PWR_PVM_VDDA_1_62V + * @arg @ref LL_PWR_PVM_VDDA_2_2V + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnablePVM(uint32_t PeriphVoltage) +{ + SET_BIT(PWR->CR2, PeriphVoltage); +} + +/** + * @brief Disable the Power Voltage Monitoring on a peripheral + * @rmtoll CR2 PVME1 LL_PWR_DisablePVM\n + * CR2 PVME2 LL_PWR_DisablePVM\n + * CR2 PVME3 LL_PWR_DisablePVM\n + * CR2 PVME4 LL_PWR_DisablePVM + * @param PeriphVoltage This parameter can be one of the following values: + * @arg @ref LL_PWR_PVM_VDDUSB_1_2V (*) + * @arg @ref LL_PWR_PVM_VDDIO2_0_9V (*) + * @arg @ref LL_PWR_PVM_VDDA_1_62V + * @arg @ref LL_PWR_PVM_VDDA_2_2V + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisablePVM(uint32_t PeriphVoltage) +{ + CLEAR_BIT(PWR->CR2, PeriphVoltage); +} + +/** + * @brief Check if Power Voltage Monitoring is enabled on a peripheral + * @rmtoll CR2 PVME1 LL_PWR_IsEnabledPVM\n + * CR2 PVME2 LL_PWR_IsEnabledPVM\n + * CR2 PVME3 LL_PWR_IsEnabledPVM\n + * CR2 PVME4 LL_PWR_IsEnabledPVM + * @param PeriphVoltage This parameter can be one of the following values: + * @arg @ref LL_PWR_PVM_VDDUSB_1_2V (*) + * @arg @ref LL_PWR_PVM_VDDIO2_0_9V (*) + * @arg @ref LL_PWR_PVM_VDDA_1_62V + * @arg @ref LL_PWR_PVM_VDDA_2_2V + * + * (*) value not defined in all devices + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledPVM(uint32_t PeriphVoltage) +{ + return ((READ_BIT(PWR->CR2, PeriphVoltage) == (PeriphVoltage)) ? 1UL : 0UL); +} + +/** + * @brief Configure the voltage threshold detected by the Power Voltage Detector + * @rmtoll CR2 PLS LL_PWR_SetPVDLevel + * @param PVDLevel This parameter can be one of the following values: + * @arg @ref LL_PWR_PVDLEVEL_0 + * @arg @ref LL_PWR_PVDLEVEL_1 + * @arg @ref LL_PWR_PVDLEVEL_2 + * @arg @ref LL_PWR_PVDLEVEL_3 + * @arg @ref LL_PWR_PVDLEVEL_4 + * @arg @ref LL_PWR_PVDLEVEL_5 + * @arg @ref LL_PWR_PVDLEVEL_6 + * @arg @ref LL_PWR_PVDLEVEL_7 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel) +{ + MODIFY_REG(PWR->CR2, PWR_CR2_PLS, PVDLevel); +} + +/** + * @brief Get the voltage threshold detection + * @rmtoll CR2 PLS LL_PWR_GetPVDLevel + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_PVDLEVEL_0 + * @arg @ref LL_PWR_PVDLEVEL_1 + * @arg @ref LL_PWR_PVDLEVEL_2 + * @arg @ref LL_PWR_PVDLEVEL_3 + * @arg @ref LL_PWR_PVDLEVEL_4 + * @arg @ref LL_PWR_PVDLEVEL_5 + * @arg @ref LL_PWR_PVDLEVEL_6 + * @arg @ref LL_PWR_PVDLEVEL_7 + */ +__STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void) +{ + return (uint32_t)(READ_BIT(PWR->CR2, PWR_CR2_PLS)); +} + +/** + * @brief Enable Power Voltage Detector + * @rmtoll CR2 PVDE LL_PWR_EnablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnablePVD(void) +{ + SET_BIT(PWR->CR2, PWR_CR2_PVDE); +} + +/** + * @brief Disable Power Voltage Detector + * @rmtoll CR2 PVDE LL_PWR_DisablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisablePVD(void) +{ + CLEAR_BIT(PWR->CR2, PWR_CR2_PVDE); +} + +/** + * @brief Check if Power Voltage Detector is enabled + * @rmtoll CR2 PVDE LL_PWR_IsEnabledPVD + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void) +{ + return ((READ_BIT(PWR->CR2, PWR_CR2_PVDE) == (PWR_CR2_PVDE)) ? 1UL : 0UL); +} + +/** + * @brief Enable Internal Wake-up line + * @rmtoll CR3 EIWF LL_PWR_EnableInternWU + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableInternWU(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_EIWF); +} + +/** + * @brief Disable Internal Wake-up line + * @rmtoll CR3 EIWF LL_PWR_DisableInternWU + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableInternWU(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_EIWF); +} + +/** + * @brief Check if Internal Wake-up line is enabled + * @rmtoll CR3 EIWF LL_PWR_IsEnabledInternWU + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledInternWU(void) +{ + return ((READ_BIT(PWR->CR3, PWR_CR3_EIWF) == (PWR_CR3_EIWF)) ? 1UL : 0UL); +} + +/** + * @brief Enable pull-up and pull-down configuration + * @rmtoll CR3 APC LL_PWR_EnablePUPDCfg + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnablePUPDCfg(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_APC); +} + +/** + * @brief Disable pull-up and pull-down configuration + * @rmtoll CR3 APC LL_PWR_DisablePUPDCfg + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisablePUPDCfg(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_APC); +} + +/** + * @brief Check if pull-up and pull-down configuration is enabled + * @rmtoll CR3 APC LL_PWR_IsEnabledPUPDCfg + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledPUPDCfg(void) +{ + return ((READ_BIT(PWR->CR3, PWR_CR3_APC) == (PWR_CR3_APC)) ? 1UL : 0UL); +} + +#if defined(PWR_CR3_DSIPDEN) +/** + * @brief Enable pull-down activation on DSI pins + * @rmtoll CR3 DSIPDEN LL_PWR_EnableDSIPullDown + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableDSIPullDown(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_DSIPDEN); +} + +/** + * @brief Disable pull-down activation on DSI pins + * @rmtoll CR3 DSIPDEN LL_PWR_DisableDSIPullDown + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableDSIPullDown(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_DSIPDEN); +} + +/** + * @brief Check if pull-down activation on DSI pins is enabled + * @rmtoll CR3 DSIPDEN LL_PWR_IsEnabledDSIPullDown + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledDSIPullDown(void) +{ + return ((READ_BIT(PWR->CR3, PWR_CR3_DSIPDEN) == (PWR_CR3_DSIPDEN)) ? 1UL : 0UL); +} +#endif /* PWR_CR3_DSIPDEN */ + +#if defined(PWR_CR3_ENULP) +/** + * @brief Enable Ultra Low Power BORL, BORH and PVD for STOP2 and Standby modes + * @rmtoll CR3 ENULP LL_PWR_EnableBORPVD_ULP + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableBORPVD_ULP(void) +{ + SET_BIT(PWR->CR3, PWR_CR3_ENULP); +} + +/** + * @brief Disable Ultra Low Power BORL, BORH and PVD for STOP2 and Standby modes + * @rmtoll CR3 ENULP LL_PWR_DisableBORPVD_ULP + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableBORPVD_ULP(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_ENULP); +} + +/** + * @brief Check if Ultra Low Power BORL, BORH and PVD for STOP2 and Standby modes is enabled + * @rmtoll CR3 ENULP LL_PWR_IsEnabledBORPVD_ULP + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledBORPVD_ULP(void) +{ + return ((READ_BIT(PWR->CR3, PWR_CR3_ENULP) == (PWR_CR3_ENULP)) ? 1UL : 0UL); +} +#endif /* PWR_CR3_ENULP */ + +/** + * @brief Enable SRAM2 full content retention in Standby mode + * @rmtoll CR3 RRS LL_PWR_EnableSRAM2Retention + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableSRAM2Retention(void) +{ + MODIFY_REG(PWR->CR3, PWR_CR3_RRS, LL_PWR_FULL_SRAM2_RETENTION); +} + +/** + * @brief Disable SRAM2 content retention in Standby mode + * @rmtoll CR3 RRS LL_PWR_DisableSRAM2Retention + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableSRAM2Retention(void) +{ + CLEAR_BIT(PWR->CR3, PWR_CR3_RRS); +} + +/** + * @brief Check if SRAM2 full content retention in Standby mode is enabled + * @rmtoll CR3 RRS LL_PWR_IsEnabledSRAM2Retention + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledSRAM2Retention(void) +{ + return ((READ_BIT(PWR->CR3, PWR_CR3_RRS) == (LL_PWR_FULL_SRAM2_RETENTION)) ? 1UL : 0UL); +} + +/** + * @brief Set SRAM2 content retention in Standby mode + * @rmtoll CR3 RRS LL_PWR_SetSRAM2ContentRetention + * @param SRAM2Size This parameter can be one of the following values: + * @arg @ref LL_PWR_NO_SRAM2_RETENTION + * @arg @ref LL_PWR_FULL_SRAM2_RETENTION + * @arg @ref LL_PWR_4KBYTES_SRAM2_RETENTION + * @note LL_PWR_4KBYTES_SRAM2_RETENTION parameter is not available on all devices + * @note Setting LL_PWR_NO_SRAM2_RETENTION is same as calling LL_PWR_DisableSRAM2Retention() + * @note Setting LL_PWR_FULL_SRAM2_RETENTION is same as calling LL_PWR_EnableSRAM2Retention() + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetSRAM2ContentRetention(uint32_t SRAM2Size) +{ + MODIFY_REG(PWR->CR3, PWR_CR3_RRS, SRAM2Size); +} + +/** + * @brief Get SRAM2 content retention in Standby mode + * @rmtoll CR3 RRS LL_PWR_GetSRAM2ContentRetention + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_NO_SRAM2_RETENTION + * @arg @ref LL_PWR_FULL_SRAM2_RETENTION + * @arg @ref LL_PWR_4KBYTES_SRAM2_RETENTION + * @note LL_PWR_4KBYTES_SRAM2_RETENTION parameter is not available on all devices + */ +__STATIC_INLINE uint32_t LL_PWR_GetSRAM2ContentRetention(void) +{ + return (uint32_t)(READ_BIT(PWR->CR3, PWR_CR3_RRS)); +} + +/** + * @brief Enable the WakeUp PINx functionality + * @rmtoll CR3 EWUP1 LL_PWR_EnableWakeUpPin\n + * CR3 EWUP2 LL_PWR_EnableWakeUpPin\n + * CR3 EWUP3 LL_PWR_EnableWakeUpPin\n + * CR3 EWUP4 LL_PWR_EnableWakeUpPin\n + * CR3 EWUP5 LL_PWR_EnableWakeUpPin\n + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin) +{ + SET_BIT(PWR->CR3, WakeUpPin); +} + +/** + * @brief Disable the WakeUp PINx functionality + * @rmtoll CR3 EWUP1 LL_PWR_DisableWakeUpPin\n + * CR3 EWUP2 LL_PWR_DisableWakeUpPin\n + * CR3 EWUP3 LL_PWR_DisableWakeUpPin\n + * CR3 EWUP4 LL_PWR_DisableWakeUpPin\n + * CR3 EWUP5 LL_PWR_DisableWakeUpPin\n + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin) +{ + CLEAR_BIT(PWR->CR3, WakeUpPin); +} + +/** + * @brief Check if the WakeUp PINx functionality is enabled + * @rmtoll CR3 EWUP1 LL_PWR_IsEnabledWakeUpPin\n + * CR3 EWUP2 LL_PWR_IsEnabledWakeUpPin\n + * CR3 EWUP3 LL_PWR_IsEnabledWakeUpPin\n + * CR3 EWUP4 LL_PWR_IsEnabledWakeUpPin\n + * CR3 EWUP5 LL_PWR_IsEnabledWakeUpPin\n + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin) +{ + return ((READ_BIT(PWR->CR3, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL); +} + +#if defined(PWR_CR4_EXT_SMPS_ON) +/** + * @brief Enable the CFLDO working @ 0.95V + * @note When external SMPS is used & CFLDO operating in Range 2, the regulated voltage of the + * internal CFLDO can be reduced to 0.95V. + * @rmtoll CR4 EXT_SMPS_ON LL_PWR_EnableExtSMPS_0V95 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableExtSMPS_0V95(void) +{ + SET_BIT(PWR->CR4, PWR_CR4_EXT_SMPS_ON); +} + +/** + * @brief Disable the CFLDO working @ 0.95V + * @note When external SMPS is used & CFLDO operating in Range 2, the regulated voltage of the + * internal CFLDO can be reduced to 0.95V. + * @rmtoll CR4 EXT_SMPS_ON LL_PWR_DisableExtSMPS_0V95 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableExtSMPS_0V95(void) +{ + CLEAR_BIT(PWR->CR4, PWR_CR4_EXT_SMPS_ON); +} + +/** + * @brief Check if CFLDO is working @ 0.95V + * @note When external SMPS is used & CFLDO operating in Range 2, the regulated voltage of the + * internal CFLDO can be reduced to 0.95V. + * @rmtoll CR4 EXT_SMPS_ON LL_PWR_IsEnabledExtSMPS_0V95 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledExtSMPS_0V95(void) +{ + return ((READ_BIT(PWR->CR4, PWR_CR4_EXT_SMPS_ON) == (PWR_CR4_EXT_SMPS_ON)) ? 1UL : 0UL); +} +#endif /* PWR_CR4_EXT_SMPS_ON */ + +/** + * @brief Set the resistor impedance + * @rmtoll CR4 VBRS LL_PWR_SetBattChargResistor + * @param Resistor This parameter can be one of the following values: + * @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K + * @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetBattChargResistor(uint32_t Resistor) +{ + MODIFY_REG(PWR->CR4, PWR_CR4_VBRS, Resistor); +} + +/** + * @brief Get the resistor impedance + * @rmtoll CR4 VBRS LL_PWR_GetBattChargResistor + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_BATT_CHARG_RESISTOR_5K + * @arg @ref LL_PWR_BATT_CHARGRESISTOR_1_5K + */ +__STATIC_INLINE uint32_t LL_PWR_GetBattChargResistor(void) +{ + return (uint32_t)(READ_BIT(PWR->CR4, PWR_CR4_VBRS)); +} + +/** + * @brief Enable battery charging + * @rmtoll CR4 VBE LL_PWR_EnableBatteryCharging + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableBatteryCharging(void) +{ + SET_BIT(PWR->CR4, PWR_CR4_VBE); +} + +/** + * @brief Disable battery charging + * @rmtoll CR4 VBE LL_PWR_DisableBatteryCharging + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableBatteryCharging(void) +{ + CLEAR_BIT(PWR->CR4, PWR_CR4_VBE); +} + +/** + * @brief Check if battery charging is enabled + * @rmtoll CR4 VBE LL_PWR_IsEnabledBatteryCharging + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledBatteryCharging(void) +{ + return ((READ_BIT(PWR->CR4, PWR_CR4_VBE) == (PWR_CR4_VBE)) ? 1UL : 0UL); +} + +/** + * @brief Set the Wake-Up pin polarity low for the event detection + * @rmtoll CR4 WP1 LL_PWR_SetWakeUpPinPolarityLow\n + * CR4 WP2 LL_PWR_SetWakeUpPinPolarityLow\n + * CR4 WP3 LL_PWR_SetWakeUpPinPolarityLow\n + * CR4 WP4 LL_PWR_SetWakeUpPinPolarityLow\n + * CR4 WP5 LL_PWR_SetWakeUpPinPolarityLow + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityLow(uint32_t WakeUpPin) +{ + SET_BIT(PWR->CR4, WakeUpPin); +} + +/** + * @brief Set the Wake-Up pin polarity high for the event detection + * @rmtoll CR4 WP1 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR4 WP2 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR4 WP3 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR4 WP4 LL_PWR_SetWakeUpPinPolarityHigh\n + * CR4 WP5 LL_PWR_SetWakeUpPinPolarityHigh + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetWakeUpPinPolarityHigh(uint32_t WakeUpPin) +{ + CLEAR_BIT(PWR->CR4, WakeUpPin); +} + +/** + * @brief Get the Wake-Up pin polarity for the event detection + * @rmtoll CR4 WP1 LL_PWR_IsWakeUpPinPolarityLow\n + * CR4 WP2 LL_PWR_IsWakeUpPinPolarityLow\n + * CR4 WP3 LL_PWR_IsWakeUpPinPolarityLow\n + * CR4 WP4 LL_PWR_IsWakeUpPinPolarityLow\n + * CR4 WP5 LL_PWR_IsWakeUpPinPolarityLow + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @arg @ref LL_PWR_WAKEUP_PIN2 + * @arg @ref LL_PWR_WAKEUP_PIN3 + * @arg @ref LL_PWR_WAKEUP_PIN4 + * @arg @ref LL_PWR_WAKEUP_PIN5 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsWakeUpPinPolarityLow(uint32_t WakeUpPin) +{ + return ((READ_BIT(PWR->CR4, WakeUpPin) == (WakeUpPin)) ? 1UL : 0UL); +} + +/** + * @brief Enable GPIO pull-up state in Standby and Shutdown modes + * @rmtoll PUCRA PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRB PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRC PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRD PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRE PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRF PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRG PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRH PU0-15 LL_PWR_EnableGPIOPullUp\n + * PUCRI PU0-11 LL_PWR_EnableGPIOPullUp + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E + * @arg @ref LL_PWR_GPIO_F (*) + * @arg @ref LL_PWR_GPIO_G (*) + * @arg @ref LL_PWR_GPIO_H + * @arg @ref LL_PWR_GPIO_I (*) + * + * (*) value not defined in all devices + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber) +{ + SET_BIT(*((__IO uint32_t *)GPIO), GPIONumber); +} + +/** + * @brief Disable GPIO pull-up state in Standby and Shutdown modes + * @rmtoll PUCRA PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRB PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRC PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRD PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRE PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRF PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRG PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRH PU0-15 LL_PWR_DisableGPIOPullUp\n + * PUCRI PU0-11 LL_PWR_DisableGPIOPullUp + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E + * @arg @ref LL_PWR_GPIO_F (*) + * @arg @ref LL_PWR_GPIO_G (*) + * @arg @ref LL_PWR_GPIO_H + * @arg @ref LL_PWR_GPIO_I (*) + * + * (*) value not defined in all devices + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber) +{ + CLEAR_BIT(*((__IO uint32_t *)GPIO), GPIONumber); +} + +/** + * @brief Check if GPIO pull-up state is enabled + * @rmtoll PUCRA PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRB PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRC PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRD PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRE PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRF PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRG PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRH PU0-15 LL_PWR_IsEnabledGPIOPullUp\n + * PUCRI PU0-11 LL_PWR_IsEnabledGPIOPullUp + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E + * @arg @ref LL_PWR_GPIO_F (*) + * @arg @ref LL_PWR_GPIO_G (*) + * @arg @ref LL_PWR_GPIO_H + * @arg @ref LL_PWR_GPIO_I (*) + * + * (*) value not defined in all devices + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledGPIOPullUp(uint32_t GPIO, uint32_t GPIONumber) +{ + return ((READ_BIT(*((__IO uint32_t *)GPIO), GPIONumber) == (GPIONumber)) ? 1UL : 0UL); +} + +/** + * @brief Enable GPIO pull-down state in Standby and Shutdown modes + * @rmtoll PDCRA PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRB PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRC PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRD PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRE PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRF PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRG PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRH PD0-15 LL_PWR_EnableGPIOPullDown\n + * PDCRI PD0-11 LL_PWR_EnableGPIOPullDown + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E + * @arg @ref LL_PWR_GPIO_F (*) + * @arg @ref LL_PWR_GPIO_G (*) + * @arg @ref LL_PWR_GPIO_H + * @arg @ref LL_PWR_GPIO_I (*) + * + * (*) value not defined in all devices + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber) +{ + SET_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber); +} + +/** + * @brief Disable GPIO pull-down state in Standby and Shutdown modes + * @rmtoll PDCRA PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRB PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRC PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRD PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRE PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRF PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRG PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRH PD0-15 LL_PWR_DisableGPIOPullDown\n + * PDCRI PD0-11 LL_PWR_DisableGPIOPullDown + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E + * @arg @ref LL_PWR_GPIO_F (*) + * @arg @ref LL_PWR_GPIO_G (*) + * @arg @ref LL_PWR_GPIO_H + * @arg @ref LL_PWR_GPIO_I (*) + * + * (*) value not defined in all devices + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber) +{ + CLEAR_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber); +} + +/** + * @brief Check if GPIO pull-down state is enabled + * @rmtoll PDCRA PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRB PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRC PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRD PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRE PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRF PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRG PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRH PD0-15 LL_PWR_IsEnabledGPIOPullDown\n + * PDCRI PD0-11 LL_PWR_IsEnabledGPIOPullDown + * @param GPIO This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_A + * @arg @ref LL_PWR_GPIO_B + * @arg @ref LL_PWR_GPIO_C + * @arg @ref LL_PWR_GPIO_D + * @arg @ref LL_PWR_GPIO_E + * @arg @ref LL_PWR_GPIO_F (*) + * @arg @ref LL_PWR_GPIO_G (*) + * @arg @ref LL_PWR_GPIO_H + * @arg @ref LL_PWR_GPIO_I (*) + * + * (*) value not defined in all devices + * @param GPIONumber This parameter can be one of the following values: + * @arg @ref LL_PWR_GPIO_BIT_0 + * @arg @ref LL_PWR_GPIO_BIT_1 + * @arg @ref LL_PWR_GPIO_BIT_2 + * @arg @ref LL_PWR_GPIO_BIT_3 + * @arg @ref LL_PWR_GPIO_BIT_4 + * @arg @ref LL_PWR_GPIO_BIT_5 + * @arg @ref LL_PWR_GPIO_BIT_6 + * @arg @ref LL_PWR_GPIO_BIT_7 + * @arg @ref LL_PWR_GPIO_BIT_8 + * @arg @ref LL_PWR_GPIO_BIT_9 + * @arg @ref LL_PWR_GPIO_BIT_10 + * @arg @ref LL_PWR_GPIO_BIT_11 + * @arg @ref LL_PWR_GPIO_BIT_12 + * @arg @ref LL_PWR_GPIO_BIT_13 + * @arg @ref LL_PWR_GPIO_BIT_14 + * @arg @ref LL_PWR_GPIO_BIT_15 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledGPIOPullDown(uint32_t GPIO, uint32_t GPIONumber) +{ + return ((READ_BIT(*((__IO uint32_t *)(GPIO + 4U)), GPIONumber) == (GPIONumber)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Internal Wake-up line Flag + * @rmtoll SR1 WUFI LL_PWR_IsActiveFlag_InternWU + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_InternWU(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUFI) == (PWR_SR1_WUFI)) ? 1UL : 0UL); +} + +#if defined(PWR_SR1_EXT_SMPS_RDY) +/** + * @brief Get Ready Flag for switching to external SMPS + * @rmtoll SR1 EXT_SMPS_RDY LL_PWR_IsActiveFlag_ExtSMPSReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_ExtSMPSReady(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_EXT_SMPS_RDY) == (PWR_SR1_EXT_SMPS_RDY)) ? 1UL : 0UL); +} +#endif /* PWR_SR1_EXT_SMPS_RDY */ + +/** + * @brief Get Stand-By Flag + * @rmtoll SR1 SBF LL_PWR_IsActiveFlag_SB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_SBF) == (PWR_SR1_SBF)) ? 1UL : 0UL); +} + +/** + * @brief Get Wake-up Flag 5 + * @rmtoll SR1 WUF5 LL_PWR_IsActiveFlag_WU5 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU5(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF5) == (PWR_SR1_WUF5)) ? 1UL : 0UL); +} + +/** + * @brief Get Wake-up Flag 4 + * @rmtoll SR1 WUF4 LL_PWR_IsActiveFlag_WU4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU4(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF4) == (PWR_SR1_WUF4)) ? 1UL : 0UL); +} + +/** + * @brief Get Wake-up Flag 3 + * @rmtoll SR1 WUF3 LL_PWR_IsActiveFlag_WU3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU3(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF3) == (PWR_SR1_WUF3)) ? 1UL : 0UL); +} + +/** + * @brief Get Wake-up Flag 2 + * @rmtoll SR1 WUF2 LL_PWR_IsActiveFlag_WU2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU2(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF2) == (PWR_SR1_WUF2)) ? 1UL : 0UL); +} + +/** + * @brief Get Wake-up Flag 1 + * @rmtoll SR1 WUF1 LL_PWR_IsActiveFlag_WU1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU1(void) +{ + return ((READ_BIT(PWR->SR1, PWR_SR1_WUF1) == (PWR_SR1_WUF1)) ? 1UL : 0UL); +} + +/** + * @brief Clear Stand-By Flag + * @rmtoll SCR CSBF LL_PWR_ClearFlag_SB + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_SB(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CSBF); +} + +/** + * @brief Clear Wake-up Flags + * @rmtoll SCR CWUF LL_PWR_ClearFlag_WU + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF); +} + +/** + * @brief Clear Wake-up Flag 5 + * @rmtoll SCR CWUF5 LL_PWR_ClearFlag_WU5 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU5(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF5); +} + +/** + * @brief Clear Wake-up Flag 4 + * @rmtoll SCR CWUF4 LL_PWR_ClearFlag_WU4 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU4(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF4); +} + +/** + * @brief Clear Wake-up Flag 3 + * @rmtoll SCR CWUF3 LL_PWR_ClearFlag_WU3 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU3(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF3); +} + +/** + * @brief Clear Wake-up Flag 2 + * @rmtoll SCR CWUF2 LL_PWR_ClearFlag_WU2 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU2(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF2); +} + +/** + * @brief Clear Wake-up Flag 1 + * @rmtoll SCR CWUF1 LL_PWR_ClearFlag_WU1 + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU1(void) +{ + WRITE_REG(PWR->SCR, PWR_SCR_CWUF1); +} + +/** + * @brief Indicate whether VDDA voltage is below or above PVM4 threshold + * @rmtoll SR2 PVMO4 LL_PWR_IsActiveFlag_PVMO4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO4(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO4) == (PWR_SR2_PVMO4)) ? 1UL : 0UL); +} + +/** + * @brief Indicate whether VDDA voltage is below or above PVM3 threshold + * @rmtoll SR2 PVMO3 LL_PWR_IsActiveFlag_PVMO3 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO3(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO3) == (PWR_SR2_PVMO3)) ? 1UL : 0UL); +} + +#if defined(PWR_SR2_PVMO2) +/** + * @brief Indicate whether VDDIO2 voltage is below or above PVM2 threshold + * @rmtoll SR2 PVMO2 LL_PWR_IsActiveFlag_PVMO2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO2(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO2) == (PWR_SR2_PVMO2)) ? 1UL : 0UL); +} +#endif /* PWR_SR2_PVMO2 */ + +#if defined(PWR_SR2_PVMO1) +/** + * @brief Indicate whether VDDUSB voltage is below or above PVM1 threshold + * @rmtoll SR2 PVMO1 LL_PWR_IsActiveFlag_PVMO1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVMO1(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_PVMO1) == (PWR_SR2_PVMO1)) ? 1UL : 0UL); +} +#endif /* PWR_SR2_PVMO1 */ + +/** + * @brief Indicate whether VDD voltage is below or above the selected PVD threshold + * @rmtoll SR2 PVDO LL_PWR_IsActiveFlag_PVDO + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_PVDO) == (PWR_SR2_PVDO)) ? 1UL : 0UL); +} + +/** + * @brief Indicate whether the regulator is ready in the selected voltage range or if its output voltage is still changing to the required voltage level + * @rmtoll SR2 VOSF LL_PWR_IsActiveFlag_VOS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_VOS(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_VOSF) == (PWR_SR2_VOSF)) ? 1UL : 0UL); +} + +/** + * @brief Indicate whether the regulator is ready in main mode or is in low-power mode + * @note Take care, return value "0" means the regulator is ready. Return value "1" means the output voltage range is still changing. + * @rmtoll SR2 REGLPF LL_PWR_IsActiveFlag_REGLPF + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPF(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_REGLPF) == (PWR_SR2_REGLPF)) ? 1UL : 0UL); +} + +/** + * @brief Indicate whether or not the low-power regulator is ready + * @rmtoll SR2 REGLPS LL_PWR_IsActiveFlag_REGLPS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_REGLPS(void) +{ + return ((READ_BIT(PWR->SR2, PWR_SR2_REGLPS) == (PWR_SR2_REGLPS)) ? 1UL : 0UL); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup PWR_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_PWR_DeInit(void); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup PWR_LL_EF_Legacy_Functions Legacy functions name + * @{ + */ +/* Old functions name kept for legacy purpose, to be replaced by the */ +/* current functions name. */ +#define LL_PWR_IsActiveFlag_VOSF LL_PWR_IsActiveFlag_VOS +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(PWR) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_PWR_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_rcc.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_rcc.h new file mode 100644 index 0000000..5f998ba --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_rcc.h @@ -0,0 +1,6135 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_rcc.h + * @author MCD Application Team + * @brief Header file of RCC LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_RCC_H +#define STM32L4xx_LL_RCC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup RCC_LL RCC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup RCC_LL_Private_Constants RCC Private Constants + * @{ + */ +/* Defines used to perform offsets*/ +/* Offset used to access to RCC_CCIPR and RCC_CCIPR2 registers */ +#define RCC_OFFSET_CCIPR 0U +#define RCC_OFFSET_CCIPR2 0x14U + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_Private_Macros RCC Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_Exported_Types RCC Exported Types + * @{ + */ + +/** @defgroup LL_ES_CLOCK_FREQ Clocks Frequency Structure + * @{ + */ + +/** + * @brief RCC Clocks Frequency Structure + */ +typedef struct +{ + uint32_t SYSCLK_Frequency; /*!< SYSCLK clock frequency */ + uint32_t HCLK_Frequency; /*!< HCLK clock frequency */ + uint32_t PCLK1_Frequency; /*!< PCLK1 clock frequency */ + uint32_t PCLK2_Frequency; /*!< PCLK2 clock frequency */ +} LL_RCC_ClocksTypeDef; + +/** + * @} + */ + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Constants RCC Exported Constants + * @{ + */ + +/** @defgroup RCC_LL_EC_OSC_VALUES Oscillator Values adaptation + * @brief Defines used to adapt values of different oscillators + * @note These values could be modified in the user environment according to + * HW set-up. + * @{ + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE 8000000U /*!< Value of the HSE oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) +#define HSI_VALUE 16000000U /*!< Value of the HSI oscillator in Hz */ +#endif /* HSI_VALUE */ + +#if !defined (LSE_VALUE) +#define LSE_VALUE 32768U /*!< Value of the LSE oscillator in Hz */ +#endif /* LSE_VALUE */ + +#if !defined (LSI_VALUE) +#define LSI_VALUE 32000U /*!< Value of the LSI oscillator in Hz */ +#endif /* LSI_VALUE */ +#if defined(RCC_HSI48_SUPPORT) + +#if !defined (HSI48_VALUE) +#define HSI48_VALUE 48000000U /*!< Value of the HSI48 oscillator in Hz */ +#endif /* HSI48_VALUE */ +#endif /* RCC_HSI48_SUPPORT */ + +#if !defined (EXTERNAL_SAI1_CLOCK_VALUE) +#define EXTERNAL_SAI1_CLOCK_VALUE 48000U /*!< Value of the SAI1_EXTCLK external oscillator in Hz */ +#endif /* EXTERNAL_SAI1_CLOCK_VALUE */ + +#if !defined (EXTERNAL_SAI2_CLOCK_VALUE) +#define EXTERNAL_SAI2_CLOCK_VALUE 48000U /*!< Value of the SAI2_EXTCLK external oscillator in Hz */ +#endif /* EXTERNAL_SAI2_CLOCK_VALUE */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_RCC_WriteReg function + * @{ + */ +#define LL_RCC_CICR_LSIRDYC RCC_CICR_LSIRDYC /*!< LSI Ready Interrupt Clear */ +#define LL_RCC_CICR_LSERDYC RCC_CICR_LSERDYC /*!< LSE Ready Interrupt Clear */ +#define LL_RCC_CICR_MSIRDYC RCC_CICR_MSIRDYC /*!< MSI Ready Interrupt Clear */ +#define LL_RCC_CICR_HSIRDYC RCC_CICR_HSIRDYC /*!< HSI Ready Interrupt Clear */ +#define LL_RCC_CICR_HSERDYC RCC_CICR_HSERDYC /*!< HSE Ready Interrupt Clear */ +#define LL_RCC_CICR_PLLRDYC RCC_CICR_PLLRDYC /*!< PLL Ready Interrupt Clear */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_CICR_HSI48RDYC RCC_CICR_HSI48RDYC /*!< HSI48 Ready Interrupt Clear */ +#endif /* RCC_HSI48_SUPPORT */ +#if defined(RCC_PLLSAI1_SUPPORT) +#define LL_RCC_CICR_PLLSAI1RDYC RCC_CICR_PLLSAI1RDYC /*!< PLLSAI1 Ready Interrupt Clear */ +#endif /* RCC_PLLSAI1_SUPPORT */ +#if defined(RCC_PLLSAI2_SUPPORT) +#define LL_RCC_CICR_PLLSAI2RDYC RCC_CICR_PLLSAI2RDYC /*!< PLLSAI2 Ready Interrupt Clear */ +#endif /* RCC_PLLSAI2_SUPPORT */ +#define LL_RCC_CICR_LSECSSC RCC_CICR_LSECSSC /*!< LSE Clock Security System Interrupt Clear */ +#define LL_RCC_CICR_CSSC RCC_CICR_CSSC /*!< Clock Security System Interrupt Clear */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_RCC_ReadReg function + * @{ + */ +#define LL_RCC_CIFR_LSIRDYF RCC_CIFR_LSIRDYF /*!< LSI Ready Interrupt flag */ +#define LL_RCC_CIFR_LSERDYF RCC_CIFR_LSERDYF /*!< LSE Ready Interrupt flag */ +#define LL_RCC_CIFR_MSIRDYF RCC_CIFR_MSIRDYF /*!< MSI Ready Interrupt flag */ +#define LL_RCC_CIFR_HSIRDYF RCC_CIFR_HSIRDYF /*!< HSI Ready Interrupt flag */ +#define LL_RCC_CIFR_HSERDYF RCC_CIFR_HSERDYF /*!< HSE Ready Interrupt flag */ +#define LL_RCC_CIFR_PLLRDYF RCC_CIFR_PLLRDYF /*!< PLL Ready Interrupt flag */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_CIFR_HSI48RDYF RCC_CIFR_HSI48RDYF /*!< HSI48 Ready Interrupt flag */ +#endif /* RCC_HSI48_SUPPORT */ +#if defined(RCC_PLLSAI1_SUPPORT) +#define LL_RCC_CIFR_PLLSAI1RDYF RCC_CIFR_PLLSAI1RDYF /*!< PLLSAI1 Ready Interrupt flag */ +#endif /* RCC_PLLSAI1_SUPPORT */ +#if defined(RCC_PLLSAI2_SUPPORT) +#define LL_RCC_CIFR_PLLSAI2RDYF RCC_CIFR_PLLSAI2RDYF /*!< PLLSAI2 Ready Interrupt flag */ +#endif /* RCC_PLLSAI2_SUPPORT */ +#define LL_RCC_CIFR_LSECSSF RCC_CIFR_LSECSSF /*!< LSE Clock Security System Interrupt flag */ +#define LL_RCC_CIFR_CSSF RCC_CIFR_CSSF /*!< Clock Security System Interrupt flag */ +#define LL_RCC_CSR_FWRSTF RCC_CSR_FWRSTF /*!< Firewall reset flag */ +#define LL_RCC_CSR_LPWRRSTF RCC_CSR_LPWRRSTF /*!< Low-Power reset flag */ +#define LL_RCC_CSR_OBLRSTF RCC_CSR_OBLRSTF /*!< OBL reset flag */ +#define LL_RCC_CSR_PINRSTF RCC_CSR_PINRSTF /*!< PIN reset flag */ +#define LL_RCC_CSR_SFTRSTF RCC_CSR_SFTRSTF /*!< Software Reset flag */ +#define LL_RCC_CSR_IWDGRSTF RCC_CSR_IWDGRSTF /*!< Independent Watchdog reset flag */ +#define LL_RCC_CSR_WWDGRSTF RCC_CSR_WWDGRSTF /*!< Window watchdog reset flag */ +#define LL_RCC_CSR_BORRSTF RCC_CSR_BORRSTF /*!< BOR reset flag */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_RCC_ReadReg and LL_RCC_WriteReg functions + * @{ + */ +#define LL_RCC_CIER_LSIRDYIE RCC_CIER_LSIRDYIE /*!< LSI Ready Interrupt Enable */ +#define LL_RCC_CIER_LSERDYIE RCC_CIER_LSERDYIE /*!< LSE Ready Interrupt Enable */ +#define LL_RCC_CIER_MSIRDYIE RCC_CIER_MSIRDYIE /*!< MSI Ready Interrupt Enable */ +#define LL_RCC_CIER_HSIRDYIE RCC_CIER_HSIRDYIE /*!< HSI Ready Interrupt Enable */ +#define LL_RCC_CIER_HSERDYIE RCC_CIER_HSERDYIE /*!< HSE Ready Interrupt Enable */ +#define LL_RCC_CIER_PLLRDYIE RCC_CIER_PLLRDYIE /*!< PLL Ready Interrupt Enable */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_CIER_HSI48RDYIE RCC_CIER_HSI48RDYIE /*!< HSI48 Ready Interrupt Enable */ +#endif /* RCC_HSI48_SUPPORT */ +#if defined(RCC_PLLSAI1_SUPPORT) +#define LL_RCC_CIER_PLLSAI1RDYIE RCC_CIER_PLLSAI1RDYIE /*!< PLLSAI1 Ready Interrupt Enable */ +#endif /* RCC_PLLSAI1_SUPPORT */ +#if defined(RCC_PLLSAI2_SUPPORT) +#define LL_RCC_CIER_PLLSAI2RDYIE RCC_CIER_PLLSAI2RDYIE /*!< PLLSAI2 Ready Interrupt Enable */ +#endif /* RCC_PLLSAI2_SUPPORT */ +#define LL_RCC_CIER_LSECSSIE RCC_CIER_LSECSSIE /*!< LSE CSS Interrupt Enable */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_LSEDRIVE LSE oscillator drive capability + * @{ + */ +#define LL_RCC_LSEDRIVE_LOW 0x00000000U /*!< Xtal mode lower driving capability */ +#define LL_RCC_LSEDRIVE_MEDIUMLOW RCC_BDCR_LSEDRV_0 /*!< Xtal mode medium low driving capability */ +#define LL_RCC_LSEDRIVE_MEDIUMHIGH RCC_BDCR_LSEDRV_1 /*!< Xtal mode medium high driving capability */ +#define LL_RCC_LSEDRIVE_HIGH RCC_BDCR_LSEDRV /*!< Xtal mode higher driving capability */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MSIRANGE MSI clock ranges + * @{ + */ +#define LL_RCC_MSIRANGE_0 RCC_CR_MSIRANGE_0 /*!< MSI = 100 KHz */ +#define LL_RCC_MSIRANGE_1 RCC_CR_MSIRANGE_1 /*!< MSI = 200 KHz */ +#define LL_RCC_MSIRANGE_2 RCC_CR_MSIRANGE_2 /*!< MSI = 400 KHz */ +#define LL_RCC_MSIRANGE_3 RCC_CR_MSIRANGE_3 /*!< MSI = 800 KHz */ +#define LL_RCC_MSIRANGE_4 RCC_CR_MSIRANGE_4 /*!< MSI = 1 MHz */ +#define LL_RCC_MSIRANGE_5 RCC_CR_MSIRANGE_5 /*!< MSI = 2 MHz */ +#define LL_RCC_MSIRANGE_6 RCC_CR_MSIRANGE_6 /*!< MSI = 4 MHz */ +#define LL_RCC_MSIRANGE_7 RCC_CR_MSIRANGE_7 /*!< MSI = 8 MHz */ +#define LL_RCC_MSIRANGE_8 RCC_CR_MSIRANGE_8 /*!< MSI = 16 MHz */ +#define LL_RCC_MSIRANGE_9 RCC_CR_MSIRANGE_9 /*!< MSI = 24 MHz */ +#define LL_RCC_MSIRANGE_10 RCC_CR_MSIRANGE_10 /*!< MSI = 32 MHz */ +#define LL_RCC_MSIRANGE_11 RCC_CR_MSIRANGE_11 /*!< MSI = 48 MHz */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MSISRANGE MSI range after Standby mode + * @{ + */ +#define LL_RCC_MSISRANGE_4 RCC_CSR_MSISRANGE_1 /*!< MSI = 1 MHz */ +#define LL_RCC_MSISRANGE_5 RCC_CSR_MSISRANGE_2 /*!< MSI = 2 MHz */ +#define LL_RCC_MSISRANGE_6 RCC_CSR_MSISRANGE_4 /*!< MSI = 4 MHz */ +#define LL_RCC_MSISRANGE_7 RCC_CSR_MSISRANGE_8 /*!< MSI = 8 MHz */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_LSCO_CLKSOURCE LSCO Selection + * @{ + */ +#define LL_RCC_LSCO_CLKSOURCE_LSI 0x00000000U /*!< LSI selection for low speed clock */ +#define LL_RCC_LSCO_CLKSOURCE_LSE RCC_BDCR_LSCOSEL /*!< LSE selection for low speed clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYS_CLKSOURCE System clock switch + * @{ + */ +#define LL_RCC_SYS_CLKSOURCE_MSI RCC_CFGR_SW_MSI /*!< MSI selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_HSI RCC_CFGR_SW_HSI /*!< HSI selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_HSE RCC_CFGR_SW_HSE /*!< HSE selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_PLL RCC_CFGR_SW_PLL /*!< PLL selection as system clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYS_CLKSOURCE_STATUS System clock switch status + * @{ + */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_MSI RCC_CFGR_SWS_MSI /*!< MSI used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_PLL RCC_CFGR_SWS_PLL /*!< PLL used as system clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYSCLK_DIV AHB prescaler + * @{ + */ +#define LL_RCC_SYSCLK_DIV_1 RCC_CFGR_HPRE_DIV1 /*!< SYSCLK not divided */ +#define LL_RCC_SYSCLK_DIV_2 RCC_CFGR_HPRE_DIV2 /*!< SYSCLK divided by 2 */ +#define LL_RCC_SYSCLK_DIV_4 RCC_CFGR_HPRE_DIV4 /*!< SYSCLK divided by 4 */ +#define LL_RCC_SYSCLK_DIV_8 RCC_CFGR_HPRE_DIV8 /*!< SYSCLK divided by 8 */ +#define LL_RCC_SYSCLK_DIV_16 RCC_CFGR_HPRE_DIV16 /*!< SYSCLK divided by 16 */ +#define LL_RCC_SYSCLK_DIV_64 RCC_CFGR_HPRE_DIV64 /*!< SYSCLK divided by 64 */ +#define LL_RCC_SYSCLK_DIV_128 RCC_CFGR_HPRE_DIV128 /*!< SYSCLK divided by 128 */ +#define LL_RCC_SYSCLK_DIV_256 RCC_CFGR_HPRE_DIV256 /*!< SYSCLK divided by 256 */ +#define LL_RCC_SYSCLK_DIV_512 RCC_CFGR_HPRE_DIV512 /*!< SYSCLK divided by 512 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_APB1_DIV APB low-speed prescaler (APB1) + * @{ + */ +#define LL_RCC_APB1_DIV_1 RCC_CFGR_PPRE1_DIV1 /*!< HCLK not divided */ +#define LL_RCC_APB1_DIV_2 RCC_CFGR_PPRE1_DIV2 /*!< HCLK divided by 2 */ +#define LL_RCC_APB1_DIV_4 RCC_CFGR_PPRE1_DIV4 /*!< HCLK divided by 4 */ +#define LL_RCC_APB1_DIV_8 RCC_CFGR_PPRE1_DIV8 /*!< HCLK divided by 8 */ +#define LL_RCC_APB1_DIV_16 RCC_CFGR_PPRE1_DIV16 /*!< HCLK divided by 16 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_APB2_DIV APB high-speed prescaler (APB2) + * @{ + */ +#define LL_RCC_APB2_DIV_1 RCC_CFGR_PPRE2_DIV1 /*!< HCLK not divided */ +#define LL_RCC_APB2_DIV_2 RCC_CFGR_PPRE2_DIV2 /*!< HCLK divided by 2 */ +#define LL_RCC_APB2_DIV_4 RCC_CFGR_PPRE2_DIV4 /*!< HCLK divided by 4 */ +#define LL_RCC_APB2_DIV_8 RCC_CFGR_PPRE2_DIV8 /*!< HCLK divided by 8 */ +#define LL_RCC_APB2_DIV_16 RCC_CFGR_PPRE2_DIV16 /*!< HCLK divided by 16 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_STOP_WAKEUPCLOCK Wakeup from Stop and CSS backup clock selection + * @{ + */ +#define LL_RCC_STOP_WAKEUPCLOCK_MSI 0x00000000U /*!< MSI selection after wake-up from STOP */ +#define LL_RCC_STOP_WAKEUPCLOCK_HSI RCC_CFGR_STOPWUCK /*!< HSI selection after wake-up from STOP */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MCO1SOURCE MCO1 SOURCE selection + * @{ + */ +#define LL_RCC_MCO1SOURCE_NOCLOCK 0x00000000U /*!< MCO output disabled, no clock on MCO */ +#define LL_RCC_MCO1SOURCE_SYSCLK RCC_CFGR_MCOSEL_0 /*!< SYSCLK selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_MSI RCC_CFGR_MCOSEL_1 /*!< MSI selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_HSI (RCC_CFGR_MCOSEL_0| RCC_CFGR_MCOSEL_1) /*!< HSI16 selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_HSE RCC_CFGR_MCOSEL_2 /*!< HSE selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_PLLCLK (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_2) /*!< Main PLL selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_LSI (RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSI selection as MCO1 source */ +#define LL_RCC_MCO1SOURCE_LSE (RCC_CFGR_MCOSEL_0|RCC_CFGR_MCOSEL_1|RCC_CFGR_MCOSEL_2) /*!< LSE selection as MCO1 source */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_MCO1SOURCE_HSI48 RCC_CFGR_MCOSEL_3 /*!< HSI48 selection as MCO1 source */ +#endif /* RCC_HSI48_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MCO1_DIV MCO1 prescaler + * @{ + */ +#define LL_RCC_MCO1_DIV_1 RCC_CFGR_MCOPRE_DIV1 /*!< MCO not divided */ +#define LL_RCC_MCO1_DIV_2 RCC_CFGR_MCOPRE_DIV2 /*!< MCO divided by 2 */ +#define LL_RCC_MCO1_DIV_4 RCC_CFGR_MCOPRE_DIV4 /*!< MCO divided by 4 */ +#define LL_RCC_MCO1_DIV_8 RCC_CFGR_MCOPRE_DIV8 /*!< MCO divided by 8 */ +#define LL_RCC_MCO1_DIV_16 RCC_CFGR_MCOPRE_DIV16 /*!< MCO divided by 16 */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_EC_PERIPH_FREQUENCY Peripheral clock frequency + * @{ + */ +#define LL_RCC_PERIPH_FREQUENCY_NO 0x00000000U /*!< No clock enabled for the peripheral */ +#define LL_RCC_PERIPH_FREQUENCY_NA 0xFFFFFFFFU /*!< Frequency cannot be provided as external clock */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup RCC_LL_EC_USART1_CLKSOURCE Peripheral USART clock source selection + * @{ + */ +#define LL_RCC_USART1_CLKSOURCE_PCLK2 (RCC_CCIPR_USART1SEL << 16U) /*!< PCLK2 clock used as USART1 clock source */ +#define LL_RCC_USART1_CLKSOURCE_SYSCLK ((RCC_CCIPR_USART1SEL << 16U) | RCC_CCIPR_USART1SEL_0) /*!< SYSCLK clock used as USART1 clock source */ +#define LL_RCC_USART1_CLKSOURCE_HSI ((RCC_CCIPR_USART1SEL << 16U) | RCC_CCIPR_USART1SEL_1) /*!< HSI clock used as USART1 clock source */ +#define LL_RCC_USART1_CLKSOURCE_LSE ((RCC_CCIPR_USART1SEL << 16U) | RCC_CCIPR_USART1SEL) /*!< LSE clock used as USART1 clock source */ +#define LL_RCC_USART2_CLKSOURCE_PCLK1 (RCC_CCIPR_USART2SEL << 16U) /*!< PCLK1 clock used as USART2 clock source */ +#define LL_RCC_USART2_CLKSOURCE_SYSCLK ((RCC_CCIPR_USART2SEL << 16U) | RCC_CCIPR_USART2SEL_0) /*!< SYSCLK clock used as USART2 clock source */ +#define LL_RCC_USART2_CLKSOURCE_HSI ((RCC_CCIPR_USART2SEL << 16U) | RCC_CCIPR_USART2SEL_1) /*!< HSI clock used as USART2 clock source */ +#define LL_RCC_USART2_CLKSOURCE_LSE ((RCC_CCIPR_USART2SEL << 16U) | RCC_CCIPR_USART2SEL) /*!< LSE clock used as USART2 clock source */ +#if defined(RCC_CCIPR_USART3SEL) +#define LL_RCC_USART3_CLKSOURCE_PCLK1 (RCC_CCIPR_USART3SEL << 16U) /*!< PCLK1 clock used as USART3 clock source */ +#define LL_RCC_USART3_CLKSOURCE_SYSCLK ((RCC_CCIPR_USART3SEL << 16U) | RCC_CCIPR_USART3SEL_0) /*!< SYSCLK clock used as USART3 clock source */ +#define LL_RCC_USART3_CLKSOURCE_HSI ((RCC_CCIPR_USART3SEL << 16U) | RCC_CCIPR_USART3SEL_1) /*!< HSI clock used as USART3 clock source */ +#define LL_RCC_USART3_CLKSOURCE_LSE ((RCC_CCIPR_USART3SEL << 16U) | RCC_CCIPR_USART3SEL) /*!< LSE clock used as USART3 clock source */ +#endif /* RCC_CCIPR_USART3SEL */ +/** + * @} + */ + +#if defined(RCC_CCIPR_UART4SEL) || defined(RCC_CCIPR_UART5SEL) +/** @defgroup RCC_LL_EC_UART4_CLKSOURCE Peripheral UART clock source selection + * @{ + */ +#if defined(RCC_CCIPR_UART4SEL) +#define LL_RCC_UART4_CLKSOURCE_PCLK1 (RCC_CCIPR_UART4SEL << 16U) /*!< PCLK1 clock used as UART4 clock source */ +#define LL_RCC_UART4_CLKSOURCE_SYSCLK ((RCC_CCIPR_UART4SEL << 16U) | RCC_CCIPR_UART4SEL_0) /*!< SYSCLK clock used as UART4 clock source */ +#define LL_RCC_UART4_CLKSOURCE_HSI ((RCC_CCIPR_UART4SEL << 16U) | RCC_CCIPR_UART4SEL_1) /*!< HSI clock used as UART4 clock source */ +#define LL_RCC_UART4_CLKSOURCE_LSE ((RCC_CCIPR_UART4SEL << 16U) | RCC_CCIPR_UART4SEL) /*!< LSE clock used as UART4 clock source */ +#endif /* RCC_CCIPR_UART4SEL */ +#if defined(RCC_CCIPR_UART5SEL) +#define LL_RCC_UART5_CLKSOURCE_PCLK1 (RCC_CCIPR_UART5SEL << 16U) /*!< PCLK1 clock used as UART5 clock source */ +#define LL_RCC_UART5_CLKSOURCE_SYSCLK ((RCC_CCIPR_UART5SEL << 16U) | RCC_CCIPR_UART5SEL_0) /*!< SYSCLK clock used as UART5 clock source */ +#define LL_RCC_UART5_CLKSOURCE_HSI ((RCC_CCIPR_UART5SEL << 16U) | RCC_CCIPR_UART5SEL_1) /*!< HSI clock used as UART5 clock source */ +#define LL_RCC_UART5_CLKSOURCE_LSE ((RCC_CCIPR_UART5SEL << 16U) | RCC_CCIPR_UART5SEL) /*!< LSE clock used as UART5 clock source */ +#endif /* RCC_CCIPR_UART5SEL */ +/** + * @} + */ +#endif /* RCC_CCIPR_UART4SEL || RCC_CCIPR_UART5SEL */ + +/** @defgroup RCC_LL_EC_LPUART1_CLKSOURCE Peripheral LPUART clock source selection + * @{ + */ +#define LL_RCC_LPUART1_CLKSOURCE_PCLK1 0x00000000U /*!< PCLK1 clock used as LPUART1 clock source */ +#define LL_RCC_LPUART1_CLKSOURCE_SYSCLK RCC_CCIPR_LPUART1SEL_0 /*!< SYSCLK clock used as LPUART1 clock source */ +#define LL_RCC_LPUART1_CLKSOURCE_HSI RCC_CCIPR_LPUART1SEL_1 /*!< HSI clock used as LPUART1 clock source */ +#define LL_RCC_LPUART1_CLKSOURCE_LSE RCC_CCIPR_LPUART1SEL /*!< LSE clock used as LPUART1 clock source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_I2C1_CLKSOURCE Peripheral I2C clock source selection + * @{ + */ +#define LL_RCC_I2C1_CLKSOURCE_PCLK1 ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C1SEL_Pos << 16U)) /*!< PCLK1 clock used as I2C1 clock source */ +#define LL_RCC_I2C1_CLKSOURCE_SYSCLK ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C1SEL_Pos << 16U) | (RCC_CCIPR_I2C1SEL_0 >> RCC_CCIPR_I2C1SEL_Pos)) /*!< SYSCLK clock used as I2C1 clock source */ +#define LL_RCC_I2C1_CLKSOURCE_HSI ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C1SEL_Pos << 16U) | (RCC_CCIPR_I2C1SEL_1 >> RCC_CCIPR_I2C1SEL_Pos)) /*!< HSI clock used as I2C1 clock source */ +#if defined(RCC_CCIPR_I2C2SEL) +#define LL_RCC_I2C2_CLKSOURCE_PCLK1 ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C2SEL_Pos << 16U)) /*!< PCLK1 clock used as I2C2 clock source */ +#define LL_RCC_I2C2_CLKSOURCE_SYSCLK ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C2SEL_Pos << 16U) | (RCC_CCIPR_I2C2SEL_0 >> RCC_CCIPR_I2C2SEL_Pos)) /*!< SYSCLK clock used as I2C2 clock source */ +#define LL_RCC_I2C2_CLKSOURCE_HSI ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C2SEL_Pos << 16U) | (RCC_CCIPR_I2C2SEL_1 >> RCC_CCIPR_I2C2SEL_Pos)) /*!< HSI clock used as I2C2 clock source */ +#endif /* RCC_CCIPR_I2C2SEL */ +#define LL_RCC_I2C3_CLKSOURCE_PCLK1 ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C3SEL_Pos << 16U)) /*!< PCLK1 clock used as I2C3 clock source */ +#define LL_RCC_I2C3_CLKSOURCE_SYSCLK ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C3SEL_Pos << 16U) | (RCC_CCIPR_I2C3SEL_0 >> RCC_CCIPR_I2C3SEL_Pos)) /*!< SYSCLK clock used as I2C3 clock source */ +#define LL_RCC_I2C3_CLKSOURCE_HSI ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C3SEL_Pos << 16U) | (RCC_CCIPR_I2C3SEL_1 >> RCC_CCIPR_I2C3SEL_Pos)) /*!< HSI clock used as I2C3 clock source */ +#if defined(RCC_CCIPR2_I2C4SEL) +#define LL_RCC_I2C4_CLKSOURCE_PCLK1 ((RCC_OFFSET_CCIPR2 << 24U) | (RCC_CCIPR2_I2C4SEL_Pos << 16U)) /*!< PCLK1 clock used as I2C4 clock source */ +#define LL_RCC_I2C4_CLKSOURCE_SYSCLK ((RCC_OFFSET_CCIPR2 << 24U) | (RCC_CCIPR2_I2C4SEL_Pos << 16U) | (RCC_CCIPR2_I2C4SEL_0 >> RCC_CCIPR2_I2C4SEL_Pos)) /*!< SYSCLK clock used as I2C4 clock source */ +#define LL_RCC_I2C4_CLKSOURCE_HSI ((RCC_OFFSET_CCIPR2 << 24U) | (RCC_CCIPR2_I2C4SEL_Pos << 16U) | (RCC_CCIPR2_I2C4SEL_1 >> RCC_CCIPR2_I2C4SEL_Pos)) /*!< HSI clock used as I2C4 clock source */ +#endif /* RCC_CCIPR2_I2C4SEL */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_LPTIM1_CLKSOURCE Peripheral LPTIM clock source selection + * @{ + */ +#define LL_RCC_LPTIM1_CLKSOURCE_PCLK1 RCC_CCIPR_LPTIM1SEL /*!< PCLK1 clock used as LPTIM1 clock source */ +#define LL_RCC_LPTIM1_CLKSOURCE_LSI (RCC_CCIPR_LPTIM1SEL | (RCC_CCIPR_LPTIM1SEL_0 >> 16U)) /*!< LSI clock used as LPTIM1 clock source */ +#define LL_RCC_LPTIM1_CLKSOURCE_HSI (RCC_CCIPR_LPTIM1SEL | (RCC_CCIPR_LPTIM1SEL_1 >> 16U)) /*!< HSI clock used as LPTIM1 clock source */ +#define LL_RCC_LPTIM1_CLKSOURCE_LSE (RCC_CCIPR_LPTIM1SEL | (RCC_CCIPR_LPTIM1SEL >> 16U)) /*!< LSE clock used as LPTIM1 clock source */ +#define LL_RCC_LPTIM2_CLKSOURCE_PCLK1 RCC_CCIPR_LPTIM2SEL /*!< PCLK1 clock used as LPTIM2 clock source */ +#define LL_RCC_LPTIM2_CLKSOURCE_LSI (RCC_CCIPR_LPTIM2SEL | (RCC_CCIPR_LPTIM2SEL_0 >> 16U)) /*!< LSI clock used as LPTIM2 clock source */ +#define LL_RCC_LPTIM2_CLKSOURCE_HSI (RCC_CCIPR_LPTIM2SEL | (RCC_CCIPR_LPTIM2SEL_1 >> 16U)) /*!< HSI clock used as LPTIM2 clock source */ +#define LL_RCC_LPTIM2_CLKSOURCE_LSE (RCC_CCIPR_LPTIM2SEL | (RCC_CCIPR_LPTIM2SEL >> 16U)) /*!< LSE clock used as LPTIM2 clock source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SAI1_CLKSOURCE Peripheral SAI clock source selection + * @{ + */ +#if defined(RCC_CCIPR2_SAI1SEL) +#define LL_RCC_SAI1_CLKSOURCE_PLL (RCC_CCIPR2_SAI1SEL << 16U) /*!< PLL clock used as SAI1 clock source */ +#define LL_RCC_SAI1_CLKSOURCE_PLLSAI1 ((RCC_CCIPR2_SAI1SEL << 16U) | RCC_CCIPR2_SAI1SEL_0) /*!< PLLSAI1 clock used as SAI1 clock source */ +#define LL_RCC_SAI1_CLKSOURCE_PLLSAI2 ((RCC_CCIPR2_SAI1SEL << 16U) | RCC_CCIPR2_SAI1SEL_1) /*!< PLLSAI2 clock used as SAI1 clock source */ +#define LL_RCC_SAI1_CLKSOURCE_HSI ((RCC_CCIPR2_SAI1SEL << 16U) | RCC_CCIPR2_SAI1SEL_2) /*!< HSI clock used as SAI1 clock source */ +#define LL_RCC_SAI1_CLKSOURCE_PIN ((RCC_CCIPR2_SAI1SEL << 16U) | (RCC_CCIPR2_SAI1SEL_1 | RCC_CCIPR2_SAI1SEL_0)) /*!< External input clock used as SAI1 clock source */ +#elif defined(RCC_CCIPR_SAI1SEL) +#define LL_RCC_SAI1_CLKSOURCE_PLLSAI1 RCC_CCIPR_SAI1SEL /*!< PLLSAI1 clock used as SAI1 clock source */ +#if defined(RCC_PLLSAI2_SUPPORT) +#define LL_RCC_SAI1_CLKSOURCE_PLLSAI2 (RCC_CCIPR_SAI1SEL | (RCC_CCIPR_SAI1SEL_0 >> 16U)) /*!< PLLSAI2 clock used as SAI1 clock source */ +#endif /* RCC_PLLSAI2_SUPPORT */ +#define LL_RCC_SAI1_CLKSOURCE_PLL (RCC_CCIPR_SAI1SEL | (RCC_CCIPR_SAI1SEL_1 >> 16U)) /*!< PLL clock used as SAI1 clock source */ +#define LL_RCC_SAI1_CLKSOURCE_PIN (RCC_CCIPR_SAI1SEL | (RCC_CCIPR_SAI1SEL >> 16U)) /*!< External input clock used as SAI1 clock source */ +#endif /* RCC_CCIPR2_SAI1SEL */ + +#if defined(RCC_CCIPR2_SAI2SEL) +#define LL_RCC_SAI2_CLKSOURCE_PLL (RCC_CCIPR2_SAI2SEL << 16U) /*!< PLL clock used as SAI2 clock source */ +#define LL_RCC_SAI2_CLKSOURCE_PLLSAI1 ((RCC_CCIPR2_SAI2SEL << 16U) | RCC_CCIPR2_SAI2SEL_0) /*!< PLLSAI1 clock used as SAI2 clock source */ +#define LL_RCC_SAI2_CLKSOURCE_PLLSAI2 ((RCC_CCIPR2_SAI2SEL << 16U) | RCC_CCIPR2_SAI2SEL_1) /*!< PLLSAI2 clock used as SAI2 clock source */ +#define LL_RCC_SAI2_CLKSOURCE_HSI ((RCC_CCIPR2_SAI2SEL << 16U) | RCC_CCIPR2_SAI2SEL_2) /*!< HSI clock used as SAI2 clock source */ +#define LL_RCC_SAI2_CLKSOURCE_PIN ((RCC_CCIPR2_SAI2SEL << 16U) | (RCC_CCIPR2_SAI2SEL_1 | RCC_CCIPR2_SAI2SEL_0)) /*!< External input clock used as SAI2 clock source */ +#elif defined(RCC_CCIPR_SAI2SEL) +#define LL_RCC_SAI2_CLKSOURCE_PLLSAI1 RCC_CCIPR_SAI2SEL /*!< PLLSAI1 clock used as SAI2 clock source */ +#if defined(RCC_PLLSAI2_SUPPORT) +#define LL_RCC_SAI2_CLKSOURCE_PLLSAI2 (RCC_CCIPR_SAI2SEL | (RCC_CCIPR_SAI2SEL_0 >> 16U)) /*!< PLLSAI2 clock used as SAI2 clock source */ +#endif /* RCC_PLLSAI2_SUPPORT */ +#define LL_RCC_SAI2_CLKSOURCE_PLL (RCC_CCIPR_SAI2SEL | (RCC_CCIPR_SAI2SEL_1 >> 16U)) /*!< PLL clock used as SAI2 clock source */ +#define LL_RCC_SAI2_CLKSOURCE_PIN (RCC_CCIPR_SAI2SEL | (RCC_CCIPR_SAI2SEL >> 16U)) /*!< External input clock used as SAI2 clock source */ +#endif /* RCC_CCIPR2_SAI2SEL */ +/** + * @} + */ + +#if defined(RCC_CCIPR2_SDMMCSEL) +/** @defgroup RCC_LL_EC_SDMMC1_KERNELCLKSOURCE Peripheral SDMMC kernel clock source selection + * @{ + */ +#define LL_RCC_SDMMC1_KERNELCLKSOURCE_48CLK 0x00000000U /*!< 48MHz clock from internal multiplexor used as SDMMC1 clock source */ +#define LL_RCC_SDMMC1_KERNELCLKSOURCE_PLLP RCC_CCIPR2_SDMMCSEL /*!< PLLSAI3CLK clock used as SDMMC1 clock source */ +/** + * @} + */ +#endif /* RCC_CCIPR2_SDMMCSEL */ + +#if defined(SDMMC1) +/** @defgroup RCC_LL_EC_SDMMC1_CLKSOURCE Peripheral SDMMC clock source selection + * @{ + */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_SDMMC1_CLKSOURCE_HSI48 0x00000000U /*!< HSI48 clock used as SDMMC1 clock source */ +#else +#define LL_RCC_SDMMC1_CLKSOURCE_NONE 0x00000000U /*!< No clock used as SDMMC1 clock source */ +#endif +#if defined(RCC_PLLSAI1_SUPPORT) +#define LL_RCC_SDMMC1_CLKSOURCE_PLLSAI1 RCC_CCIPR_CLK48SEL_0 /*!< PLLSAI1 clock used as SDMMC1 clock source */ +#endif /* RCC_PLLSAI1_SUPPORT */ +#define LL_RCC_SDMMC1_CLKSOURCE_PLL RCC_CCIPR_CLK48SEL_1 /*!< PLL clock used as SDMMC1 clock source */ +#define LL_RCC_SDMMC1_CLKSOURCE_MSI RCC_CCIPR_CLK48SEL /*!< MSI clock used as SDMMC1 clock source */ +/** + * @} + */ +#endif /* SDMMC1 */ + +/** @defgroup RCC_LL_EC_RNG_CLKSOURCE Peripheral RNG clock source selection + * @{ + */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_RNG_CLKSOURCE_HSI48 0x00000000U /*!< HSI48 clock used as RNG clock source */ +#else +#define LL_RCC_RNG_CLKSOURCE_NONE 0x00000000U /*!< No clock used as RNG clock source */ +#endif +#if defined(RCC_PLLSAI1_SUPPORT) +#define LL_RCC_RNG_CLKSOURCE_PLLSAI1 RCC_CCIPR_CLK48SEL_0 /*!< PLLSAI1 clock used as RNG clock source */ +#endif /* RCC_PLLSAI1_SUPPORT */ +#define LL_RCC_RNG_CLKSOURCE_PLL RCC_CCIPR_CLK48SEL_1 /*!< PLL clock used as RNG clock source */ +#define LL_RCC_RNG_CLKSOURCE_MSI RCC_CCIPR_CLK48SEL /*!< MSI clock used as RNG clock source */ +/** + * @} + */ + +#if defined(USB_OTG_FS) || defined(USB) +/** @defgroup RCC_LL_EC_USB_CLKSOURCE Peripheral USB clock source selection + * @{ + */ +#if defined(RCC_HSI48_SUPPORT) +#define LL_RCC_USB_CLKSOURCE_HSI48 0x00000000U /*!< HSI48 clock used as USB clock source */ +#else +#define LL_RCC_USB_CLKSOURCE_NONE 0x00000000U /*!< No clock used as USB clock source */ +#endif +#if defined(RCC_PLLSAI1_SUPPORT) +#define LL_RCC_USB_CLKSOURCE_PLLSAI1 RCC_CCIPR_CLK48SEL_0 /*!< PLLSAI1 clock used as USB clock source */ +#endif /* RCC_PLLSAI1_SUPPORT */ +#define LL_RCC_USB_CLKSOURCE_PLL RCC_CCIPR_CLK48SEL_1 /*!< PLL clock used as USB clock source */ +#define LL_RCC_USB_CLKSOURCE_MSI RCC_CCIPR_CLK48SEL /*!< MSI clock used as USB clock source */ +/** + * @} + */ + +#endif /* USB_OTG_FS || USB */ + +/** @defgroup RCC_LL_EC_ADC_CLKSOURCE Peripheral ADC clock source selection + * @{ + */ +#define LL_RCC_ADC_CLKSOURCE_NONE 0x00000000U /*!< No clock used as ADC clock source */ +#if defined(RCC_PLLSAI1_SUPPORT) +#define LL_RCC_ADC_CLKSOURCE_PLLSAI1 RCC_CCIPR_ADCSEL_0 /*!< PLLSAI1 clock used as ADC clock source */ +#endif /* RCC_PLLSAI1_SUPPORT */ +#if defined(RCC_PLLSAI2_SUPPORT) && !defined(LTDC) +#define LL_RCC_ADC_CLKSOURCE_PLLSAI2 RCC_CCIPR_ADCSEL_1 /*!< PLLSAI2 clock used as ADC clock source */ +#endif /* RCC_PLLSAI2_SUPPORT */ +#if defined(RCC_CCIPR_ADCSEL) +#define LL_RCC_ADC_CLKSOURCE_SYSCLK RCC_CCIPR_ADCSEL /*!< SYSCLK clock used as ADC clock source */ +#else +#define LL_RCC_ADC_CLKSOURCE_SYSCLK 0x30000000U /*!< SYSCLK clock used as ADC clock source */ +#endif +/** + * @} + */ + +#if defined(SWPMI1) +/** @defgroup RCC_LL_EC_SWPMI1_CLKSOURCE Peripheral SWPMI1 clock source selection + * @{ + */ +#define LL_RCC_SWPMI1_CLKSOURCE_PCLK1 0x00000000U /*!< PCLK1 used as SWPMI1 clock source */ +#define LL_RCC_SWPMI1_CLKSOURCE_HSI RCC_CCIPR_SWPMI1SEL /*!< HSI used as SWPMI1 clock source */ +/** + * @} + */ +#endif /* SWPMI1 */ + +#if defined(DFSDM1_Channel0) +#if defined(RCC_CCIPR2_ADFSDM1SEL) +/** @defgroup RCC_LL_EC_DFSDM1_AUDIO_CLKSOURCE Peripheral DFSDM1 Audio clock source selection + * @{ + */ +#define LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 0x00000000U /*!< SAI1 clock used as DFSDM1 Audio clock */ +#define LL_RCC_DFSDM1_AUDIO_CLKSOURCE_HSI RCC_CCIPR2_ADFSDM1SEL_0 /*!< HSI clock used as DFSDM1 Audio clock */ +#define LL_RCC_DFSDM1_AUDIO_CLKSOURCE_MSI RCC_CCIPR2_ADFSDM1SEL_1 /*!< MSI clock used as DFSDM1 Audio clock */ +/** + * @} + */ +#endif /* RCC_CCIPR2_ADFSDM1SEL */ + +/** @defgroup RCC_LL_EC_DFSDM1_CLKSOURCE Peripheral DFSDM1 clock source selection + * @{ + */ +#if defined(RCC_CCIPR2_DFSDM1SEL) +#define LL_RCC_DFSDM1_CLKSOURCE_PCLK2 0x00000000U /*!< PCLK2 used as DFSDM1 clock source */ +#define LL_RCC_DFSDM1_CLKSOURCE_SYSCLK RCC_CCIPR2_DFSDM1SEL /*!< SYSCLK used as DFSDM1 clock source */ +#else +#define LL_RCC_DFSDM1_CLKSOURCE_PCLK2 0x00000000U /*!< PCLK2 used as DFSDM1 clock source */ +#define LL_RCC_DFSDM1_CLKSOURCE_SYSCLK RCC_CCIPR_DFSDM1SEL /*!< SYSCLK used as DFSDM1 clock source */ +#endif /* RCC_CCIPR2_DFSDM1SEL */ +/** + * @} + */ +#endif /* DFSDM1_Channel0 */ + +#if defined(DSI) +/** @defgroup RCC_LL_EC_DSI_CLKSOURCE Peripheral DSI clock source selection + * @{ + */ +#define LL_RCC_DSI_CLKSOURCE_PHY 0x00000000U /*!< DSI-PHY clock used as DSI byte lane clock source */ +#define LL_RCC_DSI_CLKSOURCE_PLL RCC_CCIPR2_DSISEL /*!< PLL clock used as DSI byte lane clock source */ +/** + * @} + */ +#endif /* DSI */ + +#if defined(LTDC) +/** @defgroup RCC_LL_EC_LTDC_CLKSOURCE Peripheral LTDC clock source selection + * @{ + */ +#define LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV2 0x00000000U /*!< PLLSAI2DIVR divided by 2 used as LTDC clock source */ +#define LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV4 RCC_CCIPR2_PLLSAI2DIVR_0 /*!< PLLSAI2DIVR divided by 4 used as LTDC clock source */ +#define LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV8 RCC_CCIPR2_PLLSAI2DIVR_1 /*!< PLLSAI2DIVR divided by 8 used as LTDC clock source */ +#define LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV16 RCC_CCIPR2_PLLSAI2DIVR /*!< PLLSAI2DIVR divided by 16 used as LTDC clock source */ +/** + * @} + */ +#endif /* LTDC */ + +#if defined(OCTOSPI1) +/** @defgroup RCC_LL_EC_OCTOSPI Peripheral OCTOSPI get clock source + * @{ + */ +#define LL_RCC_OCTOSPI_CLKSOURCE_SYSCLK 0x00000000U /*!< SYSCLK used as OctoSPI clock source */ +#define LL_RCC_OCTOSPI_CLKSOURCE_MSI RCC_CCIPR2_OSPISEL_0 /*!< MSI used as OctoSPI clock source */ +#define LL_RCC_OCTOSPI_CLKSOURCE_PLL RCC_CCIPR2_OSPISEL_1 /*!< PLL used as OctoSPI clock source */ +/** + * @} + */ +#endif /* OCTOSPI1 */ + +/** @defgroup RCC_LL_EC_USART1 Peripheral USART get clock source + * @{ + */ +#define LL_RCC_USART1_CLKSOURCE RCC_CCIPR_USART1SEL /*!< USART1 Clock source selection */ +#define LL_RCC_USART2_CLKSOURCE RCC_CCIPR_USART2SEL /*!< USART2 Clock source selection */ +#if defined(RCC_CCIPR_USART3SEL) +#define LL_RCC_USART3_CLKSOURCE RCC_CCIPR_USART3SEL /*!< USART3 Clock source selection */ +#endif /* RCC_CCIPR_USART3SEL */ +/** + * @} + */ + +#if defined(RCC_CCIPR_UART4SEL) || defined(RCC_CCIPR_UART5SEL) +/** @defgroup RCC_LL_EC_UART4 Peripheral UART get clock source + * @{ + */ +#if defined(RCC_CCIPR_UART4SEL) +#define LL_RCC_UART4_CLKSOURCE RCC_CCIPR_UART4SEL /*!< UART4 Clock source selection */ +#endif /* RCC_CCIPR_UART4SEL */ +#if defined(RCC_CCIPR_UART5SEL) +#define LL_RCC_UART5_CLKSOURCE RCC_CCIPR_UART5SEL /*!< UART5 Clock source selection */ +#endif /* RCC_CCIPR_UART5SEL */ +/** + * @} + */ +#endif /* RCC_CCIPR_UART4SEL || RCC_CCIPR_UART5SEL */ + +/** @defgroup RCC_LL_EC_LPUART1 Peripheral LPUART get clock source + * @{ + */ +#define LL_RCC_LPUART1_CLKSOURCE RCC_CCIPR_LPUART1SEL /*!< LPUART1 Clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_I2C1 Peripheral I2C get clock source + * @{ + */ +#define LL_RCC_I2C1_CLKSOURCE ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C1SEL_Pos << 16U) | (RCC_CCIPR_I2C1SEL >> RCC_CCIPR_I2C1SEL_Pos)) /*!< I2C1 Clock source selection */ +#if defined(RCC_CCIPR_I2C2SEL) +#define LL_RCC_I2C2_CLKSOURCE ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C2SEL_Pos << 16U) | (RCC_CCIPR_I2C2SEL >> RCC_CCIPR_I2C2SEL_Pos)) /*!< I2C2 Clock source selection */ +#endif /* RCC_CCIPR_I2C2SEL */ +#define LL_RCC_I2C3_CLKSOURCE ((RCC_OFFSET_CCIPR << 24U) | (RCC_CCIPR_I2C3SEL_Pos << 16U) | (RCC_CCIPR_I2C3SEL >> RCC_CCIPR_I2C3SEL_Pos)) /*!< I2C3 Clock source selection */ +#if defined(RCC_CCIPR2_I2C4SEL) +#define LL_RCC_I2C4_CLKSOURCE ((RCC_OFFSET_CCIPR2 << 24U) | (RCC_CCIPR2_I2C4SEL_Pos << 16U) | (RCC_CCIPR2_I2C4SEL >> RCC_CCIPR2_I2C4SEL_Pos)) /*!< I2C4 Clock source selection */ +#endif /* RCC_CCIPR2_I2C4SEL */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_LPTIM1 Peripheral LPTIM get clock source + * @{ + */ +#define LL_RCC_LPTIM1_CLKSOURCE RCC_CCIPR_LPTIM1SEL /*!< LPTIM1 Clock source selection */ +#define LL_RCC_LPTIM2_CLKSOURCE RCC_CCIPR_LPTIM2SEL /*!< LPTIM2 Clock source selection */ +/** + * @} + */ + +#if defined(RCC_CCIPR_SAI1SEL) || defined(RCC_CCIPR2_SAI1SEL) +/** @defgroup RCC_LL_EC_SAI1 Peripheral SAI get clock source + * @{ + */ +#if defined(RCC_CCIPR2_SAI1SEL) +#define LL_RCC_SAI1_CLKSOURCE RCC_CCIPR2_SAI1SEL /*!< SAI1 Clock source selection */ +#else +#define LL_RCC_SAI1_CLKSOURCE RCC_CCIPR_SAI1SEL /*!< SAI1 Clock source selection */ +#endif /* RCC_CCIPR2_SAI1SEL */ +#if defined(RCC_CCIPR2_SAI2SEL) +#define LL_RCC_SAI2_CLKSOURCE RCC_CCIPR2_SAI2SEL /*!< SAI2 Clock source selection */ +#elif defined(RCC_CCIPR_SAI2SEL) +#define LL_RCC_SAI2_CLKSOURCE RCC_CCIPR_SAI2SEL /*!< SAI2 Clock source selection */ +#endif /* RCC_CCIPR2_SAI2SEL */ +/** + * @} + */ +#endif /* RCC_CCIPR_SAI1SEL || RCC_CCIPR2_SAI1SEL */ + +#if defined(SDMMC1) +#if defined(RCC_CCIPR2_SDMMCSEL) +/** @defgroup RCC_LL_EC_SDMMC1_KERNEL Peripheral SDMMC get kernel clock source + * @{ + */ +#define LL_RCC_SDMMC1_KERNELCLKSOURCE RCC_CCIPR2_SDMMCSEL /*!< SDMMC1 Kernel Clock source selection */ +/** + * @} + */ +#endif /* RCC_CCIPR2_SDMMCSEL */ + +/** @defgroup RCC_LL_EC_SDMMC1 Peripheral SDMMC get clock source + * @{ + */ +#define LL_RCC_SDMMC1_CLKSOURCE RCC_CCIPR_CLK48SEL /*!< SDMMC1 Clock source selection */ +/** + * @} + */ +#endif /* SDMMC1 */ + +/** @defgroup RCC_LL_EC_RNG Peripheral RNG get clock source + * @{ + */ +#define LL_RCC_RNG_CLKSOURCE RCC_CCIPR_CLK48SEL /*!< RNG Clock source selection */ +/** + * @} + */ + +#if defined(USB_OTG_FS) || defined(USB) +/** @defgroup RCC_LL_EC_USB Peripheral USB get clock source + * @{ + */ +#define LL_RCC_USB_CLKSOURCE RCC_CCIPR_CLK48SEL /*!< USB Clock source selection */ +/** + * @} + */ +#endif /* USB_OTG_FS || USB */ + +/** @defgroup RCC_LL_EC_ADC Peripheral ADC get clock source + * @{ + */ +#if defined(RCC_CCIPR_ADCSEL) +#define LL_RCC_ADC_CLKSOURCE RCC_CCIPR_ADCSEL /*!< ADC Clock source selection */ +#else +#define LL_RCC_ADC_CLKSOURCE 0x30000000U /*!< ADC Clock source selection */ +#endif +/** + * @} + */ + +#if defined(SWPMI1) +/** @defgroup RCC_LL_EC_SWPMI1 Peripheral SWPMI1 get clock source + * @{ + */ +#define LL_RCC_SWPMI1_CLKSOURCE RCC_CCIPR_SWPMI1SEL /*!< SWPMI1 Clock source selection */ +/** + * @} + */ +#endif /* SWPMI1 */ + +#if defined(DFSDM1_Channel0) +#if defined(RCC_CCIPR2_ADFSDM1SEL) +/** @defgroup RCC_LL_EC_DFSDM1_AUDIO Peripheral DFSDM1 Audio get clock source + * @{ + */ +#define LL_RCC_DFSDM1_AUDIO_CLKSOURCE RCC_CCIPR2_ADFSDM1SEL /* DFSDM1 Audio Clock source selection */ +/** + * @} + */ + +#endif /* RCC_CCIPR2_ADFSDM1SEL */ +/** @defgroup RCC_LL_EC_DFSDM1 Peripheral DFSDM1 get clock source + * @{ + */ +#if defined(RCC_CCIPR2_DFSDM1SEL) +#define LL_RCC_DFSDM1_CLKSOURCE RCC_CCIPR2_DFSDM1SEL /*!< DFSDM1 Clock source selection */ +#else +#define LL_RCC_DFSDM1_CLKSOURCE RCC_CCIPR_DFSDM1SEL /*!< DFSDM1 Clock source selection */ +#endif /* RCC_CCIPR2_DFSDM1SEL */ +/** + * @} + */ +#endif /* DFSDM1_Channel0 */ + +#if defined(DSI) +/** @defgroup RCC_LL_EC_DSI Peripheral DSI get clock source + * @{ + */ +#define LL_RCC_DSI_CLKSOURCE RCC_CCIPR2_DSISEL /*!< DSI Clock source selection */ +/** + * @} + */ +#endif /* DSI */ + +#if defined(LTDC) +/** @defgroup RCC_LL_EC_LTDC Peripheral LTDC get clock source + * @{ + */ +#define LL_RCC_LTDC_CLKSOURCE RCC_CCIPR2_PLLSAI2DIVR /*!< LTDC Clock source selection */ +/** + * @} + */ +#endif /* LTDC */ + +#if defined(OCTOSPI1) +/** @defgroup RCC_LL_EC_OCTOSPI Peripheral OCTOSPI get clock source + * @{ + */ +#define LL_RCC_OCTOSPI_CLKSOURCE RCC_CCIPR2_OSPISEL /*!< OctoSPI Clock source selection */ +/** + * @} + */ +#endif /* OCTOSPI1 */ + + +/** @defgroup RCC_LL_EC_RTC_CLKSOURCE RTC clock source selection + * @{ + */ +#define LL_RCC_RTC_CLKSOURCE_NONE 0x00000000U /*!< No clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_LSE RCC_BDCR_RTCSEL_0 /*!< LSE oscillator clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_LSI RCC_BDCR_RTCSEL_1 /*!< LSI oscillator clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_HSE_DIV32 RCC_BDCR_RTCSEL /*!< HSE oscillator clock divided by 32 used as RTC clock */ +/** + * @} + */ + + +/** @defgroup RCC_LL_EC_PLLSOURCE PLL, PLLSAI1 and PLLSAI2 entry clock source + * @{ + */ +#define LL_RCC_PLLSOURCE_NONE 0x00000000U /*!< No clock */ +#define LL_RCC_PLLSOURCE_MSI RCC_PLLCFGR_PLLSRC_MSI /*!< MSI clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSI RCC_PLLCFGR_PLLSRC_HSI /*!< HSI16 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE RCC_PLLCFGR_PLLSRC_HSE /*!< HSE clock selected as PLL entry clock source */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLM_DIV PLL division factor + * @{ + */ +#define LL_RCC_PLLM_DIV_1 0x00000000U /*!< Main PLL division factor for PLLM input by 1 */ +#define LL_RCC_PLLM_DIV_2 (RCC_PLLCFGR_PLLM_0) /*!< Main PLL division factor for PLLM input by 2 */ +#define LL_RCC_PLLM_DIV_3 (RCC_PLLCFGR_PLLM_1) /*!< Main PLL division factor for PLLM input by 3 */ +#define LL_RCC_PLLM_DIV_4 (RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< Main PLL division factor for PLLM input by 4 */ +#define LL_RCC_PLLM_DIV_5 (RCC_PLLCFGR_PLLM_2) /*!< Main PLL division factor for PLLM input by 5 */ +#define LL_RCC_PLLM_DIV_6 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< Main PLL division factor for PLLM input by 6 */ +#define LL_RCC_PLLM_DIV_7 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< Main PLL division factor for PLLM input by 7 */ +#define LL_RCC_PLLM_DIV_8 (RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< Main PLL division factor for PLLM input by 8 */ +#if defined(RCC_PLLM_DIV_1_16_SUPPORT) +#define LL_RCC_PLLM_DIV_9 (RCC_PLLCFGR_PLLM_3) /*!< Main PLL division factor for PLLM input by 9 */ +#define LL_RCC_PLLM_DIV_10 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_0) /*!< Main PLL division factor for PLLM input by 10 */ +#define LL_RCC_PLLM_DIV_11 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1) /*!< Main PLL division factor for PLLM input by 11 */ +#define LL_RCC_PLLM_DIV_12 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< Main PLL division factor for PLLM input by 12 */ +#define LL_RCC_PLLM_DIV_13 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2) /*!< Main PLL division factor for PLLM input by 13 */ +#define LL_RCC_PLLM_DIV_14 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_0) /*!< Main PLL division factor for PLLM input by 14 */ +#define LL_RCC_PLLM_DIV_15 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1) /*!< Main PLL division factor for PLLM input by 15 */ +#define LL_RCC_PLLM_DIV_16 (RCC_PLLCFGR_PLLM_3 | RCC_PLLCFGR_PLLM_2 | RCC_PLLCFGR_PLLM_1 | RCC_PLLCFGR_PLLM_0) /*!< Main PLL division factor for PLLM input by 16 */ +#endif /* RCC_PLLM_DIV_1_16_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLR_DIV PLL division factor (PLLR) + * @{ + */ +#define LL_RCC_PLLR_DIV_2 0x00000000U /*!< Main PLL division factor for PLLCLK (system clock) by 2 */ +#define LL_RCC_PLLR_DIV_4 (RCC_PLLCFGR_PLLR_0) /*!< Main PLL division factor for PLLCLK (system clock) by 4 */ +#define LL_RCC_PLLR_DIV_6 (RCC_PLLCFGR_PLLR_1) /*!< Main PLL division factor for PLLCLK (system clock) by 6 */ +#define LL_RCC_PLLR_DIV_8 (RCC_PLLCFGR_PLLR) /*!< Main PLL division factor for PLLCLK (system clock) by 8 */ +/** + * @} + */ + +#if defined(RCC_PLLP_SUPPORT) +/** @defgroup RCC_LL_EC_PLLP_DIV PLL division factor (PLLP) + * @{ + */ +#if defined(RCC_PLLP_DIV_2_31_SUPPORT) +#define LL_RCC_PLLP_DIV_2 (RCC_PLLCFGR_PLLPDIV_1) /*!< Main PLL division factor for PLLP output by 2 */ +#define LL_RCC_PLLP_DIV_3 (RCC_PLLCFGR_PLLPDIV_1|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 3 */ +#define LL_RCC_PLLP_DIV_4 (RCC_PLLCFGR_PLLPDIV_2) /*!< Main PLL division factor for PLLP output by 4 */ +#define LL_RCC_PLLP_DIV_5 (RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 5 */ +#define LL_RCC_PLLP_DIV_6 (RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_1) /*!< Main PLL division factor for PLLP output by 6 */ +#define LL_RCC_PLLP_DIV_7 (RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_1|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 7 */ +#define LL_RCC_PLLP_DIV_8 (RCC_PLLCFGR_PLLPDIV_3) /*!< Main PLL division factor for PLLP output by 8 */ +#define LL_RCC_PLLP_DIV_9 (RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 9 */ +#define LL_RCC_PLLP_DIV_10 (RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_1) /*!< Main PLL division factor for PLLP output by 10 */ +#define LL_RCC_PLLP_DIV_11 (RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_1|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 11 */ +#define LL_RCC_PLLP_DIV_12 (RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_2) /*!< Main PLL division factor for PLLP output by 12 */ +#define LL_RCC_PLLP_DIV_13 (RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 13 */ +#define LL_RCC_PLLP_DIV_14 (RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_1) /*!< Main PLL division factor for PLLP output by 14 */ +#define LL_RCC_PLLP_DIV_15 (RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_1|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 15 */ +#define LL_RCC_PLLP_DIV_16 (RCC_PLLCFGR_PLLPDIV_4) /*!< Main PLL division factor for PLLP output by 16 */ +#define LL_RCC_PLLP_DIV_17 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 17 */ +#define LL_RCC_PLLP_DIV_18 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_1) /*!< Main PLL division factor for PLLP output by 18 */ +#define LL_RCC_PLLP_DIV_19 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_1|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 19 */ +#define LL_RCC_PLLP_DIV_20 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_2) /*!< Main PLL division factor for PLLP output by 20 */ +#define LL_RCC_PLLP_DIV_21 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 21 */ +#define LL_RCC_PLLP_DIV_22 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_1) /*!< Main PLL division factor for PLLP output by 22 */ +#define LL_RCC_PLLP_DIV_23 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_1|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 23 */ +#define LL_RCC_PLLP_DIV_24 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_3) /*!< Main PLL division factor for PLLP output by 24 */ +#define LL_RCC_PLLP_DIV_25 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 25 */ +#define LL_RCC_PLLP_DIV_26 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_1) /*!< Main PLL division factor for PLLP output by 26 */ +#define LL_RCC_PLLP_DIV_27 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_1|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 27 */ +#define LL_RCC_PLLP_DIV_28 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_2) /*!< Main PLL division factor for PLLP output by 28 */ +#define LL_RCC_PLLP_DIV_29 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 29 */ +#define LL_RCC_PLLP_DIV_30 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_1) /*!< Main PLL division factor for PLLP output by 30 */ +#define LL_RCC_PLLP_DIV_31 (RCC_PLLCFGR_PLLPDIV_4|RCC_PLLCFGR_PLLPDIV_3|RCC_PLLCFGR_PLLPDIV_2|RCC_PLLCFGR_PLLPDIV_1|RCC_PLLCFGR_PLLPDIV_0) /*!< Main PLL division factor for PLLP output by 31 */ +#else +#define LL_RCC_PLLP_DIV_7 0x00000000U /*!< Main PLL division factor for PLLP output by 7 */ +#define LL_RCC_PLLP_DIV_17 (RCC_PLLCFGR_PLLP) /*!< Main PLL division factor for PLLP output by 17 */ +#endif /* RCC_PLLP_DIV_2_31_SUPPORT */ +/** + * @} + */ +#endif /* RCC_PLLP_SUPPORT */ + +/** @defgroup RCC_LL_EC_PLLQ_DIV PLL division factor (PLLQ) + * @{ + */ +#define LL_RCC_PLLQ_DIV_2 0x00000000U /*!< Main PLL division factor for PLLQ output by 2 */ +#define LL_RCC_PLLQ_DIV_4 (RCC_PLLCFGR_PLLQ_0) /*!< Main PLL division factor for PLLQ output by 4 */ +#define LL_RCC_PLLQ_DIV_6 (RCC_PLLCFGR_PLLQ_1) /*!< Main PLL division factor for PLLQ output by 6 */ +#define LL_RCC_PLLQ_DIV_8 (RCC_PLLCFGR_PLLQ) /*!< Main PLL division factor for PLLQ output by 8 */ +/** + * @} + */ + +#if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) +/** @defgroup RCC_LL_EC_PLLSAI1M PLLSAI1 division factor (PLLSAI1M) + * @{ + */ +#define LL_RCC_PLLSAI1M_DIV_1 0x00000000U /*!< PLLSAI1 division factor for PLLSAI1M input by 1 */ +#define LL_RCC_PLLSAI1M_DIV_2 (RCC_PLLSAI1CFGR_PLLSAI1M_0) /*!< PLLSAI1 division factor for PLLSAI1M input by 2 */ +#define LL_RCC_PLLSAI1M_DIV_3 (RCC_PLLSAI1CFGR_PLLSAI1M_1) /*!< PLLSAI1 division factor for PLLSAI1M input by 3 */ +#define LL_RCC_PLLSAI1M_DIV_4 (RCC_PLLSAI1CFGR_PLLSAI1M_1|RCC_PLLSAI1CFGR_PLLSAI1M_0) /*!< PLLSAI1 division factor for PLLSAI1M input by 4 */ +#define LL_RCC_PLLSAI1M_DIV_5 (RCC_PLLSAI1CFGR_PLLSAI1M_2) /*!< PLLSAI1 division factor for PLLSAI1M input by 5 */ +#define LL_RCC_PLLSAI1M_DIV_6 (RCC_PLLSAI1CFGR_PLLSAI1M_2|RCC_PLLSAI1CFGR_PLLSAI1M_0) /*!< PLLSAI1 division factor for PLLSAI1M input by 6 */ +#define LL_RCC_PLLSAI1M_DIV_7 (RCC_PLLSAI1CFGR_PLLSAI1M_2|RCC_PLLSAI1CFGR_PLLSAI1M_1) /*!< PLLSAI1 division factor for PLLSAI1M input by 7 */ +#define LL_RCC_PLLSAI1M_DIV_8 (RCC_PLLSAI1CFGR_PLLSAI1M_2|RCC_PLLSAI1CFGR_PLLSAI1M_1|RCC_PLLSAI1CFGR_PLLSAI1M_0) /*!< PLLSAI1 division factor for PLLSAI1M input by 8 */ +#define LL_RCC_PLLSAI1M_DIV_9 (RCC_PLLSAI1CFGR_PLLSAI1M_3) /*!< PLLSAI1 division factor for PLLSAI1M input by 9 */ +#define LL_RCC_PLLSAI1M_DIV_10 (RCC_PLLSAI1CFGR_PLLSAI1M_3|RCC_PLLSAI1CFGR_PLLSAI1M_0) /*!< PLLSAI1 division factor for PLLSAI1M input by 10 */ +#define LL_RCC_PLLSAI1M_DIV_11 (RCC_PLLSAI1CFGR_PLLSAI1M_3|RCC_PLLSAI1CFGR_PLLSAI1M_1) /*!< PLLSAI1 division factor for PLLSAI1M input by 11 */ +#define LL_RCC_PLLSAI1M_DIV_12 (RCC_PLLSAI1CFGR_PLLSAI1M_3|RCC_PLLSAI1CFGR_PLLSAI1M_1|RCC_PLLSAI1CFGR_PLLSAI1M_0) /*!< PLLSAI1 division factor for PLLSAI1M input by 12 */ +#define LL_RCC_PLLSAI1M_DIV_13 (RCC_PLLSAI1CFGR_PLLSAI1M_3|RCC_PLLSAI1CFGR_PLLSAI1M_2) /*!< PLLSAI1 division factor for PLLSAI1M input by 13 */ +#define LL_RCC_PLLSAI1M_DIV_14 (RCC_PLLSAI1CFGR_PLLSAI1M_3|RCC_PLLSAI1CFGR_PLLSAI1M_2|RCC_PLLSAI1CFGR_PLLSAI1M_0) /*!< PLLSAI1 division factor for PLLSAI1M input by 14 */ +#define LL_RCC_PLLSAI1M_DIV_15 (RCC_PLLSAI1CFGR_PLLSAI1M_3|RCC_PLLSAI1CFGR_PLLSAI1M_2|RCC_PLLSAI1CFGR_PLLSAI1M_1) /*!< PLLSAI1 division factor for PLLSAI1M input by 15 */ +#define LL_RCC_PLLSAI1M_DIV_16 (RCC_PLLSAI1CFGR_PLLSAI1M_3|RCC_PLLSAI1CFGR_PLLSAI1M_2|RCC_PLLSAI1CFGR_PLLSAI1M_1|RCC_PLLSAI1CFGR_PLLSAI1M_0) /*!< PLLSAI1 division factor for PLLSAI1M input by 16 */ +/** + * @} + */ +#endif /* RCC_PLLSAI1M_DIV_1_16_SUPPORT */ + +#if defined(RCC_PLLSAI1_SUPPORT) +/** @defgroup RCC_LL_EC_PLLSAI1Q PLLSAI1 division factor (PLLSAI1Q) + * @{ + */ +#define LL_RCC_PLLSAI1Q_DIV_2 0x00000000U /*!< PLLSAI1 division factor for PLLSAI1Q output by 2 */ +#define LL_RCC_PLLSAI1Q_DIV_4 (RCC_PLLSAI1CFGR_PLLSAI1Q_0) /*!< PLLSAI1 division factor for PLLSAI1Q output by 4 */ +#define LL_RCC_PLLSAI1Q_DIV_6 (RCC_PLLSAI1CFGR_PLLSAI1Q_1) /*!< PLLSAI1 division factor for PLLSAI1Q output by 6 */ +#define LL_RCC_PLLSAI1Q_DIV_8 (RCC_PLLSAI1CFGR_PLLSAI1Q) /*!< PLLSAI1 division factor for PLLSAI1Q output by 8 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLSAI1P PLLSAI1 division factor (PLLSAI1P) + * @{ + */ +#if defined(RCC_PLLSAI1P_DIV_2_31_SUPPORT) +#define LL_RCC_PLLSAI1P_DIV_2 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_1) /*!< PLLSAI1 division factor for PLLSAI1P output by 2 */ +#define LL_RCC_PLLSAI1P_DIV_3 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_1|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 3 */ +#define LL_RCC_PLLSAI1P_DIV_4 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_2) /*!< PLLSAI1 division factor for PLLSAI1P output by 4 */ +#define LL_RCC_PLLSAI1P_DIV_5 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 5 */ +#define LL_RCC_PLLSAI1P_DIV_6 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1) /*!< PLLSAI1 division factor for PLLSAI1P output by 6 */ +#define LL_RCC_PLLSAI1P_DIV_7 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 7 */ +#define LL_RCC_PLLSAI1P_DIV_8 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_3) /*!< PLLSAI1 division factor for PLLSAI1P output by 8 */ +#define LL_RCC_PLLSAI1P_DIV_9 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 9 */ +#define LL_RCC_PLLSAI1P_DIV_10 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1) /*!< PLLSAI1 division factor for PLLSAI1P output by 10 */ +#define LL_RCC_PLLSAI1P_DIV_11 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 1 */ +#define LL_RCC_PLLSAI1P_DIV_12 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2) /*!< PLLSAI1 division factor for PLLSAI1P output by 12 */ +#define LL_RCC_PLLSAI1P_DIV_13 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 13 */ +#define LL_RCC_PLLSAI1P_DIV_14 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1) /*!< PLLSAI1 division factor for PLLSAI1P output by 14 */ +#define LL_RCC_PLLSAI1P_DIV_15 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 15 */ +#define LL_RCC_PLLSAI1P_DIV_16 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4) /*!< PLLSAI1 division factor for PLLSAI1P output by 16 */ +#define LL_RCC_PLLSAI1P_DIV_17 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 17 */ +#define LL_RCC_PLLSAI1P_DIV_18 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1) /*!< PLLSAI1 division factor for PLLSAI1P output by 18 */ +#define LL_RCC_PLLSAI1P_DIV_19 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 19 */ +#define LL_RCC_PLLSAI1P_DIV_20 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2) /*!< PLLSAI1 division factor for PLLSAI1P output by 20 */ +#define LL_RCC_PLLSAI1P_DIV_21 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division fctor for PLLSAI1P output by 21 */ +#define LL_RCC_PLLSAI1P_DIV_22 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1) /*!< PLLSAI1 division factor for PLLSAI1P output by 22 */ +#define LL_RCC_PLLSAI1P_DIV_23 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 23 */ +#define LL_RCC_PLLSAI1P_DIV_24 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_3) /*!< PLLSAI1 division factor for PLLSAI1P output by 24 */ +#define LL_RCC_PLLSAI1P_DIV_25 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 25 */ +#define LL_RCC_PLLSAI1P_DIV_26 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1) /*!< PLLSAI1 division factor for PLLSAI1P output by 26 */ +#define LL_RCC_PLLSAI1P_DIV_27 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 27 */ +#define LL_RCC_PLLSAI1P_DIV_28 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2) /*!< PLLSAI1 division factor for PLLSAI1P output by 28 */ +#define LL_RCC_PLLSAI1P_DIV_29 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 29 */ +#define LL_RCC_PLLSAI1P_DIV_30 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1) /*!< PLLSAI1 division factor for PLLSAI1P output by 30 */ +#define LL_RCC_PLLSAI1P_DIV_31 (RCC_PLLSAI1CFGR_PLLSAI1PDIV_4|RCC_PLLSAI1CFGR_PLLSAI1PDIV_3|RCC_PLLSAI1CFGR_PLLSAI1PDIV_2|RCC_PLLSAI1CFGR_PLLSAI1PDIV_1|RCC_PLLSAI1CFGR_PLLSAI1PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 31 */ +#else +#define LL_RCC_PLLSAI1P_DIV_7 0x00000000U /*!< PLLSAI1 division factor for PLLSAI1P output by 7 */ +#define LL_RCC_PLLSAI1P_DIV_17 (RCC_PLLSAI1CFGR_PLLSAI1P) /*!< PLLSAI1 division factor for PLLSAI1P output by 17 */ +#endif /* RCC_PLLSAI1P_DIV_2_31_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLSAI1R PLLSAI1 division factor (PLLSAI1R) + * @{ + */ +#define LL_RCC_PLLSAI1R_DIV_2 0x00000000U /*!< PLLSAI1 division factor for PLLSAI1R output by 2 */ +#define LL_RCC_PLLSAI1R_DIV_4 (RCC_PLLSAI1CFGR_PLLSAI1R_0) /*!< PLLSAI1 division factor for PLLSAI1R output by 4 */ +#define LL_RCC_PLLSAI1R_DIV_6 (RCC_PLLSAI1CFGR_PLLSAI1R_1) /*!< PLLSAI1 division factor for PLLSAI1R output by 6 */ +#define LL_RCC_PLLSAI1R_DIV_8 (RCC_PLLSAI1CFGR_PLLSAI1R) /*!< PLLSAI1 division factor for PLLSAI1R output by 8 */ +/** + * @} + */ +#endif /* RCC_PLLSAI1_SUPPORT */ + +#if defined(RCC_PLLSAI2_SUPPORT) +#if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) +/** @defgroup RCC_LL_EC_PLLSAI2M PLLSAI1 division factor (PLLSAI2M) + * @{ + */ +#define LL_RCC_PLLSAI2M_DIV_1 0x00000000U /*!< PLLSAI2 division factor for PLLSAI2M input by 1 */ +#define LL_RCC_PLLSAI2M_DIV_2 (RCC_PLLSAI2CFGR_PLLSAI2M_0) /*!< PLLSAI2 division factor for PLLSAI2M input by 2 */ +#define LL_RCC_PLLSAI2M_DIV_3 (RCC_PLLSAI2CFGR_PLLSAI2M_1) /*!< PLLSAI2 division factor for PLLSAI2M input by 3 */ +#define LL_RCC_PLLSAI2M_DIV_4 (RCC_PLLSAI2CFGR_PLLSAI2M_1|RCC_PLLSAI2CFGR_PLLSAI2M_0) /*!< PLLSAI2 division factor for PLLSAI2M input by 4 */ +#define LL_RCC_PLLSAI2M_DIV_5 (RCC_PLLSAI2CFGR_PLLSAI2M_2) /*!< PLLSAI2 division factor for PLLSAI2M input by 5 */ +#define LL_RCC_PLLSAI2M_DIV_6 (RCC_PLLSAI2CFGR_PLLSAI2M_2|RCC_PLLSAI2CFGR_PLLSAI2M_0) /*!< PLLSAI2 division factor for PLLSAI2M input by 6 */ +#define LL_RCC_PLLSAI2M_DIV_7 (RCC_PLLSAI2CFGR_PLLSAI2M_2|RCC_PLLSAI2CFGR_PLLSAI2M_1) /*!< PLLSAI2 division factor for PLLSAI2M input by 7 */ +#define LL_RCC_PLLSAI2M_DIV_8 (RCC_PLLSAI2CFGR_PLLSAI2M_2|RCC_PLLSAI2CFGR_PLLSAI2M_1|RCC_PLLSAI2CFGR_PLLSAI2M_0) /*!< PLLSAI2 division factor for PLLSAI2M input by 8 */ +#define LL_RCC_PLLSAI2M_DIV_9 (RCC_PLLSAI2CFGR_PLLSAI2M_3) /*!< PLLSAI2 division factor for PLLSAI2M input by 9 */ +#define LL_RCC_PLLSAI2M_DIV_10 (RCC_PLLSAI2CFGR_PLLSAI2M_3|RCC_PLLSAI2CFGR_PLLSAI2M_0) /*!< PLLSAI2 division factor for PLLSAI2M input by 10 */ +#define LL_RCC_PLLSAI2M_DIV_11 (RCC_PLLSAI2CFGR_PLLSAI2M_3|RCC_PLLSAI2CFGR_PLLSAI2M_1) /*!< PLLSAI2 division factor for PLLSAI2M input by 11 */ +#define LL_RCC_PLLSAI2M_DIV_12 (RCC_PLLSAI2CFGR_PLLSAI2M_3|RCC_PLLSAI2CFGR_PLLSAI2M_1|RCC_PLLSAI2CFGR_PLLSAI2M_0) /*!< PLLSAI2 division factor for PLLSAI2M input by 12 */ +#define LL_RCC_PLLSAI2M_DIV_13 (RCC_PLLSAI2CFGR_PLLSAI2M_3|RCC_PLLSAI2CFGR_PLLSAI2M_2) /*!< PLLSAI2 division factor for PLLSAI2M input by 13 */ +#define LL_RCC_PLLSAI2M_DIV_14 (RCC_PLLSAI2CFGR_PLLSAI2M_3|RCC_PLLSAI2CFGR_PLLSAI2M_2|RCC_PLLSAI2CFGR_PLLSAI2M_0) /*!< PLLSAI2 division factor for PLLSAI2M input by 14 */ +#define LL_RCC_PLLSAI2M_DIV_15 (RCC_PLLSAI2CFGR_PLLSAI2M_3|RCC_PLLSAI2CFGR_PLLSAI2M_2|RCC_PLLSAI2CFGR_PLLSAI2M_1) /*!< PLLSAI2 division factor for PLLSAI2M input by 15 */ +#define LL_RCC_PLLSAI2M_DIV_16 (RCC_PLLSAI2CFGR_PLLSAI2M_3|RCC_PLLSAI2CFGR_PLLSAI2M_2|RCC_PLLSAI2CFGR_PLLSAI2M_1|RCC_PLLSAI2CFGR_PLLSAI2M_0) /*!< PLLSAI2 division factor for PLLSAI2M input by 16 */ +/** + * @} + */ +#endif /* RCC_PLLSAI2M_DIV_1_16_SUPPORT */ + +#if defined(RCC_PLLSAI2Q_DIV_SUPPORT) +/** @defgroup RCC_LL_EC_PLLSAI2Q PLLSAI2 division factor (PLLSAI2Q) + * @{ + */ +#define LL_RCC_PLLSAI2Q_DIV_2 0x00000000U /*!< PLLSAI2 division factor for PLLSAI2Q output by 2 */ +#define LL_RCC_PLLSAI2Q_DIV_4 (RCC_PLLSAI2CFGR_PLLSAI2Q_0) /*!< PLLSAI2 division factor for PLLSAI2Q output by 4 */ +#define LL_RCC_PLLSAI2Q_DIV_6 (RCC_PLLSAI2CFGR_PLLSAI2Q_1) /*!< PLLSAI2 division factor for PLLSAI2Q output by 6 */ +#define LL_RCC_PLLSAI2Q_DIV_8 (RCC_PLLSAI2CFGR_PLLSAI2Q) /*!< PLLSAI2 division factor for PLLSAI2Q output by 8 */ +/** + * @} + */ +#endif /* RCC_PLLSAI2Q_DIV_SUPPORT */ + +/** @defgroup RCC_LL_EC_PLLSAI2P PLLSAI2 division factor (PLLSAI2P) + * @{ + */ +#if defined(RCC_PLLSAI2P_DIV_2_31_SUPPORT) +#define LL_RCC_PLLSAI2P_DIV_2 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_1) /*!< PLLSAI2 division factor for PLLSAI2P output by 2 */ +#define LL_RCC_PLLSAI2P_DIV_3 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_1|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 3 */ +#define LL_RCC_PLLSAI2P_DIV_4 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_2) /*!< PLLSAI2 division factor for PLLSAI2P output by 4 */ +#define LL_RCC_PLLSAI2P_DIV_5 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 5 */ +#define LL_RCC_PLLSAI2P_DIV_6 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1) /*!< PLLSAI2 division factor for PLLSAI2P output by 6 */ +#define LL_RCC_PLLSAI2P_DIV_7 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 7 */ +#define LL_RCC_PLLSAI2P_DIV_8 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_3) /*!< PLLSAI2 division factor for PLLSAI2P output by 8 */ +#define LL_RCC_PLLSAI2P_DIV_9 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 9 */ +#define LL_RCC_PLLSAI2P_DIV_10 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1) /*!< PLLSAI2 division factor for PLLSAI2P output by 10 */ +#define LL_RCC_PLLSAI2P_DIV_11 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 1 */ +#define LL_RCC_PLLSAI2P_DIV_12 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2) /*!< PLLSAI2 division factor for PLLSAI2P output by 12 */ +#define LL_RCC_PLLSAI2P_DIV_13 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 13 */ +#define LL_RCC_PLLSAI2P_DIV_14 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1) /*!< PLLSAI2 division factor for PLLSAI2P output by 14 */ +#define LL_RCC_PLLSAI2P_DIV_15 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 15 */ +#define LL_RCC_PLLSAI2P_DIV_16 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4) /*!< PLLSAI2 division factor for PLLSAI2P output by 16 */ +#define LL_RCC_PLLSAI2P_DIV_17 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 17 */ +#define LL_RCC_PLLSAI2P_DIV_18 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1) /*!< PLLSAI2 division factor for PLLSAI2P output by 18 */ +#define LL_RCC_PLLSAI2P_DIV_19 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 19 */ +#define LL_RCC_PLLSAI2P_DIV_20 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2) /*!< PLLSAI2 division factor for PLLSAI2P output by 20 */ +#define LL_RCC_PLLSAI2P_DIV_21 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division fctor for PLLSAI2P output by 21 */ +#define LL_RCC_PLLSAI2P_DIV_22 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1) /*!< PLLSAI2 division factor for PLLSAI2P output by 22 */ +#define LL_RCC_PLLSAI2P_DIV_23 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 23 */ +#define LL_RCC_PLLSAI2P_DIV_24 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_3) /*!< PLLSAI2 division factor for PLLSAI2P output by 24 */ +#define LL_RCC_PLLSAI2P_DIV_25 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 25 */ +#define LL_RCC_PLLSAI2P_DIV_26 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1) /*!< PLLSAI2 division factor for PLLSAI2P output by 26 */ +#define LL_RCC_PLLSAI2P_DIV_27 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 27 */ +#define LL_RCC_PLLSAI2P_DIV_28 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2) /*!< PLLSAI2 division factor for PLLSAI2P output by 28 */ +#define LL_RCC_PLLSAI2P_DIV_29 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI2 division factor for PLLSAI2P output by 29 */ +#define LL_RCC_PLLSAI2P_DIV_30 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1) /*!< PLLSAI2 division factor for PLLSAI2P output by 30 */ +#define LL_RCC_PLLSAI2P_DIV_31 (RCC_PLLSAI2CFGR_PLLSAI2PDIV_4|RCC_PLLSAI2CFGR_PLLSAI2PDIV_3|RCC_PLLSAI2CFGR_PLLSAI2PDIV_2|RCC_PLLSAI2CFGR_PLLSAI2PDIV_1|RCC_PLLSAI2CFGR_PLLSAI2PDIV_0) /*!< PLLSAI1 division factor for PLLSAI1P output by 31 */ +#else +#define LL_RCC_PLLSAI2P_DIV_7 0x00000000U /*!< PLLSAI2 division factor for PLLSAI2P output by 7 */ +#define LL_RCC_PLLSAI2P_DIV_17 (RCC_PLLSAI2CFGR_PLLSAI2P) /*!< PLLSAI2 division factor for PLLSAI2P output by 17 */ +#endif /* RCC_PLLSAI2P_DIV_2_31_SUPPORT */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLSAI2R PLLSAI2 division factor (PLLSAI2R) + * @{ + */ +#define LL_RCC_PLLSAI2R_DIV_2 0x00000000U /*!< PLLSAI2 division factor for PLLSAI2R output by 2 */ +#define LL_RCC_PLLSAI2R_DIV_4 (RCC_PLLSAI2CFGR_PLLSAI2R_0) /*!< PLLSAI2 division factor for PLLSAI2R output by 4 */ +#define LL_RCC_PLLSAI2R_DIV_6 (RCC_PLLSAI2CFGR_PLLSAI2R_1) /*!< PLLSAI2 division factor for PLLSAI2R output by 6 */ +#define LL_RCC_PLLSAI2R_DIV_8 (RCC_PLLSAI2CFGR_PLLSAI2R) /*!< PLLSAI2 division factor for PLLSAI2R output by 8 */ +/** + * @} + */ + +#if defined(RCC_CCIPR2_PLLSAI2DIVR) +/** @defgroup RCC_LL_EC_PLLSAI2DIVR PLLSAI2DIVR division factor (PLLSAI2DIVR) + * @{ + */ +#define LL_RCC_PLLSAI2DIVR_DIV_2 0x00000000U /*!< PLLSAI2 division factor for PLLSAI2DIVR output by 2 */ +#define LL_RCC_PLLSAI2DIVR_DIV_4 RCC_CCIPR2_PLLSAI2DIVR_0 /*!< PLLSAI2 division factor for PLLSAI2DIVR output by 4 */ +#define LL_RCC_PLLSAI2DIVR_DIV_8 RCC_CCIPR2_PLLSAI2DIVR_1 /*!< PLLSAI2 division factor for PLLSAI2DIVR output by 8 */ +#define LL_RCC_PLLSAI2DIVR_DIV_16 (RCC_CCIPR2_PLLSAI2DIVR_1 | RCC_CCIPR2_PLLSAI2DIVR_0) /*!< PLLSAI2 division factor for PLLSAI2DIVR output by 16 */ +/** + * @} + */ +#endif /* RCC_CCIPR2_PLLSAI2DIVR */ +#endif /* RCC_PLLSAI2_SUPPORT */ + +/** @defgroup RCC_LL_EC_MSIRANGESEL MSI clock range selection + * @{ + */ +#define LL_RCC_MSIRANGESEL_STANDBY 0U /*!< MSI Range is provided by MSISRANGE */ +#define LL_RCC_MSIRANGESEL_RUN 1U /*!< MSI Range is provided by MSIRANGE */ +/** + * @} + */ + +#if defined(RCC_CSR_LSIPREDIV) +/** @defgroup RCC_LL_EC_LSIPREDIV LSI division factor + * @{ + */ +#define LL_RCC_LSI_PREDIV_1 0x00000000U /*!< LSI division factor by 1 */ +#define LL_RCC_LSI_PREDIV_128 RCC_CSR_LSIPREDIV /*!< LSI division factor by 128 */ +/** + * @} + */ +#endif /* RCC_CSR_LSIPREDIV */ + +/** Legacy definitions for compatibility purpose +@cond 0 +*/ +#if defined(DFSDM1_Channel0) +#define LL_RCC_DFSDM1_CLKSOURCE_PCLK LL_RCC_DFSDM1_CLKSOURCE_PCLK2 +#define LL_RCC_DFSDM_CLKSOURCE_PCLK LL_RCC_DFSDM1_CLKSOURCE_PCLK2 +#define LL_RCC_DFSDM_CLKSOURCE_SYSCLK LL_RCC_DFSDM1_CLKSOURCE_SYSCLK +#define LL_RCC_DFSDM_CLKSOURCE LL_RCC_DFSDM1_CLKSOURCE +#endif /* DFSDM1_Channel0 */ +#if defined(SWPMI1) +#define LL_RCC_SWPMI1_CLKSOURCE_PCLK LL_RCC_SWPMI1_CLKSOURCE_PCLK1 +#endif /* SWPMI1 */ +/** +@endcond + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Macros RCC Exported Macros + * @{ + */ + +/** @defgroup RCC_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in RCC register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_RCC_WriteReg(__REG__, __VALUE__) WRITE_REG(RCC->__REG__, (__VALUE__)) + +/** + * @brief Read a value in RCC register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_RCC_ReadReg(__REG__) READ_REG(RCC->__REG__) +/** + * @} + */ + +/** @defgroup RCC_LL_EM_CALC_FREQ Calculate frequencies + * @{ + */ + +/** + * @brief Helper macro to calculate the PLLCLK frequency on system domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetR ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 (*) + * @arg @ref LL_RCC_PLLM_DIV_10 (*) + * @arg @ref LL_RCC_PLLM_DIV_11 (*) + * @arg @ref LL_RCC_PLLM_DIV_12 (*) + * @arg @ref LL_RCC_PLLM_DIV_13 (*) + * @arg @ref LL_RCC_PLLM_DIV_14 (*) + * @arg @ref LL_RCC_PLLM_DIV_15 (*) + * @arg @ref LL_RCC_PLLM_DIV_16 (*) + * + * (*) value not defined in all devices. + * @param __PLLN__ Between 8 and 86 or 127 depending on devices + * @param __PLLR__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLR_DIV_2 + * @arg @ref LL_RCC_PLLR_DIV_4 + * @arg @ref LL_RCC_PLLR_DIV_6 + * @arg @ref LL_RCC_PLLR_DIV_8 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLR__) ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) * (__PLLN__) / \ + ((((__PLLR__) >> RCC_PLLCFGR_PLLR_Pos) + 1U) * 2U)) + +#if defined(RCC_PLLSAI1_SUPPORT) +#if defined(RCC_PLLP_DIV_2_31_SUPPORT) +/** + * @brief Helper macro to calculate the PLLCLK frequency used on SAI domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 (*) + * @arg @ref LL_RCC_PLLM_DIV_10 (*) + * @arg @ref LL_RCC_PLLM_DIV_11 (*) + * @arg @ref LL_RCC_PLLM_DIV_12 (*) + * @arg @ref LL_RCC_PLLM_DIV_13 (*) + * @arg @ref LL_RCC_PLLM_DIV_14 (*) + * @arg @ref LL_RCC_PLLM_DIV_15 (*) + * @arg @ref LL_RCC_PLLM_DIV_16 (*) + * + * (*) value not defined in all devices. + * @param __PLLN__ Between 8 and 86 or 127 depending on devices + * @param __PLLP__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_3 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_5 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @arg @ref LL_RCC_PLLP_DIV_9 + * @arg @ref LL_RCC_PLLP_DIV_10 + * @arg @ref LL_RCC_PLLP_DIV_11 + * @arg @ref LL_RCC_PLLP_DIV_12 + * @arg @ref LL_RCC_PLLP_DIV_13 + * @arg @ref LL_RCC_PLLP_DIV_14 + * @arg @ref LL_RCC_PLLP_DIV_15 + * @arg @ref LL_RCC_PLLP_DIV_16 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @arg @ref LL_RCC_PLLP_DIV_18 + * @arg @ref LL_RCC_PLLP_DIV_19 + * @arg @ref LL_RCC_PLLP_DIV_20 + * @arg @ref LL_RCC_PLLP_DIV_21 + * @arg @ref LL_RCC_PLLP_DIV_22 + * @arg @ref LL_RCC_PLLP_DIV_23 + * @arg @ref LL_RCC_PLLP_DIV_24 + * @arg @ref LL_RCC_PLLP_DIV_25 + * @arg @ref LL_RCC_PLLP_DIV_26 + * @arg @ref LL_RCC_PLLP_DIV_27 + * @arg @ref LL_RCC_PLLP_DIV_28 + * @arg @ref LL_RCC_PLLP_DIV_29 + * @arg @ref LL_RCC_PLLP_DIV_30 + * @arg @ref LL_RCC_PLLP_DIV_31 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLP__) ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) * (__PLLN__) / \ + ((__PLLP__) >> RCC_PLLCFGR_PLLPDIV_Pos)) + +#else +/** + * @brief Helper macro to calculate the PLLCLK frequency used on SAI domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLN__ Between 8 and 86 + * @param __PLLP__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLP__) ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) * (__PLLN__) / \ + (((__PLLP__) == LL_RCC_PLLP_DIV_7) ? 7U : 17U)) + +#endif /* RCC_PLLP_DIV_2_31_SUPPORT */ +#endif /* RCC_PLLSAI1_SUPPORT */ + +/** + * @brief Helper macro to calculate the PLLCLK frequency used on 48M domain + * @note ex: @ref __LL_RCC_CALC_PLLCLK_48M_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLL_GetN (), @ref LL_RCC_PLL_GetQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 (*) + * @arg @ref LL_RCC_PLLM_DIV_10 (*) + * @arg @ref LL_RCC_PLLM_DIV_11 (*) + * @arg @ref LL_RCC_PLLM_DIV_12 (*) + * @arg @ref LL_RCC_PLLM_DIV_13 (*) + * @arg @ref LL_RCC_PLLM_DIV_14 (*) + * @arg @ref LL_RCC_PLLM_DIV_15 (*) + * @arg @ref LL_RCC_PLLM_DIV_16 (*) + * + * (*) value not defined in all devices. + * @param __PLLN__ Between 8 and 86 or 127 depending on devices + * @param __PLLQ__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_48M_FREQ(__INPUTFREQ__, __PLLM__, __PLLN__, __PLLQ__) ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) * (__PLLN__) / \ + ((((__PLLQ__) >> RCC_PLLCFGR_PLLQ_Pos) + 1U) << 1U)) + +#if defined(RCC_PLLSAI1_SUPPORT) +#if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) && defined(RCC_PLLSAI1P_DIV_2_31_SUPPORT) +/** + * @brief Helper macro to calculate the PLLSAI1 frequency used for SAI domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI1_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLLSAI1_GetDivider (), + * @ref LL_RCC_PLLSAI1_GetN (), @ref LL_RCC_PLLSAI1_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLSAI1M__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1M_DIV_1 + * @arg @ref LL_RCC_PLLSAI1M_DIV_2 + * @arg @ref LL_RCC_PLLSAI1M_DIV_3 + * @arg @ref LL_RCC_PLLSAI1M_DIV_4 + * @arg @ref LL_RCC_PLLSAI1M_DIV_5 + * @arg @ref LL_RCC_PLLSAI1M_DIV_6 + * @arg @ref LL_RCC_PLLSAI1M_DIV_7 + * @arg @ref LL_RCC_PLLSAI1M_DIV_8 + * @arg @ref LL_RCC_PLLSAI1M_DIV_9 + * @arg @ref LL_RCC_PLLSAI1M_DIV_10 + * @arg @ref LL_RCC_PLLSAI1M_DIV_11 + * @arg @ref LL_RCC_PLLSAI1M_DIV_12 + * @arg @ref LL_RCC_PLLSAI1M_DIV_13 + * @arg @ref LL_RCC_PLLSAI1M_DIV_14 + * @arg @ref LL_RCC_PLLSAI1M_DIV_15 + * @arg @ref LL_RCC_PLLSAI1M_DIV_16 + * @param __PLLSAI1N__ Between 8 and 86 or 127 depending on devices + * @param __PLLSAI1P__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1P_DIV_2 + * @arg @ref LL_RCC_PLLSAI1P_DIV_3 + * @arg @ref LL_RCC_PLLSAI1P_DIV_4 + * @arg @ref LL_RCC_PLLSAI1P_DIV_5 + * @arg @ref LL_RCC_PLLSAI1P_DIV_6 + * @arg @ref LL_RCC_PLLSAI1P_DIV_7 + * @arg @ref LL_RCC_PLLSAI1P_DIV_8 + * @arg @ref LL_RCC_PLLSAI1P_DIV_9 + * @arg @ref LL_RCC_PLLSAI1P_DIV_10 + * @arg @ref LL_RCC_PLLSAI1P_DIV_11 + * @arg @ref LL_RCC_PLLSAI1P_DIV_12 + * @arg @ref LL_RCC_PLLSAI1P_DIV_13 + * @arg @ref LL_RCC_PLLSAI1P_DIV_14 + * @arg @ref LL_RCC_PLLSAI1P_DIV_15 + * @arg @ref LL_RCC_PLLSAI1P_DIV_16 + * @arg @ref LL_RCC_PLLSAI1P_DIV_17 + * @arg @ref LL_RCC_PLLSAI1P_DIV_18 + * @arg @ref LL_RCC_PLLSAI1P_DIV_19 + * @arg @ref LL_RCC_PLLSAI1P_DIV_20 + * @arg @ref LL_RCC_PLLSAI1P_DIV_21 + * @arg @ref LL_RCC_PLLSAI1P_DIV_22 + * @arg @ref LL_RCC_PLLSAI1P_DIV_23 + * @arg @ref LL_RCC_PLLSAI1P_DIV_24 + * @arg @ref LL_RCC_PLLSAI1P_DIV_25 + * @arg @ref LL_RCC_PLLSAI1P_DIV_26 + * @arg @ref LL_RCC_PLLSAI1P_DIV_27 + * @arg @ref LL_RCC_PLLSAI1P_DIV_28 + * @arg @ref LL_RCC_PLLSAI1P_DIV_29 + * @arg @ref LL_RCC_PLLSAI1P_DIV_30 + * @arg @ref LL_RCC_PLLSAI1P_DIV_31 + * @retval PLLSAI1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI1_SAI_FREQ(__INPUTFREQ__, __PLLSAI1M__, __PLLSAI1N__, __PLLSAI1P__) \ + ((__INPUTFREQ__) / ((((__PLLSAI1M__) >> RCC_PLLSAI1CFGR_PLLSAI1M_Pos) + 1U)) * (__PLLSAI1N__) / \ + ((__PLLSAI1P__) >> RCC_PLLSAI1CFGR_PLLSAI1PDIV_Pos)) + +#elif defined(RCC_PLLSAI1P_DIV_2_31_SUPPORT) +/** + * @brief Helper macro to calculate the PLLSAI1 frequency used for SAI domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI1_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLSAI1_GetN (), @ref LL_RCC_PLLSAI1_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLSAI1N__ Between 8 and 86 or 127 depending on devices + * @param __PLLSAI1P__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1P_DIV_2 + * @arg @ref LL_RCC_PLLSAI1P_DIV_3 + * @arg @ref LL_RCC_PLLSAI1P_DIV_4 + * @arg @ref LL_RCC_PLLSAI1P_DIV_5 + * @arg @ref LL_RCC_PLLSAI1P_DIV_6 + * @arg @ref LL_RCC_PLLSAI1P_DIV_7 + * @arg @ref LL_RCC_PLLSAI1P_DIV_8 + * @arg @ref LL_RCC_PLLSAI1P_DIV_9 + * @arg @ref LL_RCC_PLLSAI1P_DIV_10 + * @arg @ref LL_RCC_PLLSAI1P_DIV_11 + * @arg @ref LL_RCC_PLLSAI1P_DIV_12 + * @arg @ref LL_RCC_PLLSAI1P_DIV_13 + * @arg @ref LL_RCC_PLLSAI1P_DIV_14 + * @arg @ref LL_RCC_PLLSAI1P_DIV_15 + * @arg @ref LL_RCC_PLLSAI1P_DIV_16 + * @arg @ref LL_RCC_PLLSAI1P_DIV_17 + * @arg @ref LL_RCC_PLLSAI1P_DIV_18 + * @arg @ref LL_RCC_PLLSAI1P_DIV_19 + * @arg @ref LL_RCC_PLLSAI1P_DIV_20 + * @arg @ref LL_RCC_PLLSAI1P_DIV_21 + * @arg @ref LL_RCC_PLLSAI1P_DIV_22 + * @arg @ref LL_RCC_PLLSAI1P_DIV_23 + * @arg @ref LL_RCC_PLLSAI1P_DIV_24 + * @arg @ref LL_RCC_PLLSAI1P_DIV_25 + * @arg @ref LL_RCC_PLLSAI1P_DIV_26 + * @arg @ref LL_RCC_PLLSAI1P_DIV_27 + * @arg @ref LL_RCC_PLLSAI1P_DIV_28 + * @arg @ref LL_RCC_PLLSAI1P_DIV_29 + * @arg @ref LL_RCC_PLLSAI1P_DIV_30 + * @arg @ref LL_RCC_PLLSAI1P_DIV_31 + * @retval PLLSAI1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI1_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAI1N__, __PLLSAI1P__) \ + ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) * (__PLLSAI1N__) / \ + ((__PLLSAI1P__) >> RCC_PLLSAI1CFGR_PLLSAI1PDIV_Pos)) + +#else +/** + * @brief Helper macro to calculate the PLLSAI1 frequency used for SAI domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI1_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLSAI1_GetN (), @ref LL_RCC_PLLSAI1_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLSAI1N__ Between 8 and 86 + * @param __PLLSAI1P__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1P_DIV_7 + * @arg @ref LL_RCC_PLLSAI1P_DIV_17 + * @retval PLLSAI1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI1_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAI1N__, __PLLSAI1P__) \ + ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) * (__PLLSAI1N__) / \ + (((__PLLSAI1P__) == LL_RCC_PLLSAI1P_DIV_7) ? 7U : 17U)) + +#endif /* RCC_PLLSAI1P_DIV_2_31_SUPPORT */ + +#if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) +/** + * @brief Helper macro to calculate the PLLSAI1 frequency used on 48M domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI1_48M_FREQ (HSE_VALUE,@ref LL_RCC_PLLSAI1_GetDivider (), + * @ref LL_RCC_PLLSAI1_GetN (), @ref LL_RCC_PLLSAI1_GetQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLSAI1M__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1M_DIV_1 + * @arg @ref LL_RCC_PLLSAI1M_DIV_2 + * @arg @ref LL_RCC_PLLSAI1M_DIV_3 + * @arg @ref LL_RCC_PLLSAI1M_DIV_4 + * @arg @ref LL_RCC_PLLSAI1M_DIV_5 + * @arg @ref LL_RCC_PLLSAI1M_DIV_6 + * @arg @ref LL_RCC_PLLSAI1M_DIV_7 + * @arg @ref LL_RCC_PLLSAI1M_DIV_8 + * @arg @ref LL_RCC_PLLSAI1M_DIV_9 + * @arg @ref LL_RCC_PLLSAI1M_DIV_10 + * @arg @ref LL_RCC_PLLSAI1M_DIV_11 + * @arg @ref LL_RCC_PLLSAI1M_DIV_12 + * @arg @ref LL_RCC_PLLSAI1M_DIV_13 + * @arg @ref LL_RCC_PLLSAI1M_DIV_14 + * @arg @ref LL_RCC_PLLSAI1M_DIV_15 + * @arg @ref LL_RCC_PLLSAI1M_DIV_16 + * @param __PLLSAI1N__ Between 8 and 86 or 127 depending on devices + * @param __PLLSAI1Q__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1Q_DIV_2 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_4 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_6 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_8 + * @retval PLLSAI1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI1_48M_FREQ(__INPUTFREQ__, __PLLSAI1M__, __PLLSAI1N__, __PLLSAI1Q__) \ + ((__INPUTFREQ__) / ((((__PLLSAI1M__) >> RCC_PLLSAI1CFGR_PLLSAI1M_Pos) + 1U)) * (__PLLSAI1N__) / \ + ((((__PLLSAI1Q__) >> RCC_PLLSAI1CFGR_PLLSAI1Q_Pos) + 1U) << 1U)) + +#else +/** + * @brief Helper macro to calculate the PLLSAI1 frequency used on 48M domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI1_48M_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLSAI1_GetN (), @ref LL_RCC_PLLSAI1_GetQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLSAI1N__ Between 8 and 86 + * @param __PLLSAI1Q__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1Q_DIV_2 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_4 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_6 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_8 + * @retval PLLSAI1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI1_48M_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAI1N__, __PLLSAI1Q__) \ + ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) * (__PLLSAI1N__) / \ + ((((__PLLSAI1Q__) >> RCC_PLLSAI1CFGR_PLLSAI1Q_Pos) + 1U) << 1U)) + +#endif /* RCC_PLLSAI1M_DIV_1_16_SUPPORT */ + +#if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) +/** + * @brief Helper macro to calculate the PLLSAI1 frequency used on ADC domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI1_ADC_FREQ (HSE_VALUE,@ref LL_RCC_PLLSAI1_GetDivider (), + * @ref LL_RCC_PLLSAI1_GetN (), @ref LL_RCC_PLLSAI1_GetR ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLSAI1M__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1M_DIV_1 + * @arg @ref LL_RCC_PLLSAI1M_DIV_2 + * @arg @ref LL_RCC_PLLSAI1M_DIV_3 + * @arg @ref LL_RCC_PLLSAI1M_DIV_4 + * @arg @ref LL_RCC_PLLSAI1M_DIV_5 + * @arg @ref LL_RCC_PLLSAI1M_DIV_6 + * @arg @ref LL_RCC_PLLSAI1M_DIV_7 + * @arg @ref LL_RCC_PLLSAI1M_DIV_8 + * @arg @ref LL_RCC_PLLSAI1M_DIV_9 + * @arg @ref LL_RCC_PLLSAI1M_DIV_10 + * @arg @ref LL_RCC_PLLSAI1M_DIV_11 + * @arg @ref LL_RCC_PLLSAI1M_DIV_12 + * @arg @ref LL_RCC_PLLSAI1M_DIV_13 + * @arg @ref LL_RCC_PLLSAI1M_DIV_14 + * @arg @ref LL_RCC_PLLSAI1M_DIV_15 + * @arg @ref LL_RCC_PLLSAI1M_DIV_16 + * @param __PLLSAI1N__ Between 8 and 86 or 127 depending on devices + * @param __PLLSAI1R__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1R_DIV_2 + * @arg @ref LL_RCC_PLLSAI1R_DIV_4 + * @arg @ref LL_RCC_PLLSAI1R_DIV_6 + * @arg @ref LL_RCC_PLLSAI1R_DIV_8 + * @retval PLLSAI1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI1_ADC_FREQ(__INPUTFREQ__, __PLLSAI1M__, __PLLSAI1N__, __PLLSAI1R__) \ + ((__INPUTFREQ__) / ((((__PLLSAI1M__) >> RCC_PLLSAI1CFGR_PLLSAI1M_Pos) + 1U)) * (__PLLSAI1N__) / \ + ((((__PLLSAI1R__) >> RCC_PLLSAI1CFGR_PLLSAI1R_Pos) + 1U) << 1U)) + +#else +/** + * @brief Helper macro to calculate the PLLSAI1 frequency used on ADC domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI1_ADC_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLSAI1_GetN (), @ref LL_RCC_PLLSAI1_GetR ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLSAI1N__ Between 8 and 86 + * @param __PLLSAI1R__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1R_DIV_2 + * @arg @ref LL_RCC_PLLSAI1R_DIV_4 + * @arg @ref LL_RCC_PLLSAI1R_DIV_6 + * @arg @ref LL_RCC_PLLSAI1R_DIV_8 + * @retval PLLSAI1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI1_ADC_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAI1N__, __PLLSAI1R__) \ + ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) * (__PLLSAI1N__) / \ + ((((__PLLSAI1R__) >> RCC_PLLSAI1CFGR_PLLSAI1R_Pos) + 1U) << 1U)) + +#endif /* RCC_PLLSAI1M_DIV_1_16_SUPPORT */ +#endif /* RCC_PLLSAI1_SUPPORT */ + +#if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) && defined(RCC_PLLSAI2P_DIV_2_31_SUPPORT) +/** + * @brief Helper macro to calculate the PLLSAI2 frequency used for SAI domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI2_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLLSAI2_GetDivider (), + * @ref LL_RCC_PLLSAI2_GetN (), @ref LL_RCC_PLLSAI2_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLSAI2M__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2M_DIV_1 + * @arg @ref LL_RCC_PLLSAI2M_DIV_2 + * @arg @ref LL_RCC_PLLSAI2M_DIV_3 + * @arg @ref LL_RCC_PLLSAI2M_DIV_4 + * @arg @ref LL_RCC_PLLSAI2M_DIV_5 + * @arg @ref LL_RCC_PLLSAI2M_DIV_6 + * @arg @ref LL_RCC_PLLSAI2M_DIV_7 + * @arg @ref LL_RCC_PLLSAI2M_DIV_8 + * @arg @ref LL_RCC_PLLSAI2M_DIV_9 + * @arg @ref LL_RCC_PLLSAI2M_DIV_10 + * @arg @ref LL_RCC_PLLSAI2M_DIV_11 + * @arg @ref LL_RCC_PLLSAI2M_DIV_12 + * @arg @ref LL_RCC_PLLSAI2M_DIV_13 + * @arg @ref LL_RCC_PLLSAI2M_DIV_14 + * @arg @ref LL_RCC_PLLSAI2M_DIV_15 + * @arg @ref LL_RCC_PLLSAI2M_DIV_16 + * @param __PLLSAI2N__ Between 8 and 86 or 127 depending on devices + * @param __PLLSAI2P__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2P_DIV_2 + * @arg @ref LL_RCC_PLLSAI2P_DIV_3 + * @arg @ref LL_RCC_PLLSAI2P_DIV_4 + * @arg @ref LL_RCC_PLLSAI2P_DIV_5 + * @arg @ref LL_RCC_PLLSAI2P_DIV_6 + * @arg @ref LL_RCC_PLLSAI2P_DIV_7 + * @arg @ref LL_RCC_PLLSAI2P_DIV_8 + * @arg @ref LL_RCC_PLLSAI2P_DIV_9 + * @arg @ref LL_RCC_PLLSAI2P_DIV_10 + * @arg @ref LL_RCC_PLLSAI2P_DIV_11 + * @arg @ref LL_RCC_PLLSAI2P_DIV_12 + * @arg @ref LL_RCC_PLLSAI2P_DIV_13 + * @arg @ref LL_RCC_PLLSAI2P_DIV_14 + * @arg @ref LL_RCC_PLLSAI2P_DIV_15 + * @arg @ref LL_RCC_PLLSAI2P_DIV_16 + * @arg @ref LL_RCC_PLLSAI2P_DIV_17 + * @arg @ref LL_RCC_PLLSAI2P_DIV_18 + * @arg @ref LL_RCC_PLLSAI2P_DIV_19 + * @arg @ref LL_RCC_PLLSAI2P_DIV_20 + * @arg @ref LL_RCC_PLLSAI2P_DIV_21 + * @arg @ref LL_RCC_PLLSAI2P_DIV_22 + * @arg @ref LL_RCC_PLLSAI2P_DIV_23 + * @arg @ref LL_RCC_PLLSAI2P_DIV_24 + * @arg @ref LL_RCC_PLLSAI2P_DIV_25 + * @arg @ref LL_RCC_PLLSAI2P_DIV_26 + * @arg @ref LL_RCC_PLLSAI2P_DIV_27 + * @arg @ref LL_RCC_PLLSAI2P_DIV_28 + * @arg @ref LL_RCC_PLLSAI2P_DIV_29 + * @arg @ref LL_RCC_PLLSAI2P_DIV_30 + * @arg @ref LL_RCC_PLLSAI2P_DIV_31 + * @retval PLLSAI2 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI2_SAI_FREQ(__INPUTFREQ__, __PLLSAI2M__, __PLLSAI2N__, __PLLSAI2P__) \ + ((__INPUTFREQ__) / ((((__PLLSAI2M__) >> RCC_PLLSAI2CFGR_PLLSAI2M_Pos) + 1U)) * (__PLLSAI2N__) / \ + ((__PLLSAI2P__) >> RCC_PLLSAI2CFGR_PLLSAI2PDIV_Pos)) + +#elif defined(RCC_PLLSAI2P_DIV_2_31_SUPPORT) +/** + * @brief Helper macro to calculate the PLLSAI2 frequency used for SAI domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI2_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLSAI2_GetN (), @ref LL_RCC_PLLSAI2_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLSAI2N__ Between 8 and 86 or 127 depending on devices + * @param __PLLSAI2P__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2P_DIV_2 + * @arg @ref LL_RCC_PLLSAI2P_DIV_3 + * @arg @ref LL_RCC_PLLSAI2P_DIV_4 + * @arg @ref LL_RCC_PLLSAI2P_DIV_5 + * @arg @ref LL_RCC_PLLSAI2P_DIV_6 + * @arg @ref LL_RCC_PLLSAI2P_DIV_7 + * @arg @ref LL_RCC_PLLSAI2P_DIV_8 + * @arg @ref LL_RCC_PLLSAI2P_DIV_9 + * @arg @ref LL_RCC_PLLSAI2P_DIV_10 + * @arg @ref LL_RCC_PLLSAI2P_DIV_11 + * @arg @ref LL_RCC_PLLSAI2P_DIV_12 + * @arg @ref LL_RCC_PLLSAI2P_DIV_13 + * @arg @ref LL_RCC_PLLSAI2P_DIV_14 + * @arg @ref LL_RCC_PLLSAI2P_DIV_15 + * @arg @ref LL_RCC_PLLSAI2P_DIV_16 + * @arg @ref LL_RCC_PLLSAI2P_DIV_17 + * @arg @ref LL_RCC_PLLSAI2P_DIV_18 + * @arg @ref LL_RCC_PLLSAI2P_DIV_19 + * @arg @ref LL_RCC_PLLSAI2P_DIV_20 + * @arg @ref LL_RCC_PLLSAI2P_DIV_21 + * @arg @ref LL_RCC_PLLSAI2P_DIV_22 + * @arg @ref LL_RCC_PLLSAI2P_DIV_23 + * @arg @ref LL_RCC_PLLSAI2P_DIV_24 + * @arg @ref LL_RCC_PLLSAI2P_DIV_25 + * @arg @ref LL_RCC_PLLSAI2P_DIV_26 + * @arg @ref LL_RCC_PLLSAI2P_DIV_27 + * @arg @ref LL_RCC_PLLSAI2P_DIV_28 + * @arg @ref LL_RCC_PLLSAI2P_DIV_29 + * @arg @ref LL_RCC_PLLSAI2P_DIV_30 + * @arg @ref LL_RCC_PLLSAI2P_DIV_31 + * @retval PLLSAI2 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI2_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAI2N__, __PLLSAI2P__) \ + ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) * (__PLLSAI2N__) / \ + ((__PLLSAI2P__) >> RCC_PLLSAI2CFGR_PLLSAI2PDIV_Pos)) + +#else +/** + * @brief Helper macro to calculate the PLLSAI2 frequency used for SAI domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI2_SAI_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLSAI2_GetN (), @ref LL_RCC_PLLSAI2_GetP ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLSAI2N__ Between 8 and 86 + * @param __PLLSAI2P__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2P_DIV_7 + * @arg @ref LL_RCC_PLLSAI2P_DIV_17 + * @retval PLLSAI2 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI2_SAI_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAI2N__, __PLLSAI2P__) \ + ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1)) * (__PLLSAI2N__) / \ + (((__PLLSAI2P__) == LL_RCC_PLLSAI2P_DIV_7) ? 7U : 17U)) + +#endif /* RCC_PLLSAI2P_DIV_2_31_SUPPORT */ + +#if defined(LTDC) +/** + * @brief Helper macro to calculate the PLLSAI2 frequency used for LTDC domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI2_LTDC_FREQ (HSE_VALUE,@ref LL_RCC_PLLSAI2_GetDivider (), + * @ref LL_RCC_PLLSAI2_GetN (), @ref LL_RCC_PLLSAI2_GetR (), @ref LL_RCC_PLLSAI2_GetDIVR ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI/MSI) + * @param __PLLSAI2M__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2M_DIV_1 + * @arg @ref LL_RCC_PLLSAI2M_DIV_2 + * @arg @ref LL_RCC_PLLSAI2M_DIV_3 + * @arg @ref LL_RCC_PLLSAI2M_DIV_4 + * @arg @ref LL_RCC_PLLSAI2M_DIV_5 + * @arg @ref LL_RCC_PLLSAI2M_DIV_6 + * @arg @ref LL_RCC_PLLSAI2M_DIV_7 + * @arg @ref LL_RCC_PLLSAI2M_DIV_8 + * @arg @ref LL_RCC_PLLSAI2M_DIV_9 + * @arg @ref LL_RCC_PLLSAI2M_DIV_10 + * @arg @ref LL_RCC_PLLSAI2M_DIV_11 + * @arg @ref LL_RCC_PLLSAI2M_DIV_12 + * @arg @ref LL_RCC_PLLSAI2M_DIV_13 + * @arg @ref LL_RCC_PLLSAI2M_DIV_14 + * @arg @ref LL_RCC_PLLSAI2M_DIV_15 + * @arg @ref LL_RCC_PLLSAI2M_DIV_16 + * @param __PLLSAI2N__ Between 8 and 127 + * @param __PLLSAI2R__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2R_DIV_2 + * @arg @ref LL_RCC_PLLSAI2R_DIV_4 + * @arg @ref LL_RCC_PLLSAI2R_DIV_6 + * @arg @ref LL_RCC_PLLSAI2R_DIV_8 + * @param __PLLSAI2DIVR__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_2 + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_4 + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_8 + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_16 + * @retval PLLSAI2 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI2_LTDC_FREQ(__INPUTFREQ__, __PLLSAI2M__, __PLLSAI2N__, __PLLSAI2R__, __PLLSAI2DIVR__) \ + (((__INPUTFREQ__) / (((__PLLSAI2M__)>> RCC_PLLSAI2CFGR_PLLSAI2M_Pos) + 1U)) * (__PLLSAI2N__) / \ + (((((__PLLSAI2R__) >> RCC_PLLSAI2CFGR_PLLSAI2R_Pos ) + 1U) << 1U) * (2UL << ((__PLLSAI2DIVR__) >> RCC_CCIPR2_PLLSAI2DIVR_Pos)))) +#elif defined(RCC_PLLSAI2_SUPPORT) +/** + * @brief Helper macro to calculate the PLLSAI2 frequency used on ADC domain + * @note ex: @ref __LL_RCC_CALC_PLLSAI2_ADC_FREQ (HSE_VALUE,@ref LL_RCC_PLL_GetDivider (), + * @ref LL_RCC_PLLSAI2_GetN (), @ref LL_RCC_PLLSAI2_GetR ()); + * @param __INPUTFREQ__ PLL Input frequency (based on MSI/HSE/HSI) + * @param __PLLM__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param __PLLSAI2N__ Between 8 and 86 + * @param __PLLSAI2R__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2R_DIV_2 + * @arg @ref LL_RCC_PLLSAI2R_DIV_4 + * @arg @ref LL_RCC_PLLSAI2R_DIV_6 + * @arg @ref LL_RCC_PLLSAI2R_DIV_8 + * @retval PLLSAI2 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI2_ADC_FREQ(__INPUTFREQ__, __PLLM__, __PLLSAI2N__, __PLLSAI2R__) \ + ((__INPUTFREQ__) / ((((__PLLM__)>> RCC_PLLCFGR_PLLM_Pos) + 1U)) * (__PLLSAI2N__) / \ + ((((__PLLSAI2R__) >> RCC_PLLSAI2CFGR_PLLSAI2R_Pos ) + 1U) << 1U)) + +#endif /* LTDC */ + +#if defined(DSI) +/** + * @brief Helper macro to calculate the PLLDSICLK frequency used on DSI + * @note ex: @ref __LL_RCC_CALC_PLLSAI2_DSI_FREQ (HSE_VALUE,@ref LL_RCC_PLLSAI2_GetDivider (), + * @ref LL_RCC_PLLSAI2_GetN (), @ref LL_RCC_PLLSAI2_GetQ ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE/HSI/MSI) + * @param __PLLSAI2M__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2M_DIV_1 + * @arg @ref LL_RCC_PLLSAI2M_DIV_2 + * @arg @ref LL_RCC_PLLSAI2M_DIV_3 + * @arg @ref LL_RCC_PLLSAI2M_DIV_4 + * @arg @ref LL_RCC_PLLSAI2M_DIV_5 + * @arg @ref LL_RCC_PLLSAI2M_DIV_6 + * @arg @ref LL_RCC_PLLSAI2M_DIV_7 + * @arg @ref LL_RCC_PLLSAI2M_DIV_8 + * @arg @ref LL_RCC_PLLSAI2M_DIV_9 + * @arg @ref LL_RCC_PLLSAI2M_DIV_10 + * @arg @ref LL_RCC_PLLSAI2M_DIV_11 + * @arg @ref LL_RCC_PLLSAI2M_DIV_12 + * @arg @ref LL_RCC_PLLSAI2M_DIV_13 + * @arg @ref LL_RCC_PLLSAI2M_DIV_14 + * @arg @ref LL_RCC_PLLSAI2M_DIV_15 + * @arg @ref LL_RCC_PLLSAI2M_DIV_16 + * @param __PLLSAI2N__ Between 8 and 127 + * @param __PLLSAI2Q__ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2Q_DIV_2 + * @arg @ref LL_RCC_PLLSAI2Q_DIV_4 + * @arg @ref LL_RCC_PLLSAI2Q_DIV_6 + * @arg @ref LL_RCC_PLLSAI2Q_DIV_8 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLSAI2_DSI_FREQ(__INPUTFREQ__, __PLLSAI2M__, __PLLSAI2N__, __PLLSAI2Q__) \ + ((__INPUTFREQ__) / ((((__PLLSAI2M__) >> RCC_PLLSAI2CFGR_PLLSAI2M_Pos) + 1U)) * (__PLLSAI2N__) / \ + ((((__PLLSAI2Q__) >> RCC_PLLSAI2CFGR_PLLSAI2Q_Pos) + 1U) << 1U)) +#endif /* DSI */ + + + +/** + * @brief Helper macro to calculate the HCLK frequency + * @param __SYSCLKFREQ__ SYSCLK frequency (based on MSI/HSE/HSI/PLLCLK) + * @param __AHBPRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval HCLK clock frequency (in Hz) + */ +#define __LL_RCC_CALC_HCLK_FREQ(__SYSCLKFREQ__, __AHBPRESCALER__) ((__SYSCLKFREQ__) >> AHBPrescTable[((__AHBPRESCALER__) & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]) + +/** + * @brief Helper macro to calculate the PCLK1 frequency (ABP1) + * @param __HCLKFREQ__ HCLK frequency + * @param __APB1PRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval PCLK1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PCLK1_FREQ(__HCLKFREQ__, __APB1PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[(__APB1PRESCALER__) >> RCC_CFGR_PPRE1_Pos]) + +/** + * @brief Helper macro to calculate the PCLK2 frequency (ABP2) + * @param __HCLKFREQ__ HCLK frequency + * @param __APB2PRESCALER__ This parameter can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + * @retval PCLK2 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PCLK2_FREQ(__HCLKFREQ__, __APB2PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[(__APB2PRESCALER__) >> RCC_CFGR_PPRE2_Pos]) + +/** + * @brief Helper macro to calculate the MSI frequency (in Hz) + * @note __MSISEL__ can be retrieved thanks to function LL_RCC_MSI_IsEnabledRangeSelect() + * @note if __MSISEL__ is equal to LL_RCC_MSIRANGESEL_STANDBY, + * __MSIRANGE__can be retrieved by LL_RCC_MSI_GetRangeAfterStandby() + * else by LL_RCC_MSI_GetRange() + * ex: __LL_RCC_CALC_MSI_FREQ(LL_RCC_MSI_IsEnabledRangeSelect(), + * (LL_RCC_MSI_IsEnabledRangeSelect()? + * LL_RCC_MSI_GetRange(): + * LL_RCC_MSI_GetRangeAfterStandby())) + * @param __MSISEL__ This parameter can be one of the following values: + * @arg @ref LL_RCC_MSIRANGESEL_STANDBY + * @arg @ref LL_RCC_MSIRANGESEL_RUN + * @param __MSIRANGE__ This parameter can be one of the following values: + * @arg @ref LL_RCC_MSIRANGE_0 + * @arg @ref LL_RCC_MSIRANGE_1 + * @arg @ref LL_RCC_MSIRANGE_2 + * @arg @ref LL_RCC_MSIRANGE_3 + * @arg @ref LL_RCC_MSIRANGE_4 + * @arg @ref LL_RCC_MSIRANGE_5 + * @arg @ref LL_RCC_MSIRANGE_6 + * @arg @ref LL_RCC_MSIRANGE_7 + * @arg @ref LL_RCC_MSIRANGE_8 + * @arg @ref LL_RCC_MSIRANGE_9 + * @arg @ref LL_RCC_MSIRANGE_10 + * @arg @ref LL_RCC_MSIRANGE_11 + * @arg @ref LL_RCC_MSISRANGE_4 + * @arg @ref LL_RCC_MSISRANGE_5 + * @arg @ref LL_RCC_MSISRANGE_6 + * @arg @ref LL_RCC_MSISRANGE_7 + * @retval MSI clock frequency (in Hz) + */ +#define __LL_RCC_CALC_MSI_FREQ(__MSISEL__, __MSIRANGE__) (((__MSISEL__) == LL_RCC_MSIRANGESEL_STANDBY) ? \ + (MSIRangeTable[(__MSIRANGE__) >> 8U]) : \ + (MSIRangeTable[(__MSIRANGE__) >> 4U])) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Functions RCC Exported Functions + * @{ + */ + +/** @defgroup RCC_LL_EF_HSE HSE + * @{ + */ + +/** + * @brief Enable the Clock Security System. + * @rmtoll CR CSSON LL_RCC_HSE_EnableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_EnableCSS(void) +{ + SET_BIT(RCC->CR, RCC_CR_CSSON); +} + +/** + * @brief Enable HSE external oscillator (HSE Bypass) + * @rmtoll CR HSEBYP LL_RCC_HSE_EnableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_EnableBypass(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSEBYP); +} + +/** + * @brief Disable HSE external oscillator (HSE Bypass) + * @rmtoll CR HSEBYP LL_RCC_HSE_DisableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_DisableBypass(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); +} + +/** + * @brief Enable HSE crystal oscillator (HSE ON) + * @rmtoll CR HSEON LL_RCC_HSE_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSEON); +} + +/** + * @brief Disable HSE crystal oscillator (HSE ON) + * @rmtoll CR HSEON LL_RCC_HSE_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); +} + +/** + * @brief Check if HSE oscillator Ready + * @rmtoll CR HSERDY LL_RCC_HSE_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_HSERDY) == RCC_CR_HSERDY) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_HSI HSI + * @{ + */ + +/** + * @brief Enable HSI even in stop mode + * @note HSI oscillator is forced ON even in Stop mode + * @rmtoll CR HSIKERON LL_RCC_HSI_EnableInStopMode + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_EnableInStopMode(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSIKERON); +} + +/** + * @brief Disable HSI in stop mode + * @rmtoll CR HSIKERON LL_RCC_HSI_DisableInStopMode + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_DisableInStopMode(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSIKERON); +} + +/** + * @brief Check if HSI is enabled in stop mode + * @rmtoll CR HSIKERON LL_RCC_HSI_IsEnabledInStopMode + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_IsEnabledInStopMode(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_HSIKERON) == RCC_CR_HSIKERON) ? 1UL : 0UL); +} + +/** + * @brief Enable HSI oscillator + * @rmtoll CR HSION LL_RCC_HSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSION); +} + +/** + * @brief Disable HSI oscillator + * @rmtoll CR HSION LL_RCC_HSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSION); +} + +/** + * @brief Check if HSI clock is ready + * @rmtoll CR HSIRDY LL_RCC_HSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_HSIRDY) == RCC_CR_HSIRDY) ? 1UL : 0UL); +} + +/** + * @brief Enable HSI Automatic from stop mode + * @rmtoll CR HSIASFS LL_RCC_HSI_EnableAutoFromStop + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_EnableAutoFromStop(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSIASFS); +} + +/** + * @brief Disable HSI Automatic from stop mode + * @rmtoll CR HSIASFS LL_RCC_HSI_DisableAutoFromStop + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_DisableAutoFromStop(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSIASFS); +} +/** + * @brief Get HSI Calibration value + * @note When HSITRIM is written, HSICAL is updated with the sum of + * HSITRIM and the factory trim value + * @rmtoll ICSCR HSICAL LL_RCC_HSI_GetCalibration + * @retval Between Min_Data = 0x00 and Max_Data = 0xFF + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibration(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_HSICAL) >> RCC_ICSCR_HSICAL_Pos); +} + +/** + * @brief Set HSI Calibration trimming + * @note user-programmable trimming value that is added to the HSICAL + * @note Default value is 16 on STM32L47x/STM32L48x or 64 on other devices, + * which, when added to the HSICAL value, should trim the HSI to 16 MHz +/- 1 % + * @rmtoll ICSCR HSITRIM LL_RCC_HSI_SetCalibTrimming + * @param Value Between Min_Data = 0 and Max_Data = 31 on STM32L47x/STM32L48x or + * between Min_Data = 0 and Max_Data = 127 on other devices + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value) +{ + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_HSITRIM, Value << RCC_ICSCR_HSITRIM_Pos); +} + +/** + * @brief Get HSI Calibration trimming + * @rmtoll ICSCR HSITRIM LL_RCC_HSI_GetCalibTrimming + * @retval Between Min_Data = 0 and Max_Data = 31 on STM32L47x/STM32L48x or + * between Min_Data = 0 and Max_Data = 127 on other devices + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibTrimming(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_HSITRIM) >> RCC_ICSCR_HSITRIM_Pos); +} + +/** + * @} + */ + +#if defined(RCC_HSI48_SUPPORT) +/** @defgroup RCC_LL_EF_HSI48 HSI48 + * @{ + */ + +/** + * @brief Enable HSI48 + * @rmtoll CRRCR HSI48ON LL_RCC_HSI48_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI48_Enable(void) +{ + SET_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON); +} + +/** + * @brief Disable HSI48 + * @rmtoll CRRCR HSI48ON LL_RCC_HSI48_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI48_Disable(void) +{ + CLEAR_BIT(RCC->CRRCR, RCC_CRRCR_HSI48ON); +} + +/** + * @brief Check if HSI48 oscillator Ready + * @rmtoll CRRCR HSI48RDY LL_RCC_HSI48_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSI48_IsReady(void) +{ + return ((READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48RDY) == RCC_CRRCR_HSI48RDY) ? 1UL : 0UL); +} + +/** + * @brief Get HSI48 Calibration value + * @rmtoll CRRCR HSI48CAL LL_RCC_HSI48_GetCalibration + * @retval Between Min_Data = 0x00 and Max_Data = 0x1FF + */ +__STATIC_INLINE uint32_t LL_RCC_HSI48_GetCalibration(void) +{ + return (uint32_t)(READ_BIT(RCC->CRRCR, RCC_CRRCR_HSI48CAL) >> RCC_CRRCR_HSI48CAL_Pos); +} + +/** + * @} + */ +#endif /* RCC_HSI48_SUPPORT */ + +/** @defgroup RCC_LL_EF_LSE LSE + * @{ + */ + +/** + * @brief Enable Low Speed External (LSE) crystal. + * @rmtoll BDCR LSEON LL_RCC_LSE_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_Enable(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); +} + +/** + * @brief Disable Low Speed External (LSE) crystal. + * @rmtoll BDCR LSEON LL_RCC_LSE_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_Disable(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); +} + +/** + * @brief Enable external clock source (LSE bypass). + * @rmtoll BDCR LSEBYP LL_RCC_LSE_EnableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_EnableBypass(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +} + +/** + * @brief Disable external clock source (LSE bypass). + * @rmtoll BDCR LSEBYP LL_RCC_LSE_DisableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_DisableBypass(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +} + +/** + * @brief Set LSE oscillator drive capability + * @note The oscillator is in Xtal mode when it is not in bypass mode. + * @rmtoll BDCR LSEDRV LL_RCC_LSE_SetDriveCapability + * @param LSEDrive This parameter can be one of the following values: + * @arg @ref LL_RCC_LSEDRIVE_LOW + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH + * @arg @ref LL_RCC_LSEDRIVE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_SetDriveCapability(uint32_t LSEDrive) +{ + MODIFY_REG(RCC->BDCR, RCC_BDCR_LSEDRV, LSEDrive); +} + +/** + * @brief Get LSE oscillator drive capability + * @rmtoll BDCR LSEDRV LL_RCC_LSE_GetDriveCapability + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LSEDRIVE_LOW + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMLOW + * @arg @ref LL_RCC_LSEDRIVE_MEDIUMHIGH + * @arg @ref LL_RCC_LSEDRIVE_HIGH + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_GetDriveCapability(void) +{ + return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_LSEDRV)); +} + +/** + * @brief Enable Clock security system on LSE. + * @rmtoll BDCR LSECSSON LL_RCC_LSE_EnableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_EnableCSS(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSECSSON); +} + +/** + * @brief Disable Clock security system on LSE. + * @note Clock security system can be disabled only after a LSE + * failure detection. In that case it MUST be disabled by software. + * @rmtoll BDCR LSECSSON LL_RCC_LSE_DisableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_DisableCSS(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSECSSON); +} + +/** + * @brief Check if LSE oscillator Ready + * @rmtoll BDCR LSERDY LL_RCC_LSE_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void) +{ + return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == RCC_BDCR_LSERDY) ? 1UL : 0UL); +} + +/** + * @brief Check if CSS on LSE failure Detection + * @rmtoll BDCR LSECSSD LL_RCC_LSE_IsCSSDetected + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_IsCSSDetected(void) +{ + return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSECSSD) == RCC_BDCR_LSECSSD) ? 1UL : 0UL); +} + +#if defined(RCC_BDCR_LSESYSDIS) +/** + * @brief Disable LSE oscillator propagation + * @note LSE clock is not propagated to any peripheral except to RTC which remains clocked + * @note A 2 LSE-clock delay is needed for LSESYSDIS setting to be taken into account + * @rmtoll BDCR LSESYSDIS LL_RCC_LSE_DisablePropagation + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_DisablePropagation(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSESYSDIS); +} + +/** + * @brief Enable LSE oscillator propagation + * @note A 2 LSE-clock delay is needed for LSESYSDIS resetting to be taken into account + * @rmtoll BDCR LSESYSDIS LL_RCC_LSE_EnablePropagation + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_EnablePropagation(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSESYSDIS); +} + +/** + * @brief Check if LSE oscillator propagation is enabled + * @rmtoll BDCR LSESYSDIS LL_RCC_LSE_IsPropagationEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_IsPropagationEnabled(void) +{ + return ((READ_BIT(RCC->BDCR, RCC_BDCR_LSESYSDIS) == 0U) ? 1UL : 0UL); +} +#endif /* RCC_BDCR_LSESYSDIS */ +/** + * @} + */ + +/** @defgroup RCC_LL_EF_LSI LSI + * @{ + */ + +/** + * @brief Enable LSI Oscillator + * @rmtoll CSR LSION LL_RCC_LSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_Enable(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_LSION); +} + +/** + * @brief Disable LSI Oscillator + * @rmtoll CSR LSION LL_RCC_LSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_Disable(void) +{ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); +} + +/** + * @brief Check if LSI is Ready + * @rmtoll CSR LSIRDY LL_RCC_LSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == RCC_CSR_LSIRDY) ? 1UL : 0UL); +} + +#if defined(RCC_CSR_LSIPREDIV) +/** + * @brief Set LSI division factor + * @rmtoll CSR LSIPREDIV LL_RCC_LSI_SetPrediv + * @param LSI_PREDIV This parameter can be one of the following values: + * @arg @ref LL_RCC_LSI_PREDIV_1 + * @arg @ref LL_RCC_LSI_PREDIV_128 + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_SetPrediv(uint32_t LSI_PREDIV) +{ + MODIFY_REG(RCC->CSR, RCC_CSR_LSIPREDIV, LSI_PREDIV); +} + +/** + * @brief Get LSI division factor + * @rmtoll CSR LSIPREDIV LL_RCC_LSI_GetPrediv + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LSI_PREDIV_1 + * @arg @ref LL_RCC_LSI_PREDIV_128 + */ +__STATIC_INLINE uint32_t LL_RCC_LSI_GetPrediv(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_LSIPREDIV)); +} +#endif /* RCC_CSR_LSIPREDIV */ + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_MSI MSI + * @{ + */ + +/** + * @brief Enable MSI oscillator + * @rmtoll CR MSION LL_RCC_MSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_MSION); +} + +/** + * @brief Disable MSI oscillator + * @rmtoll CR MSION LL_RCC_MSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_MSION); +} + +/** + * @brief Check if MSI oscillator Ready + * @rmtoll CR MSIRDY LL_RCC_MSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_MSIRDY) == RCC_CR_MSIRDY) ? 1UL : 0UL); +} + +/** + * @brief Enable MSI PLL-mode (Hardware auto calibration with LSE) + * @note MSIPLLEN must be enabled after LSE is enabled (LSEON enabled) + * and ready (LSERDY set by hardware) + * @note hardware protection to avoid enabling MSIPLLEN if LSE is not + * ready + * @rmtoll CR MSIPLLEN LL_RCC_MSI_EnablePLLMode + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_EnablePLLMode(void) +{ + SET_BIT(RCC->CR, RCC_CR_MSIPLLEN); +} + +/** + * @brief Disable MSI-PLL mode + * @note cleared by hardware when LSE is disabled (LSEON = 0) or when + * the Clock Security System on LSE detects a LSE failure + * @rmtoll CR MSIPLLEN LL_RCC_MSI_DisablePLLMode + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_DisablePLLMode(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_MSIPLLEN); +} + +/** + * @brief Enable MSI clock range selection with MSIRANGE register + * @note Write 0 has no effect. After a standby or a reset + * MSIRGSEL is at 0 and the MSI range value is provided by + * MSISRANGE + * @rmtoll CR MSIRGSEL LL_RCC_MSI_EnableRangeSelection + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_EnableRangeSelection(void) +{ + SET_BIT(RCC->CR, RCC_CR_MSIRGSEL); +} + +/** + * @brief Check if MSI clock range is selected with MSIRANGE register + * @rmtoll CR MSIRGSEL LL_RCC_MSI_IsEnabledRangeSelect + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_IsEnabledRangeSelect(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_MSIRGSEL) == RCC_CR_MSIRGSEL) ? 1UL : 0UL); +} + +/** + * @brief Configure the Internal Multi Speed oscillator (MSI) clock range in run mode. + * @rmtoll CR MSIRANGE LL_RCC_MSI_SetRange + * @param Range This parameter can be one of the following values: + * @arg @ref LL_RCC_MSIRANGE_0 + * @arg @ref LL_RCC_MSIRANGE_1 + * @arg @ref LL_RCC_MSIRANGE_2 + * @arg @ref LL_RCC_MSIRANGE_3 + * @arg @ref LL_RCC_MSIRANGE_4 + * @arg @ref LL_RCC_MSIRANGE_5 + * @arg @ref LL_RCC_MSIRANGE_6 + * @arg @ref LL_RCC_MSIRANGE_7 + * @arg @ref LL_RCC_MSIRANGE_8 + * @arg @ref LL_RCC_MSIRANGE_9 + * @arg @ref LL_RCC_MSIRANGE_10 + * @arg @ref LL_RCC_MSIRANGE_11 + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_SetRange(uint32_t Range) +{ + MODIFY_REG(RCC->CR, RCC_CR_MSIRANGE, Range); +} + +/** + * @brief Get the Internal Multi Speed oscillator (MSI) clock range in run mode. + * @rmtoll CR MSIRANGE LL_RCC_MSI_GetRange + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_MSIRANGE_0 + * @arg @ref LL_RCC_MSIRANGE_1 + * @arg @ref LL_RCC_MSIRANGE_2 + * @arg @ref LL_RCC_MSIRANGE_3 + * @arg @ref LL_RCC_MSIRANGE_4 + * @arg @ref LL_RCC_MSIRANGE_5 + * @arg @ref LL_RCC_MSIRANGE_6 + * @arg @ref LL_RCC_MSIRANGE_7 + * @arg @ref LL_RCC_MSIRANGE_8 + * @arg @ref LL_RCC_MSIRANGE_9 + * @arg @ref LL_RCC_MSIRANGE_10 + * @arg @ref LL_RCC_MSIRANGE_11 + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_GetRange(void) +{ + return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_MSIRANGE)); +} + +/** + * @brief Configure MSI range used after standby + * @rmtoll CSR MSISRANGE LL_RCC_MSI_SetRangeAfterStandby + * @param Range This parameter can be one of the following values: + * @arg @ref LL_RCC_MSISRANGE_4 + * @arg @ref LL_RCC_MSISRANGE_5 + * @arg @ref LL_RCC_MSISRANGE_6 + * @arg @ref LL_RCC_MSISRANGE_7 + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_SetRangeAfterStandby(uint32_t Range) +{ + MODIFY_REG(RCC->CSR, RCC_CSR_MSISRANGE, Range); +} + +/** + * @brief Get MSI range used after standby + * @rmtoll CSR MSISRANGE LL_RCC_MSI_GetRangeAfterStandby + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_MSISRANGE_4 + * @arg @ref LL_RCC_MSISRANGE_5 + * @arg @ref LL_RCC_MSISRANGE_6 + * @arg @ref LL_RCC_MSISRANGE_7 + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_GetRangeAfterStandby(void) +{ + return (uint32_t)(READ_BIT(RCC->CSR, RCC_CSR_MSISRANGE)); +} + +/** + * @brief Get MSI Calibration value + * @note When MSITRIM is written, MSICAL is updated with the sum of + * MSITRIM and the factory trim value + * @rmtoll ICSCR MSICAL LL_RCC_MSI_GetCalibration + * @retval Between Min_Data = 0 and Max_Data = 255 + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_GetCalibration(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_MSICAL) >> RCC_ICSCR_MSICAL_Pos); +} + +/** + * @brief Set MSI Calibration trimming + * @note user-programmable trimming value that is added to the MSICAL + * @rmtoll ICSCR MSITRIM LL_RCC_MSI_SetCalibTrimming + * @param Value Between Min_Data = 0 and Max_Data = 255 + * @retval None + */ +__STATIC_INLINE void LL_RCC_MSI_SetCalibTrimming(uint32_t Value) +{ + MODIFY_REG(RCC->ICSCR, RCC_ICSCR_MSITRIM, Value << RCC_ICSCR_MSITRIM_Pos); +} + +/** + * @brief Get MSI Calibration trimming + * @rmtoll ICSCR MSITRIM LL_RCC_MSI_GetCalibTrimming + * @retval Between 0 and 255 + */ +__STATIC_INLINE uint32_t LL_RCC_MSI_GetCalibTrimming(void) +{ + return (uint32_t)(READ_BIT(RCC->ICSCR, RCC_ICSCR_MSITRIM) >> RCC_ICSCR_MSITRIM_Pos); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_LSCO LSCO + * @{ + */ + +/** + * @brief Enable Low speed clock + * @rmtoll BDCR LSCOEN LL_RCC_LSCO_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSCO_Enable(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSCOEN); +} + +/** + * @brief Disable Low speed clock + * @rmtoll BDCR LSCOEN LL_RCC_LSCO_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSCO_Disable(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSCOEN); +} + +/** + * @brief Configure Low speed clock selection + * @rmtoll BDCR LSCOSEL LL_RCC_LSCO_SetSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_LSCO_CLKSOURCE_LSI + * @arg @ref LL_RCC_LSCO_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSCO_SetSource(uint32_t Source) +{ + MODIFY_REG(RCC->BDCR, RCC_BDCR_LSCOSEL, Source); +} + +/** + * @brief Get Low speed clock selection + * @rmtoll BDCR LSCOSEL LL_RCC_LSCO_GetSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LSCO_CLKSOURCE_LSI + * @arg @ref LL_RCC_LSCO_CLKSOURCE_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_LSCO_GetSource(void) +{ + return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_LSCOSEL)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_System System + * @{ + */ + +/** + * @brief Configure the system clock source + * @rmtoll CFGR SW LL_RCC_SetSysClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_SYS_CLKSOURCE_MSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); +} + +/** + * @brief Get the system clock source + * @rmtoll CFGR SWS LL_RCC_GetSysClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_MSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); +} + +/** + * @brief Set AHB prescaler + * @rmtoll CFGR HPRE LL_RCC_SetAHBPrescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, Prescaler); +} + +/** + * @brief Set APB1 prescaler + * @rmtoll CFGR PPRE1 LL_RCC_SetAPB1Prescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, Prescaler); +} + +/** + * @brief Set APB2 prescaler + * @rmtoll CFGR PPRE2 LL_RCC_SetAPB2Prescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, Prescaler); +} + +/** + * @brief Get AHB prescaler + * @rmtoll CFGR HPRE LL_RCC_GetAHBPrescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HPRE)); +} + +/** + * @brief Get APB1 prescaler + * @rmtoll CFGR PPRE1 LL_RCC_GetAPB1Prescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1)); +} + +/** + * @brief Get APB2 prescaler + * @rmtoll CFGR PPRE2 LL_RCC_GetAPB2Prescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAPB2Prescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2)); +} + +/** + * @brief Set Clock After Wake-Up From Stop mode + * @rmtoll CFGR STOPWUCK LL_RCC_SetClkAfterWakeFromStop + * @param Clock This parameter can be one of the following values: + * @arg @ref LL_RCC_STOP_WAKEUPCLOCK_MSI + * @arg @ref LL_RCC_STOP_WAKEUPCLOCK_HSI + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetClkAfterWakeFromStop(uint32_t Clock) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_STOPWUCK, Clock); +} + +/** + * @brief Get Clock After Wake-Up From Stop mode + * @rmtoll CFGR STOPWUCK LL_RCC_GetClkAfterWakeFromStop + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_STOP_WAKEUPCLOCK_MSI + * @arg @ref LL_RCC_STOP_WAKEUPCLOCK_HSI + */ +__STATIC_INLINE uint32_t LL_RCC_GetClkAfterWakeFromStop(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_STOPWUCK)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_MCO MCO + * @{ + */ + +/** + * @brief Configure MCOx + * @rmtoll CFGR MCOSEL LL_RCC_ConfigMCO\n + * CFGR MCOPRE LL_RCC_ConfigMCO + * @param MCOxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO1SOURCE_NOCLOCK + * @arg @ref LL_RCC_MCO1SOURCE_SYSCLK + * @arg @ref LL_RCC_MCO1SOURCE_MSI + * @arg @ref LL_RCC_MCO1SOURCE_HSI + * @arg @ref LL_RCC_MCO1SOURCE_HSE + * @arg @ref LL_RCC_MCO1SOURCE_HSI48 (*) + * @arg @ref LL_RCC_MCO1SOURCE_PLLCLK + * @arg @ref LL_RCC_MCO1SOURCE_LSI + * @arg @ref LL_RCC_MCO1SOURCE_LSE + * + * (*) value not defined in all devices. + * @param MCOxPrescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO1_DIV_1 + * @arg @ref LL_RCC_MCO1_DIV_2 + * @arg @ref LL_RCC_MCO1_DIV_4 + * @arg @ref LL_RCC_MCO1_DIV_8 + * @arg @ref LL_RCC_MCO1_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_ConfigMCO(uint32_t MCOxSource, uint32_t MCOxPrescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_MCOSEL | RCC_CFGR_MCOPRE, MCOxSource | MCOxPrescaler); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_Peripheral_Clock_Source Peripheral Clock Source + * @{ + */ + +/** + * @brief Configure USARTx clock source + * @rmtoll CCIPR USARTxSEL LL_RCC_SetUSARTClockSource + * @param USARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE_PCLK2 + * @arg @ref LL_RCC_USART1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART1_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART1_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_USART2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART2_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART2_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART3_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_HSI (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_LSE (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetUSARTClockSource(uint32_t USARTxSource) +{ + MODIFY_REG(RCC->CCIPR, (USARTxSource >> 16U), (USARTxSource & 0x0000FFFFU)); +} + +#if defined(UART4) || defined(UART5) +/** + * @brief Configure UARTx clock source + * @rmtoll CCIPR UARTxSEL LL_RCC_SetUARTClockSource + * @param UARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_UART4_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART4_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART4_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART4_CLKSOURCE_LSE + * @arg @ref LL_RCC_UART5_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART5_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART5_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART5_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetUARTClockSource(uint32_t UARTxSource) +{ + MODIFY_REG(RCC->CCIPR, (UARTxSource >> 16U), (UARTxSource & 0x0000FFFFU)); +} +#endif /* UART4 || UART5 */ + +/** + * @brief Configure LPUART1x clock source + * @rmtoll CCIPR LPUART1SEL LL_RCC_SetLPUARTClockSource + * @param LPUARTxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetLPUARTClockSource(uint32_t LPUARTxSource) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_LPUART1SEL, LPUARTxSource); +} + +/** + * @brief Configure I2Cx clock source + * @rmtoll CCIPR I2CxSEL LL_RCC_SetI2CClockSource + * @param I2CxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C1_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C2_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_I2C2_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_I2C2_CLKSOURCE_HSI (*) + * @arg @ref LL_RCC_I2C3_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C3_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C3_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_I2C4_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetI2CClockSource(uint32_t I2CxSource) +{ + __IO uint32_t *reg = (__IO uint32_t *)(uint32_t)(RCC_BASE + 0x88U + (I2CxSource >> 24U)); + MODIFY_REG(*reg, 3UL << ((I2CxSource & 0x001F0000U) >> 16U), ((I2CxSource & 0x000000FFU) << ((I2CxSource & 0x001F0000U) >> 16U))); +} + +/** + * @brief Configure LPTIMx clock source + * @rmtoll CCIPR LPTIMxSEL LL_RCC_SetLPTIMClockSource + * @param LPTIMxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetLPTIMClockSource(uint32_t LPTIMxSource) +{ + MODIFY_REG(RCC->CCIPR, (LPTIMxSource & 0xFFFF0000U), (LPTIMxSource << 16U)); +} + +#if defined(RCC_CCIPR_SAI1SEL) || defined(RCC_CCIPR2_SAI1SEL) +/** + * @brief Configure SAIx clock source + @if STM32L4S9xx + * @rmtoll CCIPR2 SAIxSEL LL_RCC_SetSAIClockSource + @else + * @rmtoll CCIPR SAIxSEL LL_RCC_SetSAIClockSource + @endif + * @param SAIxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSAI1 + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSAI2 (*) + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PIN + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSAI1 (*) + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSAI2 (*) + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLL (*) + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PIN (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSAIClockSource(uint32_t SAIxSource) +{ +#if defined(RCC_CCIPR2_SAI1SEL) + MODIFY_REG(RCC->CCIPR2, (SAIxSource >> 16U), (SAIxSource & 0x0000FFFFU)); +#else + MODIFY_REG(RCC->CCIPR, (SAIxSource & 0xFFFF0000U), (SAIxSource << 16U)); +#endif /* RCC_CCIPR2_SAI1SEL */ +} +#endif /* RCC_CCIPR_SAI1SEL || RCC_CCIPR2_SAI1SEL */ + +#if defined(RCC_CCIPR2_SDMMCSEL) +/** + * @brief Configure SDMMC1 kernel clock source + * @rmtoll CCIPR2 SDMMCSEL LL_RCC_SetSDMMCKernelClockSource + * @param SDMMCxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_SDMMC1_KERNELCLKSOURCE_48CLK (*) + * @arg @ref LL_RCC_SDMMC1_KERNELCLKSOURCE_PLLP (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSDMMCKernelClockSource(uint32_t SDMMCxSource) +{ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_SDMMCSEL, SDMMCxSource); +} +#endif /* RCC_CCIPR2_SDMMCSEL */ + +/** + * @brief Configure SDMMC1 clock source + * @rmtoll CCIPR CLK48SEL LL_RCC_SetSDMMCClockSource + * @param SDMMCxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_NONE (*) + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_HSI48 (*) + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_PLLSAI1 (*) + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_PLL + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_MSI (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSDMMCClockSource(uint32_t SDMMCxSource) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_CLK48SEL, SDMMCxSource); +} + +/** + * @brief Configure RNG clock source + * @rmtoll CCIPR CLK48SEL LL_RCC_SetRNGClockSource + * @param RNGxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE_NONE (*) + * @arg @ref LL_RCC_RNG_CLKSOURCE_HSI48 (*) + * @arg @ref LL_RCC_RNG_CLKSOURCE_PLLSAI1 (*) + * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL + * @arg @ref LL_RCC_RNG_CLKSOURCE_MSI + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRNGClockSource(uint32_t RNGxSource) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_CLK48SEL, RNGxSource); +} + +#if defined(USB_OTG_FS) || defined(USB) +/** + * @brief Configure USB clock source + * @rmtoll CCIPR CLK48SEL LL_RCC_SetUSBClockSource + * @param USBxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE_NONE (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_HSI48 (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_PLLSAI1 (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL + * @arg @ref LL_RCC_USB_CLKSOURCE_MSI + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetUSBClockSource(uint32_t USBxSource) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_CLK48SEL, USBxSource); +} +#endif /* USB_OTG_FS || USB */ + +#if defined(RCC_CCIPR_ADCSEL) +/** + * @brief Configure ADC clock source + * @rmtoll CCIPR ADCSEL LL_RCC_SetADCClockSource + * @param ADCxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSOURCE_NONE + * @arg @ref LL_RCC_ADC_CLKSOURCE_PLLSAI1 (*) + * @arg @ref LL_RCC_ADC_CLKSOURCE_PLLSAI2 (*) + * @arg @ref LL_RCC_ADC_CLKSOURCE_SYSCLK + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetADCClockSource(uint32_t ADCxSource) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_ADCSEL, ADCxSource); +} +#endif /* RCC_CCIPR_ADCSEL */ + +#if defined(SWPMI1) +/** + * @brief Configure SWPMI clock source + * @rmtoll CCIPR SWPMI1SEL LL_RCC_SetSWPMIClockSource + * @param SWPMIxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_SWPMI1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_SWPMI1_CLKSOURCE_HSI + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSWPMIClockSource(uint32_t SWPMIxSource) +{ + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_SWPMI1SEL, SWPMIxSource); +} +#endif /* SWPMI1 */ + +#if defined(DFSDM1_Channel0) +#if defined(RCC_CCIPR2_ADFSDM1SEL) +/** + * @brief Configure DFSDM Audio clock source + * @rmtoll CCIPR2 ADFSDM1SEL LL_RCC_SetDFSDMAudioClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_HSI + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_MSI + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetDFSDMAudioClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_ADFSDM1SEL, Source); +} +#endif /* RCC_CCIPR2_ADFSDM1SEL */ + +/** + * @brief Configure DFSDM Kernel clock source + @if STM32L4S9xx + * @rmtoll CCIPR2 DFSDM1SEL LL_RCC_SetDFSDMClockSource + @else + * @rmtoll CCIPR DFSDM1SEL LL_RCC_SetDFSDMClockSource + @endif + * @param DFSDMxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2 + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetDFSDMClockSource(uint32_t DFSDMxSource) +{ +#if defined(RCC_CCIPR2_DFSDM1SEL) + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_DFSDM1SEL, DFSDMxSource); +#else + MODIFY_REG(RCC->CCIPR, RCC_CCIPR_DFSDM1SEL, DFSDMxSource); +#endif /* RCC_CCIPR2_DFSDM1SEL */ +} +#endif /* DFSDM1_Channel0 */ + +#if defined(DSI) +/** + * @brief Configure DSI clock source + * @rmtoll CCIPR2 DSISEL LL_RCC_SetDSIClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY + * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetDSIClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_DSISEL, Source); +} +#endif /* DSI */ + +#if defined(LTDC) +/** + * @brief Configure LTDC Clock Source + * @rmtoll CCIPR2 PLLSAI2DIVR LL_RCC_SetLTDCClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV2 + * @arg @ref LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV4 + * @arg @ref LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV8 + * @arg @ref LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetLTDCClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_PLLSAI2DIVR, Source); +} +#endif /* LTDC */ + +#if defined(OCTOSPI1) +/** + * @brief Configure OCTOSPI clock source + * @rmtoll CCIPR2 OSPISEL LL_RCC_SetOCTOSPIClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_OCTOSPI_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_OCTOSPI_CLKSOURCE_MSI + * @arg @ref LL_RCC_OCTOSPI_CLKSOURCE_PLL + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetOCTOSPIClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_OSPISEL, Source); +} +#endif /* OCTOSPI1 */ + +/** + * @brief Get USARTx clock source + * @rmtoll CCIPR USARTxSEL LL_RCC_GetUSARTClockSource + * @param USARTx This parameter can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE + * @arg @ref LL_RCC_USART2_CLKSOURCE + * @arg @ref LL_RCC_USART3_CLKSOURCE (*) + * + * (*) value not defined in all devices. + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_USART1_CLKSOURCE_PCLK2 + * @arg @ref LL_RCC_USART1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART1_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART1_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_USART2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_USART2_CLKSOURCE_HSI + * @arg @ref LL_RCC_USART2_CLKSOURCE_LSE + * @arg @ref LL_RCC_USART3_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_HSI (*) + * @arg @ref LL_RCC_USART3_CLKSOURCE_LSE (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetUSARTClockSource(uint32_t USARTx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, USARTx) | (USARTx << 16U)); +} + +#if defined(UART4) || defined(UART5) +/** + * @brief Get UARTx clock source + * @rmtoll CCIPR UARTxSEL LL_RCC_GetUARTClockSource + * @param UARTx This parameter can be one of the following values: + * @arg @ref LL_RCC_UART4_CLKSOURCE + * @arg @ref LL_RCC_UART5_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_UART4_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART4_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART4_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART4_CLKSOURCE_LSE + * @arg @ref LL_RCC_UART5_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_UART5_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_UART5_CLKSOURCE_HSI + * @arg @ref LL_RCC_UART5_CLKSOURCE_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetUARTClockSource(uint32_t UARTx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, UARTx) | (UARTx << 16U)); +} +#endif /* UART4 || UART5 */ + +/** + * @brief Get LPUARTx clock source + * @rmtoll CCIPR LPUART1SEL LL_RCC_GetLPUARTClockSource + * @param LPUARTx This parameter can be one of the following values: + * @arg @ref LL_RCC_LPUART1_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPUART1_CLKSOURCE_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetLPUARTClockSource(uint32_t LPUARTx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, LPUARTx)); +} + +/** + * @brief Get I2Cx clock source + * @rmtoll CCIPR I2CxSEL LL_RCC_GetI2CClockSource + * @param I2Cx This parameter can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE + * @arg @ref LL_RCC_I2C2_CLKSOURCE (*) + * @arg @ref LL_RCC_I2C3_CLKSOURCE + * @arg @ref LL_RCC_I2C4_CLKSOURCE (*) + * + * (*) value not defined in all devices. + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_I2C1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C1_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C1_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C2_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_I2C2_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_I2C2_CLKSOURCE_HSI (*) + * @arg @ref LL_RCC_I2C3_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_I2C3_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2C3_CLKSOURCE_HSI + * @arg @ref LL_RCC_I2C4_CLKSOURCE_PCLK1 (*) + * @arg @ref LL_RCC_I2C4_CLKSOURCE_SYSCLK (*) + * @arg @ref LL_RCC_I2C4_CLKSOURCE_HSI (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetI2CClockSource(uint32_t I2Cx) +{ + __IO const uint32_t *reg = (__IO uint32_t *)(uint32_t)(RCC_BASE + 0x88U + (I2Cx >> 24U)); + return (uint32_t)((READ_BIT(*reg, 3UL << ((I2Cx & 0x001F0000U) >> 16U)) >> ((I2Cx & 0x001F0000U) >> 16U)) | (I2Cx & 0xFFFF0000U)); +} + +/** + * @brief Get LPTIMx clock source + * @rmtoll CCIPR LPTIMxSEL LL_RCC_GetLPTIMClockSource + * @param LPTIMx This parameter can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPTIM1_CLKSOURCE_LSE + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSI + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_HSI + * @arg @ref LL_RCC_LPTIM2_CLKSOURCE_LSE + */ +__STATIC_INLINE uint32_t LL_RCC_GetLPTIMClockSource(uint32_t LPTIMx) +{ + return (uint32_t)((READ_BIT(RCC->CCIPR, LPTIMx) >> 16U) | LPTIMx); +} + +#if defined(RCC_CCIPR_SAI1SEL) || defined(RCC_CCIPR2_SAI1SEL) +/** + * @brief Get SAIx clock source + @if STM32L4S9xx + * @rmtoll CCIPR2 SAIxSEL LL_RCC_GetSAIClockSource + @else + * @rmtoll CCIPR SAIxSEL LL_RCC_GetSAIClockSource + @endif + * @param SAIx This parameter can be one of the following values: + * @arg @ref LL_RCC_SAI1_CLKSOURCE + * @arg @ref LL_RCC_SAI2_CLKSOURCE (*) + * + * (*) value not defined in all devices. + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSAI1 + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLLSAI2 (*) + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PLL + * @arg @ref LL_RCC_SAI1_CLKSOURCE_PIN + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSAI1 (*) + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLLSAI2 (*) + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PLL (*) + * @arg @ref LL_RCC_SAI2_CLKSOURCE_PIN (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetSAIClockSource(uint32_t SAIx) +{ +#if defined(RCC_CCIPR2_SAI1SEL) + return (uint32_t)(READ_BIT(RCC->CCIPR2, SAIx) | (SAIx << 16U)); +#else + return (uint32_t)(READ_BIT(RCC->CCIPR, SAIx) >> 16U | SAIx); +#endif /* RCC_CCIPR2_SAI1SEL */ +} +#endif /* RCC_CCIPR_SAI1SEL || RCC_CCIPR2_SAI1SEL */ + +#if defined(SDMMC1) +#if defined(RCC_CCIPR2_SDMMCSEL) +/** + * @brief Get SDMMCx kernel clock source + * @rmtoll CCIPR2 SDMMCSEL LL_RCC_GetSDMMCKernelClockSource + * @param SDMMCx This parameter can be one of the following values: + * @arg @ref LL_RCC_SDMMC1_KERNELCLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SDMMC1_KERNELCLKSOURCE_48CLK (*) + * @arg @ref LL_RCC_SDMMC1_KERNELCLKSOURCE_PLL (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetSDMMCKernelClockSource(uint32_t SDMMCx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR2, SDMMCx)); +} +#endif /* RCC_CCIPR2_SDMMCSEL */ + +/** + * @brief Get SDMMCx clock source + * @rmtoll CCIPR CLK48SEL LL_RCC_GetSDMMCClockSource + * @param SDMMCx This parameter can be one of the following values: + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_NONE (*) + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_HSI48 (*) + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_PLLSAI1 (*) + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_PLL + * @arg @ref LL_RCC_SDMMC1_CLKSOURCE_MSI (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetSDMMCClockSource(uint32_t SDMMCx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, SDMMCx)); +} +#endif /* SDMMC1 */ + +/** + * @brief Get RNGx clock source + * @rmtoll CCIPR CLK48SEL LL_RCC_GetRNGClockSource + * @param RNGx This parameter can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RNG_CLKSOURCE_NONE (*) + * @arg @ref LL_RCC_RNG_CLKSOURCE_HSI48 (*) + * @arg @ref LL_RCC_RNG_CLKSOURCE_PLLSAI1 (*) + * @arg @ref LL_RCC_RNG_CLKSOURCE_PLL + * @arg @ref LL_RCC_RNG_CLKSOURCE_MSI + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetRNGClockSource(uint32_t RNGx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, RNGx)); +} + +#if defined(USB_OTG_FS) || defined(USB) +/** + * @brief Get USBx clock source + * @rmtoll CCIPR CLK48SEL LL_RCC_GetUSBClockSource + * @param USBx This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE_NONE (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_HSI48 (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_PLLSAI1 (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL + * @arg @ref LL_RCC_USB_CLKSOURCE_MSI + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetUSBClockSource(uint32_t USBx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, USBx)); +} +#endif /* USB_OTG_FS || USB */ + +/** + * @brief Get ADCx clock source + * @rmtoll CCIPR ADCSEL LL_RCC_GetADCClockSource + * @param ADCx This parameter can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSOURCE_NONE + * @arg @ref LL_RCC_ADC_CLKSOURCE_PLLSAI1 (*) + * @arg @ref LL_RCC_ADC_CLKSOURCE_PLLSAI2 (*) + * @arg @ref LL_RCC_ADC_CLKSOURCE_SYSCLK + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_GetADCClockSource(uint32_t ADCx) +{ +#if defined(RCC_CCIPR_ADCSEL) + return (uint32_t)(READ_BIT(RCC->CCIPR, ADCx)); +#else + (void)ADCx; /* unused */ + return ((READ_BIT(RCC->AHB2ENR, RCC_AHB2ENR_ADCEN) != 0U) ? LL_RCC_ADC_CLKSOURCE_SYSCLK : LL_RCC_ADC_CLKSOURCE_NONE); +#endif /* RCC_CCIPR_ADCSEL */ +} + +#if defined(SWPMI1) +/** + * @brief Get SWPMIx clock source + * @rmtoll CCIPR SWPMI1SEL LL_RCC_GetSWPMIClockSource + * @param SPWMIx This parameter can be one of the following values: + * @arg @ref LL_RCC_SWPMI1_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SWPMI1_CLKSOURCE_PCLK1 + * @arg @ref LL_RCC_SWPMI1_CLKSOURCE_HSI + */ +__STATIC_INLINE uint32_t LL_RCC_GetSWPMIClockSource(uint32_t SPWMIx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR, SPWMIx)); +} +#endif /* SWPMI1 */ + +#if defined(DFSDM1_Channel0) +#if defined(RCC_CCIPR2_ADFSDM1SEL) +/** + * @brief Get DFSDM Audio Clock Source + * @rmtoll CCIPR2 ADFSDM1SEL LL_RCC_GetDFSDMAudioClockSource + * @param DFSDMx This parameter can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_SAI1 + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_HSI + * @arg @ref LL_RCC_DFSDM1_AUDIO_CLKSOURCE_MSI + */ +__STATIC_INLINE uint32_t LL_RCC_GetDFSDMAudioClockSource(uint32_t DFSDMx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR2, DFSDMx)); +} +#endif /* RCC_CCIPR2_ADFSDM1SEL */ + +/** + * @brief Get DFSDMx Kernel clock source + @if STM32L4S9xx + * @rmtoll CCIPR2 DFSDM1SEL LL_RCC_GetDFSDMClockSource + @else + * @rmtoll CCIPR DFSDM1SEL LL_RCC_GetDFSDMClockSource + @endif + * @param DFSDMx This parameter can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_PCLK2 + * @arg @ref LL_RCC_DFSDM1_CLKSOURCE_SYSCLK + */ +__STATIC_INLINE uint32_t LL_RCC_GetDFSDMClockSource(uint32_t DFSDMx) +{ +#if defined(RCC_CCIPR2_DFSDM1SEL) + return (uint32_t)(READ_BIT(RCC->CCIPR2, DFSDMx)); +#else + return (uint32_t)(READ_BIT(RCC->CCIPR, DFSDMx)); +#endif /* RCC_CCIPR2_DFSDM1SEL */ +} +#endif /* DFSDM1_Channel0 */ + +#if defined(DSI) +/** + * @brief Get DSI Clock Source + * @rmtoll CCIPR2 DSISEL LL_RCC_GetDSIClockSource + * @param DSIx This parameter can be one of the following values: + * @arg @ref LL_RCC_DSI_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_DSI_CLKSOURCE_PHY + * @arg @ref LL_RCC_DSI_CLKSOURCE_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetDSIClockSource(uint32_t DSIx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR2, DSIx)); +} +#endif /* DSI */ + +#if defined(LTDC) +/** + * @brief Get LTDC Clock Source + * @rmtoll CCIPR2 PLLSAI2DIVR LL_RCC_GetLTDCClockSource + * @param LTDCx This parameter can be one of the following values: + * @arg @ref LL_RCC_LTDC_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV2 + * @arg @ref LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV4 + * @arg @ref LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV8 + * @arg @ref LL_RCC_LTDC_CLKSOURCE_PLLSAI2R_DIV16 + */ +__STATIC_INLINE uint32_t LL_RCC_GetLTDCClockSource(uint32_t LTDCx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR2, LTDCx)); +} +#endif /* LTDC */ + +#if defined(OCTOSPI1) +/** + * @brief Get OCTOSPI clock source + * @rmtoll CCIPR2 OSPISEL LL_RCC_GetOCTOSPIClockSource + * @param OCTOSPIx This parameter can be one of the following values: + * @arg @ref LL_RCC_OCTOSPI_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_OCTOSPI_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_OCTOSPI_CLKSOURCE_MSI + * @arg @ref LL_RCC_OCTOSPI_CLKSOURCE_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetOCTOSPIClockSource(uint32_t OCTOSPIx) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR2, OCTOSPIx)); +} +#endif /* OCTOSPI1 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EF_RTC RTC + * @{ + */ + +/** + * @brief Set RTC Clock Source + * @note Once the RTC clock source has been selected, it cannot be changed anymore unless + * the Backup domain is reset, or unless a failure is detected on LSE (LSECSSD is + * set). The BDRST bit can be used to reset them. + * @rmtoll BDCR RTCSEL LL_RCC_SetRTCClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI + * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE_DIV32 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRTCClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, Source); +} + +/** + * @brief Get RTC Clock Source + * @rmtoll BDCR RTCSEL LL_RCC_GetRTCClockSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI + * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE_DIV32 + */ +__STATIC_INLINE uint32_t LL_RCC_GetRTCClockSource(void) +{ + return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)); +} + +/** + * @brief Enable RTC + * @rmtoll BDCR RTCEN LL_RCC_EnableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableRTC(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +} + +/** + * @brief Disable RTC + * @rmtoll BDCR RTCEN LL_RCC_DisableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableRTC(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +} + +/** + * @brief Check if RTC has been enabled or not + * @rmtoll BDCR RTCEN LL_RCC_IsEnabledRTC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledRTC(void) +{ + return ((READ_BIT(RCC->BDCR, RCC_BDCR_RTCEN) == RCC_BDCR_RTCEN) ? 1UL : 0UL); +} + +/** + * @brief Force the Backup domain reset + * @rmtoll BDCR BDRST LL_RCC_ForceBackupDomainReset + * @retval None + */ +__STATIC_INLINE void LL_RCC_ForceBackupDomainReset(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_BDRST); +} + +/** + * @brief Release the Backup domain reset + * @rmtoll BDCR BDRST LL_RCC_ReleaseBackupDomainReset + * @retval None + */ +__STATIC_INLINE void LL_RCC_ReleaseBackupDomainReset(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST); +} + +/** + * @} + */ + + +/** @defgroup RCC_LL_EF_PLL PLL + * @{ + */ + +/** + * @brief Enable PLL + * @rmtoll CR PLLON LL_RCC_PLL_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLLON); +} + +/** + * @brief Disable PLL + * @note Cannot be disabled if the PLL clock is used as the system clock + * @rmtoll CR PLLON LL_RCC_PLL_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLLON); +} + +/** + * @brief Check if PLL Ready + * @rmtoll CR PLLRDY LL_RCC_PLL_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_PLLRDY) == RCC_CR_PLLRDY) ? 1UL : 0UL); +} + +/** + * @brief Configure PLL used for SYSCLK Domain + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLN/PLLR can be written only when PLL is disabled. + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_SYS\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_SYS\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_SYS\n + * PLLCFGR PLLR LL_RCC_PLL_ConfigDomain_SYS + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 (*) + * @arg @ref LL_RCC_PLLM_DIV_10 (*) + * @arg @ref LL_RCC_PLLM_DIV_11 (*) + * @arg @ref LL_RCC_PLLM_DIV_12 (*) + * @arg @ref LL_RCC_PLLM_DIV_13 (*) + * @arg @ref LL_RCC_PLLM_DIV_14 (*) + * @arg @ref LL_RCC_PLLM_DIV_15 (*) + * @arg @ref LL_RCC_PLLM_DIV_16 (*) + * + * (*) value not defined in all devices. + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLR_DIV_2 + * @arg @ref LL_RCC_PLLR_DIV_4 + * @arg @ref LL_RCC_PLLR_DIV_6 + * @arg @ref LL_RCC_PLLR_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SYS(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLR) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLR, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLR); +} + +#if defined(RCC_PLLP_SUPPORT) +#if defined(RCC_PLLP_DIV_2_31_SUPPORT) +/** + * @brief Configure PLL used for SAI domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLN/PLLP can be written only when PLL is disabled. + * @note This can be selected for SAI1 or SAI2 (*) + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_SAI\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_SAI\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_SAI\n + * PLLCFGR PLLPDIV LL_RCC_PLL_ConfigDomain_SAI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 (*) + * @arg @ref LL_RCC_PLLM_DIV_10 (*) + * @arg @ref LL_RCC_PLLM_DIV_11 (*) + * @arg @ref LL_RCC_PLLM_DIV_12 (*) + * @arg @ref LL_RCC_PLLM_DIV_13 (*) + * @arg @ref LL_RCC_PLLM_DIV_14 (*) + * @arg @ref LL_RCC_PLLM_DIV_15 (*) + * @arg @ref LL_RCC_PLLM_DIV_16 (*) + * + * (*) value not defined in all devices. + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_3 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_5 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @arg @ref LL_RCC_PLLP_DIV_9 + * @arg @ref LL_RCC_PLLP_DIV_10 + * @arg @ref LL_RCC_PLLP_DIV_11 + * @arg @ref LL_RCC_PLLP_DIV_12 + * @arg @ref LL_RCC_PLLP_DIV_13 + * @arg @ref LL_RCC_PLLP_DIV_14 + * @arg @ref LL_RCC_PLLP_DIV_15 + * @arg @ref LL_RCC_PLLP_DIV_16 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @arg @ref LL_RCC_PLLP_DIV_18 + * @arg @ref LL_RCC_PLLP_DIV_19 + * @arg @ref LL_RCC_PLLP_DIV_20 + * @arg @ref LL_RCC_PLLP_DIV_21 + * @arg @ref LL_RCC_PLLP_DIV_22 + * @arg @ref LL_RCC_PLLP_DIV_23 + * @arg @ref LL_RCC_PLLP_DIV_24 + * @arg @ref LL_RCC_PLLP_DIV_25 + * @arg @ref LL_RCC_PLLP_DIV_26 + * @arg @ref LL_RCC_PLLP_DIV_27 + * @arg @ref LL_RCC_PLLP_DIV_28 + * @arg @ref LL_RCC_PLLP_DIV_29 + * @arg @ref LL_RCC_PLLP_DIV_30 + * @arg @ref LL_RCC_PLLP_DIV_31 + * @retval None + */ +#else +/** + * @brief Configure PLL used for SAI domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLN/PLLP can be written only when PLL is disabled. + * @note This can be selected for SAI1 or SAI2 (*) + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_SAI\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_SAI\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_SAI\n + * PLLCFGR PLLP LL_RCC_PLL_ConfigDomain_SAI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @retval None + */ +#endif /* RCC_PLLP_DIV_2_31_SUPPORT */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ +#if defined(RCC_PLLP_DIV_2_31_SUPPORT) + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLPDIV, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLP); +#else + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLP, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLP); +#endif /* RCC_PLLP_DIV_2_31_SUPPORT */ +} +#endif /* RCC_PLLP_SUPPORT */ + +/** + * @brief Configure PLL used for 48Mhz domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLN/PLLQ can be written only when PLL is disabled. + * @note This can be selected for USB, RNG, SDMMC + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_ConfigDomain_48M\n + * PLLCFGR PLLM LL_RCC_PLL_ConfigDomain_48M\n + * PLLCFGR PLLN LL_RCC_PLL_ConfigDomain_48M\n + * PLLCFGR PLLQ LL_RCC_PLL_ConfigDomain_48M + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 (*) + * @arg @ref LL_RCC_PLLM_DIV_10 (*) + * @arg @ref LL_RCC_PLLM_DIV_11 (*) + * @arg @ref LL_RCC_PLLM_DIV_12 (*) + * @arg @ref LL_RCC_PLLM_DIV_13 (*) + * @arg @ref LL_RCC_PLLM_DIV_14 (*) + * @arg @ref LL_RCC_PLLM_DIV_15 (*) + * @arg @ref LL_RCC_PLLM_DIV_16 (*) + * + * (*) value not defined in all devices. + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_48M(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM | RCC_PLLCFGR_PLLN | RCC_PLLCFGR_PLLQ, + Source | PLLM | (PLLN << RCC_PLLCFGR_PLLN_Pos) | PLLQ); +} + +/** + * @brief Configure PLL clock source + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_SetMainSource + * @param PLLSource This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_SetMainSource(uint32_t PLLSource) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, PLLSource); +} + +/** + * @brief Get the oscillator used as PLL clock source. + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLL_GetMainSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetMainSource(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC)); +} + +/** + * @brief Get Main PLL multiplication factor for VCO + * @rmtoll PLLCFGR PLLN LL_RCC_PLL_GetN + * @retval Between 8 and 86 or 127 depending on devices + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetN(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos); +} + +#if defined(RCC_PLLP_SUPPORT) +#if defined(RCC_PLLP_DIV_2_31_SUPPORT) +/** + * @brief Get Main PLL division factor for PLLP + * @note Used for PLLSAI3CLK (SAI1 and SAI2 clock) + * @rmtoll PLLCFGR PLLPDIV LL_RCC_PLL_GetP + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_2 + * @arg @ref LL_RCC_PLLP_DIV_3 + * @arg @ref LL_RCC_PLLP_DIV_4 + * @arg @ref LL_RCC_PLLP_DIV_5 + * @arg @ref LL_RCC_PLLP_DIV_6 + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_8 + * @arg @ref LL_RCC_PLLP_DIV_9 + * @arg @ref LL_RCC_PLLP_DIV_10 + * @arg @ref LL_RCC_PLLP_DIV_11 + * @arg @ref LL_RCC_PLLP_DIV_12 + * @arg @ref LL_RCC_PLLP_DIV_13 + * @arg @ref LL_RCC_PLLP_DIV_14 + * @arg @ref LL_RCC_PLLP_DIV_15 + * @arg @ref LL_RCC_PLLP_DIV_16 + * @arg @ref LL_RCC_PLLP_DIV_17 + * @arg @ref LL_RCC_PLLP_DIV_18 + * @arg @ref LL_RCC_PLLP_DIV_19 + * @arg @ref LL_RCC_PLLP_DIV_20 + * @arg @ref LL_RCC_PLLP_DIV_21 + * @arg @ref LL_RCC_PLLP_DIV_22 + * @arg @ref LL_RCC_PLLP_DIV_23 + * @arg @ref LL_RCC_PLLP_DIV_24 + * @arg @ref LL_RCC_PLLP_DIV_25 + * @arg @ref LL_RCC_PLLP_DIV_26 + * @arg @ref LL_RCC_PLLP_DIV_27 + * @arg @ref LL_RCC_PLLP_DIV_28 + * @arg @ref LL_RCC_PLLP_DIV_29 + * @arg @ref LL_RCC_PLLP_DIV_30 + * @arg @ref LL_RCC_PLLP_DIV_31 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetP(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPDIV)); +} +#else +/** + * @brief Get Main PLL division factor for PLLP + * @note Used for PLLSAI3CLK (SAI1 and SAI2 clock) + * @rmtoll PLLCFGR PLLP LL_RCC_PLL_GetP + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLP_DIV_7 + * @arg @ref LL_RCC_PLLP_DIV_17 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetP(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLP)); +} +#endif /* RCC_PLLP_DIV_2_31_SUPPORT */ +#endif /* RCC_PLLP_SUPPORT */ + +/** + * @brief Get Main PLL division factor for PLLQ + * @note Used for PLL48M1CLK selected for USB, RNG, SDMMC (48 MHz clock) + * @rmtoll PLLCFGR PLLQ LL_RCC_PLL_GetQ + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLQ_DIV_2 + * @arg @ref LL_RCC_PLLQ_DIV_4 + * @arg @ref LL_RCC_PLLQ_DIV_6 + * @arg @ref LL_RCC_PLLQ_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetQ(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQ)); +} + +/** + * @brief Get Main PLL division factor for PLLR + * @note Used for PLLCLK (system clock) + * @rmtoll PLLCFGR PLLR LL_RCC_PLL_GetR + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLR_DIV_2 + * @arg @ref LL_RCC_PLLR_DIV_4 + * @arg @ref LL_RCC_PLLR_DIV_6 + * @arg @ref LL_RCC_PLLR_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetR(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLR)); +} + +/** + * @brief Get Division factor for the main PLL and other PLL + * @rmtoll PLLCFGR PLLM LL_RCC_PLL_GetDivider + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @arg @ref LL_RCC_PLLM_DIV_9 (*) + * @arg @ref LL_RCC_PLLM_DIV_10 (*) + * @arg @ref LL_RCC_PLLM_DIV_11 (*) + * @arg @ref LL_RCC_PLLM_DIV_12 (*) + * @arg @ref LL_RCC_PLLM_DIV_13 (*) + * @arg @ref LL_RCC_PLLM_DIV_14 (*) + * @arg @ref LL_RCC_PLLM_DIV_15 (*) + * @arg @ref LL_RCC_PLLM_DIV_16 (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetDivider(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLM)); +} + +#if defined(RCC_PLLP_SUPPORT) +/** + * @brief Enable PLL output mapped on SAI domain clock + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_EnableDomain_SAI + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_SAI(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN); +} + +/** + * @brief Disable PLL output mapped on SAI domain clock + * @note Cannot be disabled if the PLL clock is used as the system + * clock + * @note In order to save power, when the PLLCLK of the PLL is + * not used, should be 0 + * @rmtoll PLLCFGR PLLPEN LL_RCC_PLL_DisableDomain_SAI + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_SAI(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLPEN); +} +#endif /* RCC_PLLP_SUPPORT */ + +/** + * @brief Enable PLL output mapped on 48MHz domain clock + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_EnableDomain_48M + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_48M(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Disable PLL output mapped on 48MHz domain clock + * @note Cannot be disabled if the PLL clock is used as the system + * clock + * @note In order to save power, when the PLLCLK of the PLL is + * not used, should be 0 + * @rmtoll PLLCFGR PLLQEN LL_RCC_PLL_DisableDomain_48M + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_48M(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLQEN); +} + +/** + * @brief Enable PLL output mapped on SYSCLK domain + * @rmtoll PLLCFGR PLLREN LL_RCC_PLL_EnableDomain_SYS + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_EnableDomain_SYS(void) +{ + SET_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLREN); +} + +/** + * @brief Disable PLL output mapped on SYSCLK domain + * @note Cannot be disabled if the PLL clock is used as the system + * clock + * @note In order to save power, when the PLLCLK of the PLL is + * not used, Main PLL should be 0 + * @rmtoll PLLCFGR PLLREN LL_RCC_PLL_DisableDomain_SYS + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_DisableDomain_SYS(void) +{ + CLEAR_BIT(RCC->PLLCFGR, RCC_PLLCFGR_PLLREN); +} + +/** + * @} + */ + +#if defined(RCC_PLLSAI1_SUPPORT) +/** @defgroup RCC_LL_EF_PLLSAI1 PLLSAI1 + * @{ + */ + +/** + * @brief Enable PLLSAI1 + * @rmtoll CR PLLSAI1ON LL_RCC_PLLSAI1_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLLSAI1ON); +} + +/** + * @brief Disable PLLSAI1 + * @rmtoll CR PLLSAI1ON LL_RCC_PLLSAI1_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLLSAI1ON); +} + +/** + * @brief Check if PLLSAI1 Ready + * @rmtoll CR PLLSAI1RDY LL_RCC_PLLSAI1_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI1_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_PLLSAI1RDY) == RCC_CR_PLLSAI1RDY) ? 1UL : 0UL); +} + +#if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) +/** + * @brief Configure PLLSAI1 used for 48Mhz domain clock + * @note PLL Source can be written only when PLL, PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLSAI1M/PLLSAI1N/PLLSAI1Q can be written only when PLLSAI1 is disabled. + * @note This can be selected for USB, RNG, SDMMC + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI1_ConfigDomain_48M\n + * PLLSAI1CFGR PLLSAI1M LL_RCC_PLLSAI1_ConfigDomain_48M\n + * PLLSAI1CFGR PLLSAI1N LL_RCC_PLLSAI1_ConfigDomain_48M\n + * PLLSAI1CFGR PLLSAI1Q LL_RCC_PLLSAI1_ConfigDomain_48M + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1M_DIV_1 + * @arg @ref LL_RCC_PLLSAI1M_DIV_2 + * @arg @ref LL_RCC_PLLSAI1M_DIV_3 + * @arg @ref LL_RCC_PLLSAI1M_DIV_4 + * @arg @ref LL_RCC_PLLSAI1M_DIV_5 + * @arg @ref LL_RCC_PLLSAI1M_DIV_6 + * @arg @ref LL_RCC_PLLSAI1M_DIV_7 + * @arg @ref LL_RCC_PLLSAI1M_DIV_8 + * @arg @ref LL_RCC_PLLSAI1M_DIV_9 + * @arg @ref LL_RCC_PLLSAI1M_DIV_10 + * @arg @ref LL_RCC_PLLSAI1M_DIV_11 + * @arg @ref LL_RCC_PLLSAI1M_DIV_12 + * @arg @ref LL_RCC_PLLSAI1M_DIV_13 + * @arg @ref LL_RCC_PLLSAI1M_DIV_14 + * @arg @ref LL_RCC_PLLSAI1M_DIV_15 + * @arg @ref LL_RCC_PLLSAI1M_DIV_16 + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1Q_DIV_2 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_4 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_6 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_ConfigDomain_48M(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, Source); + MODIFY_REG(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1M | RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1Q, + PLLM | (PLLN << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) | PLLQ); +} +#else +/** + * @brief Configure PLLSAI1 used for 48Mhz domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLSAI1N/PLLSAI1Q can be written only when PLLSAI1 is disabled. + * @note This can be selected for USB, RNG, SDMMC + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI1_ConfigDomain_48M\n + * PLLCFGR PLLM LL_RCC_PLLSAI1_ConfigDomain_48M\n + * PLLSAI1CFGR PLLSAI1N LL_RCC_PLLSAI1_ConfigDomain_48M\n + * PLLSAI1CFGR PLLSAI1Q LL_RCC_PLLSAI1_ConfigDomain_48M + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1Q_DIV_2 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_4 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_6 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_ConfigDomain_48M(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1Q, PLLN << RCC_PLLSAI1CFGR_PLLSAI1N_Pos | PLLQ); +} +#endif /* RCC_PLLSAI1M_DIV_1_16_SUPPORT */ + +#if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) && defined(RCC_PLLSAI1P_DIV_2_31_SUPPORT) +/** + * @brief Configure PLLSAI1 used for SAI domain clock + * @note PLL Source can be written only when PLL, PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLSAI1M/PLLSAI1N/PLLSAI1PDIV can be written only when PLLSAI1 is disabled. + * @note This can be selected for SAI1 or SAI2 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI1_ConfigDomain_SAI\n + * PLLSAI1CFGR PLLSAI1M LL_RCC_PLLSAI1_ConfigDomain_SAI\n + * PLLSAI1CFGR PLLSAI1N LL_RCC_PLLSAI1_ConfigDomain_SAI\n + * PLLSAI1CFGR PLLSAI1PDIV LL_RCC_PLLSAI1_ConfigDomain_SAI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1M_DIV_1 + * @arg @ref LL_RCC_PLLSAI1M_DIV_2 + * @arg @ref LL_RCC_PLLSAI1M_DIV_3 + * @arg @ref LL_RCC_PLLSAI1M_DIV_4 + * @arg @ref LL_RCC_PLLSAI1M_DIV_5 + * @arg @ref LL_RCC_PLLSAI1M_DIV_6 + * @arg @ref LL_RCC_PLLSAI1M_DIV_7 + * @arg @ref LL_RCC_PLLSAI1M_DIV_8 + * @arg @ref LL_RCC_PLLSAI1M_DIV_9 + * @arg @ref LL_RCC_PLLSAI1M_DIV_10 + * @arg @ref LL_RCC_PLLSAI1M_DIV_11 + * @arg @ref LL_RCC_PLLSAI1M_DIV_12 + * @arg @ref LL_RCC_PLLSAI1M_DIV_13 + * @arg @ref LL_RCC_PLLSAI1M_DIV_14 + * @arg @ref LL_RCC_PLLSAI1M_DIV_15 + * @arg @ref LL_RCC_PLLSAI1M_DIV_16 + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1P_DIV_2 + * @arg @ref LL_RCC_PLLSAI1P_DIV_3 + * @arg @ref LL_RCC_PLLSAI1P_DIV_4 + * @arg @ref LL_RCC_PLLSAI1P_DIV_5 + * @arg @ref LL_RCC_PLLSAI1P_DIV_6 + * @arg @ref LL_RCC_PLLSAI1P_DIV_7 + * @arg @ref LL_RCC_PLLSAI1P_DIV_8 + * @arg @ref LL_RCC_PLLSAI1P_DIV_9 + * @arg @ref LL_RCC_PLLSAI1P_DIV_10 + * @arg @ref LL_RCC_PLLSAI1P_DIV_11 + * @arg @ref LL_RCC_PLLSAI1P_DIV_12 + * @arg @ref LL_RCC_PLLSAI1P_DIV_13 + * @arg @ref LL_RCC_PLLSAI1P_DIV_14 + * @arg @ref LL_RCC_PLLSAI1P_DIV_15 + * @arg @ref LL_RCC_PLLSAI1P_DIV_16 + * @arg @ref LL_RCC_PLLSAI1P_DIV_17 + * @arg @ref LL_RCC_PLLSAI1P_DIV_18 + * @arg @ref LL_RCC_PLLSAI1P_DIV_19 + * @arg @ref LL_RCC_PLLSAI1P_DIV_20 + * @arg @ref LL_RCC_PLLSAI1P_DIV_21 + * @arg @ref LL_RCC_PLLSAI1P_DIV_22 + * @arg @ref LL_RCC_PLLSAI1P_DIV_23 + * @arg @ref LL_RCC_PLLSAI1P_DIV_24 + * @arg @ref LL_RCC_PLLSAI1P_DIV_25 + * @arg @ref LL_RCC_PLLSAI1P_DIV_26 + * @arg @ref LL_RCC_PLLSAI1P_DIV_27 + * @arg @ref LL_RCC_PLLSAI1P_DIV_28 + * @arg @ref LL_RCC_PLLSAI1P_DIV_29 + * @arg @ref LL_RCC_PLLSAI1P_DIV_30 + * @arg @ref LL_RCC_PLLSAI1P_DIV_31 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, Source); + MODIFY_REG(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1M | RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1PDIV, + PLLM | (PLLN << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) | PLLP); +} +#elif defined(RCC_PLLSAI1P_DIV_2_31_SUPPORT) +/** + * @brief Configure PLLSAI1 used for SAI domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLSAI1N/PLLSAI1PDIV can be written only when PLLSAI1 is disabled. + * @note This can be selected for SAI1 or SAI2 (*) + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI1_ConfigDomain_SAI\n + * PLLCFGR PLLM LL_RCC_PLLSAI1_ConfigDomain_SAI\n + * PLLSAI1CFGR PLLSAI1N LL_RCC_PLLSAI1_ConfigDomain_SAI\n + * PLLSAI1CFGR PLLSAI1PDIV LL_RCC_PLLSAI1_ConfigDomain_SAI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1P_DIV_2 + * @arg @ref LL_RCC_PLLSAI1P_DIV_3 + * @arg @ref LL_RCC_PLLSAI1P_DIV_4 + * @arg @ref LL_RCC_PLLSAI1P_DIV_5 + * @arg @ref LL_RCC_PLLSAI1P_DIV_6 + * @arg @ref LL_RCC_PLLSAI1P_DIV_7 + * @arg @ref LL_RCC_PLLSAI1P_DIV_8 + * @arg @ref LL_RCC_PLLSAI1P_DIV_9 + * @arg @ref LL_RCC_PLLSAI1P_DIV_10 + * @arg @ref LL_RCC_PLLSAI1P_DIV_11 + * @arg @ref LL_RCC_PLLSAI1P_DIV_12 + * @arg @ref LL_RCC_PLLSAI1P_DIV_13 + * @arg @ref LL_RCC_PLLSAI1P_DIV_14 + * @arg @ref LL_RCC_PLLSAI1P_DIV_15 + * @arg @ref LL_RCC_PLLSAI1P_DIV_16 + * @arg @ref LL_RCC_PLLSAI1P_DIV_17 + * @arg @ref LL_RCC_PLLSAI1P_DIV_18 + * @arg @ref LL_RCC_PLLSAI1P_DIV_19 + * @arg @ref LL_RCC_PLLSAI1P_DIV_20 + * @arg @ref LL_RCC_PLLSAI1P_DIV_21 + * @arg @ref LL_RCC_PLLSAI1P_DIV_22 + * @arg @ref LL_RCC_PLLSAI1P_DIV_23 + * @arg @ref LL_RCC_PLLSAI1P_DIV_24 + * @arg @ref LL_RCC_PLLSAI1P_DIV_25 + * @arg @ref LL_RCC_PLLSAI1P_DIV_26 + * @arg @ref LL_RCC_PLLSAI1P_DIV_27 + * @arg @ref LL_RCC_PLLSAI1P_DIV_28 + * @arg @ref LL_RCC_PLLSAI1P_DIV_29 + * @arg @ref LL_RCC_PLLSAI1P_DIV_30 + * @arg @ref LL_RCC_PLLSAI1P_DIV_31 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1PDIV, + PLLN << RCC_PLLSAI1CFGR_PLLSAI1N_Pos | PLLP); +} +#else +/** + * @brief Configure PLLSAI1 used for SAI domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLSAI1N/PLLSAI1P can be written only when PLLSAI1 is disabled. + * @note This can be selected for SAI1 or SAI2 (*) + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI1_ConfigDomain_SAI\n + * PLLCFGR PLLM LL_RCC_PLLSAI1_ConfigDomain_SAI\n + * PLLSAI1CFGR PLLSAI1N LL_RCC_PLLSAI1_ConfigDomain_SAI\n + * PLLSAI1CFGR PLLSAI1P LL_RCC_PLLSAI1_ConfigDomain_SAI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1P_DIV_7 + * @arg @ref LL_RCC_PLLSAI1P_DIV_17 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1P, PLLN << RCC_PLLSAI1CFGR_PLLSAI1N_Pos | PLLP); +} +#endif /* RCC_PLLSAI1M_DIV_1_16_SUPPORT && RCC_PLLSAI1P_DIV_2_31_SUPPORT */ + +#if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) +/** + * @brief Configure PLLSAI1 used for ADC domain clock + * @note PLL Source can be written only when PLL, PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLSAI1M/PLLSAI1N/PLLSAI1R can be written only when PLLSAI1 is disabled. + * @note This can be selected for ADC + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI1_ConfigDomain_ADC\n + * PLLSAI1CFGR PLLSAI1M LL_RCC_PLLSAI1_ConfigDomain_ADC\n + * PLLSAI1CFGR PLLSAI1N LL_RCC_PLLSAI1_ConfigDomain_ADC\n + * PLLSAI1CFGR PLLSAI1R LL_RCC_PLLSAI1_ConfigDomain_ADC + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1M_DIV_1 + * @arg @ref LL_RCC_PLLSAI1M_DIV_2 + * @arg @ref LL_RCC_PLLSAI1M_DIV_3 + * @arg @ref LL_RCC_PLLSAI1M_DIV_4 + * @arg @ref LL_RCC_PLLSAI1M_DIV_5 + * @arg @ref LL_RCC_PLLSAI1M_DIV_6 + * @arg @ref LL_RCC_PLLSAI1M_DIV_7 + * @arg @ref LL_RCC_PLLSAI1M_DIV_8 + * @arg @ref LL_RCC_PLLSAI1M_DIV_9 + * @arg @ref LL_RCC_PLLSAI1M_DIV_10 + * @arg @ref LL_RCC_PLLSAI1M_DIV_11 + * @arg @ref LL_RCC_PLLSAI1M_DIV_12 + * @arg @ref LL_RCC_PLLSAI1M_DIV_13 + * @arg @ref LL_RCC_PLLSAI1M_DIV_14 + * @arg @ref LL_RCC_PLLSAI1M_DIV_15 + * @arg @ref LL_RCC_PLLSAI1M_DIV_16 + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1R_DIV_2 + * @arg @ref LL_RCC_PLLSAI1R_DIV_4 + * @arg @ref LL_RCC_PLLSAI1R_DIV_6 + * @arg @ref LL_RCC_PLLSAI1R_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_ConfigDomain_ADC(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLR) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, Source); + MODIFY_REG(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1M | RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1R, + PLLM | (PLLN << RCC_PLLSAI1CFGR_PLLSAI1N_Pos) | PLLR); +} +#else +/** + * @brief Configure PLLSAI1 used for ADC domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLN/PLLR can be written only when PLLSAI1 is disabled. + * @note This can be selected for ADC + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI1_ConfigDomain_ADC\n + * PLLCFGR PLLM LL_RCC_PLLSAI1_ConfigDomain_ADC\n + * PLLSAI1CFGR PLLSAI1N LL_RCC_PLLSAI1_ConfigDomain_ADC\n + * PLLSAI1CFGR PLLSAI1R LL_RCC_PLLSAI1_ConfigDomain_ADC + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1R_DIV_2 + * @arg @ref LL_RCC_PLLSAI1R_DIV_4 + * @arg @ref LL_RCC_PLLSAI1R_DIV_6 + * @arg @ref LL_RCC_PLLSAI1R_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_ConfigDomain_ADC(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLR) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N | RCC_PLLSAI1CFGR_PLLSAI1R, PLLN << RCC_PLLSAI1CFGR_PLLSAI1N_Pos | PLLR); +} +#endif /* RCC_PLLSAI1M_DIV_1_16_SUPPORT */ + +/** + * @brief Get SAI1PLL multiplication factor for VCO + * @rmtoll PLLSAI1CFGR PLLSAI1N LL_RCC_PLLSAI1_GetN + * @retval Between 8 and 86 or 127 depending on devices + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI1_GetN(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1N) >> RCC_PLLSAI1CFGR_PLLSAI1N_Pos); +} + +#if defined(RCC_PLLSAI1P_DIV_2_31_SUPPORT) +/** + * @brief Get SAI1PLL division factor for PLLSAI1P + * @note Used for PLLSAI1CLK (SAI1 or SAI2 (*) clock). + * @rmtoll PLLSAI1CFGR PLLSAI1PDIV LL_RCC_PLLSAI1_GetP + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1P_DIV_2 + * @arg @ref LL_RCC_PLLSAI1P_DIV_3 + * @arg @ref LL_RCC_PLLSAI1P_DIV_4 + * @arg @ref LL_RCC_PLLSAI1P_DIV_5 + * @arg @ref LL_RCC_PLLSAI1P_DIV_6 + * @arg @ref LL_RCC_PLLSAI1P_DIV_7 + * @arg @ref LL_RCC_PLLSAI1P_DIV_8 + * @arg @ref LL_RCC_PLLSAI1P_DIV_9 + * @arg @ref LL_RCC_PLLSAI1P_DIV_10 + * @arg @ref LL_RCC_PLLSAI1P_DIV_11 + * @arg @ref LL_RCC_PLLSAI1P_DIV_12 + * @arg @ref LL_RCC_PLLSAI1P_DIV_13 + * @arg @ref LL_RCC_PLLSAI1P_DIV_14 + * @arg @ref LL_RCC_PLLSAI1P_DIV_15 + * @arg @ref LL_RCC_PLLSAI1P_DIV_16 + * @arg @ref LL_RCC_PLLSAI1P_DIV_17 + * @arg @ref LL_RCC_PLLSAI1P_DIV_18 + * @arg @ref LL_RCC_PLLSAI1P_DIV_19 + * @arg @ref LL_RCC_PLLSAI1P_DIV_20 + * @arg @ref LL_RCC_PLLSAI1P_DIV_21 + * @arg @ref LL_RCC_PLLSAI1P_DIV_22 + * @arg @ref LL_RCC_PLLSAI1P_DIV_23 + * @arg @ref LL_RCC_PLLSAI1P_DIV_24 + * @arg @ref LL_RCC_PLLSAI1P_DIV_25 + * @arg @ref LL_RCC_PLLSAI1P_DIV_26 + * @arg @ref LL_RCC_PLLSAI1P_DIV_27 + * @arg @ref LL_RCC_PLLSAI1P_DIV_28 + * @arg @ref LL_RCC_PLLSAI1P_DIV_29 + * @arg @ref LL_RCC_PLLSAI1P_DIV_30 + * @arg @ref LL_RCC_PLLSAI1P_DIV_31 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI1_GetP(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1PDIV)); +} +#else +/** + * @brief Get SAI1PLL division factor for PLLSAI1P + * @note Used for PLLSAI1CLK (SAI1 or SAI2 (*) clock). + * @rmtoll PLLSAI1CFGR PLLSAI1P LL_RCC_PLLSAI1_GetP + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1P_DIV_7 + * @arg @ref LL_RCC_PLLSAI1P_DIV_17 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI1_GetP(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1P)); +} +#endif /* RCC_PLLSAI1P_DIV_2_31_SUPPORT */ + +/** + * @brief Get SAI1PLL division factor for PLLSAI1Q + * @note Used PLL48M2CLK selected for USB, RNG, SDMMC (48 MHz clock) + * @rmtoll PLLSAI1CFGR PLLSAI1Q LL_RCC_PLLSAI1_GetQ + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1Q_DIV_2 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_4 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_6 + * @arg @ref LL_RCC_PLLSAI1Q_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI1_GetQ(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1Q)); +} + +/** + * @brief Get PLLSAI1 division factor for PLLSAIR + * @note Used for PLLADC1CLK (ADC clock) + * @rmtoll PLLSAI1CFGR PLLSAI1R LL_RCC_PLLSAI1_GetR + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1R_DIV_2 + * @arg @ref LL_RCC_PLLSAI1R_DIV_4 + * @arg @ref LL_RCC_PLLSAI1R_DIV_6 + * @arg @ref LL_RCC_PLLSAI1R_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI1_GetR(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1R)); +} + +#if defined(RCC_PLLSAI1M_DIV_1_16_SUPPORT) +/** + * @brief Get Division factor for the PLLSAI1 + * @rmtoll PLLSAI1CFGR PLLSAI1M LL_RCC_PLLSAI1_GetDivider + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI1M_DIV_1 + * @arg @ref LL_RCC_PLLSAI1M_DIV_2 + * @arg @ref LL_RCC_PLLSAI1M_DIV_3 + * @arg @ref LL_RCC_PLLSAI1M_DIV_4 + * @arg @ref LL_RCC_PLLSAI1M_DIV_5 + * @arg @ref LL_RCC_PLLSAI1M_DIV_6 + * @arg @ref LL_RCC_PLLSAI1M_DIV_7 + * @arg @ref LL_RCC_PLLSAI1M_DIV_8 + * @arg @ref LL_RCC_PLLSAI1M_DIV_9 + * @arg @ref LL_RCC_PLLSAI1M_DIV_10 + * @arg @ref LL_RCC_PLLSAI1M_DIV_11 + * @arg @ref LL_RCC_PLLSAI1M_DIV_12 + * @arg @ref LL_RCC_PLLSAI1M_DIV_13 + * @arg @ref LL_RCC_PLLSAI1M_DIV_14 + * @arg @ref LL_RCC_PLLSAI1M_DIV_15 + * @arg @ref LL_RCC_PLLSAI1M_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI1_GetDivider(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1M)); +} +#endif /* RCC_PLLSAI1M_DIV_1_16_SUPPORT */ + +/** + * @brief Enable PLLSAI1 output mapped on SAI domain clock + * @rmtoll PLLSAI1CFGR PLLSAI1PEN LL_RCC_PLLSAI1_EnableDomain_SAI + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_EnableDomain_SAI(void) +{ + SET_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1PEN); +} + +/** + * @brief Disable PLLSAI1 output mapped on SAI domain clock + * @note In order to save power, when of the PLLSAI1 is + * not used, should be 0 + * @rmtoll PLLSAI1CFGR PLLSAI1PEN LL_RCC_PLLSAI1_DisableDomain_SAI + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_DisableDomain_SAI(void) +{ + CLEAR_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1PEN); +} + +/** + * @brief Enable PLLSAI1 output mapped on 48MHz domain clock + * @rmtoll PLLSAI1CFGR PLLSAI1QEN LL_RCC_PLLSAI1_EnableDomain_48M + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_EnableDomain_48M(void) +{ + SET_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1QEN); +} + +/** + * @brief Disable PLLSAI1 output mapped on 48MHz domain clock + * @note In order to save power, when of the PLLSAI1 is + * not used, should be 0 + * @rmtoll PLLSAI1CFGR PLLSAI1QEN LL_RCC_PLLSAI1_DisableDomain_48M + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_DisableDomain_48M(void) +{ + CLEAR_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1QEN); +} + +/** + * @brief Enable PLLSAI1 output mapped on ADC domain clock + * @rmtoll PLLSAI1CFGR PLLSAI1REN LL_RCC_PLLSAI1_EnableDomain_ADC + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_EnableDomain_ADC(void) +{ + SET_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1REN); +} + +/** + * @brief Disable PLLSAI1 output mapped on ADC domain clock + * @note In order to save power, when of the PLLSAI1 is + * not used, Main PLLSAI1 should be 0 + * @rmtoll PLLSAI1CFGR PLLSAI1REN LL_RCC_PLLSAI1_DisableDomain_ADC + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI1_DisableDomain_ADC(void) +{ + CLEAR_BIT(RCC->PLLSAI1CFGR, RCC_PLLSAI1CFGR_PLLSAI1REN); +} + +/** + * @} + */ +#endif /* RCC_PLLSAI1_SUPPORT */ + +#if defined(RCC_PLLSAI2_SUPPORT) +/** @defgroup RCC_LL_EF_PLLSAI2 PLLSAI2 + * @{ + */ + +/** + * @brief Enable PLLSAI2 + * @rmtoll CR PLLSAI2ON LL_RCC_PLLSAI2_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLLSAI2ON); +} + +/** + * @brief Disable PLLSAI2 + * @rmtoll CR PLLSAI2ON LL_RCC_PLLSAI2_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLLSAI2ON); +} + +/** + * @brief Check if PLLSAI2 Ready + * @rmtoll CR PLLSAI2RDY LL_RCC_PLLSAI2_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI2_IsReady(void) +{ + return ((READ_BIT(RCC->CR, RCC_CR_PLLSAI2RDY) == RCC_CR_PLLSAI2RDY) ? 1UL : 0UL); +} + +#if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) && defined(RCC_PLLSAI2P_DIV_2_31_SUPPORT) +/** + * @brief Configure PLLSAI2 used for SAI domain clock + * @note PLL Source can be written only when PLL, PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLSAI2M/PLLSAI2N/PLLSAI2PDIV can be written only when PLLSAI2 is disabled. + * @note This can be selected for SAI1 or SAI2 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI2_ConfigDomain_SAI\n + * PLLSAI2CFGR PLLSAI2M LL_RCC_PLLSAI2_ConfigDomain_SAI\n + * PLLSAI2CFGR PLLSAI2N LL_RCC_PLLSAI2_ConfigDomain_SAI\n + * PLLSAI2CFGR PLLSAI2PDIV LL_RCC_PLLSAI2_ConfigDomain_SAI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2M_DIV_1 + * @arg @ref LL_RCC_PLLSAI2M_DIV_2 + * @arg @ref LL_RCC_PLLSAI2M_DIV_3 + * @arg @ref LL_RCC_PLLSAI2M_DIV_4 + * @arg @ref LL_RCC_PLLSAI2M_DIV_5 + * @arg @ref LL_RCC_PLLSAI2M_DIV_6 + * @arg @ref LL_RCC_PLLSAI2M_DIV_7 + * @arg @ref LL_RCC_PLLSAI2M_DIV_8 + * @arg @ref LL_RCC_PLLSAI2M_DIV_9 + * @arg @ref LL_RCC_PLLSAI2M_DIV_10 + * @arg @ref LL_RCC_PLLSAI2M_DIV_11 + * @arg @ref LL_RCC_PLLSAI2M_DIV_12 + * @arg @ref LL_RCC_PLLSAI2M_DIV_13 + * @arg @ref LL_RCC_PLLSAI2M_DIV_14 + * @arg @ref LL_RCC_PLLSAI2M_DIV_15 + * @arg @ref LL_RCC_PLLSAI2M_DIV_16 + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2P_DIV_2 + * @arg @ref LL_RCC_PLLSAI2P_DIV_3 + * @arg @ref LL_RCC_PLLSAI2P_DIV_4 + * @arg @ref LL_RCC_PLLSAI2P_DIV_5 + * @arg @ref LL_RCC_PLLSAI2P_DIV_6 + * @arg @ref LL_RCC_PLLSAI2P_DIV_7 + * @arg @ref LL_RCC_PLLSAI2P_DIV_8 + * @arg @ref LL_RCC_PLLSAI2P_DIV_9 + * @arg @ref LL_RCC_PLLSAI2P_DIV_10 + * @arg @ref LL_RCC_PLLSAI2P_DIV_11 + * @arg @ref LL_RCC_PLLSAI2P_DIV_12 + * @arg @ref LL_RCC_PLLSAI2P_DIV_13 + * @arg @ref LL_RCC_PLLSAI2P_DIV_14 + * @arg @ref LL_RCC_PLLSAI2P_DIV_15 + * @arg @ref LL_RCC_PLLSAI2P_DIV_16 + * @arg @ref LL_RCC_PLLSAI2P_DIV_17 + * @arg @ref LL_RCC_PLLSAI2P_DIV_18 + * @arg @ref LL_RCC_PLLSAI2P_DIV_19 + * @arg @ref LL_RCC_PLLSAI2P_DIV_20 + * @arg @ref LL_RCC_PLLSAI2P_DIV_21 + * @arg @ref LL_RCC_PLLSAI2P_DIV_22 + * @arg @ref LL_RCC_PLLSAI2P_DIV_23 + * @arg @ref LL_RCC_PLLSAI2P_DIV_24 + * @arg @ref LL_RCC_PLLSAI2P_DIV_25 + * @arg @ref LL_RCC_PLLSAI2P_DIV_26 + * @arg @ref LL_RCC_PLLSAI2P_DIV_27 + * @arg @ref LL_RCC_PLLSAI2P_DIV_28 + * @arg @ref LL_RCC_PLLSAI2P_DIV_29 + * @arg @ref LL_RCC_PLLSAI2P_DIV_30 + * @arg @ref LL_RCC_PLLSAI2P_DIV_31 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, Source); + MODIFY_REG(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2M | RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2PDIV, + PLLM | (PLLN << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) | PLLP); +} +#elif defined(RCC_PLLSAI2P_DIV_2_31_SUPPORT) +/** + * @brief Configure PLLSAI2 used for SAI domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI1 and PLLSAI2 are disabled. + * @note PLLSAI2N/PLLSAI2PDIV can be written only when PLLSAI2 is disabled. + * @note This can be selected for SAI1 or SAI2 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI2_ConfigDomain_SAI\n + * PLLCFGR PLLM LL_RCC_PLLSAI2_ConfigDomain_SAI\n + * PLLSAI2CFGR PLLSAI2N LL_RCC_PLLSAI2_ConfigDomain_SAI\n + * PLLSAI2CFGR PLLSAI2PDIV LL_RCC_PLLSAI2_ConfigDomain_SAI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 or 127 depending on devices + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2P_DIV_2 + * @arg @ref LL_RCC_PLLSAI2P_DIV_3 + * @arg @ref LL_RCC_PLLSAI2P_DIV_4 + * @arg @ref LL_RCC_PLLSAI2P_DIV_5 + * @arg @ref LL_RCC_PLLSAI2P_DIV_6 + * @arg @ref LL_RCC_PLLSAI2P_DIV_7 + * @arg @ref LL_RCC_PLLSAI2P_DIV_8 + * @arg @ref LL_RCC_PLLSAI2P_DIV_9 + * @arg @ref LL_RCC_PLLSAI2P_DIV_10 + * @arg @ref LL_RCC_PLLSAI2P_DIV_11 + * @arg @ref LL_RCC_PLLSAI2P_DIV_12 + * @arg @ref LL_RCC_PLLSAI2P_DIV_13 + * @arg @ref LL_RCC_PLLSAI2P_DIV_14 + * @arg @ref LL_RCC_PLLSAI2P_DIV_15 + * @arg @ref LL_RCC_PLLSAI2P_DIV_16 + * @arg @ref LL_RCC_PLLSAI2P_DIV_17 + * @arg @ref LL_RCC_PLLSAI2P_DIV_18 + * @arg @ref LL_RCC_PLLSAI2P_DIV_19 + * @arg @ref LL_RCC_PLLSAI2P_DIV_20 + * @arg @ref LL_RCC_PLLSAI2P_DIV_21 + * @arg @ref LL_RCC_PLLSAI2P_DIV_22 + * @arg @ref LL_RCC_PLLSAI2P_DIV_23 + * @arg @ref LL_RCC_PLLSAI2P_DIV_24 + * @arg @ref LL_RCC_PLLSAI2P_DIV_25 + * @arg @ref LL_RCC_PLLSAI2P_DIV_26 + * @arg @ref LL_RCC_PLLSAI2P_DIV_27 + * @arg @ref LL_RCC_PLLSAI2P_DIV_28 + * @arg @ref LL_RCC_PLLSAI2P_DIV_29 + * @arg @ref LL_RCC_PLLSAI2P_DIV_30 + * @arg @ref LL_RCC_PLLSAI2P_DIV_31 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2PDIV, PLLN << RCC_PLLSAI2CFGR_PLLSAI2N_Pos | PLLP); +} +#else +/** + * @brief Configure PLLSAI2 used for SAI domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI2 and PLLSAI2 are disabled. + * @note PLLSAI2N/PLLSAI2P can be written only when PLLSAI2 is disabled. + * @note This can be selected for SAI1 or SAI2 + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI2_ConfigDomain_SAI\n + * PLLCFGR PLLM LL_RCC_PLLSAI2_ConfigDomain_SAI\n + * PLLSAI2CFGR PLLSAI2N LL_RCC_PLLSAI2_ConfigDomain_SAI\n + * PLLSAI2CFGR PLLSAI2P LL_RCC_PLLSAI2_ConfigDomain_SAI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLP This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2P_DIV_7 + * @arg @ref LL_RCC_PLLSAI2P_DIV_17 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_ConfigDomain_SAI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLP) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2P, PLLN << RCC_PLLSAI2CFGR_PLLSAI2N_Pos | PLLP); +} +#endif /* RCC_PLLSAI2M_DIV_1_16_SUPPORT && RCC_PLLSAI2P_DIV_2_31_SUPPORT */ + +#if defined(DSI) +/** + * @brief Configure PLLSAI2 used for DSI domain clock + * @note PLL Source can be written only when PLL, PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLSAI2M/PLLSAI2N/PLLSAI2Q can be written only when PLLSAI2 is disabled. + * @note This can be selected for DSI + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI2_ConfigDomain_DSI\n + * PLLSAI2CFGR PLLSAI2M LL_RCC_PLLSAI2_ConfigDomain_DSI\n + * PLLSAI2CFGR PLLSAI2N LL_RCC_PLLSAI2_ConfigDomain_DSI\n + * PLLSAI2CFGR PLLSAI2Q LL_RCC_PLLSAI2_ConfigDomain_DSI + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2M_DIV_1 + * @arg @ref LL_RCC_PLLSAI2M_DIV_2 + * @arg @ref LL_RCC_PLLSAI2M_DIV_3 + * @arg @ref LL_RCC_PLLSAI2M_DIV_4 + * @arg @ref LL_RCC_PLLSAI2M_DIV_5 + * @arg @ref LL_RCC_PLLSAI2M_DIV_6 + * @arg @ref LL_RCC_PLLSAI2M_DIV_7 + * @arg @ref LL_RCC_PLLSAI2M_DIV_8 + * @arg @ref LL_RCC_PLLSAI2M_DIV_9 + * @arg @ref LL_RCC_PLLSAI2M_DIV_10 + * @arg @ref LL_RCC_PLLSAI2M_DIV_11 + * @arg @ref LL_RCC_PLLSAI2M_DIV_12 + * @arg @ref LL_RCC_PLLSAI2M_DIV_13 + * @arg @ref LL_RCC_PLLSAI2M_DIV_14 + * @arg @ref LL_RCC_PLLSAI2M_DIV_15 + * @arg @ref LL_RCC_PLLSAI2M_DIV_16 + * @param PLLN Between 8 and 127 + * @param PLLQ This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2Q_DIV_2 + * @arg @ref LL_RCC_PLLSAI2Q_DIV_4 + * @arg @ref LL_RCC_PLLSAI2Q_DIV_6 + * @arg @ref LL_RCC_PLLSAI2Q_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_ConfigDomain_DSI(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLQ) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, Source); + MODIFY_REG(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2M | RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2Q, + (PLLN << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) | PLLQ | PLLM); +} +#endif /* DSI */ + +#if defined(LTDC) +/** + * @brief Configure PLLSAI2 used for LTDC domain clock + * @note PLL Source can be written only when PLL, PLLSAI1 and PLLSAI2 (*) are disabled. + * @note PLLSAI2M/PLLSAI2N/PLLSAI2R can be written only when PLLSAI2 is disabled. + * @note This can be selected for LTDC + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI2_ConfigDomain_LTDC\n + * PLLSAI2CFGR PLLSAI2M LL_RCC_PLLSAI2_ConfigDomain_LTDC\n + * PLLSAI2CFGR PLLSAI2N LL_RCC_PLLSAI2_ConfigDomain_LTDC\n + * PLLSAI2CFGR PLLSAI2R LL_RCC_PLLSAI2_ConfigDomain_LTDC\n + * CCIPR2 PLLSAI2DIVR LL_RCC_PLLSAI2_ConfigDomain_LTDC + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2M_DIV_1 + * @arg @ref LL_RCC_PLLSAI2M_DIV_2 + * @arg @ref LL_RCC_PLLSAI2M_DIV_3 + * @arg @ref LL_RCC_PLLSAI2M_DIV_4 + * @arg @ref LL_RCC_PLLSAI2M_DIV_5 + * @arg @ref LL_RCC_PLLSAI2M_DIV_6 + * @arg @ref LL_RCC_PLLSAI2M_DIV_7 + * @arg @ref LL_RCC_PLLSAI2M_DIV_8 + * @arg @ref LL_RCC_PLLSAI2M_DIV_9 + * @arg @ref LL_RCC_PLLSAI2M_DIV_10 + * @arg @ref LL_RCC_PLLSAI2M_DIV_11 + * @arg @ref LL_RCC_PLLSAI2M_DIV_12 + * @arg @ref LL_RCC_PLLSAI2M_DIV_13 + * @arg @ref LL_RCC_PLLSAI2M_DIV_14 + * @arg @ref LL_RCC_PLLSAI2M_DIV_15 + * @arg @ref LL_RCC_PLLSAI2M_DIV_16 + * @param PLLN Between 8 and 127 + * @param PLLR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2R_DIV_2 + * @arg @ref LL_RCC_PLLSAI2R_DIV_4 + * @arg @ref LL_RCC_PLLSAI2R_DIV_6 + * @arg @ref LL_RCC_PLLSAI2R_DIV_8 + * @param PLLDIVR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_2 + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_4 + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_8 + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_ConfigDomain_LTDC(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLR, uint32_t PLLDIVR) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC, Source); + MODIFY_REG(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2M | RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2R, + (PLLN << RCC_PLLSAI2CFGR_PLLSAI2N_Pos) | PLLR | PLLM); + MODIFY_REG(RCC->CCIPR2, RCC_CCIPR2_PLLSAI2DIVR, PLLDIVR); +} +#else +/** + * @brief Configure PLLSAI2 used for ADC domain clock + * @note PLL Source and PLLM Divider can be written only when PLL, + * PLLSAI2 and PLLSAI2 are disabled. + * @note PLLSAI2N/PLLSAI2R can be written only when PLLSAI2 is disabled. + * @note This can be selected for ADC + * @rmtoll PLLCFGR PLLSRC LL_RCC_PLLSAI2_ConfigDomain_ADC\n + * PLLCFGR PLLM LL_RCC_PLLSAI2_ConfigDomain_ADC\n + * PLLSAI2CFGR PLLSAI2N LL_RCC_PLLSAI2_ConfigDomain_ADC\n + * PLLSAI2CFGR PLLSAI2R LL_RCC_PLLSAI2_ConfigDomain_ADC + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_NONE + * @arg @ref LL_RCC_PLLSOURCE_MSI + * @arg @ref LL_RCC_PLLSOURCE_HSI + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @param PLLM This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLM_DIV_1 + * @arg @ref LL_RCC_PLLM_DIV_2 + * @arg @ref LL_RCC_PLLM_DIV_3 + * @arg @ref LL_RCC_PLLM_DIV_4 + * @arg @ref LL_RCC_PLLM_DIV_5 + * @arg @ref LL_RCC_PLLM_DIV_6 + * @arg @ref LL_RCC_PLLM_DIV_7 + * @arg @ref LL_RCC_PLLM_DIV_8 + * @param PLLN Between 8 and 86 + * @param PLLR This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2R_DIV_2 + * @arg @ref LL_RCC_PLLSAI2R_DIV_4 + * @arg @ref LL_RCC_PLLSAI2R_DIV_6 + * @arg @ref LL_RCC_PLLSAI2R_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_ConfigDomain_ADC(uint32_t Source, uint32_t PLLM, uint32_t PLLN, uint32_t PLLR) +{ + MODIFY_REG(RCC->PLLCFGR, RCC_PLLCFGR_PLLSRC | RCC_PLLCFGR_PLLM, Source | PLLM); + MODIFY_REG(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2N | RCC_PLLSAI2CFGR_PLLSAI2R, PLLN << RCC_PLLSAI2CFGR_PLLSAI2N_Pos | PLLR); +} +#endif /* LTDC */ + +/** + * @brief Get SAI2PLL multiplication factor for VCO + * @rmtoll PLLSAI2CFGR PLLSAI2N LL_RCC_PLLSAI2_GetN + * @retval Between 8 and 86 or 127 depending on devices + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI2_GetN(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2N) >> RCC_PLLSAI2CFGR_PLLSAI2N_Pos); +} + +#if defined(RCC_PLLSAI2P_DIV_2_31_SUPPORT) +/** + * @brief Get SAI2PLL division factor for PLLSAI2P + * @note Used for PLLSAI2CLK (SAI1 or SAI2 clock). + * @rmtoll PLLSAI2CFGR PLLSAI2PDIV LL_RCC_PLLSAI2_GetP + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2P_DIV_2 + * @arg @ref LL_RCC_PLLSAI2P_DIV_3 + * @arg @ref LL_RCC_PLLSAI2P_DIV_4 + * @arg @ref LL_RCC_PLLSAI2P_DIV_5 + * @arg @ref LL_RCC_PLLSAI2P_DIV_6 + * @arg @ref LL_RCC_PLLSAI2P_DIV_7 + * @arg @ref LL_RCC_PLLSAI2P_DIV_8 + * @arg @ref LL_RCC_PLLSAI2P_DIV_9 + * @arg @ref LL_RCC_PLLSAI2P_DIV_10 + * @arg @ref LL_RCC_PLLSAI2P_DIV_11 + * @arg @ref LL_RCC_PLLSAI2P_DIV_12 + * @arg @ref LL_RCC_PLLSAI2P_DIV_13 + * @arg @ref LL_RCC_PLLSAI2P_DIV_14 + * @arg @ref LL_RCC_PLLSAI2P_DIV_15 + * @arg @ref LL_RCC_PLLSAI2P_DIV_16 + * @arg @ref LL_RCC_PLLSAI2P_DIV_17 + * @arg @ref LL_RCC_PLLSAI2P_DIV_18 + * @arg @ref LL_RCC_PLLSAI2P_DIV_19 + * @arg @ref LL_RCC_PLLSAI2P_DIV_20 + * @arg @ref LL_RCC_PLLSAI2P_DIV_21 + * @arg @ref LL_RCC_PLLSAI2P_DIV_22 + * @arg @ref LL_RCC_PLLSAI2P_DIV_23 + * @arg @ref LL_RCC_PLLSAI2P_DIV_24 + * @arg @ref LL_RCC_PLLSAI2P_DIV_25 + * @arg @ref LL_RCC_PLLSAI2P_DIV_26 + * @arg @ref LL_RCC_PLLSAI2P_DIV_27 + * @arg @ref LL_RCC_PLLSAI2P_DIV_28 + * @arg @ref LL_RCC_PLLSAI2P_DIV_29 + * @arg @ref LL_RCC_PLLSAI2P_DIV_30 + * @arg @ref LL_RCC_PLLSAI2P_DIV_31 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI2_GetP(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2PDIV)); +} +#else +/** + * @brief Get SAI2PLL division factor for PLLSAI2P + * @note Used for PLLSAI2CLK (SAI1 or SAI2 clock). + * @rmtoll PLLSAI2CFGR PLLSAI2P LL_RCC_PLLSAI2_GetP + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2P_DIV_7 + * @arg @ref LL_RCC_PLLSAI2P_DIV_17 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI2_GetP(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2P)); +} +#endif /* RCC_PLLSAI2P_DIV_2_31_SUPPORT */ + +#if defined(RCC_PLLSAI2Q_DIV_SUPPORT) +/** + * @brief Get division factor for PLLSAI2Q + * @note Used for PLLDSICLK (DSI clock) + * @rmtoll PLLSAI2CFGR PLLSAI2Q LL_RCC_PLLSAI2_GetQ + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2Q_DIV_2 + * @arg @ref LL_RCC_PLLSAI2Q_DIV_4 + * @arg @ref LL_RCC_PLLSAI2Q_DIV_6 + * @arg @ref LL_RCC_PLLSAI2Q_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI2_GetQ(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2Q)); +} +#endif /* RCC_PLLSAI2Q_DIV_SUPPORT */ + +/** + * @brief Get SAI2PLL division factor for PLLSAI2R + * @note Used for PLLADC2CLK (ADC clock) or PLLLCDCLK (LTDC clock) depending on devices + * @rmtoll PLLSAI2CFGR PLLSAI2R LL_RCC_PLLSAI2_GetR + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2R_DIV_2 + * @arg @ref LL_RCC_PLLSAI2R_DIV_4 + * @arg @ref LL_RCC_PLLSAI2R_DIV_6 + * @arg @ref LL_RCC_PLLSAI2R_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI2_GetR(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2R)); +} + +#if defined(RCC_PLLSAI2M_DIV_1_16_SUPPORT) +/** + * @brief Get Division factor for the PLLSAI2 + * @rmtoll PLLSAI2CFGR PLLSAI2M LL_RCC_PLLSAI2_GetDivider + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2M_DIV_1 + * @arg @ref LL_RCC_PLLSAI2M_DIV_2 + * @arg @ref LL_RCC_PLLSAI2M_DIV_3 + * @arg @ref LL_RCC_PLLSAI2M_DIV_4 + * @arg @ref LL_RCC_PLLSAI2M_DIV_5 + * @arg @ref LL_RCC_PLLSAI2M_DIV_6 + * @arg @ref LL_RCC_PLLSAI2M_DIV_7 + * @arg @ref LL_RCC_PLLSAI2M_DIV_8 + * @arg @ref LL_RCC_PLLSAI2M_DIV_9 + * @arg @ref LL_RCC_PLLSAI2M_DIV_10 + * @arg @ref LL_RCC_PLLSAI2M_DIV_11 + * @arg @ref LL_RCC_PLLSAI2M_DIV_12 + * @arg @ref LL_RCC_PLLSAI2M_DIV_13 + * @arg @ref LL_RCC_PLLSAI2M_DIV_14 + * @arg @ref LL_RCC_PLLSAI2M_DIV_15 + * @arg @ref LL_RCC_PLLSAI2M_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI2_GetDivider(void) +{ + return (uint32_t)(READ_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2M)); +} +#endif /* RCC_PLLSAI2M_DIV_1_16_SUPPORT */ + +#if defined(RCC_CCIPR2_PLLSAI2DIVR) +/** + * @brief Get PLLSAI2 division factor for PLLSAI2DIVR + * @note Used for LTDC domain clock + * @rmtoll CCIPR2 PLLSAI2DIVR LL_RCC_PLLSAI2_GetDIVR + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_2 + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_4 + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_8 + * @arg @ref LL_RCC_PLLSAI2DIVR_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLSAI2_GetDIVR(void) +{ + return (uint32_t)(READ_BIT(RCC->CCIPR2, RCC_CCIPR2_PLLSAI2DIVR)); +} +#endif /* RCC_CCIPR2_PLLSAI2DIVR */ + +/** + * @brief Enable PLLSAI2 output mapped on SAI domain clock + * @rmtoll PLLSAI2CFGR PLLSAI2PEN LL_RCC_PLLSAI2_EnableDomain_SAI + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_EnableDomain_SAI(void) +{ + SET_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2PEN); +} + +/** + * @brief Disable PLLSAI2 output mapped on SAI domain clock + * @note In order to save power, when of the PLLSAI2 is + * not used, should be 0 + * @rmtoll PLLSAI2CFGR PLLSAI2PEN LL_RCC_PLLSAI2_DisableDomain_SAI + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_DisableDomain_SAI(void) +{ + CLEAR_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2PEN); +} + +#if defined(DSI) +/** + * @brief Enable PLLSAI2 output mapped on DSI domain clock + * @rmtoll PLLSAI2CFGR PLLSAI2QEN LL_RCC_PLLSAI2_EnableDomain_DSI + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_EnableDomain_DSI(void) +{ + SET_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2QEN); +} + +/** + * @brief Disable PLLSAI2 output mapped on DSI domain clock + * @note In order to save power, when of the PLLSAI2 is + * not used, Main PLLSAI2 should be 0 + * @rmtoll PLLSAI2CFGR PLLSAI2QEN LL_RCC_PLLSAI2_DisableDomain_DSI + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_DisableDomain_DSI(void) +{ + CLEAR_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2QEN); +} +#endif /* DSI */ + +#if defined(LTDC) +/** + * @brief Enable PLLSAI2 output mapped on LTDC domain clock + * @rmtoll PLLSAI2CFGR PLLSAI2REN LL_RCC_PLLSAI2_EnableDomain_LTDC + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_EnableDomain_LTDC(void) +{ + SET_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2REN); +} + +/** + * @brief Disable PLLSAI2 output mapped on LTDC domain clock + * @note In order to save power, when of the PLLSAI2 is + * not used, Main PLLSAI2 should be 0 + * @rmtoll PLLSAI2CFGR PLLSAI2REN LL_RCC_PLLSAI2_DisableDomain_LTDC + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_DisableDomain_LTDC(void) +{ + CLEAR_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2REN); +} +#else +/** + * @brief Enable PLLSAI2 output mapped on ADC domain clock + * @rmtoll PLLSAI2CFGR PLLSAI2REN LL_RCC_PLLSAI2_EnableDomain_ADC + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_EnableDomain_ADC(void) +{ + SET_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2REN); +} + +/** + * @brief Disable PLLSAI2 output mapped on ADC domain clock + * @note In order to save power, when of the PLLSAI2 is + * not used, Main PLLSAI2 should be 0 + * @rmtoll PLLSAI2CFGR PLLSAI2REN LL_RCC_PLLSAI2_DisableDomain_ADC + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLSAI2_DisableDomain_ADC(void) +{ + CLEAR_BIT(RCC->PLLSAI2CFGR, RCC_PLLSAI2CFGR_PLLSAI2REN); +} +#endif /* LTDC */ + +/** + * @} + */ +#endif /* RCC_PLLSAI2_SUPPORT */ + +#if defined(OCTOSPI1) +/** @defgroup RCC_LL_EF_OCTOSPI OCTOSPI + * @{ + */ + +/** + * @brief Configure OCTOSPI1 DQS delay + * @rmtoll DLYCFGR OCTOSPI1_DLY LL_RCC_OCTOSPI1_DelayConfig + * @param Delay OCTOSPI1 DQS delay between 0 and 15 + * @retval None + */ +__STATIC_INLINE void LL_RCC_OCTOSPI1_DelayConfig(uint32_t Delay) +{ + MODIFY_REG(RCC->DLYCFGR, RCC_DLYCFGR_OCTOSPI1_DLY, Delay); +} + +#if defined(OCTOSPI2) +/** + * @brief Configure OCTOSPI2 DQS delay + * @rmtoll DLYCFGR OCTOSPI2_DLY LL_RCC_OCTOSPI2_DelayConfig + * @param Delay OCTOSPI2 DQS delay between 0 and 15 + * @retval None + */ +__STATIC_INLINE void LL_RCC_OCTOSPI2_DelayConfig(uint32_t Delay) +{ + MODIFY_REG(RCC->DLYCFGR, RCC_DLYCFGR_OCTOSPI2_DLY, (Delay << RCC_DLYCFGR_OCTOSPI2_DLY_Pos)); +} +#endif /* OCTOSPI2 */ + +/** + * @} + */ +#endif /* OCTOSPI1 */ + +/** @defgroup RCC_LL_EF_FLAG_Management FLAG Management + * @{ + */ + +/** + * @brief Clear LSI ready interrupt flag + * @rmtoll CICR LSIRDYC LL_RCC_ClearFlag_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSIRDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_LSIRDYC); +} + +/** + * @brief Clear LSE ready interrupt flag + * @rmtoll CICR LSERDYC LL_RCC_ClearFlag_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSERDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_LSERDYC); +} + +/** + * @brief Clear MSI ready interrupt flag + * @rmtoll CICR MSIRDYC LL_RCC_ClearFlag_MSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_MSIRDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_MSIRDYC); +} + +/** + * @brief Clear HSI ready interrupt flag + * @rmtoll CICR HSIRDYC LL_RCC_ClearFlag_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSIRDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_HSIRDYC); +} + +/** + * @brief Clear HSE ready interrupt flag + * @rmtoll CICR HSERDYC LL_RCC_ClearFlag_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSERDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_HSERDYC); +} + +/** + * @brief Clear PLL ready interrupt flag + * @rmtoll CICR PLLRDYC LL_RCC_ClearFlag_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLLRDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_PLLRDYC); +} + +#if defined(RCC_HSI48_SUPPORT) +/** + * @brief Clear HSI48 ready interrupt flag + * @rmtoll CICR HSI48RDYC LL_RCC_ClearFlag_HSI48RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSI48RDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_HSI48RDYC); +} +#endif /* RCC_HSI48_SUPPORT */ + +#if defined(RCC_PLLSAI1_SUPPORT) +/** + * @brief Clear PLLSAI1 ready interrupt flag + * @rmtoll CICR PLLSAI1RDYC LL_RCC_ClearFlag_PLLSAI1RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLLSAI1RDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_PLLSAI1RDYC); +} +#endif /* RCC_PLLSAI1_SUPPORT */ + +#if defined(RCC_PLLSAI2_SUPPORT) +/** + * @brief Clear PLLSAI1 ready interrupt flag + * @rmtoll CICR PLLSAI2RDYC LL_RCC_ClearFlag_PLLSAI2RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLLSAI2RDY(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_PLLSAI2RDYC); +} +#endif /* RCC_PLLSAI2_SUPPORT */ + +/** + * @brief Clear Clock security system interrupt flag + * @rmtoll CICR CSSC LL_RCC_ClearFlag_HSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSECSS(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_CSSC); +} + +/** + * @brief Clear LSE Clock security system interrupt flag + * @rmtoll CICR LSECSSC LL_RCC_ClearFlag_LSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSECSS(void) +{ + SET_BIT(RCC->CICR, RCC_CICR_LSECSSC); +} + +/** + * @brief Check if LSI ready interrupt occurred or not + * @rmtoll CIFR LSIRDYF LL_RCC_IsActiveFlag_LSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSIRDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSIRDYF) == RCC_CIFR_LSIRDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if LSE ready interrupt occurred or not + * @rmtoll CIFR LSERDYF LL_RCC_IsActiveFlag_LSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSERDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSERDYF) == RCC_CIFR_LSERDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if MSI ready interrupt occurred or not + * @rmtoll CIFR MSIRDYF LL_RCC_IsActiveFlag_MSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_MSIRDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_MSIRDYF) == RCC_CIFR_MSIRDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if HSI ready interrupt occurred or not + * @rmtoll CIFR HSIRDYF LL_RCC_IsActiveFlag_HSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSIRDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSIRDYF) == RCC_CIFR_HSIRDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if HSE ready interrupt occurred or not + * @rmtoll CIFR HSERDYF LL_RCC_IsActiveFlag_HSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSERDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSERDYF) == RCC_CIFR_HSERDYF) ? 1UL : 0UL); +} + +/** + * @brief Check if PLL ready interrupt occurred or not + * @rmtoll CIFR PLLRDYF LL_RCC_IsActiveFlag_PLLRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLRDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_PLLRDYF) == RCC_CIFR_PLLRDYF) ? 1UL : 0UL); +} + +#if defined(RCC_HSI48_SUPPORT) +/** + * @brief Check if HSI48 ready interrupt occurred or not + * @rmtoll CIR HSI48RDYF LL_RCC_IsActiveFlag_HSI48RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSI48RDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_HSI48RDYF) == RCC_CIFR_HSI48RDYF) ? 1UL : 0UL); +} +#endif /* RCC_HSI48_SUPPORT */ + +#if defined(RCC_PLLSAI1_SUPPORT) +/** + * @brief Check if PLLSAI1 ready interrupt occurred or not + * @rmtoll CIFR PLLSAI1RDYF LL_RCC_IsActiveFlag_PLLSAI1RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLSAI1RDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_PLLSAI1RDYF) == RCC_CIFR_PLLSAI1RDYF) ? 1UL : 0UL); +} +#endif /* RCC_PLLSAI1_SUPPORT */ + +#if defined(RCC_PLLSAI2_SUPPORT) +/** + * @brief Check if PLLSAI1 ready interrupt occurred or not + * @rmtoll CIFR PLLSAI2RDYF LL_RCC_IsActiveFlag_PLLSAI2RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLSAI2RDY(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_PLLSAI2RDYF) == RCC_CIFR_PLLSAI2RDYF) ? 1UL : 0UL); +} +#endif /* RCC_PLLSAI2_SUPPORT */ + +/** + * @brief Check if Clock security system interrupt occurred or not + * @rmtoll CIFR CSSF LL_RCC_IsActiveFlag_HSECSS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSECSS(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_CSSF) == RCC_CIFR_CSSF) ? 1UL : 0UL); +} + +/** + * @brief Check if LSE Clock security system interrupt occurred or not + * @rmtoll CIFR LSECSSF LL_RCC_IsActiveFlag_LSECSS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSECSS(void) +{ + return ((READ_BIT(RCC->CIFR, RCC_CIFR_LSECSSF) == RCC_CIFR_LSECSSF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag FW reset is set or not. + * @rmtoll CSR FWRSTF LL_RCC_IsActiveFlag_FWRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_FWRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_FWRSTF) == RCC_CSR_FWRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Independent Watchdog reset is set or not. + * @rmtoll CSR IWDGRSTF LL_RCC_IsActiveFlag_IWDGRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_IWDGRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_IWDGRSTF) == RCC_CSR_IWDGRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Low Power reset is set or not. + * @rmtoll CSR LPWRRSTF LL_RCC_IsActiveFlag_LPWRRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LPWRRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_LPWRRSTF) == RCC_CSR_LPWRRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag is set or not. + * @rmtoll CSR OBLRSTF LL_RCC_IsActiveFlag_OBLRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_OBLRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_OBLRSTF) == RCC_CSR_OBLRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Pin reset is set or not. + * @rmtoll CSR PINRSTF LL_RCC_IsActiveFlag_PINRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PINRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_PINRSTF) == RCC_CSR_PINRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Software reset is set or not. + * @rmtoll CSR SFTRSTF LL_RCC_IsActiveFlag_SFTRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SFTRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_SFTRSTF) == RCC_CSR_SFTRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag Window Watchdog reset is set or not. + * @rmtoll CSR WWDGRSTF LL_RCC_IsActiveFlag_WWDGRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_WWDGRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_WWDGRSTF) == RCC_CSR_WWDGRSTF) ? 1UL : 0UL); +} + +/** + * @brief Check if RCC flag BOR reset is set or not. + * @rmtoll CSR BORRSTF LL_RCC_IsActiveFlag_BORRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_BORRST(void) +{ + return ((READ_BIT(RCC->CSR, RCC_CSR_BORRSTF) == RCC_CSR_BORRSTF) ? 1UL : 0UL); +} + +/** + * @brief Set RMVF bit to clear the reset flags. + * @rmtoll CSR RMVF LL_RCC_ClearResetFlags + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearResetFlags(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_RMVF); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_IT_Management IT Management + * @{ + */ + +/** + * @brief Enable LSI ready interrupt + * @rmtoll CIER LSIRDYIE LL_RCC_EnableIT_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSIRDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_LSIRDYIE); +} + +/** + * @brief Enable LSE ready interrupt + * @rmtoll CIER LSERDYIE LL_RCC_EnableIT_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSERDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_LSERDYIE); +} + +/** + * @brief Enable MSI ready interrupt + * @rmtoll CIER MSIRDYIE LL_RCC_EnableIT_MSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_MSIRDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_MSIRDYIE); +} + +/** + * @brief Enable HSI ready interrupt + * @rmtoll CIER HSIRDYIE LL_RCC_EnableIT_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSIRDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_HSIRDYIE); +} + +/** + * @brief Enable HSE ready interrupt + * @rmtoll CIER HSERDYIE LL_RCC_EnableIT_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSERDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_HSERDYIE); +} + +/** + * @brief Enable PLL ready interrupt + * @rmtoll CIER PLLRDYIE LL_RCC_EnableIT_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLLRDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_PLLRDYIE); +} + +#if defined(RCC_HSI48_SUPPORT) +/** + * @brief Enable HSI48 ready interrupt + * @rmtoll CIER HSI48RDYIE LL_RCC_EnableIT_HSI48RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSI48RDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE); +} +#endif /* RCC_HSI48_SUPPORT */ + +#if defined(RCC_PLLSAI1_SUPPORT) +/** + * @brief Enable PLLSAI1 ready interrupt + * @rmtoll CIER PLLSAI1RDYIE LL_RCC_EnableIT_PLLSAI1RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLLSAI1RDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_PLLSAI1RDYIE); +} +#endif /* RCC_PLLSAI1_SUPPORT */ + +#if defined(RCC_PLLSAI2_SUPPORT) +/** + * @brief Enable PLLSAI2 ready interrupt + * @rmtoll CIER PLLSAI2RDYIE LL_RCC_EnableIT_PLLSAI2RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLLSAI2RDY(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_PLLSAI2RDYIE); +} +#endif /* RCC_PLLSAI2_SUPPORT */ + +/** + * @brief Enable LSE clock security system interrupt + * @rmtoll CIER LSECSSIE LL_RCC_EnableIT_LSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSECSS(void) +{ + SET_BIT(RCC->CIER, RCC_CIER_LSECSSIE); +} + +/** + * @brief Disable LSI ready interrupt + * @rmtoll CIER LSIRDYIE LL_RCC_DisableIT_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSIRDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_LSIRDYIE); +} + +/** + * @brief Disable LSE ready interrupt + * @rmtoll CIER LSERDYIE LL_RCC_DisableIT_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSERDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_LSERDYIE); +} + +/** + * @brief Disable MSI ready interrupt + * @rmtoll CIER MSIRDYIE LL_RCC_DisableIT_MSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_MSIRDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_MSIRDYIE); +} + +/** + * @brief Disable HSI ready interrupt + * @rmtoll CIER HSIRDYIE LL_RCC_DisableIT_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSIRDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_HSIRDYIE); +} + +/** + * @brief Disable HSE ready interrupt + * @rmtoll CIER HSERDYIE LL_RCC_DisableIT_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSERDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_HSERDYIE); +} + +/** + * @brief Disable PLL ready interrupt + * @rmtoll CIER PLLRDYIE LL_RCC_DisableIT_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLLRDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_PLLRDYIE); +} + +#if defined(RCC_HSI48_SUPPORT) +/** + * @brief Disable HSI48 ready interrupt + * @rmtoll CIER HSI48RDYIE LL_RCC_DisableIT_HSI48RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSI48RDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE); +} +#endif /* RCC_HSI48_SUPPORT */ + +#if defined(RCC_PLLSAI1_SUPPORT) +/** + * @brief Disable PLLSAI1 ready interrupt + * @rmtoll CIER PLLSAI1RDYIE LL_RCC_DisableIT_PLLSAI1RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLLSAI1RDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_PLLSAI1RDYIE); +} +#endif /* RCC_PLLSAI1_SUPPORT */ + +#if defined(RCC_PLLSAI2_SUPPORT) +/** + * @brief Disable PLLSAI2 ready interrupt + * @rmtoll CIER PLLSAI2RDYIE LL_RCC_DisableIT_PLLSAI2RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLLSAI2RDY(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_PLLSAI2RDYIE); +} +#endif /* RCC_PLLSAI2_SUPPORT */ + +/** + * @brief Disable LSE clock security system interrupt + * @rmtoll CIER LSECSSIE LL_RCC_DisableIT_LSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSECSS(void) +{ + CLEAR_BIT(RCC->CIER, RCC_CIER_LSECSSIE); +} + +/** + * @brief Checks if LSI ready interrupt source is enabled or disabled. + * @rmtoll CIER LSIRDYIE LL_RCC_IsEnabledIT_LSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSIRDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_LSIRDYIE) == RCC_CIER_LSIRDYIE) ? 1UL : 0UL); +} + +/** + * @brief Checks if LSE ready interrupt source is enabled or disabled. + * @rmtoll CIER LSERDYIE LL_RCC_IsEnabledIT_LSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSERDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_LSERDYIE) == RCC_CIER_LSERDYIE) ? 1UL : 0UL); +} + +/** + * @brief Checks if MSI ready interrupt source is enabled or disabled. + * @rmtoll CIER MSIRDYIE LL_RCC_IsEnabledIT_MSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_MSIRDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_MSIRDYIE) == RCC_CIER_MSIRDYIE) ? 1UL : 0UL); +} + +/** + * @brief Checks if HSI ready interrupt source is enabled or disabled. + * @rmtoll CIER HSIRDYIE LL_RCC_IsEnabledIT_HSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSIRDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_HSIRDYIE) == RCC_CIER_HSIRDYIE) ? 1UL : 0UL); +} + +/** + * @brief Checks if HSE ready interrupt source is enabled or disabled. + * @rmtoll CIER HSERDYIE LL_RCC_IsEnabledIT_HSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSERDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_HSERDYIE) == RCC_CIER_HSERDYIE) ? 1UL : 0UL); +} + +/** + * @brief Checks if PLL ready interrupt source is enabled or disabled. + * @rmtoll CIER PLLRDYIE LL_RCC_IsEnabledIT_PLLRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLRDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_PLLRDYIE) == RCC_CIER_PLLRDYIE) ? 1UL : 0UL); +} + +#if defined(RCC_HSI48_SUPPORT) +/** + * @brief Checks if HSI48 ready interrupt source is enabled or disabled. + * @rmtoll CIER HSI48RDYIE LL_RCC_IsEnabledIT_HSI48RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSI48RDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_HSI48RDYIE) == RCC_CIER_HSI48RDYIE) ? 1UL : 0UL); +} +#endif /* RCC_HSI48_SUPPORT */ + +#if defined(RCC_PLLSAI1_SUPPORT) +/** + * @brief Checks if PLLSAI1 ready interrupt source is enabled or disabled. + * @rmtoll CIER PLLSAI1RDYIE LL_RCC_IsEnabledIT_PLLSAI1RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLSAI1RDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_PLLSAI1RDYIE) == RCC_CIER_PLLSAI1RDYIE) ? 1UL : 0UL); +} +#endif /* RCC_PLLSAI1_SUPPORT */ + +#if defined(RCC_PLLSAI2_SUPPORT) +/** + * @brief Checks if PLLSAI2 ready interrupt source is enabled or disabled. + * @rmtoll CIER PLLSAI2RDYIE LL_RCC_IsEnabledIT_PLLSAI2RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLSAI2RDY(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_PLLSAI2RDYIE) == RCC_CIER_PLLSAI2RDYIE) ? 1UL : 0UL); +} +#endif /* RCC_PLLSAI2_SUPPORT */ + +/** + * @brief Checks if LSECSS interrupt source is enabled or disabled. + * @rmtoll CIER LSECSSIE LL_RCC_IsEnabledIT_LSECSS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSECSS(void) +{ + return ((READ_BIT(RCC->CIER, RCC_CIER_LSECSSIE) == RCC_CIER_LSECSSIE) ? 1UL : 0UL); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_RCC_DeInit(void); +/** + * @} + */ + +/** @defgroup RCC_LL_EF_Get_Freq Get system and peripherals clocks frequency functions + * @{ + */ +void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks); +uint32_t LL_RCC_GetUSARTClockFreq(uint32_t USARTxSource); +#if defined(UART4) || defined(UART5) +uint32_t LL_RCC_GetUARTClockFreq(uint32_t UARTxSource); +#endif /* UART4 || UART5 */ +uint32_t LL_RCC_GetI2CClockFreq(uint32_t I2CxSource); +uint32_t LL_RCC_GetLPUARTClockFreq(uint32_t LPUARTxSource); +uint32_t LL_RCC_GetLPTIMClockFreq(uint32_t LPTIMxSource); +#if defined(SAI1) +uint32_t LL_RCC_GetSAIClockFreq(uint32_t SAIxSource); +#endif /* SAI1 */ +#if defined(SDMMC1) +#if defined(RCC_CCIPR2_SDMMCSEL) +uint32_t LL_RCC_GetSDMMCKernelClockFreq(uint32_t SDMMCxSource); +#endif +uint32_t LL_RCC_GetSDMMCClockFreq(uint32_t SDMMCxSource); +#endif /* SDMMC1 */ +uint32_t LL_RCC_GetRNGClockFreq(uint32_t RNGxSource); +#if defined(USB_OTG_FS) || defined(USB) +uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource); +#endif /* USB_OTG_FS || USB */ +uint32_t LL_RCC_GetADCClockFreq(uint32_t ADCxSource); +#if defined(SWPMI1) +uint32_t LL_RCC_GetSWPMIClockFreq(uint32_t SWPMIxSource); +#endif /* SWPMI1 */ +#if defined(DFSDM1_Channel0) +uint32_t LL_RCC_GetDFSDMClockFreq(uint32_t DFSDMxSource); +#if defined(RCC_CCIPR2_DFSDM1SEL) +uint32_t LL_RCC_GetDFSDMAudioClockFreq(uint32_t DFSDMxSource); +#endif /* RCC_CCIPR2_DFSDM1SEL */ +#endif /* DFSDM1_Channel0 */ +#if defined(LTDC) +uint32_t LL_RCC_GetLTDCClockFreq(uint32_t LTDCxSource); +#endif /* LTDC */ +#if defined(DSI) +uint32_t LL_RCC_GetDSIClockFreq(uint32_t DSIxSource); +#endif /* DSI */ +#if defined(OCTOSPI1) +uint32_t LL_RCC_GetOCTOSPIClockFreq(uint32_t OCTOSPIxSource); +#endif /* OCTOSPI1 */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RCC) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_RCC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_system.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_system.h new file mode 100644 index 0000000..e0bf66b --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_system.h @@ -0,0 +1,1628 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_system.h + * @author MCD Application Team + * @brief Header file of SYSTEM LL module. + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL SYSTEM driver contains a set of generic APIs that can be + used by user: + (+) Some of the FLASH features need to be handled in the SYSTEM file. + (+) Access to DBGCMU registers + (+) Access to SYSCFG registers + (+) Access to VREFBUF registers + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_SYSTEM_H +#define STM32L4xx_LL_SYSTEM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) || defined (VREFBUF) + +/** @defgroup SYSTEM_LL SYSTEM + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants + * @{ + */ + +/** + * @brief Power-down in Run mode Flash key + */ +#define FLASH_PDKEY1 0x04152637U /*!< Flash power down key1 */ +#define FLASH_PDKEY2 0xFAFBFCFDU /*!< Flash power down key2: used with FLASH_PDKEY1 + to unlock the RUN_PD bit in FLASH_ACR */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants + * @{ + */ + +/** @defgroup SYSTEM_LL_EC_REMAP SYSCFG REMAP +* @{ +*/ +#define LL_SYSCFG_REMAP_FLASH 0x00000000U /*!< Main Flash memory mapped at 0x00000000 */ +#define LL_SYSCFG_REMAP_SYSTEMFLASH SYSCFG_MEMRMP_MEM_MODE_0 /*!< System Flash memory mapped at 0x00000000 */ +#define LL_SYSCFG_REMAP_SRAM (SYSCFG_MEMRMP_MEM_MODE_1 | SYSCFG_MEMRMP_MEM_MODE_0) /*!< SRAM1 mapped at 0x00000000 */ +#if defined(FMC_Bank1_R) +#define LL_SYSCFG_REMAP_FMC SYSCFG_MEMRMP_MEM_MODE_1 /*!< FMC bank 1 (NOR/PSRAM 1 and 2) mapped at 0x00000000 */ +#endif /* FMC_Bank1_R */ +#define LL_SYSCFG_REMAP_QUADSPI (SYSCFG_MEMRMP_MEM_MODE_2 | SYSCFG_MEMRMP_MEM_MODE_1) /*!< QUADSPI memory mapped at 0x00000000 */ +/** + * @} + */ + +#if defined(SYSCFG_MEMRMP_FB_MODE) +/** @defgroup SYSTEM_LL_EC_BANKMODE SYSCFG BANK MODE + * @{ + */ +#define LL_SYSCFG_BANKMODE_BANK1 0x00000000U /*!< Flash Bank1 mapped at 0x08000000 (and aliased @0x00000000) + and Flash Bank2 mapped at 0x08080000 (and aliased at 0x00080000) */ +#define LL_SYSCFG_BANKMODE_BANK2 SYSCFG_MEMRMP_FB_MODE /*!< Flash Bank2 mapped at 0x08000000 (and aliased @0x00000000) + and Flash Bank1 mapped at 0x08080000 (and aliased at 0x00080000) */ +/** + * @} + */ + +#endif /* SYSCFG_MEMRMP_FB_MODE */ +/** @defgroup SYSTEM_LL_EC_I2C_FASTMODEPLUS SYSCFG I2C FASTMODEPLUS + * @{ + */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB6 SYSCFG_CFGR1_I2C_PB6_FMP /*!< Enable Fast Mode Plus on PB6 */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB7 SYSCFG_CFGR1_I2C_PB7_FMP /*!< Enable Fast Mode Plus on PB7 */ +#if defined(SYSCFG_CFGR1_I2C_PB8_FMP) +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB8 SYSCFG_CFGR1_I2C_PB8_FMP /*!< Enable Fast Mode Plus on PB8 */ +#endif /* SYSCFG_CFGR1_I2C_PB8_FMP */ +#if defined(SYSCFG_CFGR1_I2C_PB9_FMP) +#define LL_SYSCFG_I2C_FASTMODEPLUS_PB9 SYSCFG_CFGR1_I2C_PB9_FMP /*!< Enable Fast Mode Plus on PB9 */ +#endif /* SYSCFG_CFGR1_I2C_PB9_FMP */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 SYSCFG_CFGR1_I2C1_FMP /*!< Enable Fast Mode Plus on I2C1 pins */ +#if defined(I2C2) +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 SYSCFG_CFGR1_I2C2_FMP /*!< Enable Fast Mode Plus on I2C2 pins */ +#endif /* I2C2 */ +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 SYSCFG_CFGR1_I2C3_FMP /*!< Enable Fast Mode Plus on I2C3 pins */ +#if defined(I2C4) +#define LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 SYSCFG_CFGR1_I2C4_FMP /*!< Enable Fast Mode Plus on I2C4 pins */ +#endif /* I2C4 */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_EXTI_PORT SYSCFG EXTI PORT + * @{ + */ +#define LL_SYSCFG_EXTI_PORTA 0U /*!< EXTI PORT A */ +#define LL_SYSCFG_EXTI_PORTB 1U /*!< EXTI PORT B */ +#define LL_SYSCFG_EXTI_PORTC 2U /*!< EXTI PORT C */ +#define LL_SYSCFG_EXTI_PORTD 3U /*!< EXTI PORT D */ +#define LL_SYSCFG_EXTI_PORTE 4U /*!< EXTI PORT E */ +#if defined(GPIOF) +#define LL_SYSCFG_EXTI_PORTF 5U /*!< EXTI PORT F */ +#endif /* GPIOF */ +#if defined(GPIOG) +#define LL_SYSCFG_EXTI_PORTG 6U /*!< EXTI PORT G */ +#endif /* GPIOG */ +#define LL_SYSCFG_EXTI_PORTH 7U /*!< EXTI PORT H */ +#if defined(GPIOI) +#define LL_SYSCFG_EXTI_PORTI 8U /*!< EXTI PORT I */ +#endif /* GPIOI */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_EXTI_LINE SYSCFG EXTI LINE + * @{ + */ +#define LL_SYSCFG_EXTI_LINE0 (uint32_t)(0x000FU << 16U | 0U) /* !< EXTI_POSITION_0 | EXTICR[0] */ +#define LL_SYSCFG_EXTI_LINE1 (uint32_t)(0x00F0U << 16U | 0U) /* !< EXTI_POSITION_4 | EXTICR[0] */ +#define LL_SYSCFG_EXTI_LINE2 (uint32_t)(0x0F00U << 16U | 0U) /* !< EXTI_POSITION_8 | EXTICR[0] */ +#define LL_SYSCFG_EXTI_LINE3 (uint32_t)(0xF000U << 16U | 0U) /* !< EXTI_POSITION_12 | EXTICR[0] */ +#define LL_SYSCFG_EXTI_LINE4 (uint32_t)(0x000FU << 16U | 1U) /* !< EXTI_POSITION_0 | EXTICR[1] */ +#define LL_SYSCFG_EXTI_LINE5 (uint32_t)(0x00F0U << 16U | 1U) /* !< EXTI_POSITION_4 | EXTICR[1] */ +#define LL_SYSCFG_EXTI_LINE6 (uint32_t)(0x0F00U << 16U | 1U) /* !< EXTI_POSITION_8 | EXTICR[1] */ +#define LL_SYSCFG_EXTI_LINE7 (uint32_t)(0xF000U << 16U | 1U) /* !< EXTI_POSITION_12 | EXTICR[1] */ +#define LL_SYSCFG_EXTI_LINE8 (uint32_t)(0x000FU << 16U | 2U) /* !< EXTI_POSITION_0 | EXTICR[2] */ +#define LL_SYSCFG_EXTI_LINE9 (uint32_t)(0x00F0U << 16U | 2U) /* !< EXTI_POSITION_4 | EXTICR[2] */ +#define LL_SYSCFG_EXTI_LINE10 (uint32_t)(0x0F00U << 16U | 2U) /* !< EXTI_POSITION_8 | EXTICR[2] */ +#define LL_SYSCFG_EXTI_LINE11 (uint32_t)(0xF000U << 16U | 2U) /* !< EXTI_POSITION_12 | EXTICR[2] */ +#define LL_SYSCFG_EXTI_LINE12 (uint32_t)(0x000FU << 16U | 3U) /* !< EXTI_POSITION_0 | EXTICR[3] */ +#define LL_SYSCFG_EXTI_LINE13 (uint32_t)(0x00F0U << 16U | 3U) /* !< EXTI_POSITION_4 | EXTICR[3] */ +#define LL_SYSCFG_EXTI_LINE14 (uint32_t)(0x0F00U << 16U | 3U) /* !< EXTI_POSITION_8 | EXTICR[3] */ +#define LL_SYSCFG_EXTI_LINE15 (uint32_t)(0xF000U << 16U | 3U) /* !< EXTI_POSITION_12 | EXTICR[3] */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_TIMBREAK SYSCFG TIMER BREAK + * @{ + */ +#define LL_SYSCFG_TIMBREAK_ECC SYSCFG_CFGR2_ECCL /*!< Enables and locks the ECC error signal + with Break Input of TIM1/8/15/16/17 */ +#define LL_SYSCFG_TIMBREAK_PVD SYSCFG_CFGR2_PVDL /*!< Enables and locks the PVD connection + with TIM1/8/15/16/17 Break Input + and also the PVDE and PLS bits of the Power Control Interface */ +#define LL_SYSCFG_TIMBREAK_SRAM2_PARITY SYSCFG_CFGR2_SPL /*!< Enables and locks the SRAM2_PARITY error signal + with Break Input of TIM1/8/15/16/17 */ +#define LL_SYSCFG_TIMBREAK_LOCKUP SYSCFG_CFGR2_CLL /*!< Enables and locks the LOCKUP output of CortexM4 + with Break Input of TIM1/15/16/17 */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_SRAM2WRP SYSCFG SRAM2 WRP + * @{ + */ +#define LL_SYSCFG_SRAM2WRP_PAGE0 SYSCFG_SWPR_PAGE0 /*!< SRAM2 Write protection page 0 */ +#define LL_SYSCFG_SRAM2WRP_PAGE1 SYSCFG_SWPR_PAGE1 /*!< SRAM2 Write protection page 1 */ +#define LL_SYSCFG_SRAM2WRP_PAGE2 SYSCFG_SWPR_PAGE2 /*!< SRAM2 Write protection page 2 */ +#define LL_SYSCFG_SRAM2WRP_PAGE3 SYSCFG_SWPR_PAGE3 /*!< SRAM2 Write protection page 3 */ +#define LL_SYSCFG_SRAM2WRP_PAGE4 SYSCFG_SWPR_PAGE4 /*!< SRAM2 Write protection page 4 */ +#define LL_SYSCFG_SRAM2WRP_PAGE5 SYSCFG_SWPR_PAGE5 /*!< SRAM2 Write protection page 5 */ +#define LL_SYSCFG_SRAM2WRP_PAGE6 SYSCFG_SWPR_PAGE6 /*!< SRAM2 Write protection page 6 */ +#define LL_SYSCFG_SRAM2WRP_PAGE7 SYSCFG_SWPR_PAGE7 /*!< SRAM2 Write protection page 7 */ +#define LL_SYSCFG_SRAM2WRP_PAGE8 SYSCFG_SWPR_PAGE8 /*!< SRAM2 Write protection page 8 */ +#define LL_SYSCFG_SRAM2WRP_PAGE9 SYSCFG_SWPR_PAGE9 /*!< SRAM2 Write protection page 9 */ +#define LL_SYSCFG_SRAM2WRP_PAGE10 SYSCFG_SWPR_PAGE10 /*!< SRAM2 Write protection page 10 */ +#define LL_SYSCFG_SRAM2WRP_PAGE11 SYSCFG_SWPR_PAGE11 /*!< SRAM2 Write protection page 11 */ +#define LL_SYSCFG_SRAM2WRP_PAGE12 SYSCFG_SWPR_PAGE12 /*!< SRAM2 Write protection page 12 */ +#define LL_SYSCFG_SRAM2WRP_PAGE13 SYSCFG_SWPR_PAGE13 /*!< SRAM2 Write protection page 13 */ +#define LL_SYSCFG_SRAM2WRP_PAGE14 SYSCFG_SWPR_PAGE14 /*!< SRAM2 Write protection page 14 */ +#define LL_SYSCFG_SRAM2WRP_PAGE15 SYSCFG_SWPR_PAGE15 /*!< SRAM2 Write protection page 15 */ +#if defined(SYSCFG_SWPR_PAGE31) +#define LL_SYSCFG_SRAM2WRP_PAGE16 SYSCFG_SWPR_PAGE16 /*!< SRAM2 Write protection page 16 */ +#define LL_SYSCFG_SRAM2WRP_PAGE17 SYSCFG_SWPR_PAGE17 /*!< SRAM2 Write protection page 17 */ +#define LL_SYSCFG_SRAM2WRP_PAGE18 SYSCFG_SWPR_PAGE18 /*!< SRAM2 Write protection page 18 */ +#define LL_SYSCFG_SRAM2WRP_PAGE19 SYSCFG_SWPR_PAGE19 /*!< SRAM2 Write protection page 19 */ +#define LL_SYSCFG_SRAM2WRP_PAGE20 SYSCFG_SWPR_PAGE20 /*!< SRAM2 Write protection page 20 */ +#define LL_SYSCFG_SRAM2WRP_PAGE21 SYSCFG_SWPR_PAGE21 /*!< SRAM2 Write protection page 21 */ +#define LL_SYSCFG_SRAM2WRP_PAGE22 SYSCFG_SWPR_PAGE22 /*!< SRAM2 Write protection page 22 */ +#define LL_SYSCFG_SRAM2WRP_PAGE23 SYSCFG_SWPR_PAGE23 /*!< SRAM2 Write protection page 23 */ +#define LL_SYSCFG_SRAM2WRP_PAGE24 SYSCFG_SWPR_PAGE24 /*!< SRAM2 Write protection page 24 */ +#define LL_SYSCFG_SRAM2WRP_PAGE25 SYSCFG_SWPR_PAGE25 /*!< SRAM2 Write protection page 25 */ +#define LL_SYSCFG_SRAM2WRP_PAGE26 SYSCFG_SWPR_PAGE26 /*!< SRAM2 Write protection page 26 */ +#define LL_SYSCFG_SRAM2WRP_PAGE27 SYSCFG_SWPR_PAGE27 /*!< SRAM2 Write protection page 27 */ +#define LL_SYSCFG_SRAM2WRP_PAGE28 SYSCFG_SWPR_PAGE28 /*!< SRAM2 Write protection page 28 */ +#define LL_SYSCFG_SRAM2WRP_PAGE29 SYSCFG_SWPR_PAGE29 /*!< SRAM2 Write protection page 29 */ +#define LL_SYSCFG_SRAM2WRP_PAGE30 SYSCFG_SWPR_PAGE30 /*!< SRAM2 Write protection page 30 */ +#define LL_SYSCFG_SRAM2WRP_PAGE31 SYSCFG_SWPR_PAGE31 /*!< SRAM2 Write protection page 31 */ +#endif /* SYSCFG_SWPR_PAGE31 */ +#if defined(SYSCFG_SWPR2_PAGE63) +#define LL_SYSCFG_SRAM2WRP_PAGE32 SYSCFG_SWPR2_PAGE32 /*!< SRAM2 Write protection page 32 */ +#define LL_SYSCFG_SRAM2WRP_PAGE33 SYSCFG_SWPR2_PAGE33 /*!< SRAM2 Write protection page 33 */ +#define LL_SYSCFG_SRAM2WRP_PAGE34 SYSCFG_SWPR2_PAGE34 /*!< SRAM2 Write protection page 34 */ +#define LL_SYSCFG_SRAM2WRP_PAGE35 SYSCFG_SWPR2_PAGE35 /*!< SRAM2 Write protection page 35 */ +#define LL_SYSCFG_SRAM2WRP_PAGE36 SYSCFG_SWPR2_PAGE36 /*!< SRAM2 Write protection page 36 */ +#define LL_SYSCFG_SRAM2WRP_PAGE37 SYSCFG_SWPR2_PAGE37 /*!< SRAM2 Write protection page 37 */ +#define LL_SYSCFG_SRAM2WRP_PAGE38 SYSCFG_SWPR2_PAGE38 /*!< SRAM2 Write protection page 38 */ +#define LL_SYSCFG_SRAM2WRP_PAGE39 SYSCFG_SWPR2_PAGE39 /*!< SRAM2 Write protection page 39 */ +#define LL_SYSCFG_SRAM2WRP_PAGE40 SYSCFG_SWPR2_PAGE40 /*!< SRAM2 Write protection page 40 */ +#define LL_SYSCFG_SRAM2WRP_PAGE41 SYSCFG_SWPR2_PAGE41 /*!< SRAM2 Write protection page 41 */ +#define LL_SYSCFG_SRAM2WRP_PAGE42 SYSCFG_SWPR2_PAGE42 /*!< SRAM2 Write protection page 42 */ +#define LL_SYSCFG_SRAM2WRP_PAGE43 SYSCFG_SWPR2_PAGE43 /*!< SRAM2 Write protection page 43 */ +#define LL_SYSCFG_SRAM2WRP_PAGE44 SYSCFG_SWPR2_PAGE44 /*!< SRAM2 Write protection page 44 */ +#define LL_SYSCFG_SRAM2WRP_PAGE45 SYSCFG_SWPR2_PAGE45 /*!< SRAM2 Write protection page 45 */ +#define LL_SYSCFG_SRAM2WRP_PAGE46 SYSCFG_SWPR2_PAGE46 /*!< SRAM2 Write protection page 46 */ +#define LL_SYSCFG_SRAM2WRP_PAGE47 SYSCFG_SWPR2_PAGE47 /*!< SRAM2 Write protection page 47 */ +#define LL_SYSCFG_SRAM2WRP_PAGE48 SYSCFG_SWPR2_PAGE48 /*!< SRAM2 Write protection page 48 */ +#define LL_SYSCFG_SRAM2WRP_PAGE49 SYSCFG_SWPR2_PAGE49 /*!< SRAM2 Write protection page 49 */ +#define LL_SYSCFG_SRAM2WRP_PAGE50 SYSCFG_SWPR2_PAGE50 /*!< SRAM2 Write protection page 50 */ +#define LL_SYSCFG_SRAM2WRP_PAGE51 SYSCFG_SWPR2_PAGE51 /*!< SRAM2 Write protection page 51 */ +#define LL_SYSCFG_SRAM2WRP_PAGE52 SYSCFG_SWPR2_PAGE52 /*!< SRAM2 Write protection page 52 */ +#define LL_SYSCFG_SRAM2WRP_PAGE53 SYSCFG_SWPR2_PAGE53 /*!< SRAM2 Write protection page 53 */ +#define LL_SYSCFG_SRAM2WRP_PAGE54 SYSCFG_SWPR2_PAGE54 /*!< SRAM2 Write protection page 54 */ +#define LL_SYSCFG_SRAM2WRP_PAGE55 SYSCFG_SWPR2_PAGE55 /*!< SRAM2 Write protection page 55 */ +#define LL_SYSCFG_SRAM2WRP_PAGE56 SYSCFG_SWPR2_PAGE56 /*!< SRAM2 Write protection page 56 */ +#define LL_SYSCFG_SRAM2WRP_PAGE57 SYSCFG_SWPR2_PAGE57 /*!< SRAM2 Write protection page 57 */ +#define LL_SYSCFG_SRAM2WRP_PAGE58 SYSCFG_SWPR2_PAGE58 /*!< SRAM2 Write protection page 58 */ +#define LL_SYSCFG_SRAM2WRP_PAGE59 SYSCFG_SWPR2_PAGE59 /*!< SRAM2 Write protection page 59 */ +#define LL_SYSCFG_SRAM2WRP_PAGE60 SYSCFG_SWPR2_PAGE60 /*!< SRAM2 Write protection page 60 */ +#define LL_SYSCFG_SRAM2WRP_PAGE61 SYSCFG_SWPR2_PAGE61 /*!< SRAM2 Write protection page 61 */ +#define LL_SYSCFG_SRAM2WRP_PAGE62 SYSCFG_SWPR2_PAGE62 /*!< SRAM2 Write protection page 62 */ +#define LL_SYSCFG_SRAM2WRP_PAGE63 SYSCFG_SWPR2_PAGE63 /*!< SRAM2 Write protection page 63 */ +#endif /* SYSCFG_SWPR2_PAGE63 */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_TRACE DBGMCU TRACE Pin Assignment + * @{ + */ +#define LL_DBGMCU_TRACE_NONE 0x00000000U /*!< TRACE pins not assigned (default state) */ +#define LL_DBGMCU_TRACE_ASYNCH DBGMCU_CR_TRACE_IOEN /*!< TRACE pin assignment for Asynchronous Mode */ +#define LL_DBGMCU_TRACE_SYNCH_SIZE1 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_0) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 1 */ +#define LL_DBGMCU_TRACE_SYNCH_SIZE2 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_1) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 2 */ +#define LL_DBGMCU_TRACE_SYNCH_SIZE4 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 4 */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP_IP DBGMCU APB1 GRP1 STOP IP + * @{ + */ +#define LL_DBGMCU_APB1_GRP1_TIM2_STOP DBGMCU_APB1FZR1_DBG_TIM2_STOP /*!< The counter clock of TIM2 is stopped when the core is halted*/ +#if defined(TIM3) +#define LL_DBGMCU_APB1_GRP1_TIM3_STOP DBGMCU_APB1FZR1_DBG_TIM3_STOP /*!< The counter clock of TIM3 is stopped when the core is halted*/ +#endif /* TIM3 */ +#if defined(TIM4) +#define LL_DBGMCU_APB1_GRP1_TIM4_STOP DBGMCU_APB1FZR1_DBG_TIM4_STOP /*!< The counter clock of TIM4 is stopped when the core is halted*/ +#endif /* TIM4 */ +#if defined(TIM5) +#define LL_DBGMCU_APB1_GRP1_TIM5_STOP DBGMCU_APB1FZR1_DBG_TIM5_STOP /*!< The counter clock of TIM5 is stopped when the core is halted*/ +#endif /* TIM5 */ +#define LL_DBGMCU_APB1_GRP1_TIM6_STOP DBGMCU_APB1FZR1_DBG_TIM6_STOP /*!< The counter clock of TIM6 is stopped when the core is halted*/ +#if defined(TIM7) +#define LL_DBGMCU_APB1_GRP1_TIM7_STOP DBGMCU_APB1FZR1_DBG_TIM7_STOP /*!< The counter clock of TIM7 is stopped when the core is halted*/ +#endif /* TIM7 */ +#define LL_DBGMCU_APB1_GRP1_RTC_STOP DBGMCU_APB1FZR1_DBG_RTC_STOP /*!< The clock of the RTC counter is stopped when the core is halted*/ +#define LL_DBGMCU_APB1_GRP1_WWDG_STOP DBGMCU_APB1FZR1_DBG_WWDG_STOP /*!< The window watchdog counter clock is stopped when the core is halted*/ +#define LL_DBGMCU_APB1_GRP1_IWDG_STOP DBGMCU_APB1FZR1_DBG_IWDG_STOP /*!< The independent watchdog counter clock is stopped when the core is halted*/ +#define LL_DBGMCU_APB1_GRP1_I2C1_STOP DBGMCU_APB1FZR1_DBG_I2C1_STOP /*!< The I2C1 SMBus timeout is frozen*/ +#if defined(I2C2) +#define LL_DBGMCU_APB1_GRP1_I2C2_STOP DBGMCU_APB1FZR1_DBG_I2C2_STOP /*!< The I2C2 SMBus timeout is frozen*/ +#endif /* I2C2 */ +#define LL_DBGMCU_APB1_GRP1_I2C3_STOP DBGMCU_APB1FZR1_DBG_I2C3_STOP /*!< The I2C3 SMBus timeout is frozen*/ +#define LL_DBGMCU_APB1_GRP1_CAN_STOP DBGMCU_APB1FZR1_DBG_CAN_STOP /*!< The bxCAN receive registers are frozen*/ +#if defined(CAN2) +#define LL_DBGMCU_APB1_GRP1_CAN2_STOP DBGMCU_APB1FZR1_DBG_CAN2_STOP /*!< The bxCAN2 receive registers are frozen*/ +#endif /* CAN2 */ +#define LL_DBGMCU_APB1_GRP1_LPTIM1_STOP DBGMCU_APB1FZR1_DBG_LPTIM1_STOP /*!< The counter clock of LPTIM1 is stopped when the core is halted*/ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_APB1_GRP2_STOP_IP DBGMCU APB1 GRP2 STOP IP + * @{ + */ +#if defined(I2C4) +#define LL_DBGMCU_APB1_GRP2_I2C4_STOP DBGMCU_APB1FZR2_DBG_I2C4_STOP /*!< The I2C4 SMBus timeout is frozen*/ +#endif /* I2C4 */ +#define LL_DBGMCU_APB1_GRP2_LPTIM2_STOP DBGMCU_APB1FZR2_DBG_LPTIM2_STOP /*!< The counter clock of LPTIM2 is stopped when the core is halted*/ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP_IP DBGMCU APB2 GRP1 STOP IP + * @{ + */ +#define LL_DBGMCU_APB2_GRP1_TIM1_STOP DBGMCU_APB2FZ_DBG_TIM1_STOP /*!< The counter clock of TIM1 is stopped when the core is halted*/ +#if defined(TIM8) +#define LL_DBGMCU_APB2_GRP1_TIM8_STOP DBGMCU_APB2FZ_DBG_TIM8_STOP /*!< The counter clock of TIM8 is stopped when the core is halted*/ +#endif /* TIM8 */ +#define LL_DBGMCU_APB2_GRP1_TIM15_STOP DBGMCU_APB2FZ_DBG_TIM15_STOP /*!< The counter clock of TIM15 is stopped when the core is halted*/ +#define LL_DBGMCU_APB2_GRP1_TIM16_STOP DBGMCU_APB2FZ_DBG_TIM16_STOP /*!< The counter clock of TIM16 is stopped when the core is halted*/ +#if defined(TIM17) +#define LL_DBGMCU_APB2_GRP1_TIM17_STOP DBGMCU_APB2FZ_DBG_TIM17_STOP /*!< The counter clock of TIM17 is stopped when the core is halted*/ +#endif /* TIM17 */ +/** + * @} + */ + +#if defined(VREFBUF) +/** @defgroup SYSTEM_LL_EC_VOLTAGE VREFBUF VOLTAGE + * @{ + */ +#define LL_VREFBUF_VOLTAGE_SCALE0 ((uint32_t)0x00000000) /*!< Voltage reference scale 0 (VREF_OUT1) */ +#define LL_VREFBUF_VOLTAGE_SCALE1 VREFBUF_CSR_VRS /*!< Voltage reference scale 1 (VREF_OUT2) */ +/** + * @} + */ +#endif /* VREFBUF */ + +/** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY + * @{ + */ +#define LL_FLASH_LATENCY_0 FLASH_ACR_LATENCY_0WS /*!< FLASH Zero wait state */ +#define LL_FLASH_LATENCY_1 FLASH_ACR_LATENCY_1WS /*!< FLASH One wait state */ +#define LL_FLASH_LATENCY_2 FLASH_ACR_LATENCY_2WS /*!< FLASH Two wait states */ +#define LL_FLASH_LATENCY_3 FLASH_ACR_LATENCY_3WS /*!< FLASH Three wait states */ +#define LL_FLASH_LATENCY_4 FLASH_ACR_LATENCY_4WS /*!< FLASH Four wait states */ +#if defined(FLASH_ACR_LATENCY_5WS) +#define LL_FLASH_LATENCY_5 FLASH_ACR_LATENCY_5WS /*!< FLASH five wait state */ +#define LL_FLASH_LATENCY_6 FLASH_ACR_LATENCY_6WS /*!< FLASH six wait state */ +#define LL_FLASH_LATENCY_7 FLASH_ACR_LATENCY_7WS /*!< FLASH seven wait states */ +#define LL_FLASH_LATENCY_8 FLASH_ACR_LATENCY_8WS /*!< FLASH eight wait states */ +#define LL_FLASH_LATENCY_9 FLASH_ACR_LATENCY_9WS /*!< FLASH nine wait states */ +#define LL_FLASH_LATENCY_10 FLASH_ACR_LATENCY_10WS /*!< FLASH ten wait states */ +#define LL_FLASH_LATENCY_11 FLASH_ACR_LATENCY_11WS /*!< FLASH eleven wait states */ +#define LL_FLASH_LATENCY_12 FLASH_ACR_LATENCY_12WS /*!< FLASH twelve wait states */ +#define LL_FLASH_LATENCY_13 FLASH_ACR_LATENCY_13WS /*!< FLASH thirteen wait states */ +#define LL_FLASH_LATENCY_14 FLASH_ACR_LATENCY_14WS /*!< FLASH fourteen wait states */ +#define LL_FLASH_LATENCY_15 FLASH_ACR_LATENCY_15WS /*!< FLASH fifteen wait states */ +#endif +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions + * @{ + */ + +/** @defgroup SYSTEM_LL_EF_SYSCFG SYSCFG + * @{ + */ + +/** + * @brief Set memory mapping at address 0x00000000 + * @rmtoll SYSCFG_MEMRMP MEM_MODE LL_SYSCFG_SetRemapMemory + * @param Memory This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_REMAP_FLASH + * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH + * @arg @ref LL_SYSCFG_REMAP_SRAM + * @arg @ref LL_SYSCFG_REMAP_FMC (*) + * @arg @ref LL_SYSCFG_REMAP_QUADSPI + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetRemapMemory(uint32_t Memory) +{ + MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE, Memory); +} + +/** + * @brief Get memory mapping at address 0x00000000 + * @rmtoll SYSCFG_MEMRMP MEM_MODE LL_SYSCFG_GetRemapMemory + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_REMAP_FLASH + * @arg @ref LL_SYSCFG_REMAP_SYSTEMFLASH + * @arg @ref LL_SYSCFG_REMAP_SRAM + * @arg @ref LL_SYSCFG_REMAP_FMC (*) + * @arg @ref LL_SYSCFG_REMAP_QUADSPI + * + * (*) value not defined in all devices + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetRemapMemory(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_MEM_MODE)); +} + +#if defined(SYSCFG_MEMRMP_FB_MODE) +/** + * @brief Select Flash bank mode (Bank flashed at 0x08000000) + * @rmtoll SYSCFG_MEMRMP FB_MODE LL_SYSCFG_SetFlashBankMode + * @param Bank This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_BANKMODE_BANK1 + * @arg @ref LL_SYSCFG_BANKMODE_BANK2 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetFlashBankMode(uint32_t Bank) +{ + MODIFY_REG(SYSCFG->MEMRMP, SYSCFG_MEMRMP_FB_MODE, Bank); +} + +/** + * @brief Get Flash bank mode (Bank flashed at 0x08000000) + * @rmtoll SYSCFG_MEMRMP FB_MODE LL_SYSCFG_GetFlashBankMode + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_BANKMODE_BANK1 + * @arg @ref LL_SYSCFG_BANKMODE_BANK2 + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetFlashBankMode(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->MEMRMP, SYSCFG_MEMRMP_FB_MODE)); +} +#endif /* SYSCFG_MEMRMP_FB_MODE */ + +/** + * @brief Firewall protection enabled + * @rmtoll SYSCFG_CFGR1 FWDIS LL_SYSCFG_EnableFirewall + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableFirewall(void) +{ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FWDIS); +} + +/** + * @brief Check if Firewall protection is enabled or not + * @rmtoll SYSCFG_CFGR1 FWDIS LL_SYSCFG_IsEnabledFirewall + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledFirewall(void) +{ + return !(READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FWDIS) == SYSCFG_CFGR1_FWDIS); +} + +/** + * @brief Enable I/O analog switch voltage booster. + * @note When voltage booster is enabled, I/O analog switches are supplied + * by a dedicated voltage booster, from VDD power domain. This is + * the recommended configuration with low VDDA voltage operation. + * @note The I/O analog switch voltage booster is relevant for peripherals + * using I/O in analog input: ADC, COMP, OPAMP. + * However, COMP and OPAMP inputs have a high impedance and + * voltage booster do not impact performance significantly. + * Therefore, the voltage booster is mainly intended for + * usage with ADC. + * @rmtoll SYSCFG_CFGR1 BOOSTEN LL_SYSCFG_EnableAnalogBooster + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableAnalogBooster(void) +{ + SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOSTEN); +} + +/** + * @brief Disable I/O analog switch voltage booster. + * @note When voltage booster is enabled, I/O analog switches are supplied + * by a dedicated voltage booster, from VDD power domain. This is + * the recommended configuration with low VDDA voltage operation. + * @note The I/O analog switch voltage booster is relevant for peripherals + * using I/O in analog input: ADC, COMP, OPAMP. + * However, COMP and OPAMP inputs have a high impedance and + * voltage booster do not impact performance significantly. + * Therefore, the voltage booster is mainly intended for + * usage with ADC. + * @rmtoll SYSCFG_CFGR1 BOOSTEN LL_SYSCFG_DisableAnalogBooster + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableAnalogBooster(void) +{ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_BOOSTEN); +} + +/** + * @brief Enable the I2C fast mode plus driving capability. + * @rmtoll SYSCFG_CFGR1 I2C_PBx_FMP LL_SYSCFG_EnableFastModePlus\n + * SYSCFG_CFGR1 I2Cx_FMP LL_SYSCFG_EnableFastModePlus + * @param ConfigFastModePlus This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableFastModePlus(uint32_t ConfigFastModePlus) +{ + SET_BIT(SYSCFG->CFGR1, ConfigFastModePlus); +} + +/** + * @brief Disable the I2C fast mode plus driving capability. + * @rmtoll SYSCFG_CFGR1 I2C_PBx_FMP LL_SYSCFG_DisableFastModePlus\n + * SYSCFG_CFGR1 I2Cx_FMP LL_SYSCFG_DisableFastModePlus + * @param ConfigFastModePlus This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB6 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB7 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB8 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_PB9 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C1 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C2 (*) + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C3 + * @arg @ref LL_SYSCFG_I2C_FASTMODEPLUS_I2C4 (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableFastModePlus(uint32_t ConfigFastModePlus) +{ + CLEAR_BIT(SYSCFG->CFGR1, ConfigFastModePlus); +} + +/** + * @brief Enable Floating Point Unit Invalid operation Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_0 LL_SYSCFG_EnableIT_FPU_IOC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_IOC(void) +{ + SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_0); +} + +/** + * @brief Enable Floating Point Unit Divide-by-zero Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_1 LL_SYSCFG_EnableIT_FPU_DZC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_DZC(void) +{ + SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_1); +} + +/** + * @brief Enable Floating Point Unit Underflow Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_2 LL_SYSCFG_EnableIT_FPU_UFC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_UFC(void) +{ + SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_2); +} + +/** + * @brief Enable Floating Point Unit Overflow Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_3 LL_SYSCFG_EnableIT_FPU_OFC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_OFC(void) +{ + SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_3); +} + +/** + * @brief Enable Floating Point Unit Input denormal Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_4 LL_SYSCFG_EnableIT_FPU_IDC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_IDC(void) +{ + SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_4); +} + +/** + * @brief Enable Floating Point Unit Inexact Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_5 LL_SYSCFG_EnableIT_FPU_IXC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableIT_FPU_IXC(void) +{ + SET_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_5); +} + +/** + * @brief Disable Floating Point Unit Invalid operation Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_0 LL_SYSCFG_DisableIT_FPU_IOC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_IOC(void) +{ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_0); +} + +/** + * @brief Disable Floating Point Unit Divide-by-zero Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_1 LL_SYSCFG_DisableIT_FPU_DZC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_DZC(void) +{ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_1); +} + +/** + * @brief Disable Floating Point Unit Underflow Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_2 LL_SYSCFG_DisableIT_FPU_UFC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_UFC(void) +{ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_2); +} + +/** + * @brief Disable Floating Point Unit Overflow Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_3 LL_SYSCFG_DisableIT_FPU_OFC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_OFC(void) +{ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_3); +} + +/** + * @brief Disable Floating Point Unit Input denormal Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_4 LL_SYSCFG_DisableIT_FPU_IDC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_IDC(void) +{ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_4); +} + +/** + * @brief Disable Floating Point Unit Inexact Interrupt + * @rmtoll SYSCFG_CFGR1 FPU_IE_5 LL_SYSCFG_DisableIT_FPU_IXC + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_DisableIT_FPU_IXC(void) +{ + CLEAR_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_5); +} + +/** + * @brief Check if Floating Point Unit Invalid operation Interrupt source is enabled or disabled. + * @rmtoll SYSCFG_CFGR1 FPU_IE_0 LL_SYSCFG_IsEnabledIT_FPU_IOC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_IOC(void) +{ + return (READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_0) == (SYSCFG_CFGR1_FPU_IE_0)); +} + +/** + * @brief Check if Floating Point Unit Divide-by-zero Interrupt source is enabled or disabled. + * @rmtoll SYSCFG_CFGR1 FPU_IE_1 LL_SYSCFG_IsEnabledIT_FPU_DZC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_DZC(void) +{ + return (READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_1) == (SYSCFG_CFGR1_FPU_IE_1)); +} + +/** + * @brief Check if Floating Point Unit Underflow Interrupt source is enabled or disabled. + * @rmtoll SYSCFG_CFGR1 FPU_IE_2 LL_SYSCFG_IsEnabledIT_FPU_UFC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_UFC(void) +{ + return (READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_2) == (SYSCFG_CFGR1_FPU_IE_2)); +} + +/** + * @brief Check if Floating Point Unit Overflow Interrupt source is enabled or disabled. + * @rmtoll SYSCFG_CFGR1 FPU_IE_3 LL_SYSCFG_IsEnabledIT_FPU_OFC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_OFC(void) +{ + return (READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_3) == (SYSCFG_CFGR1_FPU_IE_3)); +} + +/** + * @brief Check if Floating Point Unit Input denormal Interrupt source is enabled or disabled. + * @rmtoll SYSCFG_CFGR1 FPU_IE_4 LL_SYSCFG_IsEnabledIT_FPU_IDC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_IDC(void) +{ + return (READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_4) == (SYSCFG_CFGR1_FPU_IE_4)); +} + +/** + * @brief Check if Floating Point Unit Inexact Interrupt source is enabled or disabled. + * @rmtoll SYSCFG_CFGR1 FPU_IE_5 LL_SYSCFG_IsEnabledIT_FPU_IXC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsEnabledIT_FPU_IXC(void) +{ + return (READ_BIT(SYSCFG->CFGR1, SYSCFG_CFGR1_FPU_IE_5) == (SYSCFG_CFGR1_FPU_IE_5)); +} + +/** + * @brief Configure source input for the EXTI external interrupt. + * @rmtoll SYSCFG_EXTICR1 EXTIx LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR2 EXTIx LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR3 EXTIx LL_SYSCFG_SetEXTISource\n + * SYSCFG_EXTICR4 EXTIx LL_SYSCFG_SetEXTISource + * @param Port This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_PORTA + * @arg @ref LL_SYSCFG_EXTI_PORTB + * @arg @ref LL_SYSCFG_EXTI_PORTC + * @arg @ref LL_SYSCFG_EXTI_PORTD + * @arg @ref LL_SYSCFG_EXTI_PORTE + * @arg @ref LL_SYSCFG_EXTI_PORTF (*) + * @arg @ref LL_SYSCFG_EXTI_PORTG (*) + * @arg @ref LL_SYSCFG_EXTI_PORTH + * @arg @ref LL_SYSCFG_EXTI_PORTI (*) + * + * (*) value not defined in all devices + * @param Line This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_LINE0 + * @arg @ref LL_SYSCFG_EXTI_LINE1 + * @arg @ref LL_SYSCFG_EXTI_LINE2 + * @arg @ref LL_SYSCFG_EXTI_LINE3 + * @arg @ref LL_SYSCFG_EXTI_LINE4 + * @arg @ref LL_SYSCFG_EXTI_LINE5 + * @arg @ref LL_SYSCFG_EXTI_LINE6 + * @arg @ref LL_SYSCFG_EXTI_LINE7 + * @arg @ref LL_SYSCFG_EXTI_LINE8 + * @arg @ref LL_SYSCFG_EXTI_LINE9 + * @arg @ref LL_SYSCFG_EXTI_LINE10 + * @arg @ref LL_SYSCFG_EXTI_LINE11 + * @arg @ref LL_SYSCFG_EXTI_LINE12 + * @arg @ref LL_SYSCFG_EXTI_LINE13 + * @arg @ref LL_SYSCFG_EXTI_LINE14 + * @arg @ref LL_SYSCFG_EXTI_LINE15 + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetEXTISource(uint32_t Port, uint32_t Line) +{ + MODIFY_REG(SYSCFG->EXTICR[Line & 0xFFU], (Line >> 16U), Port << POSITION_VAL((Line >> 16U))); +} + +/** + * @brief Get the configured defined for specific EXTI Line + * @rmtoll SYSCFG_EXTICR1 EXTIx LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR2 EXTIx LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR3 EXTIx LL_SYSCFG_GetEXTISource\n + * SYSCFG_EXTICR4 EXTIx LL_SYSCFG_GetEXTISource + * @param Line This parameter can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_LINE0 + * @arg @ref LL_SYSCFG_EXTI_LINE1 + * @arg @ref LL_SYSCFG_EXTI_LINE2 + * @arg @ref LL_SYSCFG_EXTI_LINE3 + * @arg @ref LL_SYSCFG_EXTI_LINE4 + * @arg @ref LL_SYSCFG_EXTI_LINE5 + * @arg @ref LL_SYSCFG_EXTI_LINE6 + * @arg @ref LL_SYSCFG_EXTI_LINE7 + * @arg @ref LL_SYSCFG_EXTI_LINE8 + * @arg @ref LL_SYSCFG_EXTI_LINE9 + * @arg @ref LL_SYSCFG_EXTI_LINE10 + * @arg @ref LL_SYSCFG_EXTI_LINE11 + * @arg @ref LL_SYSCFG_EXTI_LINE12 + * @arg @ref LL_SYSCFG_EXTI_LINE13 + * @arg @ref LL_SYSCFG_EXTI_LINE14 + * @arg @ref LL_SYSCFG_EXTI_LINE15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSCFG_EXTI_PORTA + * @arg @ref LL_SYSCFG_EXTI_PORTB + * @arg @ref LL_SYSCFG_EXTI_PORTC + * @arg @ref LL_SYSCFG_EXTI_PORTD + * @arg @ref LL_SYSCFG_EXTI_PORTE + * @arg @ref LL_SYSCFG_EXTI_PORTF (*) + * @arg @ref LL_SYSCFG_EXTI_PORTG (*) + * @arg @ref LL_SYSCFG_EXTI_PORTH + * @arg @ref LL_SYSCFG_EXTI_PORTI (*) + * + * (*) value not defined in all devices + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetEXTISource(uint32_t Line) +{ + return (uint32_t)(READ_BIT(SYSCFG->EXTICR[Line & 0xFFU], (Line >> 16U)) >> POSITION_VAL(Line >> 16U)); +} + +/** + * @brief Enable SRAM2 Erase (starts a hardware SRAM2 erase operation. This bit is + * automatically cleared at the end of the SRAM2 erase operation.) + * @note This bit is write-protected: setting this bit is possible only after the + * correct key sequence is written in the SYSCFG_SKR register as described in + * the Reference Manual. + * @rmtoll SYSCFG_SCSR SRAM2ER LL_SYSCFG_EnableSRAM2Erase + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableSRAM2Erase(void) +{ + /* Starts a hardware SRAM2 erase operation*/ + SET_BIT(SYSCFG->SCSR, SYSCFG_SCSR_SRAM2ER); +} + +/** + * @brief Check if SRAM2 erase operation is on going + * @rmtoll SYSCFG_SCSR SRAM2BSY LL_SYSCFG_IsSRAM2EraseOngoing + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsSRAM2EraseOngoing(void) +{ + return (READ_BIT(SYSCFG->SCSR, SYSCFG_SCSR_SRAM2BSY) == (SYSCFG_SCSR_SRAM2BSY)); +} + +/** + * @brief Set connections to TIM1/8/15/16/17 Break inputs + * @rmtoll SYSCFG_CFGR2 CLL LL_SYSCFG_SetTIMBreakInputs\n + * SYSCFG_CFGR2 SPL LL_SYSCFG_SetTIMBreakInputs\n + * SYSCFG_CFGR2 PVDL LL_SYSCFG_SetTIMBreakInputs\n + * SYSCFG_CFGR2 ECCL LL_SYSCFG_SetTIMBreakInputs + * @param Break This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_TIMBREAK_ECC + * @arg @ref LL_SYSCFG_TIMBREAK_PVD + * @arg @ref LL_SYSCFG_TIMBREAK_SRAM2_PARITY + * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_SetTIMBreakInputs(uint32_t Break) +{ + MODIFY_REG(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL | SYSCFG_CFGR2_SPL | SYSCFG_CFGR2_PVDL | SYSCFG_CFGR2_ECCL, Break); +} + +/** + * @brief Get connections to TIM1/8/15/16/17 Break inputs + * @rmtoll SYSCFG_CFGR2 CLL LL_SYSCFG_GetTIMBreakInputs\n + * SYSCFG_CFGR2 SPL LL_SYSCFG_GetTIMBreakInputs\n + * SYSCFG_CFGR2 PVDL LL_SYSCFG_GetTIMBreakInputs\n + * SYSCFG_CFGR2 ECCL LL_SYSCFG_GetTIMBreakInputs + * @retval Returned value can be can be a combination of the following values: + * @arg @ref LL_SYSCFG_TIMBREAK_ECC + * @arg @ref LL_SYSCFG_TIMBREAK_PVD + * @arg @ref LL_SYSCFG_TIMBREAK_SRAM2_PARITY + * @arg @ref LL_SYSCFG_TIMBREAK_LOCKUP + */ +__STATIC_INLINE uint32_t LL_SYSCFG_GetTIMBreakInputs(void) +{ + return (uint32_t)(READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_CLL | SYSCFG_CFGR2_SPL | SYSCFG_CFGR2_PVDL | SYSCFG_CFGR2_ECCL)); +} + +/** + * @brief Check if SRAM2 parity error detected + * @rmtoll SYSCFG_CFGR2 SPF LL_SYSCFG_IsActiveFlag_SP + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSCFG_IsActiveFlag_SP(void) +{ + return (READ_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF) == (SYSCFG_CFGR2_SPF)); +} + +/** + * @brief Clear SRAM2 parity error flag + * @rmtoll SYSCFG_CFGR2 SPF LL_SYSCFG_ClearFlag_SP + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_ClearFlag_SP(void) +{ + SET_BIT(SYSCFG->CFGR2, SYSCFG_CFGR2_SPF); +} + +/** + * @brief Enable SRAM2 page write protection for Pages in range 0 to 31 + * @note Write protection is cleared only by a system reset + * @rmtoll SYSCFG_SWPR PxWP LL_SYSCFG_EnableSRAM2PageWRP_0_31 + * @param SRAM2WRP This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE0 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE1 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE2 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE3 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE4 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE5 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE6 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE7 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE8 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE9 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE10 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE11 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE12 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE13 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE14 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE15 + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE16 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE17 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE18 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE19 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE20 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE21 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE22 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE23 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE24 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE25 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE26 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE27 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE28 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE29 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE30 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE31 (*) + * + * (*) value not defined in all devices + * @retval None + */ +/* Legacy define */ +#define LL_SYSCFG_EnableSRAM2PageWRP LL_SYSCFG_EnableSRAM2PageWRP_0_31 +__STATIC_INLINE void LL_SYSCFG_EnableSRAM2PageWRP_0_31(uint32_t SRAM2WRP) +{ + SET_BIT(SYSCFG->SWPR, SRAM2WRP); +} + +#if defined(SYSCFG_SWPR2_PAGE63) +/** + * @brief Enable SRAM2 page write protection for Pages in range 32 to 63 + * @note Write protection is cleared only by a system reset + * @rmtoll SYSCFG_SWPR2 PxWP LL_SYSCFG_EnableSRAM2PageWRP_32_63 + * @param SRAM2WRP This parameter can be a combination of the following values: + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE32 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE33 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE34 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE35 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE36 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE37 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE38 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE39 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE40 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE41 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE42 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE43 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE44 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE45 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE46 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE47 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE48 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE49 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE50 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE51 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE52 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE53 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE54 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE55 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE56 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE57 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE58 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE59 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE60 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE61 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE62 (*) + * @arg @ref LL_SYSCFG_SRAM2WRP_PAGE63 (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_EnableSRAM2PageWRP_32_63(uint32_t SRAM2WRP) +{ + SET_BIT(SYSCFG->SWPR2, SRAM2WRP); +} +#endif /* SYSCFG_SWPR2_PAGE63 */ + +/** + * @brief SRAM2 page write protection lock prior to erase + * @rmtoll SYSCFG_SKR KEY LL_SYSCFG_LockSRAM2WRP + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_LockSRAM2WRP(void) +{ + /* Writing a wrong key reactivates the write protection */ + WRITE_REG(SYSCFG->SKR, 0x00); +} + +/** + * @brief SRAM2 page write protection unlock prior to erase + * @rmtoll SYSCFG_SKR KEY LL_SYSCFG_UnlockSRAM2WRP + * @retval None + */ +__STATIC_INLINE void LL_SYSCFG_UnlockSRAM2WRP(void) +{ + /* unlock the write protection of the SRAM2ER bit */ + WRITE_REG(SYSCFG->SKR, 0xCA); + WRITE_REG(SYSCFG->SKR, 0x53); +} + +/** + * @} + */ + + +/** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU + * @{ + */ + +/** + * @brief Return the device identifier + * @rmtoll DBGMCU_IDCODE DEV_ID LL_DBGMCU_GetDeviceID + * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF (ex: device ID is 0x6415) + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID)); +} + +/** + * @brief Return the device revision identifier + * @note This field indicates the revision of the device. + * @rmtoll DBGMCU_IDCODE REV_ID LL_DBGMCU_GetRevisionID + * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> DBGMCU_IDCODE_REV_ID_Pos); +} + +/** + * @brief Enable the Debug Module during SLEEP mode + * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_EnableDBGSleepMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGSleepMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Disable the Debug Module during SLEEP mode + * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_DisableDBGSleepMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGSleepMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Enable the Debug Module during STOP mode + * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_EnableDBGStopMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGStopMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Disable the Debug Module during STOP mode + * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_DisableDBGStopMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGStopMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Enable the Debug Module during STANDBY mode + * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_EnableDBGStandbyMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGStandbyMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Disable the Debug Module during STANDBY mode + * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_DisableDBGStandbyMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGStandbyMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Set Trace pin assignment control + * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_SetTracePinAssignment\n + * DBGMCU_CR TRACE_MODE LL_DBGMCU_SetTracePinAssignment + * @param PinAssignment This parameter can be one of the following values: + * @arg @ref LL_DBGMCU_TRACE_NONE + * @arg @ref LL_DBGMCU_TRACE_ASYNCH + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4 + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_SetTracePinAssignment(uint32_t PinAssignment) +{ + MODIFY_REG(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE, PinAssignment); +} + +/** + * @brief Get Trace pin assignment control + * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_GetTracePinAssignment\n + * DBGMCU_CR TRACE_MODE LL_DBGMCU_GetTracePinAssignment + * @retval Returned value can be one of the following values: + * @arg @ref LL_DBGMCU_TRACE_NONE + * @arg @ref LL_DBGMCU_TRACE_ASYNCH + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4 + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetTracePinAssignment(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE)); +} + +/** + * @brief Freeze APB1 peripherals (group1 peripherals) + * @rmtoll DBGMCU_APB1FZR1 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBGMCU->APB1FZR1, Periphs); +} + +/** + * @brief Freeze APB1 peripherals (group2 peripherals) + * @rmtoll DBGMCU_APB1FZR2 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP2_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP2_I2C4_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP2_LPTIM2_STOP + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP2_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBGMCU->APB1FZR2, Periphs); +} + +/** + * @brief Unfreeze APB1 peripherals (group1 peripherals) + * @rmtoll DBGMCU_APB1FZR1 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_LPTIM1_STOP + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBGMCU->APB1FZR1, Periphs); +} + +/** + * @brief Unfreeze APB1 peripherals (group2 peripherals) + * @rmtoll DBGMCU_APB1FZR2 DBG_xxxx_STOP LL_DBGMCU_APB1_GRP2_UnFreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP2_I2C4_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP2_LPTIM2_STOP + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP2_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBGMCU->APB1FZR2, Periphs); +} + +/** + * @brief Freeze APB2 peripherals + * @rmtoll DBGMCU_APB2FZ DBG_TIMx_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBGMCU->APB2FZ, Periphs); +} + +/** + * @brief Unfreeze APB2 peripherals + * @rmtoll DBGMCU_APB2FZ DBG_TIMx_STOP LL_DBGMCU_APB2_GRP1_UnFreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBGMCU->APB2FZ, Periphs); +} + +/** + * @} + */ + +#if defined(VREFBUF) +/** @defgroup SYSTEM_LL_EF_VREFBUF VREFBUF + * @{ + */ + +/** + * @brief Enable Internal voltage reference + * @rmtoll VREFBUF_CSR ENVR LL_VREFBUF_Enable + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_Enable(void) +{ + SET_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR); +} + +/** + * @brief Disable Internal voltage reference + * @rmtoll VREFBUF_CSR ENVR LL_VREFBUF_Disable + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_Disable(void) +{ + CLEAR_BIT(VREFBUF->CSR, VREFBUF_CSR_ENVR); +} + +/** + * @brief Enable high impedance (VREF+pin is high impedance) + * @rmtoll VREFBUF_CSR HIZ LL_VREFBUF_EnableHIZ + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_EnableHIZ(void) +{ + SET_BIT(VREFBUF->CSR, VREFBUF_CSR_HIZ); +} + +/** + * @brief Disable high impedance (VREF+pin is internally connected to the voltage reference buffer output) + * @rmtoll VREFBUF_CSR HIZ LL_VREFBUF_DisableHIZ + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_DisableHIZ(void) +{ + CLEAR_BIT(VREFBUF->CSR, VREFBUF_CSR_HIZ); +} + +/** + * @brief Set the Voltage reference scale + * @rmtoll VREFBUF_CSR VRS LL_VREFBUF_SetVoltageScaling + * @param Scale This parameter can be one of the following values: + * @arg @ref LL_VREFBUF_VOLTAGE_SCALE0 + * @arg @ref LL_VREFBUF_VOLTAGE_SCALE1 + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_SetVoltageScaling(uint32_t Scale) +{ + MODIFY_REG(VREFBUF->CSR, VREFBUF_CSR_VRS, Scale); +} + +/** + * @brief Get the Voltage reference scale + * @rmtoll VREFBUF_CSR VRS LL_VREFBUF_GetVoltageScaling + * @retval Returned value can be one of the following values: + * @arg @ref LL_VREFBUF_VOLTAGE_SCALE0 + * @arg @ref LL_VREFBUF_VOLTAGE_SCALE1 + */ +__STATIC_INLINE uint32_t LL_VREFBUF_GetVoltageScaling(void) +{ + return (uint32_t)(READ_BIT(VREFBUF->CSR, VREFBUF_CSR_VRS)); +} + +/** + * @brief Check if Voltage reference buffer is ready + * @rmtoll VREFBUF_CSR VRR LL_VREFBUF_IsVREFReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_VREFBUF_IsVREFReady(void) +{ + return (READ_BIT(VREFBUF->CSR, VREFBUF_CSR_VRR) == (VREFBUF_CSR_VRR)); +} + +/** + * @brief Get the trimming code for VREFBUF calibration + * @rmtoll VREFBUF_CCR TRIM LL_VREFBUF_GetTrimming + * @retval Between 0 and 0x3F + */ +__STATIC_INLINE uint32_t LL_VREFBUF_GetTrimming(void) +{ + return (uint32_t)(READ_BIT(VREFBUF->CCR, VREFBUF_CCR_TRIM)); +} + +/** + * @brief Set the trimming code for VREFBUF calibration (Tune the internal reference buffer voltage) + * @rmtoll VREFBUF_CCR TRIM LL_VREFBUF_SetTrimming + * @param Value Between 0 and 0x3F + * @retval None + */ +__STATIC_INLINE void LL_VREFBUF_SetTrimming(uint32_t Value) +{ + WRITE_REG(VREFBUF->CCR, Value); +} + +/** + * @} + */ +#endif /* VREFBUF */ + +/** @defgroup SYSTEM_LL_EF_FLASH FLASH + * @{ + */ + +/** + * @brief Set FLASH Latency + * @rmtoll FLASH_ACR LATENCY LL_FLASH_SetLatency + * @param Latency This parameter can be one of the following values: + * @arg @ref LL_FLASH_LATENCY_0 + * @arg @ref LL_FLASH_LATENCY_1 + * @arg @ref LL_FLASH_LATENCY_2 + * @arg @ref LL_FLASH_LATENCY_3 + * @arg @ref LL_FLASH_LATENCY_4 + * @arg @ref LL_FLASH_LATENCY_5 (*) + * @arg @ref LL_FLASH_LATENCY_6 (*) + * @arg @ref LL_FLASH_LATENCY_7 (*) + * @arg @ref LL_FLASH_LATENCY_8 (*) + * @arg @ref LL_FLASH_LATENCY_9 (*) + * @arg @ref LL_FLASH_LATENCY_10 (*) + * @arg @ref LL_FLASH_LATENCY_11 (*) + * @arg @ref LL_FLASH_LATENCY_12 (*) + * @arg @ref LL_FLASH_LATENCY_13 (*) + * @arg @ref LL_FLASH_LATENCY_14 (*) + * @arg @ref LL_FLASH_LATENCY_15 (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency) +{ + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency); +} + +/** + * @brief Get FLASH Latency + * @rmtoll FLASH_ACR LATENCY LL_FLASH_GetLatency + * @retval Returned value can be one of the following values: + * @arg @ref LL_FLASH_LATENCY_0 + * @arg @ref LL_FLASH_LATENCY_1 + * @arg @ref LL_FLASH_LATENCY_2 + * @arg @ref LL_FLASH_LATENCY_3 + * @arg @ref LL_FLASH_LATENCY_4 + * @arg @ref LL_FLASH_LATENCY_5 (*) + * @arg @ref LL_FLASH_LATENCY_6 (*) + * @arg @ref LL_FLASH_LATENCY_7 (*) + * @arg @ref LL_FLASH_LATENCY_8 (*) + * @arg @ref LL_FLASH_LATENCY_9 (*) + * @arg @ref LL_FLASH_LATENCY_10 (*) + * @arg @ref LL_FLASH_LATENCY_11 (*) + * @arg @ref LL_FLASH_LATENCY_12 (*) + * @arg @ref LL_FLASH_LATENCY_13 (*) + * @arg @ref LL_FLASH_LATENCY_14 (*) + * @arg @ref LL_FLASH_LATENCY_15 (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_FLASH_GetLatency(void) +{ + return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY)); +} + +/** + * @brief Enable Prefetch + * @rmtoll FLASH_ACR PRFTEN LL_FLASH_EnablePrefetch + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnablePrefetch(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_PRFTEN); +} + +/** + * @brief Disable Prefetch + * @rmtoll FLASH_ACR PRFTEN LL_FLASH_DisablePrefetch + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisablePrefetch(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_PRFTEN); +} + +/** + * @brief Check if Prefetch buffer is enabled + * @rmtoll FLASH_ACR PRFTEN LL_FLASH_IsPrefetchEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_FLASH_IsPrefetchEnabled(void) +{ + return (READ_BIT(FLASH->ACR, FLASH_ACR_PRFTEN) == (FLASH_ACR_PRFTEN)); +} + +/** + * @brief Enable Instruction cache + * @rmtoll FLASH_ACR ICEN LL_FLASH_EnableInstCache + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableInstCache(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_ICEN); +} + +/** + * @brief Disable Instruction cache + * @rmtoll FLASH_ACR ICEN LL_FLASH_DisableInstCache + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableInstCache(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_ICEN); +} + +/** + * @brief Enable Data cache + * @rmtoll FLASH_ACR DCEN LL_FLASH_EnableDataCache + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableDataCache(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_DCEN); +} + +/** + * @brief Disable Data cache + * @rmtoll FLASH_ACR DCEN LL_FLASH_DisableDataCache + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableDataCache(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_DCEN); +} + +/** + * @brief Enable Instruction cache reset + * @note bit can be written only when the instruction cache is disabled + * @rmtoll FLASH_ACR ICRST LL_FLASH_EnableInstCacheReset + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableInstCacheReset(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_ICRST); +} + +/** + * @brief Disable Instruction cache reset + * @rmtoll FLASH_ACR ICRST LL_FLASH_DisableInstCacheReset + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableInstCacheReset(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_ICRST); +} + +/** + * @brief Enable Data cache reset + * @note bit can be written only when the data cache is disabled + * @rmtoll FLASH_ACR DCRST LL_FLASH_EnableDataCacheReset + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableDataCacheReset(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_DCRST); +} + +/** + * @brief Disable Data cache reset + * @rmtoll FLASH_ACR DCRST LL_FLASH_DisableDataCacheReset + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableDataCacheReset(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_DCRST); +} + +/** + * @brief Enable Flash Power-down mode during run mode or Low-power run mode + * @note Flash memory can be put in power-down mode only when the code is executed + * from RAM + * @note Flash must not be accessed when power down is enabled + * @note Flash must not be put in power-down while a program or an erase operation + * is on-going + * @rmtoll FLASH_ACR RUN_PD LL_FLASH_EnableRunPowerDown\n + * FLASH_PDKEYR PDKEY1 LL_FLASH_EnableRunPowerDown\n + * FLASH_PDKEYR PDKEY2 LL_FLASH_EnableRunPowerDown + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableRunPowerDown(void) +{ + /* Following values must be written consecutively to unlock the RUN_PD bit in + FLASH_ACR */ + WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY1); + WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY2); + SET_BIT(FLASH->ACR, FLASH_ACR_RUN_PD); +} + +/** + * @brief Disable Flash Power-down mode during run mode or Low-power run mode + * @rmtoll FLASH_ACR RUN_PD LL_FLASH_DisableRunPowerDown\n + * FLASH_PDKEYR PDKEY1 LL_FLASH_DisableRunPowerDown\n + * FLASH_PDKEYR PDKEY2 LL_FLASH_DisableRunPowerDown + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableRunPowerDown(void) +{ + /* Following values must be written consecutively to unlock the RUN_PD bit in + FLASH_ACR */ + WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY1); + WRITE_REG(FLASH->PDKEYR, FLASH_PDKEY2); + CLEAR_BIT(FLASH->ACR, FLASH_ACR_RUN_PD); +} + +/** + * @brief Enable Flash Power-down mode during Sleep or Low-power sleep mode + * @note Flash must not be put in power-down while a program or an erase operation + * is on-going + * @rmtoll FLASH_ACR SLEEP_PD LL_FLASH_EnableSleepPowerDown + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableSleepPowerDown(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD); +} + +/** + * @brief Disable Flash Power-down mode during Sleep or Low-power sleep mode + * @rmtoll FLASH_ACR SLEEP_PD LL_FLASH_DisableSleepPowerDown + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableSleepPowerDown(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_SLEEP_PD); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (FLASH) || defined (SYSCFG) || defined (DBGMCU) || defined (VREFBUF) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_SYSTEM_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_utils.h b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_utils.h new file mode 100644 index 0000000..eedac72 --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Inc/stm32l4xx_ll_utils.h @@ -0,0 +1,330 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_utils.h + * @author MCD Application Team + * @brief Header file of UTILS LL module. + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL UTILS driver contains a set of generic APIs that can be + used by user: + (+) Device electronic signature + (+) Timing functions + (+) PLL configuration functions + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32L4xx_LL_UTILS_H +#define STM32L4xx_LL_UTILS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +/** @defgroup UTILS_LL UTILS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Constants UTILS Private Constants + * @{ + */ + +/* Max delay can be used in LL_mDelay */ +#define LL_MAX_DELAY 0xFFFFFFFFU + +/** + * @brief Unique device ID register base address + */ +#define UID_BASE_ADDRESS UID_BASE + +/** + * @brief Flash size data register base address + */ +#define FLASHSIZE_BASE_ADDRESS FLASHSIZE_BASE + +/** + * @brief Package data register base address + */ +#define PACKAGE_BASE_ADDRESS PACKAGE_BASE + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Macros UTILS Private Macros + * @{ + */ +/** + * @} + */ +/* Exported types ------------------------------------------------------------*/ +/** @defgroup UTILS_LL_ES_INIT UTILS Exported structures + * @{ + */ +/** + * @brief UTILS PLL structure definition + */ +typedef struct +{ + uint32_t PLLM; /*!< Division factor for PLL VCO input clock. + This parameter can be a value of @ref RCC_LL_EC_PLLM_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + + uint32_t PLLN; /*!< Multiplication factor for PLL VCO output clock. + This parameter must be a number between Min_Data = 8 and Max_Data = 86 + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + + uint32_t PLLR; /*!< Division for the main system clock. + This parameter can be a value of @ref RCC_LL_EC_PLLR_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ +} LL_UTILS_PLLInitTypeDef; + +/** + * @brief UTILS System, AHB and APB buses clock configuration structure definition + */ +typedef struct +{ + uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK). + This parameter can be a value of @ref RCC_LL_EC_SYSCLK_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAHBPrescaler(). */ + + uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_LL_EC_APB1_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAPB1Prescaler(). */ + + uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_LL_EC_APB2_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAPB2Prescaler(). */ + +} LL_UTILS_ClkInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup UTILS_LL_Exported_Constants UTILS Exported Constants + * @{ + */ + +/** @defgroup UTILS_EC_HSE_BYPASS HSE Bypass activation + * @{ + */ +#define LL_UTILS_HSEBYPASS_OFF 0x00000000U /*!< HSE Bypass is not enabled */ +#define LL_UTILS_HSEBYPASS_ON 0x00000001U /*!< HSE Bypass is enabled */ +/** + * @} + */ + +/** @defgroup UTILS_EC_PACKAGETYPE PACKAGE TYPE + * @{ + */ +#define LL_UTILS_PACKAGETYPE_LQFP64 0x00000000U /*!< LQFP64 package type */ +#define LL_UTILS_PACKAGETYPE_WLCSP64 0x00000001U /*!< WLCSP64 package type */ +#define LL_UTILS_PACKAGETYPE_LQFP100 0x00000002U /*!< LQFP100 package type */ +#define LL_UTILS_PACKAGETYPE_BGA132 0x00000003U /*!< BGA132 package type */ +#define LL_UTILS_PACKAGETYPE_LQFP144_CSP72 0x00000004U /*!< LQFP144, WLCSP81 or WLCSP72 package type */ +#define LL_UTILS_PACKAGETYPE_UFQFPN32 0x00000008U /*!< UFQFPN32 package type */ +#define LL_UTILS_PACKAGETYPE_UFQFPN48 0x0000000AU /*!< UFQFPN48 package type */ +#define LL_UTILS_PACKAGETYPE_LQFP48 0x0000000BU /*!< LQFP48 package type */ +#define LL_UTILS_PACKAGETYPE_WLCSP49 0x0000000CU /*!< WLCSP49 package type */ +#define LL_UTILS_PACKAGETYPE_UFBGA64 0x0000000DU /*!< UFBGA64 package type */ +#define LL_UTILS_PACKAGETYPE_UFBGA100 0x0000000EU /*!< UFBGA100 package type */ +#define LL_UTILS_PACKAGETYPE_UFBGA169_CSP115 0x00000010U /*!< UFBGA169 or WLCSP115 package type */ +#define LL_UTILS_PACKAGETYPE_LQFP100_DSI 0x00000012U /*!< LQFP100 with DSI package type */ +#define LL_UTILS_PACKAGETYPE_WLCSP144_DSI 0x00000013U /*!< WLCSP144 with DSI package type */ +#define LL_UTILS_PACKAGETYPE_UFBGA144_DSI 0x00000013U /*!< UFBGA144 with DSI package type */ +#define LL_UTILS_PACKAGETYPE_UFBGA169_DSI 0x00000014U /*!< UFBGA169 with DSI package type */ +#define LL_UTILS_PACKAGETYPE_LQFP144_DSI 0x00000015U /*!< LQFP144 with DSI package type */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup UTILS_LL_Exported_Functions UTILS Exported Functions + * @{ + */ + +/** @defgroup UTILS_EF_DEVICE_ELECTRONIC_SIGNATURE DEVICE ELECTRONIC SIGNATURE + * @{ + */ + +/** + * @brief Get Word0 of the unique device identifier (UID based on 96 bits) + * @retval UID[31:0]: X and Y coordinates on the wafer expressed in BCD format + */ +__STATIC_INLINE uint32_t LL_GetUID_Word0(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)UID_BASE_ADDRESS))); +} + +/** + * @brief Get Word1 of the unique device identifier (UID based on 96 bits) + * @retval UID[63:32]: Wafer number (UID[39:32]) & LOT_NUM[23:0] (UID[63:40]) + */ +__STATIC_INLINE uint32_t LL_GetUID_Word1(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 4U)))); +} + +/** + * @brief Get Word2 of the unique device identifier (UID based on 96 bits) + * @retval UID[95:64]: Lot number (ASCII encoded) - LOT_NUM[55:24] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word2(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 8U)))); +} + +/** + * @brief Get Flash memory size + * @note This bitfield indicates the size of the device Flash memory expressed in + * Kbytes. As an example, 0x040 corresponds to 64 Kbytes. + * @retval FLASH_SIZE[15:0]: Flash memory size + */ +__STATIC_INLINE uint32_t LL_GetFlashSize(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)FLASHSIZE_BASE_ADDRESS)) & 0xFFFFU); +} + +/** + * @brief Get Package type + * @retval Returned value can be one of the following values: + * @arg @ref LL_UTILS_PACKAGETYPE_LQFP64 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_LQFP100 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_BGA132 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_LQFP144_CSP72 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_UFQFPN32 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_UFQFPN48 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_LQFP48 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_WLCSP49 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_UFBGA64 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_UFBGA100 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_UFBGA169 (*) + * @arg @ref LL_UTILS_PACKAGETYPE_LQFP100_DSI (*) + * @arg @ref LL_UTILS_PACKAGETYPE_WLCSP144_DSI (*) + * @arg @ref LL_UTILS_PACKAGETYPE_UFBGA144_DSI (*) + * @arg @ref LL_UTILS_PACKAGETYPE_UFBGA169_DSI (*) + * @arg @ref LL_UTILS_PACKAGETYPE_LQFP144_DSI (*) + * + * (*) value not defined in all devices. + */ +__STATIC_INLINE uint32_t LL_GetPackageType(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)PACKAGE_BASE_ADDRESS)) & 0x1FU); +} + +/** + * @} + */ + +/** @defgroup UTILS_LL_EF_DELAY DELAY + * @{ + */ + +/** + * @brief This function configures the Cortex-M SysTick source of the time base. + * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro) + * @note When a RTOS is used, it is recommended to avoid changing the SysTick + * configuration by calling this function, for a delay use rather osDelay RTOS service. + * @param Ticks Number of ticks + * @retval None + */ +__STATIC_INLINE void LL_InitTick(uint32_t HCLKFrequency, uint32_t Ticks) +{ + /* Configure the SysTick to have interrupt in 1ms time base */ + SysTick->LOAD = (uint32_t)((HCLKFrequency / Ticks) - 1UL); /* set reload register */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable the Systick Timer */ +} + +void LL_Init1msTick(uint32_t HCLKFrequency); +void LL_mDelay(uint32_t Delay); + +/** + * @} + */ + +/** @defgroup UTILS_EF_SYSTEM SYSTEM + * @{ + */ + +void LL_SetSystemCoreClock(uint32_t HCLKFrequency); +ErrorStatus LL_SetFlashLatency(uint32_t HCLKFrequency); +ErrorStatus LL_PLL_ConfigSystemClock_MSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32L4xx_LL_UTILS_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.c b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.c new file mode 100644 index 0000000..5c52247 --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_exti.c @@ -0,0 +1,290 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_exti.c + * @author MCD Application Team + * @brief EXTI LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx_ll_exti.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined (EXTI) + +/** @defgroup EXTI_LL EXTI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup EXTI_LL_Private_Macros + * @{ + */ + +#define IS_LL_EXTI_LINE_0_31(__VALUE__) (((__VALUE__) & ~LL_EXTI_LINE_ALL_0_31) == 0x00000000U) +#define IS_LL_EXTI_LINE_32_63(__VALUE__) (((__VALUE__) & ~LL_EXTI_LINE_ALL_32_63) == 0x00000000U) + +#define IS_LL_EXTI_MODE(__VALUE__) (((__VALUE__) == LL_EXTI_MODE_IT) \ + || ((__VALUE__) == LL_EXTI_MODE_EVENT) \ + || ((__VALUE__) == LL_EXTI_MODE_IT_EVENT)) + + +#define IS_LL_EXTI_TRIGGER(__VALUE__) (((__VALUE__) == LL_EXTI_TRIGGER_NONE) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_RISING) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_FALLING) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_RISING_FALLING)) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup EXTI_LL_Exported_Functions + * @{ + */ + +/** @addtogroup EXTI_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the EXTI registers to their default reset values. + * @retval An ErrorStatus enumeration value: + * - 0x00: EXTI registers are de-initialized + */ +uint32_t LL_EXTI_DeInit(void) +{ + /* Interrupt mask register set to default reset values */ + LL_EXTI_WriteReg(IMR1, 0xFF820000U); + /* Event mask register set to default reset values */ + LL_EXTI_WriteReg(EMR1, 0x00000000U); + /* Rising Trigger selection register set to default reset values */ + LL_EXTI_WriteReg(RTSR1, 0x00000000U); + /* Falling Trigger selection register set to default reset values */ + LL_EXTI_WriteReg(FTSR1, 0x00000000U); + /* Software interrupt event register set to default reset values */ + LL_EXTI_WriteReg(SWIER1, 0x00000000U); + /* Pending register clear */ + LL_EXTI_WriteReg(PR1, 0x007DFFFFU); + + /* Interrupt mask register 2 set to default reset values */ +#if defined(LL_EXTI_LINE_40) + LL_EXTI_WriteReg(IMR2, 0x00000187U); +#else + LL_EXTI_WriteReg(IMR2, 0x00000087U); +#endif + /* Event mask register 2 set to default reset values */ + LL_EXTI_WriteReg(EMR2, 0x00000000U); + /* Rising Trigger selection register 2 set to default reset values */ + LL_EXTI_WriteReg(RTSR2, 0x00000000U); + /* Falling Trigger selection register 2 set to default reset values */ + LL_EXTI_WriteReg(FTSR2, 0x00000000U); + /* Software interrupt event register 2 set to default reset values */ + LL_EXTI_WriteReg(SWIER2, 0x00000000U); + /* Pending register 2 clear */ + LL_EXTI_WriteReg(PR2, 0x00000078U); + + return 0x00u; +} + +/** + * @brief Initialize the EXTI registers according to the specified parameters in EXTI_InitStruct. + * @param EXTI_InitStruct pointer to a @ref LL_EXTI_InitTypeDef structure. + * @retval An ErrorStatus enumeration value: + * - 0x00: EXTI registers are initialized + * - any other calue : wrong configuration + */ +uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct) +{ + uint32_t status = 0x00u; + + /* Check the parameters */ + assert_param(IS_LL_EXTI_LINE_0_31(EXTI_InitStruct->Line_0_31)); + assert_param(IS_LL_EXTI_LINE_32_63(EXTI_InitStruct->Line_32_63)); + assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->LineCommand)); + assert_param(IS_LL_EXTI_MODE(EXTI_InitStruct->Mode)); + + /* ENABLE LineCommand */ + if (EXTI_InitStruct->LineCommand != DISABLE) + { + assert_param(IS_LL_EXTI_TRIGGER(EXTI_InitStruct->Trigger)); + + /* Configure EXTI Lines in range from 0 to 31 */ + if (EXTI_InitStruct->Line_0_31 != LL_EXTI_LINE_NONE) + { + switch (EXTI_InitStruct->Mode) + { + case LL_EXTI_MODE_IT: + /* First Disable Event on provided Lines */ + LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable IT on provided Lines */ + LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_MODE_EVENT: + /* First Disable IT on provided Lines */ + LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Event on provided Lines */ + LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_MODE_IT_EVENT: + /* Directly Enable IT & Event on provided Lines */ + LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + break; + default: + status = 0x01u; + break; + } + if (EXTI_InitStruct->Trigger != LL_EXTI_TRIGGER_NONE) + { + switch (EXTI_InitStruct->Trigger) + { + case LL_EXTI_TRIGGER_RISING: + /* First Disable Falling Trigger on provided Lines */ + LL_EXTI_DisableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Rising Trigger on provided Lines */ + LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_TRIGGER_FALLING: + /* First Disable Rising Trigger on provided Lines */ + LL_EXTI_DisableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Falling Trigger on provided Lines */ + LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_TRIGGER_RISING_FALLING: + LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + default: + status |= 0x02u; + break; + } + } + } + /* Configure EXTI Lines in range from 32 to 63 */ + if (EXTI_InitStruct->Line_32_63 != LL_EXTI_LINE_NONE) + { + switch (EXTI_InitStruct->Mode) + { + case LL_EXTI_MODE_IT: + /* First Disable Event on provided Lines */ + LL_EXTI_DisableEvent_32_63(EXTI_InitStruct->Line_32_63); + /* Then Enable IT on provided Lines */ + LL_EXTI_EnableIT_32_63(EXTI_InitStruct->Line_32_63); + break; + case LL_EXTI_MODE_EVENT: + /* First Disable IT on provided Lines */ + LL_EXTI_DisableIT_32_63(EXTI_InitStruct->Line_32_63); + /* Then Enable Event on provided Lines */ + LL_EXTI_EnableEvent_32_63(EXTI_InitStruct->Line_32_63); + break; + case LL_EXTI_MODE_IT_EVENT: + /* Directly Enable IT & Event on provided Lines */ + LL_EXTI_EnableIT_32_63(EXTI_InitStruct->Line_32_63); + LL_EXTI_EnableEvent_32_63(EXTI_InitStruct->Line_32_63); + break; + default: + status |= 0x04u; + break; + } + if (EXTI_InitStruct->Trigger != LL_EXTI_TRIGGER_NONE) + { + switch (EXTI_InitStruct->Trigger) + { + case LL_EXTI_TRIGGER_RISING: + /* First Disable Falling Trigger on provided Lines */ + LL_EXTI_DisableFallingTrig_32_63(EXTI_InitStruct->Line_32_63); + /* Then Enable IT on provided Lines */ + LL_EXTI_EnableRisingTrig_32_63(EXTI_InitStruct->Line_32_63); + break; + case LL_EXTI_TRIGGER_FALLING: + /* First Disable Rising Trigger on provided Lines */ + LL_EXTI_DisableRisingTrig_32_63(EXTI_InitStruct->Line_32_63); + /* Then Enable Falling Trigger on provided Lines */ + LL_EXTI_EnableFallingTrig_32_63(EXTI_InitStruct->Line_32_63); + break; + case LL_EXTI_TRIGGER_RISING_FALLING: + LL_EXTI_EnableRisingTrig_32_63(EXTI_InitStruct->Line_32_63); + LL_EXTI_EnableFallingTrig_32_63(EXTI_InitStruct->Line_32_63); + break; + default: + status = ERROR; + break; + } + } + } + } + /* DISABLE LineCommand */ + else + { + /* De-configure EXTI Lines in range from 0 to 31 */ + LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31); + /* De-configure EXTI Lines in range from 32 to 63 */ + LL_EXTI_DisableIT_32_63(EXTI_InitStruct->Line_32_63); + LL_EXTI_DisableEvent_32_63(EXTI_InitStruct->Line_32_63); + } + + return status; +} + +/** + * @brief Set each @ref LL_EXTI_InitTypeDef field to default value. + * @param EXTI_InitStruct Pointer to a @ref LL_EXTI_InitTypeDef structure. + * @retval None + */ +void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct) +{ + EXTI_InitStruct->Line_0_31 = LL_EXTI_LINE_NONE; + EXTI_InitStruct->Line_32_63 = LL_EXTI_LINE_NONE; + EXTI_InitStruct->LineCommand = DISABLE; + EXTI_InitStruct->Mode = LL_EXTI_MODE_IT; + EXTI_InitStruct->Trigger = LL_EXTI_TRIGGER_FALLING; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (EXTI) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.c b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.c new file mode 100644 index 0000000..b1aef8d --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_gpio.c @@ -0,0 +1,298 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_gpio.c + * @author MCD Application Team + * @brief GPIO LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx_ll_gpio.h" +#include "stm32l4xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) + +/** @addtogroup GPIO_LL + * @{ + */ +/** MISRA C:2012 deviation rule has been granted for following rules: + * Rule-12.2 - Medium: RHS argument is in interval [0,INF] which is out of + * range of the shift operator in following API : + * LL_GPIO_Init + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup GPIO_LL_Private_Macros + * @{ + */ +#define IS_LL_GPIO_PIN(__VALUE__) (((0x00u) < (__VALUE__)) && ((__VALUE__) <= (LL_GPIO_PIN_ALL))) + +#define IS_LL_GPIO_MODE(__VALUE__) (((__VALUE__) == LL_GPIO_MODE_INPUT) ||\ + ((__VALUE__) == LL_GPIO_MODE_OUTPUT) ||\ + ((__VALUE__) == LL_GPIO_MODE_ALTERNATE) ||\ + ((__VALUE__) == LL_GPIO_MODE_ANALOG)) + +#define IS_LL_GPIO_OUTPUT_TYPE(__VALUE__) (((__VALUE__) == LL_GPIO_OUTPUT_PUSHPULL) ||\ + ((__VALUE__) == LL_GPIO_OUTPUT_OPENDRAIN)) + +#define IS_LL_GPIO_SPEED(__VALUE__) (((__VALUE__) == LL_GPIO_SPEED_FREQ_LOW) ||\ + ((__VALUE__) == LL_GPIO_SPEED_FREQ_MEDIUM) ||\ + ((__VALUE__) == LL_GPIO_SPEED_FREQ_HIGH) ||\ + ((__VALUE__) == LL_GPIO_SPEED_FREQ_VERY_HIGH)) + +#define IS_LL_GPIO_PULL(__VALUE__) (((__VALUE__) == LL_GPIO_PULL_NO) ||\ + ((__VALUE__) == LL_GPIO_PULL_UP) ||\ + ((__VALUE__) == LL_GPIO_PULL_DOWN)) + +#define IS_LL_GPIO_ALTERNATE(__VALUE__) (((__VALUE__) == LL_GPIO_AF_0 ) ||\ + ((__VALUE__) == LL_GPIO_AF_1 ) ||\ + ((__VALUE__) == LL_GPIO_AF_2 ) ||\ + ((__VALUE__) == LL_GPIO_AF_3 ) ||\ + ((__VALUE__) == LL_GPIO_AF_4 ) ||\ + ((__VALUE__) == LL_GPIO_AF_5 ) ||\ + ((__VALUE__) == LL_GPIO_AF_6 ) ||\ + ((__VALUE__) == LL_GPIO_AF_7 ) ||\ + ((__VALUE__) == LL_GPIO_AF_8 ) ||\ + ((__VALUE__) == LL_GPIO_AF_9 ) ||\ + ((__VALUE__) == LL_GPIO_AF_10 ) ||\ + ((__VALUE__) == LL_GPIO_AF_11 ) ||\ + ((__VALUE__) == LL_GPIO_AF_12 ) ||\ + ((__VALUE__) == LL_GPIO_AF_13 ) ||\ + ((__VALUE__) == LL_GPIO_AF_14 ) ||\ + ((__VALUE__) == LL_GPIO_AF_15 )) +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup GPIO_LL_Exported_Functions + * @{ + */ + +/** @addtogroup GPIO_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize GPIO registers (Registers restored to their default values). + * @param GPIOx GPIO Port + * @retval An ErrorStatus enumeration value: + * - SUCCESS: GPIO registers are de-initialized + * - ERROR: Wrong GPIO Port + */ +ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx) +{ + ErrorStatus status = SUCCESS; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + + /* Force and Release reset on clock of GPIOx Port */ + if (GPIOx == GPIOA) + { + LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_GPIOA); + LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_GPIOA); + } + else if (GPIOx == GPIOB) + { + LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_GPIOB); + LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_GPIOB); + } + else if (GPIOx == GPIOC) + { + LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_GPIOC); + LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_GPIOC); + } +#if defined(GPIOD) + else if (GPIOx == GPIOD) + { + LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_GPIOD); + LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_GPIOD); + } +#endif /* GPIOD */ +#if defined(GPIOE) + else if (GPIOx == GPIOE) + { + LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_GPIOE); + LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_GPIOE); + } +#endif /* GPIOE */ +#if defined(GPIOF) + else if (GPIOx == GPIOF) + { + LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_GPIOF); + LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_GPIOF); + } +#endif /* GPIOF */ +#if defined(GPIOG) + else if (GPIOx == GPIOG) + { + LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_GPIOG); + LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_GPIOG); + } +#endif /* GPIOG */ +#if defined(GPIOH) + else if (GPIOx == GPIOH) + { + LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_GPIOH); + LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_GPIOH); + } +#endif /* GPIOH */ +#if defined(GPIOI) + else if (GPIOx == GPIOI) + { + LL_AHB2_GRP1_ForceReset(LL_AHB2_GRP1_PERIPH_GPIOI); + LL_AHB2_GRP1_ReleaseReset(LL_AHB2_GRP1_PERIPH_GPIOI); + } +#endif /* GPIOI */ + else + { + status = ERROR; + } + + return (status); +} + +/** + * @brief Initialize GPIO registers according to the specified parameters in GPIO_InitStruct. + * @param GPIOx GPIO Port + * @param GPIO_InitStruct pointer to a @ref LL_GPIO_InitTypeDef structure + * that contains the configuration information for the specified GPIO peripheral. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: GPIO registers are initialized according to GPIO_InitStruct content + * - ERROR: Not applicable + */ +ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct) +{ + uint32_t pinpos; + uint32_t currentpin; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_LL_GPIO_PIN(GPIO_InitStruct->Pin)); + assert_param(IS_LL_GPIO_MODE(GPIO_InitStruct->Mode)); + assert_param(IS_LL_GPIO_PULL(GPIO_InitStruct->Pull)); + + /* ------------------------- Configure the port pins ---------------- */ + /* Initialize pinpos on first pin set */ + pinpos = POSITION_VAL(GPIO_InitStruct->Pin); + + /* Configure the port pins */ + while (((GPIO_InitStruct->Pin) >> pinpos) != 0x00u) + { + /* Get current io position */ + currentpin = (GPIO_InitStruct->Pin) & (0x00000001uL << pinpos); + + if (currentpin != 0x00u) + { + /* Pin Mode configuration */ + LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode); + + if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE)) + { + /* Check Speed mode parameters */ + assert_param(IS_LL_GPIO_SPEED(GPIO_InitStruct->Speed)); + + /* Speed mode configuration */ + LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed); + } + + /* Pull-up Pull down resistor configuration*/ + LL_GPIO_SetPinPull(GPIOx, currentpin, GPIO_InitStruct->Pull); + + if (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE) + { + /* Check Alternate parameter */ + assert_param(IS_LL_GPIO_ALTERNATE(GPIO_InitStruct->Alternate)); + + /* Speed mode configuration */ + if (currentpin < LL_GPIO_PIN_8) + { + LL_GPIO_SetAFPin_0_7(GPIOx, currentpin, GPIO_InitStruct->Alternate); + } + else + { + LL_GPIO_SetAFPin_8_15(GPIOx, currentpin, GPIO_InitStruct->Alternate); + } + } + } + pinpos++; + } + + if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE)) + { + /* Check Output mode parameters */ + assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType)); + + /* Output mode configuration*/ + LL_GPIO_SetPinOutputType(GPIOx, GPIO_InitStruct->Pin, GPIO_InitStruct->OutputType); + + } + return (SUCCESS); +} + +/** + * @brief Set each @ref LL_GPIO_InitTypeDef field to default value. + * @param GPIO_InitStruct pointer to a @ref LL_GPIO_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ + +void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct) +{ + /* Reset GPIO init structure parameters values */ + GPIO_InitStruct->Pin = LL_GPIO_PIN_ALL; + GPIO_InitStruct->Mode = LL_GPIO_MODE_ANALOG; + GPIO_InitStruct->Speed = LL_GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct->OutputType = LL_GPIO_OUTPUT_PUSHPULL; + GPIO_InitStruct->Pull = LL_GPIO_PULL_NO; + GPIO_InitStruct->Alternate = LL_GPIO_AF_0; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) || defined (GPIOH) || defined (GPIOI) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.c b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.c new file mode 100644 index 0000000..7b12da7 --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_pwr.c @@ -0,0 +1,85 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_pwr.c + * @author MCD Application Team + * @brief PWR LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx_ll_pwr.h" +#include "stm32l4xx_ll_bus.h" + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +#if defined(PWR) + +/** @defgroup PWR_LL PWR + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PWR_LL_Exported_Functions + * @{ + */ + +/** @addtogroup PWR_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the PWR registers to their default reset values. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: PWR registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_PWR_DeInit(void) +{ + /* Force reset of PWR clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_PWR); + + /* Release reset of PWR clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_PWR); + + return SUCCESS; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined(PWR) */ +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.c b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.c new file mode 100644 index 0000000..b1dd002 --- /dev/null +++ b/L476_ats_blink-master/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_ll_utils.c @@ -0,0 +1,916 @@ +/** + ****************************************************************************** + * @file stm32l4xx_ll_utils.c + * @author MCD Application Team + * @brief UTILS LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +/* Includes ------------------------------------------------------------------*/ +#include "stm32l4xx_ll_utils.h" +#include "stm32l4xx_ll_rcc.h" +#include "stm32l4xx_ll_system.h" +#include "stm32l4xx_ll_pwr.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +/** @addtogroup STM32L4xx_LL_Driver + * @{ + */ + +/** @addtogroup UTILS_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @addtogroup UTILS_LL_Private_Constants + * @{ + */ +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) +#define UTILS_MAX_FREQUENCY_SCALE1 120000000U /*!< Maximum frequency for system clock at power scale1, in Hz */ +#define UTILS_MAX_FREQUENCY_SCALE2 26000000U /*!< Maximum frequency for system clock at power scale2, in Hz */ +#else +#define UTILS_MAX_FREQUENCY_SCALE1 80000000U /*!< Maximum frequency for system clock at power scale1, in Hz */ +#define UTILS_MAX_FREQUENCY_SCALE2 26000000U /*!< Maximum frequency for system clock at power scale2, in Hz */ +#endif + +/* Defines used for PLL range */ +#define UTILS_PLLVCO_INPUT_MIN 4000000U /*!< Frequency min for PLLVCO input, in Hz */ +#define UTILS_PLLVCO_INPUT_MAX 16000000U /*!< Frequency max for PLLVCO input, in Hz */ +#define UTILS_PLLVCO_OUTPUT_MIN 64000000U /*!< Frequency min for PLLVCO output, in Hz */ +#define UTILS_PLLVCO_OUTPUT_MAX 344000000U /*!< Frequency max for PLLVCO output, in Hz */ + +/* Defines used for HSE range */ +#define UTILS_HSE_FREQUENCY_MIN 4000000U /*!< Frequency min for HSE frequency, in Hz */ +#define UTILS_HSE_FREQUENCY_MAX 48000000U /*!< Frequency max for HSE frequency, in Hz */ + +/* Defines used for FLASH latency according to HCLK Frequency */ +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) +#define UTILS_SCALE1_LATENCY1_FREQ 20000000U /*!< HCLK frequency to set FLASH latency 1 in power scale 1 */ +#define UTILS_SCALE1_LATENCY2_FREQ 40000000U /*!< HCLK frequency to set FLASH latency 2 in power scale 1 */ +#define UTILS_SCALE1_LATENCY3_FREQ 60000000U /*!< HCLK frequency to set FLASH latency 3 in power scale 1 */ +#define UTILS_SCALE1_LATENCY4_FREQ 80000000U /*!< HCLK frequency to set FLASH latency 4 in power scale 1 */ +#define UTILS_SCALE1_LATENCY5_FREQ 100000000U /*!< HCLK frequency to set FLASH latency 4 in power scale 1 */ +#define UTILS_SCALE2_LATENCY1_FREQ 8000000U /*!< HCLK frequency to set FLASH latency 1 in power scale 2 */ +#define UTILS_SCALE2_LATENCY2_FREQ 16000000U /*!< HCLK frequency to set FLASH latency 2 in power scale 2 */ +#else +#define UTILS_SCALE1_LATENCY1_FREQ 16000000U /*!< HCLK frequency to set FLASH latency 1 in power scale 1 */ +#define UTILS_SCALE1_LATENCY2_FREQ 32000000U /*!< HCLK frequency to set FLASH latency 2 in power scale 1 */ +#define UTILS_SCALE1_LATENCY3_FREQ 48000000U /*!< HCLK frequency to set FLASH latency 3 in power scale 1 */ +#define UTILS_SCALE1_LATENCY4_FREQ 64000000U /*!< HCLK frequency to set FLASH latency 4 in power scale 1 */ +#define UTILS_SCALE2_LATENCY1_FREQ 6000000U /*!< HCLK frequency to set FLASH latency 1 in power scale 2 */ +#define UTILS_SCALE2_LATENCY2_FREQ 12000000U /*!< HCLK frequency to set FLASH latency 2 in power scale 2 */ +#define UTILS_SCALE2_LATENCY3_FREQ 18000000U /*!< HCLK frequency to set FLASH latency 3 in power scale 2 */ +#endif +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup UTILS_LL_Private_Macros + * @{ + */ +#define IS_LL_UTILS_SYSCLK_DIV(__VALUE__) (((__VALUE__) == LL_RCC_SYSCLK_DIV_1) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_2) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_4) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_8) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_16) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_64) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_128) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_256) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_512)) + +#define IS_LL_UTILS_APB1_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB1_DIV_1) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_2) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_4) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_8) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_16)) + +#define IS_LL_UTILS_APB2_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB2_DIV_1) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_2) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_4) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_8) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_16)) + +#define IS_LL_UTILS_PLLM_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLLM_DIV_1) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_2) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_3) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_4) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_5) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_6) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_7) \ + || ((__VALUE__) == LL_RCC_PLLM_DIV_8)) + +#define IS_LL_UTILS_PLLN_VALUE(__VALUE__) ((8U <= (__VALUE__)) && ((__VALUE__) <= 86U)) + +#define IS_LL_UTILS_PLLR_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLLR_DIV_2) \ + || ((__VALUE__) == LL_RCC_PLLR_DIV_4) \ + || ((__VALUE__) == LL_RCC_PLLR_DIV_6) \ + || ((__VALUE__) == LL_RCC_PLLR_DIV_8)) + +#define IS_LL_UTILS_PLLVCO_INPUT(__VALUE__) ((UTILS_PLLVCO_INPUT_MIN <= (__VALUE__)) && ((__VALUE__) <= UTILS_PLLVCO_INPUT_MAX)) + +#define IS_LL_UTILS_PLLVCO_OUTPUT(__VALUE__) ((UTILS_PLLVCO_OUTPUT_MIN <= (__VALUE__)) && ((__VALUE__) <= UTILS_PLLVCO_OUTPUT_MAX)) + +#define IS_LL_UTILS_PLL_FREQUENCY(__VALUE__) ((LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE1) ? ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE1) : \ + ((__VALUE__) <= UTILS_MAX_FREQUENCY_SCALE2)) + +#define IS_LL_UTILS_HSE_BYPASS(__STATE__) (((__STATE__) == LL_UTILS_HSEBYPASS_ON) \ + || ((__STATE__) == LL_UTILS_HSEBYPASS_OFF)) + +#define IS_LL_UTILS_HSE_FREQUENCY(__FREQUENCY__) (((__FREQUENCY__) >= UTILS_HSE_FREQUENCY_MIN) && ((__FREQUENCY__) <= UTILS_HSE_FREQUENCY_MAX)) +/** + * @} + */ +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Functions UTILS Private functions + * @{ + */ +static uint32_t UTILS_GetPLLOutputFrequency(uint32_t PLL_InputFrequency, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct); +static ErrorStatus UTILS_EnablePLLAndSwitchSystem(uint32_t SYSCLK_Frequency, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +static ErrorStatus UTILS_PLL_IsBusy(void); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup UTILS_LL_Exported_Functions + * @{ + */ + +/** @addtogroup UTILS_LL_EF_DELAY + * @{ + */ + +/** + * @brief This function configures the Cortex-M SysTick source to have 1ms time base. + * @note When a RTOS is used, it is recommended to avoid changing the Systick + * configuration by calling this function, for a delay use rather osDelay RTOS service. + * @param HCLKFrequency HCLK frequency in Hz + * @note HCLK frequency can be calculated thanks to RCC helper macro or function @ref LL_RCC_GetSystemClocksFreq + * @retval None + */ +void LL_Init1msTick(uint32_t HCLKFrequency) +{ + /* Use frequency provided in argument */ + LL_InitTick(HCLKFrequency, 1000U); +} + +/** + * @brief This function provides accurate delay (in milliseconds) based + * on SysTick counter flag + * @note When a RTOS is used, it is recommended to avoid using blocking delay + * and use rather osDelay service. + * @note To respect 1ms timebase, user should call @ref LL_Init1msTick function which + * will configure Systick to 1ms + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +void LL_mDelay(uint32_t Delay) +{ + __IO uint32_t tmp = SysTick->CTRL; /* Clear the COUNTFLAG first */ + uint32_t tmpDelay = Delay; + + /* Add this code to indicate that local variable is not used */ + ((void)tmp); + + /* Add a period to guaranty minimum wait */ + if(tmpDelay < LL_MAX_DELAY) + { + tmpDelay++; + } + + while (tmpDelay != 0U) + { + if((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0U) + { + tmpDelay--; + } + } +} + +/** + * @} + */ + +/** @addtogroup UTILS_EF_SYSTEM + * @brief System Configuration functions + * + @verbatim + =============================================================================== + ##### System Configuration functions ##### + =============================================================================== + [..] + System, AHB and APB buses clocks configuration + + (+) The maximum frequency of the SYSCLK, HCLK, PCLK1 and PCLK2 is + 120000000 Hz for STM32L4Rx/STM32L4Sx devices and 80000000 Hz for others. + @endverbatim + @internal + Depending on the device voltage range, the maximum frequency should be + adapted accordingly: + + (++) Table 1. HCLK clock frequency for STM32L4+ Series devices + (++) +--------------------------------------------------------+ + (++) | Latency | HCLK clock frequency (MHz) | + (++) | |--------------------------------------| + (++) | | voltage range 1 | voltage range 2 | + (++) | | 1.2 V | 1.0 V | + (++) |-----------------|-------------------|------------------| + (++) |0WS(1 CPU cycles)| 0 < HCLK <= 20 | 0 < HCLK <= 8 | + (++) |-----------------|-------------------|------------------| + (++) |1WS(2 CPU cycles)| 20 < HCLK <= 40 | 8 < HCLK <= 16 | + (++) |-----------------|-------------------|------------------| + (++) |2WS(3 CPU cycles)| 40 < HCLK <= 60 | 16 < HCLK <= 26 | + (++) |-----------------|-------------------|------------------| + (++) |3WS(4 CPU cycles)| 60 < HCLK <= 80 | 16 < HCLK <= 26 | + (++) |-----------------|-------------------|------------------| + (++) |4WS(5 CPU cycles)| 80 < HCLK <= 100 | 16 < HCLK <= 26 | + (++) |-----------------|-------------------|------------------| + (++) |5WS(6 CPU cycles)| 100 < HCLK <= 120 | 16 < HCLK <= 26 | + (++) +--------------------------------------------------------+ + + (++) Table 2. HCLK clock frequency for STM32L4 Series devices + (++) +-------------------------------------------------------+ + (++) | Latency | HCLK clock frequency (MHz) | + (++) | |-------------------------------------| + (++) | | voltage range 1 | voltage range 2 | + (++) | | 1.2 V | 1.0 V | + (++) |-----------------|------------------|------------------| + (++) |0WS(1 CPU cycles)| 0 < HCLK <= 16 | 0 < HCLK <= 6 | + (++) |-----------------|------------------|------------------| + (++) |1WS(2 CPU cycles)| 16 < HCLK <= 32 | 6 < HCLK <= 12 | + (++) |-----------------|------------------|------------------| + (++) |2WS(3 CPU cycles)| 32 < HCLK <= 48 | 12 < HCLK <= 18 | + (++) |-----------------|------------------|------------------| + (++) |3WS(4 CPU cycles)| 48 < HCLK <= 64 | 18 < HCLK <= 26 | + (++) |-----------------|------------------|------------------| + (++) |4WS(5 CPU cycles)| 64 < HCLK <= 80 | 18 < HCLK <= 26 | + (++) +-------------------------------------------------------+ + + @endinternal + * @{ + */ + +/** + * @brief This function sets directly SystemCoreClock CMSIS variable. + * @note Variable can be calculated also through SystemCoreClockUpdate function. + * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro) + * @retval None + */ +void LL_SetSystemCoreClock(uint32_t HCLKFrequency) +{ + /* HCLK clock frequency */ + SystemCoreClock = HCLKFrequency; +} + +/** + * @brief Update number of Flash wait states in line with new frequency and current + voltage range. + * @param HCLKFrequency HCLK frequency + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Latency has been modified + * - ERROR: Latency cannot be modified + */ +ErrorStatus LL_SetFlashLatency(uint32_t HCLKFrequency) +{ + ErrorStatus status = SUCCESS; + + uint32_t latency = LL_FLASH_LATENCY_0; /* default value 0WS */ + + /* Frequency cannot be equal to 0 or greater than max clock */ + if ((HCLKFrequency == 0U) || (HCLKFrequency > UTILS_MAX_FREQUENCY_SCALE1)) + { + status = ERROR; + } + else + { + if(LL_PWR_GetRegulVoltageScaling() == LL_PWR_REGU_VOLTAGE_SCALE1) + { +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + if(HCLKFrequency > UTILS_SCALE1_LATENCY5_FREQ) + { + /* 100 < HCLK <= 120 => 5WS (6 CPU cycles) */ + latency = LL_FLASH_LATENCY_5; + } + else if(HCLKFrequency > UTILS_SCALE1_LATENCY4_FREQ) + { + /* 80 < HCLK <= 100 => 4WS (5 CPU cycles) */ + latency = LL_FLASH_LATENCY_4; + } + else if(HCLKFrequency > UTILS_SCALE1_LATENCY3_FREQ) + { + /* 60 < HCLK <= 80 => 3WS (4 CPU cycles) */ + latency = LL_FLASH_LATENCY_3; + } + else if(HCLKFrequency > UTILS_SCALE1_LATENCY2_FREQ) + { + /* 40 < HCLK <= 20 => 2WS (3 CPU cycles) */ + latency = LL_FLASH_LATENCY_2; + } + else + { + if(HCLKFrequency > UTILS_SCALE1_LATENCY1_FREQ) + { + /* 20 < HCLK <= 40 => 1WS (2 CPU cycles) */ + latency = LL_FLASH_LATENCY_1; + } + /* else HCLKFrequency <= 10MHz default LL_FLASH_LATENCY_0 0WS */ + } +#else + if(HCLKFrequency > UTILS_SCALE1_LATENCY4_FREQ) + { + /* 64 < HCLK <= 80 => 4WS (5 CPU cycles) */ + latency = LL_FLASH_LATENCY_4; + } + else if(HCLKFrequency > UTILS_SCALE1_LATENCY3_FREQ) + { + /* 48 < HCLK <= 64 => 3WS (4 CPU cycles) */ + latency = LL_FLASH_LATENCY_3; + } + else if(HCLKFrequency > UTILS_SCALE1_LATENCY2_FREQ) + { + /* 32 < HCLK <= 48 => 2WS (3 CPU cycles) */ + latency = LL_FLASH_LATENCY_2; + } + else + { + if(HCLKFrequency > UTILS_SCALE1_LATENCY1_FREQ) + { + /* 16 < HCLK <= 32 => 1WS (2 CPU cycles) */ + latency = LL_FLASH_LATENCY_1; + } + /* else HCLKFrequency <= 16MHz default LL_FLASH_LATENCY_0 0WS */ + } +#endif + } + else /* SCALE2 */ + { +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + if(HCLKFrequency > UTILS_MAX_FREQUENCY_SCALE2) + { + /* Unexpected HCLK > 26 */ + status = ERROR; + } + else if(HCLKFrequency > UTILS_SCALE2_LATENCY2_FREQ) + { + /* 16 < HCLK <= 26 => 2WS (3 CPU cycles) */ + latency = LL_FLASH_LATENCY_2; + } + else + { + if(HCLKFrequency > UTILS_SCALE2_LATENCY1_FREQ) + { + /* 8 < HCLK <= 16 => 1WS (2 CPU cycles) */ + latency = LL_FLASH_LATENCY_1; + } + /* else HCLKFrequency <= 8MHz default LL_FLASH_LATENCY_0 0WS */ + } +#else + if(HCLKFrequency > UTILS_MAX_FREQUENCY_SCALE2) + { + /* Unexpected HCLK > 26 */ + status = ERROR; + } + else if(HCLKFrequency > UTILS_SCALE2_LATENCY3_FREQ) + { + /* 18 < HCLK <= 26 => 3WS (4 CPU cycles) */ + latency = LL_FLASH_LATENCY_3; + } + else if(HCLKFrequency > UTILS_SCALE2_LATENCY2_FREQ) + { + /* 12 < HCLK <= 18 => 2WS (3 CPU cycles) */ + latency = LL_FLASH_LATENCY_2; + } + else + { + if(HCLKFrequency > UTILS_SCALE2_LATENCY1_FREQ) + { + /* 6 < HCLK <= 12 => 1WS (2 CPU cycles) */ + latency = LL_FLASH_LATENCY_1; + } + /* else HCLKFrequency <= 6MHz default LL_FLASH_LATENCY_0 0WS */ + } +#endif + } + + LL_FLASH_SetLatency(latency); + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + if(LL_FLASH_GetLatency() != latency) + { + status = ERROR; + } + } + return status; +} + +/** + * @brief This function configures system clock with MSI as clock source of the PLL + * @note The application needs to ensure that PLL, PLLSAI1 and/or PLLSAI2 are disabled. + * @note Function is based on the following formula: + * - PLL output frequency = (((MSI frequency / PLLM) * PLLN) / PLLR) + * - PLLM: ensure that the VCO input frequency ranges from 4 to 16 MHz (PLLVCO_input = MSI frequency / PLLM) + * - PLLN: ensure that the VCO output frequency is between 64 and 344 MHz (PLLVCO_output = PLLVCO_input * PLLN) + * - PLLR: ensure that max frequency at 120000000 Hz is reached (PLLVCO_output / PLLR) + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Max frequency configuration done + * - ERROR: Max frequency configuration not done + */ +ErrorStatus LL_PLL_ConfigSystemClock_MSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status = SUCCESS; + uint32_t pllfreq, msi_range; +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + uint32_t hpre = 0U; /* Set default value */ +#endif + + /* Check if one of the PLL is enabled */ + if(UTILS_PLL_IsBusy() == SUCCESS) + { + /* Get the current MSI range */ + if(LL_RCC_MSI_IsEnabledRangeSelect() != 0U) + { + msi_range = LL_RCC_MSI_GetRange(); + switch (msi_range) + { + case LL_RCC_MSIRANGE_0: /* MSI = 100 KHz */ + case LL_RCC_MSIRANGE_1: /* MSI = 200 KHz */ + case LL_RCC_MSIRANGE_2: /* MSI = 400 KHz */ + case LL_RCC_MSIRANGE_3: /* MSI = 800 KHz */ + case LL_RCC_MSIRANGE_4: /* MSI = 1 MHz */ + case LL_RCC_MSIRANGE_5: /* MSI = 2 MHz */ + /* PLLVCO input frequency is not in the range from 4 to 16 MHz*/ + status = ERROR; + break; + + case LL_RCC_MSIRANGE_6: /* MSI = 4 MHz */ + case LL_RCC_MSIRANGE_7: /* MSI = 8 MHz */ + case LL_RCC_MSIRANGE_8: /* MSI = 16 MHz */ + case LL_RCC_MSIRANGE_9: /* MSI = 24 MHz */ + case LL_RCC_MSIRANGE_10: /* MSI = 32 MHz */ + case LL_RCC_MSIRANGE_11: /* MSI = 48 MHz */ + default: + break; + } + } + else + { + msi_range = LL_RCC_MSI_GetRangeAfterStandby(); + switch (msi_range) + { + case LL_RCC_MSISRANGE_4: /* MSI = 1 MHz */ + case LL_RCC_MSISRANGE_5: /* MSI = 2 MHz */ + /* PLLVCO input frequency is not in the range from 4 to 16 MHz*/ + status = ERROR; + break; + + case LL_RCC_MSISRANGE_7: /* MSI = 8 MHz */ + case LL_RCC_MSISRANGE_6: /* MSI = 4 MHz */ + default: + break; + } + } + + /* Main PLL configuration and activation */ + if(status != ERROR) + { + /* Calculate the new PLL output frequency */ + pllfreq = UTILS_GetPLLOutputFrequency(__LL_RCC_CALC_MSI_FREQ(LL_RCC_MSI_IsEnabledRangeSelect(), msi_range), + UTILS_PLLInitStruct); + + /* Enable MSI if not enabled */ + if(LL_RCC_MSI_IsReady() != 1U) + { + LL_RCC_MSI_Enable(); + while ((LL_RCC_MSI_IsReady() != 1U)) + { + /* Wait for MSI ready */ + } + } + + /* Configure PLL */ + LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_MSI, UTILS_PLLInitStruct->PLLM, UTILS_PLLInitStruct->PLLN, + UTILS_PLLInitStruct->PLLR); + +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + /* Prevent undershoot at highest frequency by applying intermediate AHB prescaler 2 */ + if(pllfreq > 80000000U) + { + if(UTILS_ClkInitStruct->AHBCLKDivider == LL_RCC_SYSCLK_DIV_1) + { + UTILS_ClkInitStruct->AHBCLKDivider = LL_RCC_SYSCLK_DIV_2; + hpre = LL_RCC_SYSCLK_DIV_2; + } + } +#endif + /* Enable PLL and switch system clock to PLL */ + status = UTILS_EnablePLLAndSwitchSystem(pllfreq, UTILS_ClkInitStruct); + +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + /* Apply definitive AHB prescaler value if necessary */ + if((status == SUCCESS) && (hpre != LL_RCC_SYSCLK_DIV_1)) + { + /* Set FLASH latency to highest latency */ + status = LL_SetFlashLatency(pllfreq); + if(status == SUCCESS) + { + UTILS_ClkInitStruct->AHBCLKDivider = LL_RCC_SYSCLK_DIV_1; + LL_RCC_SetAHBPrescaler(UTILS_ClkInitStruct->AHBCLKDivider); + LL_SetSystemCoreClock(pllfreq); + } + } +#endif + } + } + else + { + /* Current PLL configuration cannot be modified */ + status = ERROR; + } + + return status; +} + +/** + * @brief This function configures system clock at maximum frequency with HSI as clock source of the PLL + * @note The application need to ensure that PLL, PLLSAI1 and/or PLLSAI2 are disabled. + * @note Function is based on the following formula: + * - PLL output frequency = (((HSI frequency / PLLM) * PLLN) / PLLR) + * - PLLM: ensure that the VCO input frequency ranges from 4 to 16 MHz (PLLVCO_input = HSI frequency / PLLM) + * - PLLN: ensure that the VCO output frequency is between 64 and 344 MHz (PLLVCO_output = PLLVCO_input * PLLN) + * - PLLR: ensure that max frequency at 120000000 Hz is reach (PLLVCO_output / PLLR) + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Max frequency configuration done + * - ERROR: Max frequency configuration not done + */ +ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status; + uint32_t pllfreq; +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + uint32_t hpre = LL_RCC_SYSCLK_DIV_1; /* Set default value */ +#endif + + /* Check if one of the PLL is enabled */ + if(UTILS_PLL_IsBusy() == SUCCESS) + { + /* Calculate the new PLL output frequency */ + pllfreq = UTILS_GetPLLOutputFrequency(HSI_VALUE, UTILS_PLLInitStruct); + + /* Enable HSI if not enabled */ + if(LL_RCC_HSI_IsReady() != 1U) + { + LL_RCC_HSI_Enable(); + while (LL_RCC_HSI_IsReady() != 1U) + { + /* Wait for HSI ready */ + } + } + + /* Configure PLL */ + LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSI, UTILS_PLLInitStruct->PLLM, UTILS_PLLInitStruct->PLLN, + UTILS_PLLInitStruct->PLLR); + +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + /* Prevent undershoot at highest frequency by applying intermediate AHB prescaler 2 */ + if(pllfreq > 80000000U) + { + if(UTILS_ClkInitStruct->AHBCLKDivider == LL_RCC_SYSCLK_DIV_1) + { + UTILS_ClkInitStruct->AHBCLKDivider = LL_RCC_SYSCLK_DIV_2; + hpre = LL_RCC_SYSCLK_DIV_2; + } + } +#endif + /* Enable PLL and switch system clock to PLL */ + status = UTILS_EnablePLLAndSwitchSystem(pllfreq, UTILS_ClkInitStruct); + +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + /* Apply definitive AHB prescaler value if necessary */ + if((status == SUCCESS) && (hpre != LL_RCC_SYSCLK_DIV_1)) + { + /* Set FLASH latency to highest latency */ + status = LL_SetFlashLatency(pllfreq); + if(status == SUCCESS) + { + UTILS_ClkInitStruct->AHBCLKDivider = LL_RCC_SYSCLK_DIV_1; + LL_RCC_SetAHBPrescaler(UTILS_ClkInitStruct->AHBCLKDivider); + LL_SetSystemCoreClock(pllfreq); + } + } +#endif + } + else + { + /* Current PLL configuration cannot be modified */ + status = ERROR; + } + + return status; +} + +/** + * @brief This function configures system clock with HSE as clock source of the PLL + * @note The application need to ensure that PLL, PLLSAI1 and/or PLLSAI2 are disabled. + * @note Function is based on the following formula: + * - PLL output frequency = (((HSE frequency / PLLM) * PLLN) / PLLR) + * - PLLM: ensure that the VCO input frequency ranges from 4 to 16 MHz (PLLVCO_input = HSE frequency / PLLM) + * - PLLN: ensure that the VCO output frequency is between 64 and 344 MHz (PLLVCO_output = PLLVCO_input * PLLN) + * - PLLR: ensure that max frequency at 120000000 Hz is reached (PLLVCO_output / PLLR) + * @param HSEFrequency Value between Min_Data = 4000000 and Max_Data = 48000000 + * @param HSEBypass This parameter can be one of the following values: + * @arg @ref LL_UTILS_HSEBYPASS_ON + * @arg @ref LL_UTILS_HSEBYPASS_OFF + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Max frequency configuration done + * - ERROR: Max frequency configuration not done + */ +ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status; + uint32_t pllfreq; +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + uint32_t hpre = 0U; /* Set default value */ +#endif + + /* Check the parameters */ + assert_param(IS_LL_UTILS_HSE_FREQUENCY(HSEFrequency)); + assert_param(IS_LL_UTILS_HSE_BYPASS(HSEBypass)); + + /* Check if one of the PLL is enabled */ + if(UTILS_PLL_IsBusy() == SUCCESS) + { + /* Calculate the new PLL output frequency */ + pllfreq = UTILS_GetPLLOutputFrequency(HSEFrequency, UTILS_PLLInitStruct); + + /* Enable HSE if not enabled */ + if(LL_RCC_HSE_IsReady() != 1U) + { + /* Check if need to enable HSE bypass feature or not */ + if(HSEBypass == LL_UTILS_HSEBYPASS_ON) + { + LL_RCC_HSE_EnableBypass(); + } + else + { + LL_RCC_HSE_DisableBypass(); + } + + /* Enable HSE */ + LL_RCC_HSE_Enable(); + while (LL_RCC_HSE_IsReady() != 1U) + { + /* Wait for HSE ready */ + } + } + + /* Configure PLL */ + LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE, UTILS_PLLInitStruct->PLLM, UTILS_PLLInitStruct->PLLN, + UTILS_PLLInitStruct->PLLR); + +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + /* Prevent undershoot at highest frequency by applying intermediate AHB prescaler 2 */ + if(pllfreq > 80000000U) + { + if(UTILS_ClkInitStruct->AHBCLKDivider == LL_RCC_SYSCLK_DIV_1) + { + UTILS_ClkInitStruct->AHBCLKDivider = LL_RCC_SYSCLK_DIV_2; + hpre = LL_RCC_SYSCLK_DIV_2; + } + } +#endif + /* Enable PLL and switch system clock to PLL */ + status = UTILS_EnablePLLAndSwitchSystem(pllfreq, UTILS_ClkInitStruct); + +#if defined(STM32L4P5xx) || defined(STM32L4Q5xx) || \ + defined(STM32L4R5xx) || defined(STM32L4R7xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx) + /* Apply definitive AHB prescaler value if necessary */ + if((status == SUCCESS) && (hpre != LL_RCC_SYSCLK_DIV_1)) + { + /* Set FLASH latency to highest latency */ + status = LL_SetFlashLatency(pllfreq); + if(status == SUCCESS) + { + UTILS_ClkInitStruct->AHBCLKDivider = LL_RCC_SYSCLK_DIV_1; + LL_RCC_SetAHBPrescaler(UTILS_ClkInitStruct->AHBCLKDivider); + LL_SetSystemCoreClock(pllfreq); + } + } +#endif + } + else + { + /* Current PLL configuration cannot be modified */ + status = ERROR; + } + + return status; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup UTILS_LL_Private_Functions + * @{ + */ +/** + * @brief Function to check that PLL can be modified + * @param PLL_InputFrequency PLL input frequency (in Hz) + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @retval PLL output frequency (in Hz) + */ +static uint32_t UTILS_GetPLLOutputFrequency(uint32_t PLL_InputFrequency, LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct) +{ + uint32_t pllfreq; + + /* Check the parameters */ + assert_param(IS_LL_UTILS_PLLM_VALUE(UTILS_PLLInitStruct->PLLM)); + assert_param(IS_LL_UTILS_PLLN_VALUE(UTILS_PLLInitStruct->PLLN)); + assert_param(IS_LL_UTILS_PLLR_VALUE(UTILS_PLLInitStruct->PLLR)); + + /* Check different PLL parameters according to RM */ + /* - PLLM: ensure that the VCO input frequency ranges from 4 to 16 MHz. */ + pllfreq = PLL_InputFrequency / (((UTILS_PLLInitStruct->PLLM >> RCC_PLLCFGR_PLLM_Pos) + 1U)); + assert_param(IS_LL_UTILS_PLLVCO_INPUT(pllfreq)); + + /* - PLLN: ensure that the VCO output frequency is between 64 and 344 MHz.*/ + pllfreq = pllfreq * (UTILS_PLLInitStruct->PLLN & (RCC_PLLCFGR_PLLN >> RCC_PLLCFGR_PLLN_Pos)); + assert_param(IS_LL_UTILS_PLLVCO_OUTPUT(pllfreq)); + + /* - PLLR: ensure that max frequency at 120000000 Hz is reached */ + pllfreq = pllfreq / (((UTILS_PLLInitStruct->PLLR >> RCC_PLLCFGR_PLLR_Pos) + 1U) * 2U); + assert_param(IS_LL_UTILS_PLL_FREQUENCY(pllfreq)); + + return pllfreq; +} + +/** + * @brief Function to check that PLL can be modified + * @retval An ErrorStatus enumeration value: + * - SUCCESS: PLL modification can be done + * - ERROR: PLL is busy + */ +static ErrorStatus UTILS_PLL_IsBusy(void) +{ + ErrorStatus status = SUCCESS; + + /* Check if PLL is busy*/ + if(LL_RCC_PLL_IsReady() != 0U) + { + /* PLL configuration cannot be modified */ + status = ERROR; + } + +#if defined(RCC_PLLSAI1_SUPPORT) + /* Check if PLLSAI1 is busy*/ + if(LL_RCC_PLLSAI1_IsReady() != 0U) + { + /* PLLSAI1 configuration cannot be modified */ + status = ERROR; + } +#endif /*RCC_PLLSAI1_SUPPORT*/ +#if defined(RCC_PLLSAI2_SUPPORT) + + /* Check if PLLSAI2 is busy*/ + if(LL_RCC_PLLSAI2_IsReady() != 0U) + { + /* PLLSAI2 configuration cannot be modified */ + status = ERROR; + } +#endif /*RCC_PLLSAI2_SUPPORT*/ + + return status; +} + +/** + * @brief Function to enable PLL and switch system clock to PLL + * @param SYSCLK_Frequency SYSCLK frequency + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: No problem to switch system to PLL + * - ERROR: Problem to switch system to PLL + */ +static ErrorStatus UTILS_EnablePLLAndSwitchSystem(uint32_t SYSCLK_Frequency, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status = SUCCESS; + uint32_t hclk_frequency; + + assert_param(IS_LL_UTILS_SYSCLK_DIV(UTILS_ClkInitStruct->AHBCLKDivider)); + assert_param(IS_LL_UTILS_APB1_DIV(UTILS_ClkInitStruct->APB1CLKDivider)); + assert_param(IS_LL_UTILS_APB2_DIV(UTILS_ClkInitStruct->APB2CLKDivider)); + + /* Calculate HCLK frequency */ + hclk_frequency = __LL_RCC_CALC_HCLK_FREQ(SYSCLK_Frequency, UTILS_ClkInitStruct->AHBCLKDivider); + + /* Increasing the number of wait states because of higher CPU frequency */ + if(SystemCoreClock < hclk_frequency) + { + /* Set FLASH latency to highest latency */ + status = LL_SetFlashLatency(hclk_frequency); + } + + /* Update system clock configuration */ + if(status == SUCCESS) + { + /* Enable PLL */ + LL_RCC_PLL_Enable(); + LL_RCC_PLL_EnableDomain_SYS(); + while (LL_RCC_PLL_IsReady() != 1U) + { + /* Wait for PLL ready */ + } + + /* Sysclk activation on the main PLL */ + LL_RCC_SetAHBPrescaler(UTILS_ClkInitStruct->AHBCLKDivider); + LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); + while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + { + /* Wait for system clock switch to PLL */ + } + + /* Set APB1 & APB2 prescaler*/ + LL_RCC_SetAPB1Prescaler(UTILS_ClkInitStruct->APB1CLKDivider); + LL_RCC_SetAPB2Prescaler(UTILS_ClkInitStruct->APB2CLKDivider); + } + + /* Decreasing the number of wait states because of lower CPU frequency */ + if(SystemCoreClock > hclk_frequency) + { + /* Set FLASH latency to lowest latency */ + status = LL_SetFlashLatency(hclk_frequency); + } + + /* Update SystemCoreClock variable */ + if(status == SUCCESS) + { + LL_SetSystemCoreClock(hclk_frequency); + } + + return status; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/L476_ats_blink-master/L476_ats_blink-master.ioc b/L476_ats_blink-master/L476_ats_blink-master.ioc new file mode 100644 index 0000000..f01d8da --- /dev/null +++ b/L476_ats_blink-master/L476_ats_blink-master.ioc @@ -0,0 +1,109 @@ +#MicroXplorer Configuration settings - do not modify +File.Version=6 +KeepUserPlacement=false +Mcu.Family=STM32L4 +Mcu.IP0=NVIC +Mcu.IP1=RCC +Mcu.IP2=SYS +Mcu.IPNb=3 +Mcu.Name=STM32L476R(C-E-G)Tx +Mcu.Package=LQFP64 +Mcu.Pin0=VP_SYS_VS_Systick +Mcu.PinsNb=1 +Mcu.ThirdPartyNb=0 +Mcu.UserConstants= +Mcu.UserName=STM32L476RGTx +MxCube.Version=6.0.0 +MxDb.Version=DB.6.0.0 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true\:false\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=false +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32L476RGTx +ProjectManager.FirmwarePackage=STM32Cube FW_L4 V1.16.0 +ProjectManager.FreePins=false +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=true +ProjectManager.LibraryCopy=1 +ProjectManager.MainLocation=Core/Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=L476_ats_blink-master.ioc +ProjectManager.ProjectName=L476_ats_blink-master +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=STM32CubeIDE +ProjectManager.ToolChainLocation= +ProjectManager.UnderRoot=true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-LL-false +RCC.AHBFreq_Value=80000000 +RCC.APB1Freq_Value=80000000 +RCC.APB1TimFreq_Value=80000000 +RCC.APB2Freq_Value=80000000 +RCC.APB2TimFreq_Value=80000000 +RCC.CortexFreq_Value=80000000 +RCC.DFSDMFreq_Value=80000000 +RCC.FCLKCortexFreq_Value=80000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=80000000 +RCC.HSE_VALUE=8000000 +RCC.HSI_VALUE=16000000 +RCC.I2C1Freq_Value=80000000 +RCC.I2C2Freq_Value=80000000 +RCC.I2C3Freq_Value=80000000 +RCC.IPParameters=AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,DFSDMFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,LPTIM1Freq_Value,LPTIM2Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSE_VALUE,LSI_VALUE,MCO1PinFreq_Value,MSI_VALUE,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSAI1PoutputFreq_Value,PLLSAI1QoutputFreq_Value,PLLSAI1RoutputFreq_Value,PLLSAI2PoutputFreq_Value,PLLSAI2RoutputFreq_Value,PWRFreq_Value,SAI1Freq_Value,SAI2Freq_Value,SWPMI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,UART5Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VCOSAI1OutputFreq_Value,VCOSAI2OutputFreq_Value +RCC.LPTIM1Freq_Value=80000000 +RCC.LPTIM2Freq_Value=80000000 +RCC.LPUART1Freq_Value=80000000 +RCC.LSCOPinFreq_Value=32000 +RCC.LSE_VALUE=32768 +RCC.LSI_VALUE=32000 +RCC.MCO1PinFreq_Value=80000000 +RCC.MSI_VALUE=4000000 +RCC.PLLN=40 +RCC.PLLPoutputFreq_Value=22857142.85714286 +RCC.PLLQoutputFreq_Value=80000000 +RCC.PLLRCLKFreq_Value=80000000 +RCC.PLLSAI1PoutputFreq_Value=4571428.571428572 +RCC.PLLSAI1QoutputFreq_Value=16000000 +RCC.PLLSAI1RoutputFreq_Value=16000000 +RCC.PLLSAI2PoutputFreq_Value=4571428.571428572 +RCC.PLLSAI2RoutputFreq_Value=16000000 +RCC.PWRFreq_Value=80000000 +RCC.SAI1Freq_Value=4571428.571428572 +RCC.SAI2Freq_Value=4571428.571428572 +RCC.SWPMI1Freq_Value=80000000 +RCC.SYSCLKFreq_VALUE=80000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.UART4Freq_Value=80000000 +RCC.UART5Freq_Value=80000000 +RCC.USART1Freq_Value=80000000 +RCC.USART2Freq_Value=80000000 +RCC.USART3Freq_Value=80000000 +RCC.VCOInputFreq_Value=4000000 +RCC.VCOOutputFreq_Value=160000000 +RCC.VCOSAI1OutputFreq_Value=32000000 +RCC.VCOSAI2OutputFreq_Value=32000000 +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +board=custom +isbadioc=false diff --git a/L476_ats_blink-master/STM32L476RGTX_FLASH.ld b/L476_ats_blink-master/STM32L476RGTX_FLASH.ld new file mode 100644 index 0000000..c695682 --- /dev/null +++ b/L476_ats_blink-master/STM32L476RGTX_FLASH.ld @@ -0,0 +1,177 @@ +/** + ****************************************************************************** + * @file LinkerScript.ld + * @author Auto-generated by STM32CubeIDE + * @brief Linker script for STM32L476RGTx Device from STM32L4 series + * 1024Kbytes FLASH + * 96Kbytes RAM + * 32Kbytes RAM2 + * + * Set heap size, stack size and stack location according + * to application requirements. + * + * Set memory bank area and size if external memory is used + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ + +_Min_Heap_Size = 0x200 ; /* required amount of heap */ +_Min_Stack_Size = 0x400 ; /* required amount of stack */ + +/* Memories definition */ +MEMORY +{ + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 96K + RAM2 (xrw) : ORIGIN = 0x10000000, LENGTH = 32K + FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K +} + +/* Sections */ +SECTIONS +{ + /* The startup code into "FLASH" Rom type memory */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >FLASH + + /* The program code and other data into "FLASH" Rom type memory */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >FLASH + + /* Constant data into "FLASH" Rom type memory */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >FLASH + + .ARM.extab : { + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); + } >FLASH + + .ARM : { + . = ALIGN(4); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(4); + } >FLASH + + .preinit_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >FLASH + + .init_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >FLASH + + .fini_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(4); + } >FLASH + + /* Used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections into "RAM" Ram type memory */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM AT> FLASH + + /* Uninitialized data section into "RAM" Ram type memory */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + /* Remove information from the compiler libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/L476_ats_blink-master/STM32L476RGTX_RAM.ld b/L476_ats_blink-master/STM32L476RGTX_RAM.ld new file mode 100644 index 0000000..77e17c8 --- /dev/null +++ b/L476_ats_blink-master/STM32L476RGTX_RAM.ld @@ -0,0 +1,177 @@ +/** + ****************************************************************************** + * @file LinkerScript.ld + * @author Auto-generated by STM32CubeIDE + * @brief Linker script for STM32L476RGTx Device from STM32L4 series + * 1024Kbytes FLASH + * 96Kbytes RAM + * 32Kbytes RAM2 + * + * Set heap size, stack size and stack location according + * to application requirements. + * + * Set memory bank area and size if external memory is used + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2020 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Entry Point */ +ENTRY(Reset_Handler) + +/* Highest address of the user mode stack */ +_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */ + +_Min_Heap_Size = 0x200; /* required amount of heap */ +_Min_Stack_Size = 0x400; /* required amount of stack */ + +/* Memories definition */ +MEMORY +{ + RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 96K + RAM2 (xrw) : ORIGIN = 0x10000000, LENGTH = 32K + FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K +} + +/* Sections */ +SECTIONS +{ + /* The startup code into "RAM" Ram type memory */ + .isr_vector : + { + . = ALIGN(4); + KEEP(*(.isr_vector)) /* Startup code */ + . = ALIGN(4); + } >RAM + + /* The program code and other data into "RAM" Ram type memory */ + .text : + { + . = ALIGN(4); + *(.text) /* .text sections (code) */ + *(.text*) /* .text* sections (code) */ + *(.glue_7) /* glue arm to thumb code */ + *(.glue_7t) /* glue thumb to arm code */ + *(.eh_frame) + + KEEP (*(.init)) + KEEP (*(.fini)) + + . = ALIGN(4); + _etext = .; /* define a global symbols at end of code */ + } >RAM + + /* Constant data into "RAM" Ram type memory */ + .rodata : + { + . = ALIGN(4); + *(.rodata) /* .rodata sections (constants, strings, etc.) */ + *(.rodata*) /* .rodata* sections (constants, strings, etc.) */ + . = ALIGN(4); + } >RAM + + .ARM.extab : { + . = ALIGN(4); + *(.ARM.extab* .gnu.linkonce.armextab.*) + . = ALIGN(4); + } >RAM + + .ARM : { + . = ALIGN(4); + __exidx_start = .; + *(.ARM.exidx*) + __exidx_end = .; + . = ALIGN(4); + } >RAM + + .preinit_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP (*(.preinit_array*)) + PROVIDE_HIDDEN (__preinit_array_end = .); + . = ALIGN(4); + } >RAM + + .init_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__init_array_start = .); + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array*)) + PROVIDE_HIDDEN (__init_array_end = .); + . = ALIGN(4); + } >RAM + + .fini_array : + { + . = ALIGN(4); + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array*)) + PROVIDE_HIDDEN (__fini_array_end = .); + . = ALIGN(4); + } >RAM + + /* Used by the startup to initialize data */ + _sidata = LOADADDR(.data); + + /* Initialized data sections into "RAM" Ram type memory */ + .data : + { + . = ALIGN(4); + _sdata = .; /* create a global symbol at data start */ + *(.data) /* .data sections */ + *(.data*) /* .data* sections */ + + . = ALIGN(4); + _edata = .; /* define a global symbol at data end */ + + } >RAM + + /* Uninitialized data section into "RAM" Ram type memory */ + . = ALIGN(4); + .bss : + { + /* This is used by the startup in order to initialize the .bss section */ + _sbss = .; /* define a global symbol at bss start */ + __bss_start__ = _sbss; + *(.bss) + *(.bss*) + *(COMMON) + + . = ALIGN(4); + _ebss = .; /* define a global symbol at bss end */ + __bss_end__ = _ebss; + } >RAM + + /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */ + ._user_heap_stack : + { + . = ALIGN(8); + PROVIDE ( end = . ); + PROVIDE ( _end = . ); + . = . + _Min_Heap_Size; + . = . + _Min_Stack_Size; + . = ALIGN(8); + } >RAM + + /* Remove information from the compiler libraries */ + /DISCARD/ : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + } + + .ARM.attributes 0 : { *(.ARM.attributes) } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f288702 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +.

}34$HYh# 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�+&MdxRYt~NaH_9~tIkLS<3GwI?6@e5`SIP| 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

*QT9(Bp}C!IX;Wx(3U?6>WWQJjhZBaA7W&Yv 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 z zq(3X{7)SuiCLM!;toOHp3t}}>zTgb2gwimVIBPM zSS9QAKH$<=AN_&3tE|!ps7`0?pfh*ZSg{oKWU#s@uF7P+{Ry}%mLUnsvRQFWAUP~| zO3LK2-k_^=ofYE^KX0)7w}QLL`fL!&@>n0tf@D5xPYOr@E8jGVZGM3Fo*ehpMd;?__tcK@dsFHQ?B@EtTEuD=;SF!dSfn+tS z_8>%RSkk=^sb$T12(FIBOon7V>qY8+xy^cszS<3}V(OQ=!x~Y7yUUvR04_DMyysxB zi6x*6Pc!SiF1XaflAZwW9_tDf!rNIj1yI((T1M?b_gUXkRQ`Zv>xQ|9td}S=+sSID zl1LZp8;WJRS*xhX+QSmO16(g_!HXE|WBpCl>VDQ-XTS$o8%AJgkd^WduI>=)yFa0N zn6=XeWQ4WO8@Mr6J++#Rvwmp-Zi3a&3+^$id^XlM$$FZ0+f%G3wnNJ_t33dK8J46I zgLdpIRLrnvSAPqf1Dlr&UmV%5Q$_PI`$8Wio!G_-C_BP#`2=uhwr~T;QMS$BATI1D zsNC$z&e;Wk8+(5U;K$f|Zb7v>TfYK>9_-82Q0>X~rp(uI_Imm`))Q<_FUU#u&s3lG zVzbs`Dck z$6OHm5VgphVcXD8T?eysbg&-6md%4pp=`#FAYp7Z6*|J%ja8V7U_YYoSR~u%1`AQ_ zWGXwxu=AI}Y%F^{od}3yXHj5#ft^A}o8sBq=^)8P_V={&Phfwt1apaO!5G}V#GdrU zQc~ErQ{lvAb{dsHudu(TTzV?I=LP6YV~5Mvh|dM{i>Z&X75UbvJ!U4Y}hMj@1;s% z1-l~+bCv8*UWS%i>`r=>RI$IOWPde#54}<9*v+(yt!KB;Ywb2$tOIFaf2n~Jci8^a z*?*VqMp=Lkb^_Ii?z7+f4Dbi+SQ~I%>?der*3CXlhk1M0Yp%jxFZ;zG;7cF-g*EV{ zpRLkjaFFft-}Z<7IRm(1ws|wmjvs648V}DAWRpV?QdcjYy-=%8AV|GUY zL?+oC&tY(y9d{F|XV^*M&}qksqhQjWvw-$Q4xD$Wq~*w2q6FYDXP7=&PMo6@&K=>r z=#D{W4u{^KM>(-W0Jw0P{(*=q=l5Cg(~ZMC0%gZIPX&UwbJiY&G7pYBb$ohqmOBA{ zoD)b@y%U^ejnH|Lvw=cOFV4a*A?eM@7{lBt&Q03(`f^^PwxZLVCd#<@apur{?a!I* z1M2~tqItN2fgBd?IL~liEy7?h=Q(^ptWD*m|ukx37pgP zm%hZAO=gog8@(Z!%&E13NDAlJL+HHB38wtg70wc>8>Vu+DZ7=%Y5X0Au5$L$CNZ5e z{1kk-#_6CGR3_)OVa#Q5{2jn$a~!Cgki)5@&wMUtU=FzJ9Pcp9-QW!6f#h-eIZ&O? zdD{hxF5m>vjakTPqjGE!$4qxmF~@TNW=lAg>tL^p6IKOWIcHNPBr73!DCv8KV#Ud~hq0DYW4+`#p7Y$>=K;OxH+or9c`QveKcj;;k6=A``# z3nQE*E`UGcoc;cyXQaYMF!SSV!&0~)C4#*_OM*`JT94mcOr#bo5mN~;Y zOC5D~+y$kzK~Yh0yJuK(Lm z7RDW?*LFDf724uNa+_!=QQSf$NHq7st59~9JGUS3815K-pkukeiZK_*t$GaA=eY@N z=)AyP^FK(&a~&zVzQ}F=8FLBT>2c^xfJY9+tQwI%_c&TW^$-Zk#?6mVp4!`_1GOzr^ncxG{Lb%M+0eogh;9PToT z|8lvr_|S5l`z~$oZgB0VpzJ1>;Q$MH++Ye7^0}!caJPW_+g;2RbIWMIRKgWfgi^}Q z`4W<4+=0X3%DIczf>dzN{sECn?iC7_Z*f1RNU@4LKLT2+x$$Q(SHt~@y5j4&C+YZL zJy%5O_S@W8T2TWxpY{xQxJ9!tc$d40yl&+3DKFf_eUcJ3&D`{x;99uaY-nlazWx>f z_qbUU{;2v<@{)7_`xjpkiI=M!Q(Yv@qKZA60Q^e5H!wse1 z3+m;@oCKhs+wlhG2DtVVNeyzh4q_=o+&Pr%8s>gREutgbdl`^?#9g!++$i^-r@)PI zH_+F2ocqEF04BJSa*!!*07akE+%217Xol-%3(k(WXb~jsd7G#)*@2fs2izQa8>va` zFz-MhI49nkP58qd;r&i80cT$Q1mG?_$5Le_q5UZ~;6k)zJfaE|mBT;;p9$>l>OV|n-AglBO)XS(?=@I>@gi|3uD z*!Lo@fS3Uxg1{8Qdr34d0&Odb)NSRdHJ+s$>WXE_b;E9RS8nS+Z&C! zLf#Y|RVm`_pbmy&-W;mEl<+Qn0eC4dH4zS$@k*#VUe4Q}2S5dHH!ZW0*Lfczw|I#M z;cgYr^$>Jc^8)F0U&9+{1gYg!Q<0~RcbW&Tp7)9ZUf<>ws-dibx9Ss>nT;{&EH{yyQlc0n?Zc|rf6937B z?I!5-=ldOop#Z)U{R&VZKbPJiLHyeZP)`6sv(!{0jwKV$g;3t%>mKk+imp5w!}8o#Gj^AXEOikRhUcR zC%MAU%lzV3pydi*eF-?|Y#M}-3K_>qEH~CR?5Iv87stj84`OeS5Pyzo>su30PKiG&1 zQpA@~e`GP=!56p^{x2P{UdliH8Rp9Pz1ff~=WkI$q=LWdUx-xleb0g1;%|Nel2!cQ zmcq|!{%`e=tl_^zFS1(xZ%oY9@kO?ntLKlqgWTqqQ-!gCA5G13clg_lAb0uSQf`3`ffPU$`5@NOKIaLkW2UY`DKu7=Qmryb?|?sjnaL7{x`7j zfM5Iu$V0vpeVIG?Pdo(a;%}jCMK3@8bExj)=j;WbpUluhwt zr5Lmm9RCT#UT}y4KLdB7b72Wo&jEEqL|I0h#VD^Q-#q* zP}dCyT?O6iK-^GM2RSB4?}s6G!Sht*_7Di@41lM=F%!y;3q;hBbwc1mZ^e^>6@P$u z2@VYb;4KhS)7>e-e2UzB1WmYk=lTksa|1ao$fq5ypCF%ha{hv*Rj?i)Xj5P?P_Uj} zB|!pPYDGRHc#Hl3!2*xnmKkM zxM%_YD_B1(nEDAiV+7JI@H$qof(kNm0$+*|&IwA(LCy=*1h^n@pvN~}u$bON7X=4T z0FWRs(W@&_aDd9`mjpe(0+1xga{?e)kVB19DT2Ec>RlF`pq$PXfwLXVrV2vn@0TWc zFBR*%D(I&ptm%T^Hv@M~FuWgw8G?+zVJK4|*p0y~ftmW6vjsb5VJ=7TR~!a&1;zB6 zB-aJSRIIrnXuAwUHwBm1!)%^FatS0~V4!_nfuP48l7#}hSZFB{%%@jSvA||E%$5ii zQbT&FU?&yS$^@a57O50S{V{k;@CseeDuEN-`qhFRxiC~C*y{nVR`72%MCt@vxmZfQ zpp}a2w*|}SS9ux)3x0#LJA!`t;@uUDKY-arK~FkxO@gOpz%>h=I|?CX-71Kr zHoG=~xfnX{31TRz)-HJEAOIbL`BVqGFL?6<3_cKCkAb0wum?k(f}0_*&?T6c0FiFN zq!h|}1fNm?p;yqb52R19!xx771>2^fY(UUHACiLt$7R3`3E~f7Zded^4BUu-Lp>*t z1Pdr^85R6P2iV61!&I{w7ksn>@CiZv3xGcsG`<2qCj~z_!orlG=oq+Z!N*jqn-RFE z;Gmt*^CmcZVev62J1mrP0e2F9y9(rpa4zkkorQg+;EoEvY=I#c;Xwx|a}}PXJfE9z zV=D%a317JgW$wb)SHcMo;a`DJ<|$O?L*%${?#tj#2;Duf=##?hXE5j`EcF8CEo`Oi z&nclN<+^-?Pj7*PzQUNVVd1nea3$vagniW7?Jqn^C9MEqkO(ADc<3{bAYo`0oIfM< z7zHj^_<-6dLWJed!|@wFFASTD!3)AC>1`7)+_4_Gi^9fe01||E zs^Dj$FyS4LOTy=WQRX>ISUCxjE%ZzQ$q{a+04G=I_C5gDh3-_R zydm_WG}=vJD81zJgpZ4%I$!uco`guYZw zx+j!B3(_up^;f9w5ITJcE%$}nK8M){LceY}@lfc+0H9NNnDSX<eiAbqiyu>7YmG zsRHR09;4p+KH(MxEc6R)sXcE%81^~l28Cby!ora71$t)<3#-1x+=y^25r9X+*ah%& zR5)iD?2QROrex~4@M|#)O$ehtfaGK0o?UQhQh2lol2gJZ)Ezc0v<-z5Gr}LA#`Uxl z<$ecAdr{v6L>xq6^!0TVB~Z)QVbQB!L79`tnFEodqHZcQx`?jQOUG5TgLY4DqWjxn z_L!)hN`3C4MA~tBh&CMs+*7oc4jUX7y)y&ugeZ`@c20`Edkr`*k)RyPyhXwF0Gtx- zpy$Cy^d$YhhOa2^5y)xLnRx*Ci5PnU_ZK}wrNsbI=23VZD0;RUs)Iz&$AX*@Wgmo= zV9{YJorZ|sq^|!^(Yu`hgo)htLUp((i{>Ik1K(gSQWQ^-RFo)$dTpacJ-ab@Rur@j zs$)c(Sm0tsc?rP9i2^C5a8ATt375``4p1H8f~bBLaPgwwA4BIwkwpqa2_iP7;uA%0 z=fjsvB54V`t&YDN=3t6P+caf9e`xHDB>3^tU}aBT@jU{96Q*% zCAwz^dsU(}hXJn^rBkW4MzosVHnpOTr=YA(bbKwidQtoah};%!J_oKrWO@#BjiTS_ zL_m|shIZ7=qTOe}wTQORR;*R@i8BCgqQ66+^Pb4qkEOJWUVjYIA-YPP7WYNZH^ce^ zQLG0fABv1mV6IcNYCkM=iRQfwk!}%xG2lHS-6D`)(asaF&?h=XO=A6`-zZx+ATrFu z+@NUf8<-msah79lShU_Asz*ebi{Z;7(HIBHMn$uC!NQox%@6L5i=uY`Fd?$1R;2p2p1$)oQ9S&;?MuVT(I~FE8t<`ZPd0AE^gt1ix79bfqN-Zyr2lU zD6ubJkSPQjQHC*@GMpw^&~ut6CZjJI?su>hQsW6vD11Ox*-0G9;bNm z{VV`3ihq6$IupcoRQ*p9zd?z*WN}(PETo7(c^4Kgi(4Hac}1+G?&wspk-j8pVmEp@ zUKLlk-*ITk6^GL^c3qr8 z+q)a$s8Gz^6u;&VT%Ne-djRsq;Sn%YAny1Gz7&d|rFu@0c-wj4ipAf40YHiPrQ;x_ zVw;OFR3?6!!vAuygo=9=;^9LemEy|RKyHaYr({)?IAR=tYVlFp?A3^;k3naxcxoBu z>crnr9;{xhXokpb@yAbMu0gz)b|rVjPpUxfiVG-@(kMP!2$3f7$Raq{EKb-CWi4WH z3_NQUEAC^kO?+Dd?wsLan1usJ``_n1H4nb{ZnvV z;u{pCb&K~>-lj*aqwim@c)@kp>l2%1f%J=;DWDnrP;N^1>^e^X-( zBjS2H%smn>PXsqAUb7cuOzh-@HH?eBJ>kTJ*x(HAvG{x=e3=v{=ECfhIDRP>JuUXk z0XHN5Y6Cbs$*(Iw>?J`zLefF9m`=e!QN>}J{>9bli1Oo&tLK>?G*zggLE1qP|_~IT#)30 zbj+QRR4v0?uw;rpZXuFy>~SGOC9hFFD@^j_PLObkic0$tl6?l?A|>CugG5Qf|AuGL zk_A+`J1fz5Kv|5W=6C$XVkI-9n2VFtnK5@xvUoM%=OxTPF?T`o&NSxYC7US@xG0g( zLzy7?hPpu$CGR{0xg@b!4Ur^CStCfYg!erhydtTgKVzySoU&VK5+M)dszmV&MA9Wp z+K^w9bWqYTLvnr-u1lsQ_+_jpOL9g5c(!EIryw~J)z@%7R}w|lr0bHAzu?3T$y+bL z>`jUKEF8>}{QWZK@+GUOYEmF6rZA#VvY(P;MUp4l056v8&|$7b5@iKfDp7w5kur(m zAh>eLkNcseLQ=94S}G+$pTV9dzzs{zQp?JSWRn*Fk0di+06r=SpzZmX zDS2|rGsZ7a#+gLV9rUpjg%dcK1+|iv-H`+m^&)1%mQ(dHq&n?x=M#Lz`042 zzJ?RWq_gNFT70D296)@fAG`wGY3U&<A$pVJ|oSy z0U%iV-H&i0M5>*HNT~F~NjMlL)li%hE?sjSA`#M=r=Toa+Heiztn>+r&SIo-lx9Mj z=fAj0`UAxe=cK9BYJFb%B5nCENMEdmX9?1j0%%E;E~A~}C8-T%my@Ki16WbAbnRKJ zC`J12zkpwsuBYP@SEMs{A(<+DE(9WJ(m4!xc2)WY^|7Q&H~j|qHR8qOo&zANdhG#j_os@abm2z`n{kn7$7m_!mORq!qP3ieHAbCBItDkQQmj5C&VN`{V$$Nne=6;5}*gHmtT?YU2j3 zLz<+Az57yOA4DEVKYADNF6ruDp|e|>xgLW((x<+IXT8#?JplAc&(MCNU-}2t0|ume z>V+GW&ZCEUMC$tl>^+iNsKsJbntBt<9Fy*+EY7%euQ$kqbR}Myb014*)8}kbx}J7q zQ_?4?tU4{7qQ6}vJK1k{AZagq-V>aIY&NBp9c3?3RpGGA91qS(cGnx1=ZI|a zTkzUhwvVEMqq1zegFeAmS;DSP5mv zWtCkJIU&28j=7Vv@C$I)OSbB1==7HP-G}5UnfLP`KC5;32wKj`hQa|jFPlZb7;-^2 zm;_wBY%wJwFUtBUa7d6v&4Fa1OhXCUOEL#a5GBd>(`F%Awy+cM6xnn(=F((>KR~X^ z&TRl7UDg{8k!!N0C!j1tHueTcrYxS4YFVmXdt@KUVnZ?kOC!1Obk$l;PC73Ia6$oIVQ1&(5QY>`Qv7mdnB^X;C5DwFM%TvW@Xr<}KNvH{eyW7jiLIEt{!?^EEP;t(dEotvm=^ zo$QP47_65`=`hS~S$iP32H8exy1OI0^)?LMm1+B7s8KfZ7)~_Fwpk(BEE^;XEwVIv zzqHC;r>{kuOgImc_hbTph_uVHeg^4~mD7v*zHB9>nI6betl%EXnt#Pyx6JlK80wMj zqsX*Z7Pty7^~w0#K>B6J=_VSG6=lN0psbftJ43QR&tY&_mP$#P5m^mwz8=X+=!-Wh z+oFT@G1(tq8arqKz3Oylz z&;r~^`S44S^pej_hNQQ=WgECt@;%cqXa~B19_?u}++`(z}=949|Lkzo?HsmdGgWsp)6mXx)-La0wR@i6-C~+&zj}QmoV5O z|85NMR=HVCCc}PC?0|tlXi|Jn>jL2_LK>SGFPylq0O%A%DUKt9>jFUkTi#+@OcDDS1a3mNG4Opxph8ynuy4J4NSgaQ2F;_o2l> zagAabN5vrrm_4kxv>1ae<{e$Q;a!5BwwMRo1sAQb^#;{70c+~r4=bybbhQ@ z(Q*l9OB5UO;6$mS+7`GnMa%<8mMgwn2gwRW>J3=0R1CYqms<)aa;ZweC1ur$zv$O5 zY81ua0$!{5W)=qP6!Z81)GJ0`0e4#w@Cht5DE@2#cSrH-O-SBV{4#|#G%BV}!HFit zEXq1GD=r^{vKGazFmSDk`D2i5Q@ly(n|q3Hi!s=)aG=MqLos<5bN3ZKAHh(kVkiWQ z?o!mbKxen&1=>&aD7MiKqF1561wfxdLHAO>;t?f_2NXkU;06_G|AXX^B8?LB!wL=s zMk5M6wPrk0oEimSR1ricb;lH6@5JD^;?g2GIH5Q|$<4=#H6LSeQn4coWJ=+19fqbA z`N_b|C|)`boSo9)H5js2x>1*jgVG|#pri8PSAZW@cFM6ZXQe&$upU*;r#-EU^5;9? zjwxGSflha&m{JiQ$^{gTpHNm@gu5q|leFLUQtH&u5}jIvqFK(RX+Ry+;!!PCxN@6eDo_sZYtgOV=hnW_&Z3xGBXm+7bv}+#rg`Bzx@x& zij+Un&o>n-#gyGDQ3`&8XQj#tFOV|jv*94+$}b%OuTbV*1H4jM+5q@1<;CwYSEYP* z6Xt4_3aV4qDLra2SFiksvSPQDof#NxQ0~&e&>iI$`{B}E<=?a~Z&bEWF1<;4b2$bd zDnHl`)t$;5iY>a7OQ|cVTj@)?gdXLpozT*&Y^D?FeadLsfA%Y%l7b8<$6_%!sJyTp zT85PTQVb3&S4ROpqP#PK!ADBB^;p=bavn7jjVbF&F*vTY(92^&IYo8K$4c7~I5?^N z>UBs?Dc_)8@M-00YFnI9c2gzPPSqxbq`k`V0kk-%{zpe~990iK!JxBhJ?$Kis?y)U z-^fLkMuj+6RY3|kH`VL(u{oyNOcvQ6_Q@6 z#qk*QR;3QZiBqcJA{g>f&3PYiU)8}9kkcwB>PzrbU0Mg6zpCaexB%7HAAtm_^4BYQeeVM;S5#ZNFqo=pIE^)=t72Qh zT~qx^7b`<`mLB^|l_RxpXQ>)IA(E|HL9ewORTLeE&Q%TOVD7rA?ko6mL$%-$oVcl4 zNu{DZ)d!S&%2&Ns11Abpo2UVzP-Uj#P?72=IZ>>7T+_tJDl)`9JJ$8k?d#c1l;M!Gt==;#2+IAN3`>OV5G50|A zO&%P4sPc;jpi}j}2j;p|&jbU|t!k&hy+_rU09>zX^Ep`PQ@u`sZNDn<6x_-QO7$VV zcc)b;beqnoZc}dCPMu73JbU%QIkeo`?priWiBH#|I|Bi&Dllpmoh#XPxI0b;S z+HVD%KdPQf=~EZ=JHG(ns@_QZIydz)`W7EkuO7#oyL!t8IB{G(69g?M)S6eJ<)r$} zJ>b053$H-LTP^m)314;m6s(_C&mDp?KlQ_9ApYt^DuM*4uTW_? zP`#HrB7@Wl`XRtG>SeS$3|22K%0ryf;9**Wz>B}C4v@3;eSLETJQj(GJaOF%BF^^{9U zQ2$Z_or&sy#kh2r)cV=rlGGLS#3ifO&4HE_^`C9vE~}TZ;pY`~U_V4s)vecHHccHz zFTktnsna0o>hIG*uBm+}tCFG4rn3Xt>TT1|lB0h0zl^SW;2l`Mu3ktf?i=c#ZUJyp z{rOwq^3?W}1j<+Mq117KdgxC`7OF4No3=<@vlOIQUGp5gE>Vxu{Zgua!vsK?dMm{% z*=McCKbwxbp?yDy^LCXX6r*#;7sCIfET&Fs1GvHn7U#I}otxk;r z=~4F;g7m9%sG>5UUPqg+LAAL6xFNObbGS6DuKO438&OYe1oue&IXwuY>Pl)5A5*_X zH{ZB=Rue2tsKj9p8fFl)CmcaMS8Tv`3jyPwC;HoyJH{fW5|#*5IHC zT?=K7n%w;$hczR#iE`3d&%oXh%|Z%Soi+KCE;_1t=>Uj}#@G&>t{Nl#{oFL6R8=^p z*>8qUcg<6jv+~e%W`KBV5-2l!TqC6V$_dSC3Ug0tex`O@FU{(`SeUmakhWr{G%M+S z=A)_j8FRjxf%$Ovw5FUQB0r7KH!u{a`Grmg1!;!+z@5>2N2R`C&9N0w9iln07EXj} z{-o~qFilq_tcPoQ=xZOLdAJ*ZNX@s)AQGj~XJIf}GcEvkR%6)=2V*pEL_t}s#^xy~ zi_^SB&%-&*PO3(n*DRyUb3qf!02i-WMBQN*HIpyGvjoj2*TE%f?C!$(OB#_qe zQtdif6HSG<6wQri!ClsL{tXLPG)L+8ep59^lYmRpIN1VsRWn6dxO7bio$|S+*|-i` zGBls~0GFw04!}~fG(RqcvTV(B^lJ?{nuC0ZXf9I#P^-B^r^4zqyT68K^_mF^{BCPH=visd9H7&jcQiS5 z;O=V9)3&}*lTrs?nl$tJ0B_b@9s}2+@p}(TY1Pd84qmruPF4VLPt!6DK)WV`j^uY} zu2UZ6zD7J7+yjla4E7#s7A}RBPR+$%FxRDdVgOpYH6iq2@6nvA0qNBQbYQMeGw>M7 z`Ze!`!rp+!mA=e_nme~ahBU{i_h4AFgL*(lGz}TB@JKW7AmF2#n7zwj%ryeKwPxT@4%j`wt<2XH?8MGz>jGUP!prOwkr(|dT39yfb-N2 zP^5TV>qY6s6WWidT76RMK{Y8a?YR;-@2zcF1`DUO?=A!9qut{T&R09_58P?(CMA^l zX$$Ff;jeu_`@sP1$SQ~gYQ5$_XOMP27vzlg_%m2vu-01)3nAJ+yMPPT?xXBan6`W) z0O8twA3-ESdt8k_T%>mYM$AQNJ80h;t^J6;cxSa?Lh1CDoF&5?6>MYd5@v3z?!-dx5*G-9Ydw zTHQ8SPt_K$2A8JY@HFPGYB$pREM1%QHsIH^FRq238QMt+L^8Fi9q=Xvp|eaoLpNBt*8c(|E41q;AyTQmOeZ>SY0LkG>MHFU z6hT*OfBY4sM$7yhq*l9d3ZB(zlYW4^_1bt2xZ7G`HsB3f@ir*CquosBH}7h9-GE4= zcA^GzE!vk3!(OX)a}bRYH0V{r!A!fQNMQa0=P7wouh-jLG2-Wc?@aq zQ0v~XHj`?tBiegZe|V&wTns~_+9Aq7j%nMAfE(979)!*bZ7Ib8kG0n+X*j7JFNEqT zt(_Y#!L+s|47eGs;=c;NE@KEddmYaYS{!swQDwwYmzxTEhjk8Y7;@4z--E~z-8Xaw z)mfLufR>}Wc6wjC=;oa3R(pe7Yh-NdJuJFe4H zoa3cq)&tmj!7lEP+iy)&=RKe7Jv)aH4Z>agf6fa@JO9sH3p+} zpDu)F(Yintl%3Trql*=zi#Y_zSe@`QD2vnC90PYwx3CO=^SU`bFmyrpHYLjAb(?8F ze^K}I91JGtszm@K>Vhsp@{+ECj>aVEmeZCoS$FLe8qi zyG&;c2PxM{=+~brbO)%;T&XK-0N|GHb7~K&($!P0vRY@PTfauPh9c8i-5ZG@b-LA5 zzpdA8Uy8Zgx?xYOp+WaIwYA^TRnh+sxT{<66O=XTa$kg&CY_erzMFMr)Z5geYqJN} zs{4x~ls29FEGWCDV+%prb@fy-=+JF!gcJ958|gg41KpxC;2!Eya=~@#)P(EO1$hC` ztrGxTDSE{z-M&wG5BJq*Np*ZulKS6 zanK*i0?twY4?X>d^?wz^YbSj>Wsr~PtF$1_`up_GI;#Je3XLv$D`ml5_3ot8O@H7d zv>emdtpst`$5L(3L;uol;5_vRtMF9mbN~C{LH#5j+)4e7jd0#eFWv}4-g-Vo<)`#N zo(J4V-%LdpU;PJP!k5$f?Z1Qg={u-b%wOL_S%3ijU*#|xsIR3uNsvBj6k5*ckJ0ug zSU*Pr5~7bO!CN_bX7p4Dx04~Momw5vatIwuw zTAaT4DCW-TYpG&%Uca;#dW&r$&>MZbVD-Iw*5R06%CH&OJNs{e^PmeTZFXv1?=-}evZ()GS{%;TDV>pK8s z=sUiINT%LyA#`Txf2DdywtjmFNREEabFh%Bf0LfL>-tG5y4=v`Q!V7CK4C8Y?s@tm z3ncUPM<}ybpf}N9x==soE4WmoU&De(v3?t+*h=)za-ghK?@u|8GX3ohP*$!NE&x}d z-}OCoR_guM!0TK30NT`4>F1NOYJDOFTQ&MN`q_k9eQ!0C)#(ppVhs&?E^X89=)az#%ak5&)mKt_u}%M^06OpKFLVLWu6LvUtPcJ1 ze;|2Z|IBJ|5A=V14){a;Q_b+YQ{OKGu1jAcguQP4SJwgW(L213>(Z+?JcdZ0eilWa z{rVNNfg8|o{vO<*{(oO!Zb*NLZiZp~>!W~==*w-P?2$g2+IUCxMIXS4G5vvmpln>f z)*B)d`d9q`c&vACfJ>A5&$oa~>G5Cr@QmqKWy1Q5-a(2L*%^M^0(4B2#} zI2z*ep!%>OVh5Bt8B~-nIATa`0iKWybaa#cQ|Euml`pB3_S?|_!{a`Vg0lr zfy%~yhP$Ou?Qe+cg=B!?g*%W8G`IvnS&(7ldbo7Puy+w03^uHz2R+1ah@$yWLn|G_ z4KsAp2PNEKR}0kd!(;oM9K8 zaX)7Wy#`;-8~*Xf+y%om+9bvs;y#3yiw3hNxCBGlb8sTju-E|HC4(K+VUrB&`r&S} zA&=59DTZG@grUoZ<@6f8VpvFfw^W0G1<5qSu?TQi4aQP%>4v+jU?|gIr3f?2;8csX zXB&!XPn%j3LXf?RiKuepU>rHU?44aMM+6_Sk;5rP`&fxAF z%$acFfnnKIIPuW1o4TAk4Z&30>oQDy4-4IfYzjMj4EcwE>ot7-HMjx8GD=Sk8urjR zw;_WoMYO|);T6D*7~T!V;3LDODBGWv=73Bzn^xOi-cqu)fBG^n13y(xo)(hbvw z5*aubV@Cy4yBhs&W6;gG-W{BW@w2TUp2mO$Sl@A@kwTgi#y7lS@1*fxHHepyO-^_l zU-yCJDPvwDEch6U=oRa0bfu{Lw9!iM0zcy;+Mfj)XOBZmknzqNaQBSy(_@efHY&=Y zCB!(p4VNI)xNICG%(x^MbKyoN)nOxyV`UJDG_EVfQlgAqRP~BBmb?S*tg-Gbh{PC| zP;3!v9CrkF&KR^9@bkuMvVOtnm;x@|xHB3qT{NzJ7uO}hczzHrB^tBPEIs#<(cv1F znPjZ2fR<#VIv5sGjP-1AmyL$c0Z%oaHh@brzF!XKuNrTB0oCco?G)QzGd@kBLWc1r zit#dy`)HStWn@#mD%B#Vq%N|_WJf23QZ#8^XNS*g*YgoQGr>u0#0<;Fs41*tH;{3#?WjfFYT za?AKNJsnlXRTRBc8&l}{t1aEXxjKzLYar5P zTuVi)ZsSG@VtR}YR5a@~E{Ox_Gp=%np?>3CDmM=pOCREb3>r6QK+A}6`2#rk$T&^8 z`%xo@Zp<;`5qc=cjbASWV8Zwvz49I#2k4DCX>_Hx;*@dKZOly@V-Mge%^0t|34nu% zN1?i-i8+k9!=|^&fO9f!C!I%3MM?0?*)&cmucM|FmtfDublm~O-PFQ|pB^S3ir76( z{X5{IGGXl7u>Fy=W`I}Dcg_Z!*?liyy zO;6FsJIM3}^}7X|>|eoPh-oq1$)Tou^c;nm*e}7)NK?Xkh(wuIhJlMV?b?sIv!=Pb zAQ@vCKZ_N`n%;jA@Ho@p-;g|S+CVM07fi3Nf)nwkH$MY+(ezIe<`PUQCg6!C`wU#A zOD5GU;F3&#^+7V(bcTYaE2h5X7)&*JJ&nOMQxr8#UNw200zBPRN)0pDOyl(1Oqr%o z3LLUboq+&kn|i5RImh%O9dFGw_0bPt-8Ai@&@0b$I~VTeo9+%`4Fx94TyTY^H>sXl zWU8|Tpu}{%mu_fN2<80COh3`4t=x2I5v*63Zd3crEz>?KW>lG;?E|Sc&Cm^2XWCA2 zRlP~S8zQ$&E9l+RU>czm{vA__19aXsu_+#FGHw0{%9>3J=#saXcDF)Ht7#i0Y}!oe z_Rw@cOWAbH=Uq=fzhQ+gPCiJE1Ew_`00vFR+95e&`hw2?Ju-bk?}<@UHoddPP0hXFCQM&u!|TVU`LDsyq{;nR za8su3&fum^)o#GenAi#!vNQV>W6<85O1%J%=C@ymg~R4R7XX~hYo&1Fh&hrC;%xqt z`qqw`ld>@9YG%+ScQc=U8_JHEf2D`Z-Td0i5b-d7LBDL`X;vKtIc`?$0^o$%jy`86 z%`f(Vc$r%a0Gu)(q#Mk~Tt_#GuX&^Zd%n$H?Jsy&H!^*50nL(ZMVVQ zAal?|xD;$YcpR!j%%)^;q2?lrVZ+R`=*N!Iw+sKO#Yr z%<`=;lx+UH6IxQt)6@ia+1&aT=B}6z(l;l~JVBBERkMt8>FMUTC^Eff-t=ES%lz}3 zFqCOF{D=#gZT^wIKsn|#+I8ice|`+FubbNvFn7az_gQ#-(_BiAeV+M`B~X@c?xhq> zp}BD^z z;5Ft#4oI!Jo~jCU=6VYJ>dgoKg2-)i=+jW$V2%yM;2rZyN=)1}k5HRWlleosX3geR z>!7;D+_D8+tN9}eTiVQV&ai&Z{1VkdI?VCg0Kab@xC8RQZ05j;hvr?>l-+4AptBKO zX0lX zxks62dkc&9!VZ?%^!w0`mKPi$a@g`{AplO6kjt1mVv(i6y0hgc$^{*@yp)VV7t8Zm z7<9Fy?E-PP?4&2$!(x+yg?UF%tft*>qNO$iB9|;XuV608 zvU3Jnk}bx!08g>ZP;hYBQo9@%q9Dt!3%enua9E;>n!0RkF^dm|27VSS+%597PAO;&O-%%dA(XyO+ zN180dPeY{HQcJsp7R!#qu+VDxC>Ny7axMUp_bjGhSZKH0z5&u<>2ZeH`IApoK7m~vkJKCm=Sbn7=x{oZg=~Fjq3Hk>1#w-u1iGSSENSo3L%SC!!JhmM9 z9NeU3BkkFzESoAZIBl7dLekzEy#zWPtZO_W;%MDp4(o@ladfvjSwrf;9kI63)8S$@ zP?Ni>RjtFIn{_LteU4ebeIA^)`n;?1I+I+t&R4O^s}ZWLek%Q?r-=RU`?g8L7;Uj zA0k244X0r5jCJJ=I1y|;cLiocthucKgj%1p0X)pQkaj`g)?@TVkFeS^p(WCqo(st+ z>nKHo(N-C~lh0aLUVvnbwRRpPW33lxLlsy(SJa7Fp2xc!>?>_@Tymj*} zXt`)DrB7Xg^>f-zCR)Fp3+|Hj*&&D|Sr^>~F4?-2ibE+@XA0*oTSNR|;fi%WH3z0z zPwa(Anl;50fU8#31(0;B_you`Ys@{YA;Ws;Ip8v_y0sY0vM!;}Iota4dg#otI#BCg zu611l%wD%jKY+3u)<<(8dDA+3KX7?g4RzWVT0cGy$s%h^AtZ~fo{zzmSXI>PUTXEV zhx29Dv;$CGZaqTxS%ua71+-LJxBj=mvL5$?yEWF5|3PQ1HUBZVI;#h5U+b;&C{J|T z`hcF)2J7qembzor90GUOy08U+Mr#he(wnT2$sobbzn6N-M2Rq3%R zpMyxRb;1W)`mE>LVWHpp=8I4^VCB(K4yK50{6$(b>}fRX?3UgXv*3_f0bz~{|kuBSW_lo*3S0p|N4GyGrAz+VB4?> zE;-sB35Dcg+oX5EIoX!dj~O1Z_5B*koNZ6WVDPAI*Db(ZY`>@K_%YjtC*g~`?XSOM z(8KokX}IfY>pua>fvW>BSt`iZ4U*3gxH#? zMigrMwm;xuwu8T5Fx>X{AiyJR9d++DLEJL=)bg@KGlqrIMfNTX75fEg_Mp=p=2m+#v_j}&I&gblN-OqhrI*Dy0zP7_;tz7|-~K4J!!@aRXvG#gNShmc&>?D?&0Oo&My< z8OF)22sedMB!lTxM%UW_X^eI{0%tIeeGOhFm9Q;cc zM3&1~atvFd`3hwJQOg(k3;V~BZso}7Z{umffX`%TVbV$@iirSE;5>|P`|`z zr0$K&jK>~uTg)ihhR1V-;j#vjC5-QA^}WjYD+3Cpj2B+Vz{(ig>B>ntWAttCt})m` z_^V)aQg1~i!$$A?bw(X6AytgIR41us=;>@q_^Jc3bThK&fp?qnCL31nFkGmUxrecO6j9%097~6KFXP7l zS4J3ycc5^OQG6DX{fu>oVQhdA|17Zkj4j_lZ;-L>Yk(off{$SH0ppYxz%XO{Du^SD zf9V$+WmJV@3=bKaSO=Bi&ZBdcC$ni46ug-G-oQiN%M`@{crzPfK-|YXOFyFz^P}ZZ@MXr( zx8ld#pa$m8{5Sw0fVq}B3Idt4+hKY?Q%*hI2bh)A=W&qfO4*-7%s1&~#$o296~=;? z4lS$%GuM>>3t|4}h4Fk%j}|7 z`E;feZRj$X8Giy~GG{h}c#b&`481I-nu;#j%s(jWki-0oE;r;dOZ|c6G5=VGN0-n1 zsuz+4%o$W*E@aMF0#L-fv;rYrWUd(j?-H}{Fic-&{`($y#mwF|fGf;JGr=oiuDTCn zSDCexPAO$R(*>-I`P^E7a%O8dB(E`#KM7F5JYzxBmCU)Fki5?PnUaQ8OutNE)l3yF z*EP(Ow4JPFifGQNW4;^(-VJ6Zt@iay|4M|^z?@4pltyMZRV|yCC)zNgX6F47m~LUR zD3#R8{L>X8ZOlLEym^yZ*@RebF`r3+WIOY{pCHn~T(twdPG)=>h+WJgDlXh%a>l^x zVb+`gxXYYDDa2l8G#yR)m^-P%`ySIm=i>X!uvjPzGM%*$8DeII0(-z5c?kgyGo=am z;YOHz1EL;fW(^^-hfGg1M8=rGlzD!{ET=xC$IR+Lh>SC3>!C2gbkNCWlG#lycvDQ> z97sB|T<9&|!+L@?N-nH%`u<#5^OgX(v1(U==g!J~0^{>web|BkJy{`?Z}nm&-v-#r z`kW3p-Yl~NruVT1Xae+MZKkQxmsQn_$oyD#e*k}0KHatoVD-d7A&~VZ{oRrMtT%Un zcYsx>hv|c?4X?xBAyywX4;*GC&j&GxwSt~YFw0U1UI=T7a#o?NA3ugj7;9cEqCUb( zp#?LXHA**Kj$z}kYVR`cbQdpOq;pi+YjWXovtV938W(I2(ZCo;0+V>I5IhHFe3|TDJW{707 zq(#7TSbem(<+7Sy1t?(UJcs9bp7oRmunQ~&{Tzj?$}gc_#LB0Ro{KDRsvcirC7WU8 zGOHsUpqOQ)J<%1`_~+o2ur_`Lg{!RbDnxJ>7f)z=H z@Jd$gARJw1t@#mH73(+$pqljo4XlRsDa|jnto4*Rsbe+nKoB=rEBj%ro>eg&pn)ZN z1(J=d7wHVt#Hyf1#b(y0Tj9NhhA#4IHPCZo?-GIN&d#BNwg)@*dyK)8UCo9S zFZRC;ko0D=>3i76o}_ithu!rFh`#K_G%!E*ZrZm7u&!{fY#}j7HV5q@>zu_FkG9lGy2#t4wBh(DHeP-TDG}DePA_!b%!jRt?@+_K}wW(%C$k zwlmm|c0n?eJy8acEOy>E@Se>+JcXg;u=jn6ICI&Faj=rdW@bR7fITk?0?q7<`s4hEtnK9laXZ zZ%`efk$sukikjHj8==?Cex?cvE$m3D_qVZ=3V_{Y3myTx#eUoX$#yp9KN#y^OX$ef z#eVuPxb0@gy@nuev-eWh@g4S;lyB`}Kcps{yX;)*J?LeN=K$+tS2^J59=nx_iT&&} z3ls*}AJMMlKAUkIya()}OW+N&FATx^2s@Sj{mv+xOLt-(vbk!Q9%FxIhvZ{+3)S?; z+0QKnZ-UML7eP$2%ie*%DRvq)-8pkYo(hy-!|rTTj?XR98@LO4tPTfEUhLv|r0;}d!O~P~yXU9>f*K$5P3WYk( zg(3|42IqJYc=eoAHY6K3DdUKwsJ}ZaNEYI+6r)! zGe$?tTb%kQ5NA6lj^4ozh`>=NM^A3MI6ib^tec}=0rlIQHMG0G!`V&6uO7}MRU__l zUM~i*mt&#ab|2@9YDnJWh$+r~PEReo4{%D@5V_CU;RJ<2&M|uVhB)JV_ylu@#R{n8t=y)Tm#IXd-gkE0o>gi;60H0FC`}Sb9uC}KEQqDB|NNy zTp#-5QHQu^7Jzt|YuN&YAnphcj)J*osE8cGHLXNsq1-K}VI_uAQzuH}{#N|S}Au?#$ECqVkzf-OB?HJ+*q20 zE4ULZ5G%R8G?!oJK6Xd&Rop=}Ks7gmN}x5|muQDn%e`xb%{uN`O4r`tz8(xv&yAyO zZv(e)H*7X?kJB~4CT;|+T+Q5P>S4Nt8@~yrTe-S?@Y=ZB=)`xEJDdrHTU-|HF50=v zDiL4@H$efclY1l&HoLe!t0CFVeJ&ctZgXeH!q^?|J-W2o!>ypSavxVx0-N`^vnZF| z&s{)&D{zpzxf7B@+|_g-e!%slwxVI~FI)sM!aXquZb!Kpxlnk>-Avi#F|K_xz$0!0 z^*uf2ZeIhNof6zPc&3lWs+531uo&eE@S4+Q&FYhf{ zr2Ke+bkW|Q=S?*FfO}uUrn^NnYz6=tc9QqY+CCFFPE(c;1^|088L4`WfI9 zZ+S5!6L~kE19qAh+X|5+o;?o46kgv`P*3G~eE<(>yf#WjWbjr^0?Xu0qc7kb?bK_+Qmzv1*IGHbAa2tGc54#@C+Py z=;6IX)978^02{ns-Uwa7@8fw=xAHySlFhK$&$~hk?EtSo9oT)I6QxWBd4E#Ma)|dX z{frNI;lU6Y<}IHB7~wrhssB;lGxSP5@q03h^GkH+81E@N22o>dMcfeiS$UFZ4UO^Ka4R1`ocr8&*8|U3Vbq#c$x@ zneFBOHXoz)=AWg-W*`4y2h@G|M%pX-@_+Ee)Ai%)cEF!MzdjovfPeBlOb7D0A0g`f z{Gxh@9N^#QL+>E}-G$IQ#Q&2rtcUqEy>J`Ew`Id$F#iWUqTR}d=|Z?Vf^?J z@Q(0vX-^c+$E1kwi0>H;$q4>;!w`w&`_jhq82=&7gU9(nlwOSDCyax5g8#!}7(2=R+y;?C{!+^N74iM3 zGxZ|BiuT^c{I|&a75?K-08043hd`u^|Mg>tl=GK=fgrB&zoO%K1;5P>P|5$Drl;%t zO6m)$;cqAasO7&(<*qvZUvzT2!M{nJu=V^)v*5jfuc579BR_E-#?ZtsiGibL{&pLT zweW*!hug~kXdTAh#xHOHyUA~T9^e*#236F#0bBwnxxPkJUwRs|+?>1$6@eZi1hh5R1FuwJzv+ z2xdJ7(Nkcfkh}ydz6NivKt_|5w;+rbjeUaPSPa@nP~Hckub_#_qke*A)XwQIn7$p3 z0tBy7S|m^q;SI_Cf;%bT9T0eY2g!qi@0(!dkf59re1`=mXu=H=h6(NGa zxsVJM?0Xd+!UTW524hDBD{PRA5OmV&8!1@h4v{Fqbv1^0LeLuzV z4jxFZ;Qoj3kSFk=FDGBHDFne62)?40hw}mzT>`!!kkFo}P|*7>K#{;q<)DiK+hQ2I zBxs{vs>_0l)VNzL$Sg%$0B95}dk;}J3I3uVu34~~zLge13N=c#3exBeX%l!BLH(v+FajQK2^RbTg?2&b zOb|N+qVoWqf|@7r!*vN(jv&Bp!GgIM`)$GRloq)oSoJ1??-8uO1IfFBr>QHqSCITC zO!o=?Hvxb51fRbIoBe`fnwJIyA`d9s7ko}>`a!`$N(BxHUZMH=f#4n5!VL@hOJRCM z@Np4B8Wp5cBI}_bm>NIF1kUSW<&i+z2g%0**LtXr3nu7J%!HtL6(lF|e!|$4K$s6n z7vUJK%&x+U4-vJSu;E_-cj4-*h|@#ZvmGLyLX{9iFX0=sHQFnzUIC)F@CjP3_X#~W zg6Ajnp^cKiP*4t$0AYXs2f(Hp# zQEn|%D5ZHKOt_y9^&`T`TBwH$8@`6*QQ>_PL?VQN^WZ2-*iJ|16T%&|$2=(<`U*kB z3g4nX&>bf{`XY$&!rj!*o+#WwFW6~e`DK74p*v;FQiRdeJdi3Z=meG~+(pw`hVWVf zuuS2~g#hP-m!G0nU+6)(l3byIdg1bfpS}$2yl^YsxV<1u{Sred6y`nz?~;(S2vJ`a z>QxA$SlAzgIIjvz>6I!KemDeBCS3S8K!tEUbxc$Wzx@`*t_u~EWvmgt_Y`=wLKXc+ zb;55S0BaBq{Qogt*h>eaCgBAtNwx|z@-eN-gIfePc(x93>1~J;cvg_O)BIZ5dD1$3Wr6XJ_{>B zqG|L9f!>`pkqsts7w#NWYG^^;GGeTQ7I)&bZRr6(pi!J4*=;R zr%8Zwq8*e`$`Yk72FMmkVi8%M=)$vzC0~@$3}XeN+RX^CSTuM6#4DoCPa#<%nyN++ zS4Def0xK20%Y|gQD60|b*F@ih!C!@F0d3tYMS>Ynzb<+%99WI$J}vsSqB)c!s}r%S zfZY&%7lBynMb&f+Y!sFI0BaJt-2&Du`r`sXi|B_icxV;Haxu)CqGjn&za<)90MIT< zcm%f{qAq$-Iz?`@s&$FZ!~xtEsdO-QN3`%;gw!K?{wgHzimK>$=oRUHfk>Yya2q`I zi!Rb4JRsV88sNUD%N3G?qTqU{4~gm$ATliab}=5oh-j4dFQcNvv^9DtTA~0pCNh2w zy+@+KL5MsSeXd0;wxGrMZ5%_Zz z3ywg~U3}$RJS-1!@9O}bV)g>)d5I&!;BT+^vn|l`7XL;C`+ef}XQ1aNmi-6s{^BQW z2sc1nM|F}wacU!^-A;%Q-=p1Hq{E(Cii`uA+KCym;g#=p~4E&^{|s{7w|~PK)27S20OELL1g( z@tmK4oe}>2Zl7mGKj0IrC)&;{rc@u%MayDGLH09Gm6-XHwMJElGXfw|DfXts z^>y)qNJv(Rmwy0}YH|5JU^U|RzChHq;@vHXtWNwZtpN?HYPlTC=nsV{a?ywnP8 zN__1Fh&W5;xxw@v$?x<+yGZynv%5-OrSH#8@{3)B(eoP;R`mL++HGPBu|1G|CcNUCTi%9Z>=m4iIV zup1s$z9i`>M14W>loGr`$--uUB8ll~1W_hw@c>pXd588P*CYq&K~_j&DPLYG@jnSG z*Cmd6SgDrGIs`{Gl5Kwg)Jo1e0O}-9Qcv3r$ro2(tX^`GzJNx_$299VNm?!fYnHtC z5RxsDRVxuht0ZDAz)eXq4fB>Hk6NSJB|c;D&>`{s3&uJnzx)kjU6Oz^5V<39ae{h} zBxfeTU5Skr_FjpOvOj&2WmHeSC%GnodcWjmAFu(*OY6bAFKOM05e-THp?0|kk_S}c z9hS_ahdd%NE`a2yWLZ37c__)FhxJG@>;vLs$uUYZjZ2z0LT^ISOS!yB$pR`4O-Y>o zfx;eXBvlGsq@Pl1$5nd%GhlAg=1-vDE|t^*^NNN?6&X(jcgdrSYLe)fG* zCEYRdkv^n(!dJS85@-I>F{;r9NM|fW)Pd6b7XkK5dnx^PKdZ>F?_?u#?ifgBWeJbk=UD$4Gl$K}fOE-4hUrlZN?2FJ3C4&2xe@fEp@K zNv(gvbfUD8wzj9Gep3Kvq$@^1Op*H2y@FI}0%gzBq|JdC!&&K;^Dvz*-A7r?bJByC z!ON1y9fRp?>AeYd9XVBMQBmIze zC3RB#fjGR$QgIz3tCu!Xxw1jJVkSVNbP)?~o23gVJJ}-L6a zNP);>X~XXr!?<+a62vkgeUi@MlhW*VSecTpmO#NpHfI{tU1bFc5OI^Op_8zuESNrR zFIo2`M7>vb`UM#Cku{jX^OcFtK+;dPW;WCVWrM>I*)Oa83A_WctZ5kSVcFj_%ph4K zm6(EMJ=9ATCc8TU-Vs^R^B{)HmI^WUNSTPna7@;$fx>awIW4f0vZ7aEELwJIDMVsq z!#}`#tZXs8&~dW+O#tyS0d?>t$c7})J0*MeIusIRTc|JZwCvb2gp?$kPPOu6*?TQe zPm#@d20^6CYGmN0$+BsfXJv2DsV-gSQ3sI>S!fCTWy;3C!Y7&~OMVtuwrq&{&vIl9 zpFl5HHsuD8Cp&l^rt@VxHp5DR>{bv&&dZk30)0U?p+pdcGUs1sZXv(7P$^?Yh~%npjRieQYq|)%rb=l>t(LAEH%h74nwa|cAZAlBpWygtXU>_ z7LqNpQ?!J%%I5tCe{HfUT4ip^90efWlHEE9^>*3(EMOh7rV#KtWpii1beAl30K{(D z&$J@kmRV;(@{TN*0h>Lt-S2~VR~AFLi(XkiP2zpB3d;T7lYKj8p;Cah0Qks6BeEciK=_6l2n?}FrU^fLy_dG8|55cwn> z#6sm)17Iag?ve@K5&5=Lz{2I?Ik0(DzTh>)86n?7uW6+GJF0;llXsi|c3j>~Q&*IH z<~z_kAwQD?M*Cyv5jjC}qyV6pNG{csc~S5sCxUS3Z96A5xj42+$Ue=SCw ziSj3+pm18Qp_MC1{tx}O$@29gD4dbcpATM&{17!!rOKbCg*HtdB?a-Ud^J^_)8&hI z!B~d;u9e^w$bV>tmGknyA3)@S zd;|R{zCyWfJ0y$bbD{w*%Kt~fUy`TO+J9NTDgs!se2i|8T#=r(GfMpa)VZpYX7xn}@ksgXNV zwX;^H{?4hdr&VwLMf;Q`Hl}@x>4TtEvz)jXXZkoS+4yU#1=X4MObN- z-`N4lHhD@HV!0`Q@CGDr$^Acp_jdX2JrL=Te?dE|PWh{MAlW7NT?AgYdJZp#_& z(7PjVdH`aNyk`K|UHP;%@X#y&UoK+llc&50xA)}#`vkmxdFGn{1M;fp0q)C(_dsM& zzULmmko>pV01xDco&s-J?%@Y3BXZ#=9F5B7e}tdop*&#<#>V7>w8?lRkNgX6AIn** zp*Jb7qPC(bxjhLyXT|GO7I#$~q$8r6;w~jn+!cB=)O{6C*r4F2*hb9?{)*X@0}N0U z(yI}u*hswnidC;e{ea>&jrO1-`(=PbioK->DM&GS6j-n#R0Pu@if^=dN}-Bvw5o+E zvR&{?A5qxpRB%)=UIfVq#d8KYic~aFap;)hhbHijD{j#X9i=cg!21csP9@x)R2b4= zGg{Gj6T}!r;a%8_RqXPBLY$(HI^*IMUbOW~P<)qzr*um3C(T)jiV!{|Pb-`#^^v3~ zrE^EJ;^%iT+B1qedS)q#f9Rx564PKrchFGzvB|6-()4 zdQLHGA53Q{B==w}TT!tUSe`;i#_|B?t9a{WV7-d&d?@rOa;eGT zo}wfbynY3f&b|YR$v-ia`-*%4{0%B})W|oac$1F!4;0T)_uH`ID>|-@D7yDSeN^$L zC)_?%1cgCiOi@G0_eYAsc@TN5IQu+Ik1H0?joS%DJC#x<6=q5ZPbri%Avr5A)0?$N z`2^)WT$D33Ai64xsHNXcxq;GC?#i9{2+2bkLro)|%0*NQ@lwvE^u}K0<7dJ1R=!Q` zs{52%dVu*TS8suczjEgeJc0n_tAp?!sC;K9z(M8j{{uLroTQ`WVdcdCAQ__k=Pjs* zD&Kz|LkUxQL?FPU%FRE57@;h;1B+Cyrh{#)a#b+mj8pbf7AIcGqeUt~`Hvrnr<7m& z!DgazFCF+#D_1{)=_KVTYUE2+PFKR%8Rb*W04YlUB^feYL%l`nk0JV>NBO-w zz+L5`ASm=If1v|opRy?(BKMTudf4n&u9G380p&(I72H>P&xNr;+pem$OPoT=j8{zI(y*B{j0Tq7%6b`DosI+)U_2XrT99I27b4ZYC zBnFQ>Se5=0cp<7(YE}qURnr~!FqPk3#BxMcMCI*p)zNv-JF5DWQVJ2O=cup}sd7&S zIHvlT3US9(%V@73rFxrg;GIyt{WcU%suDF2iB^SD@-IeZ_#V7im5~~W;#A6TL>8}F zK;`BH)pAPkol>zr120i!rfU3Y)i2qIB}w&+JBZ0DIVEV%sK%+nk)m>??GR9D<@>_}#m8o9L23D?$SOQR~ z>Z1hMb=CI8;8m%1FNWz_m2CsCI@MY_>EBQ-rD>*7l}d3osXA^zp;_grgQHH>i{1#S zOSLQk52RZaMK959)v8SB-BF>)jaOKuqyuBG>Mu%Y^r^m^g!(;I<9!&rulk!VrVgrV zX|zMCt#@GafofG0h{LKX>em=ieKHLSqpJ6wfQN@FpLYSqRNE|2c%*uRO0JJpXXzo2 ztM0Jic0$!jTbxPNmlLour7{Q+lC%2fPJlh?J+Hy0i`td8^{#5SIS_GEbN>eq?rI$L zF;T1cRzlKK9d;2SUg}SuhRwa|q*>7OR!1y_5H1)9u3q_1o8BI$52#6Ow1tn|-04qJAM33aRQ^>NQGJU!Wb?S+&n6 z2q|6dMP-i+^*l=N=csqBfI_ZX{tSkar+(orJc)d@uN1Kqs3$_<@4UKTAFvDRU+GV1 zURJ+%0wTrg5K4bvQUB-yUWt0y$H1DG0L#>eUI131PN1)&QvE#rw%65f ze+aBfo&F0Hs?}_&?bfKjrD8^{T6G7!I<;j5Y~E1UnL(^q^QjxVLH!36!W-2+bZ%@_ zPp3_HoBCDSIo?!@ZSZ$X?Y$MmcJ*8Ib9AWr(*Ziw+C%Wrqh3kB`(5?7v?TYc+s2^R zr~ZY$hkNSGUtzOfU3L(T2Go}gurjPZVur$q`ZArQM%5K`bbhGzrxVJU+W0C0e54+4 zf$7KUng4+3tg%v3ZI9-{Q@~s_@7ICns(EDzFgMMR1hKel^i-4b(9}}Bc(0~01emvG z!T;BYGUnhZuYE*Q6FibN#7aopiHqdb=T=U*l1aVXoMUBuAn($*7*a^)}F+@&k zuF}L3t$CjZVvOcxDt*UlCJGT!oTe=r>hYSIQh+4QPp<(aYXT|zdPWmUL8NGo`XJm? z&Ab)B(lpP~{mrwQ2ufjOX~frHEL$U#!EKI4dKw^Cvo0HM^EAPaAepa;m=3H!GneXW zg__$RVGKnYYX>ARY6hsVc}bJ{4ZVDt!eZDg*3{jD-W5$-HG(M7%svL@g7J=8I znSB_5A4wV`_ zwKE?=#7oONfYI*NzDmbjZ*BD#;O)~cqTk3z`yOq`eYHQI0`Sx3(6QQI>qWm(vNbwszJ^USrC$#G}0i4v9)87?~ z*6#Zi3NczCU4w|#R{jEoIPKDMD8y?`RFg{3KB8*;DeVr*#w2Pl(S6v{+7H}dB}p5f z3-x4e^Dq?7Xp6G(uu`potOB+Hjd$#rm`igV3f8+w>YS%HLo~M1lg-E{kw|C&7Kr5h|Am_C|(%;d&ppBx= zzd~(2ZFq{b!+a=Q)c)EIkxSaIIsq5#K<~QtN6MI0X=9Zbd$o4{7JwRU<2x`` ztKC6!d7XA2rRi^Iv;O~Yd5DnVj_0Vh7hS9*9w0pB4*{nU;f`PSYzo%BgR&8b} z;%w8Nr32heZDkEaZfW1sL7`n+)(v8Z_SG+7rBmDTH1xW(DeVyH);^-7#cgeI1+Y8X zWBU+GkM@~wVC=3ogi>X_+Jk-I^=ao*%fmfw%Nqdw+RwYd8_>Rf2iSeBD=jF4+6~lE zFr+Qs2`dk@Ur_dZSi9W?*hB507+_4Bq5ycL&3zs=-E}Lyq2QtGp|qB#t|%17ymW#! z0DE=pAv{lST_U}a`*i=b0r=>S(TIF?JKjKme!58wFn?V)Em8rx-E=Al)IDf{+x@y< zDq#A6j^z&GA>HlYVe_y~Nl^#sbl)M|U|l-R$sxLXbT1@K_saJm9?=!d0|?i3K7jxu zbZgGRN~G?F6rFp&emn!d>4om>pW;5c||v|3wkBG zI4K-m)!op8SE@5n^`lJZvxwe#-6rZ-x~B7@WO0QqnT;SSb*Hp2eO)()ez+>#)GiRK zb^QkbYILKnAlB->PlQ69ZUL=aH*|r=V5~uxkpg0)?#^9^H0dhK!E4r?rCmacZjV3I zTXlbh!e5(iXE!2i*S$}B+72Dh0bZx>sXP$7bRSdqaJOzJ6-aLD9#UrLj_%_#uyR*d zH-Ulm>b|F>VV^EJ6(aq*d0#_eK-WU^*?rxdeE@?xKPp2E>6WYmc%Unw%-4v{k1ETf zy5LF#@lf}w7r-Ok%|rz8Sl4_3rpI-hCjlmO(aG>Isf(b_jwxODuaI=se@=U77k$wL zY`W@Q=Rwa+|2KW_?)uyGx_Rh7e;MAr^pEMUL+sUmOs7_Fy*nSgefq0W;Q8p^qkq!i zt5M;Ej{kh8{`ZuYOC|tjQ_FzZ#|BOH(LZ3q0&`5n$6igq}OTGg* zuAeyxD^dDwGXYNMV-CT}NquGv+(zr`j|0T$-=?f|tUilw^vCHB&|l$-*Z)ZO^b_>n zdlCF8{cGb;Pt@0TVGO7B(YIkbNuOH-f60358AzVdpWFzLqCYVkAXUGae(*H?o0Jkd zt3MYF59xXxZ3r^-eQSYb>c1WZ@0`Arx_Ptot<)!wtv}}n4>|fzrX!YoeaZ@e0)5Lu zNS@b6FN5g|`cc|M73!Voo^X-A^#;I2eKDOoF6qPR30~H3-w5x;dIPn6U(wH@PS_It zh9@9-Rqvq72BrE?>L4o9=c@q9^{bx1Ft6$LR2{F-U;GOGD)nCU=bo?Y|Dg(hm42-S zBGvkxMwqVAXLmubRv-H&Y}V)lfk>O)=X*qbQ!l2((k=asf1%#4pY;+Pb?9H9+-RqM?oD7_df&Ma z>DD(4;3?hKpW22v@8}tHQ0dX9?t`(r`V}28)~oNyg_S=211m;!Pai~QwL!fr70`$D zos{B!pg;F4Y!2&N{9$ZF|He$HkLs`2f%s70_&JDU`h`m%`AF|U4V;hlKm3K@$MwO- zz?;yoqrS>X{g*cp(v*IB6C|AtBC1pFF-Qa8&&BXE8{SO zOB0}{VfPWZ^)iGsz{6fcF-;fVhAFz+vd{4MR!I67f^859FpQXBEYQH+1Z=)5Q7absepwTP7h(wp@z@K0KyD6X=fE~nEDAGjvB7g z=M-T$b_={n!+P4k95bw>z5a2-_sOslWr%+j#FK`|{Sb*Z6uSe&82-Eh5NBY24qm)r zs2B?7L4eP^U^PHjOAv|OmL_xr^4O==8QjTF0H3R1v5-Ag$Z|Ez7NP%J3 zI~Z7@A&N4=MF#1UuyWCGj)r;3;6gp?mkqAu;fmoDrB+J}uhPE!s$nG$rb`V^P(7~9 z;IkFPa)UEnN4aJwZvn5;@aYF2UN^M+!%>xCyaL{<4bPN;S7Z2$`bz2yy;PUEVNjlg zUcI46571y3LXYV5M#B%!g4blQ(%R8%khX!>X5i5qdDGDMDk8gOcxF2uPrISH4+nWOMLB_5@h=drE{{S!4SpOWbFyq><0gf1#(C#qYXrhwVQR4-A zp(BjW5~v?DepCqc3kG# zG!H;M!N?tl=~Kp=_kkrEk1Ryg$;L%Tpm)aDCWDm}VTIU*#!e8=858MNLzeM9DpO}0cTBYu;P<;|)X^dPlCeG;#LLEgAH!I&QAAAuCB{To5U(1arqoWU@$JRn zl^H9?;i%kLK)I4@#+=g-sW1)?VYJtcry@bDGM3O{T5Vk6g;?s0yWfU~8^*>H0QJUE zH$>K8tfnnhqw%kG7*UhalhWE!|vbGd}+w#&Fa46(tRC8IOE{ zSlW%XUjgedrZxj~8n@FE>@tqhaiH6HnU1-)jh!!oc*khrK)uH}WB_*8xOE4xUgM4T z5m}#cX$inR<95o4_Zy>j0Sp*_r_;-Q>GDA3?;^wDKzuy-Z<0!tGwu zhctF?lUoj~>@!WS1kuN|lr}uRrcSC<_?cp##v}JP?V*hIe$xjFfE_RiHv=3rEg6RC zL#7c0)DN4UOon=p>9HA(LQU$ePzW&YDhr43SLJ))II)XL8X1WSQbE@Q`a#t-;vyOuxPck$h7ZrB(|}^BQ67yy>?$ z5X%MAz$Jh}lQ)?zG7a5^+l!_$61il0E)d|dspLaADmL+GL|0A!NP(4_c3y&Hndw#n z#$I81DhQy`RLO(FbyGD>GgYR!lM-X{vilu|* znCZu#0Unv2ItNGNrWb<2n=o~s2657~k!I5=(-;q9a5iVW4Q!A3KdKJ6nHMJ_PIq$x zRUbXfPt)=x4q}TYi7@T*~1F znER;^7igYIt&sc8F`kI!fO*3zNFFr*O4Yd_bI%3vg3a4FAcmN^VF>An`N>hl5^iq0 z4RF+KIu8(GHm!$9q}lW_M2?#$zCfH&=C5f_d%|3?7~?x>4oQW-X!ENfP>3}j>_9AW z=0^HEAo1oly3vtnKK47nY4bfw(IlC#Jq5jFbK=`Dea1XxhhB<#?*&*%H4m*ufNAE; zaDcPst^~MEH|t-Au?+J=E+jL}@1KF>Idj}LU|Hr5z66$S-pqzbj@kQpn9emfWdP)v zU1{5!Z~k%-tQ44^UJ0A$&9@doq0nrhZ?nj}g3eu`2Tmls%|6 zKTQYC8uL0T0cbLBrVT-}`Rz7f zEoN`p`n8%XsXThi9QY?o=3k3J>@k0J z3?g^UE2!zU*Zcx~@Au5JDKXz~PNJOEfVqaQf)AO8XqI|l&ZhF(u=)L?AdZ;FZXoJW z^OJNOcxdik58jyhDN6P~GQV32k;mp}>e3rG>nZ0yVg5A~*rfR(^-)im7yS$G&K9)} zqupcqnI;Gqi~AA;;c8(90CTf+J_$W{%VaQshvjuD@_1Tq1i;^3%h%t)inql=)xdq0 zcWC+avHVE8QD4h>D*yUfvi}Az(DEFmCHGraWI*A7CAAv7gO=B+Yv+)~zW~qWu*HQA z96^>P)bSE*SwlgDSbpA(rxa?j)5jcUQPGre#FAbJE8&)NRDC>ZG4_BLVG$kyFVeCw z0N|J<@NHN*Zb|b67G=q!VVoGvRrH{7m4VL~aC^T9&FrnULdHM%n%@%126k05Y z<1pG*izNcYHp}H*aC_6TgYxsYEcrV@Y_~k1BWZ`FiJDM5Ezy)c@3PF_2a#@zX&)4B zTRxcwaK~ca3xyubo?2jcEt_5h)@$*nJ#@e2kGa4GET7Y+=DuZ9Ga?(b_-_LkvYe(F zY{cTATZ^NX)B$*SX!#)@R>mxkd3ZdJETv~*<*~)(1fm|dELsF?!qP?et|u*@B|&n^ zQcF{bvo(D_MD|!`QwOGtwSE(9x>~KYp>wlxsjb1?`W+vV9#+Sf;CWg*vfBH6p zDpUno-=iIFu=P0xcp=uBTBwIwZ#Khim~|Ds$w#cke}NZnja!BB9kuS>43P+{C#`sq z)<6G+l0SrMmRcY%^m&H-ZjSXLC6;onrBq?ev!>CmB;OiFKXHLoc>o^HTiLsTU9jqZhe)CId=egA zku{kX;mcM}YGf$3Rz$(r6>B&(DwbFWs6+UwRZ9IKrPlYEc)DfQ)>)7&w{DlNC!wpn}MhvZGGH51q^>vxnPZ?~>n07o6x z*2hrqw0`^upv(FiT@dcJzV!*P+t!-{ki28%(Kfrs`UeNRyVgL;a`amN_XpJbtPwU4 z?^%~n3v9pjQW&rS>ld4#aNpW)Mi7J6d0XLq*m@}%-bbu;BOoAg|PtJ&#ypl zzb!2lk_T*wu6P6oZC3i@iHB@Kv==^XyGQGLkge?<*bK34n+JtZ+gqOS9%c*t0@xAT z>-5=&+v4M(5Mi6S1qzWi9#uk**>(zn9k*Tk7Lrl6|Gq`=Cv4qRct2@-m$o?3w&lM7 z#Mtugz-Fw??=wUeXPdbV{^D)Z7eFt;hO#f_dE5RjV2QS$S3%^oty&E$NwyE)gWF_V zYAvj!+W2chOtWceTXEL5f^tvkwzU-)ScdI`5{y05wua7e=WLrOC7WgIr&L6?ZRI_f z&a=&pFyG5cKQQ6@;;lI{y8y)T^fS1@3osdA-T_9cmg~hdky_? zzV>%$C+=^5in4G4_G$DT1=j#+S^H{A z!lv6V%Hci3?oUbIOnVHaH_q8_*28U<{R7HtWZRcJ0CMc(v~K3w2MgdR&;I!XfPDMi zw?Qnhe@i>uLVHR8Y!=y9(t+cm{hQxm?2>&O3*Il=%jpbMY~PrJAWH1{?}B*M{tBH6 zO6^~MiU(3=Pj~@?F1L#hLbAeM`a2{m?bE3qaNYha{gIt2JCE}7)%F!sJ+8IuDQ8?~ z@1#ZXhP~<b2QBQ!(h9cK34t zx9nH8!C1TfZTc)a?7QgQ?X~GOdpx3^T zmYzO)$`2skvoE1+(|!B1LRcBJ2hz_!WS>u!*9Z2ex)JBFeNQW}5&KR$J3X{79s)LI zpPL3NkL$Q!svb3u3e1!chxIJQ57$PPMQpp45Q$2~f#A9m!^{xit&TN*qBJ3fhpu`tK) zbhJF;SWdf(aK}u#CUDfzPQ5V^j$iIVJ<`FUYIT&um%gJDj!HVjoOJx%36W?=0A*ie z9M*iO$2z>E7;S>1;xq70IjX2zE75V;6^>3jo_`&ZNshuAV9Ac(spg&Pm`x&Sj)?;Z z>8zuiYOU#xiw{A}aCmHjNT$Qh4a97Rs~o0t97=j8avg;%V0n&%biB%U)QEDkj;s%1^M+%3DIP(+!#5Cm4UP*-0U8}+RG@5flu*I9 z*)gBK;uc3J3(uv^VQK{Nro%@Ekz0=KyP(kSsGw?Rhhy6)jCDG0Q|6@G(SIF!w;dC^ z5yTybKP60i91O|@-F4(H!lUbT6ugX(?l~q_0PA;5w?J>e@pCkY_Z^?!05<5jQ2^eM z3B72=K z|A3IZoxYI6(LSeQny7u8Zm97(}7T6VNPdG!TS-XL)!tuoz75W!BHpIXnAHq z^|i$7cd;iiH~pq#OpGQ`0c(mzq$m*-0lUd2F}B3svc303z=9QfLj}a%dsnby@4a_X zEcm{&3%2CGzu(K}UWS=7?ab+O&JV{gB{5UgzBECWYEc~hoUQ61PrI{Khh!3;qZ(3~ zVV$e`GM`|c>V4^T^Hs0NQm{aEPp(xLs>Uv5RTim!Iz{4QRrxoFEm5^@Le8bCh%RJV zrn)ViXt}EFIO<%Xn%a$JD^;yNrlD0TjSyF>27E=ZM)iGdR&1@RrTjglb*hf%NnEe$ zW*~8cYRem}(MDBtII&HtiZzIBR?U*l$re=wnLoFxW=FGZo60+j#2nQpax0swD*qj= zZ&!`YCCd)gck*g(r>d#^;htTpZEfh_Zq-5g2RQbq!sQNSuj*^rqvWZs$?g9>Rj=v< z`&A1ovH=dL7F{Mds9Mv7o*h!TC0TV?b-Xu;M^u6PY3Qh`gq$sosRpm0mgB0HlI=aA zim6SPPO9o(Bj+hqwbk_OwCaxR0MDpO)hEkYRZBVkpHsO$q-W<<`(7c-1y$+xEW4!;x$!kITc)24cJMSZm51QODArsDoVELmTFRG zD!Z*x{z40PR2}6dax7Wd7|1PW7?#?FQ;;|x)? zfkPeGgch9YUu4tfQje2s7O&bM`^ZG~m_KQDkb1CW5|h+9GEXF{&&gIgMcrR!sln=0 zIXDbaSCLz`q3W1f6d$IZD@#bKdh13C3|IG-7ZW4Y+TUn>qQeIXWxl%aZ**{h`o>vmS*Y%Df-H;F zC)ZP8vHI37vMf>magK(Ts;m6QvSsQe0~zb(>aRjbT%qp&K3!U=J~N+&R;hOlq?Xm{ zS7mUmQ6FkREo;?PKcL(?HE)}3WxLfsN-klK z`gKV;?^RE`MUbcd{TC|Rr+!~%@BQlAatJ-3E|o>+52~MRCpe_eP?308t&%zNi24V4 zs&rI6Adujgy0zSnA6K`Pb@PO}LN&6SRHtT9;FQ|_BeB!!hH_3lqjt9?=UMd!a+*J< zZZnVIy!zNhhWvv1Gs%%%RHw)p{gT=w&2d$o9YoKrsb|O)_I35xI@EGQ-E#%OP4xy@ zOmC@^3s`nrttcet9d*DaTDYq|>L$onzh9P4+*2!LF2Aq-v@)>*wR;^^KTr>B#F6?? zU3U}99;x4x=i-mmmyE;;)!`?o`iZ*HOmdnu<;$?ltSL2}IxU)-vbH(@gt= zEOt$O*`qi#c`FE<8sq1zgG=*zF73HB$q@t|&6jev@M?a%&9X$z)L%&)q!}qgG)XgE zUall-j$9-$MU!2X76xnfT%)ofnn|*q9I7cT-$@PAyd}5lshY&`6d0~K{1u5KG(+=< zjnwRFP6tP6dh{eVTC+TdWn(n``_sWRO~c(ZG*&ZO`pY;?iQ&{TUUNlKs}nTla}=1U z`AkXTBu&9AYMHDV^9qSmG>=q(zf-2ZLWnBSnXZ5q?3B<5&FFDJG`^QnnorzRkr0=qN~OVj#p&G8B( z?$Oki)Ae3WzMKv7G?#y1K=x_uOKE7o=HRQ;azNA0NtT0}jJ_;8qzRLQ-(gLM^2Cm4 zZVji|qZ;Q)V#hQ;uczwc8doJ&?1bi*snmH=(_db$oYKt6Ch@eUYi+We(HMKt!dXqi zG^#$Qac7WtUbCtcm0i&6`I6wGrrJ2NT+&=#XX%;+| z5vOUTpq3k&9J#W)sktSS<1NkK*J=H>=2{~vyQA49ssFp0com8Hn)(IQa!+GwOyYgb z{!~VyKvVfF4L#6Y>p|?Hrj?Oe9%-gZ65+At56OlWYCN*@c%tdEmu5}cdxNRWtZiF{ zm_?iFBCu+Ilq8T%d-_wFwQE0=Pe2^nkJnL)Q`=S2?JjNq)wJ%`M$3hTNBhfss`hHj z%LB(m?d?)58>Cf>pGn#=v2-w5+cux7Q?&UqmQ zdD={Q#Wr8tLH;u70`18jRJKsNPcCv6X-`O^XR)^bBl@{SyW=!jmTEhFz_Ml9tOL}t zT$>w5Y=!pxEm~Nq{rU(wS81oqtB=*%p21{UqgC0cWv%v|LW-}`ULHf1_1fUZ1RJy? zhqG*>_N^QWY|?%#AB1eycKDe(w`kAH!rgv?7vwaeut$uVso*-IVQ9+U4WPiRlBAa+{2 ze-Q=FXzRz2*l z9qsH<1b4M{WVOiGzAyJV_q3Rrp zFhv(-BbchY5>C!(x&u*PlBjIHuJgMrTcB$w7e@DqF0Z?Pb|AUBhuywp_PDPw^GH?`3GO)J>OJc$F?&2Ht92Lpivw(RG!(>$SSs ztr?JYy7^1UvR?Py0b(0;c^^>OMqNJ%)+XKiGTm?1&1^uOTXczml-sKNOJ2Ne)1}E$ zm!k`R%xdQ9{?gFGcHM{4%XjF4zM-L=x=~%|;4a-TNrddy)sk6wk1qT#%I(#aDoMFK z-R2=wy-%lB4dd4(sa41?&-BmV6p|RCmotmSeh& zauz+V+xaDlCv=vZRCZGL(*_bx>E;|^#ZK!63?_C)SF$3z@LApLW|TXp>m&2od0lRQ z+Pk3p`8u(Sy7>19F6qiQq`+m}2dxOM=o&AfyH|C0hmrG|uAbbnU)Rm;!w}rib&I9I zO&ug_bW1m{9R+Ud&P*e?qx&+I#Ctl!b;{k>y(Je21-eu6%IkryPDNr5bqx=a<&iEb zo^^k$`&r&67wXzct31(l*~T)H{yVv*HtUr;iCOeN%O#{$e^wR-o4)-@mf7{y7ZN!1 zi{-%K)Mw<-o=ZRS1TnY%{4%=h(f@IQa$fzhjx0;muaVvTApJB6R+9cq4neX$mFIy{ zDf&yllXI}X&0Ay{qOab7;zRWp=96WZ{@zuVrRuYy35M&p-)9|0=p$muIa2>?3386o zf32sVqxGNFWC+ISTV5ken*N~t#mKSxPh_ncr&q}qZoEEoARU~bZ=c4piTauy$T>+L zEq@ASvi|K5Hq{h;VKYJ>OjYj|T|m>AyWsx%v90Q^>hM z@3~63h5A!+xxPrhd@swE>c{P&*UR)LrSmP<*OAl23cXV{H7oVoM=%7d^o_0(tkoNo zEL*4lr90);>!-;nWP`r21Ou{Bzd4)OCVly2g01>qbx7Q%e=HZNIr>@WX)jm5Q5J^n z`u38w-Jw6QipqBDCk7MSqyI>}-mAwtVtIOvWbgLrbJx)9e*K#(i5<}Y5Jl{uzJi=r z4(adyM(nWuGx@aQi2egf2_4nkYb@r*uKc7SK~ z<7E4DPXE2E9q08o9+2~bK5HhGUDVglr?N}>1@~Ep%lgh2DR)Jmw}x7->R07a{F=Vw zB$i#*Z#~UA+|VyLNV%K(in8OprLWMJ;{mfz9z653N%z^Gkha&p6!O=AJQ|2Vf+#Tr{P1%{;$+%Rl2IY$@@-lyu32ImeM8fCZ@O|M5AQkT)sF@^~rFm!2#vGR^{tYQ9Z z)H2R6q84?IH{3r$>k|y#eJq=3=p#w{Nrsa0*~Mgo`w6irhFx;Ho^DtvUjU^WHb@e0 zhT(!thcgYm!>DDJp`knz$uKmL?wx7)_#I+d2FFr@*@kcHQ7+q%EUyCR7~066aF}Zt zTc5;vhPm>hV7?*COwI*{eQy(6XqYV7pGAfg`Oa;zq1k7&u*9&fAF-u|CDmE6Wrpvv z=)`ivACh2LVMrfI)hi7Rr%-N{;i%*iRxSs#ut;X2TtluLwzeBu?PS>wLkHPb>^A(| zj9`!9NfKH18m_sB?Khl1PL>0Pya!Zv&@fT{{>v#t-uHCrwBZNY44pANkZsyoL*P{E zJZBitg~aoQcD0CIFf5ey;i93WhdM7A#?2tOY)A_wxMHwnQuS3scnSrs8E*C{T+Puja}cuUT{cMO#uQsA!PKWC^V-|)CH%L)vo-=Y%_4CAEX z9vW6QqxC|AaS^d6hQl$`VlwuS7s6)aYqH6=7%R%hMONdGmDFi7=1a=NZagVBg%0DU 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 n2J{GoA<`A0%NYB@N#$cC%$RyGmJ_Fyf_jv5a{k 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%0A`P$%WBds#A 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 Va4n;gQ`u&ofT9t5ZNemgIc zA*x#VNoWCj5oiljbxajV99(tyQ5=PfVP+4tFEGRos5zH5pjX^8vM}S~B3KI@`BYf; zk?Rrq4(WImm|AZF>uIb$H4Q*jjlZKs6vKnZ#FUu~msJ7vg3%LqI~t$Bf*!(>?xm3m z{-xI9hyV#ue&sL^C`p=mJlhN2jWjm32dkiN&j3E1KI14Ewt zpmi#}l)8}GynJ&Gp=we)3p@3h!pYd%9k2{dxCt<+9+Iym*iGvWowgmL`&XT+? zpxRYOtK%M96{r_9$7W3ke=HP%$SNvpyS`^dYLhobfvK6`^2p!!OVGkpolNS8q|mdp zgyiPcT52O^_y$Jci0F13u8=%^8r3aO*zL+=xA}wii`LkATO@UEA5|lV^^2g*U!N8} z+CvFpU+|aXc#@{kr$~>!Un6OHx5LKkXh@wfy5E}vu+61pC{&d0UG&QtAf0po-Ew!B zOZ4EsHM%rA%)y)<=f(5f^J9J&{`0PhG(f1QXQ^~dANOLktQ)zZdb zFOKiM3e{-UOi1{wyPWKvJeHX6yyn#uaG&!oj5CrnA88`}j&NHKF4qRRuyWKQkj_JHR1auW4#MQGv_q z!Wl0T+DWqo;SmB-i8lPg=W4%R?kDNDb{N}(Erko7jZsX`s?+bXv%tcINH+Q+mVn2a zJmvc{h6S;}&Ie==!B#{-L9{b;?$O+dBQB|B~%5Qb3 z|Ks0YRxdv=-91Y^LlfokKzFO1f}rY`Mi}G@^}(mb%wJD}vqkOk)$N|XM;cHy=5v~A z9{tNZr@+c!($eVYIm+N@0;IZeA#|=@Mo?1%$7}*a6EKTvS;1;c_$PE)5goxD4P`s( zWS~)#35}Hf^4ba9^K9xHvHax(UR@!{Ol7{ia!o7--Q>~jB>xS}CQxR?5?4!9=8BhE zpk^&WE6u48dH-3I;$Z?76C!XVeuXs*sQPS3nO!TET%!z7h3x)6x-3Zlik>68LJ8^ni+I} zs;kkn7ia;P>bSR2Je$tmwnmB`_>q-2TO2jhId5(^k4OF^lWBAw2oKjltZ5j!GTd~P z(K)TdLUn+vw1XcN{&|EAuUaVrPERS|#TMT~xq2D;1NL;#s{7t1y;P}y_jIwDbkF)+ z(Y#YX`weALEKWqyNChnm5x8r?r&~8K!TKN!uPh+4(qOSgNQt)9q%siHniRGx7SW$M z;LvYcTnnRV>Gg_RR)21eW(36GkI4$Ct)kBrAwBNrL$h~Vh$?egHei!TNJ0`^tG z^x@qUTvejH8K6tTFCXKT+mIMOUW7{LO@ zv(|%W#_1b)+Z6uAX_i=|TtmGx2O&zzV2JC4HP15T^%0AMCa5Q;oVavcMk=U5Vo}jl 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%0A4-95u2b1J6+C@c!# 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