From 591568e4e41634c8c4a90fb48c716dee92d4b4be Mon Sep 17 00:00:00 2001 From: vanyabeat Date: Tue, 16 Jan 2024 13:54:31 +0300 Subject: [PATCH 1/9] INIT platformio project #1 --- .cproject | 184 - .gitignore | 3 +- .mxproject | 14 - .project | 31 - .../com.st.stm32cube.ide.mcu.sfrview.prefs | 2 - .settings/language.settings.xml | 25 - .settings/stm32cubeide.project.prefs | 3 - App/CAN_API.c | 104 - App/CAN_API.h | 22 - App/ControlFuncs.c | 117 - App/ControlFuncs.h | 18 - App/FOC/Cogdata.h | 3 - App/FOC/FOC_Control.c | 427 - App/FOC/FOC_Control.h | 249 - App/FOC/Filters.c | 22 - App/FOC/Filters.h | 22 - App/FOC/FuncRestrict.c | 110 - App/FOC/FuncRestrict.h | 87 - App/FOC/IOdata.c | 49 - App/FOC/IOdata.h | 49 - App/FOC/InitDrive.c | 118 - App/FOC/InitDrive.h | 34 - App/FOC/Observer.c | 111 - App/FOC/Observer.h | 37 - App/FOC/PWM_algorithms.c | 221 - App/FOC/PWM_algorithms.h | 33 - App/FOC/PlatformMath.h | 112 - App/FOC/PositionReg.c | 138 - App/FOC/PositionReg.h | 55 - App/FOC/pid_reg.c | 165 - App/FOC/pid_reg.h | 91 - App/SystemAPI.h | 147 - App/appIsrCallBacks.c | 54 - App/appIsrCallBacks.h | 16 - .../Device/ST/STM32F4xx/Include/stm32f446xx.h | 15981 ---------------- .../Device/ST/STM32F4xx/Include/stm32f4xx.h | 301 - .../ST/STM32F4xx/Include/system_stm32f4xx.h | 104 - Drivers/CMSIS/Device/ST/STM32F4xx/LICENSE.txt | 6 - Drivers/CMSIS/Include/cmsis_armcc.h | 865 - Drivers/CMSIS/Include/cmsis_armclang.h | 1869 -- Drivers/CMSIS/Include/cmsis_compiler.h | 266 - Drivers/CMSIS/Include/cmsis_gcc.h | 2085 -- Drivers/CMSIS/Include/cmsis_iccarm.h | 935 - Drivers/CMSIS/Include/cmsis_version.h | 39 - Drivers/CMSIS/Include/core_armv8mbl.h | 1918 -- Drivers/CMSIS/Include/core_armv8mml.h | 2927 --- Drivers/CMSIS/Include/core_cm0.h | 949 - Drivers/CMSIS/Include/core_cm0plus.h | 1083 -- Drivers/CMSIS/Include/core_cm1.h | 976 - Drivers/CMSIS/Include/core_cm23.h | 1993 -- Drivers/CMSIS/Include/core_cm3.h | 1941 -- Drivers/CMSIS/Include/core_cm33.h | 3002 --- Drivers/CMSIS/Include/core_cm4.h | 2129 -- Drivers/CMSIS/Include/core_cm7.h | 2671 --- Drivers/CMSIS/Include/core_sc000.h | 1022 - Drivers/CMSIS/Include/core_sc300.h | 1915 -- Drivers/CMSIS/Include/mpu_armv7.h | 270 - Drivers/CMSIS/Include/mpu_armv8.h | 333 - Drivers/CMSIS/Include/tz_context.h | 70 - Drivers/CMSIS/LICENSE.txt | 201 - Drivers/DSP/Lib/arm_cortexM4lf_math.lib | Bin 2236864 -> 0 bytes Drivers/DSP/Lib/libarm_cortexM4lf_math.a | Bin 5359640 -> 0 bytes Drivers/DSP/inc/arm_common_tables.h | 379 - Drivers/DSP/inc/arm_const_structs.h | 66 - Drivers/DSP/inc/arm_math.h | 7361 ------- Drivers/DSP/src/arm_cos_f32.c | 122 - Drivers/DSP/src/arm_sin_cos_f32.c | 149 - Drivers/DSP/src/arm_sin_f32.c | 122 - .../Inc/Legacy/stm32_hal_legacy.h | 4014 ---- .../STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h | 297 - .../Inc/stm32f4xx_hal_can.h | 844 - .../Inc/stm32f4xx_hal_cortex.h | 407 - .../Inc/stm32f4xx_hal_def.h | 210 - .../Inc/stm32f4xx_hal_dma.h | 802 - .../Inc/stm32f4xx_hal_dma_ex.h | 102 - .../Inc/stm32f4xx_hal_exti.h | 366 - .../Inc/stm32f4xx_hal_flash.h | 425 - .../Inc/stm32f4xx_hal_flash_ex.h | 1063 - .../Inc/stm32f4xx_hal_flash_ramfunc.h | 76 - .../Inc/stm32f4xx_hal_gpio.h | 325 - .../Inc/stm32f4xx_hal_gpio_ex.h | 1590 -- .../Inc/stm32f4xx_hal_pwr.h | 427 - .../Inc/stm32f4xx_hal_pwr_ex.h | 340 - .../Inc/stm32f4xx_hal_rcc.h | 1459 -- .../Inc/stm32f4xx_hal_rcc_ex.h | 7111 ------- .../Inc/stm32f4xx_hal_tim.h | 2146 --- .../Inc/stm32f4xx_hal_tim_ex.h | 354 - .../Inc/stm32f4xx_ll_adc.h | 4779 ----- .../Inc/stm32f4xx_ll_bus.h | 2105 -- .../Inc/stm32f4xx_ll_cortex.h | 637 - .../Inc/stm32f4xx_ll_dma.h | 2868 --- .../Inc/stm32f4xx_ll_exti.h | 954 - .../Inc/stm32f4xx_ll_gpio.h | 981 - .../Inc/stm32f4xx_ll_pwr.h | 985 - .../Inc/stm32f4xx_ll_rcc.h | 7096 ------- .../Inc/stm32f4xx_ll_spi.h | 2027 -- .../Inc/stm32f4xx_ll_system.h | 1711 -- .../Inc/stm32f4xx_ll_tim.h | 4093 ---- .../Inc/stm32f4xx_ll_usart.h | 2521 --- .../Inc/stm32f4xx_ll_utils.h | 307 - Drivers/STM32F4xx_HAL_Driver/LICENSE.txt | 6 - .../STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c | 615 - .../Src/stm32f4xx_hal_can.c | 2462 --- .../Src/stm32f4xx_hal_cortex.c | 502 - .../Src/stm32f4xx_hal_dma.c | 1305 -- .../Src/stm32f4xx_hal_dma_ex.c | 313 - .../Src/stm32f4xx_hal_exti.c | 547 - .../Src/stm32f4xx_hal_flash.c | 775 - .../Src/stm32f4xx_hal_flash_ex.c | 1347 -- .../Src/stm32f4xx_hal_flash_ramfunc.c | 172 - .../Src/stm32f4xx_hal_gpio.c | 533 - .../Src/stm32f4xx_hal_pwr.c | 571 - .../Src/stm32f4xx_hal_pwr_ex.c | 600 - .../Src/stm32f4xx_hal_rcc.c | 1122 -- .../Src/stm32f4xx_hal_rcc_ex.c | 3784 ---- .../Src/stm32f4xx_hal_tim.c | 7621 -------- .../Src/stm32f4xx_hal_tim_ex.c | 2428 --- .../Src/stm32f4xx_ll_adc.c | 922 - .../Src/stm32f4xx_ll_dma.c | 423 - .../Src/stm32f4xx_ll_exti.c | 212 - .../Src/stm32f4xx_ll_gpio.c | 303 - .../Src/stm32f4xx_ll_rcc.c | 1660 -- .../Src/stm32f4xx_ll_spi.c | 624 - .../Src/stm32f4xx_ll_tim.c | 1189 -- .../Src/stm32f4xx_ll_usart.c | 500 - .../Src/stm32f4xx_ll_utils.c | 749 - Inc/adc.h | 100 +- Inc/can.h | 110 +- Inc/gpio.h | 98 +- Inc/main.h | 198 +- Inc/spi.h | 100 +- Inc/stm32_assert.h | 106 +- Inc/stm32f4xx_hal_conf.h | 981 +- Inc/stm32f4xx_it.h | 140 +- Inc/tim.h | 102 +- Inc/usart.h | 102 +- Src/adc.c | 234 +- Src/can.c | 478 +- Src/gpio.c | 220 +- Src/main.c | 538 +- Src/spi.c | 176 +- Src/stm32f4xx_hal_msp.c | 162 +- Src/stm32f4xx_it.c | 513 +- Src/syscalls.c | 176 - Src/sysmem.c | 79 - Src/system_stm32f4xx.c | 747 - Src/tim.c | 270 +- Src/usart.c | 252 +- lib/README | 46 + platformio.ini | 21 + processor32f446.ioc | 19 +- stm32pio.ini | 18 + test/README | 11 + 153 files changed, 2479 insertions(+), 145148 deletions(-) delete mode 100644 .cproject delete mode 100644 .mxproject delete mode 100644 .project delete mode 100644 .settings/com.st.stm32cube.ide.mcu.sfrview.prefs delete mode 100644 .settings/language.settings.xml delete mode 100644 .settings/stm32cubeide.project.prefs delete mode 100644 App/CAN_API.c delete mode 100644 App/CAN_API.h delete mode 100644 App/ControlFuncs.c delete mode 100644 App/ControlFuncs.h delete mode 100644 App/FOC/Cogdata.h delete mode 100644 App/FOC/FOC_Control.c delete mode 100644 App/FOC/FOC_Control.h delete mode 100644 App/FOC/Filters.c delete mode 100644 App/FOC/Filters.h delete mode 100644 App/FOC/FuncRestrict.c delete mode 100644 App/FOC/FuncRestrict.h delete mode 100644 App/FOC/IOdata.c delete mode 100644 App/FOC/IOdata.h delete mode 100644 App/FOC/InitDrive.c delete mode 100644 App/FOC/InitDrive.h delete mode 100644 App/FOC/Observer.c delete mode 100644 App/FOC/Observer.h delete mode 100644 App/FOC/PWM_algorithms.c delete mode 100644 App/FOC/PWM_algorithms.h delete mode 100644 App/FOC/PlatformMath.h delete mode 100644 App/FOC/PositionReg.c delete mode 100644 App/FOC/PositionReg.h delete mode 100644 App/FOC/pid_reg.c delete mode 100644 App/FOC/pid_reg.h delete mode 100644 App/SystemAPI.h delete mode 100644 App/appIsrCallBacks.c delete mode 100644 App/appIsrCallBacks.h delete mode 100644 Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f446xx.h delete mode 100644 Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h delete mode 100644 Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h delete mode 100644 Drivers/CMSIS/Device/ST/STM32F4xx/LICENSE.txt delete mode 100644 Drivers/CMSIS/Include/cmsis_armcc.h delete mode 100644 Drivers/CMSIS/Include/cmsis_armclang.h delete mode 100644 Drivers/CMSIS/Include/cmsis_compiler.h delete mode 100644 Drivers/CMSIS/Include/cmsis_gcc.h delete mode 100644 Drivers/CMSIS/Include/cmsis_iccarm.h delete mode 100644 Drivers/CMSIS/Include/cmsis_version.h delete mode 100644 Drivers/CMSIS/Include/core_armv8mbl.h delete mode 100644 Drivers/CMSIS/Include/core_armv8mml.h delete mode 100644 Drivers/CMSIS/Include/core_cm0.h delete mode 100644 Drivers/CMSIS/Include/core_cm0plus.h delete mode 100644 Drivers/CMSIS/Include/core_cm1.h delete mode 100644 Drivers/CMSIS/Include/core_cm23.h delete mode 100644 Drivers/CMSIS/Include/core_cm3.h delete mode 100644 Drivers/CMSIS/Include/core_cm33.h delete mode 100644 Drivers/CMSIS/Include/core_cm4.h delete mode 100644 Drivers/CMSIS/Include/core_cm7.h delete mode 100644 Drivers/CMSIS/Include/core_sc000.h delete mode 100644 Drivers/CMSIS/Include/core_sc300.h delete mode 100644 Drivers/CMSIS/Include/mpu_armv7.h delete mode 100644 Drivers/CMSIS/Include/mpu_armv8.h delete mode 100644 Drivers/CMSIS/Include/tz_context.h delete mode 100644 Drivers/CMSIS/LICENSE.txt delete mode 100644 Drivers/DSP/Lib/arm_cortexM4lf_math.lib delete mode 100644 Drivers/DSP/Lib/libarm_cortexM4lf_math.a delete mode 100644 Drivers/DSP/inc/arm_common_tables.h delete mode 100644 Drivers/DSP/inc/arm_const_structs.h delete mode 100644 Drivers/DSP/inc/arm_math.h delete mode 100644 Drivers/DSP/src/arm_cos_f32.c delete mode 100644 Drivers/DSP/src/arm_sin_cos_f32.c delete mode 100644 Drivers/DSP/src/arm_sin_f32.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_can.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_cortex.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_exti.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_adc.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_bus.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_cortex.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_dma.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_exti.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_gpio.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_pwr.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_rcc.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_spi.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_system.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_tim.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_usart.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_ll_utils.h delete mode 100644 Drivers/STM32F4xx_HAL_Driver/LICENSE.txt delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_can.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_dma.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_exti.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_gpio.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_rcc.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_spi.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_tim.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_usart.c delete mode 100644 Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_utils.c delete mode 100644 Src/syscalls.c delete mode 100644 Src/sysmem.c delete mode 100644 Src/system_stm32f4xx.c create mode 100644 lib/README create mode 100644 platformio.ini create mode 100644 stm32pio.ini create mode 100644 test/README diff --git a/.cproject b/.cproject deleted file mode 100644 index 0511adc..0000000 --- a/.cproject +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.gitignore b/.gitignore index 329d484..b9f3806 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -Debug +.pio +.vscode diff --git a/.mxproject b/.mxproject deleted file mode 100644 index 2c260b6..0000000 --- a/.mxproject +++ /dev/null @@ -1,14 +0,0 @@ -[PreviousLibFiles] -LibFiles=Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_can.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.h;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_spi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_can.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_spi.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_usart.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f446xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.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_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_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=Src\main.c;Src\gpio.c;Src\adc.c;Src\can.c;Src\spi.c;Src\tim.c;Src\usart.c;Src\stm32f4xx_it.c;Src\stm32f4xx_hal_msp.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_spi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Src\system_stm32f4xx.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_rcc_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_flash_ramfunc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_pwr_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_cortex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_can.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_spi.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_hal_tim_ex.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_usart.c;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Src\system_stm32f4xx.c;;; -HeaderPath=Drivers\STM32F4xx_HAL_Driver\Inc;Drivers\STM32F4xx_HAL_Driver\Inc\Legacy;Drivers\CMSIS\Device\ST\STM32F4xx\Include;Drivers\CMSIS\Include;Inc; -CDefines=USE_FULL_LL_DRIVER;USE_HAL_DRIVER;STM32F446xx;USE_FULL_LL_DRIVER;USE_HAL_DRIVER;USE_HAL_DRIVER; - -[PreviousGenFiles] -HeaderPath=..\Inc -HeaderFiles=gpio.h;adc.h;can.h;spi.h;tim.h;usart.h;stm32f4xx_it.h;stm32_assert.h;stm32f4xx_hal_conf.h;main.h; -SourcePath=..\Src -SourceFiles=gpio.c;adc.c;can.c;spi.c;tim.c;usart.c;stm32f4xx_it.c;stm32f4xx_hal_msp.c;main.c; - diff --git a/.project b/.project deleted file mode 100644 index 030e94b..0000000 --- a/.project +++ /dev/null @@ -1,31 +0,0 @@ - - - processor32f446 - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - com.st.stm32cube.ide.mcu.MCUProjectNature - org.eclipse.cdt.core.cnature - com.st.stm32cube.ide.mcu.MCUCubeIdeServicesRevAev2ProjectNature - com.st.stm32cube.ide.mcu.MCUCubeProjectNature - 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/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs b/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs deleted file mode 100644 index 98a69fc..0000000 --- a/.settings/com.st.stm32cube.ide.mcu.sfrview.prefs +++ /dev/null @@ -1,2 +0,0 @@ -eclipse.preferences.version=1 -sfrviewstate={"fFavorites"\:{"fLists"\:{}},"fProperties"\:{"fNodeProperties"\:{}}} diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml deleted file mode 100644 index 257ce35..0000000 --- a/.settings/language.settings.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.settings/stm32cubeide.project.prefs b/.settings/stm32cubeide.project.prefs deleted file mode 100644 index 9810865..0000000 --- a/.settings/stm32cubeide.project.prefs +++ /dev/null @@ -1,3 +0,0 @@ -8DF89ED150041C4CBC7CB9A9CAA90856=B67B393B30B018D3E01680AF966BFC57 -DC22A860405A8BF2F2C095E5B6529F12=85A75868B77F325D394CC46B869A8E92 -eclipse.preferences.version=1 diff --git a/App/CAN_API.c b/App/CAN_API.c deleted file mode 100644 index c57180e..0000000 --- a/App/CAN_API.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * CanCallBacks.c - * - * Created on: 23 авг. 2023 г. - * Author: on4ip - */ -#include "CAN_API.h" - -void initCAN(enum CAN_API_BAUD baud) { - - - CAN_FilterTypeDef sFilterConfig; - hcan2.Instance = CAN2; - hcan2.Init.Prescaler = 5; - hcan2.Init.Mode = CAN_MODE_NORMAL; - hcan2.Init.SyncJumpWidth = CAN_SJW_1TQ; - hcan2.Init.TimeSeg1 = CAN_BS1_1TQ; - hcan2.Init.TimeSeg2 = CAN_BS2_7TQ; - hcan2.Init.TimeTriggeredMode = DISABLE; - hcan2.Init.AutoBusOff = DISABLE; - hcan2.Init.AutoWakeUp = DISABLE; - hcan2.Init.AutoRetransmission = DISABLE; - hcan2.Init.ReceiveFifoLocked = DISABLE; - hcan2.Init.TransmitFifoPriority = DISABLE; - - switch(baud) - { - case CAN_BAUD_125: - hcan2.Init.Prescaler = 20; - hcan2.Init.TimeSeg1 = CAN_BS1_15TQ; - hcan2.Init.TimeSeg2 = CAN_BS2_2TQ; - break; - case CAN_BAUD_250: - hcan2.Init.Prescaler = 10; - hcan2.Init.TimeSeg1 = CAN_BS1_15TQ; - hcan2.Init.TimeSeg2 = CAN_BS2_2TQ; - break; - case CAN_BAUD_500: - hcan2.Init.Prescaler = 10; - hcan2.Init.TimeSeg1 = CAN_BS1_1TQ; - hcan2.Init.TimeSeg2 = CAN_BS2_7TQ; - break; - case CAN_BAUD_1000: - hcan2.Init.Prescaler = 5; - hcan2.Init.TimeSeg1 = CAN_BS1_1TQ; - hcan2.Init.TimeSeg2 = CAN_BS2_7TQ; - break; - default: - hcan2.Init.Prescaler = 5; - hcan2.Init.TimeSeg1 = CAN_BS1_1TQ; - hcan2.Init.TimeSeg2 = CAN_BS2_7TQ; - break; - } - - if (HAL_CAN_Init(&hcan2) != HAL_OK) { - Error_Handler(); - } - - sFilterConfig.FilterBank = 0; - sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; - sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; - sFilterConfig.FilterIdHigh = 0x0000; - sFilterConfig.FilterIdLow = 0x0000; - sFilterConfig.FilterMaskIdHigh = 0x0000; - sFilterConfig.FilterMaskIdLow = 0x0000; - sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0; - sFilterConfig.FilterActivation = ENABLE; - sFilterConfig.SlaveStartFilterBank = 14; - if (HAL_CAN_ConfigFilter(&hcan2, &sFilterConfig) != HAL_OK) { - /* Filter configuration Error */ - Error_Handler(); - } - - HAL_CAN_Start(&hcan2); - - /*##-4- Activate CAN RX notification #######################################*/ - if (HAL_CAN_ActivateNotification(&hcan2, CAN_IT_RX_FIFO0_MSG_PENDING) - != HAL_OK) { - /* Notification Error */ - Error_Handler(); - } -} -CAN_RxHeaderTypeDef RxHeader1; -uint8_t RxData1[8]; -void HAL_CAN_RxFifo1MsgPendingCallback(CAN_HandleTypeDef *hcan) { - /* Get RX message */ - if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO1, &RxHeader1, RxData1) != HAL_OK) - { - /* Reception Error */ - Error_Handler(); - } - -} -CAN_RxHeaderTypeDef RxHeader0; -uint8_t RxData0[8]; -void HAL_CAN_RxFifo0MsgPendingCallback(CAN_HandleTypeDef *hcan) -{ - /* Get RX message */ - if (HAL_CAN_GetRxMessage(hcan, CAN_RX_FIFO0, &RxHeader0, RxData0) != HAL_OK) - { - /* Reception Error */ - Error_Handler(); - } -} diff --git a/App/CAN_API.h b/App/CAN_API.h deleted file mode 100644 index c98f639..0000000 --- a/App/CAN_API.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * CAN_API.h - * - * Created on: 23 авг. 2023 г. - * Author: on4ip - */ - -#ifndef CAN_API_H_ -#define CAN_API_H_ -#include "main.h" -//#include "can.h" -enum CAN_API_BAUD -{ - CAN_BAUD_125, - CAN_BAUD_250, - CAN_BAUD_500, - CAN_BAUD_1000, - CAN_BUAD_END -}; -void initCAN(enum CAN_API_BAUD baud ); - -#endif /* CAN_API_H_ */ diff --git a/App/ControlFuncs.c b/App/ControlFuncs.c deleted file mode 100644 index 1622ee7..0000000 --- a/App/ControlFuncs.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - * ControlFuncs.c - * - * Created on: 20 авг. 2023 г. - * Author: on4ip - */ -#include "ControlFuncs.h" -/*current offsets form ADC channels*/ -float offset_Ia=0; -float offset_Ib=0; -float offset_Ic=0; - - -void FAST_loop(SYSTEMobj_st *SYSTEMobj) -{ - /*Get HW protection state*/ - if(GET_HWfault_state(SYSTEMobj->DRIVE->drive_ID)) - { - SYSTEMobj->DRIVE->STAT.stat.bit_FAULT = 1; - } - if(!SYSTEMobj->DRIVE->STAT.stat.bit_ENABLED) - { - offset_Ia += SYSTEMobj->DRIVE->currentABC.current_Ia * SYSTEMobj->DRIVE->Tsample_fast; - offset_Ib += SYSTEMobj->DRIVE->currentABC.current_Ib * SYSTEMobj->DRIVE->Tsample_fast; - offset_Ic += SYSTEMobj->DRIVE->currentABC.current_Ic * SYSTEMobj->DRIVE->Tsample_fast; - } - SYSTEMobj->DRIVE->currentABC.current_Ia = SYSTEMobj->IO->current_A - offset_Ia; - SYSTEMobj->DRIVE->currentABC.current_Ib = SYSTEMobj->IO->current_B - offset_Ib; - SYSTEMobj->DRIVE->currentABC.current_Ic = SYSTEMobj->IO->current_C - offset_Ic; - SYSTEMobj->DRIVE->voltage_DC = SYSTEMobj->IO->voltage_DC; - /*Process FOC control*/ - fast_loop_control(SYSTEMobj->DRIVE); - /*Calculate shaft torque*/ - SYSTEMobj->DRIVE->torque_calc = SYSTEMobj->DRIVE->currentPark.current_Iq * SYSTEMobj->DRIVE->motor_data.Kt; - /*Process Electrical Position Observer*/ - SYSTEMobj->OBSERVER_El->fullMode_ena = 0; /*Only speed calculation */ - speed_observer(SYSTEMobj->OBSERVER_El); - SYSTEMobj->DRIVE->ElSpeed = SYSTEMobj->OBSERVER_El->W; - SYSTEMobj->DRIVE->ElAngle = SYSTEMobj->OBSERVER_El->Teta_rad;// + SYSTEMobj->OBSERVER_El->teta_correction; - //if(SYSTEMobj->DRIVE->ElAngle >=toPI) SYSTEMobj->DRIVE->ElAngle = SYSTEMobj->DRIVE->ElAngle -toPI; - //if(SYSTEMobj->DRIVE->ElAngle <0.f) SYSTEMobj->DRIVE->ElAngle = SYSTEMobj->DRIVE->ElAngle +toPI; - /*Process Mechanical Position Observer */ - /*Observer dynamic correction in speed function*/ - SYSTEMobj->OBSERVER_M->refresh_ena = 1; - SYSTEMobj->OBSERVER_M->fullMode_ena = 1; /*Full mode observer */ - SYSTEMobj->OBSERVER_M->Ml_izm = SYSTEMobj->DRIVE->torque_calc; - SYSTEMobj->OBSERVER_M->L0 = mod(SYSTEMobj->OBSERVER_M->W)*-0.01f+0.93f; - if(SYSTEMobj->OBSERVER_M->L0 < 0.9f ) SYSTEMobj->OBSERVER_M->L0 = 0.90f; - speed_observer(SYSTEMobj->OBSERVER_M); - SYSTEMobj->DRIVE->speed_Fdb = SYSTEMobj->OBSERVER_M->W; - - if(SYSTEMobj->DRIVE->CMD.cmd.bit_RST) /*Clear fault control*/ - { - CLEAR_HWfault(SYSTEMobj->DRIVE->drive_ID); - SYSTEMobj->DRIVE->ERRORS.errors_word = 0; - SYSTEMobj->DRIVE->CMD.cmd.bit_RST = 0; - SYSTEMobj->DRIVE->STAT.stat.bit_FAULT = 0; - } - - if(SYSTEMobj->DRIVE->CMD.cmd.bit_ON && (!SYSTEMobj->DRIVE->STAT.stat.bit_FAULT)) - { - SYSTEMobj->DRIVE->STAT.stat.bit_ENABLED = 1; //Enable Drive - }else - { - SYSTEMobj->DRIVE->STAT.stat.bit_ENABLED = 0; //Disable Drive - } - /*Calculate PWM reference values*/ - float inv_dc = 1.0f / (SYSTEMobj->DRIVE->voltage_DC * VoltageNormalisation_coeff); - SYSTEMobj->PWM->Ualfa = DRIVE.voltage_Valpha_ref*inv_dc; - SYSTEMobj->PWM->Ubeta = DRIVE.voltage_Vbeta_ref*inv_dc; - SYSTEMobj->PWM->Uo = 0 * inv_dc; - SYSTEMobj->PWM->Trpd_pwm = GET_PWM_Period(SYSTEMobj->DRIVE->drive_ID); - PWM_proc(SYSTEMobj->PWM); - /*PWM module control*/ - //LL_TIM_OC_SetMode(TIM1, LL_TIM_CHANNEL_CH1N, LL_TIM_OCMODE_FORCED_ACTIVE); - //LL_TIM_OC_SetMode(TIM1, LL_TIM_CHANNEL_CH2N, LL_TIM_OCMODE_FORCED_ACTIVE); - //LL_TIM_OC_SetMode(TIM1, LL_TIM_CHANNEL_CH3N, LL_TIM_OCMODE_FORCED_ACTIVE); - if(SYSTEMobj->DRIVE->STAT.stat.bit_ENABLED && (!SYSTEMobj->DRIVE->STAT.stat.bit_FAULT)) - { - PWM_COMPARE_SET(SYSTEMobj->DRIVE->drive_ID,(uint16_t)SYSTEMobj->PWM->Ta,(uint16_t)SYSTEMobj->PWM->Tb,(uint16_t)SYSTEMobj->PWM->Tc); - PWM_OUT_ENABLE(SYSTEMobj->DRIVE->drive_ID); - }else - { - uint16_t HALF_period = GET_PWM_Period(SYSTEMobj->DRIVE->drive_ID)>>1; - PWM_COMPARE_SET(SYSTEMobj->DRIVE->drive_ID,HALF_period,HALF_period,HALF_period); - PWM_OUT_DISABLE(SYSTEMobj->DRIVE->drive_ID); - } -} -/*Rate limiter function for Theta */ -static inline void Rate_limiter(float *Rated_value, float Ref_value, float Up_rate, float Down_rate,float Tsample) -{ - const float Down = Tsample*Down_rate; - const float Up = Tsample*Up_rate; - if((Ref_value - *Rated_value) >=PI) - { - *Rated_value = (*Rated_value+toPI); - } - if((Ref_value - *Rated_value)<=-PI) - { - *Rated_value = (*Rated_value-toPI); - } - if (Ref_value >(*Rated_value + Up)) - { - *Rated_value += Up; - } - else if (Ref_value <(*Rated_value - Down)) - { - *Rated_value -= Down; - } - else *Rated_value = Ref_value; -} -void SLOW_loop(SYSTEMobj_st *SYSTEMobj) -{ - - slow_loop_control(SYSTEMobj->DRIVE); -} - diff --git a/App/ControlFuncs.h b/App/ControlFuncs.h deleted file mode 100644 index d91cbd4..0000000 --- a/App/ControlFuncs.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * ControlFuncs.h - * - * Created on: 20 авг. 2023 г. - * Author: on4ip - */ - -#ifndef CONTROLFUNCS_H_ -#define CONTROLFUNCS_H_ - -#include "main.h" -#include "SystemAPI.h" -#include "InitDrive.h" -#include "PositionReg.h" - -void FAST_loop(SYSTEMobj_st *SYSTEMobj); -void SLOW_loop(SYSTEMobj_st *SYSTEMobj); -#endif /* CONTROLFUNCS_H_ */ diff --git a/App/FOC/Cogdata.h b/App/FOC/Cogdata.h deleted file mode 100644 index 7120abf..0000000 --- a/App/FOC/Cogdata.h +++ /dev/null @@ -1,3 +0,0 @@ -float Current_array[]={-0.007574,0.003754,0.015231,0.040438,0.045051,0.043609,0.048348,0.056742,0.063955,0.079244,0.081118,0.088903,0.086810,0.105881,0.112278,0.119832,0.128995,0.129284,0.123388,0.125845,0.116228,0.113242,0.105548,0.098451,0.092553,0.087468,0.081290,0.067852,0.064801,0.069110,0.066134,0.055019,0.039523,0.040079,0.036484,0.020063,0.013423,0.005789,-0.000393,0.008228,0.020559,0.044342,0.048407,0.044271,0.051735,0.064885,0.081854,0.088148,0.100017,0.103639,0.065694,0.122402,0.029911,0.164267,0.174522,0.186502,0.192211,0.196407,0.197971,0.212691,0.217595,0.205331,0.218105,0.223899,0.229920,0.230518,0.232076,0.230831,0.233037,0.236825,0.229424,0.222815,0.215736,0.232758,0.228465,0.244264,0.230630,0.236270,0.242571,0.248782,0.247151,0.243876,0.245256,0.245006,0.242141,0.256758,0.251909,0.246195,0.255093,0.248715,0.246769,0.238611,0.234933,0.241456,0.248160,0.238488,0.235067,0.237699,0.237625,0.243557,0.246715,0.242855,0.238425,0.234536,0.232238,0.230251,0.226972,0.207739,0.193721,0.187547,0.177137,0.175983,0.173685,0.179271,0.182272,0.173638,0.169415,0.126220,0.134509,0.110410,0.099453,0.079246,0.064891,0.053836,0.039861,0.025426,0.022797,0.007746,0.022078,0.029509,0.050831,0.052915,0.064429,0.068002,0.081636,0.108871,0.113873,0.122359,0.133935,0.143590,0.135670,0.156909,0.165116,0.174087,0.181285,0.179406,0.168003,0.178278,0.178872,0.177982,0.183620,0.183068,0.173011,0.158399,0.167473,0.154510,0.146152,0.118701,0.134026,0.138247,0.130356,0.133843,0.116477,0.106034,0.092952,0.078942,0.075582,0.066560,0.051597,0.024423,0.014059,0.013293,0.013710,0.030875,0.030450,0.024217,0.025568,0.027044,0.035378,0.042489,0.053006,0.051027,0.069324,0.065381,0.112495,0.121506,0.142786,0.144825,0.146196,0.161137,0.163018,0.170331,0.182000,0.186608,0.194815,0.194399,0.197921,0.187889,0.186629,0.194487,0.197680,0.201264,0.208015,0.218639,0.225600,0.220423,0.251910,0.231905,0.232651,0.225305,0.218432,0.214373,0.217027,0.219000,0.215919,0.215762,0.209071,0.210412,0.219614,0.212787,0.202476,0.202289,0.187157,0.166421,0.160244,0.154056,0.142918,0.147784,0.201792,0.159241,0.147841,0.140655,0.115003,0.091783,0.074009,0.065654,0.058071,0.042243,0.035442,0.012616}; - uint16_t Positio_array[]={25,56,102,132,159,186,213,241,268,308,333,358,383,407,430,453,481,500,517,534,551,569,587,612,631,649,668,687,706,725,741,766,783,800,818,836,853,871,899,918,937,956,972,988,1005,1029,1045,1061,1076,1090,1105,1120,1142,1156,1168,1180,1189,1200,1209,1220,1235,1245,1254,1264,1274,1282,1290,1302,1310,1316,1323,1331,1340,1349,1358,1369,1378,1387,1395,1401,1409,1414,1419,1425,1431,1437,1442,1450,1455,1459,1464,1471,1479,1486,1494,1506,1514,1523,1534,1543,1551,1559,1571,1580,1590,1600,1608,1618,1629,1651,1666,1681,1697,1713,1727,1741,1765,1781,1798,1818,1840,1863,1888,1914,1954,1981,2011,2041,2074,2107,2136,2178,2207,2235,2262,2290,2315,2342,2377,2399,2422,2444,2462,2479,2495,2516,2530,2544,2558,2573,2587,2601,2621,2636,2651,2666,2682,2698,2714,2730,2752,2765,2779,2792,2807,2823,2839,2862,2877,2894,2911,2930,2949,2975,2993,3008,3026,3042,3059,3075,3093,3117,3134,3152,3167,3183,3197,3210,3223,3242,3254,3267,3280,3292,3303,3315,3331,3341,3353,3365,3375,3387,3399,3414,3423,3432,3441,3449,3463,3470,3479,3489,3499,3510,3520,3532,3550,3561,3572,3584,3595,3606,3619,3638,3654,3671,3688,3708,3724,3742,3767,3784,3803,3823,3845,3869,3896,3935,3962,3989}; - \ No newline at end of file diff --git a/App/FOC/FOC_Control.c b/App/FOC/FOC_Control.c deleted file mode 100644 index 00f0094..0000000 --- a/App/FOC/FOC_Control.c +++ /dev/null @@ -1,427 +0,0 @@ -/* - * FOC_Control.c - * - * Created on: 3 июн. 2021 г. - * Author: a.ermakov - */ - -#include "PlatformMath.h" -#include "pid_reg.h" -#include "FOC_Control.h" -#include "FuncRestrict.h" -//const float32_t sinTable_f32[FAST_MATH_TABLE_SIZE + 1] __attribute__((section(".RamFunc"))); -/*Constants*/ -const float lag_correction=1.5f; -float dtime_volt = 0; /*Анпряжение мертвого времени*/ -/*Struct definition*/ -PIDREG3 Pid_Iq = PIDREG3_DEFAULTS; -PIDREG3 Pid_Id = PIDREG3_DEFAULTS; -PIDREG3 Pid_Idc = PIDREG3_DEFAULTS; -PIDREG3 Pid_FW = PIDREG3_DEFAULTS; -PIDREG3 Pid_W = PIDREG3_DEFAULTS; -PARAM_st PARAMETERS = {0}; -FuncRestricts_st RESTRICTS = {0}; -DRIVE_st DRIVE={.drive_parameters = &PARAMETERS, - .ppid_Iq = &Pid_Iq, - .ppid_Id = &Pid_Id, - .ppid_Idc = &Pid_Idc, - .ppid_FW = &Pid_FW, - .ppid_Speed = &Pid_W, - .prestricts = &RESTRICTS}; -union options_un actual_options = {0}; -extern float Icog_compenstion; -/*Special mode used during HAND debug*/ -#define HAND_MODE 0 -float Teta_norm = 0; -volatile float Teta_shift=0; -enum ANGLE_REF -{ - ZERO_ANGLE=0, - PLUS_2PIdiV3, - MINUS_2PIdiV3 -}; -enum ANGLE_REF WORK_ANGLE=ZERO_ANGLE; -float Teta_ref[3]={0,2.094395f,-2.094395f}; -float ElTheta_Hand=0; /*Угол говорота в ручном режиме*/ -float ElSpeed_Hand=0; /*Скорость поворота в ручном режиме*/ -float voltage_Vref_hand = 0; /*Задание понапряжению в вольтах в ручном режиме*/ -float voltage_Vref_hand_d = 0; /*Задание понапряжению в вольтах в ручном режиме*/ -/****************************************************************************************************************/ -/***********Attantion********************************************************************************************/ - -/* @detail For control Motor in DQ reference frame we should use R S values scales from 3-Phase to 2 Phase model basically - * it is 1.5 value. SO if we have R-phase in QD model we divide it to 1.5 for Real Phase resistance. - * During PI current loop turning we should use DQ model values of L and R/ - * Kp it is Ldq*Bandwidth ( Rads????) - * Ki it is L/R*Tsample for discrete current controller - */ - -/** - * @brief This function transforms stator values a and b (which are - * directed along axes each displaced by 120 degrees) into values - * alpha and beta in a stationary qd reference frame. - * alpha = a - * beta = -(2*b+a)/sqrt(3) - * - * - * -**/ -static inline void Clark(DRIVE_st *drive) -{ - //* alpha = a - //* beta = -(2*b+a)/sqrt(3) - drive->currentClark.current_Ialpha = twoDIVthree*(drive->currentABC.current_Ia - 0.5f*drive->currentABC.current_Ib-0.5f*drive->currentABC.current_Ic); - drive->currentClark.current_Ibeta = invSQRT_3*(drive->currentABC.current_Ib-drive->currentABC.current_Ic); -} -/** - * @brief This function transforms stator values alpha and beta, which - * belong to a stationary qd reference frame, to a rotor flux - * synchronous reference frame (properly oriented), so as q and d. - * d= alpha *cos(theta)+ beta *sin(Theta) - * q= -alpha *sin(Theta)+ beta *cos(Theta) -**/ -static inline void Park(DRIVE_st *drive) -{ - static float sin_El=0,cos_El=0; - platform_sincos(drive->ElAngle, &sin_El, &cos_El); - drive->currentPark.current_Id = drive->currentClark.current_Ialpha*cos_El+drive->currentClark.current_Ibeta*sin_El; - drive->currentPark.current_Iq = -drive->currentClark.current_Ialpha*sin_El+drive->currentClark.current_Ibeta*cos_El; -} -/** - * @brief invers Park transform function - * @detail inverse transform - * alpha = d*cos(theta)-beta*sin(theta) - * beta = d*sin(theta)+beta*cos(theta) - */ -static inline void InversePark(DRIVE_st *drive) -{ - static float sin_El=0,cos_El=0; - platform_sincos(drive->ElAngle,&sin_El,&cos_El); - drive->voltage_Valpha_ref =( drive->voltage_Vd_ref)*cos_El-( drive->voltage_Vq_ref)*sin_El; - drive->voltage_Vbeta_ref =( drive->voltage_Vd_ref)*sin_El+( drive->voltage_Vq_ref)*cos_El; -} -static inline void PowerCalc(DRIVE_st* drive) -{ - drive->power_Pdc = (drive->currentPark.current_Iq * (drive->voltage_Vq_ref - sign(drive->voltage_Vq_ref) * dtime_volt)+ - drive->currentPark.current_Id * (drive->voltage_Vd_ref - sign(drive->voltage_Vd_ref) * dtime_volt)); - drive->current_Idc = drive->power_Pdc/(drive->voltage_DC+0.001f); -} -static inline void Rate_limiter(float *Rated_value, float Ref_value, float Up_rate, float Down_rate,float Tsample) -{ - const float Down = Tsample*Down_rate; - const float Up = Tsample*Up_rate; - if (Ref_value >(*Rated_value + Up)) - { - *Rated_value += Up; - } - else if (Ref_value <(*Rated_value - Down)) - { - *Rated_value -= Down; - } - else *Rated_value = Ref_value; -} -float K1_voltage = 0; -float K2_voltage = 0; -float K1_speed = 0; -float K2_speed = 0; - -void filters_init(float voltage_tp, float elspeed_tp) -{ - K1_voltage = platform_exp(-DRIVE.Tsample_fast / voltage_tp); - K2_voltage = 1.f - K1_voltage; - - K1_speed = platform_exp(-DRIVE.Tsample_slow /elspeed_tp); - K2_speed = 1.f - K1_speed; -} -/** - * .brief Zero cancellation function - * \details Use IIR presentation of zero cancel block with equation y(k)=Ki*Ts/(Kp+Ki*Ts)*x(k)+kp/(kp+ki*Ts)*y(k-1) - * \param pid PIDREG3_handle reference - * \param ref Ref value to regulator - * \return filtered value - */ -static float ZeroCancel(PIDREG3_handle pid, float ref) -{ - float out_val = 0; - if((pid->Ki>0) || (pid->Kp > 0)) - out_val = pid->Ki / (pid->Kp + pid->Ki) * ref + pid->Kp / (pid->Kp + pid->Ki) * pid->Ref; - return(out_val); -} - -FAST_RAM void fast_loop_control(DRIVE_st* drive) ; -void fast_loop_control( DRIVE_st* drive) -{ - PIDREG3 *const FOC_Id = drive->ppid_Id; - PIDREG3 *const FOC_Iq = drive->ppid_Iq; - PIDREG3 *const FOC_Idc = drive->ppid_Idc; - PIDREG3 *const FOC_FW = drive->ppid_FW; - - /*преобразование Кларк*/ - Clark(drive); - /*преобразование Парка*/ - if(drive->ElAngle>=toPI) drive->ElAngle = drive->ElAngle-toPI; - if(drive->ElAngle<0.f) drive->ElAngle = drive->ElAngle+toPI; - Park(drive); - /*Расчет параметров мощности по DC*/ - PowerCalc(drive); - /*Сброс игтеграторов если не работаем*/ - if(!drive->STAT.stat.bit_ENABLED) - { - FOC_FW->dft_st_U = 1u; /*Сброс интгеральной составляющей*/ - FOC_Id->dft_st_U = 1u; /*Сброс интгеральной составляющей*/ - FOC_Iq->dft_st_U = 1u; /*Сброс интгеральной составляющей*/ - FOC_Idc->dft_st_U = 1u; /*Сброс интгеральной составляющей*/ - } - - drive->voltage_VrefFilt = K1_voltage * drive->voltage_VrefFilt + K2_voltage * drive->voltage_Vref; - if(drive->options.options.bit_FluxWeak1) /*Алгоритм ослабления поля 1*/ - { - FOC_FW->Ref = drive->voltage_DC * FiledWeaking_coeff * VoltageLimitation_coeff; - FOC_FW->Fdb = drive->voltage_VrefFilt; - FOC_FW->OutMin = drive->drive_parameters->Idz_min; - FOC_FW->OutMax = drive->drive_parameters->Idz_max; - FOC_FW->calc(FOC_FW); - drive->current_Id_ref = FOC_FW->Out; - } - if(drive->options.options.bit_FluxWeak2) /*Алгоритм ослабления поля 2*/ - { - FOC_FW->Ref = drive->voltage_DC * FiledWeaking_coeff * VoltageLimitation_coeff; - FOC_FW->Fdb = drive->voltage_VrefFilt; - float KI_BUFF = FOC_FW->Ki; - FOC_FW->Ki = FOC_FW->Ki * 0.001f; - FOC_FW->OutMin = -PI * 0.5f; - FOC_FW->OutMax = 0; - FOC_FW->calc(FOC_FW); - FOC_FW->Ki = KI_BUFF; - static float sin_fw = 0, cos_fw = 0; - platform_sincos(FOC_FW->Out, &sin_fw, &cos_fw); - drive->current_Id_ref = sin_fw * mod(drive->drive_parameters->Idz_min); - if (drive->current_Id_ref < drive->drive_parameters->Idz_min) drive->current_Id_ref = drive->drive_parameters->Idz_min; - } - /*Вычисление задания по напряжению оси D*/ - FOC_Id->Ref = ZeroCancel(FOC_Id, drive->current_Id_ref); - FOC_Id->Fdb = drive->currentPark.current_Id; - FOC_Id->OutMax = drive->voltage_DC; - FOC_Id->OutMin = -FOC_Id->OutMax; - FOC_Id->calc(FOC_Id); - /*Формирование здания по току*/ - - /*Вычисление максимального тока оси q в функции тока Idc*/ - if (drive->STAT.stat.bit_DRIVE_MODE == MOTOR) - { - FOC_Idc->Ref = drive->drive_parameters->Ibattery_dischargeMax; - FOC_Idc->OutMax = mod(drive->drive_parameters->Torque_current_max); - } - else - { - FOC_Idc->Ref = drive->drive_parameters->Ibattery_chargeMax; - FOC_Idc->OutMax = mod(drive->drive_parameters->Brake_current_max); - } - FOC_Idc->Fdb = mod(drive->current_Idc); - FOC_Idc->OutMax = mod(drive->torque_Mz_limited); - FOC_Idc->OutMin = 0; - FOC_Idc->calc(FOC_Idc); - //drive->torque_Mz_avaible = (FOC_Idc->Out); - /*Ограничение по доступному току*/ - if (drive->torque_Mz_limited > (FOC_Idc->Out)) drive->current_Iq_ref = (FOC_Idc->Out); - else if (drive->torque_Mz_limited < (-(FOC_Idc->Out))) drive->current_Iq_ref = (-(FOC_Idc->Out)); - else drive->current_Iq_ref = drive->torque_Mz_limited; - /*Вычисление задания по напряжению оси Q*/ - FOC_Iq->Ref = ZeroCancel(FOC_Iq, drive->current_Iq_ref); - FOC_Iq->Fdb = drive->currentPark.current_Iq; - FOC_Iq->OutMax = drive->voltage_DC; - FOC_Iq->OutMin = -FOC_Iq->OutMax; - FOC_Iq->calc(FOC_Iq); - - /*Обработка алгоритма feedforward*/ - if(drive->options.options.bit_Decouple){ - drive->voltage_Vd_decoupl=drive->motor_data.Rs*FOC_Id->Fdb - drive->ElSpeed*drive->motor_data.Lq *FOC_Iq->Fdb; - drive->voltage_Vq_decoupl=drive->motor_data.Rs*FOC_Iq->Fdb + drive->ElSpeed*drive->motor_data.Ld *FOC_Id->Fdb + drive->ElSpeed*drive->motor_data.Emf; - } - else{ - drive->voltage_Vd_decoupl =0; - drive->voltage_Vq_decoupl =0; - } -#if 1 - drive->voltage_Vq_ref = FOC_Iq->Out + drive->voltage_Vq_decoupl; - drive->voltage_Vd_ref = FOC_Id->Out + drive->voltage_Vd_decoupl; -#else - drive->voltage_Vq_ref = voltage_Vref_hand + drive->torque_Mz; - drive->voltage_Vd_ref = voltage_Vref_hand_d; -#endif -#if 1 - /*Обработка лимитирования выходного напряжения*/ - drive->voltage_Vref = platform_sqrt(drive->voltage_Vd_ref * drive->voltage_Vd_ref + drive->voltage_Vq_ref * drive->voltage_Vq_ref); - float max_amp = (drive->voltage_DC-dtime_volt) * VoltageNormalisation_coeff; - float klim = max_amp / (drive->voltage_Vref + 0.1f); - if (klim < 1.0f){ - drive->voltage_Vq_ref = drive->voltage_Vq_ref * klim; - drive->voltage_Vd_ref = drive->voltage_Vd_ref * klim; - } -#else - drive->voltage_Vref = platform_sqrt(drive->voltage_Vd_ref * drive->voltage_Vd_ref + drive->voltage_Vq_ref * drive->voltage_Vq_ref); - float max_vd = (drive->voltage_DC - dtime_volt) * VoltageNormalisation_coeff * 0.9f; - if (drive->voltage_Vd_ref > max_vd) drive->voltage_Vd_ref = max_vd; - if (drive->voltage_Vd_ref <-max_vd) drive->voltage_Vd_ref = -max_vd; - float max_vq = platform_sqrt(drive->voltage_DC * drive->voltage_DC * VoltageNormalisation_coeff * VoltageNormalisation_coeff - drive->voltage_Vd_ref * drive->voltage_Vd_ref); - if (drive->voltage_Vq_ref > max_vd) drive->voltage_Vq_ref = max_vq; - if (drive->voltage_Vq_ref < -max_vd) drive->voltage_Vq_ref = -max_vq; -#endif - -#if !HAND_MODE - /*Обратное преобразование Парка */ - if(mod(drive->ElSpeed) > 50.f) drive->ElAngle = drive->ElAngle + drive->Tsample_fast* drive->ElSpeed * lag_correction; - if(drive->ElAngle>=toPI) drive->ElAngle = drive->ElAngle-toPI; - if(drive->ElAngle<0.f) drive->ElAngle = drive->ElAngle+toPI; - InversePark(drive); -#else - static float cos_teta_el=0,sin_teta_el=0; - ElTheta_Hand=ElTheta_Hand+drive->Tsample_fast*ElSpeed_Hand; - if(ElTheta_Hand>=toPI) ElTheta_Hand=ElTheta_Hand-toPI; - if(ElTheta_Hand<0) ElTheta_Hand=ElTheta_Hand+toPI; - platform_sincos((ElTheta_Hand+Teta_ref[WORK_ANGLE]),&sin_teta_el,&cos_teta_el); - drive->voltage_Valpha_ref =voltage_Vref_hand*cos_teta_el; - drive->voltage_Vbeta_ref =voltage_Vref_hand*sin_teta_el; -#endif -} - -#define THRESHOLD 0.0000005f -_inline float Speed_Control(DRIVE_st* drive) -{ - PIDREG3 *const FOC_Speed = drive->ppid_Speed; - /*Ограничение задания по скорости*/ - if(drive->speed_Ref>drive->drive_parameters->Max_speed) drive->speed_Ref = drive->drive_parameters->Max_speed; - if(drive->speed_Refdrive_parameters->Min_speed) drive->speed_Ref = drive->drive_parameters->Min_speed; - /*Сохраненеие знака скорости*/ - int sign_Fz=sign(drive->speed_Fdb); - - float slope_up = drive->Tsample_slow*drive->drive_parameters->Speed_ramp_Up; - float slope_down = drive->Tsample_slow*drive->drive_parameters->Speed_ramp_Down; - if(sign_Fz>0) - { - if(drive->speed_Ref > drive->speed_Ref_rated+slope_up) - { - drive->speed_Ref_rated+=slope_up; - } - else if (drive->speed_Ref < drive->speed_Ref_rated-slope_down) - { - drive->speed_Ref_rated-=slope_down; - } - else drive->speed_Ref_rated = drive->speed_Ref; - }else - { - if(drive->speed_Ref > drive->speed_Ref_rated+slope_down) - { - drive->speed_Ref_rated+=slope_down; - } - else if (drive->speed_Ref speed_Ref_rated-slope_up) - { - drive->speed_Ref_rated-=slope_up; - } - else drive->speed_Ref_rated = drive->speed_Ref; - } - /*Сброс интегральной составляющей скорости*/ - if(!drive->STAT.stat.bit_ENABLED) - { - FOC_Speed->dft_st_U = 1; - } - FOC_Speed->Ref = drive->speed_Ref_rated; - FOC_Speed->Fdb = drive->speed_Fdb; - FOC_Speed->OutMax = drive->drive_parameters->Torque_current_max; - FOC_Speed->OutMin = -drive->drive_parameters->Brake_current_max; - FOC_Speed->calc(FOC_Speed); - if(mod(FOC_Speed->Out)Out = 0; - return (FOC_Speed->Out); -} -float test_t = 0; -FAST_RAM void slow_loop_control(DRIVE_st* drive) ; -void slow_loop_control(DRIVE_st* drive) -{ - register FuncRestricts_st *const RESTRICTS = drive->prestricts; - register float Mz_buffer = 0; - register float Work_ramp_Up=0; - register float Work_ramp_Down=0; - /*Машина состояний режимов*/ - drive->STAT.stat.bit_SPEED_MODE = 0; - drive->STAT.stat.bit_REVERSE_MODE = 0; - switch (drive->CMD.cmd.bit_CTRL_MODE) - { - case SPEED: - { - drive->torque_Mz = Speed_Control(drive); - Mz_buffer = drive->torque_Mz; - Work_ramp_Up = 10000; - Work_ramp_Down = 10000; - drive->STAT.stat.bit_SPEED_MODE = 1; - break; - } - case TORQUE: - { - /*teoretical FULL torque region speed*/ - float a = drive->motor_data.Emf * drive->motor_data.Emf + drive->drive_parameters->Torque_current_max * drive->drive_parameters->Torque_current_max * drive->motor_data.Ld * 1.5f * drive->motor_data.Ld * 1.5f; - float b = 2.f * drive->drive_parameters->Torque_current_max * drive->motor_data.Rs * 1.5f * drive->motor_data.Emf; - float c = drive->drive_parameters->Torque_current_max * drive->drive_parameters->Torque_current_max * drive->motor_data.Rs * 1.5f * drive->motor_data.Rs * 1.5f - drive->voltage_DC * drive->voltage_DC * VoltageNormalisation_coeff * VoltageNormalisation_coeff; - float speed_to_TRQlimit = (-b + platform_sqrt(b * b - 4.f * a * c)) / (2.f * a); - float torq2power_coef = speed_to_TRQlimit * 0.9f / (mod(drive->ElSpeed) + 0.1f); - if (torq2power_coef < 1.f) drive->torque_Mz_avaible = drive->drive_parameters->Torque_current_max * torq2power_coef; - else - { - drive->torque_Mz_avaible = drive->drive_parameters->Torque_current_max; - } - register float abs_Mz = mod(drive->torque_Mz_avaible); - if (drive->torque_Mz > abs_Mz) Mz_buffer = abs_Mz; - else if (drive->torque_Mz < -abs_Mz) Mz_buffer = -abs_Mz; - else Mz_buffer = drive->torque_Mz; //Buffer variable - Work_ramp_Up = drive->drive_parameters->Torque_ramp_Up; - Work_ramp_Down = drive->drive_parameters->Torque_ramp_Down; - break; - } - case REGEN_BRAKING: - { - Mz_buffer = -drive->torque_Mz * sat_sign(drive->ElSpeed , 0.005f); - Work_ramp_Up = drive->drive_parameters->Brake_ramp_Up; - Work_ramp_Down = drive->drive_parameters->Brake_ramp_Down; - break; - } - case SWITCH_BRAKING: - { - - Mz_buffer = -drive->torque_Mz * sat_sign(drive->ElSpeed, 0.005f); - Work_ramp_Up = drive->drive_parameters->Brake_ramp_Up; - Work_ramp_Down = drive->drive_parameters->Brake_ramp_Down; - break; - } - case POSTION: - { - - break; - } - }//end if switch - /*Calculate motor torque*/ - drive->torque_calc = 1.5f * 0.5774f * drive->currentPark.current_Iq * drive->motor_data.Emf*drive->motor_data.P; - /*Calculate motor power*/ - drive->power_Mech = drive->torque_calc * drive->ElSpeed / (drive->motor_data.P + 0.01f); - /*Calculate Flux Shift*/ - drive->flux_shift_calc = drive->flux_shift_calc * K1_speed+ platform_atan2(mod(drive->voltage_Vd_ref),mod(drive->voltage_Vq_ref)) * K2_speed; - if(mod(drive->ElSpeed)>50.f) - { - drive->flux_calc = K1_speed * drive->flux_calc + (drive->voltage_Vq_ref/drive->ElSpeed) * K2_speed; - } - /*Rate limiter*/ - Rate_limiter(&drive->torque_Mz_rated, Mz_buffer, Work_ramp_Up, Work_ramp_Down, drive->Tsample_slow); - /*Индикация режиа работы привода по квадранту*/ - if(sign(drive->ElSpeed * drive->torque_Mz_rated) >= 0) drive->STAT.stat.bit_DRIVE_MODE = MOTOR; - else drive->STAT.stat.bit_DRIVE_MODE = GENERATOR; - /*Блок функциональных ограничений*/ - float m_max = 0; - m_max = drive->torque_Mz_rated * ProcessRestricts(drive->ElSpeed,RESTRICTS,PositiveSpeed_constraint); - m_max = m_max * ProcessRestricts(drive->ElSpeed,RESTRICTS,NegativeSpeed_constraint); - if(drive->STAT.stat.bit_DRIVE_MODE == GENERATOR) - m_max = m_max * ProcessRestricts(drive->voltage_DC,RESTRICTS,HighVolt_constraint); - else - m_max = m_max * ProcessRestricts(drive->voltage_DC,RESTRICTS,LowVolt_constraint); - - m_max = m_max * ProcessRestricts(test_t,RESTRICTS,HighTemperature1_constraint); - m_max = m_max * ProcessRestricts(test_t,RESTRICTS,LowTemparature1_constraint); - drive->torque_Mz_limited = m_max; -} diff --git a/App/FOC/FOC_Control.h b/App/FOC/FOC_Control.h deleted file mode 100644 index 174978b..0000000 --- a/App/FOC/FOC_Control.h +++ /dev/null @@ -1,249 +0,0 @@ -/* - * FOC_Control.h - * - * Created on: 3 июн. 2021 г. - * Author: a.ermakov - */ - -#ifndef APPLICATION_USER_FOC_CONTROL_H_ -#define APPLICATION_USER_FOC_CONTROL_H_ -#include -#define FiledWeaking_coeff 0.75f -#define VoltageLimitation_coeff 0.866f -#define VoltageNormalisation_coeff 0.866f -/*structs*/ -enum ControlMode -{ - TORQUE = 0, - SPEED, - REGEN_BRAKING, - SWITCH_BRAKING, - PARK_BRAKING, - POSTION, - DCREG -}; -enum AlgMode -{ - EMPTY=0, - FOC, - SENSORSLESS, - BLDC, - SINE, - ACIM -}; -enum DetectMode -{ - STOP_DETECT=0, - motorRS, - motorLS, - HALL_STEP, - HALL_ROTARY, - EMF -}; -/*! - * \brief Stucture for advanced options of control - */ -typedef struct -{ - uint16_t bit_ALG_MODE:3; /*COntrol algorithm mode */ - uint16_t bit_FluxWeak1:1; /*Flux weaking mode with voltage lim reg*/ - uint16_t bit_FluxWeak2:1; /*Flux weaking mode with voltage angle reg*/ - uint16_t bit_Decouple:1; /*Decoupling mode */ - uint16_t bit_PWM_OneLeg:1; /*Discontinuous PWM mode*/ -}options_st; -union options_un -{ - options_st options; - uint16_t options_word; -}; -extern union options_un actual_options; -/*! - * - * \brief Stucture with COmmand bit defination - */ -typedef struct -{ - uint16_t bit_ON:1; /*Modulation ON command bit*/ - uint16_t bit_RST:1; /*Reset Bit*/ - uint16_t bit_BRAKE:1; /*Braking ON command bit*/ - uint16_t bit_CTRL_MODE:3; /*Control mode*/ - uint16_t bit_DETECT_MODE:5; /*Detect mode*/ - uint16_t bit_REF_INVERSE:1; /*Reference inversion mode command bit*/ - uint16_t bit_PHASE_INVERS:1; /*Phase inversion mode command bit*/ - uint16_t bit_SPEED_MODE:1; /*Sine control mode command bit*/ - //uint16_t bit_FOC:1; /*FOC control mode command bit*/ - //uint16_t bit_SENSORLESS:1; /*SensorlEss mode command bit*/ - uint16_t bit_ALG_MODE:3; /*COntrol algorithm mode */ -}command_st; -enum DRIVE_MODE{ - MOTOR=0, - GENERATOR -}; -/*! - * - * \brief Stucture with Status bit defination - */ -typedef struct -{ - uint16_t bit_READY1:1; /*1st ready bit NO error*/ - uint16_t bit_READY2:1; /*2nd rady bit NO saturation*/ - uint16_t bit_ENABLED:1; /*Modulation enabled Bit*/ - uint16_t bit_FAULT:1; /*Global fault bit*/ - uint16_t bit_DRIVE_MODE:2; /*Work in motor or gen mode bit*/ - uint16_t bit_IDENT_MODE:1; /*Identification but*/ - uint16_t bit_SPEED_MODE:1; /*Work in SPeed reg mode*/ - uint16_t bit_REVERSE_MODE:1; /*WOrk in reverse*/ - uint16_t bit_FW_MODE:1; /*Work in Fieldweaking*/ - uint16_t bit_SAT_MODE:1; /*WOkr in saturation*/ - uint16_t bit_PROFILE:2; /*Active profile*/ - uint16_t bit_HALL_DISABLE:1; /*Hall disabledBit*/ -}status_st; -/*! - * \brief Structure for Error Bits definitions - */ -typedef struct -{ - uint16_t bit_FREE1:1; /*Empty bit*/ - uint16_t bit_FREE2:1; /*Empty bit*/ - uint16_t bit_AmpCurr_err:1; /*Amplitude current error bit*/ - uint16_t bit_Hpower:1; /*Hardware error bit*/ - uint16_t bit_Hcurr_err:1; /*Hardware ivercurrent bit*/ - uint16_t bit_Hvolt_err:1; /*Hardware overvoltage error bit*/ - uint16_t bit_GasFault:1; /*Throttle input error bit*/ - uint16_t bit_FREE3:1; /*Empty bit*/ - uint16_t bit_OverVolt:1; /*Software overvoltage bit*/ - uint16_t bit_OverCurr:1; /*Software overcurrent error error bit*/ - uint16_t bit_OverTempBoard:1; /*Software over tempr PowerBoard error bit*/ - uint16_t bit_OverTempMotor:1; /*Software over tempr Motor error bit*/ - uint16_t bit_OverTempCntr:1; /*Software over tempr COntrol Board error bit*/ - uint16_t bit_ISRoverTime:1; /*main ISR over load error bit*/ - uint16_t bit_PosSens:1; /*Position sensor error bit*/ -}errors_st; -/*! - * - * \brief Structure with limitation parameters used in algorithm - */ -typedef struct -{ - float Torque_current_max; ///< Óñòàâêà îãðàíè÷åíèÿ çàäíèÿ òîêà - float Brake_current_max; ///< Óñòàâêà ìàêñèìàëüíîãî òîêà òîðìîæåíèÿ - float Current_Attention; ///< Óñòàâêà äëÿ àâàðèè ïî òîêó Ñðåäíåå çíà÷åíèå òîêà - float Current_Error; ///< Óñòàâêà äëÿ àâàðèè ïî òîêó ÀÌÏËÈÒÓÄÀ ôàçíîãî òîêà - float Udc_max; ///< Óñòàâêà äëÿ àâàðèè ïî ìàêñèìàëüíîìó íàïðÿæåíèþ Udc - float Udc_min; ///< Óñòàâêà äëÿ àâàðèè ïî ìèíèìàëüíîìó íàïðÿæåíèþ Udc - float Wmax_el_err; ///< Óñòàâêà äëÿ àâàðèè ïî ïðåâûøåíèþ ñêîðîñòè - float Tmin_Board; ///< Ìèíèìàëüíàÿ òåìïåðàòóðà ñèëîàîé ïëàòû - float Tmin_Cpu; ///< Ìèíèìàëüíàÿ òåìïåðàòóðà ïðîöåññîðíîé ïëàòû - float Tmin_Wind; ///< Ìèíèìàëüíàÿ òåìïåðàòóðà Îáìîòêè ìîòîðà - float Tmax_Board; ///< Ìàêñèìàëüíàÿ òåìïåðàòóðà ñèëîâîé ïëàòû - float Tmax_Cpu; ///< Ìàêñèìàëüíàÿ òåìïåðàòóðà ïðîöåññîðíîé ïëàòû - float Tmax_Wind; ///< Ìàêñèìàëüíàÿ òåìïåðàòóðà îáìîòêè - float Mz_ogr; ///< Óñòàâêà îãðàíè÷åíèÿ çàäàíèÿ ìîìåíòà - float Uz_ogr; ///< Óñòàâêà îãðàíè÷åíèÿ çàäàíèÿ íàïðÿæåíèÿ - float P_ogr; ///< Óñòàâêà îãðàíè÷íèåÿ ìîùíîñòè - float M_TADgenOgr; ///< Óñòàâêà îãðàíè÷åíèå ãåíåðàòîðíîãî ìîìåíòà ( èñïîëüçóåòñÿ â ôóíêöèîíàëüíûõ îðàíè÷åíèÿõ) - float P_TADgenOgr; ///< Óñòàâêà îãðàíè÷åíèå ãåíåðàòîðíîé ìîùíîñòè ( èñïîëüçóåòñÿ â ôóíêöèîíàëüíûõ îðàíè÷åíèÿõ) - float Ibattery_dischargeMax; ///< Óñòàâêà ìàêñèìàëüíîãî òîêà ðàçðÿäà áàòàðåè - float Ibattery_chargeMax; ///< Óñòàâêà ìàêñèìàëüíî òîêà çàðÿäà áàòàðåè - float Idz_min; ///< Óñòàâêà îãðàíè÷åíèå òîêà íàìàãíè÷èâàíèÿ ñíèçó ïðè ðàáîòå ïðèâîäà.. - float Idz_max; ///< Óñòàâêà îãðàíè÷åíèå òîêà íàìàãíè÷èâàíèÿ ñâåðõó ïðè ðàáîòå ïðèâîäà. - float Max_ref_position; ///< Óñòàâêà îãðàíè÷åíèÿ çàäàíèÿ óãëà äëÿ ðåãóëÿòîðà ïîëîæåíèÿ ñâåðõó - float Min_ref_position; ///< Óñòàâêà îãðàíè÷åíèÿ çàäàíèÿ óãëà äëÿ ðåãóëÿòîðà ïîëîæåíèÿ ñíèçó - float Max_speed; ///< Óñòàâêà îãðàíè÷åíèÿ ìàêñèìàëüíîé ñêîðîñòè ïî âûõîäó ðåãóîÿòîðà ïîëîæåíèÿ - float Min_speed; ///< Óñòàâêà îãðàíè÷åíèÿ ìàêñèìàëüíîé ñêîðîñòè ïî âûõîäó ðåãóîÿòîðà ïîëîæåíèÿ - float Speed_ramp_Up; ///< Ðàìïà íàðàñòàíèÿ çàäàíèÿ ñêîðîñòè rad/s - float Speed_ramp_Down; ///< Ðàìïà ñïàäà çàäàíèÿ ñêîðîñòè rad/s0 - float Torque_ramp_Up; ///< Ðàìïà íàðàñòàíèÿ çàäàíèÿ ìîìîåíòà ( òîêà) A/s - float Torque_ramp_Down; ///< Ðàìïà ñïàäà çàäàíèÿ ìîìåíòà (òîêà) A/s - float Brake_ramp_Up; ///< Ðàìïà íàðàñòàíèÿ çàäàíèÿ òîðìîçíîãî ìîìîåíòà ( òîêà) A/s - float Brake_ramp_Down; ///< Ðàìïà ñïàäà çàäàíèÿ òîðìîçíîãî ìîìåíòà (òîêà) A/s -} PARAM_st; -/*! - * \brief Structure for Drive definition - */ -typedef struct{ - uint16_t drive_ID; - union{ - command_st cmd; /*Command word Union*/ - uint16_t cmd_word; - }CMD; - union{ - errors_st errors; - uint16_t errors_word; /*Errors word union*/ - }ERRORS; - union{ - status_st stat; - uint16_t stat_word; /*Status word union*/ - }STAT; - struct currentABC_st{ - float current_Ia; - float current_Ib; - float current_Ic; - }currentABC; - struct currentClark_st{ - float current_Ialpha; - float current_Ibeta; - }currentClark; - struct currentPark_st{ - float current_Iq; - float current_Id; - }currentPark; - float torque_Mz; - float torque_Mz_rated; - float torque_Mz_limited; - float torque_Mz_avaible; - float speed_Ref; - float speed_Fdb; - float speed_Ref_rated; - float current_Iq_ref; - float current_Id_ref; - float voltage_DC; - float voltage_Vq_ref; - float voltage_Vd_ref; - float voltage_Vd_decoupl; - float voltage_Vq_decoupl; - float voltage_Valpha_ref; - float voltage_Vbeta_ref; - float voltage_Vref; - float voltage_VrefFilt; - float ElAngle; - float ElSpeed; - float ElSpeedFilt; - float temperature_Winding; - float temperature_Power; - float temperature_Control; - float power_Pdc; - float current_Idc; - float torque_calc; - float flux_calc; - float flux_shift_calc; - float power_Mech; - struct motor_st - { - float Rs; - float Ld; - float Lq; - float Emf; - float Kt; - uint16_t P; - float J; - float B; - }motor_data; - float Tsample_fast; - float Tsample_slow; - PARAM_st *drive_parameters; - union options_un options; - void *ppid_Iq; - void *ppid_Id; - void *ppid_Idc; - void *ppid_FW; - void *ppid_Speed; - void *prestricts; - -}DRIVE_st; -extern DRIVE_st DRIVE; -extern PARAM_st PARAMETERS; -void filters_init(float, float); -void fast_loop_control(DRIVE_st* ); -void slow_loop_control(DRIVE_st* ); -#endif /* APPLICATION_USER_FOC_CONTROL_H_ */ diff --git a/App/FOC/Filters.c b/App/FOC/Filters.c deleted file mode 100644 index f805c3b..0000000 --- a/App/FOC/Filters.c +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Filters.c - * - * Created on: 16 авг. 2021 г. - * Author: v.timokhin - */ - -#include "Filters.h" - -lowPass_st GyroLowPass = {0}; - -void initFilter(lowPass_st *filter,float Tsample,float Tp) -{ - filter->k1 = platform_exp(-Tsample/Tp); - filter->k2 = 1.f-filter->k1; - filter->filtVal = 0; -} - -void filterProc(lowPass_st* filter,float rawVal) -{ - filter->filtVal = filter->k1 * filter->filtVal+filter->k2 * rawVal; -} diff --git a/App/FOC/Filters.h b/App/FOC/Filters.h deleted file mode 100644 index 1a976cf..0000000 --- a/App/FOC/Filters.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Filters.h - * - * Created on: 16 авг. 2021 г. - * Author: v.timokhin - */ - -#ifndef APP_FOC_FILTERS_H_ -#define APP_FOC_FILTERS_H_ -#include "PlatformMath.h" -#include "stdint.h" -#include "math.h" -typedef struct -{ - float k1; - float k2; - float filtVal; -}lowPass_st; -extern lowPass_st GyroLowPass; -void initFilter(lowPass_st *filter,float Tsample,float Tp); -void filterProc(lowPass_st* filter,float rawVal); -#endif /* APP_FOC_FILTERS_H_ */ diff --git a/App/FOC/FuncRestrict.c b/App/FOC/FuncRestrict.c deleted file mode 100644 index c35c4ae..0000000 --- a/App/FOC/FuncRestrict.c +++ /dev/null @@ -1,110 +0,0 @@ -#include "PlatformMath.h" -#include "FOC_Control.h" -#include "FuncRestrict.h" -//------------------------------------------------------- -uint16_t InitRestricts(FuncRestricts_st *restricts) -{ - uint16_t OgrName=0; - uint16_t Error = 0; - for(OgrName=0;OgrNameActualLimits[OgrName].Value > restricts->AbsoluteLimits[OgrName].ValueMaximum ) - { restricts->ActualLimits[OgrName].Value = restricts->AbsoluteLimits[OgrName].ValueMaximum ; - Error |= ogrErrLimMax; - } - else if(restricts->ActualLimits[OgrName].Value < restricts->AbsoluteLimits[OgrName].ValueMinimum) - { restricts->ActualLimits[OgrName].Value = restricts->AbsoluteLimits[OgrName].ValueMinimum; - Error |= ogrErrLimMin; - }; - if( restricts->ActualLimits[OgrName].Span > restricts->AbsoluteLimits[OgrName].SpanMaximum ) - { restricts->ActualLimits[OgrName].Span = restricts->AbsoluteLimits[OgrName].SpanMaximum; - Error |= ogrErrDiapMax; - } - else if(restricts->ActualLimits[OgrName].Span < restricts->AbsoluteLimits[OgrName].SpanMinumum) - { restricts->ActualLimits[OgrName].Span = restricts->AbsoluteLimits[OgrName].SpanMinumum; - Error |= ogrErrDiapMin; - } - restricts->Koef[OgrName] = 1.0f/restricts->ActualLimits[OgrName].Span; - } - return Error; -} - -float ProcessRestricts(float value, FuncRestricts_st *restricts,enum Constraint_en OgrName) -{ - float temp = 1; - switch(OgrName) - { - /* Val > Limit*/ - case HighVolt_constraint: - case PositiveSpeed_constraint: - case HighTemperature1_constraint: - temp = 1.0f - restricts->Koef[OgrName]*(value-restricts->ActualLimits[OgrName].Value); - break; - /* Val < Limit*/ - case LowVolt_constraint: - case NegativeSpeed_constraint: - case LowTemparature1_constraint: - temp = 1.0f + restricts->Koef[OgrName]*(value-restricts->ActualLimits[OgrName].Value); - break; - default: - restricts->ContraintActive.ConstraintActive.Error = ogrErrProgErr; - } - if (temp > 1.0f){ - restricts->ContraintActive.ConstratinActive_word&=~(1<ContraintActive.ConstratinActive_word |= 1<ContraintActive.ConstratinActive_word |= 1<=(I_trig*1)) - { - Time_to_derate+=1e-3;// - //Íà÷íåì îãðàíè÷åíèå åñëè òîê áîëüøå óñòàâêè â òå÷åíèè 5 ñåêóíä. - if(Time_to_derate >=5) - { - I_control = (7-Time_to_derate)*0.5;//Îãðàíè÷íèå ñïîëçåò äî íóëÿ çà 2 ñåêóíäû - if(I_control<=0) I_control = 0; - - }//end of if - } - - }else{ - - if(I_reference<=(I_trig*0.95)) - { - Time_to_derate-=0.1e-3; - I_control = (7-Time_to_derate)*0.25;//Îãðàíè÷íèå ñïîëçåò äî íóëÿ çà 2 ñåêóíäû - if(I_control>=1) I_control = 1; - - } - }//end of else - if(Time_to_derate <=0) Time_to_derate = 0; //÷òîáû âðåìÿ íåáûëî îòðèöàòåëüíûì - if(Time_to_derate >=7) Time_to_derate = 7; - - float res_current = (I_control*(I_reference-I_trig)+I_trig); - if(I_control >=1) return (I_reference); - if(I_control <=0) return (res_current); - if(res_current < I_trig) return (I_trig); - else return (res_current); -} - - diff --git a/App/FOC/FuncRestrict.h b/App/FOC/FuncRestrict.h deleted file mode 100644 index ca275f5..0000000 --- a/App/FOC/FuncRestrict.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * FuncRestrict.h - * - * Created on: 13 ���. 2015 �. - * Author: Andrey Ermakov - */ - -#ifndef BLDC_FOC_HALL_INCLUDE_FUNCRESTRICT_H_ -#define BLDC_FOC_HALL_INCLUDE_FUNCRESTRICT_H_ -//����������� ��� ���������� OgrManage.Err -#define ogrErrLimMin 0x0100 // ��������������. ������ ����������� ���� ������������ ������. ����������. -#define ogrErrLimMax 0x0200 // ��������������. ������ ����������� ���� ������������� ������. ����������. -#define ogrErrDiapMin 0x0400 // ��������������. ����� �������� ���� ���. ���������� ��������. ����������. -#define ogrErrDiapMax 0x0800 // ��������������. ����� �������� ���� ����. ����������� ��������. ����������. -#define ogrErrProgErr 0x0001 // ����������� ������ (�����������) ogrErrAbsWrong -#define ogrErrAbsWrong 0x0002 // �������� ������� ���������� ����������� ������������ ������� �� �� �������� ��� - -enum Constraint_en{ - HighVolt_constraint=0, - LowVolt_constraint, - PositiveSpeed_constraint, - NegativeSpeed_constraint, - HighTemperature1_constraint, - HighTemperature2_constraint, - HighTemperature3_constarint, - LowTemparature1_constraint, - LowTemparature2_constraint, - LowTemparature3_constraint, - Constraints_count -}; - -struct OgrManageStruct { - unsigned int OgrStat; // ��������� ����� ����������� ����������� (������ � ��������) - unsigned int ZeroStat; // ��������� ����� ������ ����������� (��������� �������) - unsigned int Err; // ��������� ����� ������ �������������. �������� ��. bitdefinition.h -}; - -struct OgrLimitsStruct { - float ValueMinimum; // ����������� ����������� �������� ����������� - float ValueMaximum; // ������������ ����������� �������� ����������� - float SpanMinumum; // ����������� ����������� �������� ��������� ��������� ������� - float SpanMaximum; // ������������ ����������� �������� ��������� ��������� ������� -}; - -struct OgrStruct -{ float Value; // �������� ����������� - float Span; // �������� �������� ���������� �� ������ ����������� �� ��������� ������� -}; -typedef struct -{ - union{ - uint16_t ConstratinActive_word; - struct ContraintActive_st - { - uint16_t HighVolt_constraint:1; - uint16_t LowVolt_constraint:1; - uint16_t PositiveSpeed_constraint:1; - uint16_t NegativeSpeed_constraint:1; - uint16_t HighTemperature1_constraint:1; - uint16_t HighTemperature2_constraint:1; - uint16_t HighTemperature3_constarint:1; - uint16_t LowTemparature1_constraint:1; - uint16_t LowTemparature2_constraint:1; - uint16_t LowTemparature3_constraint:1; - uint16_t Error:6; - }ConstraintActive; - }ContraintActive; - struct OgrLimitsStruct AbsoluteLimits[Constraints_count]; - struct OgrStruct ActualLimits[Constraints_count]; - float Koef[Constraints_count]; - -}FuncRestricts_st; -extern FuncRestricts_st RESTRICTS; -//������������� ����������� (����������� ����������, �� ������������!) -struct TOgrType -{ float TwinOgr; // ����������� �������, ��� ������� ���������� ����������� ������� - float Twin_Zero; // ����������� �������, ��� ������� ������ ���������� - float Tboard; // ����������� ����, ��� ������� ���������� ����������� ������� - float Tboard_Zero;// ����������� ����, ��� ������� ������ ���������� - float Tboard_min; // ����������� ����������, ��� ������� ���������� ����������� ������� - float Tboard_min_Zero;// ����������� ����������, ��� ������� ������ ���������� -}; -uint16_t InitRestricts(FuncRestricts_st *restricts); -float ProcessRestricts(float value, FuncRestricts_st *restricts,enum Constraint_en OgrName); -float Low_speed_Current_derating(float I_reference, float W_real, float I_trig); - -#endif /* BLDC_FOC_HALL_INCLUDE_FUNCRESTRICT_H_ */ diff --git a/App/FOC/IOdata.c b/App/FOC/IOdata.c deleted file mode 100644 index 872f588..0000000 --- a/App/FOC/IOdata.c +++ /dev/null @@ -1,49 +0,0 @@ -/* - * IOdata.c - * - * Created on: 3 июн. 2021 г. - * Author: a.ermakov - */ -#include "IOdata.h" - - -IO_settings_st IO_settings_ext={0}; -IO_settings_st IO_settings_int={0}; -IO_st IO={.IO_coefs=&IO_settings_int}; -void set_IOSettings(IO_st *io,IO_settings_st* settings) -{ - io->IO_coefs->ADC_A_Ku = settings->ADC_A_Ku; - io->IO_coefs->ADC_A_shift = settings->ADC_A_shift; - io->IO_coefs->ADC_B_Ku = settings->ADC_B_Ku; - io->IO_coefs->ADC_B_shift = settings->ADC_B_shift; - io->IO_coefs->ADC_C_Ku = settings->ADC_C_Ku; - io->IO_coefs->ADC_C_shift = settings->ADC_C_shift; - io->IO_coefs->ADC_Udc_Ku = settings->ADC_Udc_Ku; - io->IO_coefs->ADC_Udc_shift = settings->ADC_Udc_shift; -} -static void convert_IOdata(IO_st* io,const uint16_t mode) -{ - io->current_A = io->ADC_A*io->IO_coefs->ADC_A_Ku + io->IO_coefs->ADC_A_shift; - io->current_B = io->ADC_B*io->IO_coefs->ADC_B_Ku + io->IO_coefs->ADC_B_shift; - if(io->ADC_C) - { - io->current_C = io->ADC_C*io->IO_coefs->ADC_C_Ku + io->IO_coefs->ADC_C_shift; - }else io->current_C = -io->current_B-io->current_A; - io->voltage_DC = io->ADC_Udc*io->IO_coefs->ADC_Udc_Ku + io->IO_coefs->ADC_Udc_shift; - -} - -void update_IO_ADC(IO_st* io,uint16_t *ADC_data,const uint16_t mode) -{ - io->ADC_A = (ADC_data[0] + ADC_data[1]) >> 1 ; - io->ADC_B = (ADC_data[2] + ADC_data[3]) >> 1 ; - io->ADC_C = 0; - io->ADC_Udc = ADC_data[5]; - io->ADC_VrefInt = ADC_data[4]; - convert_IOdata(io,mode); - -} -void update_IO_Sensor(IO_st* io,uint16_t pos_cnt) -{ - io->ENC_CNT_AB = pos_cnt; -} diff --git a/App/FOC/IOdata.h b/App/FOC/IOdata.h deleted file mode 100644 index 4903b09..0000000 --- a/App/FOC/IOdata.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * IOdata.h - * - * Created on: 3 июн. 2021 г. - * Author: a.ermakov - */ - -#ifndef APPLICATION_USER_IODATA_H_ -#define APPLICATION_USER_IODATA_H_ -#include "stdint-gcc.h" -typedef struct -{ - float ADC_A_Ku; - float ADC_A_shift; - float ADC_B_Ku; - float ADC_B_shift; - float ADC_C_Ku; - float ADC_C_shift; - float ADC_Udc_Ku; - float ADC_Udc_shift; -}IO_settings_st; -typedef struct -{ - IO_settings_st *IO_coefs; - int16_t ADC_A; - float current_A; - int16_t ADC_B; - float current_B; - int16_t ADC_C; - float current_C; - uint16_t ENC_CNT_AB; - uint16_t ENC_CNT_SPI; - uint16_t ENC_CNT_PWM; - uint16_t ADC_Udc; - float voltage_DC; - uint16_t ADC_Tpower; - float temparature_power; - uint16_t ADC_VrefInt; - float voltage_VrefInt; -}IO_st; -extern IO_st IO; -extern IO_settings_st IO_settings_ext; -/*! - * @ - */ -void update_IO_ADC(IO_st* io,uint16_t *ADC_data,const uint16_t mode); -void update_IO_Sensor(IO_st* io,uint16_t pos_cnt); -void set_IOSettings(IO_st *io,IO_settings_st* settings); -#endif /* APPLICATION_USER_IODATA_H_ */ diff --git a/App/FOC/InitDrive.c b/App/FOC/InitDrive.c deleted file mode 100644 index 52f00e4..0000000 --- a/App/FOC/InitDrive.c +++ /dev/null @@ -1,118 +0,0 @@ -/* - * InitDrive.c - * - * Created on: 9 июн. 2021 г. - * Author: a.ermakov - */ -#include "InitDrive.h" -/*Указание сопротивления мотора*/ -#define RS 7.2f -/*Указание индуктивности мотора*/ -#define LS 3.1e-3f -/*Указание полосы для регулятора в rad/sec*/ -#define BAND 3250 -SYSTEMobj_st SYSTEMobj_1={.DRIVE=&DRIVE,.IO=&IO,.OBSERVER_El=&Observer,.OBSERVER_M=&ObserverM,.PWM=&MY_PWM,.CurrentRegBand = BAND}; -SYSTEMobj_st SYSTEMobj_2={.DRIVE=&DRIVE,.IO=&IO,.OBSERVER_El=&Observer,.OBSERVER_M=&ObserverM,.PWM=&MY_PWM}; -void DriveInit(float Tsample_fast,float Tsample_slow) -{ - //y = 1,1287E-03x - 2,1845E+00 - - IO_settings_ext.ADC_A_Ku = 1.1287E-03f; - IO_settings_ext.ADC_A_shift = -2.1845E+00; - IO_settings_ext.ADC_B_Ku = 1.1287E-03f; - IO_settings_ext.ADC_B_shift = -2.1845E+00; - IO_settings_ext.ADC_C_Ku = 1.1287E-03f; - IO_settings_ext.ADC_C_shift = -2.1845E+00; - IO_settings_ext.ADC_Udc_Ku = 0.009242578f; - IO_settings_ext.ADC_Udc_shift = 0.0f; - set_IOSettings(&IO,&IO_settings_ext); - - DRIVE.Tsample_fast = Tsample_fast; - DRIVE.Tsample_slow = Tsample_slow; - //DRIVE.Tsample_slow = Tsample_slow; - DRIVE.motor_data.Rs = RS; - DRIVE.motor_data.Lq = LS; - DRIVE.motor_data.Ld = LS; - DRIVE.motor_data.Emf = 9.f/330; - set_PI_coefs(DRIVE.ppid_Id, DRIVE.motor_data.Ld*SYSTEMobj_1.CurrentRegBand, DRIVE.motor_data.Rs*SYSTEMobj_1.CurrentRegBand*DRIVE.Tsample_fast, 0.9f); - set_PI_coefs(DRIVE.ppid_Iq, DRIVE.motor_data.Lq*SYSTEMobj_1.CurrentRegBand, DRIVE.motor_data.Rs*SYSTEMobj_1.CurrentRegBand*DRIVE.Tsample_fast, 0.9f); - set_PI_coefs(DRIVE.ppid_Idc,0.5f, 0.0195f, 0.9f); - set_PI_coefs(DRIVE.ppid_FW, 0, 0.016f, 0.9f); - /*Настройка регулятора скорости*/ - set_PI_coefs(DRIVE.ppid_Speed, 0.06f, 0.0005f, 0.9f); - /*установка параметров*/ - PARAMETERS.Torque_current_max = 0.75f; - PARAMETERS.Torque_ramp_Up = 40000; - PARAMETERS.Torque_ramp_Down = 40000; - PARAMETERS.Brake_current_max = 0.75f; - PARAMETERS.Brake_ramp_Up = 40000; - PARAMETERS.Brake_ramp_Down = 40000; - PARAMETERS.Ibattery_chargeMax = 1.0f; - PARAMETERS.Ibattery_dischargeMax = 1.0f; - PARAMETERS.Idz_max = 0; - PARAMETERS.Idz_min = -0; - PARAMETERS.Max_speed =300; - PARAMETERS.Min_speed =-300; - PARAMETERS.Speed_ramp_Down = 200000; - PARAMETERS.Speed_ramp_Up = 200000; - /*Установка опций*/ - actual_options.options.bit_FluxWeak1 = 1; - actual_options.options.bit_FluxWeak2 = 0; - actual_options.options.bit_Decouple = 0; - DRIVE.options.options_word = actual_options.options_word; - /*Filter vars init*/ - filters_init(1/25.f,1/5.f); - initFilter(&GyroLowPass,DRIVE.Tsample_slow,1/100.f); - /*Инициалиазция ограничений*/ - ///Инициализация абсолютных значений - RESTRICTS.AbsoluteLimits[LowVolt_constraint].ValueMaximum = 100; - RESTRICTS.AbsoluteLimits[LowVolt_constraint].ValueMinimum = 7; - RESTRICTS.AbsoluteLimits[LowVolt_constraint].SpanMaximum = 6; - RESTRICTS.AbsoluteLimits[LowVolt_constraint].SpanMinumum = 6; - RESTRICTS.AbsoluteLimits[HighVolt_constraint].ValueMaximum = 100; - RESTRICTS.AbsoluteLimits[HighVolt_constraint].ValueMinimum = 2; - RESTRICTS.AbsoluteLimits[HighVolt_constraint].SpanMaximum = 3; - RESTRICTS.AbsoluteLimits[HighVolt_constraint].SpanMinumum = 0; - RESTRICTS.AbsoluteLimits[PositiveSpeed_constraint].ValueMaximum = 9000; - RESTRICTS.AbsoluteLimits[PositiveSpeed_constraint].ValueMinimum = 0; - RESTRICTS.AbsoluteLimits[PositiveSpeed_constraint].SpanMaximum = 1000; - RESTRICTS.AbsoluteLimits[PositiveSpeed_constraint].SpanMinumum = 0; - RESTRICTS.AbsoluteLimits[NegativeSpeed_constraint].ValueMaximum = 0; - RESTRICTS.AbsoluteLimits[NegativeSpeed_constraint].ValueMinimum = -9000; - RESTRICTS.AbsoluteLimits[NegativeSpeed_constraint].SpanMaximum = 1000; - RESTRICTS.AbsoluteLimits[NegativeSpeed_constraint].SpanMinumum = 0; - RESTRICTS.AbsoluteLimits[HighTemperature1_constraint].ValueMaximum = 80; - RESTRICTS.AbsoluteLimits[HighTemperature1_constraint].ValueMinimum = 0; - RESTRICTS.AbsoluteLimits[HighTemperature1_constraint].SpanMaximum = 5; - RESTRICTS.AbsoluteLimits[HighTemperature1_constraint].SpanMinumum = 0; - RESTRICTS.AbsoluteLimits[LowTemparature1_constraint].ValueMaximum = 0; - RESTRICTS.AbsoluteLimits[LowTemparature1_constraint].ValueMinimum = -20; - RESTRICTS.AbsoluteLimits[LowTemparature1_constraint].SpanMaximum = 5; - RESTRICTS.AbsoluteLimits[LowTemparature1_constraint].SpanMinumum =0; - ///инициализация настраиваемых значений - RESTRICTS.ActualLimits[LowVolt_constraint].Span = 3; - RESTRICTS.ActualLimits[LowVolt_constraint].Value = 9; - RESTRICTS.ActualLimits[HighVolt_constraint].Span = 1; - RESTRICTS.ActualLimits[HighVolt_constraint].Value = 65; - RESTRICTS.ActualLimits[NegativeSpeed_constraint].Span = 50; - RESTRICTS.ActualLimits[NegativeSpeed_constraint].Value = -200 + RESTRICTS.ActualLimits[NegativeSpeed_constraint].Span; - RESTRICTS.ActualLimits[PositiveSpeed_constraint].Span = 50; - RESTRICTS.ActualLimits[PositiveSpeed_constraint].Value = 200 - RESTRICTS.ActualLimits[PositiveSpeed_constraint].Span; - RESTRICTS.ActualLimits[HighTemperature1_constraint].Value = 75; - RESTRICTS.ActualLimits[HighTemperature1_constraint].Span = 5; - RESTRICTS.ActualLimits[LowTemparature1_constraint].Value = -20; - RESTRICTS.ActualLimits[LowTemparature1_constraint].Span = 5; - InitRestricts(&RESTRICTS); - /*Для работы по механике */ - ObserverM.Tsample = Tsample_fast; - ObserverM.Teta_diskr = toPI/4000; - ObserverM.L0 = 0.96f; - init_observer(&ObserverM); - /*Для работы по электрике*/ - Observer.Tsample = Tsample_fast; - Observer.Teta_diskr = toPI/571.f; - Observer.L0 = 0.986f; - init_observer(&Observer); - /*Инициализация регулятора положения*/ - Position_reg_init(); -} diff --git a/App/FOC/InitDrive.h b/App/FOC/InitDrive.h deleted file mode 100644 index da45866..0000000 --- a/App/FOC/InitDrive.h +++ /dev/null @@ -1,34 +0,0 @@ - -/* - * InitDrive.h - * - * Created on: 9 июн. 2021 г. - * Author: a.ermakov - */ - -#ifndef APPLICATION_USER_INITDRIVE_H_ -#define APPLICATION_USER_INITDRIVE_H_ -#include "PlatformMath.h" -#include "IOdata.h" -#include "Observer.h" -#include "FOC_Control.h" -#include "pid_reg.h" -#include "FuncRestrict.h" -#include "PWM_algorithms.h" -#include "Filters.h" -#include "PositionReg.h" -/*SYStem object defination for Drive*/ -typedef struct -{ - IO_st *IO; - DRIVE_st *DRIVE; - Observer_struct *OBSERVER_El; - Observer_struct *OBSERVER_M; - PWM_struct *PWM; - uint16_t CurrentRegBand; -}SYSTEMobj_st; -/*Make System Objects external*/ -extern SYSTEMobj_st SYSTEMobj_1; -extern uint32_t CPU_ID; -void DriveInit(const float, const float); -#endif /* APPLICATION_USER_INITDRIVE_H_ */ diff --git a/App/FOC/Observer.c b/App/FOC/Observer.c deleted file mode 100644 index b6fba0f..0000000 --- a/App/FOC/Observer.c +++ /dev/null @@ -1,111 +0,0 @@ -//Observer -#include "PlatformMath.h" -#include "observer.h" -Observer_struct Observer = {0}; -Observer_struct ObserverM = {0}; -float hall_corr[6]={1.2285765,1.82447,2.7726,3.80408,4.99,5.93}; -void init_observer(Observer_struct *Observer) -{ - //Observer->Teta_diskr=1.047; - Observer->POS_rad=0; - Observer->last_CNT=0; - Observer->POS_dobavka_sum=0; - Observer->fullMode_ena=0; - Observer->teta_correction=0; - Observer->refresh_ena=1; - refresh_koef(Observer); - Observer->CNT=0; - Observer->Time_CNT=0; - Observer->W = 0; - Observer->Teta_rad = 0; - Observer->J = 0.00046; - Observer->Ml = 0; - Observer->Ml_izm=0; -} -FAST_RAM void speed_observer(Observer_struct *Observer); -void speed_observer(Observer_struct *Observer) -{ - - - - static float teta_dif=0; - static float imp_time=0; - static float w_last = 0; - Observer->POS_rad=/*Observer->direction*/Observer->CNT *Observer->Teta_diskr; - if(Observer->CNT!=Observer->last_CNT) // ������� ��� ���������� ������� - { - - Observer->POS_dobavka_sum = 0;//* 0.0f *sign(Observer->W); - } - /* ����������� �� ������� ��� ������������ ����*/ - Observer->POS_rad+=Observer->teta_correction; - if(Observer->POS_rad >=toPI) Observer->POS_rad-=toPI; - if(Observer->POS_rad < 0) Observer->POS_rad+=toPI; - - Observer->last_CNT=Observer->CNT; - - //-------------------------------------------------------------------------- - //���������� ������ �� 2 �� - - teta_dif=(Observer->Teta_rad - Observer->POS_rad); - if(teta_dif>PI) - { - teta_dif=teta_dif-toPI; - } - if(teta_dif<-PI) - { - teta_dif=teta_dif+toPI; - } - if(teta_dif>PI) - { - teta_dif=teta_dif-toPI; - } - if(teta_dif<-PI) - { - teta_dif=teta_dif+toPI; - } - - - //----------------------------------------------------------- - // �������������� - //------------------------------------------------------------ - if(!Observer->fullMode_ena){ - Observer->Teta_rad=Observer->Teta_rad+Observer->W*Observer->Tsample+Observer->L1_w*(teta_dif);//� �������� - Observer->Teta_deg=Observer->Teta_rad*rad2Deg; - Observer->W=Observer->W+Observer->L2_w*(teta_dif);//� �������� ������������� - }else{ - Observer->Teta_rad=Observer->Teta_rad + Observer->W*Observer->Tsample + Observer->K_teta0*(Observer->Ml_izm-Observer->Ml) + Observer->L1_w*(teta_dif);//� �������� - Observer->W=Observer->W + Observer->K_teta1*(Observer->Ml_izm-Observer->Ml)+Observer->L2_w*(teta_dif);//� �������� ������������� - Observer->Ml=Observer->Ml+Observer->L3_w*teta_dif; - } - - if(Observer->Teta_rad>toPI) Observer->Teta_rad-=toPI; - if(Observer->Teta_rad<0.f) Observer->Teta_rad+=toPI; - - if(Observer->refresh_ena==1) - { - refresh_koef(Observer); - Observer->refresh_ena=0; - } - - - -} -//#pragma CODE_SECTION(refresh_koef,"ramfuncs"); - -inline void refresh_koef(Observer_struct *Observer) -{ - if(!Observer->fullMode_ena){ - Observer->L1_w=2.f*Observer->L0-2.f; - Observer->L2_w=(-1.f+2.f*Observer->L0-Observer->L0*Observer->L0)/(Observer->Tsample); - }else{ - Observer->L1_w=3*(Observer->L0-1); - Observer->L2_w=(9*Observer->L0 - 3*Observer->L0*Observer->L0 - Observer->L0*Observer->L0*Observer->L0 - 5)/(2*Observer->Tsample); - Observer->L3_w=Observer->J*(-3*Observer->L0 + 3*Observer->L0*Observer->L0 - Observer->L0*Observer->L0*Observer->L0 + 1)/(Observer->Tsample*Observer->Tsample ); - - Observer->K_teta0 = Observer->Tsample * Observer->Tsample/(2*Observer->J); - Observer->K_teta1 = Observer->Tsample / Observer->J; - } -} -///------------------------------------------------------------------------ - diff --git a/App/FOC/Observer.h b/App/FOC/Observer.h deleted file mode 100644 index 11cc76f..0000000 --- a/App/FOC/Observer.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef INCLUDE_OBSERVER_H_ -#define INCLUDE_OBSERVER_H_ -#include "math.h" - -typedef struct -{ - float Teta_diskr;// ������������ � �� �������� - float POS_rad;// ������� ���� � �������� �� - float last_CNT;// ������� �������� �������� ��������� - float POS_dobavka_sum;// ��������� ������� �� ���� �� ����� 1 �������� - unsigned int fullMode_ena;// ���� ����� ������� - unsigned int refresh_ena;//��� ���������� ���� - float teta_correction;//������� �������� ���� � �� �������� - float Teta_rad;// ������������ ��� ������ - float Teta_deg;// ���� � ���������� ���������� �������� - float W; //������������ �������� ������ - float Interpolate_W_Start;// �������� � ������� ����������� ������� � ���� �� teta+dt*w - float K_teta0; //���� ��� ��������� �������� - float K_teta1; // ���� ��� ��������� - float CNT;//������� ��������� - float Ml_izm; - float Ml; - unsigned int Time_CNT;// ������� ������� ����� ���������� - float J;//������ ������� ������� - float L0;//���� ���������� - float Tsample;//���� ����� ������� - float L1_w;// ���� ��� ����������� - float L2_w; - float L3_w; - -} Observer_struct; -extern Observer_struct Observer; -extern Observer_struct ObserverM; -void refresh_koef(Observer_struct *Observer); -void init_observer(Observer_struct *Observer); -void speed_observer(Observer_struct *Observer); -#endif /*INCLUDE_OBSERVER_H_*/ diff --git a/App/FOC/PWM_algorithms.c b/App/FOC/PWM_algorithms.c deleted file mode 100644 index 0a0e19a..0000000 --- a/App/FOC/PWM_algorithms.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - * PWM_algorithms.c - * - * Created on: 07 ���. 2017 �. - * Author: Andrey - */ -#include "PlatformMath.h" -#include "PWM_algorithms.h" -#include "math.h" -#define GENERIC_MAX(x,y) ((x)>(y) ?(x) : (y)) -#define GENERIC_MIN(x,y) ((x)<(y) ?(x) : (y)) -typedef enum -{ - SV_PWM = 0x1, - DPWMMAX, - DPWMMIN, - DPWM30, - DPWM60 -}PWM_MODE; -PWM_struct MY_PWM = {0}; -FAST_RAM unsigned int PWM_proc(PWM_struct * myPWM); -unsigned int PWM_proc(PWM_struct * myPWM) -{ - - - - float VrefA=0,VrefB=0,VrefC=0; - //double Va=0,Vb=0,Vc=0; - float X=0,Y=0,Z=0; - unsigned int A=0,B=0,C=0; - float t1=0,t2=0; - float Ta=0,Tb=0,Tc=0; - float Ualfa_norm=0,Ubeta_norm=0;//modulation index - //Vdc_pu=(sqrt(myPWM->Ualfa*myPWM->Ualfa+my_PWM.Ubeta*my_PWM.Ubeta))*sqrt(3.)/myPWM->Vm_max;// ������������� �������� �� ���������� - //Vdc_T=myPWM->Trpd_pwm;///myPWM->Vdc;// ���������� �� ��������� - - - //������������ ��������� �� Udc - Ualfa_norm=myPWM->Ualfa;//*1.73205/myPWM->Vdc; - if(Ualfa_norm>1) Ualfa_norm=1.f; - if(Ualfa_norm<-1) Ualfa_norm=-1.f; - Ubeta_norm=myPWM->Ubeta;//*1.73205/myPWM->Vdc; - if(Ubeta_norm>1) Ubeta_norm=1.f; - if(Ubeta_norm<-1) Ubeta_norm=-1.f; - - - // ���������� ������� ��������� - - VrefA=Ubeta_norm; - VrefB=-0.5f*Ubeta_norm+0.8665025f*Ualfa_norm; - VrefC=-0.5f*Ubeta_norm-0.8665025f*Ualfa_norm; - - //���������� ������� ���������. - if(VrefA>0) A=1; - else A=0; - if(VrefB>0) B=1; - else B=0; - if(VrefC>0) C=1; - else C=0; - myPWM->sector=A+2*B+4*C; - // ���������� ����� ������� -// X=Ubeta_norm; -// Y=0.5f*(1.732f*Ualfa_norm+Ubeta_norm); -// Z=0.5f*(-1.732f*Ualfa_norm+Ubeta_norm); - X=VrefA; - Y=-VrefC; - Z=-VrefB; - // - //X=2*0.57735*Ubeta_norm; - //Y=(0.57735*Ualfa_norm+Ubeta_norm); - //Z=(-0.57735*Ualfa_norm+Ubeta_norm); - - - - // ����� ����������� ����� ������� - switch(myPWM->sector) - { - case 1: - { - t1=Z; - t2=Y; - Tb =(1.f-t1-t2)*0.5f; // tbon = (1-t1-t2)/2 - Ta = Tb+t1; // taon = tbon+t1 - Tc = Ta+t2; // tcon = taon+t2 - - break; - } - case 2: - { - t1=Y; - t2=-X; - Ta =0.5f*(1.f-t1-t2); // taon = (1-t1-t2)/2 - Tc = Ta+t1; // tcon = taon+t1 - Tb = Tc+t2; // tbon = tcon+t2 - break; - } - case 3: - { - t1=-Z; - t2=X; - Ta = 0.5f*(1.f-t1-t2); // taon = (1-t1-t2)/2 - Tb = Ta+t1; // tbon = taon+t1 - Tc = Tb+t2; // tcon = tbon+t2 - break; - } - case 4: - { - t1=-X; - t2=Z; - Tc = 0.5f*(1.f-t1-t2); // tcon = (1-t1-t2)/2 - Tb = Tc+t1; // tbon = tcon+t1 - Ta = Tb+t2; // taon = tbon+t2 - break; - } - case 5: - { - t1=X; - t2=-Y; - Tb = 0.5f*(1.f-t1-t2); // tbon = (1-t1-t2)/2 - Tc = Tb+t1; // tcon = tbon+t1 - Ta = Tc+t2; // taon = tcon+t2 - break; - } - case 6: - { - t1=-Y; - t2=-Z; - Tc = 0.5*(1.f-t1-t2); // tcon = (1-t1-t2)/2 - Ta = Tc+t1; // taon = tcon+t1 - Tb = Ta+t2; // tbon = taon+t2 - break; - } - - case 0: - { - t1=0.5f; - t2=0.5f; - Ta=0.5f; - Tb=0.5f; - Tc=0.5f; - break; - } - default: - { - - break; - } - - }//end of switch - - static float Tas = 0,Tbs=0,Tcs=0; - static float Toffset = 0; - static float Tmin = 0, Tmax = 0; - Tmax = GENERIC_MAX(Ta, Tb); - Tmax = GENERIC_MAX(Tmax, Tc); - Tmin = GENERIC_MIN(Ta, Tb); - Tmin = GENERIC_MIN(Tmin, Tc); - - - PWM_MODE pwm_mod = SV_PWM; - switch (pwm_mod) - { - case SV_PWM: - { - Toffset = (1.f-(Tmax-Tmin)) / 2.f - Tmin; - break; - } - case DPWMMAX: - { - Toffset = 1.f - Tmax; - break; - } - case DPWMMIN: - { - Toffset = -Tmin; - break; - } - case DPWM30: - { - if ((2.f*(Tmin + Tmax)-2.f) >= 0) - Toffset = -(Tmin*2.f-1.f); - else - { - Toffset = 1.0f - (Tmax*2.f-1.f); - } - - break; - } - case DPWM60: - { - break; - } - default: - break; - } - ////D�+ - //Toffset = 1 - Tmax; - ////DC- - //Toffset = -Tmin; - ////Generic - //static float sigma = toPI/8.f; - //float mu = 1 - 0.5f * (1 + my_sign(cos(BLDC_drive.Teta_rot_el+sigma),100000)); - //mu = 0.5f; - //Toffset = (1 - mu) + (mu - 1) * Tmax - mu * Tmin; - Tas = Ta + Toffset; - Tbs = Tb + Toffset; - Tcs = Tc + Toffset; - // - if (Tas > 1.0f) Tas = 1.0f; - if (Tbs > 1.0f) Tbs = 1.0f; - if (Tcs > 1.0f) Tcs = 1.0f; - if (Tas < 0.0f) Tas = 0.0f; - if (Tbs < 0.0f) Tbs = 0.0f; - if (Tcs < 0.0f) Tcs = 0.0f; - // ���������� ������ ��������� � ������ ��� - myPWM->Ta=Tas*myPWM->Trpd_pwm; - myPWM->Tb=Tbs*myPWM->Trpd_pwm; - myPWM->Tc=Tcs*myPWM->Trpd_pwm; - - return 1; -} diff --git a/App/FOC/PWM_algorithms.h b/App/FOC/PWM_algorithms.h deleted file mode 100644 index 4d9eb26..0000000 --- a/App/FOC/PWM_algorithms.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * PWM_algorithms.h - * - * Created on: 07 ���. 2017 �. - * Author: Andrey - */ - -#ifndef FOC_CODE_PWM_ALGORITHMS_H_ -#define FOC_CODE_PWM_ALGORITHMS_H_ - -/*! - * \brief Struct describe pwm module and used in all PWM algorithms - */ -typedef struct -{ - - float Trpd_pwm; ///< �������� �������� ��� Tpwm=1/Fpc*2 - float Ualfa; ///< ������� �� ��� ����� - float Ubeta; ///< ������� �� ���� ���� - float Uo; ///< ������� �� ������� ����� - float Ta; ///< �������� ������� ��� ����������� ��� ���� � - float Tb; ///< �������� ������� ��� ����������� ��� ���� � - float Tc; ///< �������� ������� ��� ����������� ��� ���� � - unsigned int sector; ///< ������� ������ ������ ��� ������������ - -} PWM_struct; -#define PWM_DEFAULTS {1,0,0,0,0.5,0.5,0.5,0} -extern PWM_struct MY_PWM; -unsigned int PWM_proc(PWM_struct * myPWM); -unsigned int Sine_PWM_proc(PWM_struct * myPWM); -unsigned int PWM_SIX_step(PWM_struct * myPWM); -void PWM_deadTime(float *Currents,float Kdt,PWM_struct * myPWM); -#endif /* FOC_CODE_PWM_ALGORITHMS_H_ */ diff --git a/App/FOC/PlatformMath.h b/App/FOC/PlatformMath.h deleted file mode 100644 index 0346fb3..0000000 --- a/App/FOC/PlatformMath.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * PlatformMath.h - * - * Created on: 7 июн. 2021 г. - * Author: a.ermakov - */ - -#ifndef APPLICATION_USER_PLATFORMMATH_H_ -#define APPLICATION_USER_PLATFORMMATH_H_ -#include "arm_math.h" -#include "arm_common_tables.h" -#define _inline static inline -#define PLATFORM_STM32 0 -#define toPI 6.28318530f -#ifndef PI -#define PI 3.141592f -#endif -#define rad2Deg 57.295779513f -#define mod(x) ( ((x)>0)? (x): (-(x)) ) -#define sign(x) ( ((x)>=0)? (1): (-(1)) ) -#define min(x,y) ( ((x)>(y))? (y): (x) ) -#define invSQRT_3 0.5773502691896f -#define twoDIVthree 2.f/3.f -#define rad2Deg 57.295779513f -/*Using FAST RAM*/ -#define FAST_RAM __attribute__((section(".ccmram"))) -//#define FAST_RAM -/** - * Fast atan2 - * - * See http://www.dspguru.com/dsp/tricks/fixed-point-atan2-with-self-normalization - * - * @param y - * y - * - * @param x - * x - * - * @return - * The angle in radians - */ -#define PI_DIV_4 toPI/8.f -/* -static float utils_fast_atan2(float y, float x) { - float abs_y = fabsf(y) + 1e-20f; // kludge to prevent 0/0 condition - float angle; - - if (x >= 0.f) { - float r = (x - abs_y) / (x + abs_y); - float rsq = r * r; - angle = ((0.1963f * rsq) - 0.9817f) * r + (PI_DIV_4); - } else { - float r = (x + abs_y) / (abs_y - x); - float rsq = r * r; - angle = ((0.1963f * rsq) - 0.9817f) * r + (PI_DIV_4); - } - - if (y < 0.f) { - return(-angle); - } else { - return(angle); - } -} -*/ -_inline float platform_sqrt(float ref) -{ - float out=0.f; - if(ref > 0) out = sqrtf(ref); - return (out); -} -_inline float platform_isqrt(float val) -{ - if(val>0) return (1/platform_sqrt(val)); - return 0; -} -FAST_RAM void arm_sin_cos_f32( - float32_t theta, - float32_t * pSinVal, - float32_t * pCosVal); -_inline float platform_sin(float theta) -{ - return(arm_sin_f32(theta)); -} -_inline void platform_sincos(float theta,float *pSinVal,float *pCosVal) -{ - arm_sin_cos_f32((theta*rad2Deg), pSinVal, pCosVal); -} -_inline float platform_atan2(float X,float Y ) -{ - return atan2f(X,Y); - //return utils_fast_atan2(X,Y); -} -_inline float platform_exp(float x) -{ - return expf(x); -} -/*! - * \brief Функция Знака в виде усилитель с насыщением. - * @param I Текущее значение - * @param k Коэффициент нечувствительности - * @return - */ -_inline float sat_sign(float I, float k) -{ - float out; - out = k * I; - if (out >= 1) return (1.); - else if (out <= -1) return (-1.); - return (0.f); -} - -#endif /* APPLICATION_USER_PLATFORMMATH_H_ */ diff --git a/App/FOC/PositionReg.c b/App/FOC/PositionReg.c deleted file mode 100644 index 70857fb..0000000 --- a/App/FOC/PositionReg.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * PositionReg.c - * - * Created on: 9 июн. 2021 г. - * Author: a.ermakov - */ -#include "PositionReg.h" -#include "SystemAPI.h" - -enum REG_status Reg_state=DISABLED; -PIDREG3 Pid_Position = PIDREG3_DEFAULTS; -PIDREG3 Pid_Speed = PIDREG3_DEFAULTS; -float current_reference = 0; -#define DIRECT_POSITION 1 -#define GRAVITY_COMPENSTATION 0 -/** - * .brief Zero cancellation function - * \details Use IIR presentation of zero cancel block with equation y(k)=Ki*Ts/(Kp+Ki*Ts)*x(k)+kp/(kp+ki*Ts)*y(k-1) - * \param pid PIDREG3_handle reference - * \param ref Ref value to regulator - * \return filtered value - */ -static float ZeroCancel(PIDREG3_handle pid, float ref) -{ - float out_val = 0; - if((pid->Ki>0) || (pid->Kp > 0)) - out_val = pid->Ki / (pid->Kp + pid->Ki) * ref + pid->Kp / (pid->Kp + pid->Ki) * pid->Ref; - return(out_val); -} - -void Position_reg_init(void) -{ - - Pid_Speed.calc = &pid_reg3_calc; - Pid_Speed.Kp = 0.61; - Pid_Speed.Ki = 0.0003233; - Pid_Speed.Tfilt_d = 0.1f; - Pid_Speed.Kd = 0; - Pid_Speed.OutMax = 1; - Pid_Speed.OutMin = -1; - - Pid_Position.calc = &pid_reg3_calc_position; - Pid_Position.Kp = 2.56; - Pid_Position.Ki = 0.009233; - Pid_Position.Tfilt_d = 0.01f; - Pid_Position.Kd = 540; - Pid_Position.OutMax = DEF_MAX_CURRENT; - Pid_Position.OutMin = -DEF_MAX_CURRENT; - -} -//#define radToImp 4000/toPI -#define radToImp toPI/16383 -extern int16_t raw_angular_rate_X; -extern int16_t raw_angular_rate_Y; -extern int16_t raw_angular_rate_Z; -float angular_speed_coef = 0; -int16_t *p_angular_speed[2]={&raw_angular_rate_X,&raw_angular_rate_Y}; -enum { - X=0, - Y -}axie ={X}; -FAST_RAM void Position_reg_process(float ref,float fdb) ; -void Position_reg_process(float ref,float fdb) -{ - Pid_Position.Ref = ZeroCancel(&Pid_Position,ref);//ref; - Pid_Position.Fdb = fdb; - Pid_Position.Err = Pid_Position.Ref - Pid_Position.Fdb; - /*исключение сброса на 2 пи*/ - Pid_Position.Err = rollPI(Pid_Position.Err); - Pid_Position.Err = rollPI(Pid_Position.Err); - /*Расчет пи регулятора*/ - if(Reg_state != ENABLED) Pid_Position.dft_st_U = 1u; - if(mod(Pid_Position.Err) < (radToImp*2.f) ) Pid_Position.Err = 0; - /*Gain control */ - Pid_Position.calc(&Pid_Position); - -#if GRAVITY_COMPENSTATION - current_reference = Pid_Position.Out + platform_sin(fdb)*0.345f+*p_angular_speed[axie]*angular_speed_coef; -#else - current_reference = Pid_Position.Out;// + platform_sin(fdb)*0.345f+*p_angular_speed[axie]*angular_speed_coef; -#endif - -} -void SetSpeedReg_IC(float ui) -{ - Pid_Speed.Ui = ui; -} -void Speed_reg_process(float ref , float fdb) -{ - Pid_Speed.Ref =ref; - Pid_Speed.Fdb =fdb; - Pid_Speed.calc(&Pid_Speed); - current_reference = Pid_Speed.Out; -} -void Position_reg_processV2(float ref,float fdb,float speed_fdb) -{ - - static float position_error; - position_error = ref - fdb; - /*исключение сброса на 2 пи*/ - position_error = rollPI(position_error); - position_error = rollPI(position_error); - if(mod(position_error) < radToImp ) position_error = 0; - Pid_Position.Ui+=Pid_Position.Ki*position_error; - /*Расчет пи регулятора*/ - if(Reg_state != ENABLED) Pid_Position.Ui = 0; - Pid_Position.Up = Pid_Position.Kp*fdb; - Pid_Position.Ud = -Pid_Position.Kd*speed_fdb; - -#if GRAVITY_COMPENSTATION - current_reference = Pid_Position.Out + platform_sin(fdb)*0.345f+*p_angular_speed[axie]*angular_speed_coef; -#else - current_reference = Pid_Position.Ui-Pid_Position.Kp*fdb-Pid_Position.Kd*speed_fdb;// + platform_sin(fdb)*0.345f+*p_angular_speed[axie]*angular_speed_coef; - if(current_reference > Pid_Position.OutMax) - { - current_reference = Pid_Position.OutMax; - //Pid_Position.Ui = current_reference ; - } - if(current_reference < Pid_Position.OutMin){ - current_reference = Pid_Position.OutMin; - //Pid_Position.Ui = current_reference ; - } -#endif - -} -float get_reference(void) -{ - return current_reference; -} - -enum REG_status get_pos_reg_state(void) -{ - return Reg_state; -} -void set_pos_reg_state(enum REG_status state) -{ - Reg_state = state; -} diff --git a/App/FOC/PositionReg.h b/App/FOC/PositionReg.h deleted file mode 100644 index 7958d6c..0000000 --- a/App/FOC/PositionReg.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * PositionReg.h - * - * Created on: 9 июн. 2021 г. - * Author: a.ermakov - */ - -#ifndef APPLICATION_USER_POSITIONREG_H_ -#define APPLICATION_USER_POSITIONREG_H_ -#include "PlatformMath.h" -#include "pid_reg.h" -enum REG_status{ - DISABLED = 0, - ENABLED, - WORK, -}; -extern PIDREG3 Pid_Position; -/*Rall halper function*/ -static inline float rollPI(const float position_error){ - if(position_error>=PI) - { - return (position_error-toPI); - } - if(position_error<=-PI) - { - return (position_error+toPI); - } - return position_error; -} -static inline float roll2PI(const float position_error){ - if(position_error>=toPI) - { - return (position_error-toPI); - } - if(position_error<0) - { - return (position_error+toPI); - } - return position_error; -} -static float limitVal(float const ref,float max,float min) -{ - if(ref > max) return max; - if(ref < min) return min; - return ref; -} -void Position_reg_init(void); -float get_reference(void); -enum REG_status get_pos_reg_state(void); -void set_pos_reg_state(enum REG_status state); -void Position_reg_process(float ref,float fdb); -void Position_reg_processV2(float ref,float fdb,float speed_fdb); -void Speed_reg_process(float ref , float fdb); -void SetSpeedReg_IC(float Ui); -#endif /* APPLICATION_USER_POSITIONREG_H_ */ diff --git a/App/FOC/pid_reg.c b/App/FOC/pid_reg.c deleted file mode 100644 index fa4a861..0000000 --- a/App/FOC/pid_reg.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - * pid_reg.c - * - * Created on: 4 июн. 2021 г. - * Author: a.ermakov - */ -#include "pid_reg.h" -void pid_reg3_calc(PIDREG3 *v) -{ - - // Compute the error - v->Err = v->Ref - v->Fdb; - - // Compute the proportional output - v->Up = v->Kp*v->Err; - - // Compute the integral output - //v->Ui = v->Ui + v->Ki*v->Up + v->Kc*v->SatErr; - v->Ui = v->Ui + v->Ki*v->Err + v->Kc*v->SatErr; - if(v->Ui > v->OutMax ) v->Ui = v->OutMax; - if(v->Ui < v->OutMin ) v->Ui = v->OutMin; - // Compute the derivative output - //v->Ud = v->Kd*(v->Up - v->Up1); - float Ud_tmp = v->Kd*(v->Up - v->Up1); - // Filter for Ud part - v->Ud = v->Ud+v->Tfilt_d*(Ud_tmp-v->Ud); - // Compute the pre-saturated output - v->OutPreSat = v->Up + v->Ui + v->Ud; - - // Saturate the output - if (v->OutPreSat > v->OutMax) - v->Out = v->OutMax; - else if (v->OutPreSat < v->OutMin) - v->Out = v->OutMin; - else - v->Out = v->OutPreSat; - if(v->dft_st_U==1) - { - //v->Out=0; - v->Ui=0; - } - v->dft_st_U = 0; - // Compute the saturate difference - v->SatErr = v->Out - v->OutPreSat; - - // Update the previous proportional output - v->Up1 = v->Up; - //v->Up1 = v->Err; - -} -void pid_reg3_calc_position(PIDREG3 *v) -{ - // Compute the proportional output - v->Up = v->Kp*v->Err; - // Compute the integral output - //v->Ui = v->Ui + v->Ki*v->Up + v->Kc*v->SatErr; - v->Ui = v->Ui + v->Ki*v->Err + v->Kc*v->SatErr; - if(v->Ui > v->OutMax ) v->Ui = v->OutMax; - if(v->Ui < v->OutMin ) v->Ui = v->OutMin; - // Compute the derivative output - //v->Ud = v->Kd*(v->Up - v->Up1); - float Ud_tmp = v->Kd*(v->Up - v->Up1); - // Filter for Ud part - v->Ud = v->Ud+v->Tfilt_d*(Ud_tmp-v->Ud); - // Compute the pre-saturated output - v->OutPreSat = v->Up + v->Ui + v->Ud; - - // Saturate the output - if (v->OutPreSat > v->OutMax) - v->Out = v->OutMax; - else if (v->OutPreSat < v->OutMin) - v->Out = v->OutMin; - else - v->Out = v->OutPreSat; - if(v->dft_st_U==1) - { - //v->Out=0; - v->Ui=0; - } - v->dft_st_U = 0; - // Compute the saturate difference - v->SatErr = v->Out - v->OutPreSat; - - // Update the previous proportional output - v->Up1 = v->Up; - //v->Up1 = v->Err; - -} -void pid_reg3_calc_clamp(PIDREG3 *v) -{ - - // Compute the error - v->Err = v->Ref - v->Fdb; - - // Compute the proportional output - v->Up = v->Kp*v->Err; - - // Compute the integral output - //v->Ui = v->Ui + v->Ki*v->Up + v->Kc*v->SatErr; - v->Ui = v->Ui + v->Ki*v->Err *v->Up1; - // Compute the pre-saturated output - v->OutPreSat = v->Up + v->Ui; - v->Up1 = 1.f;//No saturation - // Saturate the output - if (v->OutPreSat > v->OutMax) - { - v->Out = v->OutMax; - v->Up1 = 0; - } - else if (v->OutPreSat < v->OutMin) - { - v->Out = v->OutMin; - v->Up1 = 0; - } - else - v->Out = v->OutPreSat; - if(v->dft_st_U==1) - { - //v->Out=0; - v->Ui=0; - } - v->dft_st_U = 0; - // Compute the saturate difference - v->SatErr = v->Out - v->OutPreSat; - - -} - -void pid_reg3_calc_ErrLim(PIDREG3 *v) -{ - // Compute the error - v->Err = v->Ref - v->Fdb; - // Compute the proportional output - v->Up = v->Kp*v->Err; - // Compute the pre-saturated output - v->OutPreSat = v->Up + v->Ui; - // Saturate the output - v->Up1 = 0; - if (v->OutPreSat > v->OutMax) - { - v->Out = v->OutMax; - v->Up1 = v->OutMax - v->OutPreSat ; - } - else if (v->OutPreSat < v->OutMin) - { - v->Out = v->OutMin; - v->Up1 = v->OutMin - v->OutPreSat ; - }else v->Out = v->OutPreSat; - //Intergral err limit - v->Ui=v->Ui+v->Ki*(v->Err + v->Up1/v->Kp); - - if(v->dft_st_U==1) - { - //v->Out=0; - v->Ui=0; - } - v->dft_st_U = 0; -} - -void set_PI_coefs(PIDREG3 *v,float Kp,float Ki,float Kc) -{ - v->Kp = Kp; - v->Ki = Ki; - v->Kc = Kc; -} diff --git a/App/FOC/pid_reg.h b/App/FOC/pid_reg.h deleted file mode 100644 index 65a9be5..0000000 --- a/App/FOC/pid_reg.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * pid_reg.h - * - * Created on: 4 июн. 2021 г. - * Author: a.ermakov - */ - -#ifndef APPLICATION_USER_PID_REG_H_ -#define APPLICATION_USER_PID_REG_H_ -typedef struct { float Ref; // Input: Reference input - float Fdb; // Input: Feedback input - float Err; // Variable: Error - float Kp; // Parameter: Proportional gain - float Up; // Variable: Proportional output - float Ui; // Variable: Integral output - float Ud; // Variable: Derivative output - float Tfilt_d; // Filter time constant for D in 1\Tf - float Ui_max; //Max integral out - float Ui_min; //Min int out - float OutPreSat; // Variable: Pre-saturated output - float OutMax; // Parameter: Maximum output - float OutMin; // Parameter: Minimum output - float Out; // Output: PID output - float SatErr; // Variable: Saturated difference - float Ki; // Parameter: Integral gain - float Kc; // Parameter: Integral correction gain - float Kd; // Parameter: Derivative gain - float Up1; // History: Previous proportional output - unsigned int dft_st_U;// default bit for pid out - void (*calc)(); // Pointer to calculation function - } PIDREG3; - -typedef PIDREG3 *PIDREG3_handle; - -/*----------------------------------------------------------------------------- -Default initalizer for the PIDREG3 object. ------------------------------------------------------------------------------*/ -#define PIDREG3_DEFAULTS { 0, \ - 0, \ - 0, \ - 0.05, \ - 0, \ - 0,\ - 0, \ - 0,\ - 0,\ - 0, \ - 0, \ - 0.83, \ - 0, \ - 0, \ - 0, \ - 0.1, \ - 0.7, \ - 0, \ - 0, \ - 0,\ - (void (*)(unsigned int))pid_reg3_calc } - -#define PIDREG3_DEFAULTS_CLAMP { 0, \ - 0, \ - 0, \ - 0.05, \ - 0, \ - 0,\ - 0, \ - 0,\ - 0,\ - 0, \ - 0, \ - 0.83, \ - 0, \ - 0, \ - 0, \ - 0.1, \ - 0.9, \ - 0, \ - 0, \ - 0,\ - (void (*)(unsigned int))pid_reg3_calc_clamp } - -/*------------------------------------------------------------------------------ -Prototypes for the functions in PIDREG3.C -------------------------------------------------------------------------------*/ -void pid_reg3_calc(PIDREG3_handle); -void pid_reg3_calc_position(PIDREG3_handle); -void pid_reg3_calc_clamp(PIDREG3_handle); -void pid_reg3_calc_ErrLim(PIDREG3_handle); -void set_PI_coefs(PIDREG3_handle ,float Kp,float ,float ); - -#endif /* APPLICATION_USER_PID_REG_H_ */ diff --git a/App/SystemAPI.h b/App/SystemAPI.h deleted file mode 100644 index dcfb057..0000000 --- a/App/SystemAPI.h +++ /dev/null @@ -1,147 +0,0 @@ -#include "main.h" -#pragma once - -#define DEF_MAX_CURRENT (1.00f) - -typedef enum { - - MOTOR_STATE_IDLE = 0, - - MOTOR_STATE_GOTO_ZERO = 1, - MOTOR_STATE_GOTO_ZERO_FINISH = 2, - - MOTOR_STATE_STABILIZATION = 3, - - MOTOR_STATE_ERROR = 4, - - MOTOR_STATE_TURN_OFF = 5, - MOTOR_STATE_TURN_OFF_FINISH = 6, - - MOTOR_STATE_EMERGENCY_BRAKE = 7, - - MOTOR_STATE_FLUX_ALIGN =10, - - MOTOR_STATE_TEST_PID =20, - - MOTOR_STATE_TEST_MOTION =30, - -} ENUM_MOTOR_STATES; - -#pragma pack(push,1) - -typedef struct { - uint32_t u32CpuID; - float f32TetaCorrection; - float f32MinAngle_deg; - float f32MaxAngle_deg; - float f32IcogCompCoef; - float f32IaccelCompFactor; - float f32PositionZero_deg; - float f32PidPositionKd; - float f32PidPositionKi; - float f32PidPositionKp; - float f32PidPositionTfilt_d; - float f32UpRateZero; - float f32DownRateZero; - float f32UpRateStab; - float f32DownRateStab; -} TPARAMS_USED_BY_SERVO; - -#pragma pack(pop) - - -extern TPARAMS_USED_BY_SERVO stUsedParameters; - - -extern uint32_t CPU_ID; -/*TEST pins define section*/ -#define TESTPIN_ENABLE 0 -#define TESTPIN_UART_ISR_ENABLE (1) -//#define TEST_UART 0 -#define FSAMPLE_FAST (10000) -#define TSAMPLE_FAST (1.0f/FSAMPLE_FAST) -#define FSAMPLE_SLOW (1000) -#define TSAMPLE_SLOW (1.0f/FSAMPLE_SLOW) -static inline float ISR_TIME_CALC(float start,float stop) -{ - static float systemTimeStep = -1.f; - if(systemTimeStep <0.f){ - systemTimeStep=1.f/SystemCoreClock; - return 0; - } - if (start > stop) - { - return ((start- stop)*(systemTimeStep)); - } - else - { - uint32_t counter = ((0xFFFFFF - stop) + start) + 1; - return ( (counter)*(systemTimeStep)); - } -} - -static inline uint16_t GET_PWM_Period(uint16_t ID) -{ - return((uint16_t)LL_TIM_GetAutoReload(TIM1)); -} -static inline void PWM_OUT_ENABLE(uint16_t ID) -{ - LL_GPIO_SetOutputPin(EN_U_GPIO_Port,EN_U_Pin); - LL_GPIO_SetOutputPin(EN_W_GPIO_Port,EN_W_Pin); - LL_GPIO_SetOutputPin(EN_V_GPIO_Port,EN_V_Pin); - LL_TIM_EnableAllOutputs(TIM1); -} -static inline void PWM_OUT_DISABLE(uint16_t ID) -{ - LL_GPIO_ResetOutputPin(EN_U_GPIO_Port,EN_U_Pin); - LL_GPIO_ResetOutputPin(EN_W_GPIO_Port,EN_W_Pin); - LL_GPIO_ResetOutputPin(EN_V_GPIO_Port,EN_V_Pin); - LL_TIM_DisableAllOutputs(TIM1); -} -static inline void PWM_COMPARE_SET(uint16_t ID,uint16_t A,uint16_t B,uint16_t C) -{ - LL_TIM_OC_SetCompareCH1(TIM1, A); - LL_TIM_OC_SetCompareCH2(TIM1, B); - LL_TIM_OC_SetCompareCH3(TIM1, C); - -} -static uint16_t hw_err_state = 0; -static inline uint16_t GET_HWfault_state(uint16_t ID) -{ - if(hw_err_state) LL_TIM_DisableIT_BRK(TIM1); - return hw_err_state; -} -static inline void CLEAR_HWfault(uint16_t ID) -{ - hw_err_state = 0; - LL_TIM_EnableIT_BRK(TIM1); -} - - -static inline uint32_t GET_ADC_data(uint16_t ID,uint16_t *ADC_array,uint16_t *error_code) -{ - *error_code = 0; - uint32_t adc_wait1 = 0; - while((!LL_ADC_IsActiveFlag_JEOS(ADC1))){ - if(adc_wait1++ > 1000) return (*error_code = 0x1); - }; - - /*Channel 1 ADC 1- Current A*/ - ADC_array[0] = LL_ADC_INJ_ReadConversionData12(ADC1,LL_ADC_INJ_RANK_1); - /*Channel 2 ADC 1- Current B*/ - ADC_array[2] = LL_ADC_INJ_ReadConversionData12(ADC1,LL_ADC_INJ_RANK_2); - /*Channel 4 ADC 1 - Vdc bs*/ - ADC_array[5] = LL_ADC_INJ_ReadConversionData12(ADC1,LL_ADC_INJ_RANK_4); - /*Clear flags*/ - LL_ADC_ClearFlag_JEOS(ADC1); - return (0x0); - -} -static inline uint16_t GET_ENCODER_counter(uint16_t ID) -{ - return ( LL_TIM_GetCounter(TIM3)); -} -static inline void SET_ENCODER_counter(uint16_t ID,uint16_t value) -{ - LL_TIM_SetCounter(TIM3, value); -} diff --git a/App/appIsrCallBacks.c b/App/appIsrCallBacks.c deleted file mode 100644 index f105a6f..0000000 --- a/App/appIsrCallBacks.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * appIsrCallBacks.c - * - * Created on: 18 авг. 2023 г. - * Author: on4ip - */ - -#include "main.h" -#include "ControlFuncs.h" - -uint32_t adcTick = 0; -uint16_t adc1Data = 0; -uint16_t adc2Data = 0; - -float ADC_ISR_time = 0; /*ISR load time*/ -static uint16_t ADC_array[16]; -void adcIsrCallBack(void) { - - static uint32_t start_ADC_isr = 0; - static uint32_t stop_ADC_isr = 0; - LL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); - /*Time test of ADC isr*/ - start_ADC_isr = SysTick->VAL; - adcTick++; - /*Reading and processing ADC data*/ - uint16_t error_code = 0; - if(GET_ADC_data(SYSTEMobj_1.DRIVE->drive_ID,ADC_array,&error_code)) - { - SYSTEMobj_1.DRIVE->ERRORS.errors.bit_FREE1 = 1; - } - update_IO_ADC(SYSTEMobj_1.IO, ADC_array,SYSTEMobj_1.DRIVE->STAT.stat.bit_ENABLED); - /*Calling of Application control function with Fast update rate*/ - //FAST_loop(&SYSTEMobj_1); - stop_ADC_isr = SysTick->VAL; - ADC_ISR_time = ISR_TIME_CALC(start_ADC_isr, stop_ADC_isr); - LL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); - LL_ADC_ClearFlag_JEOS(ADC1); - -} -uint32_t tim1msTick = 0; -float TIM1ms_ISR_time = 0; /*ISR load time*/ -void tim1msCallBack(void) { - tim1msTick++; - /*Colling of Application control function with Slow update rate*/ - SLOW_loop(&SYSTEMobj_1); - //LL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); - LL_TIM_ClearFlag_UPDATE(TIM2); -} -uint32_t timPwmTick = 0; -void timPwmCallBack(void) { - timPwmTick++; - //LL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin); - LL_TIM_ClearFlag_CC4(TIM1); -} diff --git a/App/appIsrCallBacks.h b/App/appIsrCallBacks.h deleted file mode 100644 index 63fce72..0000000 --- a/App/appIsrCallBacks.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * appIsrCallBacks.h - * - * Created on: 18 авг. 2023 г. - * Author: on4ip - */ - -#ifndef APPISRCALLBACKS_H_ -#define APPISRCALLBACKS_H_ - -void adcIsrCallBack(void); -void tim1msCallBack(void); -void timPwmCallBack(void); - - -#endif /* APPISRCALLBACKS_H_ */ diff --git a/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f446xx.h b/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f446xx.h deleted file mode 100644 index 6b064e8..0000000 --- a/Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f446xx.h +++ /dev/null @@ -1,15981 +0,0 @@ -/** - ****************************************************************************** - * @file stm32f446xx.h - * @author MCD Application Team - * @brief CMSIS STM32F446xx Device Peripheral Access Layer Header File. - * - * This file contains: - * - Data structures and the address mapping for all peripherals - * - peripherals registers declarations and bits definition - * - Macros to access peripheral’s registers hardware - * - ****************************************************************************** - * @attention - * - * Copyright (c) 2017 STMicroelectronics. - * All rights reserved. - * - * This software is licensed under terms that can be found in the LICENSE file - * in the root directory of this software component. - * If no LICENSE file comes with this software, it is provided AS-IS. - * - ****************************************************************************** - */ - -/** @addtogroup CMSIS_Device - * @{ - */ - -/** @addtogroup stm32f446xx - * @{ - */ - -#ifndef __STM32F446xx_H -#define __STM32F446xx_H - -#ifdef __cplusplus - extern "C" { -#endif /* __cplusplus */ - -/** @addtogroup Configuration_section_for_CMSIS - * @{ - */ - -/** - * @brief Configuration of the Cortex-M4 Processor and Core Peripherals - */ -#define __CM4_REV 0x0001U /*!< Core revision r0p1 */ -#define __MPU_PRESENT 1U /*!< STM32F4XX provides an MPU */ -#define __NVIC_PRIO_BITS 4U /*!< STM32F4XX uses 4 Bits for the Priority Levels */ -#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ -#define __FPU_PRESENT 1U /*!< FPU present */ - -/** - * @} - */ - -/** @addtogroup Peripheral_interrupt_number_definition - * @{ - */ - -/** - * @brief STM32F4XX Interrupt Number Definition, according to the selected device - * in @ref Library_configuration_section - */ -typedef enum -{ -/****** Cortex-M4 Processor Exceptions Numbers ****************************************************************/ - NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable 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_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ - 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_Stream0_IRQn = 11, /*!< DMA1 Stream 0 global Interrupt */ - DMA1_Stream1_IRQn = 12, /*!< DMA1 Stream 1 global Interrupt */ - DMA1_Stream2_IRQn = 13, /*!< DMA1 Stream 2 global Interrupt */ - DMA1_Stream3_IRQn = 14, /*!< DMA1 Stream 3 global Interrupt */ - DMA1_Stream4_IRQn = 15, /*!< DMA1 Stream 4 global Interrupt */ - DMA1_Stream5_IRQn = 16, /*!< DMA1 Stream 5 global Interrupt */ - DMA1_Stream6_IRQn = 17, /*!< DMA1 Stream 6 global Interrupt */ - ADC_IRQn = 18, /*!< ADC1, ADC2 and ADC3 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_TIM9_IRQn = 24, /*!< TIM1 Break interrupt and TIM9 global interrupt */ - TIM1_UP_TIM10_IRQn = 25, /*!< TIM1 Update Interrupt and TIM10 global interrupt */ - TIM1_TRG_COM_TIM11_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt and TIM11 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 */ - OTG_FS_WKUP_IRQn = 42, /*!< USB OTG FS Wakeup through EXTI line interrupt */ - TIM8_BRK_TIM12_IRQn = 43, /*!< TIM8 Break Interrupt and TIM12 global interrupt */ - TIM8_UP_TIM13_IRQn = 44, /*!< TIM8 Update Interrupt and TIM13 global interrupt */ - TIM8_TRG_COM_TIM14_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt */ - TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare global interrupt */ - DMA1_Stream7_IRQn = 47, /*!< DMA1 Stream7 Interrupt */ - FMC_IRQn = 48, /*!< FMC global Interrupt */ - SDIO_IRQn = 49, /*!< SDIO 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_Stream0_IRQn = 56, /*!< DMA2 Stream 0 global Interrupt */ - DMA2_Stream1_IRQn = 57, /*!< DMA2 Stream 1 global Interrupt */ - DMA2_Stream2_IRQn = 58, /*!< DMA2 Stream 2 global Interrupt */ - DMA2_Stream3_IRQn = 59, /*!< DMA2 Stream 3 global Interrupt */ - DMA2_Stream4_IRQn = 60, /*!< DMA2 Stream 4 global Interrupt */ - CAN2_TX_IRQn = 63, /*!< CAN2 TX Interrupt */ - CAN2_RX0_IRQn = 64, /*!< CAN2 RX0 Interrupt */ - CAN2_RX1_IRQn = 65, /*!< CAN2 RX1 Interrupt */ - CAN2_SCE_IRQn = 66, /*!< CAN2 SCE Interrupt */ - OTG_FS_IRQn = 67, /*!< USB OTG FS global Interrupt */ - DMA2_Stream5_IRQn = 68, /*!< DMA2 Stream 5 global interrupt */ - DMA2_Stream6_IRQn = 69, /*!< DMA2 Stream 6 global interrupt */ - DMA2_Stream7_IRQn = 70, /*!< DMA2 Stream 7 global interrupt */ - USART6_IRQn = 71, /*!< USART6 global interrupt */ - I2C3_EV_IRQn = 72, /*!< I2C3 event interrupt */ - I2C3_ER_IRQn = 73, /*!< I2C3 error interrupt */ - OTG_HS_EP1_OUT_IRQn = 74, /*!< USB OTG HS End Point 1 Out global interrupt */ - OTG_HS_EP1_IN_IRQn = 75, /*!< USB OTG HS End Point 1 In global interrupt */ - OTG_HS_WKUP_IRQn = 76, /*!< USB OTG HS Wakeup through EXTI interrupt */ - OTG_HS_IRQn = 77, /*!< USB OTG HS global interrupt */ - DCMI_IRQn = 78, /*!< DCMI global interrupt */ - FPU_IRQn = 81, /*!< FPU global interrupt */ - SPI4_IRQn = 84, /*!< SPI4 global Interrupt */ - SAI1_IRQn = 87, /*!< SAI1 global Interrupt */ - SAI2_IRQn = 91, /*!< SAI2 global Interrupt */ - QUADSPI_IRQn = 92, /*!< QuadSPI global Interrupt */ - CEC_IRQn = 93, /*!< CEC global Interrupt */ - SPDIF_RX_IRQn = 94, /*!< SPDIF-RX global Interrupt */ - FMPI2C1_EV_IRQn = 95, /*!< FMPI2C1 Event Interrupt */ - FMPI2C1_ER_IRQn = 96 /*!< FMPI2C1 Error Interrupt */ -} IRQn_Type; - -/** - * @} - */ - -#include "core_cm4.h" /* Cortex-M4 processor and core peripherals */ -#include "system_stm32f4xx.h" -#include - -/** @addtogroup Peripheral_registers_structures - * @{ - */ - -/** - * @brief Analog to Digital Converter - */ - -typedef struct -{ - __IO uint32_t SR; /*!< ADC status register, Address offset: 0x00 */ - __IO uint32_t CR1; /*!< ADC control register 1, Address offset: 0x04 */ - __IO uint32_t CR2; /*!< ADC control register 2, Address offset: 0x08 */ - __IO uint32_t SMPR1; /*!< ADC sample time register 1, Address offset: 0x0C */ - __IO uint32_t SMPR2; /*!< ADC sample time register 2, Address offset: 0x10 */ - __IO uint32_t JOFR1; /*!< ADC injected channel data offset register 1, Address offset: 0x14 */ - __IO uint32_t JOFR2; /*!< ADC injected channel data offset register 2, Address offset: 0x18 */ - __IO uint32_t JOFR3; /*!< ADC injected channel data offset register 3, Address offset: 0x1C */ - __IO uint32_t JOFR4; /*!< ADC injected channel data offset register 4, Address offset: 0x20 */ - __IO uint32_t HTR; /*!< ADC watchdog higher threshold register, Address offset: 0x24 */ - __IO uint32_t LTR; /*!< ADC watchdog lower threshold register, Address offset: 0x28 */ - __IO uint32_t SQR1; /*!< ADC regular sequence register 1, Address offset: 0x2C */ - __IO uint32_t SQR2; /*!< ADC regular sequence register 2, Address offset: 0x30 */ - __IO uint32_t SQR3; /*!< ADC regular sequence register 3, Address offset: 0x34 */ - __IO uint32_t JSQR; /*!< ADC injected sequence register, Address offset: 0x38*/ - __IO uint32_t JDR1; /*!< ADC injected data register 1, Address offset: 0x3C */ - __IO uint32_t JDR2; /*!< ADC injected data register 2, Address offset: 0x40 */ - __IO uint32_t JDR3; /*!< ADC injected data register 3, Address offset: 0x44 */ - __IO uint32_t JDR4; /*!< ADC injected data register 4, Address offset: 0x48 */ - __IO uint32_t DR; /*!< ADC regular data register, Address offset: 0x4C */ -} ADC_TypeDef; - -typedef struct -{ - __IO uint32_t CSR; /*!< ADC Common status register, Address offset: ADC1 base address + 0x300 */ - __IO uint32_t CCR; /*!< ADC common control register, Address offset: ADC1 base address + 0x304 */ - __IO uint32_t CDR; /*!< ADC common regular data register for dual - AND triple modes, Address offset: ADC1 base address + 0x308 */ -} 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 Consumer Electronics Control - */ - -typedef struct -{ - __IO uint32_t CR; /*!< CEC control register, Address offset:0x00 */ - __IO uint32_t CFGR; /*!< CEC configuration register, Address offset:0x04 */ - __IO uint32_t TXDR; /*!< CEC Tx data register , Address offset:0x08 */ - __IO uint32_t RXDR; /*!< CEC Rx Data Register, Address offset:0x0C */ - __IO uint32_t ISR; /*!< CEC Interrupt and Status Register, Address offset:0x10 */ - __IO uint32_t IER; /*!< CEC interrupt enable register, Address offset:0x14 */ -}CEC_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 */ -} 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 */ -} DAC_TypeDef; - -/** - * @brief Debug MCU - */ - -typedef struct -{ - __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */ - __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */ - __IO uint32_t APB1FZ; /*!< Debug MCU APB1 freeze register, Address offset: 0x08 */ - __IO uint32_t APB2FZ; /*!< Debug MCU APB2 freeze register, Address offset: 0x0C */ -}DBGMCU_TypeDef; - -/** - * @brief DCMI - */ - -typedef struct -{ - __IO uint32_t CR; /*!< DCMI control register 1, Address offset: 0x00 */ - __IO uint32_t SR; /*!< DCMI status register, Address offset: 0x04 */ - __IO uint32_t RISR; /*!< DCMI raw interrupt status register, Address offset: 0x08 */ - __IO uint32_t IER; /*!< DCMI interrupt enable register, Address offset: 0x0C */ - __IO uint32_t MISR; /*!< DCMI masked interrupt status register, Address offset: 0x10 */ - __IO uint32_t ICR; /*!< DCMI interrupt clear register, Address offset: 0x14 */ - __IO uint32_t ESCR; /*!< DCMI embedded synchronization code register, Address offset: 0x18 */ - __IO uint32_t ESUR; /*!< DCMI embedded synchronization unmask register, Address offset: 0x1C */ - __IO uint32_t CWSTRTR; /*!< DCMI crop window start, Address offset: 0x20 */ - __IO uint32_t CWSIZER; /*!< DCMI crop window size, Address offset: 0x24 */ - __IO uint32_t DR; /*!< DCMI data register, Address offset: 0x28 */ -} DCMI_TypeDef; - -/** - * @brief DMA Controller - */ - -typedef struct -{ - __IO uint32_t CR; /*!< DMA stream x configuration register */ - __IO uint32_t NDTR; /*!< DMA stream x number of data register */ - __IO uint32_t PAR; /*!< DMA stream x peripheral address register */ - __IO uint32_t M0AR; /*!< DMA stream x memory 0 address register */ - __IO uint32_t M1AR; /*!< DMA stream x memory 1 address register */ - __IO uint32_t FCR; /*!< DMA stream x FIFO control register */ -} DMA_Stream_TypeDef; - -typedef struct -{ - __IO uint32_t LISR; /*!< DMA low interrupt status register, Address offset: 0x00 */ - __IO uint32_t HISR; /*!< DMA high interrupt status register, Address offset: 0x04 */ - __IO uint32_t LIFCR; /*!< DMA low interrupt flag clear register, Address offset: 0x08 */ - __IO uint32_t HIFCR; /*!< DMA high interrupt flag clear register, Address offset: 0x0C */ -} DMA_TypeDef; - -/** - * @brief External Interrupt/Event Controller - */ - -typedef struct -{ - __IO uint32_t IMR; /*!< EXTI Interrupt mask register, Address offset: 0x00 */ - __IO uint32_t EMR; /*!< EXTI Event mask register, Address offset: 0x04 */ - __IO uint32_t RTSR; /*!< EXTI Rising trigger selection register, Address offset: 0x08 */ - __IO uint32_t FTSR; /*!< EXTI Falling trigger selection register, Address offset: 0x0C */ - __IO uint32_t SWIER; /*!< EXTI Software interrupt event register, Address offset: 0x10 */ - __IO uint32_t PR; /*!< EXTI Pending register, Address offset: 0x14 */ -} EXTI_TypeDef; - -/** - * @brief FLASH Registers - */ - -typedef struct -{ - __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */ - __IO uint32_t KEYR; /*!< FLASH key register, Address offset: 0x04 */ - __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x08 */ - __IO uint32_t SR; /*!< FLASH status register, Address offset: 0x0C */ - __IO uint32_t CR; /*!< FLASH control register, Address offset: 0x10 */ - __IO uint32_t OPTCR; /*!< FLASH option control register , Address offset: 0x14 */ - __IO uint32_t OPTCR1; /*!< FLASH option control register 1, Address offset: 0x18 */ -} 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 RESERVED; /*!< Reserved, 0x90 */ - __IO uint32_t ECCR; /*!< NAND Flash ECC result registers, Address offset: 0x94 */ -} FMC_Bank3_TypeDef; - -/** - * @brief Flexible Memory Controller Bank5_6 - */ - -typedef struct -{ - __IO uint32_t SDCR[2]; /*!< SDRAM Control registers , Address offset: 0x140-0x144 */ - __IO uint32_t SDTR[2]; /*!< SDRAM Timing registers , Address offset: 0x148-0x14C */ - __IO uint32_t SDCMR; /*!< SDRAM Command Mode register, Address offset: 0x150 */ - __IO uint32_t SDRTR; /*!< SDRAM Refresh Timer register, Address offset: 0x154 */ - __IO uint32_t SDSR; /*!< SDRAM Status register, Address offset: 0x158 */ -} FMC_Bank5_6_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 */ -} GPIO_TypeDef; - -/** - * @brief System configuration controller - */ - -typedef struct -{ - __IO uint32_t MEMRMP; /*!< SYSCFG memory remap register, Address offset: 0x00 */ - __IO uint32_t PMC; /*!< SYSCFG peripheral mode configuration register, Address offset: 0x04 */ - __IO uint32_t EXTICR[4]; /*!< SYSCFG external interrupt configuration registers, Address offset: 0x08-0x14 */ - uint32_t RESERVED[2]; /*!< Reserved, 0x18-0x1C */ - __IO uint32_t CMPCR; /*!< SYSCFG Compensation cell control register, Address offset: 0x20 */ - uint32_t RESERVED1[2]; /*!< Reserved, 0x24-0x28 */ - __IO uint32_t CFGR; /*!< SYSCFG Configuration register, Address offset: 0x2C */ -} SYSCFG_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 register 1, Address offset: 0x08 */ - __IO uint32_t OAR2; /*!< I2C Own address register 2, Address offset: 0x0C */ - __IO uint32_t DR; /*!< I2C Data register, Address offset: 0x10 */ - __IO uint32_t SR1; /*!< I2C Status register 1, Address offset: 0x14 */ - __IO uint32_t SR2; /*!< I2C Status register 2, Address offset: 0x18 */ - __IO uint32_t CCR; /*!< I2C Clock control register, Address offset: 0x1C */ - __IO uint32_t TRISE; /*!< I2C TRISE register, Address offset: 0x20 */ - __IO uint32_t FLTR; /*!< I2C FLTR register, Address offset: 0x24 */ -} I2C_TypeDef; - -/** - * @brief Inter-integrated Circuit Interface - */ - -typedef struct -{ - __IO uint32_t CR1; /*!< FMPI2C Control register 1, Address offset: 0x00 */ - __IO uint32_t CR2; /*!< FMPI2C Control register 2, Address offset: 0x04 */ - __IO uint32_t OAR1; /*!< FMPI2C Own address 1 register, Address offset: 0x08 */ - __IO uint32_t OAR2; /*!< FMPI2C Own address 2 register, Address offset: 0x0C */ - __IO uint32_t TIMINGR; /*!< FMPI2C Timing register, Address offset: 0x10 */ - __IO uint32_t TIMEOUTR; /*!< FMPI2C Timeout register, Address offset: 0x14 */ - __IO uint32_t ISR; /*!< FMPI2C Interrupt and status register, Address offset: 0x18 */ - __IO uint32_t ICR; /*!< FMPI2C Interrupt clear register, Address offset: 0x1C */ - __IO uint32_t PECR; /*!< FMPI2C PEC register, Address offset: 0x20 */ - __IO uint32_t RXDR; /*!< FMPI2C Receive data register, Address offset: 0x24 */ - __IO uint32_t TXDR; /*!< FMPI2C Transmit data register, Address offset: 0x28 */ -} FMPI2C_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 */ -} IWDG_TypeDef; - - -/** - * @brief Power Control - */ - -typedef struct -{ - __IO uint32_t CR; /*!< PWR power control register, Address offset: 0x00 */ - __IO uint32_t CSR; /*!< PWR power control/status register, Address offset: 0x04 */ -} PWR_TypeDef; - -/** - * @brief Reset and Clock Control - */ - -typedef struct -{ - __IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */ - __IO uint32_t PLLCFGR; /*!< RCC PLL configuration register, Address offset: 0x04 */ - __IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */ - __IO uint32_t CIR; /*!< RCC clock interrupt register, Address offset: 0x0C */ - __IO uint32_t AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x10 */ - __IO uint32_t AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x14 */ - __IO uint32_t AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x18 */ - uint32_t RESERVED0; /*!< Reserved, 0x1C */ - __IO uint32_t APB1RSTR; /*!< RCC APB1 peripheral reset register, Address offset: 0x20 */ - __IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x24 */ - uint32_t RESERVED1[2]; /*!< Reserved, 0x28-0x2C */ - __IO uint32_t AHB1ENR; /*!< RCC AHB1 peripheral clock register, Address offset: 0x30 */ - __IO uint32_t AHB2ENR; /*!< RCC AHB2 peripheral clock register, Address offset: 0x34 */ - __IO uint32_t AHB3ENR; /*!< RCC AHB3 peripheral clock register, Address offset: 0x38 */ - uint32_t RESERVED2; /*!< Reserved, 0x3C */ - __IO uint32_t APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x40 */ - __IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clock enable register, Address offset: 0x44 */ - uint32_t RESERVED3[2]; /*!< Reserved, 0x48-0x4C */ - __IO uint32_t AHB1LPENR; /*!< RCC AHB1 peripheral clock enable in low power mode register, Address offset: 0x50 */ - __IO uint32_t AHB2LPENR; /*!< RCC AHB2 peripheral clock enable in low power mode register, Address offset: 0x54 */ - __IO uint32_t AHB3LPENR; /*!< RCC AHB3 peripheral clock enable in low power mode register, Address offset: 0x58 */ - uint32_t RESERVED4; /*!< Reserved, 0x5C */ - __IO uint32_t APB1LPENR; /*!< RCC APB1 peripheral clock enable in low power mode register, Address offset: 0x60 */ - __IO uint32_t APB2LPENR; /*!< RCC APB2 peripheral clock enable in low power mode register, Address offset: 0x64 */ - uint32_t RESERVED5[2]; /*!< Reserved, 0x68-0x6C */ - __IO uint32_t BDCR; /*!< RCC Backup domain control register, Address offset: 0x70 */ - __IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x74 */ - uint32_t RESERVED6[2]; /*!< Reserved, 0x78-0x7C */ - __IO uint32_t SSCGR; /*!< RCC spread spectrum clock generation register, Address offset: 0x80 */ - __IO uint32_t PLLI2SCFGR; /*!< RCC PLLI2S configuration register, Address offset: 0x84 */ - __IO uint32_t PLLSAICFGR; /*!< RCC PLLSAI configuration register, Address offset: 0x88 */ - __IO uint32_t DCKCFGR; /*!< RCC Dedicated Clocks configuration register, Address offset: 0x8C */ - __IO uint32_t CKGATENR; /*!< RCC Clocks Gated ENable Register, Address offset: 0x90 */ - __IO uint32_t DCKCFGR2; /*!< RCC Dedicated Clocks configuration register 2, 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 */ - __IO uint32_t CALIBR; /*!< RTC calibration register, Address offset: 0x18 */ - __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 TAFCR; /*!< RTC tamper and alternate function 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 */ - uint32_t RESERVED7; /*!< Reserved, 0x4C */ - __IO uint32_t BKP0R; /*!< RTC backup register 1, 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 */ -} 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 SD host Interface - */ - -typedef struct -{ - __IO uint32_t POWER; /*!< SDIO power control register, Address offset: 0x00 */ - __IO uint32_t CLKCR; /*!< SDI clock control register, Address offset: 0x04 */ - __IO uint32_t ARG; /*!< SDIO argument register, Address offset: 0x08 */ - __IO uint32_t CMD; /*!< SDIO command register, Address offset: 0x0C */ - __IO const uint32_t RESPCMD; /*!< SDIO command response register, Address offset: 0x10 */ - __IO const uint32_t RESP1; /*!< SDIO response 1 register, Address offset: 0x14 */ - __IO const uint32_t RESP2; /*!< SDIO response 2 register, Address offset: 0x18 */ - __IO const uint32_t RESP3; /*!< SDIO response 3 register, Address offset: 0x1C */ - __IO const uint32_t RESP4; /*!< SDIO response 4 register, Address offset: 0x20 */ - __IO uint32_t DTIMER; /*!< SDIO data timer register, Address offset: 0x24 */ - __IO uint32_t DLEN; /*!< SDIO data length register, Address offset: 0x28 */ - __IO uint32_t DCTRL; /*!< SDIO data control register, Address offset: 0x2C */ - __IO const uint32_t DCOUNT; /*!< SDIO data counter register, Address offset: 0x30 */ - __IO const uint32_t STA; /*!< SDIO status register, Address offset: 0x34 */ - __IO uint32_t ICR; /*!< SDIO interrupt clear register, Address offset: 0x38 */ - __IO uint32_t MASK; /*!< SDIO mask register, Address offset: 0x3C */ - uint32_t RESERVED0[2]; /*!< Reserved, 0x40-0x44 */ - __IO const uint32_t FIFOCNT; /*!< SDIO FIFO counter register, Address offset: 0x48 */ - uint32_t RESERVED1[13]; /*!< Reserved, 0x4C-0x7C */ - __IO uint32_t FIFO; /*!< SDIO data FIFO register, Address offset: 0x80 */ -} SDIO_TypeDef; - -/** - * @brief Serial Peripheral Interface - */ - -typedef struct -{ - __IO uint32_t CR1; /*!< SPI control register 1 (not used in I2S mode), 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 (not used in I2S mode), Address offset: 0x10 */ - __IO uint32_t RXCRCR; /*!< SPI RX CRC register (not used in I2S mode), Address offset: 0x14 */ - __IO uint32_t TXCRCR; /*!< SPI TX CRC register (not used in I2S mode), Address offset: 0x18 */ - __IO uint32_t I2SCFGR; /*!< SPI_I2S configuration register, Address offset: 0x1C */ - __IO uint32_t I2SPR; /*!< SPI_I2S prescaler register, Address offset: 0x20 */ -} SPI_TypeDef; - -/** - * @brief 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 SPDIFRX Interface - */ - -typedef struct -{ - __IO uint32_t CR; /*!< Control register, Address offset: 0x00 */ - __IO uint16_t IMR; /*!< Interrupt mask register, Address offset: 0x04 */ - uint16_t RESERVED0; /*!< Reserved, 0x06 */ - __IO uint32_t SR; /*!< Status register, Address offset: 0x08 */ - __IO uint16_t IFCR; /*!< Interrupt Flag Clear register, Address offset: 0x0C */ - uint16_t RESERVED1; /*!< Reserved, 0x0E */ - __IO uint32_t DR; /*!< Data input register, Address offset: 0x10 */ - __IO uint32_t CSR; /*!< Channel Status register, Address offset: 0x14 */ - __IO uint32_t DIR; /*!< Debug Information register, Address offset: 0x18 */ - uint16_t RESERVED2; /*!< Reserved, 0x1A */ -} SPDIFRX_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 OR; /*!< TIM option register, Address offset: 0x50 */ -} TIM_TypeDef; - -/** - * @brief Universal Synchronous Asynchronous Receiver Transmitter - */ - -typedef struct -{ - __IO uint32_t SR; /*!< USART Status register, Address offset: 0x00 */ - __IO uint32_t DR; /*!< USART Data register, Address offset: 0x04 */ - __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x08 */ - __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x0C */ - __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x10 */ - __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x14 */ - __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x18 */ -} USART_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 USB_OTG_Core_Registers - */ -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 */ - uint32_t Reserved5[3]; /*!< Reserved 040h-048h */ - __IO uint32_t GHWCFG3; /*!< User HW config3 04Ch */ - uint32_t Reserved6; /*!< Reserved 050h */ - __IO uint32_t GLPMCFG; /*!< LPM Register 054h */ - uint32_t Reserved; /*!< Reserved 058h */ - __IO uint32_t GDFIFOCFG; /*!< DFIFO Software Config Register 05Ch */ - uint32_t Reserved43[40]; /*!< Reserved 058h-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 Reserved9; /*!< 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 threshold 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; /*!< dedicated EP mask 840h */ - __IO uint32_t DINEP1MSK; /*!< dedicated EP mask 844h */ - uint32_t Reserved44[15]; /*!< Reserved 844-87Ch */ - __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; /*!< Host Channel Characteristics Register 500h */ - __IO uint32_t HCSPLT; /*!< Host Channel Split Control Register 504h */ - __IO uint32_t HCINT; /*!< Host Channel Interrupt Register 508h */ - __IO uint32_t HCINTMSK; /*!< Host Channel Interrupt Mask Register 50Ch */ - __IO uint32_t HCTSIZ; /*!< Host Channel Transfer Size Register 510h */ - __IO uint32_t HCDMA; /*!< Host Channel DMA Address Register 514h */ - uint32_t Reserved[2]; /*!< Reserved */ -} USB_OTG_HostChannelTypeDef; - -/** - * @} - */ - -/** @addtogroup Peripheral_memory_map - * @{ - */ -#define FLASH_BASE 0x08000000UL /*!< FLASH(up to 1 MB) base address in the alias region */ -#define SRAM1_BASE 0x20000000UL /*!< SRAM1(112 KB) base address in the alias region */ -#define SRAM2_BASE 0x2001C000UL /*!< SRAM2(16 KB) base address in the alias region */ -#define PERIPH_BASE 0x40000000UL /*!< Peripheral base address in the alias region */ -#define BKPSRAM_BASE 0x40024000UL /*!< Backup SRAM(4 KB) base address in the alias region */ -#define FMC_R_BASE 0xA0000000UL /*!< FMC registers base address */ -#define QSPI_R_BASE 0xA0001000UL /*!< QuadSPI registers base address */ -#define SRAM1_BB_BASE 0x22000000UL /*!< SRAM1(112 KB) base address in the bit-band region */ -#define SRAM2_BB_BASE 0x22380000UL /*!< SRAM2(16 KB) base address in the bit-band region */ -#define PERIPH_BB_BASE 0x42000000UL /*!< Peripheral base address in the bit-band region */ -#define BKPSRAM_BB_BASE 0x42480000UL /*!< Backup SRAM(4 KB) base address in the bit-band region */ -#define FLASH_END 0x0807FFFFUL /*!< FLASH end address */ -#define FLASH_OTP_BASE 0x1FFF7800UL /*!< Base address of : (up to 528 Bytes) embedded FLASH OTP Area */ -#define FLASH_OTP_END 0x1FFF7A0FUL /*!< End address of : (up to 528 Bytes) embedded FLASH OTP Area */ - -/* Legacy defines */ -#define SRAM_BASE SRAM1_BASE -#define SRAM_BB_BASE SRAM1_BB_BASE - -/*!< 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 + 0x10000000UL) - -/*!< 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 TIM12_BASE (APB1PERIPH_BASE + 0x1800UL) -#define TIM13_BASE (APB1PERIPH_BASE + 0x1C00UL) -#define TIM14_BASE (APB1PERIPH_BASE + 0x2000UL) -#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 SPDIFRX_BASE (APB1PERIPH_BASE + 0x4000UL) -#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 FMPI2C1_BASE (APB1PERIPH_BASE + 0x6000UL) -#define CAN1_BASE (APB1PERIPH_BASE + 0x6400UL) -#define CAN2_BASE (APB1PERIPH_BASE + 0x6800UL) -#define CEC_BASE (APB1PERIPH_BASE + 0x6C00UL) -#define PWR_BASE (APB1PERIPH_BASE + 0x7000UL) -#define DAC_BASE (APB1PERIPH_BASE + 0x7400UL) - -/*!< APB2 peripherals */ -#define TIM1_BASE (APB2PERIPH_BASE + 0x0000UL) -#define TIM8_BASE (APB2PERIPH_BASE + 0x0400UL) -#define USART1_BASE (APB2PERIPH_BASE + 0x1000UL) -#define USART6_BASE (APB2PERIPH_BASE + 0x1400UL) -#define ADC1_BASE (APB2PERIPH_BASE + 0x2000UL) -#define ADC2_BASE (APB2PERIPH_BASE + 0x2100UL) -#define ADC3_BASE (APB2PERIPH_BASE + 0x2200UL) -#define ADC123_COMMON_BASE (APB2PERIPH_BASE + 0x2300UL) -/* Legacy define */ -#define ADC_BASE ADC123_COMMON_BASE -#define SDIO_BASE (APB2PERIPH_BASE + 0x2C00UL) -#define SPI1_BASE (APB2PERIPH_BASE + 0x3000UL) -#define SPI4_BASE (APB2PERIPH_BASE + 0x3400UL) -#define SYSCFG_BASE (APB2PERIPH_BASE + 0x3800UL) -#define EXTI_BASE (APB2PERIPH_BASE + 0x3C00UL) -#define TIM9_BASE (APB2PERIPH_BASE + 0x4000UL) -#define TIM10_BASE (APB2PERIPH_BASE + 0x4400UL) -#define TIM11_BASE (APB2PERIPH_BASE + 0x4800UL) -#define SAI1_BASE (APB2PERIPH_BASE + 0x5800UL) -#define SAI1_Block_A_BASE (SAI1_BASE + 0x004UL) -#define SAI1_Block_B_BASE (SAI1_BASE + 0x024UL) -#define SAI2_BASE (APB2PERIPH_BASE + 0x5C00UL) -#define SAI2_Block_A_BASE (SAI2_BASE + 0x004UL) -#define SAI2_Block_B_BASE (SAI2_BASE + 0x024UL) - -/*!< AHB1 peripherals */ -#define GPIOA_BASE (AHB1PERIPH_BASE + 0x0000UL) -#define GPIOB_BASE (AHB1PERIPH_BASE + 0x0400UL) -#define GPIOC_BASE (AHB1PERIPH_BASE + 0x0800UL) -#define GPIOD_BASE (AHB1PERIPH_BASE + 0x0C00UL) -#define GPIOE_BASE (AHB1PERIPH_BASE + 0x1000UL) -#define GPIOF_BASE (AHB1PERIPH_BASE + 0x1400UL) -#define GPIOG_BASE (AHB1PERIPH_BASE + 0x1800UL) -#define GPIOH_BASE (AHB1PERIPH_BASE + 0x1C00UL) -#define CRC_BASE (AHB1PERIPH_BASE + 0x3000UL) -#define RCC_BASE (AHB1PERIPH_BASE + 0x3800UL) -#define FLASH_R_BASE (AHB1PERIPH_BASE + 0x3C00UL) -#define DMA1_BASE (AHB1PERIPH_BASE + 0x6000UL) -#define DMA1_Stream0_BASE (DMA1_BASE + 0x010UL) -#define DMA1_Stream1_BASE (DMA1_BASE + 0x028UL) -#define DMA1_Stream2_BASE (DMA1_BASE + 0x040UL) -#define DMA1_Stream3_BASE (DMA1_BASE + 0x058UL) -#define DMA1_Stream4_BASE (DMA1_BASE + 0x070UL) -#define DMA1_Stream5_BASE (DMA1_BASE + 0x088UL) -#define DMA1_Stream6_BASE (DMA1_BASE + 0x0A0UL) -#define DMA1_Stream7_BASE (DMA1_BASE + 0x0B8UL) -#define DMA2_BASE (AHB1PERIPH_BASE + 0x6400UL) -#define DMA2_Stream0_BASE (DMA2_BASE + 0x010UL) -#define DMA2_Stream1_BASE (DMA2_BASE + 0x028UL) -#define DMA2_Stream2_BASE (DMA2_BASE + 0x040UL) -#define DMA2_Stream3_BASE (DMA2_BASE + 0x058UL) -#define DMA2_Stream4_BASE (DMA2_BASE + 0x070UL) -#define DMA2_Stream5_BASE (DMA2_BASE + 0x088UL) -#define DMA2_Stream6_BASE (DMA2_BASE + 0x0A0UL) -#define DMA2_Stream7_BASE (DMA2_BASE + 0x0B8UL) - -/*!< AHB2 peripherals */ -#define DCMI_BASE (AHB2PERIPH_BASE + 0x50000UL) - -/*!< FMC Bankx 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) -#define FMC_Bank5_6_R_BASE (FMC_R_BASE + 0x0140UL) - - -/*!< Debug MCU registers base address */ -#define DBGMCU_BASE 0xE0042000UL -/*!< USB registers base address */ -#define USB_OTG_HS_PERIPH_BASE 0x40040000UL -#define USB_OTG_FS_PERIPH_BASE 0x50000000UL - -#define USB_OTG_GLOBAL_BASE 0x000UL -#define USB_OTG_DEVICE_BASE 0x800UL -#define USB_OTG_IN_ENDPOINT_BASE 0x900UL -#define USB_OTG_OUT_ENDPOINT_BASE 0xB00UL -#define USB_OTG_EP_REG_SIZE 0x20UL -#define USB_OTG_HOST_BASE 0x400UL -#define USB_OTG_HOST_PORT_BASE 0x440UL -#define USB_OTG_HOST_CHANNEL_BASE 0x500UL -#define USB_OTG_HOST_CHANNEL_SIZE 0x20UL -#define USB_OTG_PCGCCTL_BASE 0xE00UL -#define USB_OTG_FIFO_BASE 0x1000UL -#define USB_OTG_FIFO_SIZE 0x1000UL - -#define UID_BASE 0x1FFF7A10UL /*!< Unique device ID register base address */ -#define FLASHSIZE_BASE 0x1FFF7A22UL /*!< FLASH Size register base address */ -#define PACKAGE_BASE 0x1FFF7BF0UL /*!< Package size 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 TIM12 ((TIM_TypeDef *) TIM12_BASE) -#define TIM13 ((TIM_TypeDef *) TIM13_BASE) -#define TIM14 ((TIM_TypeDef *) TIM14_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 SPDIFRX ((SPDIFRX_TypeDef *) SPDIFRX_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 FMPI2C1 ((FMPI2C_TypeDef *) FMPI2C1_BASE) -#define CAN1 ((CAN_TypeDef *) CAN1_BASE) -#define CAN2 ((CAN_TypeDef *) CAN2_BASE) -#define CEC ((CEC_TypeDef *) CEC_BASE) -#define PWR ((PWR_TypeDef *) PWR_BASE) -#define DAC1 ((DAC_TypeDef *) DAC_BASE) -#define DAC ((DAC_TypeDef *) DAC_BASE) /* Kept for legacy purpose */ -#define TIM1 ((TIM_TypeDef *) TIM1_BASE) -#define TIM8 ((TIM_TypeDef *) TIM8_BASE) -#define USART1 ((USART_TypeDef *) USART1_BASE) -#define USART6 ((USART_TypeDef *) USART6_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) -/* Legacy define */ -#define ADC ADC123_COMMON -#define SDIO ((SDIO_TypeDef *) SDIO_BASE) -#define SPI1 ((SPI_TypeDef *) SPI1_BASE) -#define SPI4 ((SPI_TypeDef *) SPI4_BASE) -#define SYSCFG ((SYSCFG_TypeDef *) SYSCFG_BASE) -#define EXTI ((EXTI_TypeDef *) EXTI_BASE) -#define TIM9 ((TIM_TypeDef *) TIM9_BASE) -#define TIM10 ((TIM_TypeDef *) TIM10_BASE) -#define TIM11 ((TIM_TypeDef *) TIM11_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 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 CRC ((CRC_TypeDef *) CRC_BASE) -#define RCC ((RCC_TypeDef *) RCC_BASE) -#define FLASH ((FLASH_TypeDef *) FLASH_R_BASE) -#define DMA1 ((DMA_TypeDef *) DMA1_BASE) -#define DMA1_Stream0 ((DMA_Stream_TypeDef *) DMA1_Stream0_BASE) -#define DMA1_Stream1 ((DMA_Stream_TypeDef *) DMA1_Stream1_BASE) -#define DMA1_Stream2 ((DMA_Stream_TypeDef *) DMA1_Stream2_BASE) -#define DMA1_Stream3 ((DMA_Stream_TypeDef *) DMA1_Stream3_BASE) -#define DMA1_Stream4 ((DMA_Stream_TypeDef *) DMA1_Stream4_BASE) -#define DMA1_Stream5 ((DMA_Stream_TypeDef *) DMA1_Stream5_BASE) -#define DMA1_Stream6 ((DMA_Stream_TypeDef *) DMA1_Stream6_BASE) -#define DMA1_Stream7 ((DMA_Stream_TypeDef *) DMA1_Stream7_BASE) -#define DMA2 ((DMA_TypeDef *) DMA2_BASE) -#define DMA2_Stream0 ((DMA_Stream_TypeDef *) DMA2_Stream0_BASE) -#define DMA2_Stream1 ((DMA_Stream_TypeDef *) DMA2_Stream1_BASE) -#define DMA2_Stream2 ((DMA_Stream_TypeDef *) DMA2_Stream2_BASE) -#define DMA2_Stream3 ((DMA_Stream_TypeDef *) DMA2_Stream3_BASE) -#define DMA2_Stream4 ((DMA_Stream_TypeDef *) DMA2_Stream4_BASE) -#define DMA2_Stream5 ((DMA_Stream_TypeDef *) DMA2_Stream5_BASE) -#define DMA2_Stream6 ((DMA_Stream_TypeDef *) DMA2_Stream6_BASE) -#define DMA2_Stream7 ((DMA_Stream_TypeDef *) DMA2_Stream7_BASE) -#define DCMI ((DCMI_TypeDef *) DCMI_BASE) -#define FMC_Bank1 ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE) -#define FMC_Bank1E ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE) -#define FMC_Bank3 ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE) -#define FMC_Bank5_6 ((FMC_Bank5_6_TypeDef *) FMC_Bank5_6_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) -#define USB_OTG_HS ((USB_OTG_GlobalTypeDef *) USB_OTG_HS_PERIPH_BASE) - -/** - * @} - */ - -/** @addtogroup Exported_constants - * @{ - */ - -/** @addtogroup Hardware_Constant_Definition - * @{ - */ -#define LSI_STARTUP_TIME 40U /*!< LSI Maximum startup time in us */ -/** - * @} - */ - - /** @addtogroup Peripheral_Registers_Bits_Definition - * @{ - */ - -/******************************************************************************/ -/* Peripheral Registers_Bits_Definition */ -/******************************************************************************/ - -/******************************************************************************/ -/* */ -/* Analog to Digital Converter */ -/* */ -/******************************************************************************/ -/* - * @brief Specific device feature definitions (not present on all devices in the STM32F4 serie) - */ -#define ADC_MULTIMODE_SUPPORT /*!>= 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/Drivers/CMSIS/Include/cmsis_armclang.h b/Drivers/CMSIS/Include/cmsis_armclang.h deleted file mode 100644 index 162a400..0000000 --- a/Drivers/CMSIS/Include/cmsis_armclang.h +++ /dev/null @@ -1,1869 +0,0 @@ -/**************************************************************************//** - * @file cmsis_armclang.h - * @brief CMSIS compiler armclang (Arm Compiler 6) header file - * @version V5.0.4 - * @date 10. January 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. - */ - -/*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 - - -/* ########################### 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 - */ -#define __CLZ (uint8_t)__builtin_clz - - -#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); -} - -#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 */ - - -#endif /* __CMSIS_ARMCLANG_H */ diff --git a/Drivers/CMSIS/Include/cmsis_compiler.h b/Drivers/CMSIS/Include/cmsis_compiler.h deleted file mode 100644 index 94212eb..0000000 --- a/Drivers/CMSIS/Include/cmsis_compiler.h +++ /dev/null @@ -1,266 +0,0 @@ -/**************************************************************************//** - * @file cmsis_compiler.h - * @brief CMSIS compiler generic header file - * @version V5.0.4 - * @date 10. January 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 (armclang) - */ -#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) - #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 - #warning No compiler specific solution for __RESTRICT. __RESTRICT is ignored. - #define __RESTRICT - #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 - - -/* - * 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 - - -#else - #error Unknown compiler. -#endif - - -#endif /* __CMSIS_COMPILER_H */ - diff --git a/Drivers/CMSIS/Include/cmsis_gcc.h b/Drivers/CMSIS/Include/cmsis_gcc.h deleted file mode 100644 index 2d9db15..0000000 --- a/Drivers/CMSIS/Include/cmsis_gcc.h +++ /dev/null @@ -1,2085 +0,0 @@ -/**************************************************************************//** - * @file cmsis_gcc.h - * @brief CMSIS compiler GCC header file - * @version V5.0.4 - * @date 09. April 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_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 - - -/* ########################### 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 - */ -#define __CLZ (uint8_t)__builtin_clz - - -#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/Drivers/CMSIS/Include/cmsis_iccarm.h b/Drivers/CMSIS/Include/cmsis_iccarm.h deleted file mode 100644 index 11c4af0..0000000 --- a/Drivers/CMSIS/Include/cmsis_iccarm.h +++ /dev/null @@ -1,935 +0,0 @@ -/**************************************************************************//** - * @file cmsis_iccarm.h - * @brief CMSIS compiler ICCARM (IAR Compiler for Arm) header file - * @version V5.0.7 - * @date 19. June 2018 - ******************************************************************************/ - -//------------------------------------------------------------------------------ -// -// Copyright (c) 2017-2018 IAR Systems -// -// 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 __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 - #define __RESTRICT __restrict -#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 __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/Drivers/CMSIS/Include/cmsis_version.h b/Drivers/CMSIS/Include/cmsis_version.h deleted file mode 100644 index 660f612..0000000 --- a/Drivers/CMSIS/Include/cmsis_version.h +++ /dev/null @@ -1,39 +0,0 @@ -/**************************************************************************//** - * @file cmsis_version.h - * @brief CMSIS Core(M) Version definitions - * @version V5.0.2 - * @date 19. April 2017 - ******************************************************************************/ -/* - * Copyright (c) 2009-2017 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 ( 1U) /*!< [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/Drivers/CMSIS/Include/core_armv8mbl.h b/Drivers/CMSIS/Include/core_armv8mbl.h deleted file mode 100644 index 251e4ed..0000000 --- a/Drivers/CMSIS/Include/core_armv8mbl.h +++ /dev/null @@ -1,1918 +0,0 @@ -/**************************************************************************//** - * @file core_armv8mbl.h - * @brief CMSIS Armv8-M Baseline Core Peripheral Access Layer Header File - * @version V5.0.7 - * @date 22. June 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_PCS_VFP - #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 (0x00000002UL) /* bit [1] 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) - { - 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[_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; -} - - -/** - \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/Drivers/CMSIS/Include/core_armv8mml.h b/Drivers/CMSIS/Include/core_armv8mml.h deleted file mode 100644 index 3a3148e..0000000 --- a/Drivers/CMSIS/Include/core_armv8mml.h +++ /dev/null @@ -1,2927 +0,0 @@ -/**************************************************************************//** - * @file core_armv8mml.h - * @brief CMSIS Armv8-M Mainline Core Peripheral Access Layer Header File - * @version V5.0.7 - * @date 06. July 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_PCS_VFP - #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 */ - 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 */ - __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 (0x00000002UL) /* bit [1] 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 << 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; -} - - -/** - \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_ARMV8MML_H_DEPENDANT */ - -#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm0.h b/Drivers/CMSIS/Include/core_cm0.h deleted file mode 100644 index f929bba..0000000 --- a/Drivers/CMSIS/Include/core_cm0.h +++ /dev/null @@ -1,949 +0,0 @@ -/**************************************************************************//** - * @file core_cm0.h - * @brief CMSIS Cortex-M0 Core Peripheral Access Layer Header File - * @version V5.0.5 - * @date 28. May 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_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_PCS_VFP - #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 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_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) - { - NVIC->ISER[0U] = (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[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; -} - - -/** - \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_CM0_H_DEPENDANT */ - -#endif /* __CMSIS_GENERIC */ diff --git a/Drivers/CMSIS/Include/core_cm0plus.h b/Drivers/CMSIS/Include/core_cm0plus.h deleted file mode 100644 index 424011a..0000000 --- a/Drivers/CMSIS/Include/core_cm0plus.h +++ /dev/null @@ -1,1083 +0,0 @@ -/**************************************************************************//** - * @file core_cm0plus.h - * @brief CMSIS Cortex-M0+ Core Peripheral Access Layer Header File - * @version V5.0.6 - * @date 28. May 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_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_PCS_VFP - #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 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 */ -#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) - { - NVIC->ISER[0U] = (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[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 = (uint32_t *)SCB->VTOR; -#else - uint32_t *vectors = (uint32_t *)0x0U; -#endif - vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; -} - - -/** - \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(); - } -} - -/*@} 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/Drivers/CMSIS/Include/core_cm1.h b/Drivers/CMSIS/Include/core_cm1.h deleted file mode 100644 index 0ed678e..0000000 --- a/Drivers/CMSIS/Include/core_cm1.h +++ /dev/null @@ -1,976 +0,0 @@ -/**************************************************************************//** - * @file core_cm1.h - * @brief CMSIS Cortex-M1 Core Peripheral Access Layer Header File - * @version V1.0.0 - * @date 23. July 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_PCS_VFP - #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) - { - NVIC->ISER[0U] = (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[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; -} - - -/** - \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/Drivers/CMSIS/Include/core_cm23.h b/Drivers/CMSIS/Include/core_cm23.h deleted file mode 100644 index acbc5df..0000000 --- a/Drivers/CMSIS/Include/core_cm23.h +++ /dev/null @@ -1,1993 +0,0 @@ -/**************************************************************************//** - * @file core_cm23.h - * @brief CMSIS Cortex-M23 Core Peripheral Access Layer Header File - * @version V5.0.7 - * @date 22. June 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_PCS_VFP - #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 (0x00000002UL) /* bit [1] 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) - { - 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[_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; -} - - -/** - \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/Drivers/CMSIS/Include/core_cm3.h b/Drivers/CMSIS/Include/core_cm3.h deleted file mode 100644 index 74bff64..0000000 --- a/Drivers/CMSIS/Include/core_cm3.h +++ /dev/null @@ -1,1941 +0,0 @@ -/**************************************************************************//** - * @file core_cm3.h - * @brief CMSIS Cortex-M3 Core Peripheral Access Layer Header File - * @version V5.0.8 - * @date 04. June 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_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_PCS_VFP - #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 RSERVED1[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 */ - -#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[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[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 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 */ - __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 (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_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 (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_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) - { - 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); - } -} - - -/** - \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; - vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; -} - - -/** - \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(); - } -} - -/*@} 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/Drivers/CMSIS/Include/core_cm33.h b/Drivers/CMSIS/Include/core_cm33.h deleted file mode 100644 index 6cd2db7..0000000 --- a/Drivers/CMSIS/Include/core_cm33.h +++ /dev/null @@ -1,3002 +0,0 @@ -/**************************************************************************//** - * @file core_cm33.h - * @brief CMSIS Cortex-M33 Core Peripheral Access Layer Header File - * @version V5.0.9 - * @date 06. July 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_PCS_VFP) - #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 */ - 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 (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 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 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 (0x00000002UL) /* bit [1] 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 << 8U) ); /* 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) - { - 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; -} - - -/** - \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/Drivers/CMSIS/Include/core_cm4.h b/Drivers/CMSIS/Include/core_cm4.h deleted file mode 100644 index 7d56873..0000000 --- a/Drivers/CMSIS/Include/core_cm4.h +++ /dev/null @@ -1,2129 +0,0 @@ -/**************************************************************************//** - * @file core_cm4.h - * @brief CMSIS Cortex-M4 Core Peripheral Access Layer Header File - * @version V5.0.8 - * @date 04. June 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_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_PCS_VFP - #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 RSERVED1[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[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[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 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 */ - __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 (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_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 (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_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 */ -} 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 */ - -/*@} 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) - { - 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); - } -} - - -/** - \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; - vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; -} - - -/** - \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(); - } -} - -/*@} 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/Drivers/CMSIS/Include/core_cm7.h b/Drivers/CMSIS/Include/core_cm7.h deleted file mode 100644 index a14dc62..0000000 --- a/Drivers/CMSIS/Include/core_cm7.h +++ /dev/null @@ -1,2671 +0,0 @@ -/**************************************************************************//** - * @file core_cm7.h - * @brief CMSIS Cortex-M7 Core Peripheral Access Layer Header File - * @version V5.0.8 - * @date 04. June 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_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_PCS_VFP - #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 RSERVED1[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_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[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[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 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 */ - __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 (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_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 (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_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 */ - -/*@} 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) - { - 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); - } -} - - -/** - \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; - vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; -} - - -/** - \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(); - } -} - -/*@} 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 ) - - -/** - \brief Enable I-Cache - \details Turns on I-Cache - */ -__STATIC_INLINE void SCB_EnableICache (void) -{ - #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) - __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_INLINE 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_INLINE void SCB_InvalidateICache (void) -{ - #if defined (__ICACHE_PRESENT) && (__ICACHE_PRESENT == 1U) - __DSB(); - __ISB(); - SCB->ICIALLU = 0UL; - __DSB(); - __ISB(); - #endif -} - - -/** - \brief Enable D-Cache - \details Turns on D-Cache - */ -__STATIC_INLINE void SCB_EnableDCache (void) -{ - #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) - uint32_t ccsidr; - uint32_t sets; - uint32_t ways; - - SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* 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_INLINE void SCB_DisableDCache (void) -{ - #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) - uint32_t ccsidr; - uint32_t sets; - uint32_t ways; - - SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* 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_INLINE void SCB_InvalidateDCache (void) -{ - #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) - uint32_t ccsidr; - uint32_t sets; - uint32_t ways; - - SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* 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_INLINE void SCB_CleanDCache (void) -{ - #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) - uint32_t ccsidr; - uint32_t sets; - uint32_t ways; - - SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* 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_INLINE void SCB_CleanInvalidateDCache (void) -{ - #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) - uint32_t ccsidr; - uint32_t sets; - uint32_t ways; - - SCB->CSSELR = 0U; /*(0U << 1U) | 0U;*/ /* 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 - \param[in] addr address (aligned to 32-byte boundary) - \param[in] dsize size of memory block (in number of bytes) -*/ -__STATIC_INLINE void SCB_InvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) -{ - #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) - int32_t op_size = dsize; - uint32_t op_addr = (uint32_t)addr; - int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ - - __DSB(); - - while (op_size > 0) { - SCB->DCIMVAC = op_addr; - op_addr += (uint32_t)linesize; - op_size -= linesize; - } - - __DSB(); - __ISB(); - #endif -} - - -/** - \brief D-Cache Clean by address - \details Cleans D-Cache for the given address - \param[in] addr address (aligned to 32-byte boundary) - \param[in] dsize size of memory block (in number of bytes) -*/ -__STATIC_INLINE void SCB_CleanDCache_by_Addr (uint32_t *addr, int32_t dsize) -{ - #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) - int32_t op_size = dsize; - uint32_t op_addr = (uint32_t) addr; - int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ - - __DSB(); - - while (op_size > 0) { - SCB->DCCMVAC = op_addr; - op_addr += (uint32_t)linesize; - op_size -= linesize; - } - - __DSB(); - __ISB(); - #endif -} - - -/** - \brief D-Cache Clean and Invalidate by address - \details Cleans and invalidates D_Cache for the given address - \param[in] addr address (aligned to 32-byte boundary) - \param[in] dsize size of memory block (in number of bytes) -*/ -__STATIC_INLINE void SCB_CleanInvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize) -{ - #if defined (__DCACHE_PRESENT) && (__DCACHE_PRESENT == 1U) - int32_t op_size = dsize; - uint32_t op_addr = (uint32_t) addr; - int32_t linesize = 32; /* in Cortex-M7 size of cache line is fixed to 8 words (32 bytes) */ - - __DSB(); - - while (op_size > 0) { - SCB->DCCIMVAC = op_addr; - op_addr += (uint32_t)linesize; - op_size -= linesize; - } - - __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/Drivers/CMSIS/Include/core_sc000.h b/Drivers/CMSIS/Include/core_sc000.h deleted file mode 100644 index 9b67c92..0000000 --- a/Drivers/CMSIS/Include/core_sc000.h +++ /dev/null @@ -1,1022 +0,0 @@ -/**************************************************************************//** - * @file core_sc000.h - * @brief CMSIS SC000 Core Peripheral Access Layer Header File - * @version V5.0.5 - * @date 28. May 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_PCS_VFP - #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) - { - NVIC->ISER[0U] = (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[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; -} - - -/** - \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/Drivers/CMSIS/Include/core_sc300.h b/Drivers/CMSIS/Include/core_sc300.h deleted file mode 100644 index 3e8a471..0000000 --- a/Drivers/CMSIS/Include/core_sc300.h +++ /dev/null @@ -1,1915 +0,0 @@ -/**************************************************************************//** - * @file core_sc300.h - * @brief CMSIS SC300 Core Peripheral Access Layer Header File - * @version V5.0.6 - * @date 04. June 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_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_PCS_VFP - #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 RSERVED1[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 */ - uint32_t RESERVED1[1U]; -} 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[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 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 */ - __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 (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_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 (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_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 << 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); - } -} - - -/** - \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; - vectors[(int32_t)IRQn + NVIC_USER_IRQ_OFFSET] = vector; -} - - -/** - \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(); - } -} - -/*@} 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/Drivers/CMSIS/Include/mpu_armv7.h b/Drivers/CMSIS/Include/mpu_armv7.h deleted file mode 100644 index 0142203..0000000 --- a/Drivers/CMSIS/Include/mpu_armv7.h +++ /dev/null @@ -1,270 +0,0 @@ -/****************************************************************************** - * @file mpu_armv7.h - * @brief CMSIS MPU API for Armv7-M MPU - * @version V5.0.4 - * @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 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))) - -/** -* 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 non-shareable) or 010b (if 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) -{ - __DSB(); - __ISB(); - MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; -#ifdef SCB_SHCSR_MEMFAULTENA_Msk - SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; -#endif -} - -/** Disable the MPU. -*/ -__STATIC_INLINE void ARM_MPU_Disable(void) -{ - __DSB(); - __ISB(); -#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 orderedCpy(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) { - orderedCpy(&(MPU->RBAR), &(table->RBAR), MPU_TYPE_RALIASES*rowWordSize); - table += MPU_TYPE_RALIASES; - cnt -= MPU_TYPE_RALIASES; - } - orderedCpy(&(MPU->RBAR), &(table->RBAR), cnt*rowWordSize); -} - -#endif diff --git a/Drivers/CMSIS/Include/mpu_armv8.h b/Drivers/CMSIS/Include/mpu_armv8.h deleted file mode 100644 index 62571da..0000000 --- a/Drivers/CMSIS/Include/mpu_armv8.h +++ /dev/null @@ -1,333 +0,0 @@ -/****************************************************************************** - * @file mpu_armv8.h - * @brief CMSIS MPU API for Armv8-M MPU - * @version V5.0.4 - * @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 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)) - -/** -* 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) -{ - __DSB(); - __ISB(); - MPU->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; -#ifdef SCB_SHCSR_MEMFAULTENA_Msk - SCB->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; -#endif -} - -/** Disable the MPU. -*/ -__STATIC_INLINE void ARM_MPU_Disable(void) -{ - __DSB(); - __ISB(); -#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) -{ - __DSB(); - __ISB(); - MPU_NS->CTRL = MPU_Control | MPU_CTRL_ENABLE_Msk; -#ifdef SCB_SHCSR_MEMFAULTENA_Msk - SCB_NS->SHCSR |= SCB_SHCSR_MEMFAULTENA_Msk; -#endif -} - -/** Disable the Non-secure MPU. -*/ -__STATIC_INLINE void ARM_MPU_Disable_NS(void) -{ - __DSB(); - __ISB(); -#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 orderedCpy(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; - orderedCpy(&(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; - orderedCpy(&(mpu->RBAR)+(rnrOffset*2U), &(table->RBAR), c*rowWordSize); - table += c; - cnt -= c; - rnrOffset = 0U; - rnrBase += MPU_TYPE_RALIASES; - mpu->RNR = rnrBase; - } - - orderedCpy(&(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/Drivers/CMSIS/Include/tz_context.h b/Drivers/CMSIS/Include/tz_context.h deleted file mode 100644 index 0d09749..0000000 --- a/Drivers/CMSIS/Include/tz_context.h +++ /dev/null @@ -1,70 +0,0 @@ -/****************************************************************************** - * @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/Drivers/CMSIS/LICENSE.txt b/Drivers/CMSIS/LICENSE.txt deleted file mode 100644 index 8dada3e..0000000 --- a/Drivers/CMSIS/LICENSE.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - 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. diff --git a/Drivers/DSP/Lib/arm_cortexM4lf_math.lib b/Drivers/DSP/Lib/arm_cortexM4lf_math.lib deleted file mode 100644 index fc5cd80d96b37b57b3d32221bffa60eb65a923d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2236864 zcmY$iNi0gvu;bEKKm`U!TnHPPR8TN9Ff%m-t4ZKuU|>ARz+fG~z~DB6fgxxK14G;f z28OIV3=CyU7#Lb#FfdFPVPIJFfPrCs4gIDZNQ zFtDC=U|@ZJg@H}z00W!z7Y4Ru4hFU+0S30!HyGGXUtnN+Z^OVYYr(*7qr$)*Zot4^ zR>QzPaSa3e!V(7djVTQ52Ll+`AIdPW|9Qc{ArryCVR?puBPfJ{BW?==N45b2N0kEu zN814gj>Q)kI5r<(;5dAPf#dQA29ECr44k4X7&!F}7&xsZ7&zTE7&wDX7&uE~7&s^T zFmSFu!@zkehJo{80RtCf0s|Mn0|S?=4Fi|90|S@E4+gH7Ck$K-6%1SpH5j;dC@^px z`NP0?PU&FaF8sj2-4MaR-FJt9 zd!qmY_oW5~?zcx6c-R>jc$CjD@Hm$+@Fd+~;AuU=z_ZeUf#<{r2A-!H47|)947{ou z47?6147}+q47|k!47~j|47{`7Fz~LK!N7a4gMs&w1q1J$B@DdJEf{z|o?+nQUBkeq z6v4pfk;A~3*TKNo`GkRQeggyF`WgnlV-pzoZptw5y*$Cd_iqOSKYs=Tzrq>@eiI%B ze%As9{@4i&{B>U#_-C$R;NO9SFS{`CgYcsQ27V|OFw|hXVzkNSZK+s5mf)=>1_3u~%Ra30lA)62E~#B$t6f zq^gENq`ibeWU>K+$bu&fBI~{|i0uBtAaat0LF8HpgUI6x3?d&+Fo^tRU=ZcuVGxy; zU=Y>FU=X#K!6539!ypCzTf}(tc9=HHhBZ3drjSzqukz1Nm0=E*(fog@Y zq1qrEsFu9c^u&@>xF#qUstv}2YJ_p2TJzJ=ic=BxLAg+^FdkGZj0@FToSc}0uoS|B zYJ_s2`k*|Rwv5cQ5?DAELpU&n5FSinX%gH^#idDbEg&XL1BeY(o}7<}SP;7qss_x4 zswvLQLl~Kv7Y|bd5-)_QDJ&{MNPsy|ndIDpoQnA5{JboQG{R#Vmi!

MQ_>9Mjg2bIOyV>1 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ν8C9QT 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�Nn+4!NG}Pza{u?DJAgTQi20?rW0g{ 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�lk|R9}k|;iO)^VP0lGYVbCi| z&CzoV^3_YN$V{owD@m;=(Zf-GLDb?^LFySNpgk|hIl+RHfdMpw2T8S%^bBGX+rI;q zU!W|D+z$lh2ap*c3~N(^4!hKQhB@9R(Xz5Qj$iW~Ew9O3Sf@VxXG*p-YG`uPF!4wx1_scwB^Vzj2b!#gu|aaLnHa$L(16$=43h&*_#yk_13LqQ0V8DW0#wz* z`~jL7hv@<7_hmuE6^IX$1I>Yg*f9V4v7q*|Kyn}q>Z5^ZkX{f59YqSFVHhR{D$|hr zcOZ2jz3A%D*K>e3sP^?h5suu~1MPcdW&m~PY1P*Q7gzM_>M^t7?dO5^Sb`!D zghBm0P`?D!HU{xQ{TL7*oJzq0==~N5AGx0gQV${gU+r*mItlJM&={t-y!Njhk+o=^MNWXumD6JGi2=RX>oxXN(>APT9VLypERUQ1kFu>+96D=kVA|>^O>OQU6|M) z3)w;aHPDzKhz9rjB%%F2Ne1xhad^K^3a#HKh1TzrVqgHZl|lWnbWndy3a#HK1?~3< zL;HO~(0-p3wBIMdzyR*|i9z=Qyb&?DWps@^4xRBldL+yIOjLA(*&df{8 zhjgw|Qj<#4<01UK{E}2XcfU~G;*!MVY-IVI%)C@&ep*ptZYs>Yocv_)f;6PUDToa^wFssM#D9aM@7E5U+XSfrVFw(2ziMc@0;vIE304O1crl0# z!Z5o)tEiE~F91j14^$Vz(jrLz4^Sdug7lw3egt_R)YR5DGO#p-bo;<0tnUZv;X(HJ zLP*$si^ir#M4xZj0E$o|`+giQjsrcn2RU$;+8scmF0aF!+k@<&gl(WKG&GGbVZgJ& zkf`3Dp(&}|KhUTa;qD)(E+?t`2Qn7D`v(;RrAbhFWf+RxKZqa5pWg%bzi`g)f%;&e zY)f4Cj|J5I`-3#U_fHU1XD~qeg8z}{_ZX17e~if8KPKevA2TuCzb>TipCvf|voZ~n z?jHkaLKk^I0cgw~oK~SRj@jSArp6dhg zk>~nAe9+iGvVQQ?I#>YWe$Zx0FqZ+s2i-S_%ty36A@ay`eIWC-VHG`8Kd2vptRJz4 znwri6NdhNh$~@B}RtL(UBeoDAS~2cUca!k{z_ zqKWMTg7yP~^dR>EL3sjX1_;C2-JtWqklX5@`WKW7L46&Ndq9;rh<_2%_AdZkISbMc z8q)xYgVccdAax)bbmt1Pd7!=%NFB&LQ1c$74#dYc|A#nd4$=nzxgWg`c$txbftWsE zEROj<^giHwBKv>>91IM^^Z{dt>;r->I0SE^1qB);Y{C6D^giHJP=GU{O&l-7ErwwQt2(hZu7Gw}& zRi_450h*m@?)7~_?)80!uIdC^ z{{?wf=U3>ePLS2i-vo)6^y^3J^}*)!ka~TfMlNE~Z!k~s4YocW_ylR{_3;kD*K_WM ztmnK)jrE*}GkYQH6Vca0f-(;TL*$YBc%b!i$bCEzAGwbQ;v@I*Kz!sr9*B?J#{=<^ z`*lZzKIl{)WIm!_2GNh$XA9wj?oo%S z2hCGL*dP+t;sdck#SS_jRI5YeKqN7JxP2gnPz)Md1NjBi&H9yqP1J!)7W7UUYR8fI zb(^5GbHTHGxTo$&K3$iA0e#)3zyPh=Jb+{Fj@)&dCy>k|)Ne}!WmahZ1u;Pweck3! zBKvLrIQnhq>oy-ULDnZjtp)d;Ky1*Q9CH8j0y_f(Xq_{t-vMgo!}=YdwF4k`g7ko} z4UzpeTO4zDpuQKfd8HtWKn6oGOb)%@22uyo3sna92l~3r3po01=<7Cra1gg{^A8Jg z>oz%X%-x}{+k60;3uJ`!+d)M&$ortOT;Ish1lzhzTyuAphQ>sn!ov=Exuk9p2s%h?hlU#jFY%tv#~SiIX9er$$rx1!i-Hfe=rCbyD>~@kamy? zbYsxiv0uZ5VZVz^n)HtSYHkug7#J9TFmfBX?R4VUALzzt{qdsk4A4z;J6})WH@e{e zY654WTd>>CU!5OLeq>;A;AEXJ`6mMdqY1-r?hhOZlR-D2{O11Pkudou69Y)BBVqDS zW(LsNtRUWr1km}rPcI5SVEe$#05aFeZNsmI4-T9x6Brd(Com{5Pmq1Us1WQ{=*Buh zc!t0SW+wg%n|?KYaNs=ql35|ZiDAF+PeyM>1D4<1UmSn1cz?gh`~akjQGsQG@GOQo zY%@6KG0k@9D9l*=k%^D(BL{bb)PmQHJfPEvckEx|!an2d4~_{;1{@Q-9x&`@ogp+c z*zJtl*&i|+e(Yq}fAJ*)+r^hm+LM1WOaPrJEBTv+0pcrx-z*6bUkUtXQ9$@g;5W+# zh_4=8WSPOB!90WWBEx>J4B?-Q*^Cxqzgd(Vf3RqOy9kO8nGM3T)_r8;bLfcv!6J?7 zE{-{Oe{f7lkl~mx_fak=||-U$hF$`pFQ$Xe|o%!K|N*3?O%VB+UBB z1Y#9*B+UBB%mBLUPT)7o0f-MCUu2oVJl|udg&S9f)K5lhMhjuM`&nl&>}J?M?FB!B zfZ5KEjGX?j9t!%udLY2~nVpg0Gdsh9O^KiR75ra45(J5y+~n|z(ZT=KV=&L*6=Q|pS8%~B{UR_KwypIO;buk0CS9kRdbA zh#@o2m?1L{GN=YBsTmmpK-4$TsTK^i$P<&`lTy$&A7FmBm55TilUWT2@qMuwm}ObiU~z{bE2cm){)+N{CI5D4-D zsE$T*AxIW9jLFPUdxinT039$4J!cqnG#}DYtRSUG?tv(b%42}s{lUl(2yzFc%L6|J z7P}s>_rNDFF(CUN)D>l9hyqcd!zdXUfdl#hy%kQzc4e@o&Ya31o?)MArM4?d;=B-F+f+8Ffs%pycG!Y z7HE+eBSRp_TNA*x!2=aEH7*8@de8zduvKIWfubCA=Ni(&6Oa%jmB7!I1qney51$Yy zFsnKoJji8R(Q?&>A*IhDeadL0kG586rWa+k(!&Wn_p3QJ}+}m>6nhKs4xZ z97cxdXN(LCAOk_dAQ}|Bj119WGoecWKxeEnG6aJt$Y~tmAPVAi_|e*+vx-1zl##&z zL_wxufl`h2f|#y$iT1+!UWwD39%~R4E*}d zAU`Gsh7gGP5ljpWaS&z_6YL_xHj@N9BV<61fr%MOoJ9h(L=1GuDFYK5 z5}O^YhJgcA1#pxwFfed{G9o943mRo$VA7O;p5n};C4q2?Hdq_PN*#$ca4U6@#PyKW z>m#uZkkl9=v5k{TJNyLc1)X>g($4G%3T>Wz5F2z(lsiZvZk;}}^AQ=eL4aDRD)$d?MejxjJuE4DK0^6qmPDBh0%mJYI;{hE%23G6|iXezF z-k><Y8DNm3QbWWZCXyD=i0|SE~BWSt05c9+{44^YEg|9F`21JB=m>C#8fK1^N zWMp6fwPl#I_(8+v0>79T7(mlRf{gZz3=9JQ85kHq(+C2f@mJ6koWMaQ28LwN>CKFw zr3?a~Bkijh85o4OGD8l>6aK@@z%Usk62`*7FdsA~Bm%MoR4{|eU1kP|MZC-?7VTw) zTC|Z7a?zRq=wvx0i$Dj@fi03^ftsJq3bnD56>5_Alsq8ejhKo$cvO+eK>s5S>h z3IwG*7JV$jZ1A+T$h z#A8($QO<0J9_zdX(2Y|MFx7TtjzLhtP+~6tp2P*%!yz==&)x7Hs<~QX{_vQ%nunpfo*=L z-vm9-IgOQv&5L=DzZd94;FAVOCjx^sfpjyoG5=&p1D)jDUJts*^(VtFRtDyF&?UCa zKN<8`<=G5b1>IRy4OvClK&L9}v#PRrv5H_YmDs#kRlyR1dXO`MS;d%nz1Wz4)itpS zvN89AZl(QL$Dsf^-MNji33Nd$*xHYEpzB!s8RxOev-u)f#mwf;#{99)3lunW8F#Uo zvo*2Gvw==Zb_AX2tik5RY6?2W8hoa66X?cU@S)3l8NsF=2A}D?mvJ5|51X$atBM;d zFEf`Ht0Z%o7ps^ztBO9WBSMd9w<$fp5$$^J13LW93=Mssi3t>BlOm z#VY2_#=Nu+6b8)CK>nIl2Rb#I`8}f^t31eYmTY>gT3)Q?daRsmzHH3X>zY_a*_a;99t2iir*wC4vSQGbR6=Cyc6$Bjx#KsKv7#s8b z+BA@HOPKUnmDu!Hx!L?!#kD|2F}pDf>aj{@u*&7f=(${N@fKe z<1NkR%c_(DW%_^*nQmtCVqs?fR_nzquE#3t!^-W;s-_J+9h%_L&Vn+&5TY2aA2G)bQU4W99@IO82tnk9(fp5mHZ;h5(6|P& zdeD3*G9NV9fy@V;Ym3ZB%%MZ<16Ah8@}PZ@$b7^ZP!RQ?z4plRpe{KwANj0kkb9Bu zNe1yjeMDsSpq2qLANlNPkov`F;Q^}Ak=3`OrH|cc>S0&N!{YxUnmnWt05TEczuRc? zps@vzEKL7fH2JS+e9*bP$m)^Lk_Pz)bS^Klyat;4bUJaZGtl(sqwzuK0VAsi4Hh8to6*$wBk@6Fk`T2Z5>(@YXb8sK zD-G_QKqNu!ebAy^I1jWY1K!C1i!w8SX5zq1FabI<3zSzu(FJOkfYw-mB($7BG0VWf zug*)2X3Mc5=3Mc5A3JwMaQ2zzAHyU&S3+Rk0@L5>g3=E+59q8;S&`1<$tpaGB zD-$mR1E^gGIs>~Bv^QFSfdO>46liZUXip+&&-6r)xDW%wTo5gcSVOTD#21C$i!8># z09tnpYLDIoiAyjrJO$B`3=E)kG@vuBLF->YXIO#OvVhLS0?i47&dvtiwGGhXKxr2w-vZ+6Fff49D(H;v zSs=a{1H)1f?aaWi5=5IbFo15)0jb{s;#)E>90t+O3=E(PaG0zZ7(hJ_kUXgO0XnlA zG=I;e3E6`S5(f>RFDw`0Q(D1_n7)|GcVb{@1kuh644_UkNdG(#U!Q?tHHg+^VAuhowHO$Vf@p09 zhD#t?hk@Zfh}LCb0PO(=g+FLL1d|(dZIBZ*Ux5aFp=*3d+RrhNXK;giDCld1!0UYQ zpXF9)PTB?y2FSWCxj|`GW zKZE-?D+9wf@Guxi7epP11yT#bAT|i^<;K2u1vJ5gtnMxk1H*riqd=M?nA50{z_1XLrvDRlZbcK&c!e-F0>Tm839SNI%vN14!=%w4n}0G)IF*4|=>zf;WTg+tPoT9u2tR?=&p_76JcO?F;kd|^Vf>Sc zjCDQ>WH=^l!Me`J;)hH^kDKxjCbV@v^Kq{8*@d*uXBT93kAg?SuAeN>bw0a(vN3Rd z2^ndlhfblawBg1EYh6Aq{9nSq=V7T^@iIMH2 z0Gt1-hgjrU82CPN@ZGt{G9zFo!+!XB9|MpHdOw&3ZoLn9yCgjp{AA=8l`x#|sMUmD7SyL^ zWC#KcD}iPi85x4^F)=WF0#AFxS15ptfjVn=uJbtrnnz#=wqasmXaaj3R|rB@s=#GI z>wLa}dZP@r3LqMCWpewLh22Mo0`AR093%*YT8 zy2lM3v9R{%3I1c1^r=!RWJhDcEH@dc~^zJd%Cp`f$W z85s;f6zF<8q!l+HS`0$sMw$PfmiKv&cq zXq*K!#)4!CNM-?8HV`Cp0Kx?2IS}5!#J~U&M$&*q2y_J*#FLjFEJCAedhoC5 zVPpjjzJfvzw4M_(hzjB%Fesanzow@PX-$tMxI@RvglkRD4EUO!nMiATW+AQVnJtc3 z(=!K2e6BcX79UhEGBC|U5}z*)TJ-@QdS+UP#9jnegJ(_85x7&1B01$4SR2HeQ5oDPa~;0gTy|IFAZR89y0V7>d1VhH^2#12b9#KycAv`Pr)!k#4o;DtR8pbLAt&=&SA3;-|ed7_W9uxCjCbYagA z$ikiu@WP%S;DtRM;DtRusIjo;H)LT?A7}y0C+NbSR-}bJpTG-y`mitT`2<CC^;QN}jtAw=9OOtlZ4o>bzJ5y;)^^!NSKFIc!)ty}|2?R@HeiE9tSyWq_9KsB43l5%GEvUb2I+ zW(Rc7@*>cnIH-(efZTVEJm(LR2TOqoh&=L|9gsZeeig7ZR6nWrx$lH%2CumRnFpE^ zf(SwEI}hQ&<*%ag5$94s)IUa(2bl>Gg2;o;nnvb>m$QNeAo8I3b}$#}ALKPWAhST5 zc#!2m^YO@h(3xAve9+2UWIpK5Dr7$L8Xl1OuxlJZD;q%k47B(uM&p;G@f*$DI6F-pn1g$$jme)p;H$dYfuh9Xy7qmYJSwHd`9gsZo8XXWHaW^o;e$e>< z$ofHdbR+Xq(d^Gg;}@avk=INO)P3`yHUxYPjy)))GB7YXLb{I__Y}CGt--N}uEDV% zU4w(N28Ri44UQ_>8XSA*8XSAbeN#-ZH8>7vYj7MG7*N*WIH0Y;abRFTS%c$%wg$%m zZ4HhC0|Uw$90vvllr=aGXlrmB7#Q%b!Er!agW~`h?qPzh!Er!agX6%!fOQRy0|Nuf z8XN}(29z~84h#(7H8{!)4B$054$w6?%+NJB4h#%BpfxbI3=GyF+KGVyeE+-y14A^3 z@4&zSzHi=vfdPEqyaNM67f9TRfngemc3@yw3Z>UU>FrSZ7?eH_rEfs#hfw-Gh_+{7 z_zb20gJ_U@L2F(d7#PH%v;vgYhtd{M+7U{7LFot(ZO^~}I?IvCo`E3+#CKp|$c56? zAljaRp&m-NgJ=iHoH&yM1H%#!U!Q?tBZ$^yVAuzuwHO#qgJ^9Ah8rMShk@ZKh}LCb z_ynT$Aa~1w*7Sh3MuY4Ht93=F3s>s8=uatv^+$vKX8w*m{1YjQwa z_7Lm6A?sB@?m}OabC{KZ;SqE=1>{DM8W;^@gZN8{T$6K@hk=0=i+P~YAmp_oJkksd zKcHt!fy6K49p&G4B9*P7rQX*2kT?ov0u+E=!dd_!w(i~W49en9Q!@o z7%e|s^#8!Xz5DePe%%ZHucmN&y6yhe{o(XS24>LdI}UEV8H~oEzq!7$CirH6XxD^Z zFx{GPHUo6p4oK{10>eiEhL;xw9jVckkq^vl{1>+UYWo}w zI&&wv*a_l4h%F93SfY{7++m!@wpQzGM#kA63F%i!3vl=X&mB*w2^|{DZ}t(KhTii=e{~7U^#n*=GvP z3H-sr%|4M~=EBzuJTUw3{*YL}G4Jk6#vQ9ZGIANqnq@HPa7-4u;O(XgIb(-$<7+;K z9s4=lf_~@-w75C{V37u$vg7T>X#4)+u8$1-i!QRx;MnNkCjTJP&B2Xf|AZGk3^#u; zI2_Gjv<&;rqQsPN^9PGU*l#8yr-Yk7I6$nTri7b6coaB43UG$~W(qn4cKsue>*ojV zv~*+G&y*4QgT)%8pIONPd`1xKjEbEM`)9o1XW0Fbk=y^3BcuN-Cno<_&dmO=92i!- z;Ai-7k!6O%PKNzAK<6~sgG4=kuyB7LsPl8cC)-hVJxxx2Ub+I9fF7=6W)fe*P-tcx zU%~)iK?9Nk9hL*WffFuD@DQCeVm?5t;Hzcv3n1MPgXN(PTubcs&lY@RL4#+p2 zc`2zC3`sfJ&Uqya1)#HYpl9V|<}u`#f=1gJ7$A#Y;8U%jA{?~%1Z`;yAGlr!0#Tst z2aF66_ZS%%K-0a949ImBc*O%FLoi4o=l}^uhDeZ!APj28fQGMe%R=o1&C7t6ejqsk zq!+a07QCth#DJ`~H2_g=V5h-n!9hwvwLc?6Fo*)FU}T5{P2EEd4hi_ez`y{yst{=w z8oM5lqd^!Xi{xl`B2C)`I zfntn_p;iGzLyl+(22mhwAYqUW5C#P=NDOI71xN@IBk;9KAR&me@CkvoRD-sR(qCmqNNb8$G zvY=f_j0`a#3beS0ks%O7f%fw;G6aAqh#q(#BaDHEA?Qqk9!Lm)D9Bk%K_F@hSTq6-~ln9Xa()bVqgZHKa7(Q?UVPIf(1zQ3dI0Jcv86x`}ChG&T1Y)W$XhSF;=w?c= z!XW;spv!wfJAW54Ffj0gj;I!71WjTIfYg9?oC`97?w%21o_K-*G&v;;rjLRQ2+k)#(Ed~g22e;deHLT^%Yb5>>5Cu- zm;=`HRgeeF0YxMe=wbvWP~bBKu`n=jf>;coMg(YiENFKUXaz4wA*h}P#Rmw3+NPjZ z52%F+s**t!D5!n}$$>DaegLgL1+^hS)c{Bgf(P4)ETHxyu5}xr%<96Y(#P1%)WzJ% z(!tu!*2dn-(ZcD(=W%!tuiF5396<>Nv2MeTkyVjv85{G?deC$@^9cq$RxMrdaVWoZ zy;zu8Wtjhi7i+LEv9dBZ=z)a9nOlRvXK^t9)=gt$-W8YzI&9>m9_oUPHtM#GdL)?VfR=&yvoN!2Fy9YM0~@;#Y%BvCb7vsvXcFd|4A;OeSfd9!kfjNH zAWK^yXttmEzaGlEjm|)j1LqH|TiRD|J7pplN^9;sotn$p9X{@H8b50!DyjX?V+*#QJScRFZ znpjzxmFIz6egb^@$_~aRRt9Dm8+0eVA*;AID=)+qgbzJj*_c5~Hb7^@aI&?sF;A&$0-bpC ziE$pQD02zece7xNHNNYCf*BG?;8^>vrw5KOem3S-_~H#vL}5FIWlfMC^K;0$ns2q> zSnOq*$13X0%FWE}Wz5RYTnO^07po|nAuGQ(IF8Vmpo3@l*&tGor~&(njrnRV$U^3I zOkS*_`mEf3to+(w{mg8x%p!WMTp6s~prc*{m@B+|e3+}eSb4o!ncbNsAyR&<0$QxR zpo3{@y;vF9m>)9fF|jd#E`x^@OK=kXj1|!QGN@>VD1gi_qt7Qpb@b%gGLOH z`FqjKM?OOZ6hFt&0Iwedok0S+Lxf3$fngU&T$F(U zv}TJ*jDZ1kcL!)C?mdvW1Ovk>5G@HANTb@BCQO9SG+7H8O0Z;L0IgjDtt$Yvo|%*x z7(i>2Kxca#0m-W{Fo2Gf1o1&@l$dlF7(ioQAU>$I$fV1_06H%S#Qz9VuLnJ+7&L$c zI_pD%fq@%DTQM;3gJ^vQ22k1tsRxaFfX+bC1c_TQFo4blV$xt>0HsyXx((18BG9G^ zP>UR-J_w}Fh=Bog2PB9O>g+HXGcbS-3J38)XXr9%F)&nv)Tu&_zXpkSf%qm23{ye0 z6$1mPSHxt>z_0|$Ujd@c7#KE#Xe$PW?I2o#f#DE{wqjs72BMi67%qZna|Q;`Y1d3P z&@)az{sgT{uwr14fYORkS|3E)FhJH#STQhof%sMo48c%321;i`=@KYi3#Hqj^b`)+>;FV-Wg!1q&JKuU7z- ze~>bm0q1%JP)`>$gaPVGfYd^}>I|Uv2WUPYBnH9l|gg%c8xvw%Qp7UVyeKOn>DAe|6=jURGgIfMsUcL8FfpCO_rfRF>p!|Vn1y+Lfy zmST{&z5sD&h@^ui>p>cz7-R;B3F@UI-}4Gm2kM!F;LG6n~~=T(G(kpXmHQ0oTvjtf6n z9x!M#eAv^#pf>+)5tsj~=^S6&X1gtWJ)MnZ8v6%kwhJ$rqSQYyGcZnPn9TLMfq{8K zffLh&iEkOSc6?;uPrAS|f1?|N@`iT~QarDj8Qw^6y=G<;FlIEL@|MAB!dr%{DQ_9Q zCcI^=n(~$@>cU$lt_yFOrLMhYu)6k^(JSp8vzF1jB(0Qp>{`n2n5;l-vv1)s?r*TB`4uq8i>Zda1l?@iKhJEM@SnHEP;hrYysE zEK-W^7F9L8Wr{L-=dLyFEyx@;FQs=)RUkRTckNNC@0hI`-ZDpl^ew;0Jcs8sGrP8n zpBu}AbT@6c5I2x7SPa=VGtF4&#;||#TL!D?ZyCH84M4XMsk~#3GJ5B#HS;Y)6z4}4 zPLO*|z;0#sYJbaM#r~0n9c0hri!86(SU|pSf6Jf+nwRJK$ik!aj@b%iYtvf>DW;Ds zO!Z&l*57@}V9xje6yl(e6umHmfnk5#4+eo99~n8${a_H_d(FV;m2vI|i$Yh%xgQ(~ zCo|6d;1S^aD8TpnBH!y~2JsKfjBFP?odSNaXfqo6{b14ld65-zFAgZ#fs!lutQ|7P zrwHuKi2+SSXJ!_~=OmVtWG1J^rx_dRB{NVkxsSy_2JqB&a7ki%YB6FuA8q2kAh;y4 zB$Xj8CqJ&a6sB*od-# z05-=Bw${0{hygm$T~NkQkj+p~VaQNWVZ@M_oXn7xms(L`#E@;skZr_}o?Kc~1f>ia z$_yFGj35dO8PY-O7|M(p%0Sc7kkbSi83MW(85sH?(_!Gqgc6V$IQYJQkSM78#>jwt zkTe5mZiEqX-37=TCWcxD5DhU8K3xTxTmX&kGBN~%D3A(9hG-ClrV!ML06C74Asj@3 zR4_5rvVdraO8BHWNF~TDMus>L1yaGt5Cfth3gbZSX2^9V@M$lQo@-#A!e@9vx2Zvn zW{3b$pw0&)Ll}qxjnXnQL<%r6FhH)d2m=`mI&qMZAp%4}&qx3T3tCJ+O3ZWS}bgjRSL7c`U&Is})QVL}TNsJ8{OpABUCTm{fj zIM^J}DYBsHWUwNz2m=EH=rR$g;$|i!#h~gGD&B%D4stfg#bDQhoDFg@m;;)o1%(fo z12cXe0|Nu-^j)yiK@3nA5bOZZ8M`10!2a-JWMF{mZH9Xa)Jue_0NvvQF%optE@C4fdSi`DzWzjj9_uPlXBBaeb+tNZeTE@41Q=^T zT}x(Ax&nzX)*3P~FtC791(@3k=7L(RU~UVTdl1A1Ef1&%>1Fu}<2Hb~pcy5Q2qQ!< z=*k)}w;3!88?0i4a6!2fNfxx_9f=Fu$-~$PIuwEhbPNPowh7DyxdqJa1apJIfxy7P z2V>{?cMsL1`~mKDI@ytjuCwY|K~d(pUx9nAb7RV-=pw z$`imU;Lgg!%;Uu>;0vV#Ks+Ai7%yf{FIHL5goZd9_+Wf~FIE{}R&jS$F<(|$W(bcD zEDusC=F2JynkV1^%Ya1qKwPjGH%OHjvxFBbk1s1Xb0NrFPA^tIkWJzsIUZ(FFUaJH zI7lZqXud}l#1ai)<@06bc4uW}UQ-XATDc0E?qOq|#-s_yppSoyqJx!JtfJXu+pE4^4n z3|PgP`Mg+pd|0``*1EHbFjsi7aAYyqr7ApeT6d9iu33bE;dPrpZ|`9VgwvN7+k)dO8iaF)pnbS;4wtF!^D2zd6% zgH_0YmDz)p(Tt6GQEd|w3zi9$DWIGO#ViaT|AXcp0-!|!Xw((NUxCI)9&ZQ9L$x!& z)Pu%aA!2L{AbHr*2betQCKqJ+JrE9DKd8=!2to9pfNpE2lQ%%)gPI3m;}{_3A)Dm3{*s{>*2ITcO+3^e{~BtEDO1zLRo zF^`!65mz7)Xzc`If>zEjp!30tgP^jYV|qZN5^yd9GXrRc5Heqo0o3*aSr00s;qwVv zAeS>RfX25$dkWUe*?188qK=nQjEgA=45bTtxaUIEnP z0r8K5)JZciTmaG93=E)kG@!H6??d^Zz2Ts<(n0e)AoZa6BG8%XpsS-me9#mu=I)Jg@Np$@uC3B;EN%>yVx7VLufpo{oGXQ*3(#FZHsTtKuo0|V%aK_(Rj2GCp~ zNF6B6GpRB#fR;Ie_-P<@Y77j8AX=M&p%g?*Fff4jZiD1OX%aN=(+?8YhTM?E#LU1j z56TCXNuYTI(B5m%+3+Vp;#>?2ppFV;f(#6xFb2*4aDvA9xfvKFK{P)D zgCdCLV_*QCj|Q5zu?6wPp!@oCp=WJtLC@L-_2tMJCoe83g6#*)O-#V*hXeAIkG>+E3U{FcXGbHVp zZO|M7a?S;vg$z2!5tcJS`4PkhJ3JuGqyojA%aQ>m|I}#K)puL_%TQ?2qy?Y#ydeniy$>14AKW1SB8xPgIckmD<466 zKp5mE5C-K@5DgLo;d9Ik3_&nULER3JAe2T{r@+p@09r8zm4;VCK2WtV@q_FP;JW}| ze3%)a6<^5y$Pi#)0PWoe`2!>l^9N`;2c`#P1}hhF1zk;lD3>OguSst|6dLG$knG zFgJkIUEpG104-Vuu|XInmw~pgbA=Eh9SB0lvq9#8%T|y^C{6$^gJg!dUmvOtH1w}; zWMpg(8peiVLgU`XM#e@ErG&@5BOo4!k9&(UFfwe|df+9KGK(8y1M3Wyxg0Ky3>t3# zzyJH6ny_In$f+QIlG%|W&^N&tFU`!$ETR6ODa=$lj+_!2F9n4wC`~Xj1b`^ez#h_| z8%P$^l0e!O0TKdDuA+@-LWJN$mmpOjvzQoaL6a&VE*L|_K&cDNCwKSsz`(i`qyW@pT+h!28odBF6v1Y% z=7-$r3D&!Yp9L%f=B(xCKyW~#7aX9)86bn0>^VUcI};0NzY{BL4wHE%BUqe;g#)xz z38aL{0W2~!#wfr}ic3;5^GftGKxf&2raE#HOEUB_ARPi$ z@MsdVB_k_8mockAGOGe;O{XsCVmQ$9#Y|R4eI_O%`nt-D$ajCRGl2Mrz8i!O3M&YP z@DY7m2p_idf`I|T2Q7X_Ru38kM&^UsGRS<;$S*P``93SMBkL10o0ZUD+Los4H!_yf&@KS21GDp+*bw82p}mi#&%y7 zd?F9DT>#XZ2Txu=$_h~53{>)QNrJUAXo*1kXks|d(2+n}^CbdZ^Cbf9qlrMz(h*@` z02MEwwO`;qnkWMUxR1sG?W2i8`)HidKAI>41GtaI&%glgqlq#wfC?Zc0R{$eA5D~j z0o+I9fvyP?h4#^S85lq_0HC#Dt3iD$P6h_h-Fu)u2DlH#4_yl;0J)+TwB`)d_XqXu zK<96P)|`RXb%OdOpuK9KK8z@+&jLN40n`@(} zLHrAHKYHH=G!_WEfgEHXNDYjJu|a&$oDFF0B!~^dFgf(T4QMh0G;s)01Hv$M=zSXz zkUtn9{cuos1LhC(zRf{syBuT|2*b=nU(*A+8w|8x8l(nL7BnHBu^>iQ_ zhGBB(eH)NEkY03k=zSZ|jzG{RU6?wMKR|5szKskAq;CU?H&E*jqz)8s=zW_87RZqr-tn2cQ-z%skLqHdtB&=?`ILVAudHmqA4_NFB(2eIp|?Q%Gk8OcL(f zm=oQ%X@DeHynP$T0q)xrf{#O@;(`!xNmdBEDulRIA&|8qs5h&SurdT>+i3rWfdOa# z2GjtA6sUuue*^Ahp!IKNg8Da;`N16*aQ|j1a{p!;a{p#Ja{p!qKMw=J{!JGn2QRb$ zVX_2gN>(NgSgUYQcXhzWXCTkdg4#-;@(hGQ^)8+JI*{UmdK0rG_jN$?10cVHFlb&6 zwAcr^uK?nM4qX7rgZdUAK7wx&keH{=V zxvvA_BlmScd{8ePS&&;n&H<%Oc;5#! z>BPXmpd||J`-tP{`$(eoeMF&sA5m!EM-3!h@tg;#L)UaVhoVJj{vmqBL?mJ z2txZlVrYFIF=*e158C$;Vqn19_Yr{heFSmzefSv|K-X2k`#!u344^%2pnWx<`@uo; zJfLRV46NqYOJ+dt66t|vfr#k>fvR$_ zV%%LIkP?!*Kn$Sy6XcX1!@&R^6M>~$Pi;6= zAQezsp8?X=2e}8-1_k9fQ2Bv8zk{m}1e)_jHcto1JVJe-5RijGj)U~KK;1Y7$oWT5 zK?Vi}(4sG5`aqz4df56vp!>6ttO4J@3_67XW&=zPG}4Le4-<9<2GIN~C@&!Qfk1sF zm>!TBpuIuJd>9*)T|jJDulOP}_W2#qxCclb$Se@%1VsRd0mU#m^ga+s9kxCY=oAQ; z9*_~Bvskh9fk5|#Bm36{M<1vf8aE)bKp1q7DQI3B#0FuQUFB%=J0UpwK%jaHmKH(! zQ&=JU;y~trie!-YL1nhSk&&e_xc37g2={@^h(3q02I6tNeV~D!-zfxdv7&k($k>pS z`5n;e^~}5y@T&MiW5f6o22y%J#)b@|J)oi816l&=0nJ0|0WCo80WC!C0WCuA0WBt` z2h@+$1F`~VNmiC2(E|dlV;W5TA8=7Ifc+oPG$W`i2VqeE2h_EPt@{S`4?ujxxd)KB z5Rh63hVYU5KOptU{T~n?x&H&=gX$4v{mA_vkUXgUf-H~R{{hJ(_kTcqA=0fM5K=TL4e9)RLWIkv<0hy1ucVm#u{eUXl(f$tuXuTTE`#;cr6a6|o z;1U77!-LujBVi5*bW|*%4iKpuyV2)>A_iy<2(&H?)ZYQM^O5^MHmPvdcfBIL7xL!&cwigt^Wh+*MRF_kYgAa7z}Xqe?Vg^Aa_EQ zF@VCmWMHuQ$rQcuCqn`I zZ-#G6Uq3Tr`^?WA@67P}xdFpxeg@8&dOw)BLGovR*gRnP&HjU9hX1P;NeA z|C#aiV?)Nz{ESzBFl<=&gGFH5Pc{d(j~r|)zjqidO1HTV;F22Yzo!YX(No*AEI#a)Wk`JHB#o0EOz^A2tt^elT&@f3aQ9G@D@t<9r51=GP7k8(&Z7 z=f1F$!_$c=gV9hb!6}2`BL_oN0`o@>=C2oF`@;=>FljRyD*s^8{&`UVvOgT0GeLQr zPHP<@WBU|zgE70X*e3SiN4tZR!w-B1olYKKXlPnt6rY*MP!MQn%21Y=!%$w7S(1tn zFH6iRO~qIT4jK_8VGlYf{c1x~tb5L(yUW45#UcB{86X?nF?O1#fi{%G_nSlZkb`!e zgHOW;6QE$o%qu}U5+AGzy5Zc2p$vX9yAimI28|AalLm+Y6?=>ffglRB#h4L1&JB_P zW6+^;j0`~_DhIUYhN0F3M1#&PV`K;dZ6N?1gM_w%6SPx=ks%mFfi6@7?MVk423pv} zz`y_!hf0IaI{`_9Xwd!)MuupF@zLiP85lsPD}fHGh8h5JW)j#F1|SMje*}PrXYYVT zLqHU08IC6f!adg2u|Tz;pL8HH-`lQ@~94)_RbkpdJh(g8_&FEoNe52m?`| z_05b7!JzKS2eA1;pe?bWm1c|#0U(!xHeWC@1cUa0_kaxz22qd`vq7E$I~&9RZKY;p zhyz{!4mt#lks$!I!xOX)AL-C|kPzrND5Ra~pxOu;h@inXuz8@`AGA{pbi_Ky5fzY_ zQTWElzyLbQnvo$8bg&x8G^FLWpdIO;WvWaJwGv3WBtW_$XAOWxRlyd35(ub^1UeNR zq!bk0AU22wZ98FP2m^T&5;vf;Xu!Ha0S4OOz{n5`qMm>QEZ_wL0|O|~7#RXU;Rc$i zVq^#aQ6P&M8G=C+G{8U<#8CM1U!<@Dc^TvyMus?$LqPhF4wT2OZ~-`C;3p1%(hR5% z%*YS`8XAQh#vTl!Ag8tmfzk{ppcokfLH%IRnSYE70ibO=>IfnYv}4LVj2%nz6hk7Ur&ABZK< zAPVAfc#;LlLJ~A+$Q&H}SXBK2mHpuJ$l+&35GMp$TM9b;7CB=xL9U9!FNAFsHhe!k z=>B*(2km%s#EIsf!V26B3~b0}nzKVU<+Fk|<#Rw*Y;z)XfYftg+v?Aay49Ztb*n!w z)Ku_Re?D18Lt#NiA;t*qNNxrOepUuUVFm^PkPZ+-5J{Sqfk6mlFi2b&ax{PlV#PT6 zLFeV*<90zYglpvlID3OiW{@JLenw{SLB^om13T}W36vqhvR#bKun1?g1g8~NCT7?! zQbyPr=b)(^2BxcwjG)tx8NriGOxGAeS2crIM=;$0OE7RO0Od{4c>&C{wK&@h~f+w*9ml<9cUX21G6V6 zXpxvapd;(R7I=X?29a?CDdGcNoB}FyK>3<^E`Jkf9WdwuEzn6D3}9K%^cyIPGoOIS zK44~G0Lu!3^n!|hP}XLaV1!6ZvcRN48vsCexq~h?07--T@mcy&V!YaxJQsB)h@55@y=EW+(=FQ6I!>Sd? zs?O%cDvDJObhZLkS@6}{OPD|>kn=I$tMvjIBh2jN#j4J12Rb+!n`!)k%wb-v+|0^e zth~%=kW0PSgNs#x#(>kX_>q z_6O)3YE56z$qQFW zk5!Jj40Qgt7jsJ;DA1W3z~?7i2A#+NiaB03<~}ApR_0}pQz1Y{q%*TI-(m(Gzb(kT zrw-zaXN-ExaeAzr`mD^%ie9Xo`rzBhXV!s^D+e8q4LbV)^E?LT`wTdaw`Ksf*+BUl zghBHbphJL=&jSGQLFE@n9<)jb#D}m!BpU;WkC?ZB@L@G4Og*Tv22u^hLPu7Qd>=VT9@Gd%miLENzOe9$K;t9dzYWq~ zhbG^Q#s~GIkj+QFe;lNLCYt*BX#AyU{Pk#jSnB}h-koUjpgr=)_8&r%2i?GgEDvj5 zz{~@kcZMu~1x-JwbAv38d_FeFf1oRgkmX_R6_EL$^C2K|AQDvGf@lcFT!+UFk${qz zdy+sam7tQKMhpYuJP1%d1X_0olGQQ-+04MeWP)S8of+DCJ0s|NJ0s{iJ5K2N(j3tB zb?nf+MLY})pnH2jdwsxrinyTb>i8HKKnGTV=6Om%dxiKJ7@9$}00Tomh!$jE03C4# z+5@x!#1~*-0G*KnS`P=xYoI+wpgV4vj2IYhg5-@D7(i=*L3@Hg9Z}FZ$)NrApmlPf zyaeKd@(}2p2R2YI+L(a>l!rj)Jb>l|LGs}FCV9x77Z6_qq)vf>!5BmvGccHgXhjAF z&{bj}dC(PUpmQETXTgK`p&)rl$kApXehP@M%)pQjqKz3Cib1p(0|O{;faIG%d=&Wv`sg5ePpO9d?1#88a~K1JN1`4B&Gfj2Rft zg7}&Y3^zcuF#`kW$}G_N9M7Tr*C1M(fdSNnWYT9~U<94(AOq>_fy@UDC4kl$N`u4= z7~uDTgU(h5g|ih%+!%TfxDf+`4~TEXzz_kVjiL8{8$qt91F0{Eih~ZW1MxdSd?N;i zX&~B|fnh$BUJIg)7#KD}>3tyDn1SI8h&EzixB#W^f@os~hG$S3e6KgCvkGcxiZL*N z@AH;qU{C|`r5G4MSJp5|GcdS<_!0~ZJ|J40fguq@>oG9of@oa^2Jku5I*_$?pmVZ8 z!|)*Yg4c0^x@&qVsY#{j@g%RWgzBTm{34`nhCa0jo*i@y^3_YN$V{ow!@5usG$Kmc z8cEQY4|1urL!1HS3>#Qc2r79%Y;f-qdIvSAtbt*0ua<#<0hFK7)q%<;bakM?KjgKK zF-(yCJTSMw%mdZc;C?RDfEgkXb)Yj6Kx#l3G!lru|0@M_iXOD@2hs|169}Wv{bjH) zFr~febAM61kiBa#cfjlg^~ykO*xJWvUhHchLGyPYbuj&t!Tnbl4`DX?+#g6CNH0t! z%nZ;t9E=T;dxK^#$R8ka^trzU;*kAcApe5W5=b4$zvy#+DtrtKpU~nBWFGqduMOge zbb#+{3kg96h6d;!I#4?jWG`gxqp=BeG7mhZ2cP>h!f~dvr3vJaXCmhQL_l$iW$te( zbncI7GQ&j23`X$W-@gWinbX`Dlo%}+y`IR#KFRR|Bh!VKOuqw4h#*y)_iFA&1wqbxiUBZYWjIvQouYiS^!cnbdulkl@nv*ua1uk6TW4%{pJgL%kTQiiHUD+)2{_TI)1Y; z9pHC(<-~9+qv2QIhX)CFUkW=P{>`#WaQ5NfoV(8aX54k?H^VNW8H@(AE(*-J`$OWu z-5)9s-bfykWPZS~U(N0AOXee7GZZ$n&Q5n@*l&;#0y>@9xal`Tp#Q6@rLJI?tN?|Y zkpHWTg%Gzid;LLSG0*D;9?%KVFN*K{U|=}*gQ0lWEa|eAE@wV zWC#LLpgBKAhBy!fZjv(8s(@(F!NiOVaiG}&P|FZ$1_oq0(%fDis6EC|3$hO+!vL!9 zk)*-Reui2O5DjX|GctsMj0fE>$jA@|IxSTUJaYk`UIG~en#5sbFaS}YYdjel0zor$ zkQPATG)4vnPzMgl!yrANX(>hq0}yoxT#ZJ6C{PW|$PfeCOaA0udP6n zZ%}W5y#OLWVjwqzj>QJi9bhv1&|C702u(fRf>@z z1hl#11z1-ISPKJWPZTr&Kng)~TZ{~0Amc&33`Pccoc35qI4hHwxC z>hv-)M1aOYK(1qC2ml?MhZaqsqyS0>j0}OG89mSxFe5_{hyra=VP>d318$vw!iSL| z5=4c7y%7kaKu1JEV;|%NMutF88iJfH4v$LE#nGVQbvB0R$t+QmSwL*io-FXBUDRY2 zHc)?q3Dj2(oXmnWiATY77-%lafeU=EFSj}m=+Iy`(4-SY05lKAZh~@fHEdc8G9kr< zn2_Q|J;I0qG>8vrR^pnF0w;M;4+j*@1SX`WAWcYtZq8v~VC4W$KYfsG&$W(UwL z3OmFX3=B}NGqg>~>OgauJgxps?WpjVEz}Sj@1IB={WR zAegv)kmHm0VOCL^CK1F;7L}jXGstI{0O)~1IlrT`4Jn~{0J9lexwjI4Z`om z#=N<{iTNx;6Z7VJFXpohdd!>aKQW(W*u}iLK8=+JG%NCnm6y3fkJZe8)tD`f)eby5 zpOXffA~E)5wF8}?3{vO|nk8Xn=GJ4CW`<6RurasSH?dlM+n zV08dZt+1uA@*99AQNXueYflpt*%SFD+Ji(2bRR2CNo=tbELsdaS0VUzElUAlVJYI0J<_%kB#{h1Nc-1RF*_cl->ahyDv+^?YgRYMCV&!4;VPjrZmj*ia`U)dNOj?hX(~DKwi&cirpOw=U zd{HQ?40Dwp=yFfy<#nJls6nv^idN8B){I`D6Rbh^zt({w<|CsQt4JEFAe#>8ENUs{ z%XNCJBFyU;y`U#r>!Z;8pu1jO*_bDS=1yn)wc{ zi4<(}D4?BxK$I)c*zXVDi+SM*)rfAe#>>@?rK}gGj>X zO%VG-AnpT=@j{e9_@Kk;kollJ=E!`+et3v_(AY1sJYo+#L>{pw8^Q;T$s(&q>>q*1 zgKpeFmPel_Nkt3qJTyM&%wJ^vu&Wnf;Q_1GVEk@0{h;<1vVP=qsX_6Ld@ePJ4;pJm zRu5|W!T6vi8H5cYLFF2VhG1&WLx9SA_&kIf$Y%@;pnDNPbLgP+jzP_9(D~G$J_Tqz z8?;3RbWSy>?*bYh2cJu=M*2KNGHBjF4LTp8#=rnd+o1UfP;(SC&JI4~j1PLonL2cz zKNIvEYIW#2)Zz>bpmQcb>cQtwOF(Ww0r5fW96{sH;B%X3cVpmV9g=TNIN zfX}W2olC6+8s}GMU;v*(t;oOtK8ISJfx#9et^_@YTAhIbw7Ly+|0Ss91Tr6VXD#Ty zPVhO@>I@8^WoMxI08p9)$yb8(t1vKt?ivQotAO$X6F&n3=&BNsJHhi3!VCc)N}u0|TfV4C=z*8*c~Q@dz^m**x^|_FA+vok4m)7&Hn2qCt8= zcq`~&0}um>VRE4I4*4u;kUEfFs4{q1ppUl;aHEd%gW?0E2YtL<1hfv4fq?+`f+t{72jvrZarF)G*;KGuMS591|E6?*6dZ zF#m0p)DgD@uct9EO<l2m zA1vG{ZX4b?YI*%&;bxt|pyA=Bdx2>Vg91p5VL#7n23F433~T}hj3(3GGFVN0%TP7# zEu+`fw~SoV-ZDj9eaj>@?JaZG)wj%A>hGAX6yCLX8NFlHQhe8HW%Q0kOX*!3m=9v# zxX3ue#*Jm})QzETcYp9KnDCatYRX#%FR71=Tnrys7+5~Cu&BIawgTz@aFO9bs9W<} z1})YZDQ>IWCcR~_0=dojos*TqJ7%r!w+vP$V0VJu$j14affdP(UQ^#PMooRolr{A& za~0@LM9>Y2t#28uroCmf0`X1XFSk< zYX%k%7nZrq^Fa42a(`suW-($hZr#YRA9VNP1kk;WW+0b?bb)LE-6aX~&HIZi=KDS} z^3{LwUC%HJG&VkoU;M%Z4hN?@KNtiU4Nm-E5V-S$Mc~8_7J)lII0R1o;1Ia;gGYep zqX5r|A3Opa9|bsGUKIMk%)oZR!71hki!`Hw#}5|ipBLF6u6DC3u3kcr4SOC3WF}D=FA`s*-ELSTArKT|y_?MP26u1@@5j;`?I?N5< z`jS_|P|lFbP>=+_ZLtDAn5_XWo z1~O4@zyq~-p_&@t6&Yys2PDYI5D9iZ0|Ns{2(%K7ks%U9focdwh5*o328cp<5Q9dQ zL1Vp447DO48Z?~C$PfUcKwbxp6@zGSio{Ey;yf+MMj!`N9+wgRw122WYxgQwt41fa20$lxlNix^7< zbBP^GNfG{ih#n0zdR54(y9=AIpB@(*Eri1`d0pmkH6piMwbpb=$| zYZ#>kxC9tQK@A(oGAKrI0mu+4D1;a#1Rz7GV2-2!WC#@$jEqtOJPbUb^->^HnC-#Q z!p_72lH<4q8mR@bcwme5m_bX}A@|4+wgu*(B!_GK6qLYR_*D8ByP3L}J6Sqd+u7RK zTRB=do%n1vgV&dXMuu>laqkH^d>*>eJUG9!C^=Q%Ei*%SnCI8(v8u5#zXB~z zHU=$4o>&VSM}5!a#XPari}^hhhYhPRn=31GI~()F+E2{ynVML|*fK#X`)a*dMVLP^ zrLnTIF$;k2y8BlHT4vqEtjGMXMvqm9jk%S19;n(8rURZHh0h+e?n|ttYTiQ++M7# zZ0-<6yll)%nL#Vq#lS8*TBFA*%Er8c8RS4=xR5MJNRO4%-jQ7rarOOi;ej+GuWlQHK4&#=C914 zi}>`w1C$~LtYY5aoBYJs5VS0t7psUDs~~99)Rk45nFnMX=vG7nRx#+6eIoEH`#w}- zzp@WwjW}q1HE2C2C|`p{kU;z>Xh8zwgYMlzmWQxGBpU-rJ@Qy5h@T3Q0%M3gXr~I8 z%K+hnCU24Xpvi4yK4`rvG9T2RM&={V%7K^%TF;6se-FX|k9~sN11pGO{z1Oe4M*GMZdFo0&uLG#d{vqV7hpnYSYF*wl1Fc2R! zZw(r|11;hJ-ID-58&nB87AeI5KGzbY?hwd5{0!hb0YQ9FID^J0L1_)d2aWlH?rQ*# zK`KGVAY~XB{(l}JB1j!bFH{*k9iWdZKHwm3T#-Y7xOKb|oD2-xvBU@ZxS|BoU4_WwilBAr zNZJ`La5FFzfcxT*o-in!LBoFfM#g4X@2JDEj@Q`8i0E;}5Kx37jVnU#sMCGR)ZLW8 z>c-f>HeP2@Rmi8@%w3nPEZ)a;jqhO>=;b-T)a7!q^5hPzElb ztG<}w0~g?P3RobgAJG23I#57?Jpf`r1|}HIk?*Us0Cg7;_tjZ~<|`5R)med#Xhhss zXAS0pnlE6#+khtInL)!}V6H8;`|6|x*aVnG1;88Gz-EgJAl+9dApp7$2y#mqv!nnA zSQ*$evs~PaN(0+?EuY#gYG+GW&qs*h@(%BzZVbLMGout zgZuPo#RK)uFtuf5<>ShBXJd9~V%272KE|NOYRHzx$_%;{J_pplWi(=9!*XpMMt_f+ z5whP85;W`#AU>kM0^vjCKqQ2Z=-)y3ppi(BEa)s$kbcnl3CMgoo(j=(A1WKoa_TD-k=-myld+P+CYdQwt-a62j z0jNJTnEM~FsvOJZ48)#Qid=x8-BX7mMbgGY(E1wWlcn}>YXDQGqTqz+^rs38GzAIwdleQ)|80gxdOyTEO8^nT53M#$PE zs4}n`5F4Zwgh6Z&HfCaA0F5Vr*dPp(L+{ss_T_?(s{yG2VVFAfehv7HRU+=E108n* zGXvQ?^nMNK3{ztIHJ~GIK<2D;iv zr&U=Q7}yazSvXL4vT(wcaWgP*A?AM>tO;Jm4RJgJ0|STw?cCTQcW&(GgGy*nQ33KC zqXVeXh3MQkg8D0n&W#g@3(A%ZjLx7DP-f6lQLsK29gtJt-5ysEmw|N&XzU&~Ex_y} zz%IhA1t2#FgG^=i5MTkzfH|H59AFOE5-$NBFb8BNv$uc%11D${7Gy1x zJ*Yd%z|O=9Qpg5BKdpId9clDV(tq8joX484Z@%( zMC$)AfX1$A)bD{5Bh>5n9AyA?e2m>$wR2dFz#SguP4#K40&L9J8T42=-C23HSs6{S z-q?*g_6Rx;2{g}z+;;%+LF4bBFaq^uKzs-rM6!d=IYI9GfaH<;J|I4F-v`7;?)!lF z$bBCWAGz-X;v@HcKz!uB4~P%y*MnRGb01>eJ;Z&8xhx3(Gej}CuLIH#I=clT1d#{L zMl(77cs2Gl#f#i4UcusglQ(eAYq zhwR}5&CP)BwgSx&ffj~<=2k$37-$Zs5oEqNv~MKBzyR8f2T}(b{sFD;1}zi;&DDU? z254^UFi1TQ0|R(Hy8r{jT@YW8fdRBf1Ed~wEH7wI3v?$3Xt)e??>cC`IOsM_&|DU% z{|cJ3F$B%!@G&r0fM{Xpx^PJb22i+x=Cr_lCeY%4a_4MNdo8f87p;zEL2HYUGLHl9 zd4U=odZ0`2;K#Kfo5(;?mx%!sSI8-T2?qmstOSx85%UYg_L)Fq6ri*XYCnL?0JW1r z=^VrcVOTpAbgw(4$p{ii)>yBl6m<0 zOrSm(Xx{_G6%hY|+z&dt7evFv7cw$1bip_fH-UK|H6RS;FfcHH4ibeepaO}(@`MhbI~ zd0SW*7!Z5E5aEY@pWPhLT7Kv~iJ%5B$XlTB1Ff}yrA3f=J**52;N@Tp3=E*67^Ds~ zj-_v8VnAA-$=D2h_zMwdx*UK+G~PZF@*EJP&-5aJ?tLckUKXnLnP7L>5z}Xa9@Bw* zlO1C1G3h-fl&kGP(GDu62ENAxatWxA1TCWlu|b&JUKFI`MCq&$sAz%|vA9;SLfnh5 z;{@9FhL{y{0JYGNI!>TVw2?YaU@okHWpoBD8$s$kfmRYRBRWqYE(7>HbynCpoXqtC zY$D7RkVzu2RaMYQBCyHT&`BaNrv^Gn1h%ABfCoHd1TvGkPC$Tx1J)d5vIpl+b|w~( zLRMG{nz^5mLlauGF~RS@1NAgP(KeWG00;Hwk=KNR+D{-igD@yM>D6}v7bkMS*d}D21tJF`A$;V%6G%OB-wDJ=?mL0_pf(psH_UwG zz7t3ux$gwxBln#^eB{0ph>zTN0`WoZXk_z2Z7pOzXa*LU{}aLi_oYDkLG5yg5X675 z3;}a5s67so2i-{xVS`9WkpW_XFg5y4xaO5W>2=8Toy4Jcf(t_XPU6tL!Xl9Uh@d_c zsJ#j56M^na1ofdndnQ4BD9~I0s1F9-3oO9E@DSRE0i8HKK=)XH)(wK%lc05QpfZ3eeJE((i}sx+aOr{GX+rJ6 z;l3je(Ni)u#5L~(I-ZN9P89mQ(-s=cJAu+WC{KYftlf$}?}Xgv0p&zc8y3{oMW1)V z)rSJ5HE@*&vV?(w0o3;Z=?A41LVYM${Rh$tsvJQWeclOlM)N$70w@Nl0Wm=|2!q%l zY)j<4({3gP2G}7#Abl`1Kz$=*f0VE@Fo4eL1^ENH4~4#-?jMnTsQ)D^SUT?h@OUuc zEsNEJx2#?ley~hP1Mk;8`;vi;;lqQ5)(i%9(4O79KU@~ff7>cG|81)l=j%4MGj82( z%U@4nQ2D^j&OCwjbvpy+>vndg2@5#bC$NBaflhF6Vwn*AgN0k=9gCOoI~S`B?;O2A zXF0OZnD~|nR)yk*F`@RmVq%3H>& z3vU^%uDoU9y6~3C>&jbZsS9tJqm&27`HWFh-ZFvt2Jc#<8s0KRO?k@<<{N_f z%uyFF^1Nna)N^5*!S#`a3$$;SL4#$6zy*f=pb(n|c00)3ATvRBw7q4B0{P|rMV^l= z9CO|>c(Kld?Bb1dJK|RV#bG_egA;BHGZ<$zyk)U!c+2XAys!5Lcwg_y9}EIFey|9f z{J|n{;|GVp$sZg7H=z4@PyXN$;QT1SiP+a00p8c^3EtPsfx533G=v4tlQiDjo0ngd z3*O64lMTKw(}`byi8MEvnwMIXUdd2l0AKwDHjY}Gep4CB5qI9@m7s3=&CG-E`*i~k z0tJAMK?9w;fV8_5RGfi|K}Lo^5Cu}f$Pf*pAPP}7215=!1nsB*X#-<7@G@YOjlrOi zL1u>9BMcx0$RtLFC=dl&jSdzEYXnW;F))DDFf-Ji05d?U7#ZR~6jU+tDMpa-JVpis z(6F8xXjYJ60_X&Eh;g6+2~by*k--2&fsTJ;W|+_dtMcLIgSY#F{04G4m;=!daSBKq z6GIIHhz2Sz+eZ~1K(#1YQ2C|Ag#9r34ta87#TuAlod4Wg%jTFVTzGT_@lz)phiXa-4xEM{bg z0a2j6O^ghIAp0Tr7{XHwXax*tV1gMrnm_^|!x zZTm7v4l6pONbIgSx@!XYcD^#jt!6we6Sj?d~2;(+2Qfl-i&fq@mYQ5+=1lnCL2 zPF(`?lfZm7=82Hp#FWgaz{J47J_{rX(w__AgIcj5A*L+IcH`$D4oE&5%m+1u7?^S( zYGJ)sraZ75JA7OxAHw&7HkX)E!FIEQ4r>G%$CM7??}f>yLHM9d1eVW$@PESOGa=@I zcK(Cqp>73*6_^iIUkT0UOi=s#V0?&Q7&t*qXeQ8o44qISsBYG50@%>rTkV3d%M?KW1WN zmFLQ1W1dp02f797D-(FDZFj8~s{$MIQzkD~HD*ySR%T;1=Ehpk_Fd**OdK|B%x$$^ ztYU1;P0V_%%-SG1jtJ)e;7!rKtU}B@pi>ULSQ(f<)p)UrfRusu8;g6faxoX_u`z!I z?T=<-p2?iXD#Tm{+MUeh#m4*`vR8Tza}%p@GKG7kL1wYCF>iuw96nbAvSSmo7c+<@ z$;P~u8FYUZ=nP1ARvAN9lzr2zyv$r6<&X{2>mVDZ_ro?!%QENcvC8 z&dmRr(pb5f8yNN2m>Xdt;Mi=eO=IO{V{T?iW99S)U8I%<+PMC<8oZr)DhpM&Q(vfV zV&cHIydGnHJ!pLiY(yNiVgba59ozupgU)3D6%#N%gbgCu7(nU~=;l@s4`x4Tj1HL(8lynw>q2V}n0nA&S!8+8SROJT z`K(D$c!2iKBFjgjnFl)04_O|0e>F&dCYpNC`F=3z~C7dh$MIo4Y*Q9;)7Njz_|>}41x^MF)Rj9*$o=^1<7iufI^0W0d&SAXl?^z z|Fs5mtqeN@1E|#j+UE;883#mbgIWaW`>$0P7(h*0kUZ#cX3%&lc>lF30|ThH09va8 zYHWh`b%Q3OK;x_6{nx6{{nwzon?UBOGBAMmUyCze+@nBWx{%ZjS2GC(FAbIfqYXt@dP>Tn|2k*ZYWMBZD zkpSX@_g{-b&wNy6U;v#&16rE|x`P!Y55BXC8M+@^m4N|#qO~G)Keh;TKQ<5KFcy%z zPJ_my1)z6P2{JG|1@VO-`(r`=0G&+^+PBROIw*&ifk72SOEWNlj?ZV3g02Blhpquq zVPF8=*9VF>*y5eRxNjS&-bWw52CwJAauE|~yc(vBj2+wz4CrIi20{!BpmSY8`3Hny zSsaw(Kx|O|6C@5E^Z+rS7&L|mVuH>nMOO#PlOQ<|hN%PH1&h3g8`OgZ<#Jfb08o-&Y->Wpc~jh!;>KY!TfvlluKzgCdz~fsWHu{*e1=^XE zAb)_=fx7+3R!ImEw}-oci-7@l8!*TmnETMjoHc|Hd-;*~aHEeoSMV}0ECBcH85lGf zAZL?;#=P~7OiV}_b2c_MHzIc3&J&2o;bYFk?%`%oIQo)>0evSoB>w3!wg_H52hyfYCVYETs2Vn~u=Rz#!u>&m{KrH962dx`GEa!0mb3tt+kPVEE zphF4~o4lRC4PO?}hGbS)8=rZz0GkB!YRLK>u-R*&>vzCLt%I)L0dv+v*YAK$-2h#` z1LkZLfEWPgfW|U7ApT`wKrH3~$+5zgbTA{fe}hiL2Dx@Hui$~K2}fST1KL*$ay1Bp zq7G>d4}AYO=*%8w2GGnaHTQp`h$q#G%6@;M55{+wBl|GX!WC`0je} zHt^F7dazv)TkFBS;VaNx5$>#v%v{9Y6Afw$Bl>jg3?M!zXMn;Ew6+Drhp<5;L>|#c zh4Ax1QeX_>gU%EIa~U9f^FZx+WO>kfW@J9-ZdznMD6WwCFCiT8+8mI1h(033 zK2TPHD1q=1eNYG=mi}S>17#p&^`L$NG9R??55@UD;{{-r8Ah&}sdOr(vRT^jw8%PZZgVexi7#qY7A#!ccB_;+2GbD{LCVD?>20H_T1QC16 zIana=Y>*p37-k-NKMT}fBxX;!BP?J+h9RW`^nMmd9Wni^IV=nepf)4aIQUrr=>4n> zIQBDg&Wz8ORC5 zbjv_R9(1n-sKi5B3jm5{A#f&w&$@$zNZy?eGM0&<7E~XC^kdzL4w(^WMxK9Xfpb8W zE@CpC4O<6|9rYA04&+_yoQNIjT&O$LxuH|*py5(T(F|#r;pm8gMyHu!O;4sSMiwWq ze;61TEkT7f11soQCk6(Pe<6J}W@|=9_@Fwo4QO{0JE$lEX=AnpZE$0U->hf{n!{xW z4RC{H?Lk~nmBGO50J4`I)@@^U%w~iP!Z0v9`GX11TmWM=?5p<%ZsVc2M*p z_2(EseFYr-xB`8>^2hH0c%Ome&2iXT|=ON33?(#zBgYMo!<|FT8 z2k8fGO+uCjEhXG-ogZQBNA7u5Qe2mNo&GW$cp#9hoHi!hpG>C>^YV-#| zW8)ChApJp5zXzHBA6!L1iak*O5Y*q{Qea>J)f4*Avy}}%XZJENFlb3b=LTgVVvIH3zHiOg)F))DUu|a1QgUCv!6l3Y@q%iXdxkJj|uo}Wj+Q5&^$3{Up?s3V^BX5G!G2wrxt+v zmy!$&#mlonw<`U;yt;0d0N-W9^g14Ch4NXbhhYy-BL(WkXM)a{0_7`E8w%teP&WtEH~>}p#Pl;k^YqB(MIiMrK-DnJJoNcI zP(Krt?m%t>VUXKF7}Tc((I7Dp2A$gtI*$Ux24R>Shz4Ph7zigaF))DU+(B#*hRLDt z!~YEGkHRFO9)Efy!Z+d7u_0EG>fc3$QUT7(nOqK;wTPbs+oojZ7>_n$I&c zC3+t|AJZLWyG>$`qUM9#`5vcaeL8|~W?=%Y>}G}?l*sg4fK!3#E~LK*vWDrt08;PsfdEqP z^PvDz@AHuWr1uFjlj*Sl!~oE>%S=xMkUE@C1tdV_JOjv4OwR;l7+7G}lOTGZphZ!j z=w^iXK0#OFLVBN|o<3M^@b*4IgAd4aiJ*EPisnD$a{xfOpG^k@<-JBE&r8a|1y7LFaiPt4Hi1hNwrZ zmt|)_+_MhS0g7o54Z+mtdm_RX((VEEp&+J1_^`Q2P`(&;eNPz%hPj}=CKGfWr3?dj z-U~D*30j{A>QjQ|k3fA;&=?e`4+>gC2~K|$dI>Vtv~SOKXA%~gZ?prCjI z^+8QQeM)f#2GE8#(7I00rGKD4Xaq=Hgn|1mD$22MNF7{bL(qN`q)sTQ7m1_Kbzb3QU;v#d3d;wu;(*vbD7Lvy zQ2v3L2W$6(#=wyKj3FG5F$Yjz0hH50eE?A3f!w*y91{AVpu6m0?gRN3gwf|ZUlMs1 zTrrM5DEgXGR%Ql*T<0DfeNfQ& z8q5tK3tU(k7#@HaPz;kppX)rs37O6Sg&%Ss6n(B!1!o`B)Cjsrl&HB*3o}ci`=A>@ zfr)l6knYP5{u4H^c1X?Zc01U0;Rnlu4L?O1_$TGaG3YUTU~g>7ketsl!TsC+sxNK~ zQ@AHJRr5_}P(SpMpNVko zr?|0BH_A}YD9pI>gJlAvG22HDHkOYZEXRKz;y(HNAoquhtn*nPFzg4ZPjLh3;F-zs z`l^NFMz+}|KbfS>ellq@8Xx-I$o>7|-IvTFOll__m}YYSV*JSA%h(iIrr(So{a;Nq`Erp#kza{n)A?^73K?HBJ1%;y=*T!Lz**$Czy}UThR^(* zyfYXy>@S@CA=0qJjeS1%4E|r8UsK$+{A3W=@RLDd!%rrI4L?~DHvDAUz-Z3;oAD#l z>xYJnpZOUX8@Bvp5&(%XLq!}Lw)|uPi?BgO8XLC!WD@{|3rHO|RPNCW6Jgem+27Zz|hI5F&p z+;e^ode1q}M-HBIKUf6#K63DVyeI-X(c*%G6UaP91HB(i(myW>K+Zn^=O$2IqQ_VU zWcG-v!x%aFdFcvZ0y@NDW)fe*P-tcxkL!qaY*X$To+AgzF=Xa3q!gDh6d)>JhWyeJhT_chJg3Z(VunnH%)FG;3Wk!@+=8&g9ES3u z%o6Yc?hsSU5_3vZ!A8QT)IdYZgJ532Ah;+QQw2P2R>gSIX^XxA+@L|zbGQN z6rB7(bJ2_p0eVaf3?|@FLHPcCkTj?R%g7K2qCj;ABSSPoA!wi%qy~&ZDi|4pKvW%Q zBN0O_Xl@5A1tLHdEh9rPhywNd7#YGr6sY?J8s`DgpkWP0hH%iy5g;oV8Nxvn#7Xc| zBS4eUpe^Z444@hhWH4mz33Su|GehkQ@Zk-hlLHtT!a#smko(7LpMWnS{{?DMGt^puXs9uu;|d_=g05c# zIhm0mCWnaudK(_-d?>Iq=z4e1z&s;E5J zqy!Y-pa280U6>dcK*x3kA#lV1{tBVcbYiQsV7`aihT8c`z>6y$~1qf{l3tlL5O3A_K8c6r6$> z7?=YXCO&Wp!oa|22NvOAWB^4YsG0}GGH9(4DDprUBnGPML1Lh_ zM<6i}2Gy*f`WIATBG!q4WXS9hI)Yl*iK&T6nGB4egBF~P^b9N+Sd;UMN>VFyb4?i7 zc-eh97&w`@*!UO(8HJccm_!-G86_Ac8KoGd8D$vdn3Wh+7}Xd-Ban_kz6{_sui$A2 zP?>`~mj$}F7vxe929-`Od@6m6-ArA~oh%)!?QCuAtsE_!PJAhf%%IaNKwA+p_QnnD zno3BA7!-AgDXrrSp!0rm*qArf>#@qPF`r~eW94TS_F`jRQt!p8#>V`RL5~%5+Rv=| zH0EavOiGN*v+C1Wg+UVY*qG#;FUW&8v>s^)ba=tQ2Wj9$zjmLePT3`RXxZ8pdOKHP?^tnREb z%mR9>dTdRsYH6(8Y=*3y0iX+yI1Tk#dG%T4eIeGcfDgX;RC$e+kBxZ-n-?p$DGM{J z5A&32kUJ!pU$E%0avQN~=70?sVbfuiG-OrwVbx>vVr6A>WnpGDW1d#6$7;f+$1269 z&1z=IYQomU%In1{=f$e)#VW{V$O<_QXj@$x==Rw&jGtJ=*u20;0SPmgda-I4uu8Fc zv5K>Kv+}Zev1+p!uxhY*u}TpX0y#kgMIq>vB2Y-PF>kBWV`F~C$fU%`#yqPIWGeGZ zMo_#!0!YIU*-qwZbzZF8Y|P&no7kAU>hxGS*_eMbeq!a-Wo2d-00+>w+B8^Xfg(zf zc|%|5Ften&BDwo%{;v>ja8PJ8)Ts#t00>PtB3&`^TS#%Rz^1F zrA)ZCR)Wtl0p%?a2F;Ix&Z7n$?*`(7R$hYmnb0~7#)rs(NHzwLJYs$n!bd*;2P6;M z8w}GAx?c#S8^(t<24H;9TotlBtaSjBKMRorpBDr&AGVYLCXX0HhPVe*DM7SA_@MQc z$b97UfI#LU*6u>oBlcQC_~3#HYygB0>feC53=lr3Q-aI~*K=S2h&=3cI+%MwXL^IB zq53VM%@~+GXuT)0ybGE<=&ToHc~H%W%tx%PhS;BuroRG>4_op8vme&}g7GJ!sgFfV zAD}ySknLZIrhW|?AJjKPR(}Ld9@Jq&mcNcB4?5@(S^goK{BJZqd~+T&ydm3_K_)=L z2X<~A%)g+6_dv2RKIi~FWIkx%1(^>z+Xk5rYiYvt8={35;v5o){ibO0HfVfjG`<%a zAJ&wG*%yc=ACAV)L*j!DzJ$0PM1ra<5DmeY^Yh>y1Vj?l&W7A_h{Oky)%u2fx!sW z8DnQ)um#ba3=Ezinuh^=gaqjPC(zg!Xw5fhohE1=8+`r~F9Sm*NFD5ae*p%D9uS|O zfnhR;7Ghvn2%?3dYp6vS7>+6pFF1_sc2ebD((?w~<6VFm{9swR2pe7Xn&185BelQRPYXjBPA zgEqx5DKIe9gVeh)Ff@Z`Md*1=E({EyQ4l7528OvHaTf*#P@ZHmU|;~{Jth|hh7BNb zLk5Q3Alik2VLymAVPH4~qFopm&VguS28Np;+J%APE{N7;U;qvDf%Jn$P(de$eg}!W zFff4f7--!98)#V8g@FN-hnP$m7(_vQH3kMy9s%hC4U#gMF@Vn|1@S>?pGgOD&@71W z1X8cWzyM0aAU-JVGMO_l#DK(I7#I>jv;_kLsDB2M&j;}>85pWSvFx&^x_6!WKK(q@3!#fb|z`*bmM5{6|urM<)fZW9aqL~>Ogh8|;1A`oh)?i@J z1<}q742DqJ7DT%+FnEJ#X9fm;C=KeKfy~JS@!c30Nc^ z7?yx&7Y2s4P8I2KCrLhZh@%-wE>aWP$Wn~)PdFjfYg96XiOh8><_XRG&ljW zXActtLpi*D1KR}}tY(-Fu@|HSjEz|t7-XP5ZIA%S3>Xb#gZTbj3=E)qEkSG$hRK0W zJBG1A;(6Q*3}RT!15L#s`y)e=fdQ0vK>h%U!~6l;R{=5$gj)m{7(l&l5F3PHc7X=r zU~G{183BkNL2M9)$)WF$KP!NJ-vVe952gpCpA~dy7l;AHFgegzAo9KikUG$u2~-(4 zj6rP3G#Q8m!3lz>_JaHik^xP3f&33*gYXJj$a+0cxPV#>Aa$VltwM{p8G;N9s<6a@ zBnMiJjBMTxSwwn4UNf>6RDXjkgyI7t3=9jP>ux}829UiV`}K`XO|Y&RF~NTKg@vgB z(RZ%Dkp)|hvTp&jW@PFHkxBCNXSrQ?$@Y|`!zqJ7f5}HiW`+;tje^tJYcBlY*uXfM zVZszQrb)*?%Cj+=vrm_s&oNDSI)nQ1*HhTJr!&27W>@*Z%*_3|nT_dnGc)tFV;Mq| z9Wp*wX$Uq7jr*x&c+c}Yn^4@^zD z&}$bK_t%e#HbG?{m262knE|z{2xO1b>!(GV!1naLdQ=GV(Z>Wvg%M1+^MgeoFyYP*4uOdYcYg2)@O%{DxtPH8QGn^~MPcZg zm>BS#AWq;rK|}{)O$>PTCW`Tj-LB zw9Ey($OW|W1-8&7IVZCq9=zlxKOVGzwE}IG%i!2oMARyma)wm&OG?OD;{spa0$%I_ zD!@TqN=AkN9%cpxKJX1xu!%>IBm-!09<;^8ICwlFe;fg*$ptQWq#2sAVS@-!1e zEof&X*gVj-UZ@yo7d%)D*gej1p;;3rGkwON_KF5OfMc5qN0_tnClpqySMB2%3vJ!0JOLvjic;J3y<}!Qz1^;7@mN|gHX&Lh@~i?MIa7bkhLZ1JoY>c z4BVhaA`k&jVFm`!QWU5>h)ZxO3T&;30LU27S`)-l6cg~$6k*i0C&)`txbZGU316S$6~iDN0)z7^d?^ZiISFXCAEbz>pOMKQ!~peDtiW9sRu&e}$^?)g(-cO; zQWV(Y6mb8M=^_*O(i!M7j!R6SWdPvrH`8S%&=t23_7x`3wFlqe5jY%X*)9m z12?FH2=W-SGss=spnf@+>jH8zH>hj_b6vq)*p57AHxQSHc_O4*VRi=UL68)f-l&T444eqalAWW+(1yc@iKy=oq+*j zDnuW|ty(ad0I1;z~n+o=F8W|%`kT!^Vi%y5t>Kd7Jwdw09QG|)a3 z1_lNJ&>?=Hc8Op!GXuji1_lPf9P`Ne@)PT4z050s{M!^a;<}U)PVLBK%_AoOruz*HCL7r!NE+DGFbXNep=)w#% zba-EY0n7o#GSdSA76j*^0AxJ}DD;>f3GjerJV1IL3qTA2C2Y`UW3UWZ*;4@t1P8R) zmfka`FnTI(}F1p%xcCpGc7kRPDXtFXh%j&VJX|gi=voX)A_hNp=!107tm@Sc& z*&nn9;~HoU28Ru3X~i>!U92w5{AsNEY+kG`daU}O8F|oB41H!EJysDA3%n>p8@woE z9%zY06RQLpa|`1qR%JFXR%y_30XNVB2x;)r3O81XzyMZd<|@4aR&M4hFJE6)R_0>x zjY19edaSH$%yStzB0%di9)s6s%w_aq2C*dAm=`d5fsGVqb7w_apP|PpDsKp0rm=(tycUG{X0;xeznleZ=h7+;1<<;Ur>uIc+<|P& zQ>x~%YO*nZVohT;VDn;?WlLw(GGx_uW7RTZHD&W+)n#K|U7yCv!=?wig6cfOJXTgV zJ?05jpd}4bY|MKZ_1t|~9of=Yt-M&Jnpm})Sgk;-KzP`gpD=SwU||M%?0ywU7xQUG z@I6ag>p<67oo3Wy-dd-}s>;TEfpH#q`G!&xs}7qFt16ops}|IZ^UO^w%&gqZ8*ApV zYIv{;yRxb>bL+7xvFWkuuz7=&vKg^zxv?;@@-Ux*s@+yIk5$zWu11RuYSuBR{4N~w zhnSn#nD1B316jz%e4o*aRhT&k6hUBzvN3;P1TX8DP?yHa%KU+m!-iFrt(8@Y%?suf zRxMCS^RO|mh1ztvW*)1s8z{g)3F})O*!#2U^;nsipD}=!kIaDt$-mk(kcwvvY2efe zTEWxCG!MR#tjHRLs-T1Sw+}D_lF^9SvD_L5ieFjJyvEmS5|3I zf@KCRAd)p;6=Q>~Dq&^zU}ZF8V#9j96xQ`5phhyJJcG<{TS6;EP#YJt-U1>AA|djm zt|!?9(h9~9{h%|Lz+CA3{(cAtzFq`${scq_q8@!c$!&-vTs^36fCxdQgYNc0=JSB6Ft7l`e8hQa5I*9ZVhA5G{{Z2G_GW{%L;VX{0*uT@Ur&O* zUIbL{Agc$RCx*;VMspu%E*e=L`F=1^e1i6TBg^Ze#W$=W28;h`Xy(sD0-A2g>9(+^sg0AYhjP_+l5A()oyJ3ws%`1%eTP|PzhFxlZ)-{FY1zQYE( zzQYE``VMaB`VKDWRvu0U@WvI;x(@LA4qgTZ(7*}kyaUj7G|+hm&7gT70S1PC5G}~S z0P16a&N~3zvjjT70DNYj2m=GC>;RpA06Gs1bpFA0ka}?j2Jm?a5)9x%5VXDnH0Z%( z!@vL+ z*+Nz~Gift0fbMbw$%EE#G3i0qf9OKbRj`Gw|4@hC*JTS`|DnUcFcV~+3}g!oNdF2D zU!Q>ilvhCf?I6AZ1H&N@ZOg!L3`EN_FkA%DwhRncL9`(Q186G{Nc|HKUx9()J&3kt zVE7E8jTjg}BSRp0P#R}4W?KwT5ic@*&=zAXboGKe;3U;wRE0+~|;;#)8<)PiVR z28KouZOOm@x=#uuKLNyNVqlmJqHP%%=7VS@28LB2nwf!ND~PsY0FOX2*)uSl2Jvkf z7_LC+yHNTWl>P#x|3Ycdm>wveLF0)aS`4&q0u;|6+J=Ea6G|I^Xj=vbP-7pY&I!b~ zVPNnC(Y6c>;UL_KaOaY7lM9z|aYzZ5SAOp)_b4 z0m#3Lp!{V}8oUk!w4MdT*I-~c2cl&d7;b}Tc?JgXx(@{ghOZ#LA_D_xjTI;k`9U2V zRR#tb5Us|*pb4VY85pcVv>XG26Nr{&VDJUeDhv!EAX*u^-ogR8-ogfY{s^ek4?U-2 zsI0dD_XhNeONvSolNj`hD|5kgQEHAJ-t`uw9?`*ozTV=G3M!eivX$)(bro%W@TVF46_W>8-}_Qq!xss zT!v*tuD3YK&Ap?(66JSlyd(}W}^z{}` zWQbdD!6L}Oa21wVkn9CbK!Cy%WHtzYks)rq#T^j_1_S7N3((={p!fg<0cg4sw22>ar0gm++W|l@oueUfL4ss#tIgz0C7QGwTIxhTRS#bA9%!YEg-5(kFFS;>& z*xSG}u`z>TI@fD=_A7226B#o%{N!Oc_>rHHaRS>1W(MYo2R|w>a!qh>Vwxy6lXU{; zL!+%tG4vQKBw@c+QTAbNpqCdWJm^;EZOKNuQx zGOqn#nQ-+7%L7J3&{-U;A30c${64{c?)ORdcNdu+aLh|}V^HUs>9~<~rs+?n*JeMN zycrFT{O)7_evx@5=Nz7oOq`$-IM~6fAV4Q@DF0yMHu}LN%^}4&Q{@K}x8QGv51do{ zUtO@{o^fI`+kB20{J;9Xu}osvzXx$vhQo%RECCySvNbT8vmu>R!Pv0pCzAk3gavvA zhGWB?pDbVzR;Wm0!=9gP0-zHqKFT!Vd79|IHr^0*nTyelQ5!{J|o?`H_S3 z)DIQ`u8$mCA1{hS=lU&wFiA5SXo1ha;HB?eKPagtGf*(i51q6JPw0bZ@xcUC6lp5I z(Aba~M_=GQyaKd>kg{_tU^zH5uec;JFByDH1_Rm*J^0uO#3>ZeV<}P@3X)K!=%MrT z(8DK6AxBXpCMPo#fX|_b&j6o6k;4Ft#g=|ROPBSRpFx&>;% zGStE+3qjJLF>a(?>L4M|;e3n?@X1?{5UAW`W~jZv0AhejWG04M6%c&`G)V!H05L!- z!I7o~L9;X<^~?;lcfcA!yo zP7X)%8EA1U=)ikMhA_~2^BC}SWdNv~4w<=xPria~H3N-WGcrViDA1rYBSQ>m)-wsL zCk8Y}3EFPK$N-;k2hFU2W~mq%!a=g2&NR~M0?@=YsF}ye5D226feLai*xgnP3=E)R zosl5`M1lOn#89gNqCtVd#89gPqCuyAfW$#Q2YCj>291O-0=o+Ce9-v~P#ZvXHrNJ` z(?Hr884N%a$OQ1g3E`7jKzB5Q&i#k+!Ri?xZBx+V21bTZP$+5VUC%bg?rdLtp?S0|RJ$hLIr{9PCFo3 z2&Cx%II!VU+r$acan>01d5!=` zF=P_?7bA!bnHmOp3OY4x$H<778n*WZO$~$YQU(PHvjb>yjvKTd2F!H?O*(SBg4m#f z)CtT56%Qa0W@iwWhj}9CoDv2GW*1P#=bZ?W0x9+Zb74CPnZ3bW&|&u=1JBo77c|KYmVulw0Lpe?F8HtlUf2LBvj<2qM4uPP2;K~6--I~`R4nqg!?+OZL4zh> zV}il5pz{U6T*%ZgXeb2Ch1l5!?IkforiPcGa<{{{;Q3&P6Z}C=0B`08m2{v(b(o7G z+vP!{D4-Gzveh3X11hp$vY@>*U|Gag{}PBk&~6%p45+`u43z<$c?gyP+XpI(L1hc` zONhR2Obp;vT@3u7g8)`BGBB)TWME)^DF7Nu7v^MUU;v#jDhOI{^c3V}upuBNp!GJ) zuONo#!%hF6l|am|AclYjO2CGMGBYrM4PoF20(IO#BPJ}#&@Kp*kASEMlPhFC zb`@wW!yP)I3yL`=59ow0nBxhZ&;^AelNWSC7nDwzyafapn6^TVgwND+90XYhQq2Gg zO;Cy7!2sD22J#aKgTz3^K4_QN1dsq654M?GP>qahUp*+d;+VIMSOJ=8XP5%&=`sH1 z<7HrE1RdxAn%HL?uz6cZLmL!bh$-76kS+DBGMa46yC9qBuQPbDG8=;?5J9`@nVIh} z=z;gw3$rm_2hEhNtOxD)W9zr(=N#w-e&vP=WbunKswiZB;| zcE1bgu`y3X?4oaC^U?!NlM1sjPlfKHe}mXXKLfUleqy~BXo5G5jrmWV7po#0b368( z^8(C*UaT_A`ChDgYK=C-LPnq&NgR9JFM#&ApJ7a6W8MO>_B_%KcOBFn?i(OG z+^;iwu`#c#1D{y%oN*o~I%d{^cD4(Gjv)ZeG=c(9kd3*w4m8oq%siC|+xGS^pgBxt zwC(LJb>QvoO*po@ zS!6!w4kKhf^4@ij{kPHV2hD>Zs|T&?MCOB*Ya;VO`(ly#$a9Y%^Lx?E2QB7ARzDq0 z9<+}ZSsqj?BJ)9YAu@k0n*N<=d{C8#to}HfJZK*-vOK8!h0KRFIbi7tbZi?;9&ru= zNCZ?~f@lb)#atic5J3h8P<;ZQ>oWqmjDZ0(7X+$k*T)0B*O?DG*GIu#Zcv^B%>mv5&Gm^v?q3DnuLYj-Gh$!>&G&=$KK}*D zi!(5Q@(^h53pB3}+Vc&XzX$O_2OWXtzCd{d#0T~0n3Nb8KzFx+_@H@uCS?W&(D@D^ zKImv8(4JP%dHqbP3=E(yBS;*S#z8AIK^JL&_@McA(3~Tv0|?@SI)O~;3=E*O44T84 z0UFsbhO9yc?V()`<*x?OGLWBup_?iq1M?th41H%OnZOp&`IsuYNi-F-jlnSf_H6%!$}@uI#B>=LK=arjc>xe#kAVSnP6CK858~@HFo0GygZQ9x zAVGWHLF+(3d|Qw_GXsMMh&Etg0G&?&3g2iD--v-B9Yh;5FqDF5BL;>_DBTL8jTsmw zgJ@Ie9G@`*!&)dGwD=Na{&5iB2s+1S#K3SJ#5ZPOcnYG87#Lnc>8~K#n1SIRlm;zw z2f0H4)UGsQU;s5|LFR$hYJ$Y|pyHrT8%W$4#5ZPOhyl?G3=H7C+mZ|nWgxx`0|RK4 zB`AI-fcSFIz1#8(4C_IBX$A)Ho^2`UT$&klF3pGme19UyKG?3~!9SMZMZflL66ZGp-%5F3O+a}yvMbmjx{ z9crNT4jPYwxdo;UG};F4J%cncFfeooBj!XvYCssI4>WKFvKKZKDZvEU835G=YHWis z`WzYy3j;$2%u-Mb9jXCj76?PR3_0w??OE>TU|;|(0EX#^i#~^TK@5>zKy@a_UQl`gjcFojXZXR-zyK;!K<0qv`atSX=Fp4{_40|CLo*?M z&+-FM> zFn?fXV4Mb;V`H1Zus`Sr3pZ#tGWQJ5NoQZO7xGV)*vvYIL5)FyK{@6JTS3GRwg8UT zY)p(MM}M<3^Sowb1?@e)`jWBm>JOd;mtHc)UCIE-ocqnleCRh9^OKAGa~bF9xPkT^ zGbp&ZrMNLDbItVJ$Tpv0f5;CO=`hefRr5o?8JR)zZM?HUb8XDO7(Y6@aX9nMbo{}> z%{MXV2a7a^6w6HBNe#alg--H2zH;K?0n35r{Xn~W{V%Z2hV1L*c+J2T_?ru~r?)8L z2Sb7QYez<>*UzDQZM$DRD)fNw>GjG8`ppH}L0fn2C1c2U@Ge@v*H25gz6R~0?SA#N zs3@TerlwTnwG)%;>nBLEo4|W|A$DQf1KQ8K^&Gj@~s#V<_YaBza0SAPdIudXL}udV={=kLI4KPZ^L!@f-yJc$P; zFlX|hBH$T6$gCdjjkcg|x741IGd4t@k%LabA?D=3Q*@ z5$qraXf%M4ArREz2A$H)$Pfr#y9VB!2%q!-X$2`}W~hC_0Ahf~QbA{cgJ{sXZ(s=! z19U+%NCHHI>;_AKw1Y6Hv~B^{$iWEv;B$x|SFA*54pavzv?zAs{D%x+6#mL0$!!$;e;;qCm!iC-#CTvw$>$ zI`c3-*qICr-~k%Y00@%DLCQd5BuEB>ViOWP@IBL@oyDL@05%5Hy_29RRnW;>Yz#r* z9jh>lx)>Q4rZ9qfx~Sry(E-pr8oD{KeNyP+G@4DrHdV#}+98S9XvxXSz=X8XlFJ0; z%x`YwGrxI|wor02Fz|v50&TVAgB&!@uf_n{swse&6ca={)f;q1GNjpxYf=oHBj}T zJdim6%zXoLF=zq{ykC$DG=u;WVGaT{y176j24Joi$S5w*00Efm1LlIp1HfEg5Enel z#_SDZa)Cwyz%t=rOJIXm%wb^eR!~C`WTzk468Ndv5EqFX6bAjfC zz$S-+^};8yAl#WSy}=+^h>Jo%OdilQ3M^MKAK(Qwe?gNc3}6XZwqicY3px=1Apy%* z%qMy8FflM7Bw!hf`7AGJWiCPjma~{2@q)VVUz=Gh^2ylQoAdfKB3h;nAppay$15F&=gc=E-IN}2-<-ov8pjIU<7T)Gi2q=WEEsfV^w4`VinY4RWxE%XY*p^WlLsdWflT&C_4_`P_~m% zkNJ3=9%wJ#K1R@%GVty`^!;!Tp*zdw*UV$p@c`|I(**5@Q$yMh7sRT?TmjyQ#(W2= zdP&VZR!u`zm@4>=xEoOU6*%OtK;_qf_OZeC!W{=qA>D)QTU%5&kCm1A9-|klCYvv- z8ffAPvMUe16>dM&h=U*_z+2&%7uA6#jll85&D_NZ+70&&Waa|UB-<}W@GiwR&|%1I z%zqd`JKo?M*TlTRu`0%fpkX`SK+{uX?RW#tjDpHT5C+XLfmV>2LCaTAdjP}-?YRKS z!}t(3h-3rrsz#n;0;xxyV*>G!=a@kJwIHov4ABp|+Xc*Jfbc=%Q^I|Al0z& z0^Ko-%mX`U0817)?KDd>>gJd5#GY*B}+3G7>~XFzItZ zppjIFUJ%L5AjohG+{=Mnn**Qo(E-IA0|RKk5~v%7G3R4|w!cdUI_IN9;+zj3bj}CQ z{w~m}4A5K!D4&98&~XQ#`*0V7=5BNu7{L3zgdm3=FzG@rSOV?SItY~q?SlZF(+fI| z2_z4i;{wfH+=t48_J%SkFff3+8BFpF4B$B-UFg0rIR*w$S_kO^cQS+-7(i(q#0Tx+ z1kDYBPOSm)^+0neVhjwRy_z6C_&i`G1_sa)O%NZnM-wzx6b@1+&cFa#uL%-Q1MyWD z7z#nOE&~H7ZGz^G8lZg8jZUCBseUMbGKf}VU;yp01nCE@umsH=f$|WDzY!#_!N34I z9RtJ%%};{%shtLi>oPE$2hoy{IX;j)=)ebFkR@JkPhVHG*JA2&b|hz2c2;Z;)C{*fM`(f79rK=y&thYkY+S#vIQIw7_Y-0mT1mWAYfN}y2_CT9jH!2o?`*+>jU-5U~Yk_+r+@YfIJ3oAp{vS z2ld!MYCssI4>mUen~#{n#K5o*i2+yELUgXsauJwUS;ehqQfkwLYjZDo*Iq%in*bu5bfveut#|^Sf4q^!-g9dp14#Hz#P>=+( z;OD)HLFY~;Zn*nW%Dus@(=9?`rW41dHaY(f{|(OmkZ3sVHogCg$~ znGBxU0`r+)A7VT3`$#9F(dLYA8GO_1WcjCs|KP|Ln9e)@@b6=t$A2G@Iq-^|{lM>I zGKXI=FdYAVW#56{SC;b4Iq>`1z9X-g84mouwv>Cu1SbVI88`mfmo9S6VVR}w#{Ym} zKZ7F3HYA&2F5zNOm2zX9QLx$k2MagTJZm?G{Q?t=elmF*|77B4G&}ISW$E^x3=9W; zw{)8SWa1H+f8ck^z9YZeWg0fgyS==4f}3YP*BpmeK92scZW}nf@^kiob;H2nm8X;c zt6K&RuUsA2=L$Yx*bn0Qzq(=M|LV5!Np7C`5E-Xeo=(oM{G1(M`8eMFp>qIq*D%LC z4igS@Mq9%M=Fj|$oU_$_2n(>ic4lPy%+I9wLs)_FwKF4V&z9m3VFt$6&I}B%of+9? z*MD(Z&+ve4HscI|56qka7Z_&cgNlt;P7F*R7&-i31#vUKX5eFg&A@fyBLjoL1ki3Z zi37LNpG*$heljIAyMn~uTnun4b7OwM zpk(1D=fFMj~=?CYR7A2?ZyJhB-q!wl7rMs2p zC6{F8=M~3*HWel37Zs)EB$lMc=NFX37aE%CQMBs{+hxJnXL3-l5XPLlLAg{I!<7u6 zy-$t|#YM@EKB;+No)d`Y1mPtYC6**-Fk~@g<|Q)}1Sc06G8FiimM|2!fG#BV%rj&t zsAMSc%rjzuPSHSjLnS6B8!&*Um%s$nRY<$V5|fh+LHnbOK!h zM1tC|pdm^|hDb3c1_sbF2BZlIkai_-4H^WZK;vhO3=tp-Qa1;IC?@ zaL`!?kkcyRTXaB{g03KAWC#XPAlEW7fDe7s0(&JGM1dTQv{wsc3us9jBZDD`0tFBg zgMk8w290ilHj9B>!@vM`2WU{6ks%yJfsPktWQYP$ps5H(hCt9&ZLH`f6=Ah4dNNBK z#5RcO5I!vQv1*B!%o2&L1;WRn1+>?U4Rok$C`1eB7!VjArUlew0{I_lGb2a{vRWzx zM1dBXf~ICcH0bgxMuuPz1)9A;(ga!x4KW8cVFKPm@(i4j0zee_5EX`63lI&OS7l@f z0a2iUM@rwIt~f{qlF?X%@VkY0+dvaE5C=fV@);Pg2!YP41PyaBGK7OD$lz>2u}mkqJ=4RYBpJMv|}9MHKr@Xf!R*rxipKr?iRsXlJh zxji1Je(-(1yr^?~d?2NuxjlZ!#l8X{Y1kR7f{=+m2GH_JNDm3*b;#5LEbTyOP)Pz> zK*|8Rfrx<_wB8LQ!PLdb0$K|OVl!HTj~iuWVu9sqMhCD6I}4}`W?;I?$k+}_DUi)( z*T6@jf;tEcOgF$149uV_nm|T@?)(K^g9&0YT7eB=WdZj!K<f(U-%=UhuqB$1C2F;Q=fMr2vBZEYk9l^4&Gnkm2v_XnNGwonmXAqYgbP5od z>kU%O4XPBuTpy4dxj|z!V6Hn@F(}W0xo%)Cs7wNLJwWz?>R<+DFA$R(v>p~L;|b=r zK)XTA5KDHzxV~UJ`5{rl!0ZZ|-Quo=aRb2I4X9ku9j;)LA+n%DU%=czP>^#Mf;vT@ zkbrQP!MH(SS#@v-GcYhixR3y6U|}~F!Mu%6j0JLPGy_-yBnT=T zn0NBUp-6zr7f|+QKEMw;!-;PvOjZD79@v$a_|Cut!DfN7K4{FE`4QhM6bX>v2arb& zLd+6jg*t(O=_C^agCM9PX9kT3fsAFE!pH)e?FF$Jt-+pTu7GS|n#%;*zs1Ss&C0CH#=NX1jfEL>X67|UFXlWiRvv#=KJYEAAiC5G zJjJ-M&Wnxt0izyR(w~);IoJziWg7EdMla^Wpy{n|j7%DgtOCB7tkUkR0-3DB%vD~j zJSMCHo~%4%Eji%%IC|<&E|#1^kHNESPPmLV_wCm$HsiEE)8_p=1eBggd0~H z8}r>-J?6zsY0P(Po0u0fd4U3o>lz#L<=Qk>0XF81Olhp315A0mSj9jmn%1!j7=r~^ z*<4w9j9FP-LBV~wRu80aH`6sX=A#ge`)bo%Vpt z2Q^-h`JfX9kok!DIf(myLL?br?ghX2c2Pu%txFz3DK{Qrr!dM z59*X5>jxcWfXoMV29WuPJz)^@L5*!>dC=X6$ow!g`=ZhKpneCk`b;!=#GWyTeTexx z2p=?uf~+63Dg~Jjnp;8UgI0ne^AYoT5c5En0U*oIM{^HoaSKcy)bxa~K_sZu1JMwS zIe!Ok5J4nC)f~#mIOzC#aCM9%4;mSTa~YT!gc(jDxD23iP|$urkn=$G1!#T`krp81 zwV<{fml*>CXfYy}2?O}V5)dC`jFuj#m%{*V^?_{0mY(4qd?+Z3=E)?UYK|o7(jUvbY5UJNL&!IOPh(G0en|F6CVS^ ze2_RVc*X#XYX zJV;O;1o1&@2|?#Veue4>oYKb?g9p#8wr}j2FZiUD$wFYf2cet?StkYL6=uB$uTg1(lSV0E=XP;a(e}c z4@$$Jc}dU-1t30X&KWe{2s(8J#0TB+4BCqZD*Hfu&>5?sJ!V@#=IApp>;Tc~3=D@s zv_1m^XkQ{|FBzyC3Q~U!B(BN80NOtb;y(rPwHO#c$LNFjpfgcHP5%ENaeW2`@I0V2 z0|RJ`0VFR3ntx+vU;wqFLGx{(1NK4jVE_`>V_+}`(fZJHA@!i=Lh3Ov1VF{(K(rnM zLlTq*p9`taz)%C?8!|97gJ^vQhKV3rkAYz-lm_4bsSiB|QjdXQ9aMZ5h}MVB3#vlz z`BY(G0H6N|JKxXkb6MtKqW1xEI^*4`~zAH3NCjc z8bRtnEKu2jY#s}AZVF@`s9yn62Qm*-mV*2N>V|;yfv#DCt?c0E(V6T(B34750e88fFS#WM-(zh2=WK0 zGY#_xC|khvfb`$tg@hl74Z<)vP~RWM28n;+g~Sht4Z<)vkoh1sEL^_wVxP+dEhPu3 z1L*}}UCox$G`x(pA^IfVVE5HKCma^khx5dd7$}Gn0cTj@JP|bP$LLAHx^_L zXfZ!X9jFf1H!`&_S3m$lXDM13n3zCR6Q0ZbBMovn;w(kjTxREnnNF;3@@^e&BJ=F_ zi@Gtn@w;7+oayBMfq~It{|vWX9E=tlUr*=fm?Ux`$jQ)c!cPVRMkDS9fuD>v-VFjj znQXcn1b#BxEcnR6aJqrTBO@n+LZlnRbOseK@H{B@Yfr{4uV?U!UGRT3gMnkdgVWTX3<`_}Tn$ryGAejA zO#R8E(A6;YC$j?UM;6voaCDEQ|d3S$sJn(fh zbmMuzuz#By`#k>-3|z5pksw<^v!ozfxmjjh*l75Jh5POgmI>T$4EybVGHDzCWb&8% z$jB-3n`za?p9~I$Kbd5NelzSA`OVZJ_?ziW$0kX)R~P+Xy%F$#^;(d_Y_%K1XLbh0 z&+Lq>A33;BZc6yfujv2kg#bwOz$V963=aOUUI~KbXS2;=pC&Sod6vT~#srriEZmIN z^bbbh`iwKPCoH*fD-!#%zi33 zi2P;}+-9>ANc_#kAh%LCrUwj)QEsMgpjl1M3mh{T_Jd}C zO@A^~Ga88hW)b{;@q}QC8)z1j`y&%KXdV;fW|kj}+$Sz_(r+F!uM9GUX-@qa%;L=S zywnth_j&@&^=D@@`u6B!Bu%^AuP zb4pXewS00u+&|#iO`LO`;Azd^~UGoA(D>CXy=YzFA0 zXN3uD78E@FiEE0p!k8foG{b2CA`C%<5r{Ab7g?aWIiy(ykQk`GU}OjcQF`FELIkL* z2kNe&O@o3?u0Y$V2AZ;DWC#XPpiKvi4B;ROG>^u_Pzy2~j6p_&ma;K3)Sh4fF+eA9 zF*1aJ#&WyB6Hy_c6PG|EaEuHgAZj026n;7($N*58&dgAI0o*|Y74(b@VIT@pj|YM% zka|XjFwp85P;J7<5D40a1ZvbXGQ@$__JP*zF*3wWVq#zbHHnd~#RJ&@8d_y$s6E2~ zV)TKl#Apx&TAj+s5C}RL12mQj+PBBZzyLZEhLIr}L_yA*j091jpkrhR1yM`Dff)_* zFUUehhG-B4nfL=uc7lTjM1X<|>@yGthCyzCI|kHWVq}O$G8J^&0%$xOY2pr~6KWKw z9|z(>YGhEai;*D=M1eZ>j0|xggZjYE3j~A0#a9Ky1*|Eyw^ShFSp- z4Kf8J4x06YoHH2!@*Sv$irZk2As|g48e|B}FwnRcNF3yUkf%Xx&|R9KiAzR?2oMzk zPIhWuFwAsDhF~=&$YM`MhG5VHEF{KY zb3Nc?vLGihG8lj;$O)IxAPRDrX&{IKna0Qv4RY=)aFl^l6vUYZAPVGEMutF8MuKD; z_~bQc87|0RsQI83-i!<}ASw%NQUHj8m>&Z&A9Pd+(ymK1?T|_72oME2j}v+HbgbgDD__{Ji zhH%iN7Q{06p{V$sf<*&<`y&`3XW%e01b~jh0WG6PI@lDn96$k_MB$#rB7|+~6?x7T zF#*fXz`%l-b7h6h&yqIv3Z7$SRp(LQW?&%dd{WT#Dp(U_@)da|mJc-5ia3yzAEXpC z6N@?pi=>E^fk6l~(F;-}44sdpHMH^rd2e1e`3v&yI3o^zEEW(PI#RaX{WrWS*f`-CD zT_eyeE=YobsS>J@sh^P*bhsodsH6nph?|zShVGk=lUH;^78$ra;y)+k&o%LEKSk2bP6h*2!!SmIa-L1Xk<-GMyVV zU?{R=9CR6x5T^%;e(vqDB#_>ZtMFo1@J z85meQm>C#^K|W*vIRiAV3p(!$WD&>(5InTzjzMJxj=5tG&>2|F;8FL%GItE`lwiyn zA7Wr+W#?iRNMmDOTi?WdnE|xpl3Bcom7O_LkCmTU3Vd4SWYC3sY|I}S^jJk(S%uiV zSb5moS^11uh4fkZyb&Z1b2(^gk_&V(pC0HszB2Gu#Qu6OR(>|-X2vwo6tk!=vI)#? ztjeJMm&|Nl%pdB~m?tpmv2wCyvN8vOCP$yvrLl^$G0$U6V-;f4!(pp9n-?n|n>Q;r z8`MrV=BIUF8`pxiM*6Ty7$WOtc4K3{2%1jb#i++B&&)TEmDz`ld0X8l=2MK|saRnS z1<*7%^Iyg$HZSI7HD1iOm^n&7wqSA|vc@k(^yO~Lkx!jA5xvdTqbj%%0daQi@Y|Ni)!E?rUL6ggiLF#6LC#nT} zTfsBjzR(%&09FA{(A2h%C#wLP7n?4t0yDptCo41af_l)YtPdHyJX!gfxx84VU0D^9 z!5ciK*?d_QQb0`R%e76c(rnD@nLsCwGBfuwfestxW`14k#m0QI7JPl=b|x=2=97?_ z?p;hxY|O`Mo0xYo=`kOx{lqH3#(azkWP}$hY$m&bRlpEDL(R(O&I+EP21V8$$V~PH zrd@2z8z3{;mzli4>fkfktjf$hpxN^{FIIkLb1#2C2^kNr5p$9&vUlgb$h{14}bN_@I&= znU6fL4Kfe0?-ZgQd0rbN59%u+>%R-(faj$_@}N02h!8|SqyPnpK=`0Nb|4;T9vh?{ zv8e(g4?2etSspZZiOffwWeQO*3mPZ|D}eA3bDI!8@;o=lK65nnpgnqE?a=UXMU(eN zX7-M^D2?~d(rfR z_9`OFgYLFN=7a9GgYgk*0VD!#`GA<9))IJi5tIYwgIkwy0cJAh)j??&(7dn& z0|R(ptOcZD2RhRfyf4;*fk7E0FU7zB8ixZN(*kP7f%fHs@*Ifo2$Gj!U;y>OL3~g@ z95kN|TKfUwgZ6ZT=DR`tdJrF!cR=&ul^}hfdjmnVECU0mQwfsq0rBM+7(nO!g7~vR zd?p5lWgyyufdQ0uLHln(^Kl?~&>m~hS*=H)@}L8YK>KblL;0XPMnUuGpoQxo^`LWk zLHle!Lgl}LXwYa8Xx`a^fq?}?YceqKgJ=r|2GAX#p#8L<)$SnuN+5A<1_sbwsvy20 zh_A!IU<0Bp7#KhUHlY2n-cY_jh}L6Zhyu|T3=H7;a(xDdOejAWL>n+LfL5l1%!AFF zgU&|*@w-9tMhpy~o7O>Rn=S`cjT^Q5#2pQ1yJ$V!Lpz%NC67&V=3|mlP2P(usV*pT^*m-); z`g)LdP}v943K|>*m75?o2t)gt44`wBz#{`7K?Vkf45WEikb6MtKqWV*mxeq~{{zQ7 zJ*fSHY+eP@yep^&3o{RWo*qK@-O;4J?K1C&=57q3=jtS7es^VSmgM3q9QSTuaqDuM>14lO#Er>qmK(R5#0&<-c^n&G zPv&QM?aZ*?BNKz*g+eFs4n{-vhVTxBA51mVI~0Df)Lidi`pChg@Pn;p!AA~;cNg#e zh}j_gftitG8slV^i5wSLW_mg?>^J(sWX))(@Po5xS?Dy$&?5_`VFdEaEa+wIB41Kf9Ca&$Yq za&maZ?exmg(f`#QBPa0w%Fz+DSD9xn!+!IhOxz|vnY0;A5B+XP{C@ERx5Fz(N5;?m49GM5 zIzO1WC1xDBh`1FJRL+n&@FVq^#b?F|5}hi7C60a2j6a*PZSAPRIF z1tUWU$jukPZbmT_G}nz3k4T1t1CD`#L56{W0d&9*BSRRd!2~)z6f`-GEDaKeN`o48 zAZd_yK#>Sy!~6qcXD~4^WPzO#0ir;gd>I*nLC0KzP98!!fEKji95m3y$PflI3$%QL zi2=ME1Y{c%0|O*&z-Pxn5eISrBZC2m0_g)EbsIF91>_dcLAfwKX#F+lgk2aP6uS_| z7=S2{gV-3tCbI-iW&t@2v`PZT2X*D{fj1^Yl-z?Oo9K&R6&GK7IB&}BuSV~s&HXp;#eLo|p2 z#ShYscF-08kP4*C4$6gSLZBVZAV(lM0E-aFBOp~EkAP@2CxaXXaskLuAR5gjpb34@ z1Qa7fIEVtNKyoK&r~$M}11Z~J5wc)nU;r%?LCWn|gs@G!^MlU?MohR&Y}Zz{XnCpJR#6N9J4=|3o1&HWI@LU zgSl>?3o3cyp#4SWATSp`)ehkvL6zl#HYk{bK|88>GEuo3VcZa~>=9J126R9Hq8B=g z4sswLXqg6Rn=+_OWIoIPof*2>87u)31Ql+~7x=?qd!)e1yE!tG73eqGBE6BU|`^P zV`X4C4hlJ8kTj?)0gY)gD=-Sx!<6K}lrS)XuK)!NFfhZf0G-0fk_Qb>#6E41OF?7H zumuC4gDyaB0$BvYpn?vx$O}}IIYA>9BtF#6Y6g`ZIOgIbKx3oK3^PF^C4=JbPQ(IX zaEAyKXNWD_pbI?NxtPV$KnFE{0!^9!0^Q$f$STTQ3Z6*sgIv-1m%)ow*pO8KJR`2n z%4f(bpwG(3rpGG4<_)KX+4NZXz_ZO&ps7_a=H_}mkda-W%P7A=E~5mU#VqX0D!`To znOZkwWp-y{ehZo$U&xros?65J$_$;3_lIv3=WhZ}nD4Kf$9#}64YYSzm}3oi!n}>? z8e+oyL=$v&ytxi^lrl5(Uq;ZxvoP~7@GYUt%x$1sLJ>Q|-!V2}*%{8pJQFl8{vCAR zW+#aCgVBqXl{p49#jXjNME?hwM85(#_IOPlcn-f0I+32q#{8yM4>bQhkx7qLz!$Vp zocT>HXtOx;WG2vx0ua-al_!;r`F(8~8}lTPGB(h5Z8wl|&^GcJd=%_qPUbyKpb%kZ zK2i&s{C)|FTIT8XdTh-5A^XbLG3l`}U#d+5Eu7c^VxOqhW8T4(#(bi-iFpST*k7RS z<@;(uG0l98sO{w-#jI@17eL#~p_B4gn65!5<=t3$j96LSSS6VGnn0V#LGA+YD=+tA z<@IA@UIbYZ0J0nB?s5i+}KnTI?N4>Io|L^0g_muUR= zXnf@T<{N`_YZgI#P?s4r4<87czcyxI0G+K4+V2ippbe4-oG7mf@ovt{&aolzI0;-22dvfv_C%{DxVCZ znHd>DBS^~jiK}GM$mJsjTjif^X(x2gXE1E7&b#`@IG~8$i7=p z{DX$;Ks5L~Yhwn6hah#P3=A(ov@rw2HxO;a!0-!7GlJ&9jTsm~$3rohGBAik`Jgj! zLH>i?X=(%#H)3D_-Jb&z2d(P_(crsHHKFtC8Vn5iAa&}Pcb0U%8gIXFCerv9x>bxu@GrjJdza1F!JWvw}QG(pn?mEXGlTv zEtCuD&ViYr=~Pe|2^zZv34rF$K{O0QJCF>ZvH@Kks9Z%?2P#XD=Q$AulJOJ4p#!vt%b3tZ+?g#~mgVccdAax)bbSD9_c?Lwzvs*Aj?kWbE0m2}+gE0C$ zJ7_WbBxtu7rVd7f)PvX{+|R|pfLJ4ln9~LgP9UqB#SOW`7o-P-VRE2hL1ceeh%+#F z5HZg#fMs4BWG-lo1ZFmf??L1|yC)X&K<1#&vp0eg2FPG22B`rt(dXGg>WG+L2d$JnETM@*(czbX9u6%0@4V@8Nv(k|VYJ`r#CY?+Lde58PK|D| zZepMv+KhJlC%Q4Ysk#M7&T+EXFXOfzyhDB}zsQ9ulJ>`kG>Cp+W@4Viet{WnfBe#q zjNA+gj&2NUQQ*0Dj@RCd+g?xM7rC&2!@-GR|4iuK_?h6n@iW1D<7fV4R^a@|!U@|O z@8)**hew0R2WAHL3m`p`Nc-a%6r$W1R6x7qIbL%y7`w5(_F`k0$~r-0#um^l{)br& zcYj12Xy8!&z|6=#oz;!!wIf5I3)2MV*NzNq6PRa!_RBxt%rey|qcr2O8~B88(0+B$ zx#Hk?a*k;X`#I)E|1f0WetnQRI)nZ7K{ln|3{#H2Vq#ML&G3fNaC^qL4AtMvo=U$3 z79D@Z%BudG`JC!+VJ+3)0u9Gru``*vDg74aV4q>-*5P#XA_r)v{DHeK+0g6 zFjM3=^E;v6%&R7BigJ5>(f`#e0smJo1wp>$Fk`d@?JWoGf`{#peCWKd*KX4oI|Ly;luhoS?cVXu?QZwBLU7Yp6|LHpvB6Wz?+c70^v=e)o% z2QqhV2%0-L5&F$w{Qcq$LC%j%oJ?jrJ~DEET*>`|k^9O;1_g&r^xYRw z1g!-?-p>y?@*H_ZKq8KV%PWi-ppL}7xgRv&%g7J_+T#xzEJm8F0u|4o!^l8;*BKZX zKxgM6O}T+&A(O(O32qP%j3F!KfTI~r25Ce3XBk1sH z5S;_sAqLv?4`P63U6E!3K~{jyAp+0xgE%k@I#rmNq4o*`h~Wj^i5mu@K#P*W;vfd7 zXT-=52D;1^v`7+ZLJwpN)Lg{Y3nW3%&T$YIf}tuwizOifpi|mGyB8T5!ax*gREm)y z5JZ7?qBAmtfsWk<)%A=FfuIR_(DoBXh8WOnG-wu@ks$_j3C|Mnq&R#dHpoy&0EdAn zC(z(DLlDAHc(8*Mg3jDU@(*a~0cdRm(xLKJ3=9koU^41iZC(+fE?BU5rudK zvJMgC3r2=;gk|BNTPZ<`LD%4dcE2oxXaY54L1!EwB^yxt0i>Fd0jvoW3m{Ff2mrBR zNdm+MT~h>Fa?QvP1)_?;fe;G1#0GTo0aBvzU|?VXE$09&7GPjtfE;BH4+M~(KqD56 z3=tp-H2uuT5C~fL3fWH(2pSp#ZH;GS2!lBVbnF8Yq$A155C)2Z1z_9ZOFBT)B9K%Z z0HO@Q=_(XNfs6nxW&qKUWEIK)pY9C>-9!vYVerNw$a+vvFftf`D9|7PBSR#JDgv7t z0-`{sF)~Dg3=f{`HxL_xI2A+&>*wP4c@*&QDNq9%Y%3II_M?GXs= z@W25LQ-VSTX+9k!1R5b>WC#M?c?#Mz%*YT9qCo3h7#V^<%kUw=0bk8x!pOh?F$T5= zn*k&Q8gyi22nA7~^%0B=VIT^0dH_=D02#X)EgdHfk zf))rNnT2g-0t=(3FgLdqH|UgSW(@{rJ{exr!vK&^3}AzExEUDOA&VL~&`)URL_VRN z3%ai#d_p@nLMiB&03P%M+dYNtd7zgngV!~HPX+*=!;awcLk$GWfe!>g926jE!ob7^ zIs-rmv>XApNI@9HfhuBUU=V>F6d(#+q+rNGXpsVVpb3<-7#Yh!gGk_tj)8%p9^AXH z1Cx+L#%sXrYA{*F0P1uxuradcLSvt?i;)dfOoO;gurmhOLB|EKg2re;!i=qqY#^IJ zY$gjfP@xQF!VVW;gKa!yf*mdZ8f9Q$yvoQ3E+N5va>i?npfVDC3IO8`uml4u?B-0y zenxiCs0KS|`xE%aD@M@a0uYVnOrQ%VA#4jKkckjOtiWsr_Id{BA`VcHKo1wNV3cEF zU|B$Q3MW3$lS1HY>tx z2bSdo^py}2+|0Wbp&zwU;)hR12T#av~eAzfY})=I~Qh@E65pq zpt>6@>j9R%i7NXB#&riP7KP50GrNJD!550kT?^y7fC859G>i+e7c|BQwg{p(8=OKI z7??dlVa#_Ll?z`J0g?3trz5!H*)XmbSnnfLE;n@WhZ!Oph05iIj*BsSgW?Q4CIayd zgy{=Piv*bh`#~rDFfxD-kY;`%*uerBlV<=+fXaDLna%uK@H|XH2&4n-eP%|%W>#e7 zpaYJ>7#SFtKM9(^B!ofAL4u%in3ckvRKkMFQD$*Q!G&-cP&*NHd<5u(9cD*H zkxQWUNsJ5(g8Nw+z{fN(fQ2FD2%|h63FQw7lIlgpuKh=cY#zwFqx~X2k1pfA;!iOm!xFomFQ)F+GC&*Wbj%F)b1O``346W7+KA^nE7_Gg4RRm=&`cv zF>j~`9e&Szi@}SHd0BlEhyhv{A=Sjn$(*LgD#$DgzErxiUJtam;WvXGt9T|Gb5p$@ zs|fQy20d0jHg{G5BUTZ8RsnAW$p3uK z^31#oVw0pHvTjy4&>0JY%zX3Mm{&v2Mz{_-?7*Lmc}d+h<~xjOtn6&e;6wf=*6Fb@ zf|elMV%CEn^3PGC2VTx0z{Whg&Wn}LpH;w(Rg}5X3#63!HRvn^7G}^%0o&{JnDf0@ z`2tx5n0dT>Kw-ki%;&|%{0y?@Vm^}|D?4+57aQ}$x+XT})l5uEjI2VwnXIzztU|u5 zqM#G~`Ak@aJUvK)Pqtg3hF1e!~QEfETMM zn;Ymr40ceI^6Ig&GKYgwlAaeUFLQ++tE4Y0KO6Y0hj1@8<}J10gDM)C^_V!oC+$K? z3K)rgUO%WR2HhnKk!NQB@j+)gBl96_5DAe-UQYp1UkH){V~9NHA|f!C0m6qhCqVPt zAoV99lHm0ZAU^VX2oN7sO+u7F^n=!#A@gB1H_SXx*9uu4G>3}J2kl`-=7WwsL*|3- z&O+uVLaSt$`JfZLkmW&huE>1QS>VWg2JtI_1^(D@~C$53cX8^672HkT2y0@4~n1Nv` z$Xp=?22e`{vfdSN31g+x$-&gL;zyLm%K?Slq3nULJlR)PmfbT1JhMvoy$-n>_CjrTW zhB83+5rFS2cV=J!pUa@mzyMln2a*S$%b*6muiTk|0emh469WV2+*6P|_*@2U28OpF zcRMpMd<4<3d&`|cfylrBI!^&qR)F}RmExfL38X;lD4ZD>KszHq_ZVnG`QURI3>X+d z>z6_5L2Hg?ec^Sk9pUYsxzyP}I8pH>m%V5mFkP6igK9|9SfuRJ-2jwx)`V8kie&I}AoLHaBpcSeKcL7RI(=Z5SDi90he90t)= z3=E*#zd-VrKzwTkhPxoz8M)2hmOp46~v1Vi4`jz_1ZSJ25b9h0=RLv@-((s22$`=RAn-#K3SJ zL_0GuJb=>gK(rGB!zU>H3q(6JFmSLiFo5*&Kxq*W?aaWS45AgF>s#C)>mESr)`OA= zDANv|b0aW%3+T&S^l)DKkXIIusvFw^7c>>1UJ7~ZTtI8ykV}36IR*yMP%fzK1z}Km z4WdDvbPyZbpJ%|e&IQyfMpp+a??GmOFm&*M0km!vJnRD!WME+UAPK1h(AT+uCR32l zlK@pqpqdEgW|(=P`4wdI7?9R2fQBSM>OlHHbpXhHpqVO=)f~(W471^NCS+X-NFIHi z%VJQc9_D%Q%mqj{LOq1Xz;KY8fk6yp08{|R1dXx5*dVFvJPZt`AV+~XNamrhbK#JJ zoL>M67tqicNDIgxpy@GW^LPXq7(m-SpvHl^x?m>yIu{*5h?~KZNcMuv2bl*87hOTf zJPxutkUXeP1ko_@RM24#FbOi|^kb9 zp!NgEUg$a(Q)BQ+5)gvWc@mZeMnvEHZ~@0Um);F`Uy8T0zvf^&FTrTP54_GL|KZ&q z85>yKc;V+v$hvX6F(}UGV4TeT+L-}#)&%67iApEo4n{-fhG5V+6E>4U=SIZVJ1{!9aJ_b5V4euN(E)VI1jmfCKU5xo zPMBcO@VapC2ZO-9A1n+ED*hiBz-KxzD1lC!U{GdI1E2H2!TtIOJNLxsA0`tjGdSlT z_>E8#nj{iOxao`m@`|;m5&Enk-{5}`~3c2I2 zK=;+(Ja_kp!Gr_9FPfcv#m;cx_r-G@Gc4T}IC;38xyU}_?hl>`>~5ZJd=D7*m%A~j zLT-Biy94YZnEO~}?AW~1jcJDE4;JsUKXfMWOyrtk`IBkCz8lXRuDK>ZnWRtuZamlQ z#yx{)%E8~Q6(BXXZX3WSP&8^8{ABWp0G&9&aO8KR8PCimo9=oK@{i4%MuIrwm$I$^n90<ej!Di*%uOsZFpNpdFUpQ__6_z7jyHwSF)qOY zF#$#SS*gh-#qhC42IR{k;Ok)q?E;z7Jg9p?2St=-=9OT%wgMytlfiz41&)(1P#Q6Y zrr?oU=xURK;G$%lcUnN!w*)5_88Q@*u{;LX!WiWBFyO;6zy#EHM4ylW^*|P=(qceb z8UtF?fHXAEL$KgP%q2)dC1w0o72Ar9nb$W(Y7XaNMMvB$^|2cjTHMZlM%fNTJDg~3a2 zKnzgkWn_o}835Xf0A0iaT1Ag^9RSF){~!x`Kx;8TTnL7=Tx*|zw{0M~1#$oe__7Iz zv%*2w6@UVXkpaHk0AvKzRM09H5Ep`>g0MTLQ3OGE5kmw(ts6+BM1v^EqLLuc-kxpX z)e3JzA&%TQ|oqJKbyL7{R5yg~$izXRAPuxvCaARtZ#jX;2H0-XW^X;OzEWI^K; zU|EpekhM4PRV+pf3=Ghda8#KVh$PfnV zV?*Kqe$oag4S_6WWH10xAbo5Mp_5r6CbNJ-0kr!B#s{%)F@i>d!ol(&HfWa!Odgc* zAdWKtQ6LAhF@#KJ37E_Ra_AlKu^A9PEF`en9z2;P3}QQI?uU&5!UtV-0I?0i$7@8; zWR@t15ul-THU5q+)hS@Xb=V3CI?zx1wW%F5VXY}6mCdG&oAg9@JOWuNXQJFS_427 zXnhUn%nuL^Iw6;lAreG^2Emauf!qXAfwYzkG;9wQLfpXv&l8{UMB;(I*<|EcV)cB2wJNFst6evZ!m%+7}!9g!XS;HbuzHyHsFhGAnRqmF)~68 z_zpGzV%QI`0T9D}f!Pe8Ww8t(A48YQSTlmg;EWx9Y8_B3%c71Eb9oCg|BaM0&_uG2`uXjR_qS#iZi=_xO|`ibg--^ zmkD09e&XK2t+m;#`Ok8Cf`*U zHyq5B1&us`6#Ia=pe1i$XGDOx^I@_O#rn|ECFWpIoPoyM7$6Q50ImK3t*-(V^UQYy zBUl(1K-<$8z!D%qP<6n3U+@r$1V|86%rZY0)j)y@QBn>JFK{p07 z>obaegDH6oR{}B{R9AyaN9J%wK~6TP8^N}ML_vila|olL3`~ZB4Ro^#$d!x@jI95e z85qRC8B+in>Wotu*`=XuCTlQ*m4gA~RnR45pxex}7$KvZAWwnJ0bx)v@598v04m54 zvvnXDGW(S@TTuhb-T(jp|If_8Si{G|%K$pT4dhM`24#92>uDmUg4fe51hwY}>3SM) zry7*eP|qk4=3*9~$7;^z#R^$avjnoB<{3j18}qFCPoVWK9iS^Me$?rKZtrLStu$fg z2Cty_S_eA5qni=5U;=V02Opa@=r#!d(r(kd@V! z6}*Uq6||^>pSe_zRnUixc_+wCY|IxJ^+2~+Y^ZBuWd(Dr1TDy6(*l{gi+L`S7xUv<4jWcEHs%dX98bW0Kg0Nmg_%{3d2^i?B=mTh zi@aFnjKGp-!Cq%&zETVFIw$j5@EIqp%$I9Hia}?bu!7DwVU=Kh%K(abt~560owa(* z$C=WYch)vB9|v2{%*CO=#=O239GswaIBBqTIN#yxaLicQnJd6)Xgy>V&Lhx~Ci5Vx zaGo;hvC6W65|umXI2?9&Hs*Pd+eknb2r}z}*5QCIV3}I$1zHRAo(Xh640u6KgcsOF zpcPMlnXoU&VZc1&#F~+T;VZOa1g&`h@q3}Q8;lRi{}9X$o*PD9lLJx@>fIsB!&c_P z^n>Q9k>yW8IN&uoApPL;tH5Fq^FebrU@ilMkGS6f!UxS;Bg=#4uaWt%Rsqa@Uo`)L z&N)C<51P+L=7TmBAoG#W00FtT9?iUFG=4W4A9OAPvU#B1D>8o;ntIrEWH9%G&P_m8 z54xWKnGc!|N9My;{lfG=L^B_Bo&vJ^_h|BEBl>VMFhnzInAz$9p13e@5ObD(Q%rZF%uaJexsfOcSUxiT<-jz|UZL29%>YY#wk z?G8BB+Bl=FwXuV)wXvgotqo}R6=&9sCRopyLUV*V=%#W-*B{Fo5n$ z0HXgwil%?)_1jRXS&XgwilO${?>a1J!*45ICz zccR!aFo4!1fzDU~t&IY$!2qq91FgjYjV6Hjpm7w?ogAS1hd_MLc}Ji#RY285q(*v?c=sXnX-A58BcLT1(Ri61Qhy0NoP=x~l}Vy$K`_+S~)W%LH`J z5Qx7Rq)wHAVI7FJXJ7zzznGL57(na#K=KDc;!F$-pbdc_K4?cE=&qF8AaQ#J2GC84 zptU`qOI$(np!Iy9^Dlow<^O_c9R>!_$+94M9?%*TT?Phm5N*%EAPu7R7#Kij_<`g> z>+?WsaX{0rdnx{4|hyGX{o25N*%E z09x+`T3Z7;Fc%~b%4?uIQTn0slR>m41H(KJZO_242t->kFo1SHfYfgU@vRvcKtop` zK4`lqXsr`yI|PV-9wg7qz;Fvh+b}S^1krX344^(BlN|%Y7ZBf`0o-W@@xg0v>=+n$ zL2Fe&{s+-^3=Hy6S`9?oGccHdXgdZ5&^Z|(eW2SPLH2>pwq$Z-U;wRQ2l11j>e8Sz z==4O8IB4SzNL>p^+@67<7fOTI-qo z28gy}V7LRNpMYq428PcdT9$!<6STI*gn>a6L>n_O$be`g=vo^m=vo^)NO=IV7j|k( zVp393Y8itb=zJ9hz2yAd+|;}h20h0hU%kYVlA_F{(vnp8=`jOymJHf7l3p?c`eGZ% zOdc_3%AlD=aOn+n){4BfH=r{#kZXu3atz>mD?w#32!qOX5Dgj&0I{J11UT2;fX-Jz zR|l#WKxTk2xJL|X)iE-l+^Ur$1&M#q8W50sKq6_|OTaWxnlWY07r*WOIWVjjpG(7+dn z2AKuI=Rpf!Kny5`$$_Snkk{UT)Dg4xMned7%?~IYfQ$ys6e7oOjT~`nZxVzU7-qr} z3sSs+CLxi{>%p=126WyWylKV2!0<BMn~$$o;H|A+t9Om3Xh_1$FM*d82z?aJ=| zfswnxjdQxZ8-v2#9}x?7b8L7$ou6y6=!H0^05^vHlYTN7Fq$zpO!~=a;M_3jCzC;Q z!=#_g223AWm<~69&Lnwzk>NproA?K2Mz)FU7uaTcItl$`gxv39{qv&e9H!}v_IG~- zOkhx8P_uGV1h2hedF{@q?Y8YT=p>sN;B#hXK+l<(0X}DD2Kbzr89$j7I6ks)z|NWB zoWc2;fkha8&Wr@gIWtyn3~HcrW-27Ny`I3&IDz5A;s&OfP2d}1MCWtORdYKFJtKwd zH3OrC3+Dv387vbWoR}vt=yFW5x?qv9)2%+^nj8FX7#{x*44|`SxY?&M?2r3l9KiSb zFcatN!z_%(%QAv8o@6NeX59!{hokJM{ubggaGUFN>mujOyFUaTu+Q^%<9fib{~G9g8E#7u39<`hCl}j{3mXl8 zuyBLc?{K>@?6>>Lq;33@$zSp#Bd5r3rd1n%GB_CiWRem3&9GbKH`5ux-%K4HnzPHzO=rDOh6)xqkgYJ%8r7D4vctt?!xTiF;*xBO&s*!Ght zVYL%T{LMwKxqIBi-IyOR>}OEi;}+@$T4}?1fpZ@C3>t6KpG@40W&*!i1ixQAAz0>? z?#5&UT4@9F8{cbgHlB}6?0r8N7>-=z-mv$@hkj5Q04iI^91kUKolQ|uYEEKFDs>K_ z$;dA%VaUuYF*J)WVJI{-jW1!qzLEvHx+OUyu?VEz0;JqLzJ#GDH8CZ=5Vmdwx&{Qi z_62Q)3#4g*>Uaixt5>oZGV_uV>sBB~x z@EqTgUs~dnlb@U&oLQ9$ibw{~q5(#R01yRPM2cKBfOmN?G6aLFc~CXN$Pfw|=7%T@ z1+6xL%<_W|r~r+cBTW~BOb6XD!pIN=qCol>86rRwL_2(q0!SgKI%i}E1W_QnpjLtk zTSkUZ5Czi5$Pf;qAlkvUcYv#ra1aGvJ0m@qTc zUSI$*AS-!7Kon?-nUMi}iVSEg1y~7)u>(AT9tK(y0NTR9$PfUcK!!6ign=lC9U&kJ zG?T^15C)<^ODGr_;y@Irm&C{rwu*^?VH0@%ISh0pK4@7U(wYpA(?A{pueSj)AnSml zKon?s5+g$ZhytzkVPuE`ZDR+`YBDkefHtXv`jdiF)%>F3!7b_Rp$_!K;Z@& zlR#Ps01^VN9${pF=Nym_XoP@~Aqqr+Ht{hs#DP2v+B?I@5Cx(j(H;kK7RXIVmmz^R zC_xsc2ZJb31c4Scz+wl)291w^&ctD2sFeWGpy&dLgUuV3K9o7801P28|F+98`OCRO^-1$M1UyJrgcV!U_{Kp7jA%7L_-!s z1%n2bK#Ql50uFR%G-z)DBSR2~0$(@FP^$oxpfym83{fBo zG$6#t06z8xqCEbKEN0-h zA2b61TJpol5CEb;cUU1s9=3He@Fg&;3=D{Cakx>Bo`1!)XK;VKS#y_)YSr=ECZIg%E$|mK2U?V6g_yIEe7#J8hKvVhPP9VsY@Z~Cu;N>hJt;{w&%nS@%psF0qwFUL~ zxWHH7fL2u4fn`BGQ?RT(SXLI=*<^MQ1L*~wMg*311lh<18Y%>Hoj_b}*b+}>FOXht z&_Fs^)*Iw_ZqOl3V6Gp?C~nZ!MKISDtQU0SGnnfF=7J7z26H_@uHtruIRnClZ9idl z2P>WqlZDs|x||fO7s5>dhcp8Nvl}RYxa(kCi0nxi*8>y*+?uczBoJ-}Dt96(7qs*O zY>_WmuRJ*R7#Nr#Tn|+42^219;Q<4)4=9{?LG=cx#0DL^!u*~OwDZN}6=P$5!|;iXc}hKKvYfet@e?bv5vzDBs}StI7$a68eO5ki1St+a+{Bxe zn+<%z1>^{nFOUOA<}vEAGJ}sm5n=<~OXJSUXT-|v#>V`hPLEX?bl?f-o|-gPPPV;l z%$Fb+)NF&S$v9P)23kn6lTi_r5#< z9en~?4#LOAyr@o(mB*iz&y86cbUjU(7b_ogr5Cd>9Q&^ z^LhEP@&~bsGMDJFaXAv8u8$Ujm((vJP@3%~dAQfi1O7 z%vYK8m{-?+0v-4Akf{lLl?;y;s~G6coCeTR9%<0B8#Z@V9?)_e(2|;kkfj)}nLe>G zPpwS@X?(}z1=c7GSEtC#19C%L8Y?%mydKE$T;8nw{;b>}-!n7Ed9gAwYwIzwVL31b z%lZt^$}(@z;0U;QVP^pGL34CqE(3%QVS`8rA9;NSNIhsJK1dd{9stB&3E_Z7>cQs0 z)=9$Tx1-5}<`E!55c84OZ-C4L&50t*gYL0F=7Wy)Lgs_!N|E`nTi;;z|Ak1x-N%aN zf6zPxL0K=yZbhA=RI?#uu+RWQy7 zF+*FoUz=w&Cfgv3v z&db06%Cn%eLrOt>e&~7yVFm`!U@2&Q0{Bc2AqED}o+;3}2GG4xpff~3U1HGuIOynK z5Di-W4LUpII>;O&28P=pT8x1KlqW%LchHCmXkEiskhl>811K+o);)mQ{2+PIg{Po9 zWQ0NU_(lv2;via)0bFi?b_mPVrp!E@;Gz;SQgVZT8Fw6qcMhpy~ ztA#=H@t`yZl3xoFS7BfPb!I{QJs`d+0|RK4If#E6#8+crxCWw)7#Ki1eL(9YoJaz7YchJBZd|U=RY)Mhpy~K{h6B1_nhaUll~_Fff2l zJq77E0r7Pi80LyQ<0 zKwFkT@}O}&5DmU##t3@Hj3M-n8AIs01=u{kDP$fOq#m5^3>g@P$~-k)kpANPS7 zs9G_m?9rq_1NP)i*MraVK`sFwNMWCECU(9aGDHd~yFld|XcQ6D<_EDs7~0tbmv!K- zGDwhtfnkFeTOgu1NhisP&gk1)lndWpjbhKfnfqOB%OfjSCGA+ zAka55H!y`vz=KKne7%{1f&o|rLK+$vn3BqpqIo9HI%#`566YgcYY1-3~u+&Cw!_{hl4pkU|*Ik$rC zwL6!Go0eN3c#fUxHR_2L46nU8DfO}BmA4;o%v5D8*w+`-weCwZUW7dzcKKC_0H&|u)7 z0OE7b*8CyN!1>yl0dxw5!Vh5uhS$yvjGy@#6@CZ{fY=PLojJK?u+0X|lygnso>BiL zcRk|+P-rsFIOittftk|_dN&L7UKS4jSApEjuNipQVW&_`VA#L=BLlz01<=|E(44n| zg7Hs<0MXw}N$js1SeaipurV5J{mB#nnlo>975mMq_U2-OTPWzx7BvYsTj+c_&n$-h zrazgy4Sq67Ga3p0W=Z>g@q;kvYziiG$b30J!@3^~44gCgUOVs|y-3${DPYxFT4Het zWYQeGiH4GsDTtmmCv$cj*{KZp=Ew_zlZ!x;;S3;#Ap`Q1Idn=KJR4pBni_{rgO?;0 zIOmlxBqk>tfCxhnVFV(K87d4JDvTH^4H+tp7%GezFeb!7MHeGO0EhzB8c4g8LFE`o z7&RT`}go5_agEsJiW|yIdQZq7yf)2q0E&NBC^Z;oGU9G{$5Coz?1G5MnoC z%qS2WbmHq1@T_12hypG6W@L!gVPXK^yNMK}pr`{Gz{p?#qCmTV7#U(f6sU8`$Pfae zKqfOX#DKyL;=mYC+=4F1VPr4>Q4sUPK$Hr25;h1#fvjU>2m_sO0NQhjv}ys(R?vON zj118r3beJ9ks$;`L2Qji*b3^NgM%MUJ0vLMKon$ZJOo5Rw8tT|!{ZZ8J49h1NFivR z5owMQlmkJbg0u(#Bm_DlgpnZvM126qVgQH&9SDb{5OnqlL@y|#fSnBz0?pquG6aDr z(1;l$LpX?nI03E@G;RPHBMAm;WME*xA_Pj&pphG-6o^F#zbo;(12irHz0V0m@qiN) z+?Cj7U?DT6h`Co*1_l=RtSmPJ1FH%HGoKwdH#Y+V8~Q{nJMu&<2XqD%JP}L#8CY%x z1_4$E(5x(M=Jh!EI2us!gGOPn&Afs#C}`AyfeBPhF@qL$fRrc;B%|aU|CR60y2@=1uP3HqrqHP z(2yAyeD>50#N~$Hr{M$U!bT{W{XlxTK^F*v_4BS^Lohq z=fyfbR(Uq&wTxcixyp-myO`HA&SSn<$DzQyp0No$Y1zcaybm%d3EDu-F@eoX&r44a zbe#bo8}o-+FIHjZ3do%03?@A`=#*t+ogQFvoSA(>`K4FsK+b-QqRf! zozaVpd1(#QsHcpOSx$deR_0(Ykflv*%)c2qp0I*vEVWT*ELnLxd>|8-`m6%rc|k2! zDP}=EKOZ*cceS8tOXf}{Jyt$LW**QyWQiB6ln;2LIyZQRl9kUFJhKU!&O|VMSecpU z)O)cpU#x3lUeD;oe6cPKG+Q}`$%~blnX3sjr>e)ij46%zR&5jWGA1uj0C9a{W4-{H zeB8p62A+I`&05y63K)Y0SlL`zd5l?ET|u*!7a+5i`#_gH9D-;(1fR8ZW92boWp!g! z2HoGm%p9f1%Ezn&@f> z29XeX&=?Mg2bu>2sRympK;|RQQ-b8dhm?R7K=dQeQ-b6VgXKU3L>^SYfOs(TVW;81 z_|GAd;CV-oe&l&d5dSlpJZP>2A_OrXQLsVypq3=Eyew=$jsYUCjK&A;1w~d5no~jM zTcW9VLgRy$^dYMUEs8H1k30Vvyxi(c}^L1ws6We0K#X z{6M`7Wc{^h`jO`?LF(Jlfnh#~=4D_2UEBt0 zae~$YgJ{t5TP7js9RxZI44}LR+D8ql=$UjF7(f*|Xr2;0@2CTvcNB$;$AjcS?R(JO z1>ku{9q7EH3CBY56X2RiR4%fJAhca&pb$OO&v=`b*W=N;u47(i(gWDa=VQGtO0l=eV;@VuiU z0|O{+f%xEgMga;v z13cfT&A?y|64zm10G(e2688l0wHX)!K(r161L)Kw(A@{1K?RU`pw<2$K6rjnhk>CN zq)wZG0n`=->7NVY>o72^2GQCK4C|rvHV~}?-QTMZnePCp2d%~g(L-%s5Umx2K0BCL zlpCL%PjH7Xwn0;z6NboEg3qQUbJ~yrblDqniRK~Bz<{V5AoC-ja)sD=L(q9EprRGr zPh?;K?*|5zV<0m?7}`H!0IkD8E-5oaAn5=!KL&CSNFAtT1)bJ~Ja4#!3H!VusLzLN zUV{ik9mqUTuM=h-sO$u}58T6GU|;|paSGzY7M62a*F}^m)S* zydYB$7^DWoL!UPUsY4$9g{ecIH&oz5wHM@Hka?ih)X3ptfHcnxs!>7eK6~7VO~Qcc+Too&YgbV0AedbA^6ZIMP zGw8ETw7PKn2SdT_A1nd)+!&PoKQM5DW&mNka#^Qwy*|tk^~2Z!v@e&@cv^--#-$9^ z-z*2!ely6Z|7O{!`kO)e=qq-{W3O1*McovCi!`eL7LZW?Ei&=YD>ioZ-vW{xGtAv) zINiEf>UQ@B&jVJ_Jfk?*1MoTd+~A$Lusyk)ylyNrPC$3%axCC>gYC%$%{7YrW}1m_ zPwq@PGB%aJ5@Og8!=*2CN@BxRK@9W*Q{0&)_g)v;@sA zvQMc0Qof$)0muZQd61pBE*BWkcH)9};l5_%<9^M^#4%xu+ivhaT>Ffv4gDA3FjBSR>N0v*T1$Pjpmfq?tkpuP+vLma3p16m%* z$Pfn#hy<{g;P=jhw1YOeBJH024(gC@Pk--2&fzAqNWQYb)GT<(H zAcz8)#>fy2ax-YbC^Qv8+-CryKyGAY2n3}NNP2)D9FAr_=sYw=h6oS^+Qr1k5D20m z=0||chqx3Ti)h**zKa1-pjGUQ41pjDqCEzo9lpO4O*?2Jk&z)1M1c+xV`K;fQ4sBs z2<`B|0kv{Lp@KC14iW-&z8M+9K@{j{UPgv65Cs}OLQ)8tsDt094kX3E{V&ixF~~5mKRoMF_t;K$D*;kYoU&K)yus;WkFd zdPF1}un2*A_BX(0fYx$@lP?w_y3SaFcZ0I3^MLl4a$(y-%8j~(lm~SSDKB&a6ugC$ z542Sjv4xZ$q!ct+3Enjd-a^XFz#s@x1m=J)DF+!2Qi6WcI&@EoegzlWCS0r4oVKp zPM|~ExIsM>H*==eRbEM)okHeW?8WZ&ab3rRcz_I~gt}nFL z#T*FM3#vlEvOyq6@_@#Sz}#Rk_c}~5L{>~B=AJ+z0<4Au+o+A@P(#0Q%F1XUrRB98eYzddXw z6D$D|1Qln@SNN+@BtU|o!io6~|8|&!0LUn?Z{G3Wg$aU<0hL*xVu<-JKObyD6f6M} z1QkZi|M(SQ5`s$^AR{Kss*FMftPBjh85kJ&V_6}`O)?0Bq^~eSHY+fzFbYkBDQSi& zVPFbkW?&G3^!OPeISO~L4_kl2|Mgv`N0xG0H+Z{k+5KLx+pH`byL1W#x=2k&P z0*<*=k89xO7-)q8;~<$^%`1yX?lE9YtDazBWM$`K7HeW-UReK$m7k6IAA=VwvoEVC zb18V+YF9mI4=HmaqZg~NA*%p*pQ<+KL}&qh@bTCJY~FBMm`#tB54;nz3Z%)4`9Ea0 zXdh^n6?C$=urJgE@R`!g?$F6THa*Z5RaRzy=xnV#Gk+5+vkx2d?z&yfM;SR3K(md) z91-9>q)kj|;G@93m~Sz2L_jx>{;LH|tTHnKG3`?=w$E}b$ZM<81lSp>wTXto+Q{daT^cp|x4fN;R`q#*U6r6v#| zi20`>9JoAabsR(pA`faNBJ)A({E+#e1z*T~(BeE~KJvUP$bRJgq98t~m_=4E1g+y> z{sSF~f-Dbep(FD_N9-W;ZP4_C8nejq$n&fq`&Xl>M?P;HBp;6^51NZYHZKoN9(f)W zq#xA3LsnmnrXF;l3bH(C=`AuJ)|!BY2lD<;kom~-^dLUy_!DIPusc~``a#FDAj^a1 z#*q0d(A)>Q=Nl%E2z!tSv{3+Jf@*&n%+rGAEI`fy)hD2NS;Ssu$Q~9&kR;T8(3o%? zXnxilGB3(y#=tNG$_FXY(udB|8bTVe81u9ykii)yHU%F0<#q6RSwRMdtDv!PeFg^5+6Rz3Kzp@8^R%G5??A0>(9v3;{i5J=tPL0#euLDD zF))A{6(D&~GX}I@6g0mL;!A?&DJ2*fK;0)0AC$L1`!zue_CS2l-fGZ(PSAW5i0=kc zFT=nP2%-%b7(jUgw7(Rzwg4ob0uq;EV8{p21`G_Kv=5r+1*K__JZOyo=zMI@+&_p9 zI$IyK{}gm27KjfzNCLoyYO$G*K z5N*J~0J>HPbUrp{B{E1Jbe27+YvTx&2hY>$K<8%-7#Ko8;?fKZ@gUlOfdO>!5NJOr zX#Nef9-tN^uFt>#Izt{5f1n%mK<0w)kk@Bm0Nqpv5(nQUZvdUI)n{PX4AloZ0}Z79 z1c-0MzyLnK+5mcYygu~qczp&2@P1GO=zdUr=zdUr1_nlE2JoU&eh>}X4-BFW7#I|w zv>u4oXJ7ywSp#y16^L)Zz~Bs}LBmdI1W0n|Q z9y9|@<^(ZljVN-->LAI$0Lq`BG7N-aMIN#9!=UpRKzfkphe72j$Se?s_Q${nTp-W) z-4KQJc0lu#AoqaOfqK!PJ?V@L3xJH(ICAb{Du!iA}~x2RHq^DD+Q^84{Soi8Ket+e%J+VKPxPLL1X{O z;i3V$KY;-fF8Jn$Yxp7O?}O|DVVL{S=Z7sM5$Odq8UwNyl+HklkfCE2AngnhLJSNI z(0!$#dK#n-)E3Y;GB<d={D(5x|NzbF^a>*FjjKgHTHn=HX+IKMFPfA!Lk!<5kuHYdzBA2MV7%CI53+QZSk{78RFx=B1=oFu-QHjX<;81>h5=D;TmFpgU=apXG)+ z5;EBhn$l)u2mm!7L5I&GP0fIcZqUX}MutET1uE2$W}HB>kSS7>$!;rfH5Ck^KnJ!m zpEW(w*x=b(`f(2YQh456S75M&Qvs1y?e z1L$~KMut$()mD(X$57A;PEhXv$;+Tw2k15BC%`>DQ16YAAsj@322ntBrXU(LEy@g< z@CKO-TJecA$ps1+(3B?Fn;;Ghg8~qI@G^)2*(4RGK7JaT|TfGEg%gE5+*RiAS$oJ;=I~j2$W`W`qYprN5PFq4=&U&~7jl(3Xzd7? z3%SZX3)HLzjdDY-G6xNWf@L9BnS*K(Fc)%nIp{h?Fc)%nIqcLzW;ak@oey?_E3-HF zc5={}b6~~3U|G-+b6~C)ShfJ#)n)bpbDLpYKk(hS?86- z`@rXcmK)4v z;yA%7&_|!T76OF#mX1JD&*dE~^}~0O%5M&L&n~<{~{-IpeD! z$1+2%3y5_<3!dE8X-XDgYNQ0=7aX8BJ)9W zp~!qtw-%WXT4s;TN4^gn6^+9(HsLOg(5$6SBpN^&g9cwf``AG@K{4?#Fo0H` zGVwBix1)g0&juaT1={Zpx`GOHE;i_HEzr5xpf$3feeIyTL_q5yrh?Wr2r)2#Hkg3c zKY-RefzG`KZI=P9M*!~`B=^2=Yv_I7)@b*A+b}SI&UgT=j{ucPOg0P*p!NBn^$egh z=0SXv`@U@$7(ktE(E11Pecv`{_kG(iFo4P)(0=ho(7FU0wEMno7#L9Q`?g_V0PT|n zt#1I8At3ue$IpS*M}QU_gZSY4zLlZ(ecLcFfR2NM-}h~UcHg%R1H(Izz1j>6pfUoa zALYJp8_4h$Xx)N1XuW|A+I`vG!S{VzGcbVf`?f*c_iYW5w_#xL1ku(E44`G$OxDo*zHJy7!1sMyGcbVf`?h9a z0N?j*!@vN(@7s=np#`MR272GO4Fd!CzHe*jec#p$49lVN;QPL97#P6!eOp8C`?h9a z0N?j*1HJFt8hYQiH3I|qzHb}Eec#}99QKg;e31JpMVa(u2f7YCz_I)PZQwS~O(yK1d+u>p=qmAax*p zpt=C$KG0}8NFOMVBD)VH2g2y97^GpIg18B!9n^&bV=#w-fgzq7`?>4r>pPlw z7#LVVj)H0g*$HBThV7C4@k0WVpFrUPnz8|D0r>;6Q4*vBg4+ck^&W(Wh&S~09oq#E zav-%ZdqL)d*syQ`owp6W!UCiW>_?D1XjBM9g9RBF7(Rd&H^4YZ;R0HcfV{o~qz*o6 zj-(EKeTN6y{o)}1f{aIB-*G_((uM%J8{hhl20;b}aadwOvKM`Q#{(HedO=>_0b1h; zZ&EQZFw78PU;y1m2MPnwIXNKrfr3Ea$lTHxva|zC5?bG3W?^ChR!GD>-wQxz$0M!p z5Mf|s(0%#AkwKlM!vB@9+=Z8n3Cmv#%P@c7XFmLqfn(ZRhOB9C8KWk=W#F3dmQiZL zTPCduZ<(zoyk+s)_mP30;X_tqs++jm#J3DpjHU_i*tyK!DP$$SW9L$O$6nR`mLbdZ zokCRdJ2ozrcWhY~-!e*p_~!4}vJ&1Yaw)!3tTK4l8U^CFzh#V4e#cs+@{Tp?;#(#z zvv=%S3hxxEKypg&6sy|bGG&>+V~tXLr%-kAEwdDet^AIy3S_S7JN77rcZyXYF{O73 zRqbz?!DfQYzxbAg3uFe&Y)o@mkj!NzU@j|?xoiZ?WkWKToq)OQNak`7FqZ?#TuuV! zaw3__MZjDxBy+h5n9Gf1E)M~7d63NIC15TulDT{Y%;kfdoAgeB>*8B}6tfvWIxr%o zizqMXJ#DAFW0NXCIWZ+QJ|)d4 zBtFg9h_aIoK+OUi1~UXR_dS7wF@txTY*5j6A$mI1BT1>M^OmI0;QU!YkOkRH%Z7SNP9SO&CP88mbS z)&rVN0j%YYc5&<5)P?X(2V>wslI3{cR6^?;5(03GKB zmH{z9@c`BX+9UwlfeV%aF+h<5)&n}W4b;^I%YYc57y|3*Vq##J1c|qHCJ+M@U0^++ zBii=CWIzni9Z+CBAO<$9x!L2M_`2^CQHf!LsJ z7chAc8??OwrXR!xg(OV=6cc2-1WX>ZB?1&gV9&!s1eEI@2f?yd?_Ai2EbWrvOo%aEj0cHPFFd0zx2W?;h z%Ya6cK(mQp(?HoDbf^Vb29*6l3wyvapzOa4mL@Bt?O%Ux&pd1g% z++aO0Phwk*f$bOqX3$9i;KK^QM-8yBGB9x=xU4297hAI-pGv?ES-ZgjIZ}WVe$G29 z0|S>ZBW%?NH!lM-pQkWr35W$Z0|O6S88-t1FXA|O@a1rj{sm~M7-X;#<`)PJO4;C4 z4Pro63^3ki1Z{?a$TQw?1O+yz*8vh>ybCHASQtUE&A@mMTwFlvItB*D`=B!-SwV## zSm{HMQdU?k#P|rLn6(=u1?uX&1S{Tx$^{KhfN4Hc0Oa&_n|3 zA5b?3&INaW8J~exF!N?I zg2h=_*g<V`*h=VPg;luhao8`M@z(jk6sJI#Y`Q(pH7dXX9+-L7JwF45VGo44uA)PJV+E z1!Ve%`932ft11^WXBw*lb5$BEa}XQz)H*Nb*Nk4Q+-%HTUf#?VUf$l`-mGlQyk2a~ zjde||d~D2ZOkS)a%#~iOLZDer2{zDVt&guSs~G6ETtRPNRsqn>xfNc%tipk;f7Ike9)d_WIkxWAu^vAS|z~T2WrJ5%Y*hDBlAJ)kdgVI+6bACI0qf#KhT+L$nuE! ze~3Kd+;a#Yw5S|eJ*Y*7%tzec3{j8RzYpOf_U}XZpoSc>e$d<=G9Pp%HH;5h(*|LK zNN{-!Vt_H`{4n_ZBCs5Yz`RcxG(!NAfnd-%=hr}$JOcv*sGb7N2ZLm^lt3ZRzyO*T z1a+D*_Pwj2&Fd;b=XI4B7}P=Yu1e5*k(C%2K&>Lsd@X1P254V4Xrl#a-WPm7vN8jM zFG#&01NewQ(0SvjAigpKLneq8W?%r_5dhLx0pg26?@3l>U;v#A1lp$#YF>lnL7ffI z{O&@KI%Nh1(9t@ed0tT32FZh3SfKf2&{@hLKIrZM(0nl{ZG-rrt|pTd1H)aY{)Zr1 znt=hd)q+WefdRZxqAbDm622h#>@xk-J z3JeUOGdw`^)Sxr>LG#_9z9+~%ErgxTFZi%uP(r%uCCMOlv`mg7EY5OH%dR{X%t%OA?c_ zk>ztT^HP!dX+?>-sW9_$@{J>Un_70%7F2C79P&FhkM~$W9Ojxe0_pt9(H;NDPE6SQ!|u zf+pKQ9BAGLF+plT7{mr)UT(-*4-gxKVRAl5dO+fPxfvK>>!3k=m^#qN0J1+mh%hjK z(lp2)AaR&KEYZyCAoA?%P8?@ngXXVbZUDLGAh_cIVnHxW4t?$mqzvAPJI$aKU5P zAZ7*w0|T;o3&bFEUm)|4=h8r9W#Eo0ND~7CLk4JXGk9X9e9q&A_0+APSlL@^9Rr`FBug$CJ4Aqc+2pbb;5+VOt(2^OnAf9%`$^+B7+9Qhtn-gv)Jb_ z>=&GL_N9z_;2R0<>2Ddh&%P95jCv!mJIXB>e6lr@8@F5F8#!*!nb&M?{BD77B)LIy zXJ1MQfW#p3vfS=(WV1p11~*=}z&Fy|MsC(_XJ1M%g2X^-9NaYBTHZ3;2Jsu*_$CIv zk%F2d23ErY)+YniCju4&=~IB7u-)h;JLB#Tj|HGJy7}EEyk+7JaEo*cc_R?5<)-Y$ zKUH7~$Yj3RPGDCzxbeB&eJLdXk^_l*xmmlpy^-zang-%Y%#obi=*I8n0Cu-g#f#dcc*EW+w0JA>cN(`~|A4sHifcxm%ap5Vqc z31otnn>AQXCpfg2-1sJd%z?NU8zu(|Ee@2>0-5UV#y1P(60TVwpMcDR=z_Tn}<6~j^sR0j0CxPyD30(3LEFv?YcSS`s+ZRx>zlK}vZ;w0z}ZsGNt@ijdkBmKRZLMTi`zoR@)z z7vC&_34CrKQz7Lf=PXc-8sTQ?2B~FWbtx#kI^8C`mE*qqQiu`OegOGiU>3w&P%8&i z6T{jLpz_20jU2Rf11k3=7(uNYkRC{_DFWw1^olXU^upAE+6Xc;Jl$mGfNHviw{ou? zz`hrpB|E>t#PN+BcY`^jQT-Ro)eH~V=Wxu>FyNTLJcB_a?84n2EDa3%K`k@c>7X`R z*c*XrSla{CK7zH)KrR8bsX%hxZ{)ybYa_Hx1+o+5T9A4VXq_Q5p%dJe1F46}1-_Am zw(}ruID|e>+X&o#d+qr~mfHaAcG>w79~n7VK60>t+z&d7W%Wh2nXEI|=Qq4%cnxYt zf$s7UV5tAHZIxs8R55PfZF|J&Ne{C=y8tY<6cihl<0svjqqg`pxy_lkHg3i2%z6xH~=;nzJdjGunNehj0`~_3N%#2#8ArvqCsN_ zpyMh)G{_>5IFe}~kAs~Dk_Sy|GBN~$DA3i0pc6`jgx@^WEq$P@~s*; zOegd)P2*x<*ahQ&H8MbUk$|pdXJ(kt%d`Wbx0eZ|*9fA#m#GP%7j#b^L^tUE3((RA zX3$a>&`x5|HefIZbk;;0Xj&K~16t1E2boWAU;^EMwgtw?V1_K;2kW`S%)synvZkVe zX&MUy!z%D(;DiPy23GJz;S6A9M_3scZm@!q$%FKKxKM37#QZjI3An~3=!ZYGogX$2PXpq7sSV)!&o4m1O-k7L`5$Xhye;< zaNvRh78Isn4n#2n1Gx(TOi*V0S&?V_*&s9i?2s9M4)|0)D+2>3V#c2fb;h3?t_(E& zk2K@I9~>EPp7HN;2AKgGZvh#@*bO=*7k(2vV-J`M+KmL3 z?cD%6oV^mn2IbNTAXygBdUucr<3unQbi4?dI|Hm3HY>mg;qC_2HXyx|z=}clMuHVj z26I8%Z@}E?pu>4tOu;T^U|T=)`L z`xtRg#JhSBTA@ zmDiP3sD)LS!xkbWz_x^ym$_;ltAGib_Fb$n-Pc)#ZnFw&vhsrW#v6l-5a?p%Wv~!wDN-2l~u%*mE99$svc-5(K6;Vq!xnN!AET&)?q;Sh;Scd_TN36qu z@Db}UAbi9+3>2|?q7=E9N9 zPehXkE%-&2M?RMU6uzLd>2m1yRHF3dxguSb&yEdxiE2c0|!Rr4S|XazEe4?4FW#0P~Dh!0vN58}^bWMBaCL1$EeXwaHu5Dhw`0wfPQ z6Ar`&t&RurL910kH0V4;kT~e_JrJ$J#J~U&2c6vj;)4#g0`Wonz(IV_;%pEfban!W zKLx6O1BljOU;yno1<9X*@*hCyA5a=})dWZ$w6GbZUxpcCpB9t`oqPon_X6=XAe$RN z>MNjp(0S1y{sbt04v1D~U;yp22I)Hl<%8DIg80v%e9#$OAU+=pB%IWsv>u37XJBvw z(Haa4ULabXfgu7)XMku828IeK-2kH185ov*0HQ(u1<|1Rh0+h8^a~KJ&cN^oL~AfGuz-5?>I@7*P+AE@ zYcMbvL1`-xto)`H5eE`cdLWaC#cLDi1lWm z@)fi`3v}KrXx&*lX#JEj14A~57KW6oAbIc!uwo1htsrq_1_sc28qm5k(7H^JJm|g{ z(7Ln5Q2FH`T9SbQw9W`558CtsTIY2TB(BWBa1=!IGcbVG4T0oAcPD|?oq@&*Kzz_% zdM0TG22kA%T6YGz3kh_;3TPMubgl?LXdRe5^xP2<1_o6SUzveH6GSsJFqnX7Wd;UN z-3+=n1yp{6)}4XwBm%8F1FdBQxd&7?g4VxvgVb{~Fn~7GfQBhScm06QSpn@Y0iCWiMQU@{*c6I`2Bp9Uc4;KRiY%~eP2e}=DLHQ0ugTz3%mxqC&6=o^KO(0?L zx+-LKLIMm7ptYi4NhEdX>)SR9FfhP&p@7uF%m9u3Acsqe0%WZw$RD6VFql8k*SD1k zA>s7z;?C+Xnib59Y`+-uLs>H4PrnsOb&g08%Q0f%!4WehX;ra zD$ihgKzt5i1_n@>2x5aU$R8jYRQ@6R7c_AIYL|li3!*{lK=B3|0!212MVNu19~7}5 zLy*E5)b~L)Peuum4nSUlnFlT(p?X2o7YPQ21=!cOnVN!Ewm}F(Q!_(L3sX}gGX(|6 zogNU<(7?dV%uGSS*w6?fK*ZS&pt_a;>1+qk`nC;Qn-UlcSlu`oCER4dGmSY38}@=+ z2#H@h&l_guWtPOJflDt6u2jIj?HkwPTbP~nnpXq`E+~mHG6aAq(1aG!LGU11P{u>s zN)Ad(NLQePRDm=zG6aJt(8V`MSKVWq)f*8_YUpfP_=5FezQ zc`qMiWhzK9Xv`lh1LlCn{FyF-6oPU(XpcAp0|z4;XiYu)OQ%n zmk)GO0MzB+Fm~b-=wobWYGrO=VF2x&U}jhe@+qOrV1TR6BSU2Ar$v zVcAkInE`V%9}5%sW;+H3=A#UZtbAO?tODAsh5@Y1Y|G9NTii_AwJ-va4J9^V4-LFZy2s|Q`00OKRKwLl{{5OD~Jxeo`F zwjpvLk{Oa;Kuj=Z1}{PYGrq#u5OxLzQ2PYb|FH$}g%}t>M>~T037~cm=p04R zlsu?k0GjCp@#8`2xEa9fBtU%7%sA-&LQuUA;@5)Y`4||$`*H*r80Lfc+zbqBKr|l% z1L*Q{ka|#Dg8CPraVb#00(2Mvs9*95q>dlbz69M<3Ce#U_kr%D1<|lp{7~56f|L`{ zyA-gFNp5Oxa!!#2q{{%>oI}K>7nrdSO?dkmaHS-5HnxL`eNaM#;x+6H42V5;koFBo zijuwtC|!fh0Ac7fGy@MK>Yj%sY=|}?sICK5bfBDtexD#Ht%AfsYCz_J)PZR9`vlh@ znFp#NLFz#I(EA#oH8Y4kgAo6M+O+6xWzg33B#=c=3{nGPf@ly1u|XJghbU-K5{M1L zFgcLBVQi3iI}-!LM-T&wVRGnw4bT`EsJ{hjdxM%hFn@sZGE5K12+-IiG9Si9?`u>t zWAAH#`U@~UAoDiD0vN;r)p}4G)Ve@EM-HS8q!%g;?`xp%rQu;=U;r)Uf~f=f1H?w( zOEZNXvX=(rUr^ZyQU{7R^u06|EDQ{=vl2k&z}$|$mu3k&B3*&nhcNTNdjmllp;&|! zvZo4U4yfn_sRP-sZ)9O<22|7*A|J7x_<*zUEoczeZ!La|@TL!LaZyB?uy=AJJ_LiC8xpEiZGDux~ z%c#X@n($7^D&d`?SK>RxsHAs_Qs(cJs|wyN;Yxg`WR>(zNvr)WW7YAu3|z_Y*u9e9 zDP*a8Ich8*b3x#V}OUdiv+vOwq3fzFzn_?BhX#J8-gir+2KDt)(1 zD(RiNm-#!Ts)Bb5xj=do-f?LqyyKKge8(A;^o|p5U(!1csl<0&TJ3LHtB${A0lCu( z{0D+*|L(~v08!LYxu4md^R4)-4ow(%$oR?a}~^7kUP!aDOMG{ zTf~*{j!P=x9j6w|y&!!>?-p<&+{;;Y{4EC#_i|NDe9KLyd%2_9-*Vw_FVC!rZ+Xdd zFK^ZHw>&u9%U3n=EkBBTA?L(l4dbf9cdb&OFjjiU6$J`orFR@%$?p`w;j8jaahB;j zc2F3vI{ubls{Jir7U&$gqIZiy>B7q59q8=6t}IB}Sj>euS8nG=27ZeRu5Pfj&Hj;t znZpn@g)6;N>;k3k@^{Ksitm)FKq)-=ow8TTJLM`+s!@5TFbkC0kH2NKl6NzIr&0w< z+ePn|OI5t%)B?Gy?41hNhIffk8{Q>loxI5MfMNfKcWzoA-nmL0d&|Ie>@A~K+gqlp zV{e(IKxfnmunD@=e=%6M_YE6lWijZWYG~O>X72~mZ@}5Fz_zxyxFoeGHJ^4z)}fhC z{D=SvC)Xj{LFEJN5*bpA5*bnqlNeHrlCT_Qmk2t~E{P#AIoS|GCW31SP#XsATszS9 z+l&l>D$J0RpV0;*Y{19G1lB%Zvy%?=U;z06CJ73I5TtX>CNVQGfII_} z2RoDja*{k~b{uR7hyijROcAJy2s$SYED2(O&M$&Vg4r;)flhe?o!SPI1hGLUvVnDi z7@$K1VUi#=$gN;WkVCs5OMu&$Knzfnu`x_&0v(zLVuR8KSS5%7^#WKD*$bfS3Bf0i zfo7V(<1(Og20`cIL5~t^X9C@G0XnM!eE1jWAb8N^JXjAG69WVEjIdTF&=foLSg>}c zeM}4t_aJ_3Ws-shF<1}C*)b4jw=?xY0~aiV>@3hZ`(XP(43KNUDnLiMfm{QY0Zlc5 zTmzN?9nuDJ4Oj+rA{)pxU>VTyYarKvWxg>nFbKgc2Qi?b*~$cRRvSd7l?lWEg&^#R zHV_*Wh+s273}|SA&!>Yq8`M+@0|O`)*cc`>g8~!g1W;)KTJr+SA)wL%v^E8t?m?vmXaNdL5>#4%PZa~5kqIg- zK&we$lAzK8evTrjv;ZBD2$KYzGYZOlU}Hh01E^GhNy6NMZP*vv@a|wa&W;%zxggi$ z8Yl)Ob8xR3#DEM7Ga4Z;Za1z4MJ0T3y9p>8!j7{u1+Cp-hK&(3nt^WPWc3GG2dYCX zKuTG2VO&d)Vph=T4oHO20j&5chz(K<;l6-zt-y+5$Nw-|gN=fX!ZF%kXJlYt1zmIs zQV-?Ug1y1O0Of*~?;vEslbnpUAbq4TSx+;A%wS+(v;%2n1+BdS2|&4fLH#_C>utcY z4xpg|IG2GPv;v9)bmS7}WKhQtRLgAx9fh|MaunVHP{3}69)$<;FY^}YQFtKVGH>PM zVBmorn1MJ74`dVPW0-k}qwwB?mfwRUd0?0FFb&?L@X*)C!{#zUVGBx#E_^b5jGas! z%`r_NE_@cOT})i8olHEe9ZY--jo_kuH7LB%$J7b5dx<<754jmh?IZHc zASdL_1Fd>*VqYG@F*qHAzczLsm zGgo>sbLn}qiUqKW`m)M1S9p1{iUoq$!pv1(o~$Z_G2wE?X1u3#;~?$}g|`hpe9`m%}#q1qw}I-*RBnb(UIrc;)=#EVs#ncvHs zRmc}^9mD{*ZE#nP9Q|Vcta{*}#}^2qzN{+lptxd{WiEgOBdf5hC#!%rtDG+));O6P z>%phXt*B398&v6*_Zih<5J6!l}3XD;^ghVxY1 zSe5-)Ra`-&Fmt(=H>+H>C#$T#C##;jCmVBHofpK|CeU$nAcKWL$1yf}`*^eRftET8 zKu@CkQVUL})0y;G8GV?zu&sV(U_hV$0o6Q((DDj28v){jwl#tBI*botgGe?8kUV1k z2f_!92ZCf_>Oteq$b7_D9z;E8?Fh0wsJ(#92VKXE%tx$mhUjNTb1x?vUl@%Kx+@FW zJj8l$hNbbb>uA9U9gGJhGGd7!=>OddW63>JXazhE|KHVvIm`Z;!> zIcAXcpn3*0Uj{N-OAX{x1_sdmS)jTJW1dV4ZJtaGI!~qsIXj6-4LV<@hIWpfIs*gB zIdp?;DV>}ED z;IV3T1_qRK?9>?;!1HOabL`X^7*Ni!Q)gfRU7pJ%!@vM)gn`We4>C`dfq@IO&QFek z0W=2+I@b=g9vrlO5PYARBIK%Y&^dFUV~|1m!1tLcL(jDXtt$oT7h_-muQOC~Kw2NG9jU;yTvhqzOF-PmO^AJWr^`z%WGS2{BtE=re_S#2tr+ zW)O+13nBBe$hj~>oPhyxE+=FT43wvco$~|Dy@B#0xLpoCKM#~QL1ut3w2jSh7Sz&1 zS~mz<%>tU+fw={y?j+i}!3BH2)Xpnjk8-%A2c`lv{4+8@`wC@7a2QveGF0Vk8f#Cro0|Uq(poKIrf1uCh zdGjIS0NFhBxjfK$a@f`lf(AKYZUE_T0WBy1F`yVGhd!4FQU}rtRR%A{L3KAw4@m9~ zALPCV5F3O+{s7US@($!L5F3O8#36HeApe5W5=b2=-q7dr6!@{P<3yj!OAtq-1LSk@ z!0W9+7DDj~A;?{SAUA6>K-RZH=JG6!EFqI~V3N>Wp0S|?(RV`WKs=6eF5ci-H;7zf zK-LLRdY28+%LlPpP2V{KP^thWyJ5PPkPC8(0{GNgNJ$E6FG5xefxM2upg9ccE-3`H zFbFIu+y+`wxRDQ>JwU^c%$t#y6mH=IZDxTqRlwsV1eX-fgf1y$VFPV( zL1!j|CS)KX#11|~8F>#XNFE{wA|djKJ|=|U2$BM02!9Wl4I&_XP`d)e1Fb;>nFne= zBlAIbvmo;keM*Ra(7qdFdE~pwLFOT^K?L!YK@|{K14KV)-65FEz|Mf^Pl7}s`4+?i zVQQ=~JO?reia~WB=pJ>Db3kbi)Mo-U2}bf7LvWu8G+8<{&d|n@Bhfn$s7no@yORhn zHN<8*{uPHlv`^FZAUkUEe)^!^HHCOsYGV2~k@z7e?1jox1YotHz*+Cy0;$lgV$abUARY>>N= ztYH96;DN>jKyn}qlSA*XJYZvBAZG31T<|gikVy~>GY`GL0-75nroVCx7QhhW;Qm1G zuYlAM(_b+la_!*(BG(?qut3IIpw5H4552!~0ms@yP%{XY7C~l!W}QHH0f52{b?u?0 zIrLy|qWUW)Mg~OpR{|hsrNjFxA`FZS4O=(-V0ggYG0!#h;)Wkg2fRDxxCUGl?wIH5 zdoj3Uj;q(jpbXCphYX(Ie18~}H@}|4uYJM))g0z%Cx-nK!FSs-NHH24zGL8Oddt8y z@hv0xwp$3Fk!#{xCawu@nWP|mCa#HZnYku_R!)5sU}X3xzyJ|v=3@FNz;ykh%m-#> zfeX=22y;RAhcbL*fvRKRV*1F!^!_4)0>gv93J#kZsJtJ`H?gEBv%;-3FS#T$Kd%_P z&?+~vBt9`E1$2`pWd}DFXQt<+rYL}~_jC;MjrVm7@rVx&b#`_Q4rYK0I0m_g`nvjs z#JdIs`3E7yeO&$ALp;z$gFT~M<9$7YeH}xbJrIih9Q{1~+z|X=Pe1oiA4eqPLR^DG z;@uoQeL{m=5m%39=9MsjZXN~SF$&rhhU9thc9i0h#FElt@BxsHpu0zo%#f6m?VMKvx}Ox}98h-B02ieJpwU6liTP-&wm{>Bj0}MYS@_B;kX{wA-XMf5 z_|`X=3`iJhgBi#uh!ETiklmmKQAn18Ry{*hfmVNji~?`=1YMHC$Phe%0W#l$v_1^v zXi(D?$qa0(7FZZPg}J${xUE5_iD@t}^U3fsFt8wYt+B$lqH!}Yu%WMU@D#QOjas2@ zV&gzPvk&zuKFFDU+>qWT4`OQ@FWT0&UeKgC*qgZep`d!734DqqV>zTZ2RgBXfuSB; z?$?3IS}<7yCab|@6$7XqWng1u1&tqpEMNj%{LR3?&H`>2fJ}ufe_)=(2)ZJa5k9lP zJQ>t9Ui^KSVl>x!|$O;+@XJ7!?%lL_vg@F~cuOFn5$sQac>`YvsTZlMeS0ORZWCV+| zuyBFw8GOBC^u94@Tp#2g5C+Af6CVd?-yH+!%pPWjsh}*0eSH9|&x_GZMk~D`8|a|- z+>w7G9#Y{CN|7wgu>EyY85vpmxtMwMSQXj4ShYZxhIzx73T)o2T5O5F7ppYr20SlTVK!G*Nn=)iHjs!9 zt00>ftE3kzKQ5kv7poXd1rONdQZH6XW+6RRR?xJvm@%s~n;xqm#9ReqRx!AFVAZZ{ z%V>Pd{7#J2tm|?_GTjU5qkw8^2l?+AoGytenEWDxf;m&5&d+C ze$e5V$nuCj3Pc{1XOZP$`4i?|(0mxOJm>~tWIpIVC}cip(Ihe-d9D`ZUgWu15Fa$J zhO8cWZXP6m0xdp3tLl)|Uq+L^fyTd!#s{tYg6T)h+k-?v*#bmEFy=T0yhH{oAm+|8 z&{{!|^`JNhjaz^;YAJ(4mVtpu6*9_+G1se(HrJ~Ro$FO*U;wRC0-f6fI+Pf+_YqVH zfc88(f#ycJ85lr)AkZ8o=mcU=xeMx}fzC*Y2FbHCFo4o3XigJUJ%HvgQSK~LW?%rV z?qm{VU;thE3Yr7$2k8@LU;r&N1@Y&B_%aOOox~tMC~bqzd;zr(KzvZe4?6n=v_}-g z2k)JfX8`X%2Ju1R4VtTc3NlB9fdRDD8Z<`=S`Pt|2kp~k0YkCF-22i6Bd8`7I9zbIbFt@f7^DwgMIWmG zon=PMScMBLVnBvL!vw?xwKb9VNrKc7GgdK&4Ros($OH%m`2)m4pIeRKA#QFJbaq-Z z%#%p&Lm#Wi;K4q(3f?pUasU*A&NQ00ZsNI z?UMwZ$szzBtFVTTRhWUtDvZHn6$Th%72@!*iixLs4pCN_?TAX@yaIW+DSoGF(fret# zc|3&`xEUBYSQ#J!p27?aoY1=uSV0^v=r{^O2S_~+_VF2B)bSZU)bSa9Sw=(QP__u} zNN(_T5{AMI41ypfAchb~Qjk%I5h5)NG6^Iu0vW&&MGWAGp$*`iCb;DUbO0@N2XN}a zQOCf**u}^SG9AQavIJEw46IDxUIXJ*Mn+I0nGw`FVPL$*2-_ok@Y-?0cs;#K@4Hx0-YqmRm{M^zzvdO{Km)#HR?OqD2TB?z(zrg{RL(-fJQ68 zNA5xgm&_P5K=mJZfCgj|vv~;<0|PIp!UuCLz+6zj0?f5M$;80G2OnIr204Qd)O!HS z+JL$6!6jQT7e2UT4;oG412rkZiXFgQ*p1fAjv#mNPXtMU2Bs1PK*Mo+|Dw!A< zL_j;b*t(!oBa9quq8yCOY~UHZ?VuoMWdk3}!~o{7v4OfN3=E(UV`OJzVPFOA7zG)J z7#0JW2On$&1p}xw0x1DukjFuV45(Cr7aq_83?_!$VjFymOh73Ud5sCEZwB%i2!k>a zcpR;TiJ<^IB0I>&(IAZ(Q1=8ej%G>9Fxswq@G#mHhBP+jHT7Pg?Kig>z{6-u>(f{m zL5IHIV)kNXX7lo5VP+L(V{WX~W0f;uVPs`yp3UsV9H++y+BBih29lOzWA3Q+0?W;0 z_G0DKXJKY#WxiJf8aZU&ME zjV&O{Bl?XH^`H_ISstVZnU6ef29iS_Hv{pJ$IU=|si#77=C1M$Pr{0~}B zj%jcfpMil%568HkA=jXgK zXs@B_zk_IL1_n^x0*$AE>Qg2i1_sbtG7t?~n*!Rip$;0S(`8@)@5zvZ?#a-Fj@zj+ zFo5@D=rS;X>Q&Hq9C-Xrmw_Pyqz|?yLzjU8w7vwiCk8YI&7{k~0NP#++Cu@_Uj*WV z@(5^r548RO#GeAv&&wV`}-5UtC=;0mI37#KXEbSQ|{ zWncguxd2k13*yT%Ff@Z`6$S>-SOjPf%Ulp&iGcyM2OcyYxd+5oWMDW9q7|TL%o#xU zj_5EjfX6LC9UOAje-$O>rKc9dhCGW)ieSv##N^Dpw0y|gsg%^D()4%;pVY&wp{~lw zPX>2Uk-DsUq>o~PdZeVT&DsKLQi5|Ygs2f<03TWk;UUJ*h#kiSt+fQ@ci3B+6 z-iMh7ZlyCYFq{B)`4DGIA7FrtOTkJcm^x5H7TipS8oNe1BzjCpzaUycqd35a_bqU4ix7wHpmDIPVD2I zpe{RdxTFX`#ydgr3mR{Pg$w9hQDpNHI2jl~cQt~{24R>S=nM*E^GXB|=>@b56lNZH z{sp8Fimz}nFc?7Bw}H;l1gQhruWxK%2pzygU7KZr{aiQ`BSYv?t^}@nS06Vd z86ftQgo{6T9vsPFgs#Q{iCswmt;MaUI|)$*8kGPG zfu?pqV2eAUn7Sz*2tiZAX zb3yS0R%{LCq7ITFR$ze#$v8mG1F&L8kUI#jz!GBP;b7!t1DCs?)f|lcY)C7x1lT|; z0iY|e1VKYhuoWJNp(fDWBVq+sKO-w_Lp~FH0CI3H#)95MjcXhU6sNFpB+!`!gKj-m zA-FOCH4kYqj>Ia<#{7W63%r<10yOZW$tnn0j-|+Ez$yV+q@@R1j)k44rpGGl1zK*! z@5Rca2O6P5S&k)Z%&N$y#|k#r6=p6gn=2c07i2K04aZ;-bj>IzfrBt;JPEYU2YnqD z=s+QmJg8Rklk0*iTk;jujeB|*Y5FdFw3B(7DnIM}7 z>hmJ=k;juj>XFBjKz!u!BoH5YJPE`{9!~=CK{*%Md{{1p`3KYoMwUk&e*x*IbRE_b zc#{qizH89fly&#gAL68BqE(=sXz{hV?Kq1Y*02+?~jZI^$%hEs_zfpmX->6W3{021P30e;Y z9>-BZTbHHEz<{zYOBK>i0jg`7prq{zSkUYDhcwk}H*a(@DRU6v|zU6vBsx-1#!_>Kqz15xX;q!}1MX%;?y zBMBYnP=}6ls6fX#KrJWeh{9kyOCLV60WQW#U7rPN43jpp0h&xh&J86rSf2&T6QFzo z!l3>lh(=$Z1seYZb){i$fvH1Zp9SiFg4BW5HG$NCFo+Ku4}gtpfacu(!pj3tpAv%6 z*Js@&a(&hoX2{qk$n78uGa7w;RsstH!yK3-xXBDs4H=t2?r-1WVqj<>;_Qn*tPpoY zOhK^G$1DD_Vjr&njX5AWhrtv!-~=@gCI@PXB9B*q)PeLumBIVt=x1L{AaZ?H43X=z zcCaxpfbQo*w->a!0y+G0h+Lm#!hyImOB4C*3u6Q9XJ6nLuP`zrelM8?c!Hh*K3*Zr zz{ud7;MBm_PyiZ^0*57;8}uQ2+o9)Qqpj+P@5!Rhi5Ad4a6HU3$RQOp*w&N>HZ#vT zKc_S|ub2T_&l0__2->RyI+2tM(NkoBtRq3}@?m9QU_&hGU`Jil!2w^b!p*?IiP$8> za2Y<%i>t2)Ds8|6mmmhDd&g+S$jHnH?q4%ngO1Z>W(4=Y8ErsII++>4U3NxW2qzen zv>ENdjYSsF`U_UrVh`retZW?2?^waf2dwx5D+7Y_5xVjNq>~x6@r46+XdIJ0IBT#o zv4D=mg0J;pp2-Ln2c0W4*iM81wTF=VSRg(qU_clYu%L3E8GIrb#u*U!@&K-bFhSKS zEFtS9gK{8AS59GGCI#E-V#mnJ!zIPar>)J(Xo}B!rLLHv!3m?ra6g!t^8RScv+~5J~V{IY>R?ekq7NXnqc&1i}a1 zv5Cz84B^1_gU;lD2tm|??rKHmgVx<6^97Oo1G^OsA`h$KVLWs`IKe|C!FdsMG6S5; z0Gc}m&4GZ72c;8uTU!Ve5)2HWIZ9Ak!f0!YqP4Y=?uAkZ%|XKMhY~`ZcLy4d0qu?O z1j#cqFo5PJKzkjML4025d3K;XH$i+(=v*ih^xh|428N9wac=0jY+R7J9MB#K@LVV# zv~4N^ZJP=)Fo5p!1kJ6&X3qw^ZHit6kT}-{%Wx!a8DId7bt0#V1U5*&0+tFuaSvjH zdSM_otVsi!Lj#G!FsN+^Vnf@S49Mz0X$K?+!r;=JfdO*j4AOaQp!f%=gSiD}9;j#r z7px%73=9ktKzAE5FfhR8O+e~E`q0~?E)0;ni=o;;r4R~+iN`TQ`e!gc$d4d4dRr58 zJ|Jj$8%Pd>Vd_B3*pS^fgB9X8ko!RHg1HZUFTiHdqB4*{Pz*BDT4euvutDa=K>h`l9w2ofe?wO1f^F!R4zc1r2C=J{Yt`9^5X3AFKvh{0`cK4_^JASDK5og&rb_ zx-uSWDC#7Rp((?lYHxzZ*&yW$DeX-|M0?W+xxHx&Dw>#~?M)L12h!d&1+^L((At|E zY-}9N%xvH!1Xj$-hSc6;S%PyUE2sz{v#&$5!^lAG zgMny!Lb3_@`>iwdG9U*7fJ2pm*_29cPkvB=1un-RZ96a%OhEYbZhL~(gn_MxwuMP; zdm`=;gt#Act}o0yy0k@wp>0uO?pKynl*qom+ADX4}aZI~3JP1-TY z+oT&vXp@5Go+0@I(gp$*2QUm1Pa?8S3OdghbWRvdAIKaK8@)}sgB8**0=20?Z8K0? z2}Gl}NkN+!U}k{Kfw9rsq@Z<;phXNIH6RR92g0CsC5Q%zf$(oog#=X2IFDn`bEmAW?i_{#sMQQ=*7pxcn-rW)sMjX7qEefb7gS(@3S4L#5X=M< zkTxB?+oYhwmBH3S-9xBN`W&JdK7RThjgP$6W3)}mzyLaP2DBC(G`>2-+oa$eMS7dm z*pSk3(&5x5MVuXtyG@!vWSjIJBLf39+oT7G949?U+!u;B;OgAG3zHhgw<_z={{-SJmxwyVPjzefL#-A)c4yc*pz zc7J5xXZWDg=#!EEfti6}I)l3Zhq}l(x3fQF9x%M_=1_2Bo3i^g8w1CMoeTGwrOa|T^Kx4Rb^ z=HLAx^8jMo*9H~^OSk!NySUh2_wiWE`oHR9UHy@frQGf850MQFulpD}-54jF`^dn+ zF@ZsWVSj{c!-pRYY_k}C^LS?4iX<5=H@tJQ5_8-7?ts_FcLKjS?{0Z_*lWW(7cCI)#{LcOoV7R}Y<%aUwdLI* zE07rDZIBp)=Dmws-#LI)F?`t9u;JZ7t1a)Gz$#?+A9NOc&CSSifkBaBKciuf(;tvp zDUfc44=WnZzGU`U_nLvn|3h6M=d3*+8TkbhxGpd%O1VvX%b>+**zeTzj!|pT8%C{f z7dd8f&0^RO5eJDjy=Bk>opJm1BJ0e%KO`2c`N+ua|AB$S&+Y6FjtLE}tQWan_i?ek z?qRcdz_6cl*0i?_QlPK|nV|TNNz3q^lh(2~j9OwB7?l`Qm|wGSvb|>EV>DthnfaDM zYu;N1tLaW4b;j?UwEEsMXuZ7%iVZavj#*rD81_$j%b+#uErS)K5z9vw7MQxOw+vcb zA6dBGUu1jTz{c^Bk%Q54=SAi@cYkn9V4QjPhrofmKSVY#8Zg>(yY#p$`N+t^`H_XQ z{)@)?t?wM980Le*MeZWsZ|;u_3Jgk-8yWUbf6KtN^_>G3NQU_$qY;aFm(!QaT}~YP z^FOdKaBtZA;zR#mrGQNk)^DYs&l!}yKL=ll1#V%0noVT3Zt=~lBdskdOD!r+9nNR| zB1V|tUPa$wLgMTM`c3ap8&GB@(u|EDNBb7#mxB)Qh0l9{x{;t+5Ac~jIr;eoAlWR2 zw4B6rhRi(BQ96*5bU?@Hgcvg9fJ8zJ88R7i6Dyn<3Ia0A@=Jp9%Uz1W2L^{2F%$#@ zg~S(t`7lY(Jcwv!9z$lHAwxFo_+YS^Mhp?j8Ibh`pi=@F83J}NF)%=Gdk3$10Vh1@ z?c$)LgyFK_MKB;)(9C5Pcr{!Yi0T6~LqQbiykAD}%sNON18BMqG)>CL5C@_#(@TePCx*!`2<3Q_ho51yRIGUzo5K&}3AZIZ$#DP2kn%ie&2mrYb za_Ud$Ay8HV>xo7(30eCEuq8OeKhoLn$Z#K++%@v=@kxAp|t}3EJ$+$PfZ*GkpWCVPL4$0MRgmVIBhMgc%Hq zN028N84N%aNGT&j0L%$UJDxzYpvx;686rUxXiYpLLm-F(S;53ms{-;k=!!c=hA`0m z))1q@V3r~!7LZXOO^gfypbOSP)8>o}fgtS=JrN*k3M7(16et=Q8G;Zd!5dQulMFxx zf-YWR23<-IVt@{4VFumc4Pt<{g@a{a{sx5+$QmYwS`C=NAU3i*$e$oF5DoGuntwqy zf^IYiDFM+S4=^$Wfhds4j0{mQgBck>sT^!H$X+c->d*kuK45Rc&uu}o3Sy9j{^CWlFetJFa?j9@l< zDo6s9^_d|2*)TptEj#=;DJUOykvS8TuLvqULHgO5K*v9^`@#5s81q4P!;bJ}`U~NM zuD%3W!So-(mxFeRVCK2Q`2QgClVE(PeRp7dR)~F|d+)*KF))GcGlR^rGcZB*_rds3 z`L$^L8)*FRFh0~jzMxS=kpH0eXT$iMOrXFA&15h@{Q_Y_^r3FN1D!v@4LWp%(*Wvx zM&zT3vb_*D8ByP3L}J6Sqd+u7RKTRB=do%jO2fwS67P~!ss`RMps zy5JS0;PxKkd~|4gEj}|3-Xert|3%UwQcx0NVS+6j{l(14D#MlQ$*KXme4HEjd^`_8c6GP7B5zT9R{rII;^bBge=5{s?8&<&p4>snnm0qkWY|IPUyjTU83-wsJnYp}J zRs30%*t}R}z=y+ggA9FAsRs(81#DidI^L`zt{^4Co~+z%tV+hLGHe(M*Ry%CF<-3I z1DU;nEsa&!lU2lxRnHj7TwyO(ZZ=m|ab`X}R;~bdR(56&JvQb)m3pikY|JOwKC$v? zv$8TTsMBNRV!q4R#LCLNxXz1JjQI_-7pweUR(7@~R$ewAHZN9fwmGb#Y`Jgkqk@?8? z&w<=$53OWi_6MW!K@ARM{h)iAk@?wZ>Jj@#A?`t(8w}xhqp6>W#z)*S4pF}lO@1dD zA9R)wvU?oS;^PvUdc^rz5c40S$v;KogU%vCHXm^>0Yv{tH1&x6lMs2tekut6Kbm^T zvLuiV5P8HMzz{wUntvqG_@Md_q#G80nrQN-Xne%EH4yUyk>o+=NS%T6nZb8^L(B$| zprRN=Lonw4PjHVL31ad#vBtj0|V$pN6>lwp!F7@UHYIC9YO1QKs^J{+H>%^{TvJoptC5MjG^cE z8#6F~*2aS7UO?x^FquHsAA{DSgU+V`@j-ocCTZxo{U*@;p)w2%t3d7&W?%sA*8r&l zt+fW7_XWPw%Y*^kp#_~s1=Ry2MiGn&oAU^2MNzh&Epq>|q z55AjSnSntJ)GaZAte*z$V^xFlwLr8g^gJ*V=zdW(NCyL?-wPzK&cF}`qD>eWKpjQU z`Cs63{Y@AcvOwaR&~v~{7#Ki#9(2A}8%W%QfdOa&X z{wk0S-Wd4Ej+K>Hg& zOdtL=nhomI}uozA-z738jwDaIuH#S z4M8sPHi$sffy~2qegp*hq80uh_fm-VzK`4!^?g1wQ z!%nCih=R$1Myp_KkoZh428Q`)_JYJgWgxOYc8D-A6hQL;7j!QuC|uCjoLTTf+zv7W zgkg4}uQ{{iC2k)?A^02>kVy~>GY?dzBk#Edse=zmLBj*21AWce88mxgL5aQ(LIZl= zJSg5kbrMJ&$iJYn9_9v+`Jl7neqjke&`=<9_*p>jn+KT(TDJ!?Zxg5t0T~3tf(#4` zpl5`E1~)*{GJ}@&dO=A1N%)~g6<#hu$`)|GvjIS94{9pAkGE4|?VxMsKCG#_;8EjKoC*OU^ zu!iAvGY7+d2K^219Hbt)DY)rh;Fz22rU06UlVaE(Co%aggVuz%3|14~GI~vT%M>-? zEpwKD0i)@(w+vNmuNj$@-!W-Te#>CR?PBq!BAY93!5ndWqnXyXJiP_VPs&?V+0kUpotZb1Q~aH_pn)I?v>=g*p_T1dx>sAcYcOFTgKb02Q2|#xNs87)UY1gP>MDSOcg! z0XdYB!2m>oP7Y#Z2nJE0i^iE4YDGXaNF&m*Y9N)6n;Aku6u3#tP%8nVAu2<`W-~A_ zXfZG_K!iZ;c(5oaz-&N`NQPRF)4*bA-iAtpieIoaXr>A@tH#I>4x&JziF9@x$j=Zv z;B^p42%^dWM1f?%H8QNK^NOG!diC>O#O`W7#SE45AQu`1j0jjR&fcX%)*(Z9(J4)(@e%6Ah&&mnKus{ zFsNhYpmUeGK{HOATcFBN#>zpSgI^O0=D^0vK|ur=D~BB?ju^2FIILPHn6-P8}k))h=3UyLfo3*eUtd;E<{~dvaW*|x88$OtRw>X0 z2QmS^to+R7daN>_%R|9JoXizoto&xIQoi8352V;2G$$KKHv=2kWKK5bSIk~)%+qQ> zhB3cq)&p6>D$eHW&nm?RzP*%_&6Sm(nOBdMJ&2X3)}56-h>f|i27E$Z2g^KGVOLgO zPgX7?R#pQx<{#DIixv7o1M(lM=V8B=6l44sbPgBdTp~8`xm=(#$3YnuGztZh2h9>9 z^C4^y2~m$2|Ap`&YeEq6$Y)T1%mdw(29kxDzaPQ@uZaf9BlfOC%zKL_4=IR2f)IJo zneZSU%sfyb`Hsl^IyCb@V?@aEJ!tZv z;vHEYG^T^hhm~Y7`$1zz$nyKq%tO9U0Tg~G(d5sf@j+uv$mSu&hauq!D-dD!!wO&+ z{~wxpphX$T=D|u%n0iiVi3#I_WrO()g<`bo^Bp zZTwXaZTwY_fdN#>!^dCs(8gc&7#Ki#4Rl@~c>Gn5fdRC+hDi=O{;J2o0BRI~#$mzZ zuS$?rAE0|Bz~isVkh_RLM<~Y@*a~q z1A`Hi4_X`p8dr6K@<9tcK=&#HLHXeES1ASt&^|(td7!)oI->=21|^6OzK4OCfuRYi z9+bC09N(A*X1K7~PZ_6l^rE%J>ANL4EOASk|zTVdMB8q-`3 zp8o*l76{G|fTSG=57fznu!tSgJPPiWLGm3)CumF)lqW%K5QcSDc0<$^G=T&e7{KRh zfLg1tk^!a;bOaXi7*zoD-UHBq z_ZfitddU9R3kocdhoBfHhdx#bQU}rtRfcnatOO_O7%9jfAU)_~l>yNE3_$(`r6rI$ zkW4op!-`vW0i9^@N~F$EO&DFAlE4B zw&4fE0ilj5t_~l>8@)R6IyN~ud=P4so_h8N%Ym~mS=jwQFmN+{VCG6=@PBoL&;QjV zPL4^bZbFlJr+8$nem#j%%I(xg1`e5tl5R?F4EuL}WZ;*(ATyiSjbXpO8*2umv2BC@ zD^b_I!R)WuSTFowIRLutRrLqk0aF+MS29kkf>~d)F)_VnV|{*+{WTvm^8<$cLbI4& zdo%C)$iUBj!QG8vzrhbCZANpc24k0>7nuwhZMZ)&a-X^=J%d5rDT8sw_SXUY43ii> z>}>$8*Y{}Po$Jh@_<@nd|CJ**$7>e`o+-=|5+pfZJ1{U!SivCbCOTpH>p%wn2?-M1 z6Bs`*GKfs@;1Hg`F@xa)BclTc+XVKBXJ2xfbIf3y#roQThe50Q0?Q2UnG7lp84Rx- z83iZu%mmQ_6S=@N>kP4pjISLS_$DyTkeR?dLwW+ke&HD$uU$B$CK+r#`%>K1{{sUb zXw^M~I{$33xsgBE1VVpsH{ATeus|n+(U|ii3n%MG7FLbljPF!_bCqlS=3-F!&8YP1 zqQFeaiFaR0&$|0k(Bke(aaXPfyfgS_GpI8tflTCl?Z72ALvjLxg2>FqjhlZm2<-aF zuwds;1_Psbj58EIFmmkp$iN?XfptE|Y~Fc7Gt@sYGe*g= ze_-bJe>I(p={K7oCa!ymn?}nb9ZbnsNFg1B28A zhW!l6pmZR7L3+NIn@Gmh9}EWqGp_z%dB9=BXwLePgH`7@i?QBsM&l0`W#%(JVA${P zw)-OkKlcTxSvqbeKbfS>e=>118VUSnH2!{(^|d$a4elKu8959ZIA*ZDc3?Yyk#Xh; z_OJ_ge<(a)P}uj8fq&`+*7+>687${mmx);iAlpvp+lzfZQAab~En`tH|c9gMpCp_cwnG9Lr;dkgsSB~J_9u*)Bkl}YDumwhtQTWnaFvA$cGhxWgb24Jc z%yR@0PKF>Bcox9P2zj_3v^0c~Apo>C+m8uUlfnmaLDdsz{GE{@5Fv{)To0Q5V`K;d zQJ}GDMut!jb%GhxS*r!DaR(Uz!JwL%ks%l~H~^X;XJiOQmV40m>C#yz!Q^Elb9J8 zra_pXCf*V-6CMEAodcTZ1f72l+9$%uzyP`$j*%e}W-}v0B*mi{UJco&a z0d)NuBSYjpCI*H_5CtG-eE~DWK@L~}b^v^IAJp^#-Pys&5P~oXE(^M;1vG-s$Pfjh zK*RKm43UTsj#OZT_OuvkB|tqc(8>Rd3_&0&54>W(_5}lo0a}p-+Qk8)Ar21$h0zhP zW8hOCpvesohmpYmM1htEFfv4gDA1$^BZC2m0^R1p$Pf;qY(RZ1hFT2}4RSprL%0kx z0|O{^FoG8@fnuBiWGcvQj0^@K3Uv7=BSQ!xG($kc4G>4cJr2_I4BRsa0Z|}(85x2> zlpVxQ6%Y-v6DgU6fL0~MfCD=ujfsIl0PH__^A%(&Bn-n5VHgfF1rmedVE2MLAqC!jfjtAtu3%?^I_e;km>Fu%fO7@t(qAwK#DHv#iUv`T zBpHQBl2M>V@>XEeqCpfSr$i!h3Vg#6XwC<8`6eSni~@9b2a=~j!)&0e$iz@<0m>1e ztszLWUZBVZIgpXT07QYj%g7K8(g2C<@OAL~VgPa@$bpOu!JupdiML=-5`{R<07SKb zog56JI>5|85Cw8JBSSDKk3*6(ysW|MfFO_qKm%S#Gh$d327nZTHpw7OH)2&72T};} z5-8VzBd3LtfdO<21|vh@5hex(h}Qzkm>C!#&V|n>A}IuGWME+EV1%qPV`PW`4eWsi z?-&^ZPr!|dtAHB=Pn}45V8(z3DM1%+AnheW650nhE~Ef%96bAh@+fGK66wNuBq7jd zFNlv~ikKM~K=HxI0IxMb+k8MF!pIN>N)(_y`AALxWi-%|Hl#pBath4tNH)NPkb)5= zgcKw&AuN8u;zTU*fF(@Hn&E^TPR<738N|xKzz*kdGca)IF+#Q=fi@|D`lOt!3=jd( zEm&O0dy=?Ob~SN>G}!YnFz~>4HGwbA;)U;O0(1GGCV)BovW$kpf{a3p5!{j73=9IS z42HrC41ypXAchc2l?AfVm4Vq0!Sn|)d0`93nSn{Egoz=L@_UP zM2$HBY?LRA8wLs(-YOW^7wno_FfK%|9XO~N7?>l$vN5RKY8clOY}6kZHv-I61+63m z`4htRL*H4L z=P(&zkRFiH%)*Qi<9?w?fsUnM7J^Edu_2oWs{BBOAafT~dNGPLND5RSGIv0wx1mUb zq(Frub2n7_BupCYB+xi0b0<{l4onK{Lr|RxDlnP%L8afLNQ0z6g(veKs5BEh)YV{v zK?9l0`=L^zFe$LXpz;+|pfc};N^8KR8Q4HK7lML`v4N4*orQrx#D|4}fh_`>W*9lx zL^&9l*+8c%Gl0@5BP$zti9CeE#s*pv4Vg?~1f5jNJ^`u`ejyzz$UOGtFk$%qH&BFu z>OauVR#1Z;;_&mb*q2ich0>eE;lS((|GZ!tHq zFtZ9VFR0aHJR1ylh?&=`&1eteoB~%&ff3duzQ|jdEFe!Moa+qrvMD+UnC- z+1Z$nFjag8Sl}m?}Lz|V=pH;w^jd@93 z8t5jyXN-Dm%(Lp|F+XFR$2_Z!$$$}L*jGl539RA)Y|O279BWuP*_eBnIBZxYm`g!R zAGp2Pn7`CQ9e0bFLxIi9%Zr7XRh*4^Q=J|QBP%EKc}6`pkdP1?^T9eVcOOsix(JXq z@J74sOiUV#tU|ut9;^ZZo~%NkRT2W(o~#PYVqW@e%xi1)Sh?AluQKVe3TU&+YqJWl z>9H!X8ME^EGgs=d3ix=kvNJELPh;g}z7Gma=7sfMtlZ2G7@AnwnHSXSfi^1Yu?jH% zW|#+F0Aa$)%G^*75lLfZWp1qp`#B91_V+-`DwrqMH?eZErLl^!`LeR-vN5;UrZN9y zYGQ7$oyYu>$%|EjjiZNEG@VsRmsM1smE91e0;GevjaiS4`Bx1*BE8u3y!2R@K|!{r z9=s3)6dr8MR~bN}Ld=`$y}VgLt3N=x^w^lEGB>d?zphDRm1bj}#_Ywa&IZ!t$;z+K z%IV3fpwBAn&&p%O%In6;qtD9D9GeERSr26V5|GVzYCt;}nb$F=u`yq&NdrZ}MrJ)w zsykl;+R@3pj#-aY+?SPI8zkSvypGw6Rh5mo(uZPB!KQJXeB?V%K&-H`SOe7%l6$fXPnOpeg~k}S~ulC04Ek}lBwl57l+{gU?3^*Z*@ z^*S63ko}UJ3=E(y8ff1nc)uh!Nkhlp0 z!*3Anz`y|7bIfGQzyKP41j&QS0MLF$&|YE?AGD?sv~L!)wgbcm4Zty3Fff>d#)lmk z7_33GB?E&Sh<0FL0PTTivSMHeh4Ldov^4`m3W#=KU;rJk!DPe0Pz>dlgJ@+22G9s9 z$ow`CpP2!&&(eW`VJe7k%fPS%MB6hktbo#>J99wlLESP?yn{~S0nwL0@(v6P4?wg% z1H%(24VoSRsR!-L0;&546=!2+U;v4WfM_QM21O9Ffhb{ zXlVup(7`I8b!-(NzB~g%7l@W+V3-J^Wf&M1f@mEEh7}-M8+xafGjxBeJ#>GvJ!r2& zN@`MRdOS&YY855srKc9dmV_0T6v3FeiOHFHY59;nq!5E4{Ji{|F&TAu@A zL&sSdKx?>QYCtr!lg$9S(-mDEXeBjq8ER zc96ZGF%GajESUR4LGshVGf5y75DXe$u|}%8Kx#lTAR2^0Y!JT3%fJ8|rUUU|a-fYF zFg8g1FCPQLdXS?)93;Cyqx|3zN2qv=EadJe(7sBLI7kb~AFwrRP-P5jgc%q>dxl_q zm|dVtMPY1^9FGWSHW$Q#V3-{G{#9NP)U{b4bs!8H%mdL7-3$z_Acw&?Nd5qgdLr*% z1*wBisv)U^Y@0$D0NS4niX)f^$iE;qXwVJhe-ImlYZMXtm_hqTLFz!^0y?7r*?o6J z7#PGrk|0e;_JYn@KsK*O5s_X%GuI$3AoIX=GgL2#`Xa%=0J_H)WQQxH2x9=*uWxK< zY7Slv1|bNq39}^neA)wOYrk#kQ=j8CAsey5tUq?8YUDLog zmqGpPOLj)qXkz$am-+P&CU&4 zYt_mKI&U`m2j7CAAAAjbA6fVUf3U=GXBfIf{AOi{_|5DR^_z8O)Nkf9<*u(UvOQqf z&!E7d;{Snx6J#detV9L}hC?qI82w-QF!;anWaKd7oy{{>GC|TUB7u7blPU8@4o0ro zj24?Ovdmz7-N3{=gL5XM3)>9NiHsI(6Bbj@;h#%|*Ibhzp435|A%y%NKUBZ5| zD80*I{V2c+<1xQx=Xi9HcLwV`#@7rS95Z)+WZ>t#kl+^jgT?yB4+e)FE{q1jzgd*N zT?}9VtsFY}gMoqbbsOiti;Oc4uqR&tt?FaYn{Y~l%;4ai!2E%kfoFn)6W0WW{T>;7Gq<@hs589oW@euO@?#?# z?+l5}+%p*VOS%RB;4)w|;L5o6lA$x=H&apMZ)Od~*IdlZuen%2av?vs3a-6m3JU$r z+|2e-fGy}ZyE)5iE+(eeT+H_`a?aqE;F;mEk!uFS{;(e`+L9T;E{q02zZuKFU#ws# zbK{r^TK(tqg9Wr6if!jbkU#XntDzue5uMgUfzMv2;L?xc%=Em}6ourB#3BaAAm4aj z#}JSB;8160*Wh4;fMbw*sIRMENW5!Mkbe+D+{e|=J;VcDG}trBHQv`V*w-<{*#n{2 z&(Y7*&key3_VjZP^>IWpF2prBB;L)@(JVofCN3Q$Yno7DGV=cv+JnXjv1O1zq3-vIw-e39-Tnvf#-O zd4UtCj$vd709|hc>K;M2CW96)AWbua3VhJ1sf-MP2!-HX$`FO{32cx;J8XR!7vi8`(4mW<{TGZ3(I5&m zrNPJ$rNqR*0PY^LxFv3UabBe4QVN3sHqd2$UefdO@ln z>;6K(dZlG4^9vlq7jP_Tq8&oSs)?M9(5$MKtgC5 zL0r)JSV(4pj?Dt?sz%ECAR#p4K|*L6L0r%n5|UXUb3iK|kjw%JfsP_Zaw0? z3efR5CI}a{It#*uxYZME3~2oc*ce~1F|%R%Al#j(-0P^^C*W{rU|M zWjA2;@hIv+YC)A8(^S496!Srgd%)^vpr{9_1=WB|)A&FO3=!ty960sCKs4eB;QP<-5AWMBZLGA0H_K6N&z z_dME)!6R4^IRS`_4jC{o~O>HnuGhv$cqi6zY097JPW{iB7V49x7G_8SY z`hlVel!!rvK9e&eA2&PHd2;Mf=NYm?ofpoI>?hE4B&b?oa$)4lf@!LSX>x&Snt-Bd z5fcLgsQhP&V&q#4)3gny=_E|k9hfEtA*7XM!UCWrtfHWzR1vzOkWmP3rhAZuoKsXK^abH0Z0tg)az#y23f$-2(^F(zSL~c zEd>LWAINu3BA>GkDt>XS150=b-sS_|$xXpI>yU$G^z`(d^NUjTk(Z5uhbs^(!=U@F zP=_@1l0n-;l5>kQi{lfEa+7ls^U@*Lqm#6d3{>(V&SXEzzz92P#tgbVYz1U_*i8o5 zQ8UXS0=F0-N6mobS=pFhGwcE_)|p!01X?imgh7v$)s&5SYW*(IBCH<_po7#q>b*eA zeL5Jyi^+b}?E)?G=>e_U`ckLI+{5^Zjk(N=nM)5svI@0$u!_5}3i<;Gou?o4dO0em%DuGrq`LT++vq}WA zax!y!vC1)*dV!C(=VW6BtvOp)r^l+y#(b4g4|M(w3p2>R~cifK!i!iB*dEc$pWgGIOO~AV?eYPEL>pDdux!UaazLdaTNzl}^lT z%$vaCoXp$Gyx5r6)upj9|6`oT#@tkw#wx|e+`t5~AGAKp18mAXsOm>$UaTU_JbJK& zTA+~I0g5%|3k-T}%x`PK>+|L?fg|uqtrsghGnm8tq_zpP8fzL8C^)=WB|sq%z{dQf zHjQ}>6X#fyaxD`AV%9s}LLWCZ;r2apo#7 zRv{xDu*2SQc(H*zD8$A*t=x;5$E(E+EdGE4Br49lupI1P=KEm25c869FIG{T7=Xvy4xzbtrJz07DSlOAk)O&#( zugAoO^=NsFvxPuw77%BVvw_zzfacF3MIwX`VS`8rA9-yTNI&x0E)XAiZ5N1-ytWI( zM_$_n;@<%o4aN}jk=J&Ca-{h;X?WclxC_93tJ0;%Ukvri0-4?3<7**wIV z8W8`3)_ow$gGLjP`9^5wAtf()R2h@j{I z)%ozXR+gZcW?*2lhIEfWXZ3*QOhIQPiGlh=wrFduETL{=MAG+pBh=BpT z=1Q1>p#vl?!T>IRm_(sx_6RaCfNm8Bt;qtF5log044^Y%K=fXadNJr3NLJ7@kR%uw zz-z9o7#KizID^(sfrf@bYk)xemO*C(eFy2YVqo|UqLmmJz-J*@F))Azdzq9Oz;_9N z)Pu?p(3we~{imQcRQjMXX$|NZ^i~WEb|Ahc0|Th+0Ii_{ZCD2B18tB5ohc8xe*(k@ zt@8w(DGxpi$qITFy)FYoBS^m$0|V$_MbH^Zpgjs8^`MRlXpI$UJtv3{IvWwR#tJk7 z2I7OZ_c0kVFo5zjh<^}dju8U`Xo3O62MuR|)>whcY|t6@pu7tb2i*?=T3ZD=2Momj z3DRfAzyQjdAU+3ZdO!hsHoX-C18BV^=*)W1i~>j=bmbRl?G-35fx_Psq~4N&0hCuj z@}RM85Di)f38F#k8$s$oX&pp^&gKS*gE|Hv8gxq)hz75zvSeVG2{ms4h_+&20BsZn z$%A$@f#{QpM%7$7#O~SXiEkL(0#ffdqK+=LGql;3=AMz z2ue#sX-yDq$-tlsrA2*+gJCr^OqCx(I(icIr6$1lkcNWO~kD>fGQ2G~$wq#)V z2c_9SYo)9h82F*I1e8{U()u9Ul7Yb(N?U_yD+UG^C=I&&3S>_hl%E2kEg2XxpmYI< zwqjtYgwjn=x*JN*1ksiZ40ECMQV`-yUj%7lU|?7y16dOUIwuOG282O1CT#5$Yz-Nxi~yBSP;Fp;fZPw-o(Q60 z;svY>4DXSuV3-_;24R@GcwPnuX(Ry{6Ew{VV}sOI@i8!TLWdGSe3%?)n;o)0wt)Nr z8Wx7$1p)I1`gvi@M6L~E!Lc?BG&uls1IRr#M6L}3sRQW+=>cJw8KAly#s-N`L9-X+ z50E%$`W4x~d!TE>K=B4jOCWWicmwq#kj* z^>Jfl1epkN93z7UIDJ8Q3=B8K!7PmP!n!uNbZq>=@Sw!i;lt(z_71U*?M@CK);0Kc zgmr9na`>>afql~1m#pjz3alTPdHi4bvH8C`$LarSD)$UGrYVe5nJ0T@EOC8t4 zF3w3(;M0y|E^y9wbz|7CM? zPIl1wV9cOXm)Q4!&j$nDZ*B-WAI!w6!QAENMUIb59H8}13?CU8PF-Z00Xk!90u#dr zW)_7H%*^c^9FtgQB{&6TFic{f#Xcb@gJH(qA3PiG{$Ocfnanzo;k7d}!)r$_&dH!P zWZO4#fYzvShPg59zx{*3z#!xH50-#ypwp+!7!A2Ua&RB`efZ?L-$zfrzsNb0=|P|y zX!TjlM)rBpZiYXZxQ#*QIGG*&-Ei{zMef%w-2Sib7=TWna(LzG$oQF`0d$%Z$c-$s zS!Xi4fYzQdTCh#n3cn|T3%ueC94Fv-a?Z~!$j?j7E3r~=4DwX~aWivLixkZC42={* z^7C`76ktPC3el!1W=1B71_rTscSpkS+XioMEHpG7J?05?*j0s5d}bm;L7<^2Ls?=D zY@84>G6*_~2{cql!8#|9_T0o0)D=#KrYI|%aGdZ2TEK*Ju@lx?6`+ftkj{hx-R4~Z zJKqU(w?a;SUb+I9fS!D1W)fe*P-tcx4_X5TJJ<%v}AqYf)R4_5r%7AEyIk0IqkV5dOvWyJD2wC_(hA7Z^z@W20krvc|wh@B1(l9avf@DFvSdgabK^I?x3SmZu z7!U>OH!?CrPhx;<$6;iM2JH$1ISy$`9#lzyHvKR%gn%fJENDp+h=zC&zMum%JPzV8 zG8lj;(22T?3;`eta&d$Khpc4VWfeX?EnkQpqhyxi1aUEzW5?B^w4rnC^BSSdC!|?fV(0vk+ zst`Wsk0eyWz`)P|b~rpXu?T@yFoD9Kks%!9JdhiZrs_crGswU}2#5mpkr^4n5wQt( z3MdXBvIZauq=JnhW-?3UWEN1o`+%-Ifbzi}18q=egk5(5Pft9ULZCZ`L8c+4Z7f2d z1B@Z6;30uU2y|)^L=`-Mu?T^p0JMS&$wsmk9zdq^vQAU0^^4ssd{D2IVWm_5LTu(6f zC5R1D>>tR?z`!dDZ6q@Lf)42714%ObfSA0ny~oTDg`fprU|9$kbXqo;>jzd0yBL(& z8_b1`tuhCJdNaJRZLQ3Z^Jze%G+@0Dqxzt&VP@xKkc+OsxWQn(pdl8pVh9(ue1RFl zHHJ3Cq1;FqHvkl>;ImgiML4LSVlILlmcq=$06BXFEL#LUe~q~lA`7}&9(*zjSQb>e zfQkv`>k!$4D0)FMpyGk~8blVfu@0;kd^8Ez&9@*jpc8SxGGJ3dg$1Z6V7>{F1r7Fq zWl_&8`NIU-lgZ4$zy{I|GLDghO$2mi324_111Ow9XO$NAcFNl2M9Lno)*Pj#-IOg;9+W)K7B^@?~HI^^XM@89>SQS85LTj;sZuo{zCPNM%0Zk?gvoXJ5 z*u};?qkb3j3kJ|#+Xva0C!(J)G8J^fh$-6nBDX;2i|B*T7uf_lUnCIqe36Ne^FnJa~Bh6ep`^a zsSbP`MX?tf^LmiQ&q0&6GwVS2r7*u@^a9_+Ezai7%5TWZ>CP%{$i_SkGN1hwZ`%j|D*Q3Snb2NF- z{&ZyXLDx(n^M9eK2kl!&mIuwLAoD?UE69A%eHF-jIW+gEqwx*U_{j5{Ape23VIZ4l zkEY%OjSnhgk=29dZjkxN^Oqp=LHp*B<o(EKQ1h#J6T(SP7zS7#P6wpmq!lhoSt7AljON;VP7V2%>Em7(l0CgYL!wpCtjB z&jrm3N;5EkTI-;*7QpkI@(c|2AaPj+22hiiNrr(T48+%DU;xi=YA`T>=QYh37)n6m zrVI?#Ald{vUuF-TFSCZu(_0U@GZ-KZI+7>OK;w|4oxHFW)WL%kXJGP$7z4w5FbhI} z$|4X8)P4rBL1SwmK4>lsM8hy>E&{~93?ABnlvf}=NFAsw1F=CErtTy}9sG_R&|XB) z@EELwg{cFr^hBO3Ss)CVGXo7lfz*I7NFS)*3vwT9&g=jq0|RK!2gptk2FZai`nd}M zEDYdd*+FVR7^DV9!`LAH9(D!>0VDw!6FiszQUJwgI2ah3V4i^Z5iEm#?!pRT1_ljg zNO}eN59SZZ*eO^GnDFC)q-8J%$vpIP7t(kjd!5nMfjWI4x5C0Dorkz{7v_UHNHD{Y z>_tC!0i+Jw+#3413qR281^E|bJo>o{7sQA=cfo*{fdN#8fy@A5kRL%bXlp1aJV9&_ zejtWOFQ7F8?K4j>0HFu>>5 zVCODO*x=H^-7&|>;lniez2OrZ{5pcccZv5j1Z7fPFi+ee-WOs^RQ7!(;NEPOqMfpfwF28IbNAD9`qCpb89OgQ_JC52%> z^9=T>Y!f%S-F?Ye&G5RBgJ;H!&1YZoPG?X9%~>%hGbo<@Vbj1lC+-JlK=co`2ENyv z44fYYI2lb&{AM-ee$B=j<`VjYN8!Rt#)<%&`v=edfC+3OH{_LiD4Fff2_*p53?ZQE31kD( zmRyiRNJ$(CTF41f%*YT4>Yqat!uJ7lFhG_zGBSWKw*d8$7#Tu9iXeUkO&5W@3BEZ4 zImHPknp}gNs}KO9K<5@QG1P)@M+Xh^GBN~! zD3Gg|7;1Gu^c2u?ONLqlP$+?d6Qmq$6a!=lC}^6Cks$&^fs`;Y)Y^b(NPtFwu4|V8 zPbtEyLQu$q3}s|608t>tYz)DZSpp}sfHZ-+GcZ2P9#BX_CK=%y!pWN9LEfo}nCIbU zU|`3-d6WaR1r)Jcl+y%d^C;~6fAHo}ZpiEr4`eEa7cmvXhc*=hT80T}1%WznkZvo? zpAZ@xXW-Toc{iHpLX2TxoWjTkTA%~sGQkF-S-U}8P`2u4WSa(M!_VIb4FNNN?1#>* z*fD}eXc*zihuI#~OXC1FbwFB~9l%^r3lq$B1og2vK~4vAok8a~aKfCx>;mS3=1#$~ zzMzGv;N7FlUZ8UWIboO0GW&qI5E*X}lM}SW7omsK9@G>8wa&ptaDom;1k1XEEvSXb zx`Mf&<+)&4H!v5r;+`3z7k0QQvjH6@XcpyAOcrGhh^)4Hk^S}2(mGQjx%RqW1dsr#45=Agux5M0tqtDspnY3{DeV| zc~1Q`<|ho`qproh*qB@E!MlPQ7&&ZMRoJ{(hl;p9k@g$LB$OV2k{|AFv5ON{SV^7+>1Ou4^j`Rlab|-$KyfrpaXr7HULK4=3qvU<>FYGgiW4+1hDdHfw@p9Qp3fte55@Qkb;bd3-)A2b$+ z%m;0FM&`qcKA3r+OQn$Ik;msj_9O2<0`Wm73L&d!L~|dg6h)RtzN;OiA5@ki%Oj7+ zgXBSbAduye$LB%vps_$?d043n^ABij5GH>I!hn*XQUb~Z)kL6$$OtY2GXuCLg^Q4K z7doiigpY3DApw_i2 z0|RJg9V8AqPKrs5fk6`_uFk+<0-_BW7(gr4KxZjCL;0Y!8BCfC44^y<(g(f^U5kMM zvoO22hg(G_K1J8W)ygU;wQH0gVf5gZL^8 z44^g&XulI^oDVb}4qBN83UBaT>7c=^!M^{Y5M0fYK7vc~t_KDN(0*0qoEjs@zyNDz zf-)zpcqMiW7c}My(t|wK3(Bt`vp^U$h6bY1?@0&Em4F)2Ft@)k1Xpk5PpJHZUsDPKLh;dMm8W0Al z0bwUL;_gZR&Bnk0+CK);1Hv#fKx z7lc8bN)Qdw3&Od`j(`*uAYt&i^T=o7g4BWZf+dmEf%>M%=AA&Z7Ze{LJ)k}fvQ;jE zkg-`%yn)gZNF6BNAd5XgI-r<~fdRDd56T0tQwOop_dSFNBGLi!z6bPs(vNU6FeHF) zS7cx?MID1S2@Vv?w`M-xs{}+^sY(xg;|`uNb}upg1`(CpA9J*l4(J0>Hj-KCvh_J~y!> z9`1ecdVlB|chIHFu-lXw;QAq#Mwe#hm4I)JhMp+OP~ehSlE{#jlb=`uA;CkYQ1ek% z`==QjF@WuZo@WXjmju}qoS0jXlUmG>l#>lQ*%ayyP@WP4r-1;__GHLFAAIZxBnzrN z85sf*vhYz!kPJu|X_O9R6lgjIX=GChx?2fp?KSA27SIR*BSSDKKST09d^i*22FUrB zaCcBPhQ-amz=nO;iXC;>3N(tvg?khWc~Fe#Q7q6w2$0GQ)C|Kmiq!{dwts*kj(6OmLMrP2!BD|r^+z)CAaxhP509Sa-6F}oa?C_zgiJ&@|6FyWm z1=RK8^at4hYQIkgb3tRDAQ9%N;NhQA5E~>r4a^0fs|Dgt2U*O(1&V8s3eac}sN={3 z+Ih~U3avjFKeO_3Fur324*-GMn2aA-A)`TH&PP_rXb{L=#!sv)46LxTC=jDTAP;cC zmSi!`WCYbJ3@j|%AbSSia1f|kKpqPM@j<}@!k}ma-DScI?kxRz5CfE=KV2H5z)Xd~Dv}AsBWxUC{W>lR7U}Z8qi=p!JP6>byV~y@5tk7(k;Z zpj*zEw=jZMM|!aev$?WL8ME@UfliX~1`XY?@?$W?*t}S!yg(8>V52I$SS3MgI9ZuF zy;#MJS%ug@H{7{`m{M#Ab*^m8JL~j7r}SKBOv7>C7ifST6#gI#8j}I_tzZcX)UyQf zLFWsAmo9KJ1V`n10ZV z3bH&aGy}opMbY@`Xnb2VKJu6h$i1NTOvvVg`gO>B z1`@;v_5YB~M;?O#$%EEGAFMCOCei$LZh-{*A?A^{~qi5$uV z6=PHwvp55;VXLEoGe-%izfH7vFhBjuQ1Rb+bqSBa!00RSP3WSNDfdRCC z3N%IlYOjN6&?T~PY12R zIt~(7W?%sA2LX*$T!ZpK=SYLbM4m$Vpba9RwPv9Exj_0syRDcM7#Kj4TcEKL@ECJOGV%f%<|lw}5ML=wa2!eMlQFM4u0&282QS(EI+N zJck%Jh4i06?nm$YgYLuyr3C#A;}sw_2*c#i&pc3NVPHUB zuLe_x-uHLmVqi#MWMBaGg+cy<`2+pTgXOFcw}b2iVVHU7eg74#*wd^cC7HkX*3Lphg4Dttv2`WoK{sOTTR<1jL(N0(`-2XD1-EQLhA}WOfY#lC znz|r6)KUBXCdS}iKZJnw{f!M26b!&Z5Yo`Vz|71{LBZ6*!~!f##F+;ZK#_{n_ZMYg zWGL9W;RnM3nT{o{o)=v^Vmg*Oxn4ZI0G$cbUU zYX(aOqY=YL4hGTRir)l(vwn5^#rMti7vER5&-`qxpZQsjzG8EYO%VC5_*L*X%NLN0 z%P+n!AQ_g={47UavAW14Fn{D=zIjmwIwoN7lPR0gi19buH;`E%bCiEDWh0FVfEKku z^8oF~1PX`m!2s|+J!st%s7DX(vqL)gu>O6ap(%JLJo+-IqSV9`EXM_u7iE^DBE-uQ zb4pXeV+x2-2GHVN(6|7!cTdJB14uWvGX%hui(64*atT9mMrK+Gbb!G#kD&lG$dDZj z7R)QnMH^?x%yR@^bYjSmUs_@eB1}L8m}>;P?IbhLkRdYFfhn~Q(*w; zU|P^b3DSrHC|iT7a7Kn8ge-jc03-_QrTR8L>!NW4Fu%qrdk&n8EEiVEebA-t#1_n`(Eg*3*$YLjP#9}82 zw8c(p1oxeTS}06Z9VPUGUtl(PYb^uF$Iu}xb4Jjn5Jq08?F`Ho=b0E7_!z-sk<6ALPw;}8FCckl zE0BYE;R9IKD$EQF{GgBn%i4mx%@6ALfVp;HE-3$kxlSOx{O|!Rd(e0mKgc0qSqCr| zH2(_bx`O=7{};ptbrT_6&=N|J2(uelRvFal0LenQuyqYk*?d%4(4`+>y^bL7g3e`P zV0H(2jv!MIG-(Xhnl1$DdkKRY)1ZwM3?d*IP{{)-SD4cvvY;(#U|B)X{} zD=YH@1}_#y&=B1(CNDP7ZfapR=C)e!{%Ypm;O*5q%#&)pyjg|)y;;Tly;_sJ5TqZ}rvb@= zddna_@)#kAk32>Q;vJH4U5dr29+pa0Z4chqw$gVQG?6_?U@8CXMm_j9#aI#!xpW= z!f!sBd7wR&$oi4bjRxsIgr**J6&JGl^Jwy*JCl&*k=Jd3%zKZf9&{EhvU=omp+V|F zbN|Tl$m_B|^2p~xgZRknvOs*~by*<3F|@RWg@+v)ANibTka{mPdBlDwNO*^!$s_NR z2I&V~w}I^bWHj|zXnfF38!+{t^NJyC5D6+wKr{r?VqY|9>=6__pz0hx25SxqDFz16 z{#MXD48|C&4cZv2Idlxxocd$1O`vv_Fl3AvH1;_a#1~{>0ChV+>!3hqlY+)L!RJJa zFo5s72CWkVuMd-ep6e0W>x)4x$wq800{-0(5NK8alRZ&H!#ZfZPMS zm7Sz>eFx;Oc<`VCXhcIVnSu0?ZqQ%{X*-n}7`B0$;*cT+OwJL4teXULKs^{J12jGf zDk}($b%V}QMpp+aU!cao$GSns%^{CT4E(gPYh2lt9V90mr4Bm9uD zZqQl_kQxvM=>zp{K=#7cxjkWE0N+Fj)dn832g!rhoPubWcpPX98%Y4h1koT2QzyyF zz+jFf0Aqr>Q7|@0Z2%hsgBHvaNZ|)+jU)Tx3_k`4jsi431Y(0Q$iE;Ov^WOYsum&0dN@%0f;xF1b)fhK^X^8h31pBPOcELs zH!-sydQ98^l&O%$#6f$NKY+%>AINkpb4>)ViHqr2;u>=iG$PLPo9_>U3Zv1M*K_!- zKx5)8M?Ny}<$qvsVa*8r&G?n|7t=SlUrgWkI!WwrdG)kRF2NP6cw9m&R`GcWM>7Nr zu$go(LBLq5?~A(N?>FNM##bkzCkjeh9c4^H^?H;Tp7~nEvUF# z1-2A4Obj*>WFg2rq@it4!3G*lVq^#b^@&0C9n#P-Xix?+SRD#-8>FNS1?`XpEh=DS z2n7w4gVqr+GK7MTCkIW_BHfM(8taD0hJkiKLS#YJ3D`BD5P{UW@KB+A#2I<0naB;U ztPD&@1IAn?DEnQBUK|KIl?_sP;#wRCUN-@*bjjP|3L5DL1sq~=AZX_#NQ7|;BP*!Z z0tYMFr4GFyYz z2XTSi4(8hJVPs(7f{(k}g1PWL#{ ziK_^$5}6%APDVN1k{fiSF;5}rq+Zw>B}U{esH;GJgl$0ub6{IgL5>7(L1okmOQZ6H5@FevVw_(b{`+nL&!TUlB_O9ept zb_U}ZB)H-OWgql0NFKB?NYH(D;N^&*+wip6n6EH+u`#cKj6&XK0AGi<6g&zE;_$Gw zvr6c*3V5@Md9!kZmJzbGu<{rXEhfOG$11^wVE}k(B6A|>I7cs5Nj7FR$XFyB^Eb#5 zko}BltPD5VGD76yFdG z;UkYtg483AO@jEyW0N30^4KJZk32RB;vqkDr5#)a4GaNyDV&Y_A0M%Md zTnr4LX>}%U1_sbtEhZiY22ewWiI;%^Gz$(|haL?YlVgV*dkos^398RP>nB0eR-iqe zptcQY><+wcQjmcGblL~#?ljN=5+HgGNWTbl{iHT@{iGOlEKh-f0km%pbhjGlY%|bZ zZlJafh!4t3ps^s(x;zm7ImjGk1_sbQksv;3E)H~;8|WGq5FeDcK=3tu%mQJUdFbmiCD@5upBVsdg@a6jV3>KJ&KdGp6i6Mmu_(y89f)2Kxq=;1 z-htR44Dttv29;SLe}UK_Y{CZ_ivsxRPoWrjT8kb@Q?bn?6mVpbr-_qFdodZ|X zTL!L)ZyC8j`!*qbMy`o(nYciEHz9l`u8D7%xj_3jL3=hqdpIHD%v?+#1(>dbMxK}j zE<`&a%mwY;1nuR7sAJ$_`pCkB7;|c%*O*gj5_BWb2pVyMk19bt4_hZA{RhzqhTksGp-j|Z`mj~8tvUoRu* z)?!eY;TqEckHv$=MX0*r6J#oM)Mf%B=mHJ!H5DLtFfdO9ZKFZ#@SFtZf||S_Y39kG z1F1Pc4gzzhgVtnlfEu=7?ldqLK2S3i%!Los%ml570rfh*6ixjEt=OT+BRrtcq-2tXg`k{A}JZrUIKcE9kNi5Y4U)+7tSq&Wlxtjd>ko z8XNN^$ez%xkb5^y*QK$FvoY^t^kS6*Z3KmE3zdd!3zcK@W)))dVwDDO?8MGf_F@%> zslc*DRNRP7+`$R9y^E-L_a8vAoCGzcZfV< zT@8c}8z_aDCyeGk*hXxayfvD<2O2*RjStGR$nJsVPndb2d%=$$G0NXbT+F$`1p8(D5fX-|J?;llxj(@=RkE$>*fGU3Y{!taQ z{i7-j4507^?GFX-A5~#s0Pi0aWncjBA5~#s0Pi0Kt)&NzH>fZ$u!Cqt=v@y&3=Fy; zzBKfXdlBfGCUFJ^(0wqV@sBi+ycqNj2POsv(0l=CTmyWEJ#0Uz8g#runSlYc`vK%{ zvew+t=`QVJc(F~=8XJf%68DmVS^~(azJP~;;XWigfJsdS)Eff}cv?k0#0!Z(QAOZta_f#EmEAs|iQRyCy0 zk3LobxFZx&o4;yh~6)vy{1Q`Ym7Z4MDtOBHtn6ZjEYzz#b zP6Wsd5C-`JM1#r~kiS4|5RTv>Zmi-68)S?Uqz8my{zV_F$UqviLLRFCotud?M8)92 z0l5n*r@56@ZUbSi{FE%)nz6 z#^A9E1B|f>arjup#UBh0STY!mul$nxB9d_N2g?H&@ZH#;ou(kMkOZcW989mlV-Q>y zqMZzXGMzT~$>a^vA@fD)2b1?#_*xeMI*vO)HXV$haR+R>MN#*LVy;htUoMS*w`ge+ zXxSyDBN@$8D2!R3A@tp*i8?;R587=B+lnaw*@`I$QUcm?DFl)fWE5hI;En{{{0rNPDFPY55k(B( zh@lPOoMr+w-9cfAYXAqdY-T{VVuEUP@MguI31#}x6 zh>cj40^;G^iU~3RwiOe^hHS+I`4~F5WX6~Qx7(f9C*)Mqrsu4ac#s)Hv z0XEnQ3I z`%wnnI2xoe1L~e2#?dTE8AjVx4<1Il%#g;$ycV*S=@w*1PKz!tJGY}tn+ziA=9ybH=L1$MX+ZPY&RDcB_?gQk-1u`G`PFj%t$m_vCe9+nrWcA4Bv4P}~&tC)a_o3N;1dR{6_ygHI zA^`QM-F!e7W3@8c8 zmQW^mzYsc~&^R9Wv;(*S%nYC&BAm;>%pk-7TF(RW9;lpxkL&4xe8Rv0x(gIkwqfi= zG(;QM(}AvM(t*tHQ*&Go*Iq=}`X$gJanN`fXgme9&Ifen0BA2F=uiPr#RMLw6NT=M&NZznhXq}wSFKzD35@~_rU9ybQu^x_d;lLh9R`LwAX=A!0dz(rNcHys3M8(~z_15ID?;y5h3yqIfR0=0K*udX9UOAjSq;oyK}eUC z)SZG5T_lcTGBAKPCLrhf8UY3d#GNRJF*IVwF+uwlK=~auTn5@c0m}QZQUNrM1Y$$B zXfVL27I4E?j4X6zSQUk&ueV}$Y$X-xO6{HkozAd~Q zg!ls_kG@Y3wC5DDJ{F=5q#vXfgh6Z&E@5F{kVX=KF+mM}7#pOnpOt|DbYu&N4Z<)v z(8dmAfAH`zFhqdb!f5B=!`6<0^n!342V{*Vhz-Ip^U(JRF5^JB9a$avc;|8s?BkuF zHU`XWkpBCiKm{?N7$%24-U(8N+S&&>~k^es`=W+BEq-QnY%PT=uQd+>Ot4aRt)U`@lFss zB;n!@jt4CnAoi4mi$8cC9La#K#sZ05NdT?Ix(^=*4gA4!I^YM3H=}XSuO(lcey|MG zI4F4I!w4D&g$^^ugC?>-%V$A+=z=HE8YxoOUttcKf(*ns^bYNwP|{amf!a!-`A(#P zM^LVUj$S?D+>LKZ%b36cRVBS#vc1Q`Vx*n^t^nv_60Js(ufLsWrAB|w(I z2L%`zf{7N|E$-2psMsDey|50ZgaJ|V5Z zG6yfY0@V^AmCP1kE~s(_b1kQVcFuw7Ofc6L)YC((z_I~zLGc8ZwFYxh2gwjCu)u?4 z9H8a_Sg|9>9Ryck39<2j?qdX(yP(w^p!*mR904|@6v@dt<;hy-O15DmekpDhLI z2H3hRQ278Kzfl4CoPhx}9)WfIMgwj9Mg=;4qeA`h8_#qu3mnF}@03PR2g|5p|U|;~HdC)pEPLsiLjR zQbk*rr3zh_rG&OFO9nc=L+rXNX$A&RnuU+wz}9D}L&rH(pyM2%mJ>PS9CTctMaFJ2 z(8vbKH~oPo(~xrmXpa-M*Jpw91Sp??FsQ!>qS4o9fyO^UU1^wGVCq2QiOBt4Q2!I8 z4z#Wbqy~gReAsvZY+M60=LWhD5@Z($gNgzWMqi(GmkDxzCP)nkgVexi7#qajLgf0a z1QrH{IY=5|OwiOKvOn%{F)%a`an}DIBG3B&OXOMqrmz7gkf%VC#!wp65=Gui22zJ@ zyaIhM*#sijXT=b?K5GXX0|VmBN5ohSXmtg0_#y8p1TBYxr33W!StcBi^VUG|pa~im zV}OjC=o=fGKnEbeo5=|7B{Mc7dVSUla8sE9WxPW7ToU;sa=* zE;N0Rd0sA2cLA0ZCFT_m=N)9wp@ew2N72_<(Q31pOK}N9QGPk%U?b2l2mIoJOolx0 z4z)bz{G4LQk^RZ}IiTHS3l7Uzj2eJf&L1U6`;Pe;*8sY>^M`(OwgXps{5pnGmlVFm_v&{`%0mjih_ z8Yg7=6&GYR6E|Wt6A$WYCSJHE(46FIf+Hi~pag{vnS0Yf0R=JxG7iGDixD)?!3eK} zn09M1GBB`#Y9EkFrajXc85r0>sRPVC45~`mVRsEOLAbERLQDs9L5e{qD}WUr0&_u& ze!$%Qpy_XR(EJ9N3(*U@5*y6j2bKlhdkE$p0CSZS2+@Oh7i75gu&S=h5=lj<|dY8=w*OTU&JVH^^zHw z7#O@$Gjrn0Ok*5_d_maR$I;I{#wjx|Mo%v$GcP%(G$l2rxFjVruS72cvYU;GffYP2 z#=M7-kyVN-i&Z{|RfA2BRf>(d(u-BzjFnxNjd^>W7f4_qV-u?&v$P&7A9E^42`f9Z zk{%oLg1R(Tem3UEj7_XU+N`{Wto%l-ylkM&aG9*U;B$mBS%um3Sb0Im5iu91fpxGk z|6{zy#@qza+sNd_D&!8*E2PcJ&ITSb5!7Sl(qZLrXJz$gWBypH2U=w_jVXA(77$hXJ~`?$m1d)K0^P{JO{`hnsGqAZ;*eY(D=yfYC!U!H31MmL;MR` z6M)PIl?}-J*J$Q}cK9O8PezkRUPlA64|a4I%zeAi)PvR(Ae)DN?#~r8_2~B+g4P}& z>qp*S2eKdejB*ekd0h=?Tn3^SM8bMwAU0?bEIOaix);oG63Fp=3=E*M0X|Nm3JM7Z z2GBYUQ2B|m&P5Y#oJ18mPNGWrI0(o_KPK@9@Xel^g_PY@q;*#>Am250~t#0S+!p#5s# zbuns?z9(p$1QZV-`DY+|l^|yjgZN)Te9$US(E1TI1_sa)WYBsPP|XFB2aOqm_M3rL zn}W_CvIMD0x4E0FC*9?pp-)u|Ve&fyYZEAbW~H>vh0q zZp$(-fX=Q0?aKp=eS_A^fY!W%!Ur^70HO!;{x*11o5ZytaD61M4gob+k#hzMFZIvk z0p%A+F2sEv4`|IA2Y7uNL?x)f0AhhoTR`qR`ykzu2T}vVAbpU=JS0zn^nuRv{|PT^ zAboKV7kv!nB@+XKDM$jO3EW19FhD{e4B;^_$gwamfEvp%K1>dMkJ~90$azud>d?nf zLbw?iKy!Pbu^^EDVE#bg<5o%J9=9qY_qc6>H(wzxg!u#1ibWnn0jVQq421{n93YTC zKqiC6YC--2u|fC^kz*(>?2xngL3%(K=05Z>ls`E3xPi`q1vh;_ni&`v=5RpHs0Wz? z>OXZZNH1HS-SH~3a7>X}w421_Y zhH{S6|J4-k#jmF@o%zVX#W>0Tl^>I)8^cu4=!eV&#yOg94Ey=r7&916EF1h^2|Df! zVt>uVc;N?218BFK;t!?8Urh{P&1+svASgr!Ww(kuznvt1Tf^-ry>P|TLzBkkk0qBkZkO{76$|9 zqCjwS0$k5AUSkBE7X(VSpo;=Q5|E1mK@NtDATb*mj{AUJt#3V$MS zV~3qi3tywd3Nnw~0$S6<4+J0l=OYn2#su0AL(~`(Xc!6aI1}0!6G?+fOz;sZ=o|o~ zq6T#s5G!FFEi+Y_IBy9%CIq; zda;Ty%jvNSFeiaWoK*GLm?0azm_Zx8npl`wg}__9_)S?&n7Kg1PT>7qY|QVO(pWjY zS(sV*ndjDev6?V*gT|@AgHYk%v#*!cgE=!n15wZG(pUxAnCCEp2cq~5K|@*C2BNM( z&Pm$Hh+`lM+c*^ZdCD@-qzD=f0QHAKnFN9%<1)zWb3pQ-_AIjeU^|Z*bWawt`@Err z1I&NO>vcf>2}P5SMdO3^uppZUJxv}|4l{uCqmNr5uYUr`Bi}6t;)BN8k<9}Qwj=YA z*YAMTBk%VD@j-{-BdbT=?*)=aUe5#K6B>s?-tPrc{{hYai1~a-dH~(qg=|0idDVPq z=}82QkG%hDK*qfY?e8)`8~38({w~lt2B2{*(0o2<+^88e&cqMBYfglL0en7_FarZ< z%^T?aYS0)5XdDT&9s{(W3$zs+G+qR%4ng~yz~fmu3=E*%<)D3F;BhR_{wI*RQVa~> zaV%X1hMyq5B6J)}mw|x;G)|?&zyKb{(uJ=70i90;64zy5Py^9w3=D=KS{E|T02(I* zO~QcoKe>R!H5eE`W4<6hc)UxKfguhguFJrX1fnIO=QrsxFo5z5X#A`OB(4itg8|yl z1zMg8@&{<_7DU7Ld#wej(_vr$o!t%+-wWdFGBAMmdoeLEfYLN*JP$O64jKpi1Cp0x zVBiGpw~}XIkOtAR3=B#jT84qa2t=zgFj#_U73g`_`q1@BI?!=M&;sp2ygmssP6nyQ zNI5|Yu8+d;H3j~`J-)`k3)xEpYK?)$Nj6}31frAqgfdk9MJ3qiKCCNae&sbFflNI`~hm8!~B6h zzBZf4^RDNhjdOwA1j3+R9f$_G0feuhPAhwZNH16t+%JW&KxG=T zc{*r&xj_B^sYD-N3=9g;JynLNYm_WZz^juW1bmGWuJJWvOX!lO1g?5lA2&v%2|-2% z4R|<$+{VENB1hLK>FMj~=?CYR7A2?Z`zDqYWmdSA<|UV8=I0g1Bo^hy=O&iGn(g3) z^}}*}4a1}0{to#=WSC=fP#aJWh5~J<0u7oGJzfUdas?VN16`mtx=M**q^wc`-5CPv zE<;+44B#~<;L;0DfX0U?8PEb51Tq6M#>8ZZzDmgmb(NCwB1Ys@N>-qiI*3(D5H5U` zk_BjK5IcO8k|mf6U!`PL4>AfgD-3c26GSh3m69n~7BtrjmNf@+;j5IaiCU#3#KsNU z%LN`V1KADQ%Z1Bl^dBGCM=j5zc z0`)J58cV`EjszNL0++40)+<4l{ZqDH$r$%?B?m87F*asX=wc-p_D+%(obb zUaYjTK8=m}E5kK5=5C1I9}M6zB3_(hM86WcO2htrGIt1_sa?8Bp1Rv35xdZ45^Zx^_tovd)5% zGkQSt2B0-Spm_-p4eF=B*Dk4}tzA-QU;wXOl4f84uU%4SU;wXOl7Wsns6!SrgVrj6 zrYS&UEa0_E3JeV3wM*&@44_&Hv{nf`)}szxyQIVb9(x3-2aowEL)R{;L&tnzYnRj^ zwKr(&1yrAb)Pu)-RG@c{2{15#*DgtsxOPdBfnh3W%tZpS?*=p`1=?o_T7v}|uLRvK z242IY2_0imgZdY=ws-K4v4Hy=WQ?(pyblaCz6WVzL2|pwAYa3j0-A|sfQ(Im8X+JI z>Z@ZLVMYnVXlh#6x+zsn5d4^T=%A7kO+C2oubbe9=uEEi-32*auc^f4A0q_H-9 zV=PNJ7#I$K&M9SJV9-VxV=*zndZ!qUF%~mJLo>)|4B;`BBcOr@%NnNk4I6$iJ>c)y z=j!m`c>`;Qc*kBRhYyb$HvV8b5Z>S2%WoO2j9t>-u}CSuW3N(vr(mV>PQmN)TLvzpcZynu@7Sf3-nCVw zzEc9JlrnZvd#9Xb^p07}@STg4>N{nx32#}gCcI^d0-0mzSLF&X8!pkYvD+ zXvmOaz>sXfkYvb^V#tteh`d}3bYw3hL%;(@$XpcC>L*ar1I;8cG6W)I;p?kFvY5hH^Eh{^&_0R)36P%ndtp;iP$gES&-GX$vwRU(WGp&$y>|6pRMl>pHY zm7!pp85kHqp#z$NW@4xX*#s5_Z7+u?gRfl!)##vAJd6xMAPVGNq-AU%*Mrv5Gcv@1 zx<(Mapw(+&<3O?y4F(_zB+JY&p%FeegI&G}E)UwIcnq}qh+#rA6X;43&^Q${!-Q72 z3edSxptC8M878zaftDWWfw%lk0G$^Jb^>?{BS zL8DKQ&07;%;3_~71L~8V@xX{^2%s@(D|rf^Ok_+A$CF3BD2}kVfv8OVY1mfVd|EFBL(%O zEYN}xZqO;ooCZ*3jL3Htf&vz_2NX1I$^hoT?kWUD4|oqKALxvFkbB{KK)FEP=4^nO zHla&)}*m2urY67)`JRMfCy}4_F`q%VFSyHvN0cEzQ)FU zpoT+%`2e#Xt02b&<^wfe%mprJgIUarRhT&etVrIAm6I8?s8EvG45Y5yi&Zj+RhYRPWQ&BC2dku;Co3nj zGf0OS*bEU6vlPta_5#~2%v|XOaRn#yhI;VAL6FNi*_ijTc(Do?F7O1oy9#usydJB# z9;+l9GZ)m^$XfHgSoxVH^}JcxnK`{!c|2IzeOP%w4gvAmm={!gv9hu;zhr4*6?SFi z^1Wl_TpD6|6dqXoAXcP~`_dw%= z@+t(gF@WTe$Cp8T*fbAJKWH2USv~07U}XML2nW1o52XJt8vipIp9@+Z!pxUKKmB($Y;!h%;!N%AIN9U zgXEFVoConi6*;nfuvOSF^I`QFjE`6k1c?tlH2aXxs0W!3T1SR#K4|ejGT$CezY`kY z4~Y+I;~~~yGNYVt4ch$+F&9Eo+;08Mb1E`LG?*%pkg#-fwlLcg+mx+~u0d)2U z6B`2qXegP<3Ob(7&H!Ey#AF5?Pd9^(r*kqen1R|8Tnr4L_7W2}0|V%m6VNOtsHF}% zxf0Z6V&Y?90PQ#djhBO(@}O~e@OZizWX(LtT=00h00RSP?+KGR0|WTXG$95C&`uW+ zzYk=OG<2<`IrPjl8R$5=IRgWz-3%Ik2Ay>UQV%*Gkco)_d{!KY4{D!*#@oSXr71Bm zfXC0x85qE~%_u|Ga)Hij1Km6WQqKk&=T>E403G28;){X!p!oz4Z4O;4sm{Ov>TQAK z!Dr-aFff411P~v*Cs>n#0n~g4t$75s<3QrzHImv444^(4hz}|QKx-ZApyoD#Xk7*d z(ES`Bc~G7Q-AMq-+aNw@Hk?VHfngm;ojC&oXdal!0D3mQAp--bQ^#b)zyRuvfz*S} z?E{U^gYqV5z67-Y95gTR52_y&Moh*G48ou_l7b8jnjl(=fdQ2ELAx59L3}X=h5!&P z&cKiaqD2`PGC{Nm0|V&p9MByEpneo+E$T#&xFQ3?3=j=F``!{dA7IA7uo@JPphPo> z=L0aBGNeojplW7NNzpSTaS0{^=&VcR`GE_<3=E$jMFE(E6{Dbab09Wsco}rAJy-#h z0Jm-#Am;_5s{@q-P-P4-b)da4$oF`HTE(D-Jb9DuIDv__pDFgAn?_=8D8YcMTLEG)nZiMYq} zfh^c^_&IT)dptpVoclMpbZq>=(BR_g@ZnVhdxu!Zb|;4qPaFI?LOa$uIed7~aP}oH z6Z>=qb+!-8eEzRGSp8pdNcz8;#y!W4c?#1sDL0nMo*BzuPh&Xuk%5b0KWOi>)P*!R z7B`0d#%_EWj3#mkei?Cr%&%G5x-yCa*<|3GqRnWml%V7C^CHhj7M>j+89CTLGO?ez$UK8VapCI#CXPu?42+W) zJ}@#laBxrJoy9dFD1%`V->i^~CI*K63^VTj5IDdzk988;M26Q+Obo9Z88|2LOyHU^ zWAoXUyea-47`XgDF!1?*VBqloz`)5dmuKdk9}FA#Gw%FgVerY|Fy#5j!K40L`kTsc zfzK|#89qq8W@GYu{j5yrH8Yp{Z|+ZSuOHV*yk=tdeEq0M_%#EE)9VM7jHY)ka?ZT_ zk~f9(0mFWtnK08~wsFsJ*y;c3mVv`7KS%#pHw+wJdAf=|i21?7&6T0_Ti~M;*d9h^ zzt;~7C0;Wy`M-vfVP3?G(P}Yv_C8tv0~dKo|B)Kt^g)Lqw|@0 zC1xh^B@BgT#_=T#sN2P%@<`js;Ty=2E>2}AOUx-v10IifQ2u?0aEJ@B_09|w7 z6at!sfL^8wS{93QDgtB)*fk&qYz6{4Md1W;1;~|-pa}@*WJEFAJVXIxg|rg`l;Oxw zP?Voy1SYY~Mu1v&FCYW`;35u6fTj`{83GZqD6}D##2*h6oS^YHu+y)PfFAgxe1quV7?|02v2y z9lUY}nFE>@Vq^#hQRtdM^D3aJ7bKq(Cj`<2+Kq;!kvJjHOQ!ZhE9D0M~O5%h-y~8Wu6c_-a zpovujWE(W>L05Z#BMy`nLGp|Y1|Z4{bfh9f#AKGp$t)nYADABu=7ZRv{vR7d@MM;t z$t)mt7+5|6%m=YSRY6nFYkQf@z7H%mQND!T4d5SwL)1R~4*2Y%&Xo4RI1gKgda-t|wSNZZZpq z4eEk|y%aZ@1;pM0HZOQGOCZ8Y5{!`TfQ$^F4nH{HKtiBJ)Qk+#APUrRW@HEe9mqHf z9Jio*Pr(X7!)}o14hK=7)3g{FLO>m1P=FxCEl45Av5XAxGeVI}2Ac& z4LZC7bc#QS4L`gCG*QaH$i~D7HGrK7#`@fhYtu2|!wzAzau@C9@Y; zG3>GlW_K|65wtJQ>;|^eA38n()msJQdV|Il_;|rl!N9-_;ckX;13>}D2l6b~UI^EY z6~tj+U=9GwrlWGV!MMJl5ETF&I09;`fT~{RQbABJR|qt$1{y|T5CAnAK+Xeol9@|| z!FNwGGB5~%237b#o(Jm($%1NN=4yz3&{dQO{U8}ob;)Q61L+6Nbt3eGWI+`% zb0b850Tc8{6R`at8Bndw+$aoMg8&-a6q*LQ5*%(nNES5I%G?gozY;}1NCtG$40F3M z_)bfZ{h*5k5%z;>Xiyc)JP)E@j2YQ}&;f>^NgC#Pf}p*!!kWws3}8ptFf%Y93<1@n zpxS}?GQ^MtEHFbrK@5@smGsP)AhN8iP+1X>EGWL1A3|g#U^3vK1yu#0`h)oaL{=Ln zD+nlur(QAxsAxePBy*5~kyV8& zSD#f2G*hg?oR`L`z$^@#onBTCp02*lpa-6vUS6NZD$K_Gl3^Dc^Yr>%AOA^PmkG1kJ&E`Lb7t|vobRqg02l`XMR=#o(b-&PXn1W z8+3%s)4DW}PSB||AT>hF2W!D6(J+5x(gUAT(_gE{igc!o2P-e+aN{d=dTh*F8NFD= znFT(v3NYt1v9e~dF`usUV&!3D-pvTUlK8 z;FFSB7?~%4trTW%sPkgx^YUOW^J3;}V$Sno7V=^)1hHAgnG>5>Iob4>x7O*g^0F~c zW#U-F#{3%MWU!$M;2Y9~*_cn&>3R4yvT`yDgC@swL38TDUaV4!Sb2O|`L$W4biwzb z^RVf&viq~LnzHiNvU2&dvih(w@2E`!9ou{!=dsNUsCTA({QrxAfdMf$$HoBSZ-dr3 zpcyj|ACmDvBt#y0t{NndJXa0kgNi|rYM6dd-w&COJXZ};k33fm;v>&hgZRjE)gV5o za6mQ>d9E5H4{E+5%Ol@s1(FW{RS94P5dVPsCSWcDgpWLz4N{MMzZHlNn#V#`54vv! znGafjh|C9-zsP)0VT;U1J}(DkK5QE#Ec`&*K#|ph&JIE5BcG20(tjS!f5>y$AbHUF zT*&%2pvCuBH2uiuzyLafi^-0G0d)2j zXiplbR}SKX$`;U`KG2=lAU^1hO(snS2JoD?9RmY+PF#zD0kofzNgHwwF-RTg3@y;y zIjAfE@j*9ifabT6aTLI!f2FV*UFo5rk zw_{)c&ykxjFo5znNFKCKg~^nG0kj?k#0RZI0j*g8<#7-nv{Vr^*RBO>quVhsfYyMGji-6=ocYZTjGBAMFJAwG1wRoVl72#0z(I8rhfgue<+c7X?foNt1hEfo12c2WL zW?<+5@ogCxKnqMk;SQc-w_{*f1{DY2KX1#xuo1+!V_?_?rB8rpTLy+RQ2GXlwqsy; z2BK{l7+yi?k09EPf#DaF<^VO z>QLGkMB6biID%+f1_oCs9R#B77#KkJj)B5I1;n>yU?>F9b_@&+AX<)rVH${5Wnfqg zq7@hzHh^el28O*LT7`k(JcwpuV7LaN6&Vw=B1|=!?e=rRy~Y{Gnp$WKr=lmC3^6g0(dcvld&6Ih9jh($S^ScMsVSC=Af|% zP?-*z!~jX-S~~$cV+~y$s2%|60byt_jRABv8!>AqPBSntfQN2Cni&`vawH&g=AaRO zkXaxM8Z`oq$AIjGc^$NN;xN2UgseXR$%FP6gJ`I64DVSO7*0aRDL`T{IS>uPATbc$ z!38O&L2M9)$$_bg6xkH2?mA;7D(C!iG#F&`~jH_ zf#?B|j|Cv<8pH-+m|gBjW`o3k3qbq`VuLVD9r_xJKLV(09YE?p7&P<(qCt8=*aWm7 z0mOh}m>l{V3y?baGz^lPK2%_2x@-IjnG}i(0KZp&&XJjC2EI{!KI%XZD z4iqk+Nf2c7jtDX^q@u+yNPihxdbuNmNH3uF2F$#}pt>5Q0g81*7#Kh!2Ov9~QP)_Q znnM;%fB~U37G~xaMBl|{A`Z43V~xe44bC0>9lM1z|71wIogR~I{RdX{eqL2+*oF)y0K1TczuZJ?n@?S{t4VO&c5Ug zV$fjtP}jgQgF)T@0|PgM3TRCNgCc{f&}4-PLNf$s$xRRX!EJCXlHoNwAJc1YcJ7Y~ z+;Km67^*U^|KOP*Kl#{iX3^alGSkE-2v4%gJo_VH!hzq+qI|D;7^EiO`@!-c;0KR^ z?4%1nSQZ@q%_Pe3nukeZ^6pIG8E1clEC~9+lOR1=avI2tzTXVVr+#xLU;4qaAj#$W z50MF%ey|*nnRWI@!~&4`^&c_|nJw+&~FA0 zsac{kK=Kl^6lR?K&Ez3Fi_zflZzd1PS*Lz8c}UMX^P9;-VAkCqEeFJ1CS1Jx!(#*g z49;2X4+Lj{{0s5Z_6=p};yhY|k_-nl$;I1CtV`6twWFC1UwRq$@-q;WaZ}>@_=a2CICi;U=RhFybNGtf*gU0v=I|Dk&p+j z&4NG_NHH@*?Gf;eE}#{}NRz4{t3adrj0~Y5<3a0?85u&wm>3v9&ShkPZ`lOZVxZ{{ zMuuRJ3}`?C$wttW6v$Ra1_KZU>asF21b`?|jmF3j1foEL9H6bEAR4ro9w`t(n!x=f zhFb98IVf~M!3GrrRiz*y@cK%SmlzqqJ_DHq_8Eu)au$-$KrsedU&6=`0HQ!{XJV+; z0nwl-97cv<5CyWBiJ?{lM1#T_qy!WYpuh#O!L~9$7OI27ije`sjVSJeN zXhwkSV`B)J%n~t~1*8S!br>I}1+?Q8bc7Ex1Jc?7&`wg&q!lyBewa#7T!J<)AjJn+ z^VIOYo~#TEh)W*085r2n?{(lnzSn^h`y@0MXzCa->&$J!z{G~&@*qz_^MdA+VUx>z zAbp@IXMV`Mxd3E#Sr9S1EQB_@{17}50SXOVv&-OQ2yQDgmNP;|pul83n5+YnwP3Oa zOjd)*D#%i6Hbz$1@G#>PMmEqK9LO#v*sL)t>;OB)envLXIvB7l?EE+Ifvt@5m>BCp z85)!e85rj?f$nmEbSywlgHHY0FoL#XGJ^6V$Or~z+hQgL1};#W7sO|_19L$I4VY_x zmWhFZ8{{i6*9kOkz`YT~26d_&!CcT<9FPdJ_a!FC$QJ{%8)$Hxn-$d51S#|YaY1uH z49xBzCbu$72CRo0cC~e>21fo0CI$w9S|$btR@k;!MjmaKTS5JU)K4>w@J4OZu zP_Y1#1z}_{(C!eB7z7WpX-4o$2jqE1P~{16DP*h-$6i>_kyQ+!@n~iSBKE@$#9Sk| z@d+w15Oa<8@a?d$`Nh?c`NeAtFo9JNf$Pu-N07WI8}l;;FE-{`^`DrZF{Clis%KJR zWPZk=$2_YZbTHvF1}|0y=2`W6tb!ngV73=%a<7pwjg9$#-7Z!EHs)4F4x7E&tm1X7 z0?hJW%-LSdVxWDjJZY=~%tfHtI6lzL7!i8RQhLmSdaS}ZtOCqgUd(xE%*tM@!v3Ji zM38zJ(0!}H=FN;v%z|Fbd3wy?jj%o-ea7=x zg_(WRf|z;qm`l=_dAyjl^*~dJ>3TuToK0P<;>=DUJM8qBxxMmO#hKUFgSPuNG5-fm zYd&V=n83z7x6TXXn`ew(%|5K0%vB(laOrunDh9C%d$Tcj*Lkrqe*sT`=7aR6u^O^5 zOX=yRd$KUH>M}2722F(OvFduU@_3~&->;g-!VH>qZDRuMsV(zjz<9pDea{$#2l&5j6V% znm0n9hk>PknEX(imjtzaAbx<%Yek^>7qpKKSst|h51Eg=#}*Vm1!(%w=OsaN3&{GB z&twGYN4}Q>#9xJG9;o$^2t+^VZUhhymL5P2d1O9l?gE()y3q-lZwReZVEV1l_@HJxvU*q*3{#K1hZq!o zpmj{h>e1&ZgVD?nL*vJx@j-JY$mW6eB_i|D=QTm6LmO?)HVTiBSH6=tO1Qpib3}3Fl!oi{vkq4?1$6Nr{1h2h<(5VPFsd(aH=A(jeM~fk7Tb zt1vKtmivO{8$tJ`GTA`SzSLk~0N-b#3Ayh9Bn~~_%aL(hd{J61H*L?t;WD`4@9d%#{NO`;h=^tD1JdrUl0wO zd`e78DoQP5&?`x;C}Ge`&d<$F%`0Kha}4s;ODriV%1kOPLCjPQ_`DUk5k~I370G9U zqR(4dh*5vu3RI3j$~MHk#_01_HPFM0K&?-ZTG0Fgh(@2cYJl$b1kG!J)POLkFAC~R zf~qLkpa^JP2;zh+$ea#H9#lqvXpq?;%*o2Y@EKm#Lezo8L25u4#0KF%?2z>dAT|iY zcO8l)G5%|V4chylegIZz)S`F<9Vx(KKm5Cv0*K5sRF2eRG- zqy~gR{sqzK^HvIC#LZis;bCByge9Co!+W6c1ep!O24cj`TP5%_Fo4c|1-ai5b>7MX z>;1<@*zZ3!w=gIA?9du%kP8`5=B+>?p#8y(8+70DbWhpf+QA0i4}7tayW_9YJST?_ zXB+*&b6O`G!Dol+F??9s=#!EEft>+7yQI!Hm3tmb>ZY)z6_Os7ukmk7XlR?4l z|M!3Y859@|I854|eqUrzVEM?wRVsJ*+lPW9FBuy6F06cgoG}2biculN4WzEk>GwrO za|T^Kx7!!l=kd*D&|~(qyLS*N%jFzgqaG3718=?(9EcQM+2c$d3N!G*;w?2Sxy zqKa<=o=GAoL*cjU=~~n=x1&lN-02 z;~QD-z&Fy|Ae9n3H@x${_2FIiEe72a7en93dV@?AlDfFMk?F?)y)DW zH*Ggdw}j943k|@sY_lA8a?D_#dBE90g82d{T$`N!Tr_aAgu4o)|6c=x0?#Z4MNlY% z=b~ot&Aj`=VFITVqb7$N_e6mU!gCo_roLt1HgdCe3w$F0c9-KD0d7W{Vl`l32zy=L*Gcv_Hfg53w|S@4GIxZ2!Z$@Hpms6GuS_JFbYm- zf6KrfvH9!|n+11&I4ocU&1P~i>=&NF_?m;I+fCDL%3Frr4lW=QJy6Vog*2l%$h1f| z&`GPiTwC5Ua6h={=mK)%-5)j!I^4MC^Uh(|Kjke0H^_FFYo@(r;0Cz}C0xu|K60?M zy=CBL`^dre^y1x@0#i6%pJwO!$jHTL(|(b0hVV@0Ijpm|KQeNI((KNUjGT-vEG}#_ zm_BkaE%?aDz&0Vm?d}hb4fS6(uABc>k~{E?6gSL9i_NUR*}jAGkxKu@`ELce!`=u) z&wk6mt>tD6j~|7Nj3(S4Ik@*YeZ0KKiDQ5M2Nn(oH^v8ll>#=2Y}osTr<)NxclcZB z+j9n`FV8`F8VQ4j(823L$Q;+gw*no0UTkJwS!z*nYJ8fRiC!}3{It;G)S}{;=*^O0?-~^3AA}J1arJW#@jw?1_Kb3k_w@|+bqsO# zKq&Te^z-y{L-2z={oF%+9FdF*aSaZMcXRag2@P@u&-{UQXd`(QEQT~22;28eDBHEu%uFB~wTtr0L5I3x-;te@pI-oy&0t9+DV#tsK5(zP6$YjV(tZ-&12*@nUFA2&o2k!y*%nLDMC+o zK}0k27&7w=8M0wBgCK)Lj2I%4Gt$8+%>pz=&k(SKnSo&!_{0nNE=Q0wXg4w=Lm)yH zK1&GNy$w1NiIE`;M1c-0Wn>5iQJ{m?7!f<3K@(vPU`s+l6lk`AiJ{g4VPxnDW(I}} z%nS@5VUVRD4AKQMmysd#3ooWaa6p^FJ-JD3B~3&Nlc(mTK&hz3z0|1dGsa)4;iAx?}8L7?@jpgthz)L3Q) zhBB~a@X0vP$}bPF{tyravJAB09VysAE(F=cfTk4WYmib99Ro1|G;0Xz?lLljd;pz0 z2kNmg)S7@C0y7xq36M^(sSFGZphyKdn32H%MBM-z7678aYbhCO6+mxQ6Opp*a8C(1xg=`3?T>$K<#?C7eSt3WH10xpg3h_n9$1v zVt_UuFf&Z(W&$xlCW2*PhJZO>GZ+{cK(PW+!NgE&0#g8DBg=z=5F`eoL1Bm%lpyPc zAU-hx(I8JUGK7LCFR)KQSpaMv$g*!xl_1&xEDg%_U}-e-q0TZuauz&CpeY5f_(eKF z0hCKXb2#9P0b+oL1(_KpG%$h220&X5!5q+F8E7I2tPI2eMF=?HKudf<%X`7fz>Z^J zU;ypWfJCGr$aA1(K4>F069WUtBj9Ov(2`##R9}Hs_oC%zvL=tQPXZ&(CkF2}W;a2Z z1cseY43?w9`NW{3Vj(?YTob_{pE7|GDVf`hL17It12SXFWX$*(v>6_@DwToB)#AHte34?~mY{6X6tur7ICa^+wSPKZsRR?vl zK#C!^I z4-%vdOb%d+roy<^V8vTuT!>!K04La9h^!*C!^#BV`k->NVO)q84#Kz)d%wfDE}%dL zjaD!~oDX4w^`IU?44Q7{1`VNe!p@px{Kv|}!T6IEyqy}nM&dUs=nh&21~BIjD-&1- zg91$ME@d9e!Uu{t!d3UHiYWoK((b=E`fV>? z@MaZw%PM5d%I*ph_X3HpVoF1Z^Rs!eva`9eG2f~MZ~Q#O#8JX37?8roysI{iRfUcD z4ijkBw@{B&1+=wRiOq{uhQo%Hn{6wrurVvQE2|iYWMf`gs|O08+f1KWb@W-4*g%1- z%c_#j3f6IrRfMgURmPZAB$1Vy&5Kox4Wx@zm|0kljd@z_Jdj1NnVP_gh1qtpDtWWY zuz9hHux(}4GiDWI^I{eDVxC&-#VXFm{Dmovl`FuVjk&W{kClUsxrKQi8}pwUFIGM_ z=0;{OR#xT(bzZDo%y${nSXr4D*LksWFh2&x5J-&}8*?w~E>`)Qtn6&_m_Jm3{XB`a ziOq{uo9zm#D4QNDyB8}rTL2sLtEyeBjBLzvS-~4_A6MxysbD#68FFqZG|MrtFns)9 z!^psZIM0_IJV${zZyCZz>=A_UVfq;uAbiAJF@z6l%tF*a_)8%i2AF!-(jXWgw66@J z1fm|)9z^DYnnTEZc4!R)(+@i>0>;-wleb6XgXU|H%|px$L+pnwG=iCzji$c}jo*yM z2hHmsn~%7^4`M!Op&hb3Xo(;)A8{uYME!m=^FcKRvii$t@^{eqpcOmF>OrR;A@g6O zsRym>L6!&YYeVLP=97^5|IqX^K&viT_<>lLyU5A;2r+<`hJrZ^ka2M<7zfG+&0)fXK)ONqULo_5od=Q!b>)%e!2?lH0g${b zk_Hez9#ji5Fff4XSI}HAsE@&A&%gjW`x8Wi_Iq<#F))A{aa@)R3?YmR3|w{$44}Q0 zT-FTWJ(OG)ko(U-^dXSE1p~t$5N*T20E!zf8wQ3l&;mhQ1_sbvAV@!Gu8+%>f#DoT z+>U{Pg_(f?#1{e4c970A$hkY&Q-Jc1%zws?pJ?Q*!CM5<2P=6964~lOl zWd;Ur&J$JuQ-QtqO$o#aT#N1RASLLL_?8?bchBbNPQ5(5%+lot* z7|>_4VUoG2xyd<277*J&)A6YlnJE?Ed3rtQ&?~aB5Ottge5|tM9C^*a3%)7|S^zRI zF#M5ZV5mhZ17S?i0g50ttcMI5l0)c1%xi=0Vn9|0Dw;rLCrmA@1_13vN1ms=BF4Y~ zy6Fj&oR0W?PsVuLVD4&+Z{f0T$bFn|u10{H{9o*d?nVl;dA@nN6; zR)VU7`FB4b>i$WPy&yavst)895dIGG7>EJIAT=PSC%7I5AB6zoGJw=!oBsx_F@os< zDGcCeU_e#}@&`y9bb%nUf1gM~>UofVLG>?49Vp&5qq%PdKLdjlED<2dtw-Cp`9%_u z4nS+TVdjZ~%0rL?p!kRo1A_qQyfy|%_<+=b?AJFoHGocNqwd?pG5>95ZbJ0g*jGS{ z6OiuClx1LK(0%#Aol(vIl@o{mt3XZ$6$Vwd*MU6w9~jx#UI+3q>|eVnjbV+G#-)HC zY6Ss5Och=-uoyc0P*ZUDVOrq!fsrZThtdM~2!|g^1r9$L7qGnMVPt*H!yfR%a6!Ni za|MSVh6*Pc9DbND_|L#%$YLJwgK@#3NT&dYAM6VlUbiv&x^!g({4h=EOK|vMs_>S9 z#q?B$TjaR}r@%!r%&$2Zr)-k#;C3rILTcK_+jo~lwp$K@WWi;7Xyn?VMa?tNkU@) z+iMO+_SbwY7k_YU2>4;5(3Rlu!(_t~1{RZxKX^7UMV?A<_`$M){WTZkmW+TOh6bpeAF2)xKhz4?Uh}a>{7`iW_@OS~@k3R> z;fJ~d!|PT?KNlubpA1lJq`LYiIQ&p^V1CWSDAxhCyZHu^-PD-x3@J*?D^ANV%5^Kv zOD@UG&npH`c_w9+6s3Y@JQH&$o9@Kii3qBQkcKu)I4%qsyOOkHSb8eam={h)J@kq#dPiGhksq%CY9 zA<$Sb(ndQ_MFOjy5IiMpH85yEMn*brkz~@&$W`V{g(fk0i5G_nqz$G_|A0R>oAPO{9 zh&1I2@(xItkpV0V+S7=%EfO?13K4>bI4E8~Yi5zWqr(7MhQ-Jb4w|-w+*lC;>eNB> z!u^0YbrQR}iyN(6U;bvf9RbgP}v*YIGW?*1LpGC3fVPIfqWnkh$?408O z?TxnxRCeNf%e=X>Ewazq+z=_fMWEH}9E(A0kV(ZLdpNeixFujmorH1AK#Dox`{^KD&=Pr&0%iyo)G9{e zf{wEUbIZZQ3t)$V6Bfi_+Yt`i0XpA{12hN#R=*Qu7YA%chj|y+VX)yZ=G`ENaYMs- zFUU)rpre++IuC$!a)M4)LgJnT)wCcV?gz`l#;KSgT-dc=%=^HuWC8^uGiXgR$ONXD zjNrItVPS!76=1Xni?A~>feuFE0lAF@G)E0m&gcMSAQ62gMC2 z-&%r|KsP>sN;Z%RP<(-CQ1F0g2qv@Ua|A660Cyu97(rWyosIMiEE!mn^NUJSD|B;B z7}$8(eK{C7nYh^a7z7!Gm_(RF8N?YS7$q5{7^N9y80DCi7*!b67(u7bI0pGLFoHI5 zf|jde>|s-YI225R{Nlo=(8t)t)XChz($3n(*2><(!2l|JzzP^3_h7m3sq`^+Gj%a{ zvUISvv$e6ea~q6 zm@NPX29gfiWJH;!VS@0GYIBV9Hgy?US-6TICd2~Spa16EB>R(>N^E(2D69ab(MRy|z9I<(`GMRfuCLE3>B*{K%*wCJs-O>cx;`tv zA&S%4^g*uXGC^{(RsbuHCn5I=Gsl8LNv(-hm^ljMaxc)NgSHnN^R+s3$L?kXIktyd9!NzgPgA9&8h(A^7ymLdb4UV z=jgHWfDT3#(`RL2&hcUuVHVM2mDXn!X3q9v`626fkD)_p{YmA6+q-6dO;+F539Cd=4XPW zz!)MAIs_TaWq|NO<4?%^4G<0kOh2qvfbl_R06>&L^n=C`k@=v#FUWk**?h=+(4H7% zK4NYKVjgIG5m`P4&Hu2q05JE!?jeTp5pypP^I+$9!{kBZkI3fxqL~jGk3p74?8D<> z03E9jkpq#;44!bkAU+!dXo(Mq1;L<_4Z;GEnCCr$YekS07-Np@gXibLav*}40aPY~ zSP%>v>xZx)Br^kOL=nOUk<1KI3>=WLAaFwkG#38=R0}aMFo4QfAtp`+&^{xO7eIB8 z5a=>R1_lN#P|FuYD}zj7V9_T&yQ4QU{HbbwV|{=lm=a10a6c|(*V(+GzX$xq4J>S4d~8B&>m3`4Qk(j zXwW<#hz2!qKs5LqNfqe%ktz%fpm{uyIB5P3M1#+fRAFEMwQ@lG^&s zAO;4|otU6;A<*0hs5=H4yO#om8y9qLL>)Re!VBp*fX)X6o$JNK&Az=v5LM`0hy(+}bf`RN^$=*xeHoMw zDu+R1_Tae?Rmk`v=$ugST!<>tKUV`NL85lr|*+BaU zL3f{n<~YFTi;6)`ga`4#cW#O^Fo5R3Kzv0|I7%=ufabVBd;<_)nt{O@M5{6|fXXJ2 zJ3;q&faF2t3CNwGG6%$u1*wx^V8{T`stgREvx`A@g@Wb`LGe%n5?6uDk%8ulK#gC} zoCP?2s4_5s(}x%X184~p$UJa55r?J^RR#ud`jCL`;}e9=eW*h3;FN^!<5Oi|cnY#d z8gd6K$Q;l@J&-#=OT0jQ&>6x^GSImZRR#vo;zE!+)j@M1!VCUfJz=v`hb-;ppGmkKY_ZeAR08z z2nr9-m?xapfSlI{(g*5)gU)FMb-+RD6F~8)!2q5c1*r#@8%hiept=?$59+aj#9^}( zMDG7X%$Lw%4O0@4G*ptJ>| zK`T;`&%*?*EeEAH$S?t@9S2ecDGQKm^ag&&I5}tt2xJxrgY<#w1Y~qGkl%~w1yR=ALcKRc_2NYG6mV*4kUX){UVS$kUr2F7G!&;Fhc5ikQpEhQU{_z z^Z&^H1+9$$>4(_?QwLfn4HEDg?3@H0}jb2RZ`^WH*Qn!XP;i zMxQTP!VK9D3{nHaAT=NwRF)&#I|CHqObiU5a0a!AVD^I4gD^-B2=8HKU_h+Y{RuPA8_j(joCr68Y=D^un)(2-Vd2cl37K~RsR3b-90-HzP!J6g17SyG zMB3osFImfBMFzMyB8yDF^{SPZY z=B1<<7#TKfeYny80|O7!YabS)A2J3!ADMVkI(l4{KQJ?^d|+k?_`&>uHS%bH!w;4R z%q}c0mw&K4NX>{%IP!z#!IR4yKt~UN?I?hl!#%lJg-7o zk3_je9}98`W_4k9$?J&eh-={c$i$q}ApfiRU!Uu<%LQ$Vno?w z3i_0Yu@T11iJ=+zo=Y4P7m%qCpVT~rJY*6BG_?Vq#Xy=L$z(`mD9J5gNCK}P0~KbB z3+HxQ>Kup>bx!D*w5qta_|r>qXr`* zGi0EZQ4^$(nGw9@i%|=7W(6}NXr_UIQ5$sa94Lc0F5$33yBJ z`k)L9%-W2s%v^?S%z=8WTx`sSUaaiQyiKfJ%q3o|%-XCn2Hv21bp*Uw`PlT>^jUd4 z{8@#(Sp~oxX69nh$flqkcuL!HRVV;7bSj|F z%5KOi;K9nzT&%~+%myBQ6!e0a2n${~4eEEoIH0x8pz#9GT@?^9PVo2vXdMMIAC%UR z`NH5#3KD^+2eBX+!bgnnLHMBh9$6mI27<_gwi+VKgU-i5=7ZXU$b7_oJ`nw&F(hPp z#M)?xJg9GsEH94aes~rFD_{nncLQdE30O-P%wZrrJ_e~|A*w-pKS3!T#sl#|4Mk)= zsKtcL7iV|~DmEA(`2jTE1@arnxu84%8Xp6x)&g}ZLE~Rg?VvS%pdt=LgKl5}(IA^Z zG^l(7(V!tS5DhAtK<5aVg8G}H(D4sZh-3M6R!29%aS z=7a8l0+|m=J0SDH=OM8|$5EIeYyLsv;Pa3K85n+o%mZDs2pU)5Wncj10noS*s1F1h z#{iF)fC3eyP6X0N0{IVA9)sKi4j)nIxjmAQb|6R|)D{Mfr+}(pkUFqGL>L%ugUkWN zA9Ok6kn7KbN=0LHP;9#@0s%nBM?Wcg$ zf%JjW2eSJ>YtymWdl6Dz!29T+F$$1=n7=^gf!qliXGXU71CqVSeRPl=AbUaS7Nif< zcL9wZg4iGok^^D%zB1^1Ezs%DAT=NiQUjvV`^rDq85lrgT_FF0N=uOYK<)*p2VsyN z5O!u_0G|O3VuLVD4%EDbu|eW{nHU&skpy5&^uBTg2jomMkiE!#bo9RRFHoN!WH1!N z%tP-hXK+IL)FAUfX$j^J^uDqXbp0XJIBA4$ zTA93a(lUPMC}sN2-OKDDsH<-ovdrGGMj5?(n8obE z@s=^G<1Ir}^1B66Deu~~Qr<1#QhwK7rSwiMO7Wd)mf|}#DW!L+TITN(yo}y0v@&|< zD8=)Z(W~bzgO%AkRx6gbj8ZLc8LT+xsJhgDX;?3!dEmq0hRJUJAO0J#O!9vYeAQs&|}T74OuojNUz%W%#arRnfZzTp%@x@3^B<-tlCmyyLD?e8tm9aojoJI*e@w~Sur-ZEHKyi3mE#r6WR)+6brHtM^j52z+ zu&U^tiyw3Y;goro3g4 zDt*T;Rq~F_s`wovSJ68LaDFs;=fGw1&dtj7ox4`?yG2!n?-pbgzk8%r`0fE$(K`n# zqjwBk?r#~Zj=yEdQhB!^O6lEFucUWNq!QjOfT!hsUFvYcWqfk@0L^R)sKj?1St;*0tNh+FTAh2#pjG~EnN;dKcCDm$ zY*wZ3o^UC>W3N(u$Ch>CErZmFw~Sn7@7O_c&(-yoA?wszMlO=_B-g~ZEM5~qIr%MX z)Wo+;S`**0Wlem`Y&G#MdljQW(K|P;!gsDx#qZp;3f{R`A@U-dmccs~F2i>VybRwx z0Odojf_F|*2Je`-jNd(qGJdzH3Y0G!-!gDDzGaj;_?AiP;9F*{#10Ls1PD?9^FG@_wtT2gBGY0ihD7beBG}Mb`Ab6}7 zYJO5_Nl9u^T23WmKNoZ`7()SQb}|^cydCGTZ)RFri5uu(E%@nM-~-A)!@?HvB@B>p zW6%L;U_}KX<(Vldu#>%zmf{z{SJ&sHGL)2Ora0%PrupWlWTs`N7C}vcF2v8zOHHbT zuChn>Y-V0@Nn&1dDkvBs!`THOgBUUs4G}&-S&^Svj|&5&orkY~tHk?fhrPzfR` z5^CKlwB7AG?#=NmC(CK@pmXBsg?K*b`HKyoPz5l}iZDK|5( zv=}4+V1^Bj2S@YK-fkM5pX>ba6JWvV51;P48TetY*U8F6hk8j+k^q60m3dRGGs_JXGk<< zNHk_hG-OCLV@Nb&NHkzbG+`((XDBdZ$TVcgG-Aj!231WAp#B>pLjZ^Zt#3zK6c3UH z2{SSTf+&bAd=MWb3z~akWC#FJJr<<1&~WXW-u~=l9HELj4&_+Yh;zu@y2~A9M6%=@w7#Ko8YrPpJ zbTA1qLvER621$aIGeDN(fSk_EFrg7VrVWxf#|W99WM-Iv*v<&r?6?VZ3>!#ru7ZLH z69WV2G&=D4SD;;cX5iEAkc-rhiP3OL<|ghUoweID!U?!LF5I zg6!&t1vD4Jnii0?FioIU6`&DzW{__{M~8u~N`aZo#LU28#0(A(aBRUefxLeS64Kxx z09{uKjU&))#SmqnfISCM)CjT>wC5YDsGA9*gaN$494d$iFVHOtP{B61N>I##ww1F% zV;2;&P(@vEMW6ta0METlXk-Ef80Zu;aG=2~1l<%5)do8B03r-JnjI>LIK3Klz6ogT zm6>5e8xx2DTEWlEFrk$Rbh0*RXF3~*GgmA`asbMI&lQ%2T+QJ1_|tjA_fLfA_gtb1!quDA_m>-j&2gj zcFfkALBR%1mTjPv1Y(2E#Dm!Y zGXyjf0a|?ta}mhjP@BQo8FUgEsJH@WDVQeEbpp^_)6N89fXWtd76KhQ07@gwpt1?X zfSQGp6+npslzhN(3`zu0Mc{nlhVUvPU4h~g>a{i|5Ce3`0@$CR_=NfkoJT=ysBz#N z1amSdg=@f4IVgoMf~1OeCeVq5P#=Qa0?`19F{tt;CJ+O(!Vw$>py&hXg#{Rh4YCj= zO@i(Z2VHT7w69K%nSlZ1H?XH6mM}0VF*7iL5;clu(Bq<1f1cJS`eM!)(I$mp(Hp^ zR)Xdj(7Ibt>Vce!0u@A5YDldUaM=KB`M?ThPy+>&0Z`85L~5Xb8w*HnjSePI>jdOK zlthixIss=Fq$Ulx>;yGXpqfBM8pOd!4U|TB0|lIqL9G*za#*TYMnr>0S69D6H@D>i3zE70yY`cIsug<=w%C1>jWGGNDU8A z2@5eBsdWN245_pGd8f25{>HRQ{qAc1W!gL}M3J zy+D%_qMSl%owOpiPFld*DnTt0SbYm(gDL~`C`4+Vw1As5po$v3If2w50Y?;4gQS%S z)*yi;VWc(*I1nHqjnXCohc!~01e_*e>X6zX;D|$NgLJ@~ct~xKMkY`j1XKZn(<;mu zqy`AsI*`9W;fL-wq&5fGZ%A#9CMKjdM=M&J18gYFGFY1f>;h1W0csPt!2wf*)W&E- zZeuhvfto0wqy=jgg4j?Kz;1$>fYi)rVFJY_R1r9wV2Y4h7OluFizX&ex(Br;V68h4 z8)^cIZ;)CR4NRca32G6bq)?>BL?d!zqJaq%4^ZXpOdtlx0u;TVmP8!*_+WU~9@LTm zWqfdh3+4|{O9Cng@+w3a)RF)RqF3#p5&$ZW5@MjT6eNyPo`M<^P(eiA1+^rgf`~QE zppqUch{%bgtUqK!?6GG-S)<6R&I8((&kEm%&*~}6zyLbw7_!$M%tf4Z4Cca4ItFv_ zZrO({XM}Fm=Y_9oWMyFBL)?JNk9q^H09+Y21A`!9@gu_<4$zVyQ22xL3S{dNh=+>7 zSrfENgb}jp(S;FuM=odp#FZ0d259aVq>0h(256uMTpfd&UQiwJOpJ`IAQQl95|}`W zSYcxZjEPLW91IMsp#4l>`6Q-|Abu~11F|9+EYHR~0a61qrZDa1U|?Vet+N3sVN7Sb z3*v*;ErIzN5I(4_59Vh=_@I4c$b8TlXUKfe*=0z4kUtn0bHR4eg3WFT4p#;S#yqec z?66ao8PmXgh@DWsL43}@0F`5(il+BC8vhR(ACy_Ze#-}&&7RB*;vwvwipD>M#{UoF z7eMr@fMb|}ff360gz>SsJq}fly%@%a>Yahc-v#4C%wj)}#(x6i7ed^k243CDz`$4x z;YYyuQ2ALfK2-h^j1RT{I~rdGG^PnkcTn}PC{AM)%3^e`* z7$551qo{l^j}emRaIqP{$q`iCLJNc(Mn>jaVATu^jJcrVfcYnkn+GZln0cT}KN#~t zg#oiRj9UPbd4)`FdI z1jelgb6>)^5LrFY05`}Yh-?^)3$eEvl{**4g(yA><3fz$0xh3H7^M&6LSzeJT!`Lj zFfK&)28;`l{RQJfWX(Veg+M0PfzmjqCyd(w_E8)vw-}Y%jmlk&%H4s=J&VeHgu;a+ zFL2(#&Sc=`<6vOm5$0fE;FX8wL+0fid?L(qIlvwQWjf~h9FX1h^FcNK0uCmy44AW! zgBi>LXVpal+sRW`Sn9PY`T5VVWgm?ln;ehoV87Dps7rp@29wr{v zZYDm~E+zriP9`DN4ki&Nz6!`%Y?v9KfWd8s2WvMI4{H|_A8RL*0BZ-6kP}}41A_}2 zs6h!nxC{H4|IkzZG51J;_eDVF*J0<=fM>eVX2124LA^hc4yJ(~MFYJ*0Njv)?s7QB zz{thCvp$WLoB0Go8Y>5z9%~$%FX-@owsuzTOt1hWn+dCfJF7mM9;=ETE4v;O7Xu?B zY@5Ur7DiTfE@tsvY|Jgypo3SKn_0csnEzHaF*md7fi4uUo~%C65U!aT8FkCmPIJ%b(_^XG~tR#i6U4z@J#F++T8%o7-!_PP6k zAS(;=Nd_-gab{mV=5jA)9xvuRP%Q9xF_(J-)qY?Ar&_UHY|KCFz^S$mbhW{!x+dm6 zMr^4Tt_mELpX$J=c0Qw?w!1qb#eyP%k9k6Unzx&`KeiO>gOp+my;x;@1~|obura@@ z1*h0)OyCszsurALXETAl`4q%so(+;>ep(Ajv5T0{Q|$d(FE-`{Ot2Jtw-%gYcQO%` zVz<@nc?5W{$}(4a!P2admk+CY0CJj@VHO7^HBg8#^MF`*Qm!Yf3^OMvO-e%3WT_Xc z405_vV$K95UO|u=VW=9kbjydDZuyYY?aLZ)x}C%XPq+QZ>DCOCY~%4JTMtmW02|;PlkS~-8z8?d0CpTz}86w6DzM~s-hCMQ07F^VW zL?H5lXnfFsJV=&-0U{3?Zb#-r*dP)jkJwWN;pc*+z!<_uoDl`#gZ4pyrJ?2{_KZQ~ z5%^0rQU@nmp+I9k6z&dqC&zAoD@ztRVA2 z=kXx(5%+OG?1zn~!0ZE^yMnB~6V3jqX#7oR{OxG`y=eS{XnfE-F0y^s(d2KT@j>VN zAgjNJCJ)*_f-Dc3El1|RL{pErj{_1OpmTzd)q~E)N9O-U)6WF%6oXVi^s}S!K@&(I zSy=djCaaM7pu6CZ`P^vf8#HT!EDxF{LFOBv*#{bpN0tYjM}y1G`#gOmDhx0dbxlWX})itSC@+1ofdnds;!~*?{<VEg7(0IN5vT!v_KofKzz_aU7)>{vCuu5 zu?!5LaT%sq25|owM1#i5L9`N7ohFplh0-8*F~vdm#Kti&fbOLS@j-jLKs0FV97Kbx z0@0wca}W(WvkpX8g3O77o(UGmzyKOc2Z>LFii7S%0P#URH4qIt?+`?T>M#%u8e0d^ zpgIghgU;Ot(Z`|sL938Je9(*@hz58VBZwR7)L*+qx8bN%} z<(nWHe3o1s0|WRhxj5)qa&geJu`AebnN+=DQ zqXEh9gYrRhG$8(EC?7OO1LD7c@;^f9uTc6Qlm_j$2dU#@h4@nlN`vNfK;l|ZzA=C}Y{B9`S52a^7={ZmuH0K6VzY)sc1*P{v>ElrPG?cy$rEf!N&>S5| zKWGm-hz8BkfoNt9h<`zIbRfP2lnZ73iL@1pKrE{Qk z0h9(!=z-KXL-}1$x(`ZEh0-&j^a3co1WK=l((9o#XhslZ-XSReB$Pf2rLRKin^5`z zlzsxGUqk8lQ2HB`{spB$Q;Z<4wNo{(&bRP8cH`q>2@gH2c;)L>6uV^E|gvhrB^~}&?G6yzP(WX z5h#5EN`q!MLGrhu{O3^mHI)7WrGG$a(DWxrJuf#Tyg-wlAiffm51RD^@y(%pXDICs zrGue#IFtrWi-OeWK=~C=x&}(OLg`K@4VpIvsh@=|2JGUxdx{ zMko!M&<4q$gz~RK>6=jc5tM!gr9VOGZ%`UE0}j#;nvw<4;`|W*N<(STlsHJ-7|OSS z(hgAC6H5C+=}0IY3#CDG=pg;2P<|bhZi3RFNp+C?EGU05lwJ;{H$dqvQ2GFrJ_4md zv+yAOccA>IQ2Hg522IO@;e$~aYJblC@le{6``~$lm^Y?gY;WL`Jjn>5Z@Qd z2hHSz_(@PcXeuAXFNg9$bNL{CKa>xe%m?w8L;0ZDd=P&Rlnln7a{hjG?;3iM1Y*jeLA&@-`Op=V;nGBAM8;NoUr0Ns1bl)%6MI)@Q-Ru%Yc ztON!IUr;|?j)4KRUlP=g01a_~=wy&M4+8^e>>H%75X6^*jx!`MFo4gZ=ZB6rBrq_5 z#~b7s80Lc1B``271kqB^dst;4XC;BmIS3M0U|;~95d`9c&J+TjISm>!2l2t<3n~l@ zZ$au37#P6!uc|VD$8|vRjG+Fo8Uy&=Ne~}Aj-bu}IdfbCdhem=gZA?i7#QAy^qDg- z`~=Yn3=E(#VtAbDE`hDZ=?$H0&Zq7xVxGC{OG14Ai@PGDfD1knx*44_4{Ape8b zxHCC2Fo65{2@DM2e!dd}1Gt}`z`y|R=Q}enYz65{U|`q@qFopmj)Ld}28NR$+LeLf zDu_;CV7LjQ-5402g6ISWhL<4Poq^#ih)!T&0F7lbc`z`5#w0=ZbAtNCo(v44AUXls z-}ho*P=)d}L9{mmgDHqkU|_HW(LM|et{^&rfx#0*`!X!T{12kp85mSSbOHl|CWvNbU@!&IApe7CW(EdV5FN?D5D22#7#LzfGz$Ym7Kn~# zV90~gB_NuYfuR;egYq$mmSbS(0nrHz3==>!KLf*T5S_rlFdszAGcc?I(FqI;>p-*= z1H(=b4NCVQT7iM#1c**xU^oM!l^GbWgXjbXhT9-og@NH2h)!T&cm<+W85qFh10er{ z_-YIcETH~#0s{jFh*oD{5C+j23=DE0T9bi66GUqB?H4>5S_rlzzFI;TQM;3fanAU1_2Ol&A=cHq7xVx29#esKzw@!hF}n#z`zg=q8%6*l0b9<149~!c4S~E1kni$ z45c92iGiU3L?;cgU3=9WAv^xU>cpM>tfdM>@;K9If3nZSvz;F*ldonP9#}7c|9*FP7!0-b^ConMl z0ny$J4D6u(b^-$fH;DFOU=Rb*2@DKUAljFKK@~)U(m#myV_+}=(FqI;79iT6fx#I> zConL$gXjPTh9D4~z`y_=PY7gSNQClJL39uULjj0RU|=W#(ZLK1^&mQdfuR{hhcGbo zf#?JVhDjhgl!0L`hz8YbAUcA9VGW2*U|`q)qKz3Cc7x~y28R70I-G&w6o^h>U^oY& z*%=saf@n}Z0HVVf7(i$7F-0;kdLB(hLj@AXWCL+PYhR!8c_)k^=VyY<18pS$sRQYgM{^%2jf3VBL1ut3NF9grH6KR_zoXPISBFxXyzJb9%ybCrUzuk zbXDT+xR{{|nU4nP0b!6CAPhS58bpJ{K=^_xh(utR9B3{Y`P@#BI%3Z4)KFt!K-_}| znd=6b4%*XkiDQ}rf+O&2E9xjd>SXAJ1$HNVaf@g+X)&EV?a8$Q=xisBChH2E($Xi8q3|5kvj&d5QL@4@`Hd|Yxy0*agu=D+3SVpL>(F#jzF z7t`1OMgCtJ3K^6SHa0dkyk+5PN{HB0;Lfn0fuX^YfuX^cfuX^MfuX^gfuRA^?FXk% zGMBqU)@kEh%Z+gkT4r8m38>nl?B0vw%=Em}6b0~+WR5|;@xG2B9`V7U&d#pE!3=N# z#~}AmUsu17c-NpH{~(08kE@@1hzGi8uxFHOysu}luVaX_2STx*qo1dr8-gF~>E|Bm z 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

Ol5__HH8YI|JQ01JVy`@xj!A`YOobw*$#u&^Qf9 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

`;7nlms6Luo}2ZN|W$3Z->Gv^fKVDU@~w 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

  • Z@vpD=K2OU2F*M*=u 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

    WP-s7BJ_EEz1+)g>ov84B(0m7I?+R!S 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%0D$)P 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

    nK!ky!K!$~) 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�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%0A<5g3;rgzo* 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%0Ae3&DucQbpT5yH+=W8-H_^SyWz5@?RrNK+jZ;R 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

    t*6~MQO|QXWIH+RdpMtGxBPACEQvw{oPv? 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�wxIp4T>280%8RM0%{ck0%i>Y910x*0umDh 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

    g4NgAFW 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ɿ?srskCPS$77J6XTT@nn7XlN0qS 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

    `^vCH6}uhT6@GFR^zt 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

    P&ZRHymazWc_pRuqoeksveNP=;+MWFK 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/ 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 diff --git a/Drivers/DSP/Lib/libarm_cortexM4lf_math.a b/Drivers/DSP/Lib/libarm_cortexM4lf_math.a deleted file mode 100644 index 66efc87f62cf9d9ef826342e3463df2d6705da20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5359640 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