From 4717b538a72770a17b5affbce0d76e6a4e775651 Mon Sep 17 00:00:00 2001 From: xushenghao Date: Thu, 2 Jan 2025 19:28:07 +0800 Subject: [PATCH] first commit --- .gitignore | 31 + .mxproject | 32 + .vscode/c_cpp_properties.json | 18 + .vscode/launch.json | 24 + Core/Inc/dma.h | 52 + Core/Inc/gpio.h | 49 + Core/Inc/main.h | 103 + Core/Inc/stm32_assert.h | 53 + Core/Inc/stm32f1xx_it.h | 67 + Core/Inc/tim.h | 50 + Core/Inc/usart.h | 50 + Core/Src/dma.c | 59 + Core/Src/gpio.c | 103 + Core/Src/main.c | 190 + Core/Src/stm32f1xx_it.c | 227 + Core/Src/system_stm32f1xx.c | 406 + Core/Src/tim.c | 65 + Core/Src/usart.c | 115 + .../Device/ST/STM32F1xx/Include/stm32f103xb.h | 10240 ++++++++++++++++ .../Device/ST/STM32F1xx/Include/stm32f1xx.h | 273 + .../ST/STM32F1xx/Include/system_stm32f1xx.h | 96 + Drivers/CMSIS/Device/ST/STM32F1xx/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 + .../Inc/stm32f1xx_ll_bus.h | 1012 ++ .../Inc/stm32f1xx_ll_cortex.h | 638 + .../Inc/stm32f1xx_ll_dma.h | 1958 +++ .../Inc/stm32f1xx_ll_exti.h | 886 ++ .../Inc/stm32f1xx_ll_gpio.h | 2341 ++++ .../Inc/stm32f1xx_ll_pwr.h | 437 + .../Inc/stm32f1xx_ll_rcc.h | 2309 ++++ .../Inc/stm32f1xx_ll_system.h | 575 + .../Inc/stm32f1xx_ll_tim.h | 3890 ++++++ .../Inc/stm32f1xx_ll_usart.h | 2569 ++++ .../Inc/stm32f1xx_ll_utils.h | 270 + Drivers/STM32F1xx_HAL_Driver/LICENSE.txt | 6 + .../Src/stm32f1xx_ll_dma.c | 312 + .../Src/stm32f1xx_ll_exti.c | 213 + .../Src/stm32f1xx_ll_gpio.c | 256 + .../Src/stm32f1xx_ll_pwr.c | 83 + .../Src/stm32f1xx_ll_rcc.c | 471 + .../Src/stm32f1xx_ll_tim.c | 1206 ++ .../Src/stm32f1xx_ll_usart.c | 438 + .../Src/stm32f1xx_ll_utils.c | 767 ++ MDK-ARM/.gitignore | 15 + MDK-ARM/EventRecorderStub.scvd | 9 + MDK-ARM/RTE/_motor/RTE_Components.h | 21 + MDK-ARM/RTE_Components.h | 8 + MDK-ARM/motor.uvoptx | 885 ++ MDK-ARM/motor.uvprojx | 1383 +++ MDK-ARM/motor/motor.hex | 645 + MDK-ARM/startup_stm32f103xb.s | 305 + Makefile | 18 + Public/ADI-TMC2240-CN.pdf | Bin 0 -> 3463856 bytes Public/ADI-TMC2240.pdf | Bin 0 -> 958417 bytes User/application/app.c | 48 + User/application/app.h | 22 + User/application/key.c | 57 + User/application/key.h | 13 + User/board/board.c | 42 + User/board/board.h | 20 + User/system | 1 + keilkill.bat | 30 + motor.ioc | 161 + 84 files changed, 66088 insertions(+) create mode 100644 .gitignore create mode 100644 .mxproject create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/launch.json create mode 100644 Core/Inc/dma.h create mode 100644 Core/Inc/gpio.h create mode 100644 Core/Inc/main.h create mode 100644 Core/Inc/stm32_assert.h create mode 100644 Core/Inc/stm32f1xx_it.h create mode 100644 Core/Inc/tim.h create mode 100644 Core/Inc/usart.h create mode 100644 Core/Src/dma.c create mode 100644 Core/Src/gpio.c create mode 100644 Core/Src/main.c create mode 100644 Core/Src/stm32f1xx_it.c create mode 100644 Core/Src/system_stm32f1xx.c create mode 100644 Core/Src/tim.c create mode 100644 Core/Src/usart.c create mode 100644 Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h create mode 100644 Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h create mode 100644 Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h create mode 100644 Drivers/CMSIS/Device/ST/STM32F1xx/LICENSE.txt create mode 100644 Drivers/CMSIS/Include/cmsis_armcc.h create mode 100644 Drivers/CMSIS/Include/cmsis_armclang.h create mode 100644 Drivers/CMSIS/Include/cmsis_compiler.h create mode 100644 Drivers/CMSIS/Include/cmsis_gcc.h create mode 100644 Drivers/CMSIS/Include/cmsis_iccarm.h create mode 100644 Drivers/CMSIS/Include/cmsis_version.h create mode 100644 Drivers/CMSIS/Include/core_armv8mbl.h create mode 100644 Drivers/CMSIS/Include/core_armv8mml.h create mode 100644 Drivers/CMSIS/Include/core_cm0.h create mode 100644 Drivers/CMSIS/Include/core_cm0plus.h create mode 100644 Drivers/CMSIS/Include/core_cm1.h create mode 100644 Drivers/CMSIS/Include/core_cm23.h create mode 100644 Drivers/CMSIS/Include/core_cm3.h create mode 100644 Drivers/CMSIS/Include/core_cm33.h create mode 100644 Drivers/CMSIS/Include/core_cm4.h create mode 100644 Drivers/CMSIS/Include/core_cm7.h create mode 100644 Drivers/CMSIS/Include/core_sc000.h create mode 100644 Drivers/CMSIS/Include/core_sc300.h create mode 100644 Drivers/CMSIS/Include/mpu_armv7.h create mode 100644 Drivers/CMSIS/Include/mpu_armv8.h create mode 100644 Drivers/CMSIS/Include/tz_context.h create mode 100644 Drivers/CMSIS/LICENSE.txt create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h create mode 100644 Drivers/STM32F1xx_HAL_Driver/LICENSE.txt create mode 100644 Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c create mode 100644 Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c create mode 100644 Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c create mode 100644 Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c create mode 100644 Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c create mode 100644 Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c create mode 100644 Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c create mode 100644 Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c create mode 100644 MDK-ARM/.gitignore create mode 100644 MDK-ARM/EventRecorderStub.scvd create mode 100644 MDK-ARM/RTE/_motor/RTE_Components.h create mode 100644 MDK-ARM/RTE_Components.h create mode 100644 MDK-ARM/motor.uvoptx create mode 100644 MDK-ARM/motor.uvprojx create mode 100644 MDK-ARM/motor/motor.hex create mode 100644 MDK-ARM/startup_stm32f103xb.s create mode 100644 Makefile create mode 100644 Public/ADI-TMC2240-CN.pdf create mode 100644 Public/ADI-TMC2240.pdf create mode 100644 User/application/app.c create mode 100644 User/application/app.h create mode 100644 User/application/key.c create mode 100644 User/application/key.h create mode 100644 User/board/board.c create mode 100644 User/board/board.h create mode 160000 User/system create mode 100644 keilkill.bat create mode 100644 motor.ioc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e9e0a97 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +# Binaries for programs and plugins +*.exe +*.exe~ +*.dll +*.so +*.dylib + +# Test binary, built with `go test -c` +*.test +*.log +# Output of the go coverage tool, specifically when used with LiteIDE +*.out +.VSCodeCounter +USER/Listings +USER/Objects +build +dist + +/MDK-ARM/.vscode/uv4.log +/MDK-ARM/.cmsis/include +/MDK-ARM/.eide +/MDK-ARM/MDK-ARM.code-workspace +/MDK-ARM/.vscode/settings.json +/MDK-ARM/.vscode/tasks.json +/MDK-ARM/.clang-format +/MDK-ARM/.vscode/uv4.log.lock +/MDK-ARM/*.hex +/MDK-ARM/*.bin +/MDK-ARM/.pack +.vscode/settings.json + diff --git a/.mxproject b/.mxproject new file mode 100644 index 0000000..b4e7714 --- /dev/null +++ b/.mxproject @@ -0,0 +1,32 @@ +[PreviousLibFiles] +LibFiles=Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_gpio.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_dma.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_pwr.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_exti.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_tim.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_rcc.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_utils.c;Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usart.c;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_gpio.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_dma.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_pwr.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_system.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_exti.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_tim.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_bus.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_cortex.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_rcc.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_utils.h;Drivers\STM32F1xx_HAL_Driver\Inc\stm32f1xx_ll_usart.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Include\system_stm32f1xx.h;Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.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; + +[PreviousUsedKeilFiles] +SourceFiles=..\Core\Src\main.c;..\Core\Src\gpio.c;..\Core\Src\dma.c;..\Core\Src\tim.c;..\Core\Src\usart.c;..\Core\Src\stm32f1xx_it.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_utils.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_gpio.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_dma.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_pwr.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_exti.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_tim.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_rcc.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_utils.c;..\Drivers\STM32F1xx_HAL_Driver\Src\stm32f1xx_ll_usart.c;..\Drivers\CMSIS\Device\ST\STM32F1xx\Source\Templates\system_stm32f1xx.c;..\Core\Src\system_stm32f1xx.c;;; +HeaderPath=..\Drivers\STM32F1xx_HAL_Driver\Inc;..\Drivers\CMSIS\Device\ST\STM32F1xx\Include;..\Drivers\CMSIS\Include;..\Core\Inc; +CDefines=USE_FULL_LL_DRIVER;HSE_VALUE:8000000;HSE_STARTUP_TIMEOUT:100;LSE_STARTUP_TIMEOUT:5000;LSE_VALUE:32768;HSI_VALUE:8000000;LSI_VALUE:40000;VDD_VALUE:3300;PREFETCH_ENABLE:1;STM32F103xB;USE_FULL_LL_DRIVER;HSE_VALUE:8000000;HSE_STARTUP_TIMEOUT:100;LSE_STARTUP_TIMEOUT:5000;LSE_VALUE:32768;HSI_VALUE:8000000;LSI_VALUE:40000;VDD_VALUE:3300;PREFETCH_ENABLE:1; + +[PreviousGenFiles] +AdvancedFolderStructure=true +HeaderFileListSize=7 +HeaderFiles#0=..\Core\Inc\gpio.h +HeaderFiles#1=..\Core\Inc\dma.h +HeaderFiles#2=..\Core\Inc\tim.h +HeaderFiles#3=..\Core\Inc\usart.h +HeaderFiles#4=..\Core\Inc\stm32f1xx_it.h +HeaderFiles#5=..\Core\Inc\stm32_assert.h +HeaderFiles#6=..\Core\Inc\main.h +HeaderFolderListSize=1 +HeaderPath#0=..\Core\Inc +HeaderFiles=; +SourceFileListSize=6 +SourceFiles#0=..\Core\Src\gpio.c +SourceFiles#1=..\Core\Src\dma.c +SourceFiles#2=..\Core\Src\tim.c +SourceFiles#3=..\Core\Src\usart.c +SourceFiles#4=..\Core\Src\stm32f1xx_it.c +SourceFiles#5=..\Core\Src\main.c +SourceFolderListSize=1 +SourcePath#0=..\Core\Src +SourceFiles=; + diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..ff92585 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,18 @@ +{ + "configurations": [ + { + "name": "windows-gcc-x64", + "includePath": [ + "${workspaceFolder}/**" + ], + "compilerPath": "C:/TDM-GCC-64/bin/gcc.exe", + "cStandard": "${default}", + "cppStandard": "${default}", + "intelliSenseMode": "windows-gcc-x64", + "compilerArgs": [ + "" + ] + } + ], + "version": 4 +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..bf409e3 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "C/C++ Runner: Debug Session", + "type": "cppdbg", + "request": "launch", + "args": [], + "stopAtEntry": false, + "externalConsole": true, + "cwd": "e:/work/stm32/study/freertos-cs103/User/board", + "program": "e:/work/stm32/study/freertos-cs103/User/board/build/Debug/outDebug", + "MIMode": "gdb", + "miDebuggerPath": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ] + } + ] +} \ No newline at end of file diff --git a/Core/Inc/dma.h b/Core/Inc/dma.h new file mode 100644 index 0000000..bd1bba0 --- /dev/null +++ b/Core/Inc/dma.h @@ -0,0 +1,52 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file dma.h + * @brief This file contains all the function prototypes for + * the dma.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __DMA_H__ +#define __DMA_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* DMA memory to memory transfer handles -------------------------------------*/ + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_DMA_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif /* __DMA_H__ */ + diff --git a/Core/Inc/gpio.h b/Core/Inc/gpio.h new file mode 100644 index 0000000..708bac7 --- /dev/null +++ b/Core/Inc/gpio.h @@ -0,0 +1,49 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file gpio.h + * @brief This file contains all the function prototypes for + * the gpio.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __GPIO_H__ +#define __GPIO_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_GPIO_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif +#endif /*__ GPIO_H__ */ + diff --git a/Core/Inc/main.h b/Core/Inc/main.h new file mode 100644 index 0000000..c4d24ed --- /dev/null +++ b/Core/Inc/main.h @@ -0,0 +1,103 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file main.h + * @brief : Header for main.c file. + * This file contains the common defines of the application. + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __MAIN_H +#define __MAIN_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ + +#include "stm32f1xx_ll_dma.h" +#include "stm32f1xx_ll_rcc.h" +#include "stm32f1xx_ll_bus.h" +#include "stm32f1xx_ll_system.h" +#include "stm32f1xx_ll_exti.h" +#include "stm32f1xx_ll_cortex.h" +#include "stm32f1xx_ll_utils.h" +#include "stm32f1xx_ll_pwr.h" +#include "stm32f1xx_ll_tim.h" +#include "stm32f1xx_ll_usart.h" +#include "stm32f1xx_ll_gpio.h" + +#if defined(USE_FULL_ASSERT) +#include "stm32_assert.h" +#endif /* USE_FULL_ASSERT */ + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "sys.h" +#include "delay.h" +#include "btn.h" +#include "lib.h" +#include "bsp.h" + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void Error_Handler(void); + +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +/* Private defines -----------------------------------------------------------*/ +#define LED_BLUE_Pin LL_GPIO_PIN_13 +#define LED_BLUE_GPIO_Port GPIOC +#ifndef NVIC_PRIORITYGROUP_0 +#define NVIC_PRIORITYGROUP_0 ((uint32_t)0x00000007) /*!< 0 bit for pre-emption priority, + 4 bits for subpriority */ +#define NVIC_PRIORITYGROUP_1 ((uint32_t)0x00000006) /*!< 1 bit for pre-emption priority, + 3 bits for subpriority */ +#define NVIC_PRIORITYGROUP_2 ((uint32_t)0x00000005) /*!< 2 bits for pre-emption priority, + 2 bits for subpriority */ +#define NVIC_PRIORITYGROUP_3 ((uint32_t)0x00000004) /*!< 3 bits for pre-emption priority, + 1 bit for subpriority */ +#define NVIC_PRIORITYGROUP_4 ((uint32_t)0x00000003) /*!< 4 bits for pre-emption priority, + 0 bit for subpriority */ +#endif + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +#ifdef __cplusplus +} +#endif + +#endif /* __MAIN_H */ diff --git a/Core/Inc/stm32_assert.h b/Core/Inc/stm32_assert.h new file mode 100644 index 0000000..ce166a2 --- /dev/null +++ b/Core/Inc/stm32_assert.h @@ -0,0 +1,53 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32_assert.h + * @brief STM32 assert file. + ****************************************************************************** + * @attention + * + * Copyright (c) 2018 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32_ASSERT_H +#define __STM32_ASSERT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/* Includes ------------------------------------------------------------------*/ +/* Exported macro ------------------------------------------------------------*/ +#ifdef USE_FULL_ASSERT +/** + * @brief The assert_param macro is used for function's parameters check. + * @param expr: If expr is false, it calls assert_failed function + * which reports the name of the source file and the source + * line number of the call that failed. + * If expr is true, it returns no value. + * @retval None + */ + #define assert_param(expr) ((expr) ? (void)0U : assert_failed((uint8_t *)__FILE__, __LINE__)) +/* Exported functions ------------------------------------------------------- */ + void assert_failed(uint8_t* file, uint32_t line); +#else + #define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32_ASSERT_H */ + diff --git a/Core/Inc/stm32f1xx_it.h b/Core/Inc/stm32f1xx_it.h new file mode 100644 index 0000000..67a48e1 --- /dev/null +++ b/Core/Inc/stm32f1xx_it.h @@ -0,0 +1,67 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f1xx_it.h + * @brief This file contains the headers of the interrupt handlers. + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_IT_H +#define __STM32F1xx_IT_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* Exported types ------------------------------------------------------------*/ +/* USER CODE BEGIN ET */ + +/* USER CODE END ET */ + +/* Exported constants --------------------------------------------------------*/ +/* USER CODE BEGIN EC */ + +/* USER CODE END EC */ + +/* Exported macro ------------------------------------------------------------*/ +/* USER CODE BEGIN EM */ + +/* USER CODE END EM */ + +/* Exported functions prototypes ---------------------------------------------*/ +void NMI_Handler(void); +void HardFault_Handler(void); +void MemManage_Handler(void); +void BusFault_Handler(void); +void UsageFault_Handler(void); +void DebugMon_Handler(void); +void DMA1_Channel4_IRQHandler(void); +void DMA1_Channel5_IRQHandler(void); +void TIM1_UP_IRQHandler(void); +void USART1_IRQHandler(void); +/* USER CODE BEGIN EFP */ + +/* USER CODE END EFP */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_IT_H */ diff --git a/Core/Inc/tim.h b/Core/Inc/tim.h new file mode 100644 index 0000000..2c34adf --- /dev/null +++ b/Core/Inc/tim.h @@ -0,0 +1,50 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file tim.h + * @brief This file contains all the function prototypes for + * the tim.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __TIM_H__ +#define __TIM_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_TIM1_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif /* __TIM_H__ */ + diff --git a/Core/Inc/usart.h b/Core/Inc/usart.h new file mode 100644 index 0000000..3fc152e --- /dev/null +++ b/Core/Inc/usart.h @@ -0,0 +1,50 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file usart.h + * @brief This file contains all the function prototypes for + * the usart.c file + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __USART_H__ +#define __USART_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" + +/* USER CODE BEGIN Includes */ + +/* USER CODE END Includes */ + +/* USER CODE BEGIN Private defines */ + +/* USER CODE END Private defines */ + +void MX_USART1_UART_Init(void); + +/* USER CODE BEGIN Prototypes */ + +/* USER CODE END Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif /* __USART_H__ */ + diff --git a/Core/Src/dma.c b/Core/Src/dma.c new file mode 100644 index 0000000..fc35945 --- /dev/null +++ b/Core/Src/dma.c @@ -0,0 +1,59 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file dma.c + * @brief This file provides code for the configuration + * of all the requested memory to memory DMA transfers. + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "dma.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/*----------------------------------------------------------------------------*/ +/* Configure DMA */ +/*----------------------------------------------------------------------------*/ + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/** + * Enable DMA controller clock + */ +void MX_DMA_Init(void) +{ + + /* Init with LL driver */ + /* DMA controller clock enable */ + LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA1); + + /* DMA interrupt init */ + /* DMA1_Channel4_IRQn interrupt configuration */ + NVIC_SetPriority(DMA1_Channel4_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + NVIC_EnableIRQ(DMA1_Channel4_IRQn); + /* DMA1_Channel5_IRQn interrupt configuration */ + NVIC_SetPriority(DMA1_Channel5_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0)); + NVIC_EnableIRQ(DMA1_Channel5_IRQn); + +} + +/* USER CODE BEGIN 2 */ + +/* USER CODE END 2 */ + diff --git a/Core/Src/gpio.c b/Core/Src/gpio.c new file mode 100644 index 0000000..daa3fcb --- /dev/null +++ b/Core/Src/gpio.c @@ -0,0 +1,103 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file gpio.c + * @brief This file provides code for the configuration + * of all used GPIO pins. + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "gpio.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/*----------------------------------------------------------------------------*/ +/* Configure GPIO */ +/*----------------------------------------------------------------------------*/ +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ + +/** Configure pins as + * Analog + * Input + * Output + * EVENT_OUT + * EXTI + * Free pins are configured automatically as Analog (this feature is enabled through + * the Code Generation settings) +*/ +void MX_GPIO_Init(void) +{ + + LL_EXTI_InitTypeDef EXTI_InitStruct = {0}; + LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* GPIO Ports Clock Enable */ + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOC); + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOD); + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA); + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOB); + + /**/ + LL_GPIO_ResetOutputPin(LED_BLUE_GPIO_Port, LED_BLUE_Pin); + + /**/ + GPIO_InitStruct.Pin = LED_BLUE_Pin; + GPIO_InitStruct.Mode = LL_GPIO_MODE_OUTPUT; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + LL_GPIO_Init(LED_BLUE_GPIO_Port, &GPIO_InitStruct); + + /**/ + GPIO_InitStruct.Pin = LL_GPIO_PIN_14|LL_GPIO_PIN_15; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG; + LL_GPIO_Init(GPIOC, &GPIO_InitStruct); + + /**/ + GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_3 + |LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6|LL_GPIO_PIN_7 + |LL_GPIO_PIN_8|LL_GPIO_PIN_11|LL_GPIO_PIN_12|LL_GPIO_PIN_15; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG; + LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /**/ + GPIO_InitStruct.Pin = LL_GPIO_PIN_0|LL_GPIO_PIN_1|LL_GPIO_PIN_2|LL_GPIO_PIN_10 + |LL_GPIO_PIN_11|LL_GPIO_PIN_13|LL_GPIO_PIN_14|LL_GPIO_PIN_15 + |LL_GPIO_PIN_3|LL_GPIO_PIN_4|LL_GPIO_PIN_5|LL_GPIO_PIN_6 + |LL_GPIO_PIN_7|LL_GPIO_PIN_8|LL_GPIO_PIN_9; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG; + LL_GPIO_Init(GPIOB, &GPIO_InitStruct); + + /**/ + LL_GPIO_AF_SetEXTISource(LL_GPIO_AF_EXTI_PORTB, LL_GPIO_AF_EXTI_LINE12); + + /**/ + EXTI_InitStruct.Line_0_31 = LL_EXTI_LINE_12; + EXTI_InitStruct.LineCommand = ENABLE; + EXTI_InitStruct.Mode = LL_EXTI_MODE_IT; + EXTI_InitStruct.Trigger = LL_EXTI_TRIGGER_RISING; + LL_EXTI_Init(&EXTI_InitStruct); + + /**/ + LL_GPIO_SetPinMode(GPIOB, LL_GPIO_PIN_12, LL_GPIO_MODE_FLOATING); + +} + +/* USER CODE BEGIN 2 */ + +/* USER CODE END 2 */ diff --git a/Core/Src/main.c b/Core/Src/main.c new file mode 100644 index 0000000..dc754da --- /dev/null +++ b/Core/Src/main.c @@ -0,0 +1,190 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file main.c + * @brief : Main program body + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "dma.h" +#include "tim.h" +#include "usart.h" +#include "gpio.h" + +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "board.h" +#include "app.h" +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN PTD */ + +/* USER CODE END PTD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ + +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +void SystemClock_Config(void); +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/** + * @brief The application entry point. + * @retval int + */ +int main(void) +{ + /* USER CODE BEGIN 1 */ + + /* USER CODE END 1 */ + + /* MCU Configuration--------------------------------------------------------*/ + + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_AFIO); + LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR); + + /* System interrupt init*/ + NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4); + + /** NOJTAG: JTAG-DP Disabled and SW-DP Enabled + */ + LL_GPIO_AF_Remap_SWJ_NOJTAG(); + + /* USER CODE BEGIN Init */ + + /* USER CODE END Init */ + + /* Configure the system clock */ + SystemClock_Config(); + + /* USER CODE BEGIN SysInit */ + delay_init((SystemCoreClock / 1000000)); + /* USER CODE END SysInit */ + + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_DMA_Init(); + MX_USART1_UART_Init(); + MX_TIM1_Init(); + /* USER CODE BEGIN 2 */ + board_init(); + app_init(); + app_run(); + /* USER CODE END 2 */ + + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ + while (1) + { + /* USER CODE END WHILE */ + + /* USER CODE BEGIN 3 */ + } + /* USER CODE END 3 */ +} + +/** + * @brief System Clock Configuration + * @retval None + */ +void SystemClock_Config(void) +{ + LL_FLASH_SetLatency(LL_FLASH_LATENCY_2); + while (LL_FLASH_GetLatency() != LL_FLASH_LATENCY_2) + { + } + LL_RCC_HSE_Enable(); + + /* Wait till HSE is ready */ + while (LL_RCC_HSE_IsReady() != 1) + { + } + LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE_DIV_1, LL_RCC_PLL_MUL_9); + LL_RCC_PLL_Enable(); + + /* Wait till PLL is ready */ + while (LL_RCC_PLL_IsReady() != 1) + { + } + LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1); + LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_2); + LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_1); + LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); + + /* Wait till System clock is ready */ + while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + { + } + LL_Init1msTick(72000000); + LL_SetSystemCoreClock(72000000); +} + +/* USER CODE BEGIN 4 */ + +/* USER CODE END 4 */ + +/** + * @brief This function is executed in case of error occurrence. + * @retval None + */ +void Error_Handler(void) +{ + /* USER CODE BEGIN Error_Handler_Debug */ + /* User can add his own implementation to report the HAL error return state */ + __disable_irq(); + while (1) + { + } + /* USER CODE END Error_Handler_Debug */ +} + +#ifdef USE_FULL_ASSERT +/** + * @brief Reports the name of the source file and the source line number + * where the assert_param error has occurred. + * @param file: pointer to the source file name + * @param line: assert_param error line source number + * @retval None + */ +void assert_failed(uint8_t *file, uint32_t line) +{ + /* USER CODE BEGIN 6 */ + /* User can add his own implementation to report the file name and line number, + ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ + /* USER CODE END 6 */ +} +#endif /* USE_FULL_ASSERT */ diff --git a/Core/Src/stm32f1xx_it.c b/Core/Src/stm32f1xx_it.c new file mode 100644 index 0000000..6ab8b65 --- /dev/null +++ b/Core/Src/stm32f1xx_it.c @@ -0,0 +1,227 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file stm32f1xx_it.c + * @brief Interrupt Service Routines. + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ + +/* Includes ------------------------------------------------------------------*/ +#include "main.h" +#include "stm32f1xx_it.h" +/* Private includes ----------------------------------------------------------*/ +/* USER CODE BEGIN Includes */ +#include "sys.h" +#include "flow.h" +#include "board.h" +#include "btn.h" +/* USER CODE END Includes */ + +/* Private typedef -----------------------------------------------------------*/ +/* USER CODE BEGIN TD */ +#define xPortPendSVHandler PendSV_Handler +#define vPortSVCHandler SVC_Handler +#define xPortSysTickHandler SysTick_Handler +/* USER CODE END TD */ + +/* Private define ------------------------------------------------------------*/ +/* USER CODE BEGIN PD */ + +/* USER CODE END PD */ + +/* Private macro -------------------------------------------------------------*/ +/* USER CODE BEGIN PM */ + +/* USER CODE END PM */ + +/* Private variables ---------------------------------------------------------*/ +/* USER CODE BEGIN PV */ + +/* USER CODE END PV */ + +/* Private function prototypes -----------------------------------------------*/ +/* USER CODE BEGIN PFP */ + +/* USER CODE END PFP */ + +/* Private user code ---------------------------------------------------------*/ +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* External variables --------------------------------------------------------*/ + +/* USER CODE BEGIN EV */ + +/* USER CODE END EV */ + +/******************************************************************************/ +/* Cortex-M3 Processor Interruption and Exception Handlers */ +/******************************************************************************/ +/** + * @brief This function handles Non maskable interrupt. + */ +void NMI_Handler(void) +{ + /* USER CODE BEGIN NonMaskableInt_IRQn 0 */ + + /* USER CODE END NonMaskableInt_IRQn 0 */ + /* USER CODE BEGIN NonMaskableInt_IRQn 1 */ + while (1) + { + } + /* USER CODE END NonMaskableInt_IRQn 1 */ +} + +/** + * @brief This function handles Hard fault interrupt. + */ +void HardFault_Handler(void) +{ + /* USER CODE BEGIN HardFault_IRQn 0 */ + + /* USER CODE END HardFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_HardFault_IRQn 0 */ + /* USER CODE END W1_HardFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Memory management fault. + */ +void MemManage_Handler(void) +{ + /* USER CODE BEGIN MemoryManagement_IRQn 0 */ + + /* USER CODE END MemoryManagement_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_MemoryManagement_IRQn 0 */ + /* USER CODE END W1_MemoryManagement_IRQn 0 */ + } +} + +/** + * @brief This function handles Prefetch fault, memory access fault. + */ +void BusFault_Handler(void) +{ + /* USER CODE BEGIN BusFault_IRQn 0 */ + + /* USER CODE END BusFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_BusFault_IRQn 0 */ + /* USER CODE END W1_BusFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Undefined instruction or illegal state. + */ +void UsageFault_Handler(void) +{ + /* USER CODE BEGIN UsageFault_IRQn 0 */ + + /* USER CODE END UsageFault_IRQn 0 */ + while (1) + { + /* USER CODE BEGIN W1_UsageFault_IRQn 0 */ + /* USER CODE END W1_UsageFault_IRQn 0 */ + } +} + +/** + * @brief This function handles Debug monitor. + */ +void DebugMon_Handler(void) +{ + /* USER CODE BEGIN DebugMonitor_IRQn 0 */ + + /* USER CODE END DebugMonitor_IRQn 0 */ + /* USER CODE BEGIN DebugMonitor_IRQn 1 */ + + /* USER CODE END DebugMonitor_IRQn 1 */ +} + +/******************************************************************************/ +/* STM32F1xx Peripheral Interrupt Handlers */ +/* Add here the Interrupt Handlers for the used peripherals. */ +/* For the available peripheral interrupt handler names, */ +/* please refer to the startup file (startup_stm32f1xx.s). */ +/******************************************************************************/ + +/** + * @brief This function handles DMA1 channel4 global interrupt. + */ +void DMA1_Channel4_IRQHandler(void) +{ + /* USER CODE BEGIN DMA1_Channel4_IRQn 0 */ + + /* USER CODE END DMA1_Channel4_IRQn 0 */ + + /* USER CODE BEGIN DMA1_Channel4_IRQn 1 */ + uart_dma_reception_callback(uart); + /* USER CODE END DMA1_Channel4_IRQn 1 */ +} + +/** + * @brief This function handles DMA1 channel5 global interrupt. + */ +void DMA1_Channel5_IRQHandler(void) +{ + /* USER CODE BEGIN DMA1_Channel5_IRQn 0 */ + + /* USER CODE END DMA1_Channel5_IRQn 0 */ + + /* USER CODE BEGIN DMA1_Channel5_IRQn 1 */ + uart_dma_reception_callback(uart); + /* USER CODE END DMA1_Channel5_IRQn 1 */ +} + +/** + * @brief This function handles TIM1 update interrupt. + */ +void TIM1_UP_IRQHandler(void) +{ + /* USER CODE BEGIN TIM1_UP_IRQn 0 */ + + /* USER CODE END TIM1_UP_IRQn 0 */ + /* USER CODE BEGIN TIM1_UP_IRQn 1 */ + if (IS_TIM_IT_FLAG(TASK_TIM)) + { + TIM_IRQ_HANDLER(TASK_TIM); + LL_IncTick(); + } + /* USER CODE END TIM1_UP_IRQn 1 */ +} + +/** + * @brief This function handles USART1 global interrupt. + */ +void USART1_IRQHandler(void) +{ + /* USER CODE BEGIN USART1_IRQn 0 */ + + /* USER CODE END USART1_IRQn 0 */ + /* USER CODE BEGIN USART1_IRQn 1 */ + uart_reception_callback(uart); + /* USER CODE END USART1_IRQn 1 */ +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/Core/Src/system_stm32f1xx.c b/Core/Src/system_stm32f1xx.c new file mode 100644 index 0000000..3e277e6 --- /dev/null +++ b/Core/Src/system_stm32f1xx.c @@ -0,0 +1,406 @@ +/** + ****************************************************************************** + * @file system_stm32f1xx.c + * @author MCD Application Team + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File. + * + * 1. This file provides two functions and one global variable to be called from + * user application: + * - SystemInit(): Setups the system clock (System clock source, PLL Multiplier + * factors, AHB/APBx prescalers and Flash settings). + * This function is called at startup just after reset and + * before branch to main program. This call is made inside + * the "startup_stm32f1xx_xx.s" file. + * + * - SystemCoreClock variable: Contains the core clock (HCLK), it can be used + * by the user application to setup the SysTick + * timer or configure other parameters. + * + * - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must + * be called whenever the core clock is changed + * during program execution. + * + * 2. After each device reset the HSI (8 MHz) is used as system clock source. + * Then SystemInit() function is called, in "startup_stm32f1xx_xx.s" file, to + * configure the system clock before to branch to main program. + * + * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depending on + * the product used), refer to "HSE_VALUE". + * When HSE is used as system clock source, directly or through PLL, and you + * are using different crystal you have to adapt the HSE value to your own + * configuration. + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017-2021 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 + * @{ + */ + +/** @addtogroup stm32f1xx_system + * @{ + */ + +/** @addtogroup STM32F1xx_System_Private_Includes + * @{ + */ + +#include "stm32f1xx.h" + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_TypesDefinitions + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Defines + * @{ + */ + +#if !defined (HSE_VALUE) + #define HSE_VALUE 8000000U /*!< Default value of the External oscillator in Hz. + This value can be provided and adapted by the user application. */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) + #define HSI_VALUE 8000000U /*!< Default value of the Internal oscillator in Hz. + This value can be provided and adapted by the user application. */ +#endif /* HSI_VALUE */ + +/*!< Uncomment the following line if you need to use external SRAM */ +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +/* #define DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/* Note: Following vector table addresses must be defined in line with linker + configuration. */ +/*!< Uncomment the following line if you need to relocate the vector table + anywhere in Flash or Sram, else the vector table is kept at the automatic + remap of boot address selected */ +/* #define USER_VECT_TAB_ADDRESS */ + +#if defined(USER_VECT_TAB_ADDRESS) +/*!< Uncomment the following line if you need to relocate your vector Table + in Sram else user remap will be done in Flash. */ +/* #define VECT_TAB_SRAM */ +#if defined(VECT_TAB_SRAM) +#define VECT_TAB_BASE_ADDRESS SRAM_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x200. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +#else +#define VECT_TAB_BASE_ADDRESS FLASH_BASE /*!< Vector Table base address field. + This value must be a multiple of 0x200. */ +#define VECT_TAB_OFFSET 0x00000000U /*!< Vector Table base offset field. + This value must be a multiple of 0x200. */ +#endif /* VECT_TAB_SRAM */ +#endif /* USER_VECT_TAB_ADDRESS */ + +/******************************************************************************/ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Macros + * @{ + */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Variables + * @{ + */ + + /* This variable is updated in three ways: + 1) by calling CMSIS function SystemCoreClockUpdate() + 2) by calling HAL API function HAL_RCC_GetHCLKFreq() + 3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency + Note: If you use this function to configure the system clock; then there + is no need to call the 2 first functions listed above, since SystemCoreClock + variable is updated automatically. + */ +uint32_t SystemCoreClock = 16000000; +const uint8_t AHBPrescTable[16U] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9}; +const uint8_t APBPrescTable[8U] = {0, 0, 0, 0, 1, 2, 3, 4}; + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_FunctionPrototypes + * @{ + */ + +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +#ifdef DATA_IN_ExtSRAM + static void SystemInit_ExtMemCtl(void); +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/** + * @} + */ + +/** @addtogroup STM32F1xx_System_Private_Functions + * @{ + */ + +/** + * @brief Setup the microcontroller system + * Initialize the Embedded Flash Interface, the PLL and update the + * SystemCoreClock variable. + * @note This function should be used only after reset. + * @param None + * @retval None + */ +void SystemInit (void) +{ +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) + #ifdef DATA_IN_ExtSRAM + SystemInit_ExtMemCtl(); + #endif /* DATA_IN_ExtSRAM */ +#endif + + /* Configure the Vector Table location -------------------------------------*/ +#if defined(USER_VECT_TAB_ADDRESS) + SCB->VTOR = VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */ +#endif /* USER_VECT_TAB_ADDRESS */ +} + +/** + * @brief Update SystemCoreClock variable according to Clock Register Values. + * The SystemCoreClock variable contains the core clock (HCLK), it can + * be used by the user application to setup the SysTick timer or configure + * other parameters. + * + * @note Each time the core clock (HCLK) changes, this function must be called + * to update SystemCoreClock variable value. Otherwise, any configuration + * based on this variable will be incorrect. + * + * @note - The system frequency computed by this function is not the real + * frequency in the chip. It is calculated based on the predefined + * constant and the selected clock source: + * + * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*) + * + * - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**) + * + * - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**) + * or HSI_VALUE(*) multiplied by the PLL factors. + * + * (*) HSI_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz) but the real value may vary depending on the variations + * in voltage and temperature. + * + * (**) HSE_VALUE is a constant defined in stm32f1xx.h file (default value + * 8 MHz or 25 MHz, depending on the product used), user has to ensure + * that HSE_VALUE is same as the real frequency of the crystal used. + * Otherwise, this function may have wrong result. + * + * - The result of this function could be not correct when using fractional + * value for HSE crystal. + * @param None + * @retval None + */ +void SystemCoreClockUpdate (void) +{ + uint32_t tmp = 0U, pllmull = 0U, pllsource = 0U; + +#if defined(STM32F105xC) || defined(STM32F107xC) + uint32_t prediv1source = 0U, prediv1factor = 0U, prediv2factor = 0U, pll2mull = 0U; +#endif /* STM32F105xC */ + +#if defined(STM32F100xB) || defined(STM32F100xE) + uint32_t prediv1factor = 0U; +#endif /* STM32F100xB or STM32F100xE */ + + /* Get SYSCLK source -------------------------------------------------------*/ + tmp = RCC->CFGR & RCC_CFGR_SWS; + + switch (tmp) + { + case 0x00U: /* HSI used as system clock */ + SystemCoreClock = HSI_VALUE; + break; + case 0x04U: /* HSE used as system clock */ + SystemCoreClock = HSE_VALUE; + break; + case 0x08U: /* PLL used as system clock */ + + /* Get PLL clock source and multiplication factor ----------------------*/ + pllmull = RCC->CFGR & RCC_CFGR_PLLMULL; + pllsource = RCC->CFGR & RCC_CFGR_PLLSRC; + +#if !defined(STM32F105xC) && !defined(STM32F107xC) + pllmull = ( pllmull >> 18U) + 2U; + + if (pllsource == 0x00U) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; + } + else + { + #if defined(STM32F100xB) || defined(STM32F100xE) + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + #else + /* HSE selected as PLL clock entry */ + if ((RCC->CFGR & RCC_CFGR_PLLXTPRE) != (uint32_t)RESET) + {/* HSE oscillator clock divided by 2 */ + SystemCoreClock = (HSE_VALUE >> 1U) * pllmull; + } + else + { + SystemCoreClock = HSE_VALUE * pllmull; + } + #endif + } +#else + pllmull = pllmull >> 18U; + + if (pllmull != 0x0DU) + { + pllmull += 2U; + } + else + { /* PLL multiplication factor = PLL input clock * 6.5 */ + pllmull = 13U / 2U; + } + + if (pllsource == 0x00U) + { + /* HSI oscillator clock divided by 2 selected as PLL clock entry */ + SystemCoreClock = (HSI_VALUE >> 1U) * pllmull; + } + else + {/* PREDIV1 selected as PLL clock entry */ + + /* Get PREDIV1 clock source and division factor */ + prediv1source = RCC->CFGR2 & RCC_CFGR2_PREDIV1SRC; + prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1U; + + if (prediv1source == 0U) + { + /* HSE oscillator clock selected as PREDIV1 clock entry */ + SystemCoreClock = (HSE_VALUE / prediv1factor) * pllmull; + } + else + {/* PLL2 clock selected as PREDIV1 clock entry */ + + /* Get PREDIV2 division factor and PLL2 multiplication factor */ + prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4U) + 1U; + pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8U) + 2U; + SystemCoreClock = (((HSE_VALUE / prediv2factor) * pll2mull) / prediv1factor) * pllmull; + } + } +#endif /* STM32F105xC */ + break; + + default: + SystemCoreClock = HSI_VALUE; + break; + } + + /* Compute HCLK clock frequency ----------------*/ + /* Get HCLK prescaler */ + tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4U)]; + /* HCLK clock frequency */ + SystemCoreClock >>= tmp; +} + +#if defined(STM32F100xE) || defined(STM32F101xE) || defined(STM32F101xG) || defined(STM32F103xE) || defined(STM32F103xG) +/** + * @brief Setup the external memory controller. Called in startup_stm32f1xx.s + * before jump to __main + * @param None + * @retval None + */ +#ifdef DATA_IN_ExtSRAM +/** + * @brief Setup the external memory controller. + * Called in startup_stm32f1xx_xx.s/.c before jump to main. + * This function configures the external SRAM mounted on STM3210E-EVAL + * board (STM32 High density devices). This SRAM will be used as program + * data memory (including heap and stack). + * @param None + * @retval None + */ +void SystemInit_ExtMemCtl(void) +{ + __IO uint32_t tmpreg; + /*!< FSMC Bank1 NOR/SRAM3 is used for the STM3210E-EVAL, if another Bank is + required, then adjust the Register Addresses */ + + /* Enable FSMC clock */ + RCC->AHBENR = 0x00000114U; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_FSMCEN); + + /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */ + RCC->APB2ENR = 0x000001E0U; + + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2ENR, RCC_APB2ENR_IOPDEN); + + (void)(tmpreg); + +/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/ +/*---------------- SRAM Address lines configuration -------------------------*/ +/*---------------- NOE and NWE configuration --------------------------------*/ +/*---------------- NE3 configuration ----------------------------------------*/ +/*---------------- NBL0, NBL1 configuration ---------------------------------*/ + + GPIOD->CRL = 0x44BB44BBU; + GPIOD->CRH = 0xBBBBBBBBU; + + GPIOE->CRL = 0xB44444BBU; + GPIOE->CRH = 0xBBBBBBBBU; + + GPIOF->CRL = 0x44BBBBBBU; + GPIOF->CRH = 0xBBBB4444U; + + GPIOG->CRL = 0x44BBBBBBU; + GPIOG->CRH = 0x444B4B44U; + +/*---------------- FSMC Configuration ---------------------------------------*/ +/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/ + + FSMC_Bank1->BTCR[4U] = 0x00001091U; + FSMC_Bank1->BTCR[5U] = 0x00110212U; +} +#endif /* DATA_IN_ExtSRAM */ +#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || STM32F103xG */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/Core/Src/tim.c b/Core/Src/tim.c new file mode 100644 index 0000000..e4fae03 --- /dev/null +++ b/Core/Src/tim.c @@ -0,0 +1,65 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file tim.c + * @brief This file provides code for the configuration + * of the TIM instances. + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "tim.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* TIM1 init function */ +void MX_TIM1_Init(void) +{ + + /* USER CODE BEGIN TIM1_Init 0 */ + + /* USER CODE END TIM1_Init 0 */ + + LL_TIM_InitTypeDef TIM_InitStruct = {0}; + + /* Peripheral clock enable */ + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_TIM1); + + /* TIM1 interrupt Init */ + NVIC_SetPriority(TIM1_UP_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),3, 0)); + NVIC_EnableIRQ(TIM1_UP_IRQn); + + /* USER CODE BEGIN TIM1_Init 1 */ + + /* USER CODE END TIM1_Init 1 */ + TIM_InitStruct.Prescaler = 7199; + TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP; + TIM_InitStruct.Autoreload = 99; + TIM_InitStruct.ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + TIM_InitStruct.RepetitionCounter = 0; + LL_TIM_Init(TIM1, &TIM_InitStruct); + LL_TIM_DisableARRPreload(TIM1); + LL_TIM_SetClockSource(TIM1, LL_TIM_CLOCKSOURCE_INTERNAL); + LL_TIM_SetTriggerOutput(TIM1, LL_TIM_TRGO_RESET); + LL_TIM_DisableMasterSlaveMode(TIM1); + /* USER CODE BEGIN TIM1_Init 2 */ + + /* USER CODE END TIM1_Init 2 */ + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/Core/Src/usart.c b/Core/Src/usart.c new file mode 100644 index 0000000..0e99926 --- /dev/null +++ b/Core/Src/usart.c @@ -0,0 +1,115 @@ +/* USER CODE BEGIN Header */ +/** + ****************************************************************************** + * @file usart.c + * @brief This file provides code for the configuration + * of the USART instances. + ****************************************************************************** + * @attention + * + * Copyright (c) 2024 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ +/* USER CODE END Header */ +/* Includes ------------------------------------------------------------------*/ +#include "usart.h" + +/* USER CODE BEGIN 0 */ + +/* USER CODE END 0 */ + +/* USART1 init function */ + +void MX_USART1_UART_Init(void) +{ + + /* USER CODE BEGIN USART1_Init 0 */ + + /* USER CODE END USART1_Init 0 */ + + LL_USART_InitTypeDef USART_InitStruct = {0}; + + LL_GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* Peripheral clock enable */ + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_USART1); + + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOA); + /**USART1 GPIO Configuration + PA9 ------> USART1_TX + PA10 ------> USART1_RX + */ + GPIO_InitStruct.Pin = LL_GPIO_PIN_9; + GPIO_InitStruct.Mode = LL_GPIO_MODE_ALTERNATE; + GPIO_InitStruct.Speed = LL_GPIO_SPEED_FREQ_HIGH; + GPIO_InitStruct.OutputType = LL_GPIO_OUTPUT_PUSHPULL; + LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = LL_GPIO_PIN_10; + GPIO_InitStruct.Mode = LL_GPIO_MODE_FLOATING; + LL_GPIO_Init(GPIOA, &GPIO_InitStruct); + + /* USART1 DMA Init */ + + /* USART1_RX Init */ + LL_DMA_SetDataTransferDirection(DMA1, LL_DMA_CHANNEL_5, LL_DMA_DIRECTION_PERIPH_TO_MEMORY); + + LL_DMA_SetChannelPriorityLevel(DMA1, LL_DMA_CHANNEL_5, LL_DMA_PRIORITY_LOW); + + LL_DMA_SetMode(DMA1, LL_DMA_CHANNEL_5, LL_DMA_MODE_NORMAL); + + LL_DMA_SetPeriphIncMode(DMA1, LL_DMA_CHANNEL_5, LL_DMA_PERIPH_NOINCREMENT); + + LL_DMA_SetMemoryIncMode(DMA1, LL_DMA_CHANNEL_5, LL_DMA_MEMORY_INCREMENT); + + LL_DMA_SetPeriphSize(DMA1, LL_DMA_CHANNEL_5, LL_DMA_PDATAALIGN_BYTE); + + LL_DMA_SetMemorySize(DMA1, LL_DMA_CHANNEL_5, LL_DMA_MDATAALIGN_BYTE); + + /* USART1_TX Init */ + LL_DMA_SetDataTransferDirection(DMA1, LL_DMA_CHANNEL_4, LL_DMA_DIRECTION_MEMORY_TO_PERIPH); + + LL_DMA_SetChannelPriorityLevel(DMA1, LL_DMA_CHANNEL_4, LL_DMA_PRIORITY_LOW); + + LL_DMA_SetMode(DMA1, LL_DMA_CHANNEL_4, LL_DMA_MODE_NORMAL); + + LL_DMA_SetPeriphIncMode(DMA1, LL_DMA_CHANNEL_4, LL_DMA_PERIPH_NOINCREMENT); + + LL_DMA_SetMemoryIncMode(DMA1, LL_DMA_CHANNEL_4, LL_DMA_MEMORY_INCREMENT); + + LL_DMA_SetPeriphSize(DMA1, LL_DMA_CHANNEL_4, LL_DMA_PDATAALIGN_BYTE); + + LL_DMA_SetMemorySize(DMA1, LL_DMA_CHANNEL_4, LL_DMA_MDATAALIGN_BYTE); + + /* USART1 interrupt Init */ + NVIC_SetPriority(USART1_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),5, 0)); + NVIC_EnableIRQ(USART1_IRQn); + + /* USER CODE BEGIN USART1_Init 1 */ + + /* USER CODE END USART1_Init 1 */ + USART_InitStruct.BaudRate = 115200; + USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B; + USART_InitStruct.StopBits = LL_USART_STOPBITS_1; + USART_InitStruct.Parity = LL_USART_PARITY_NONE; + USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX; + USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE; + USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16; + LL_USART_Init(USART1, &USART_InitStruct); + LL_USART_ConfigAsyncMode(USART1); + LL_USART_Enable(USART1); + /* USER CODE BEGIN USART1_Init 2 */ + + /* USER CODE END USART1_Init 2 */ + +} + +/* USER CODE BEGIN 1 */ + +/* USER CODE END 1 */ diff --git a/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h b/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h new file mode 100644 index 0000000..82df4b0 --- /dev/null +++ b/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h @@ -0,0 +1,10240 @@ +/** + ****************************************************************************** + * @file stm32f103xb.h + * @author MCD Application Team + * @brief CMSIS Cortex-M3 Device Peripheral Access Layer Header File. + * This file contains all the peripheral register's definitions, bits + * definitions and memory mapping for STM32F1xx devices. + * + * This file contains: + * - Data structures and the address mapping for all peripherals + * - Peripheral's registers declarations and bits definition + * - Macros to access peripheral's registers hardware + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2017-2021 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 + * @{ + */ + +/** @addtogroup stm32f103xb + * @{ + */ + +#ifndef __STM32F103xB_H +#define __STM32F103xB_H + +#ifdef __cplusplus + extern "C" { +#endif + +/** @addtogroup Configuration_section_for_CMSIS + * @{ + */ +/** + * @brief Configuration of the Cortex-M3 Processor and Core Peripherals + */ +#define __CM3_REV 0x0200U /*!< Core Revision r2p0 */ + #define __MPU_PRESENT 0U /*!< Other STM32 devices does not provide an MPU */ +#define __NVIC_PRIO_BITS 4U /*!< STM32 uses 4 Bits for the Priority Levels */ +#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */ + +/** + * @} + */ + +/** @addtogroup Peripheral_interrupt_number_definition + * @{ + */ + +/** + * @brief STM32F10x Interrupt Number Definition, according to the selected device + * in @ref Library_configuration_section + */ + + /*!< Interrupt Number Definition */ +typedef enum +{ +/****** Cortex-M3 Processor Exceptions Numbers ***************************************************/ + NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */ + HardFault_IRQn = -13, /*!< 3 Cortex-M3 Hard Fault Interrupt */ + MemoryManagement_IRQn = -12, /*!< 4 Cortex-M3 Memory Management Interrupt */ + BusFault_IRQn = -11, /*!< 5 Cortex-M3 Bus Fault Interrupt */ + UsageFault_IRQn = -10, /*!< 6 Cortex-M3 Usage Fault Interrupt */ + SVCall_IRQn = -5, /*!< 11 Cortex-M3 SV Call Interrupt */ + DebugMonitor_IRQn = -4, /*!< 12 Cortex-M3 Debug Monitor Interrupt */ + PendSV_IRQn = -2, /*!< 14 Cortex-M3 Pend SV Interrupt */ + SysTick_IRQn = -1, /*!< 15 Cortex-M3 System Tick Interrupt */ + +/****** STM32 specific Interrupt Numbers *********************************************************/ + WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */ + PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */ + TAMPER_IRQn = 2, /*!< Tamper Interrupt */ + RTC_IRQn = 3, /*!< RTC global Interrupt */ + FLASH_IRQn = 4, /*!< FLASH global Interrupt */ + RCC_IRQn = 5, /*!< RCC global Interrupt */ + EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */ + EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */ + EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */ + EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */ + EXTI4_IRQn = 10, /*!< EXTI Line4 Interrupt */ + DMA1_Channel1_IRQn = 11, /*!< DMA1 Channel 1 global Interrupt */ + DMA1_Channel2_IRQn = 12, /*!< DMA1 Channel 2 global Interrupt */ + DMA1_Channel3_IRQn = 13, /*!< DMA1 Channel 3 global Interrupt */ + DMA1_Channel4_IRQn = 14, /*!< DMA1 Channel 4 global Interrupt */ + DMA1_Channel5_IRQn = 15, /*!< DMA1 Channel 5 global Interrupt */ + DMA1_Channel6_IRQn = 16, /*!< DMA1 Channel 6 global Interrupt */ + DMA1_Channel7_IRQn = 17, /*!< DMA1 Channel 7 global Interrupt */ + ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */ + USB_HP_CAN1_TX_IRQn = 19, /*!< USB Device High Priority or CAN1 TX Interrupts */ + USB_LP_CAN1_RX0_IRQn = 20, /*!< USB Device Low Priority or CAN1 RX0 Interrupts */ + 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_IRQn = 24, /*!< TIM1 Break Interrupt */ + TIM1_UP_IRQn = 25, /*!< TIM1 Update Interrupt */ + TIM1_TRG_COM_IRQn = 26, /*!< TIM1 Trigger and Commutation 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 through EXTI Line Interrupt */ + USBWakeUp_IRQn = 42, /*!< USB Device WakeUp from suspend through EXTI Line Interrupt */ +} IRQn_Type; + +/** + * @} + */ + +#include "core_cm3.h" +#include "system_stm32f1xx.h" +#include + +/** @addtogroup Peripheral_registers_structures + * @{ + */ + +/** + * @brief Analog to Digital Converter + */ + +typedef struct +{ + __IO uint32_t SR; + __IO uint32_t CR1; + __IO uint32_t CR2; + __IO uint32_t SMPR1; + __IO uint32_t SMPR2; + __IO uint32_t JOFR1; + __IO uint32_t JOFR2; + __IO uint32_t JOFR3; + __IO uint32_t JOFR4; + __IO uint32_t HTR; + __IO uint32_t LTR; + __IO uint32_t SQR1; + __IO uint32_t SQR2; + __IO uint32_t SQR3; + __IO uint32_t JSQR; + __IO uint32_t JDR1; + __IO uint32_t JDR2; + __IO uint32_t JDR3; + __IO uint32_t JDR4; + __IO uint32_t DR; +} ADC_TypeDef; + +typedef struct +{ + __IO uint32_t SR; /*!< ADC status register, used for ADC multimode (bits common to several ADC instances). Address offset: ADC1 base address */ + __IO uint32_t CR1; /*!< ADC control register 1, used for ADC multimode (bits common to several ADC instances). Address offset: ADC1 base address + 0x04 */ + __IO uint32_t CR2; /*!< ADC control register 2, used for ADC multimode (bits common to several ADC instances). Address offset: ADC1 base address + 0x08 */ + uint32_t RESERVED[16]; + __IO uint32_t DR; /*!< ADC data register, used for ADC multimode (bits common to several ADC instances). Address offset: ADC1 base address + 0x4C */ +} ADC_Common_TypeDef; + +/** + * @brief Backup Registers + */ + +typedef struct +{ + uint32_t RESERVED0; + __IO uint32_t DR1; + __IO uint32_t DR2; + __IO uint32_t DR3; + __IO uint32_t DR4; + __IO uint32_t DR5; + __IO uint32_t DR6; + __IO uint32_t DR7; + __IO uint32_t DR8; + __IO uint32_t DR9; + __IO uint32_t DR10; + __IO uint32_t RTCCR; + __IO uint32_t CR; + __IO uint32_t CSR; +} BKP_TypeDef; + +/** + * @brief Controller Area Network TxMailBox + */ + +typedef struct +{ + __IO uint32_t TIR; + __IO uint32_t TDTR; + __IO uint32_t TDLR; + __IO uint32_t TDHR; +} CAN_TxMailBox_TypeDef; + +/** + * @brief Controller Area Network FIFOMailBox + */ + +typedef struct +{ + __IO uint32_t RIR; + __IO uint32_t RDTR; + __IO uint32_t RDLR; + __IO uint32_t RDHR; +} CAN_FIFOMailBox_TypeDef; + +/** + * @brief Controller Area Network FilterRegister + */ + +typedef struct +{ + __IO uint32_t FR1; + __IO uint32_t FR2; +} CAN_FilterRegister_TypeDef; + +/** + * @brief Controller Area Network + */ + +typedef struct +{ + __IO uint32_t MCR; + __IO uint32_t MSR; + __IO uint32_t TSR; + __IO uint32_t RF0R; + __IO uint32_t RF1R; + __IO uint32_t IER; + __IO uint32_t ESR; + __IO uint32_t BTR; + uint32_t RESERVED0[88]; + CAN_TxMailBox_TypeDef sTxMailBox[3]; + CAN_FIFOMailBox_TypeDef sFIFOMailBox[2]; + uint32_t RESERVED1[12]; + __IO uint32_t FMR; + __IO uint32_t FM1R; + uint32_t RESERVED2; + __IO uint32_t FS1R; + uint32_t RESERVED3; + __IO uint32_t FFA1R; + uint32_t RESERVED4; + __IO uint32_t FA1R; + uint32_t RESERVED5[8]; + CAN_FilterRegister_TypeDef sFilterRegister[14]; +} CAN_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, Address offset: 0x05 */ + uint16_t RESERVED1; /*!< Reserved, Address offset: 0x06 */ + __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */ +} CRC_TypeDef; + + +/** + * @brief Debug MCU + */ + +typedef struct +{ + __IO uint32_t IDCODE; + __IO uint32_t CR; +}DBGMCU_TypeDef; + +/** + * @brief DMA Controller + */ + +typedef struct +{ + __IO uint32_t CCR; + __IO uint32_t CNDTR; + __IO uint32_t CPAR; + __IO uint32_t CMAR; +} DMA_Channel_TypeDef; + +typedef struct +{ + __IO uint32_t ISR; + __IO uint32_t IFCR; +} DMA_TypeDef; + + + +/** + * @brief External Interrupt/Event Controller + */ + +typedef struct +{ + __IO uint32_t IMR; + __IO uint32_t EMR; + __IO uint32_t RTSR; + __IO uint32_t FTSR; + __IO uint32_t SWIER; + __IO uint32_t PR; +} EXTI_TypeDef; + +/** + * @brief FLASH Registers + */ + +typedef struct +{ + __IO uint32_t ACR; + __IO uint32_t KEYR; + __IO uint32_t OPTKEYR; + __IO uint32_t SR; + __IO uint32_t CR; + __IO uint32_t AR; + __IO uint32_t RESERVED; + __IO uint32_t OBR; + __IO uint32_t WRPR; +} FLASH_TypeDef; + +/** + * @brief Option Bytes Registers + */ + +typedef struct +{ + __IO uint16_t RDP; + __IO uint16_t USER; + __IO uint16_t Data0; + __IO uint16_t Data1; + __IO uint16_t WRP0; + __IO uint16_t WRP1; + __IO uint16_t WRP2; + __IO uint16_t WRP3; +} OB_TypeDef; + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint32_t CRL; + __IO uint32_t CRH; + __IO uint32_t IDR; + __IO uint32_t ODR; + __IO uint32_t BSRR; + __IO uint32_t BRR; + __IO uint32_t LCKR; +} GPIO_TypeDef; + +/** + * @brief Alternate Function I/O + */ + +typedef struct +{ + __IO uint32_t EVCR; + __IO uint32_t MAPR; + __IO uint32_t EXTICR[4]; + uint32_t RESERVED0; + __IO uint32_t MAPR2; +} AFIO_TypeDef; +/** + * @brief Inter Integrated Circuit Interface + */ + +typedef struct +{ + __IO uint32_t CR1; + __IO uint32_t CR2; + __IO uint32_t OAR1; + __IO uint32_t OAR2; + __IO uint32_t DR; + __IO uint32_t SR1; + __IO uint32_t SR2; + __IO uint32_t CCR; + __IO uint32_t TRISE; +} I2C_TypeDef; + +/** + * @brief Independent WATCHDOG + */ + +typedef struct +{ + __IO uint32_t KR; /*!< Key register, Address offset: 0x00 */ + __IO uint32_t PR; /*!< Prescaler register, Address offset: 0x04 */ + __IO uint32_t RLR; /*!< Reload register, Address offset: 0x08 */ + __IO uint32_t SR; /*!< Status register, Address offset: 0x0C */ +} IWDG_TypeDef; + +/** + * @brief Power Control + */ + +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t CSR; +} PWR_TypeDef; + +/** + * @brief Reset and Clock Control + */ + +typedef struct +{ + __IO uint32_t CR; + __IO uint32_t CFGR; + __IO uint32_t CIR; + __IO uint32_t APB2RSTR; + __IO uint32_t APB1RSTR; + __IO uint32_t AHBENR; + __IO uint32_t APB2ENR; + __IO uint32_t APB1ENR; + __IO uint32_t BDCR; + __IO uint32_t CSR; + + +} RCC_TypeDef; + +/** + * @brief Real-Time Clock + */ + +typedef struct +{ + __IO uint32_t CRH; + __IO uint32_t CRL; + __IO uint32_t PRLH; + __IO uint32_t PRLL; + __IO uint32_t DIVH; + __IO uint32_t DIVL; + __IO uint32_t CNTH; + __IO uint32_t CNTL; + __IO uint32_t ALRH; + __IO uint32_t ALRL; +} RTC_TypeDef; + +/** + * @brief Serial Peripheral Interface + */ + +typedef struct +{ + __IO uint32_t CR1; + __IO uint32_t CR2; + __IO uint32_t SR; + __IO uint32_t DR; + __IO uint32_t CRCPR; + __IO uint32_t RXCRCR; + __IO uint32_t TXCRCR; + __IO uint32_t I2SCFGR; +} SPI_TypeDef; + +/** + * @brief TIM Timers + */ +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 register, 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 register, 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 Universal Serial Bus Full Speed Device + */ + +typedef struct +{ + __IO uint16_t EP0R; /*!< USB Endpoint 0 register, Address offset: 0x00 */ + __IO uint16_t RESERVED0; /*!< Reserved */ + __IO uint16_t EP1R; /*!< USB Endpoint 1 register, Address offset: 0x04 */ + __IO uint16_t RESERVED1; /*!< Reserved */ + __IO uint16_t EP2R; /*!< USB Endpoint 2 register, Address offset: 0x08 */ + __IO uint16_t RESERVED2; /*!< Reserved */ + __IO uint16_t EP3R; /*!< USB Endpoint 3 register, Address offset: 0x0C */ + __IO uint16_t RESERVED3; /*!< Reserved */ + __IO uint16_t EP4R; /*!< USB Endpoint 4 register, Address offset: 0x10 */ + __IO uint16_t RESERVED4; /*!< Reserved */ + __IO uint16_t EP5R; /*!< USB Endpoint 5 register, Address offset: 0x14 */ + __IO uint16_t RESERVED5; /*!< Reserved */ + __IO uint16_t EP6R; /*!< USB Endpoint 6 register, Address offset: 0x18 */ + __IO uint16_t RESERVED6; /*!< Reserved */ + __IO uint16_t EP7R; /*!< USB Endpoint 7 register, Address offset: 0x1C */ + __IO uint16_t RESERVED7[17]; /*!< Reserved */ + __IO uint16_t CNTR; /*!< Control register, Address offset: 0x40 */ + __IO uint16_t RESERVED8; /*!< Reserved */ + __IO uint16_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */ + __IO uint16_t RESERVED9; /*!< Reserved */ + __IO uint16_t FNR; /*!< Frame number register, Address offset: 0x48 */ + __IO uint16_t RESERVEDA; /*!< Reserved */ + __IO uint16_t DADDR; /*!< Device address register, Address offset: 0x4C */ + __IO uint16_t RESERVEDB; /*!< Reserved */ + __IO uint16_t BTABLE; /*!< Buffer Table address register, Address offset: 0x50 */ + __IO uint16_t RESERVEDC; /*!< Reserved */ +} USB_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; + +/** + * @} + */ + +/** @addtogroup Peripheral_memory_map + * @{ + */ + + +#define FLASH_BASE 0x08000000UL /*!< FLASH base address in the alias region */ +#define FLASH_BANK1_END 0x0801FFFFUL /*!< FLASH END address of bank1 */ +#define SRAM_BASE 0x20000000UL /*!< SRAM base address in the alias region */ +#define PERIPH_BASE 0x40000000UL /*!< Peripheral base address in the alias region */ + +#define SRAM_BB_BASE 0x22000000UL /*!< SRAM base address in the bit-band region */ +#define PERIPH_BB_BASE 0x42000000UL /*!< Peripheral base address in the bit-band region */ + + +/*!< Peripheral memory map */ +#define APB1PERIPH_BASE PERIPH_BASE +#define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000UL) +#define AHBPERIPH_BASE (PERIPH_BASE + 0x00020000UL) + +#define TIM2_BASE (APB1PERIPH_BASE + 0x00000000UL) +#define TIM3_BASE (APB1PERIPH_BASE + 0x00000400UL) +#define TIM4_BASE (APB1PERIPH_BASE + 0x00000800UL) +#define RTC_BASE (APB1PERIPH_BASE + 0x00002800UL) +#define WWDG_BASE (APB1PERIPH_BASE + 0x00002C00UL) +#define IWDG_BASE (APB1PERIPH_BASE + 0x00003000UL) +#define SPI2_BASE (APB1PERIPH_BASE + 0x00003800UL) +#define USART2_BASE (APB1PERIPH_BASE + 0x00004400UL) +#define USART3_BASE (APB1PERIPH_BASE + 0x00004800UL) +#define I2C1_BASE (APB1PERIPH_BASE + 0x00005400UL) +#define I2C2_BASE (APB1PERIPH_BASE + 0x00005800UL) +#define CAN1_BASE (APB1PERIPH_BASE + 0x00006400UL) +#define BKP_BASE (APB1PERIPH_BASE + 0x00006C00UL) +#define PWR_BASE (APB1PERIPH_BASE + 0x00007000UL) +#define AFIO_BASE (APB2PERIPH_BASE + 0x00000000UL) +#define EXTI_BASE (APB2PERIPH_BASE + 0x00000400UL) +#define GPIOA_BASE (APB2PERIPH_BASE + 0x00000800UL) +#define GPIOB_BASE (APB2PERIPH_BASE + 0x00000C00UL) +#define GPIOC_BASE (APB2PERIPH_BASE + 0x00001000UL) +#define GPIOD_BASE (APB2PERIPH_BASE + 0x00001400UL) +#define GPIOE_BASE (APB2PERIPH_BASE + 0x00001800UL) +#define ADC1_BASE (APB2PERIPH_BASE + 0x00002400UL) +#define ADC2_BASE (APB2PERIPH_BASE + 0x00002800UL) +#define TIM1_BASE (APB2PERIPH_BASE + 0x00002C00UL) +#define SPI1_BASE (APB2PERIPH_BASE + 0x00003000UL) +#define USART1_BASE (APB2PERIPH_BASE + 0x00003800UL) + + +#define DMA1_BASE (AHBPERIPH_BASE + 0x00000000UL) +#define DMA1_Channel1_BASE (AHBPERIPH_BASE + 0x00000008UL) +#define DMA1_Channel2_BASE (AHBPERIPH_BASE + 0x0000001CUL) +#define DMA1_Channel3_BASE (AHBPERIPH_BASE + 0x00000030UL) +#define DMA1_Channel4_BASE (AHBPERIPH_BASE + 0x00000044UL) +#define DMA1_Channel5_BASE (AHBPERIPH_BASE + 0x00000058UL) +#define DMA1_Channel6_BASE (AHBPERIPH_BASE + 0x0000006CUL) +#define DMA1_Channel7_BASE (AHBPERIPH_BASE + 0x00000080UL) +#define RCC_BASE (AHBPERIPH_BASE + 0x00001000UL) +#define CRC_BASE (AHBPERIPH_BASE + 0x00003000UL) + +#define FLASH_R_BASE (AHBPERIPH_BASE + 0x00002000UL) /*!< Flash registers base address */ +#define FLASHSIZE_BASE 0x1FFFF7E0UL /*!< FLASH Size register base address */ +#define UID_BASE 0x1FFFF7E8UL /*!< Unique device ID register base address */ +#define OB_BASE 0x1FFFF800UL /*!< Flash Option Bytes base address */ + + + +#define DBGMCU_BASE 0xE0042000UL /*!< Debug MCU registers base address */ + +/* USB device FS */ +#define USB_BASE (APB1PERIPH_BASE + 0x00005C00UL) /*!< USB_IP Peripheral Registers base address */ +#define USB_PMAADDR (APB1PERIPH_BASE + 0x00006000UL) /*!< USB_IP Packet Memory Area base address */ + + +/** + * @} + */ + +/** @addtogroup Peripheral_declaration + * @{ + */ + +#define TIM2 ((TIM_TypeDef *)TIM2_BASE) +#define TIM3 ((TIM_TypeDef *)TIM3_BASE) +#define TIM4 ((TIM_TypeDef *)TIM4_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 USART2 ((USART_TypeDef *)USART2_BASE) +#define USART3 ((USART_TypeDef *)USART3_BASE) +#define I2C1 ((I2C_TypeDef *)I2C1_BASE) +#define I2C2 ((I2C_TypeDef *)I2C2_BASE) +#define USB ((USB_TypeDef *)USB_BASE) +#define CAN1 ((CAN_TypeDef *)CAN1_BASE) +#define BKP ((BKP_TypeDef *)BKP_BASE) +#define PWR ((PWR_TypeDef *)PWR_BASE) +#define AFIO ((AFIO_TypeDef *)AFIO_BASE) +#define EXTI ((EXTI_TypeDef *)EXTI_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 ADC1 ((ADC_TypeDef *)ADC1_BASE) +#define ADC2 ((ADC_TypeDef *)ADC2_BASE) +#define ADC12_COMMON ((ADC_Common_TypeDef *)ADC1_BASE) +#define TIM1 ((TIM_TypeDef *)TIM1_BASE) +#define SPI1 ((SPI_TypeDef *)SPI1_BASE) +#define USART1 ((USART_TypeDef *)USART1_BASE) +#define DMA1 ((DMA_TypeDef *)DMA1_BASE) +#define DMA1_Channel1 ((DMA_Channel_TypeDef *)DMA1_Channel1_BASE) +#define DMA1_Channel2 ((DMA_Channel_TypeDef *)DMA1_Channel2_BASE) +#define DMA1_Channel3 ((DMA_Channel_TypeDef *)DMA1_Channel3_BASE) +#define DMA1_Channel4 ((DMA_Channel_TypeDef *)DMA1_Channel4_BASE) +#define DMA1_Channel5 ((DMA_Channel_TypeDef *)DMA1_Channel5_BASE) +#define DMA1_Channel6 ((DMA_Channel_TypeDef *)DMA1_Channel6_BASE) +#define DMA1_Channel7 ((DMA_Channel_TypeDef *)DMA1_Channel7_BASE) +#define RCC ((RCC_TypeDef *)RCC_BASE) +#define CRC ((CRC_TypeDef *)CRC_BASE) +#define FLASH ((FLASH_TypeDef *)FLASH_R_BASE) +#define OB ((OB_TypeDef *)OB_BASE) +#define DBGMCU ((DBGMCU_TypeDef *)DBGMCU_BASE) + + +/** + * @} + */ + +/** @addtogroup Exported_constants + * @{ + */ + + /** @addtogroup Hardware_Constant_Definition + * @{ + */ +#define LSI_STARTUP_TIME 85U /*!< LSI Maximum startup time in us */ + /** + * @} + */ + + /** @addtogroup Peripheral_Registers_Bits_Definition + * @{ + */ + +/******************************************************************************/ +/* Peripheral Registers_Bits_Definition */ +/******************************************************************************/ + +/******************************************************************************/ +/* */ +/* CRC calculation unit (CRC) */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for CRC_DR register *********************/ +#define CRC_DR_DR_Pos (0U) +#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */ +#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */ + +/******************* Bit definition for CRC_IDR register ********************/ +#define CRC_IDR_IDR_Pos (0U) +#define CRC_IDR_IDR_Msk (0xFFUL << CRC_IDR_IDR_Pos) /*!< 0x000000FF */ +#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 8-bit data register bits */ + +/******************** Bit definition for CRC_CR register ********************/ +#define CRC_CR_RESET_Pos (0U) +#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */ +#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET bit */ + +/******************************************************************************/ +/* */ +/* Power Control */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for PWR_CR register ********************/ +#define PWR_CR_LPDS_Pos (0U) +#define PWR_CR_LPDS_Msk (0x1UL << PWR_CR_LPDS_Pos) /*!< 0x00000001 */ +#define PWR_CR_LPDS PWR_CR_LPDS_Msk /*!< Low-Power Deepsleep */ +#define PWR_CR_PDDS_Pos (1U) +#define PWR_CR_PDDS_Msk (0x1UL << PWR_CR_PDDS_Pos) /*!< 0x00000002 */ +#define PWR_CR_PDDS PWR_CR_PDDS_Msk /*!< Power Down Deepsleep */ +#define PWR_CR_CWUF_Pos (2U) +#define PWR_CR_CWUF_Msk (0x1UL << PWR_CR_CWUF_Pos) /*!< 0x00000004 */ +#define PWR_CR_CWUF PWR_CR_CWUF_Msk /*!< Clear Wakeup Flag */ +#define PWR_CR_CSBF_Pos (3U) +#define PWR_CR_CSBF_Msk (0x1UL << PWR_CR_CSBF_Pos) /*!< 0x00000008 */ +#define PWR_CR_CSBF PWR_CR_CSBF_Msk /*!< Clear Standby Flag */ +#define PWR_CR_PVDE_Pos (4U) +#define PWR_CR_PVDE_Msk (0x1UL << PWR_CR_PVDE_Pos) /*!< 0x00000010 */ +#define PWR_CR_PVDE PWR_CR_PVDE_Msk /*!< Power Voltage Detector Enable */ + +#define PWR_CR_PLS_Pos (5U) +#define PWR_CR_PLS_Msk (0x7UL << PWR_CR_PLS_Pos) /*!< 0x000000E0 */ +#define PWR_CR_PLS PWR_CR_PLS_Msk /*!< PLS[2:0] bits (PVD Level Selection) */ +#define PWR_CR_PLS_0 (0x1UL << PWR_CR_PLS_Pos) /*!< 0x00000020 */ +#define PWR_CR_PLS_1 (0x2UL << PWR_CR_PLS_Pos) /*!< 0x00000040 */ +#define PWR_CR_PLS_2 (0x4UL << PWR_CR_PLS_Pos) /*!< 0x00000080 */ + +/*!< PVD level configuration */ +#define PWR_CR_PLS_LEV0 0x00000000U /*!< PVD level 2.2V */ +#define PWR_CR_PLS_LEV1 0x00000020U /*!< PVD level 2.3V */ +#define PWR_CR_PLS_LEV2 0x00000040U /*!< PVD level 2.4V */ +#define PWR_CR_PLS_LEV3 0x00000060U /*!< PVD level 2.5V */ +#define PWR_CR_PLS_LEV4 0x00000080U /*!< PVD level 2.6V */ +#define PWR_CR_PLS_LEV5 0x000000A0U /*!< PVD level 2.7V */ +#define PWR_CR_PLS_LEV6 0x000000C0U /*!< PVD level 2.8V */ +#define PWR_CR_PLS_LEV7 0x000000E0U /*!< PVD level 2.9V */ + +/* Legacy defines */ +#define PWR_CR_PLS_2V2 PWR_CR_PLS_LEV0 +#define PWR_CR_PLS_2V3 PWR_CR_PLS_LEV1 +#define PWR_CR_PLS_2V4 PWR_CR_PLS_LEV2 +#define PWR_CR_PLS_2V5 PWR_CR_PLS_LEV3 +#define PWR_CR_PLS_2V6 PWR_CR_PLS_LEV4 +#define PWR_CR_PLS_2V7 PWR_CR_PLS_LEV5 +#define PWR_CR_PLS_2V8 PWR_CR_PLS_LEV6 +#define PWR_CR_PLS_2V9 PWR_CR_PLS_LEV7 + +#define PWR_CR_DBP_Pos (8U) +#define PWR_CR_DBP_Msk (0x1UL << PWR_CR_DBP_Pos) /*!< 0x00000100 */ +#define PWR_CR_DBP PWR_CR_DBP_Msk /*!< Disable Backup Domain write protection */ + + +/******************* Bit definition for PWR_CSR register ********************/ +#define PWR_CSR_WUF_Pos (0U) +#define PWR_CSR_WUF_Msk (0x1UL << PWR_CSR_WUF_Pos) /*!< 0x00000001 */ +#define PWR_CSR_WUF PWR_CSR_WUF_Msk /*!< Wakeup Flag */ +#define PWR_CSR_SBF_Pos (1U) +#define PWR_CSR_SBF_Msk (0x1UL << PWR_CSR_SBF_Pos) /*!< 0x00000002 */ +#define PWR_CSR_SBF PWR_CSR_SBF_Msk /*!< Standby Flag */ +#define PWR_CSR_PVDO_Pos (2U) +#define PWR_CSR_PVDO_Msk (0x1UL << PWR_CSR_PVDO_Pos) /*!< 0x00000004 */ +#define PWR_CSR_PVDO PWR_CSR_PVDO_Msk /*!< PVD Output */ +#define PWR_CSR_EWUP_Pos (8U) +#define PWR_CSR_EWUP_Msk (0x1UL << PWR_CSR_EWUP_Pos) /*!< 0x00000100 */ +#define PWR_CSR_EWUP PWR_CSR_EWUP_Msk /*!< Enable WKUP pin */ + +/******************************************************************************/ +/* */ +/* Backup registers */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for BKP_DR1 register ********************/ +#define BKP_DR1_D_Pos (0U) +#define BKP_DR1_D_Msk (0xFFFFUL << BKP_DR1_D_Pos) /*!< 0x0000FFFF */ +#define BKP_DR1_D BKP_DR1_D_Msk /*!< Backup data */ + +/******************* Bit definition for BKP_DR2 register ********************/ +#define BKP_DR2_D_Pos (0U) +#define BKP_DR2_D_Msk (0xFFFFUL << BKP_DR2_D_Pos) /*!< 0x0000FFFF */ +#define BKP_DR2_D BKP_DR2_D_Msk /*!< Backup data */ + +/******************* Bit definition for BKP_DR3 register ********************/ +#define BKP_DR3_D_Pos (0U) +#define BKP_DR3_D_Msk (0xFFFFUL << BKP_DR3_D_Pos) /*!< 0x0000FFFF */ +#define BKP_DR3_D BKP_DR3_D_Msk /*!< Backup data */ + +/******************* Bit definition for BKP_DR4 register ********************/ +#define BKP_DR4_D_Pos (0U) +#define BKP_DR4_D_Msk (0xFFFFUL << BKP_DR4_D_Pos) /*!< 0x0000FFFF */ +#define BKP_DR4_D BKP_DR4_D_Msk /*!< Backup data */ + +/******************* Bit definition for BKP_DR5 register ********************/ +#define BKP_DR5_D_Pos (0U) +#define BKP_DR5_D_Msk (0xFFFFUL << BKP_DR5_D_Pos) /*!< 0x0000FFFF */ +#define BKP_DR5_D BKP_DR5_D_Msk /*!< Backup data */ + +/******************* Bit definition for BKP_DR6 register ********************/ +#define BKP_DR6_D_Pos (0U) +#define BKP_DR6_D_Msk (0xFFFFUL << BKP_DR6_D_Pos) /*!< 0x0000FFFF */ +#define BKP_DR6_D BKP_DR6_D_Msk /*!< Backup data */ + +/******************* Bit definition for BKP_DR7 register ********************/ +#define BKP_DR7_D_Pos (0U) +#define BKP_DR7_D_Msk (0xFFFFUL << BKP_DR7_D_Pos) /*!< 0x0000FFFF */ +#define BKP_DR7_D BKP_DR7_D_Msk /*!< Backup data */ + +/******************* Bit definition for BKP_DR8 register ********************/ +#define BKP_DR8_D_Pos (0U) +#define BKP_DR8_D_Msk (0xFFFFUL << BKP_DR8_D_Pos) /*!< 0x0000FFFF */ +#define BKP_DR8_D BKP_DR8_D_Msk /*!< Backup data */ + +/******************* Bit definition for BKP_DR9 register ********************/ +#define BKP_DR9_D_Pos (0U) +#define BKP_DR9_D_Msk (0xFFFFUL << BKP_DR9_D_Pos) /*!< 0x0000FFFF */ +#define BKP_DR9_D BKP_DR9_D_Msk /*!< Backup data */ + +/******************* Bit definition for BKP_DR10 register *******************/ +#define BKP_DR10_D_Pos (0U) +#define BKP_DR10_D_Msk (0xFFFFUL << BKP_DR10_D_Pos) /*!< 0x0000FFFF */ +#define BKP_DR10_D BKP_DR10_D_Msk /*!< Backup data */ + +#define RTC_BKP_NUMBER 10 + +/****************** Bit definition for BKP_RTCCR register *******************/ +#define BKP_RTCCR_CAL_Pos (0U) +#define BKP_RTCCR_CAL_Msk (0x7FUL << BKP_RTCCR_CAL_Pos) /*!< 0x0000007F */ +#define BKP_RTCCR_CAL BKP_RTCCR_CAL_Msk /*!< Calibration value */ +#define BKP_RTCCR_CCO_Pos (7U) +#define BKP_RTCCR_CCO_Msk (0x1UL << BKP_RTCCR_CCO_Pos) /*!< 0x00000080 */ +#define BKP_RTCCR_CCO BKP_RTCCR_CCO_Msk /*!< Calibration Clock Output */ +#define BKP_RTCCR_ASOE_Pos (8U) +#define BKP_RTCCR_ASOE_Msk (0x1UL << BKP_RTCCR_ASOE_Pos) /*!< 0x00000100 */ +#define BKP_RTCCR_ASOE BKP_RTCCR_ASOE_Msk /*!< Alarm or Second Output Enable */ +#define BKP_RTCCR_ASOS_Pos (9U) +#define BKP_RTCCR_ASOS_Msk (0x1UL << BKP_RTCCR_ASOS_Pos) /*!< 0x00000200 */ +#define BKP_RTCCR_ASOS BKP_RTCCR_ASOS_Msk /*!< Alarm or Second Output Selection */ + +/******************** Bit definition for BKP_CR register ********************/ +#define BKP_CR_TPE_Pos (0U) +#define BKP_CR_TPE_Msk (0x1UL << BKP_CR_TPE_Pos) /*!< 0x00000001 */ +#define BKP_CR_TPE BKP_CR_TPE_Msk /*!< TAMPER pin enable */ +#define BKP_CR_TPAL_Pos (1U) +#define BKP_CR_TPAL_Msk (0x1UL << BKP_CR_TPAL_Pos) /*!< 0x00000002 */ +#define BKP_CR_TPAL BKP_CR_TPAL_Msk /*!< TAMPER pin active level */ + +/******************* Bit definition for BKP_CSR register ********************/ +#define BKP_CSR_CTE_Pos (0U) +#define BKP_CSR_CTE_Msk (0x1UL << BKP_CSR_CTE_Pos) /*!< 0x00000001 */ +#define BKP_CSR_CTE BKP_CSR_CTE_Msk /*!< Clear Tamper event */ +#define BKP_CSR_CTI_Pos (1U) +#define BKP_CSR_CTI_Msk (0x1UL << BKP_CSR_CTI_Pos) /*!< 0x00000002 */ +#define BKP_CSR_CTI BKP_CSR_CTI_Msk /*!< Clear Tamper Interrupt */ +#define BKP_CSR_TPIE_Pos (2U) +#define BKP_CSR_TPIE_Msk (0x1UL << BKP_CSR_TPIE_Pos) /*!< 0x00000004 */ +#define BKP_CSR_TPIE BKP_CSR_TPIE_Msk /*!< TAMPER Pin interrupt enable */ +#define BKP_CSR_TEF_Pos (8U) +#define BKP_CSR_TEF_Msk (0x1UL << BKP_CSR_TEF_Pos) /*!< 0x00000100 */ +#define BKP_CSR_TEF BKP_CSR_TEF_Msk /*!< Tamper Event Flag */ +#define BKP_CSR_TIF_Pos (9U) +#define BKP_CSR_TIF_Msk (0x1UL << BKP_CSR_TIF_Pos) /*!< 0x00000200 */ +#define BKP_CSR_TIF BKP_CSR_TIF_Msk /*!< Tamper Interrupt Flag */ + +/******************************************************************************/ +/* */ +/* Reset and Clock Control */ +/* */ +/******************************************************************************/ + +/******************** Bit definition for RCC_CR register ********************/ +#define RCC_CR_HSION_Pos (0U) +#define RCC_CR_HSION_Msk (0x1UL << RCC_CR_HSION_Pos) /*!< 0x00000001 */ +#define RCC_CR_HSION RCC_CR_HSION_Msk /*!< Internal High Speed clock enable */ +#define RCC_CR_HSIRDY_Pos (1U) +#define RCC_CR_HSIRDY_Msk (0x1UL << RCC_CR_HSIRDY_Pos) /*!< 0x00000002 */ +#define RCC_CR_HSIRDY RCC_CR_HSIRDY_Msk /*!< Internal High Speed clock ready flag */ +#define RCC_CR_HSITRIM_Pos (3U) +#define RCC_CR_HSITRIM_Msk (0x1FUL << RCC_CR_HSITRIM_Pos) /*!< 0x000000F8 */ +#define RCC_CR_HSITRIM RCC_CR_HSITRIM_Msk /*!< Internal High Speed clock trimming */ +#define RCC_CR_HSICAL_Pos (8U) +#define RCC_CR_HSICAL_Msk (0xFFUL << RCC_CR_HSICAL_Pos) /*!< 0x0000FF00 */ +#define RCC_CR_HSICAL RCC_CR_HSICAL_Msk /*!< Internal High Speed clock Calibration */ +#define RCC_CR_HSEON_Pos (16U) +#define RCC_CR_HSEON_Msk (0x1UL << RCC_CR_HSEON_Pos) /*!< 0x00010000 */ +#define RCC_CR_HSEON RCC_CR_HSEON_Msk /*!< External High Speed clock enable */ +#define RCC_CR_HSERDY_Pos (17U) +#define RCC_CR_HSERDY_Msk (0x1UL << RCC_CR_HSERDY_Pos) /*!< 0x00020000 */ +#define RCC_CR_HSERDY RCC_CR_HSERDY_Msk /*!< External High Speed clock ready flag */ +#define RCC_CR_HSEBYP_Pos (18U) +#define RCC_CR_HSEBYP_Msk (0x1UL << RCC_CR_HSEBYP_Pos) /*!< 0x00040000 */ +#define RCC_CR_HSEBYP RCC_CR_HSEBYP_Msk /*!< External High Speed clock Bypass */ +#define RCC_CR_CSSON_Pos (19U) +#define RCC_CR_CSSON_Msk (0x1UL << RCC_CR_CSSON_Pos) /*!< 0x00080000 */ +#define RCC_CR_CSSON RCC_CR_CSSON_Msk /*!< Clock Security System enable */ +#define RCC_CR_PLLON_Pos (24U) +#define RCC_CR_PLLON_Msk (0x1UL << RCC_CR_PLLON_Pos) /*!< 0x01000000 */ +#define RCC_CR_PLLON RCC_CR_PLLON_Msk /*!< PLL enable */ +#define RCC_CR_PLLRDY_Pos (25U) +#define RCC_CR_PLLRDY_Msk (0x1UL << RCC_CR_PLLRDY_Pos) /*!< 0x02000000 */ +#define RCC_CR_PLLRDY RCC_CR_PLLRDY_Msk /*!< PLL clock ready flag */ + + +/******************* Bit definition for RCC_CFGR register *******************/ +/*!< SW configuration */ +#define RCC_CFGR_SW_Pos (0U) +#define RCC_CFGR_SW_Msk (0x3UL << RCC_CFGR_SW_Pos) /*!< 0x00000003 */ +#define RCC_CFGR_SW RCC_CFGR_SW_Msk /*!< SW[1:0] bits (System clock Switch) */ +#define RCC_CFGR_SW_0 (0x1UL << RCC_CFGR_SW_Pos) /*!< 0x00000001 */ +#define RCC_CFGR_SW_1 (0x2UL << RCC_CFGR_SW_Pos) /*!< 0x00000002 */ + +#define RCC_CFGR_SW_HSI 0x00000000U /*!< HSI selected as system clock */ +#define RCC_CFGR_SW_HSE 0x00000001U /*!< HSE selected as system clock */ +#define RCC_CFGR_SW_PLL 0x00000002U /*!< PLL selected as system clock */ + +/*!< SWS configuration */ +#define RCC_CFGR_SWS_Pos (2U) +#define RCC_CFGR_SWS_Msk (0x3UL << RCC_CFGR_SWS_Pos) /*!< 0x0000000C */ +#define RCC_CFGR_SWS RCC_CFGR_SWS_Msk /*!< SWS[1:0] bits (System Clock Switch Status) */ +#define RCC_CFGR_SWS_0 (0x1UL << RCC_CFGR_SWS_Pos) /*!< 0x00000004 */ +#define RCC_CFGR_SWS_1 (0x2UL << RCC_CFGR_SWS_Pos) /*!< 0x00000008 */ + +#define RCC_CFGR_SWS_HSI 0x00000000U /*!< HSI oscillator used as system clock */ +#define RCC_CFGR_SWS_HSE 0x00000004U /*!< HSE oscillator used as system clock */ +#define RCC_CFGR_SWS_PLL 0x00000008U /*!< PLL used as system clock */ + +/*!< HPRE configuration */ +#define RCC_CFGR_HPRE_Pos (4U) +#define RCC_CFGR_HPRE_Msk (0xFUL << RCC_CFGR_HPRE_Pos) /*!< 0x000000F0 */ +#define RCC_CFGR_HPRE RCC_CFGR_HPRE_Msk /*!< HPRE[3:0] bits (AHB prescaler) */ +#define RCC_CFGR_HPRE_0 (0x1UL << RCC_CFGR_HPRE_Pos) /*!< 0x00000010 */ +#define RCC_CFGR_HPRE_1 (0x2UL << RCC_CFGR_HPRE_Pos) /*!< 0x00000020 */ +#define RCC_CFGR_HPRE_2 (0x4UL << RCC_CFGR_HPRE_Pos) /*!< 0x00000040 */ +#define RCC_CFGR_HPRE_3 (0x8UL << RCC_CFGR_HPRE_Pos) /*!< 0x00000080 */ + +#define RCC_CFGR_HPRE_DIV1 0x00000000U /*!< SYSCLK not divided */ +#define RCC_CFGR_HPRE_DIV2 0x00000080U /*!< SYSCLK divided by 2 */ +#define RCC_CFGR_HPRE_DIV4 0x00000090U /*!< SYSCLK divided by 4 */ +#define RCC_CFGR_HPRE_DIV8 0x000000A0U /*!< SYSCLK divided by 8 */ +#define RCC_CFGR_HPRE_DIV16 0x000000B0U /*!< SYSCLK divided by 16 */ +#define RCC_CFGR_HPRE_DIV64 0x000000C0U /*!< SYSCLK divided by 64 */ +#define RCC_CFGR_HPRE_DIV128 0x000000D0U /*!< SYSCLK divided by 128 */ +#define RCC_CFGR_HPRE_DIV256 0x000000E0U /*!< SYSCLK divided by 256 */ +#define RCC_CFGR_HPRE_DIV512 0x000000F0U /*!< SYSCLK divided by 512 */ + +/*!< PPRE1 configuration */ +#define RCC_CFGR_PPRE1_Pos (8U) +#define RCC_CFGR_PPRE1_Msk (0x7UL << RCC_CFGR_PPRE1_Pos) /*!< 0x00000700 */ +#define RCC_CFGR_PPRE1 RCC_CFGR_PPRE1_Msk /*!< PRE1[2:0] bits (APB1 prescaler) */ +#define RCC_CFGR_PPRE1_0 (0x1UL << RCC_CFGR_PPRE1_Pos) /*!< 0x00000100 */ +#define RCC_CFGR_PPRE1_1 (0x2UL << RCC_CFGR_PPRE1_Pos) /*!< 0x00000200 */ +#define RCC_CFGR_PPRE1_2 (0x4UL << RCC_CFGR_PPRE1_Pos) /*!< 0x00000400 */ + +#define RCC_CFGR_PPRE1_DIV1 0x00000000U /*!< HCLK not divided */ +#define RCC_CFGR_PPRE1_DIV2 0x00000400U /*!< HCLK divided by 2 */ +#define RCC_CFGR_PPRE1_DIV4 0x00000500U /*!< HCLK divided by 4 */ +#define RCC_CFGR_PPRE1_DIV8 0x00000600U /*!< HCLK divided by 8 */ +#define RCC_CFGR_PPRE1_DIV16 0x00000700U /*!< HCLK divided by 16 */ + +/*!< PPRE2 configuration */ +#define RCC_CFGR_PPRE2_Pos (11U) +#define RCC_CFGR_PPRE2_Msk (0x7UL << RCC_CFGR_PPRE2_Pos) /*!< 0x00003800 */ +#define RCC_CFGR_PPRE2 RCC_CFGR_PPRE2_Msk /*!< PRE2[2:0] bits (APB2 prescaler) */ +#define RCC_CFGR_PPRE2_0 (0x1UL << RCC_CFGR_PPRE2_Pos) /*!< 0x00000800 */ +#define RCC_CFGR_PPRE2_1 (0x2UL << RCC_CFGR_PPRE2_Pos) /*!< 0x00001000 */ +#define RCC_CFGR_PPRE2_2 (0x4UL << RCC_CFGR_PPRE2_Pos) /*!< 0x00002000 */ + +#define RCC_CFGR_PPRE2_DIV1 0x00000000U /*!< HCLK not divided */ +#define RCC_CFGR_PPRE2_DIV2 0x00002000U /*!< HCLK divided by 2 */ +#define RCC_CFGR_PPRE2_DIV4 0x00002800U /*!< HCLK divided by 4 */ +#define RCC_CFGR_PPRE2_DIV8 0x00003000U /*!< HCLK divided by 8 */ +#define RCC_CFGR_PPRE2_DIV16 0x00003800U /*!< HCLK divided by 16 */ + +/*!< ADCPPRE configuration */ +#define RCC_CFGR_ADCPRE_Pos (14U) +#define RCC_CFGR_ADCPRE_Msk (0x3UL << RCC_CFGR_ADCPRE_Pos) /*!< 0x0000C000 */ +#define RCC_CFGR_ADCPRE RCC_CFGR_ADCPRE_Msk /*!< ADCPRE[1:0] bits (ADC prescaler) */ +#define RCC_CFGR_ADCPRE_0 (0x1UL << RCC_CFGR_ADCPRE_Pos) /*!< 0x00004000 */ +#define RCC_CFGR_ADCPRE_1 (0x2UL << RCC_CFGR_ADCPRE_Pos) /*!< 0x00008000 */ + +#define RCC_CFGR_ADCPRE_DIV2 0x00000000U /*!< PCLK2 divided by 2 */ +#define RCC_CFGR_ADCPRE_DIV4 0x00004000U /*!< PCLK2 divided by 4 */ +#define RCC_CFGR_ADCPRE_DIV6 0x00008000U /*!< PCLK2 divided by 6 */ +#define RCC_CFGR_ADCPRE_DIV8 0x0000C000U /*!< PCLK2 divided by 8 */ + +#define RCC_CFGR_PLLSRC_Pos (16U) +#define RCC_CFGR_PLLSRC_Msk (0x1UL << RCC_CFGR_PLLSRC_Pos) /*!< 0x00010000 */ +#define RCC_CFGR_PLLSRC RCC_CFGR_PLLSRC_Msk /*!< PLL entry clock source */ + +#define RCC_CFGR_PLLXTPRE_Pos (17U) +#define RCC_CFGR_PLLXTPRE_Msk (0x1UL << RCC_CFGR_PLLXTPRE_Pos) /*!< 0x00020000 */ +#define RCC_CFGR_PLLXTPRE RCC_CFGR_PLLXTPRE_Msk /*!< HSE divider for PLL entry */ + +/*!< PLLMUL configuration */ +#define RCC_CFGR_PLLMULL_Pos (18U) +#define RCC_CFGR_PLLMULL_Msk (0xFUL << RCC_CFGR_PLLMULL_Pos) /*!< 0x003C0000 */ +#define RCC_CFGR_PLLMULL RCC_CFGR_PLLMULL_Msk /*!< PLLMUL[3:0] bits (PLL multiplication factor) */ +#define RCC_CFGR_PLLMULL_0 (0x1UL << RCC_CFGR_PLLMULL_Pos) /*!< 0x00040000 */ +#define RCC_CFGR_PLLMULL_1 (0x2UL << RCC_CFGR_PLLMULL_Pos) /*!< 0x00080000 */ +#define RCC_CFGR_PLLMULL_2 (0x4UL << RCC_CFGR_PLLMULL_Pos) /*!< 0x00100000 */ +#define RCC_CFGR_PLLMULL_3 (0x8UL << RCC_CFGR_PLLMULL_Pos) /*!< 0x00200000 */ + +#define RCC_CFGR_PLLXTPRE_HSE 0x00000000U /*!< HSE clock not divided for PLL entry */ +#define RCC_CFGR_PLLXTPRE_HSE_DIV2 0x00020000U /*!< HSE clock divided by 2 for PLL entry */ + +#define RCC_CFGR_PLLMULL2 0x00000000U /*!< PLL input clock*2 */ +#define RCC_CFGR_PLLMULL3_Pos (18U) +#define RCC_CFGR_PLLMULL3_Msk (0x1UL << RCC_CFGR_PLLMULL3_Pos) /*!< 0x00040000 */ +#define RCC_CFGR_PLLMULL3 RCC_CFGR_PLLMULL3_Msk /*!< PLL input clock*3 */ +#define RCC_CFGR_PLLMULL4_Pos (19U) +#define RCC_CFGR_PLLMULL4_Msk (0x1UL << RCC_CFGR_PLLMULL4_Pos) /*!< 0x00080000 */ +#define RCC_CFGR_PLLMULL4 RCC_CFGR_PLLMULL4_Msk /*!< PLL input clock*4 */ +#define RCC_CFGR_PLLMULL5_Pos (18U) +#define RCC_CFGR_PLLMULL5_Msk (0x3UL << RCC_CFGR_PLLMULL5_Pos) /*!< 0x000C0000 */ +#define RCC_CFGR_PLLMULL5 RCC_CFGR_PLLMULL5_Msk /*!< PLL input clock*5 */ +#define RCC_CFGR_PLLMULL6_Pos (20U) +#define RCC_CFGR_PLLMULL6_Msk (0x1UL << RCC_CFGR_PLLMULL6_Pos) /*!< 0x00100000 */ +#define RCC_CFGR_PLLMULL6 RCC_CFGR_PLLMULL6_Msk /*!< PLL input clock*6 */ +#define RCC_CFGR_PLLMULL7_Pos (18U) +#define RCC_CFGR_PLLMULL7_Msk (0x5UL << RCC_CFGR_PLLMULL7_Pos) /*!< 0x00140000 */ +#define RCC_CFGR_PLLMULL7 RCC_CFGR_PLLMULL7_Msk /*!< PLL input clock*7 */ +#define RCC_CFGR_PLLMULL8_Pos (19U) +#define RCC_CFGR_PLLMULL8_Msk (0x3UL << RCC_CFGR_PLLMULL8_Pos) /*!< 0x00180000 */ +#define RCC_CFGR_PLLMULL8 RCC_CFGR_PLLMULL8_Msk /*!< PLL input clock*8 */ +#define RCC_CFGR_PLLMULL9_Pos (18U) +#define RCC_CFGR_PLLMULL9_Msk (0x7UL << RCC_CFGR_PLLMULL9_Pos) /*!< 0x001C0000 */ +#define RCC_CFGR_PLLMULL9 RCC_CFGR_PLLMULL9_Msk /*!< PLL input clock*9 */ +#define RCC_CFGR_PLLMULL10_Pos (21U) +#define RCC_CFGR_PLLMULL10_Msk (0x1UL << RCC_CFGR_PLLMULL10_Pos) /*!< 0x00200000 */ +#define RCC_CFGR_PLLMULL10 RCC_CFGR_PLLMULL10_Msk /*!< PLL input clock10 */ +#define RCC_CFGR_PLLMULL11_Pos (18U) +#define RCC_CFGR_PLLMULL11_Msk (0x9UL << RCC_CFGR_PLLMULL11_Pos) /*!< 0x00240000 */ +#define RCC_CFGR_PLLMULL11 RCC_CFGR_PLLMULL11_Msk /*!< PLL input clock*11 */ +#define RCC_CFGR_PLLMULL12_Pos (19U) +#define RCC_CFGR_PLLMULL12_Msk (0x5UL << RCC_CFGR_PLLMULL12_Pos) /*!< 0x00280000 */ +#define RCC_CFGR_PLLMULL12 RCC_CFGR_PLLMULL12_Msk /*!< PLL input clock*12 */ +#define RCC_CFGR_PLLMULL13_Pos (18U) +#define RCC_CFGR_PLLMULL13_Msk (0xBUL << RCC_CFGR_PLLMULL13_Pos) /*!< 0x002C0000 */ +#define RCC_CFGR_PLLMULL13 RCC_CFGR_PLLMULL13_Msk /*!< PLL input clock*13 */ +#define RCC_CFGR_PLLMULL14_Pos (20U) +#define RCC_CFGR_PLLMULL14_Msk (0x3UL << RCC_CFGR_PLLMULL14_Pos) /*!< 0x00300000 */ +#define RCC_CFGR_PLLMULL14 RCC_CFGR_PLLMULL14_Msk /*!< PLL input clock*14 */ +#define RCC_CFGR_PLLMULL15_Pos (18U) +#define RCC_CFGR_PLLMULL15_Msk (0xDUL << RCC_CFGR_PLLMULL15_Pos) /*!< 0x00340000 */ +#define RCC_CFGR_PLLMULL15 RCC_CFGR_PLLMULL15_Msk /*!< PLL input clock*15 */ +#define RCC_CFGR_PLLMULL16_Pos (19U) +#define RCC_CFGR_PLLMULL16_Msk (0x7UL << RCC_CFGR_PLLMULL16_Pos) /*!< 0x00380000 */ +#define RCC_CFGR_PLLMULL16 RCC_CFGR_PLLMULL16_Msk /*!< PLL input clock*16 */ +#define RCC_CFGR_USBPRE_Pos (22U) +#define RCC_CFGR_USBPRE_Msk (0x1UL << RCC_CFGR_USBPRE_Pos) /*!< 0x00400000 */ +#define RCC_CFGR_USBPRE RCC_CFGR_USBPRE_Msk /*!< USB Device prescaler */ + +/*!< MCO configuration */ +#define RCC_CFGR_MCO_Pos (24U) +#define RCC_CFGR_MCO_Msk (0x7UL << RCC_CFGR_MCO_Pos) /*!< 0x07000000 */ +#define RCC_CFGR_MCO RCC_CFGR_MCO_Msk /*!< MCO[2:0] bits (Microcontroller Clock Output) */ +#define RCC_CFGR_MCO_0 (0x1UL << RCC_CFGR_MCO_Pos) /*!< 0x01000000 */ +#define RCC_CFGR_MCO_1 (0x2UL << RCC_CFGR_MCO_Pos) /*!< 0x02000000 */ +#define RCC_CFGR_MCO_2 (0x4UL << RCC_CFGR_MCO_Pos) /*!< 0x04000000 */ + +#define RCC_CFGR_MCO_NOCLOCK 0x00000000U /*!< No clock */ +#define RCC_CFGR_MCO_SYSCLK 0x04000000U /*!< System clock selected as MCO source */ +#define RCC_CFGR_MCO_HSI 0x05000000U /*!< HSI clock selected as MCO source */ +#define RCC_CFGR_MCO_HSE 0x06000000U /*!< HSE clock selected as MCO source */ +#define RCC_CFGR_MCO_PLLCLK_DIV2 0x07000000U /*!< PLL clock divided by 2 selected as MCO source */ + + /* Reference defines */ + #define RCC_CFGR_MCOSEL RCC_CFGR_MCO + #define RCC_CFGR_MCOSEL_0 RCC_CFGR_MCO_0 + #define RCC_CFGR_MCOSEL_1 RCC_CFGR_MCO_1 + #define RCC_CFGR_MCOSEL_2 RCC_CFGR_MCO_2 + #define RCC_CFGR_MCOSEL_NOCLOCK RCC_CFGR_MCO_NOCLOCK + #define RCC_CFGR_MCOSEL_SYSCLK RCC_CFGR_MCO_SYSCLK + #define RCC_CFGR_MCOSEL_HSI RCC_CFGR_MCO_HSI + #define RCC_CFGR_MCOSEL_HSE RCC_CFGR_MCO_HSE + #define RCC_CFGR_MCOSEL_PLL_DIV2 RCC_CFGR_MCO_PLLCLK_DIV2 + +/*!<****************** Bit definition for RCC_CIR register ********************/ +#define RCC_CIR_LSIRDYF_Pos (0U) +#define RCC_CIR_LSIRDYF_Msk (0x1UL << RCC_CIR_LSIRDYF_Pos) /*!< 0x00000001 */ +#define RCC_CIR_LSIRDYF RCC_CIR_LSIRDYF_Msk /*!< LSI Ready Interrupt flag */ +#define RCC_CIR_LSERDYF_Pos (1U) +#define RCC_CIR_LSERDYF_Msk (0x1UL << RCC_CIR_LSERDYF_Pos) /*!< 0x00000002 */ +#define RCC_CIR_LSERDYF RCC_CIR_LSERDYF_Msk /*!< LSE Ready Interrupt flag */ +#define RCC_CIR_HSIRDYF_Pos (2U) +#define RCC_CIR_HSIRDYF_Msk (0x1UL << RCC_CIR_HSIRDYF_Pos) /*!< 0x00000004 */ +#define RCC_CIR_HSIRDYF RCC_CIR_HSIRDYF_Msk /*!< HSI Ready Interrupt flag */ +#define RCC_CIR_HSERDYF_Pos (3U) +#define RCC_CIR_HSERDYF_Msk (0x1UL << RCC_CIR_HSERDYF_Pos) /*!< 0x00000008 */ +#define RCC_CIR_HSERDYF RCC_CIR_HSERDYF_Msk /*!< HSE Ready Interrupt flag */ +#define RCC_CIR_PLLRDYF_Pos (4U) +#define RCC_CIR_PLLRDYF_Msk (0x1UL << RCC_CIR_PLLRDYF_Pos) /*!< 0x00000010 */ +#define RCC_CIR_PLLRDYF RCC_CIR_PLLRDYF_Msk /*!< PLL Ready Interrupt flag */ +#define RCC_CIR_CSSF_Pos (7U) +#define RCC_CIR_CSSF_Msk (0x1UL << RCC_CIR_CSSF_Pos) /*!< 0x00000080 */ +#define RCC_CIR_CSSF RCC_CIR_CSSF_Msk /*!< Clock Security System Interrupt flag */ +#define RCC_CIR_LSIRDYIE_Pos (8U) +#define RCC_CIR_LSIRDYIE_Msk (0x1UL << RCC_CIR_LSIRDYIE_Pos) /*!< 0x00000100 */ +#define RCC_CIR_LSIRDYIE RCC_CIR_LSIRDYIE_Msk /*!< LSI Ready Interrupt Enable */ +#define RCC_CIR_LSERDYIE_Pos (9U) +#define RCC_CIR_LSERDYIE_Msk (0x1UL << RCC_CIR_LSERDYIE_Pos) /*!< 0x00000200 */ +#define RCC_CIR_LSERDYIE RCC_CIR_LSERDYIE_Msk /*!< LSE Ready Interrupt Enable */ +#define RCC_CIR_HSIRDYIE_Pos (10U) +#define RCC_CIR_HSIRDYIE_Msk (0x1UL << RCC_CIR_HSIRDYIE_Pos) /*!< 0x00000400 */ +#define RCC_CIR_HSIRDYIE RCC_CIR_HSIRDYIE_Msk /*!< HSI Ready Interrupt Enable */ +#define RCC_CIR_HSERDYIE_Pos (11U) +#define RCC_CIR_HSERDYIE_Msk (0x1UL << RCC_CIR_HSERDYIE_Pos) /*!< 0x00000800 */ +#define RCC_CIR_HSERDYIE RCC_CIR_HSERDYIE_Msk /*!< HSE Ready Interrupt Enable */ +#define RCC_CIR_PLLRDYIE_Pos (12U) +#define RCC_CIR_PLLRDYIE_Msk (0x1UL << RCC_CIR_PLLRDYIE_Pos) /*!< 0x00001000 */ +#define RCC_CIR_PLLRDYIE RCC_CIR_PLLRDYIE_Msk /*!< PLL Ready Interrupt Enable */ +#define RCC_CIR_LSIRDYC_Pos (16U) +#define RCC_CIR_LSIRDYC_Msk (0x1UL << RCC_CIR_LSIRDYC_Pos) /*!< 0x00010000 */ +#define RCC_CIR_LSIRDYC RCC_CIR_LSIRDYC_Msk /*!< LSI Ready Interrupt Clear */ +#define RCC_CIR_LSERDYC_Pos (17U) +#define RCC_CIR_LSERDYC_Msk (0x1UL << RCC_CIR_LSERDYC_Pos) /*!< 0x00020000 */ +#define RCC_CIR_LSERDYC RCC_CIR_LSERDYC_Msk /*!< LSE Ready Interrupt Clear */ +#define RCC_CIR_HSIRDYC_Pos (18U) +#define RCC_CIR_HSIRDYC_Msk (0x1UL << RCC_CIR_HSIRDYC_Pos) /*!< 0x00040000 */ +#define RCC_CIR_HSIRDYC RCC_CIR_HSIRDYC_Msk /*!< HSI Ready Interrupt Clear */ +#define RCC_CIR_HSERDYC_Pos (19U) +#define RCC_CIR_HSERDYC_Msk (0x1UL << RCC_CIR_HSERDYC_Pos) /*!< 0x00080000 */ +#define RCC_CIR_HSERDYC RCC_CIR_HSERDYC_Msk /*!< HSE Ready Interrupt Clear */ +#define RCC_CIR_PLLRDYC_Pos (20U) +#define RCC_CIR_PLLRDYC_Msk (0x1UL << RCC_CIR_PLLRDYC_Pos) /*!< 0x00100000 */ +#define RCC_CIR_PLLRDYC RCC_CIR_PLLRDYC_Msk /*!< PLL Ready Interrupt Clear */ +#define RCC_CIR_CSSC_Pos (23U) +#define RCC_CIR_CSSC_Msk (0x1UL << RCC_CIR_CSSC_Pos) /*!< 0x00800000 */ +#define RCC_CIR_CSSC RCC_CIR_CSSC_Msk /*!< Clock Security System Interrupt Clear */ + + +/***************** Bit definition for RCC_APB2RSTR register *****************/ +#define RCC_APB2RSTR_AFIORST_Pos (0U) +#define RCC_APB2RSTR_AFIORST_Msk (0x1UL << RCC_APB2RSTR_AFIORST_Pos) /*!< 0x00000001 */ +#define RCC_APB2RSTR_AFIORST RCC_APB2RSTR_AFIORST_Msk /*!< Alternate Function I/O reset */ +#define RCC_APB2RSTR_IOPARST_Pos (2U) +#define RCC_APB2RSTR_IOPARST_Msk (0x1UL << RCC_APB2RSTR_IOPARST_Pos) /*!< 0x00000004 */ +#define RCC_APB2RSTR_IOPARST RCC_APB2RSTR_IOPARST_Msk /*!< I/O port A reset */ +#define RCC_APB2RSTR_IOPBRST_Pos (3U) +#define RCC_APB2RSTR_IOPBRST_Msk (0x1UL << RCC_APB2RSTR_IOPBRST_Pos) /*!< 0x00000008 */ +#define RCC_APB2RSTR_IOPBRST RCC_APB2RSTR_IOPBRST_Msk /*!< I/O port B reset */ +#define RCC_APB2RSTR_IOPCRST_Pos (4U) +#define RCC_APB2RSTR_IOPCRST_Msk (0x1UL << RCC_APB2RSTR_IOPCRST_Pos) /*!< 0x00000010 */ +#define RCC_APB2RSTR_IOPCRST RCC_APB2RSTR_IOPCRST_Msk /*!< I/O port C reset */ +#define RCC_APB2RSTR_IOPDRST_Pos (5U) +#define RCC_APB2RSTR_IOPDRST_Msk (0x1UL << RCC_APB2RSTR_IOPDRST_Pos) /*!< 0x00000020 */ +#define RCC_APB2RSTR_IOPDRST RCC_APB2RSTR_IOPDRST_Msk /*!< I/O port D reset */ +#define RCC_APB2RSTR_ADC1RST_Pos (9U) +#define RCC_APB2RSTR_ADC1RST_Msk (0x1UL << RCC_APB2RSTR_ADC1RST_Pos) /*!< 0x00000200 */ +#define RCC_APB2RSTR_ADC1RST RCC_APB2RSTR_ADC1RST_Msk /*!< ADC 1 interface reset */ + +#define RCC_APB2RSTR_ADC2RST_Pos (10U) +#define RCC_APB2RSTR_ADC2RST_Msk (0x1UL << RCC_APB2RSTR_ADC2RST_Pos) /*!< 0x00000400 */ +#define RCC_APB2RSTR_ADC2RST RCC_APB2RSTR_ADC2RST_Msk /*!< ADC 2 interface reset */ + +#define RCC_APB2RSTR_TIM1RST_Pos (11U) +#define RCC_APB2RSTR_TIM1RST_Msk (0x1UL << RCC_APB2RSTR_TIM1RST_Pos) /*!< 0x00000800 */ +#define RCC_APB2RSTR_TIM1RST RCC_APB2RSTR_TIM1RST_Msk /*!< TIM1 Timer reset */ +#define RCC_APB2RSTR_SPI1RST_Pos (12U) +#define RCC_APB2RSTR_SPI1RST_Msk (0x1UL << RCC_APB2RSTR_SPI1RST_Pos) /*!< 0x00001000 */ +#define RCC_APB2RSTR_SPI1RST RCC_APB2RSTR_SPI1RST_Msk /*!< SPI 1 reset */ +#define RCC_APB2RSTR_USART1RST_Pos (14U) +#define RCC_APB2RSTR_USART1RST_Msk (0x1UL << RCC_APB2RSTR_USART1RST_Pos) /*!< 0x00004000 */ +#define RCC_APB2RSTR_USART1RST RCC_APB2RSTR_USART1RST_Msk /*!< USART1 reset */ + + +#define RCC_APB2RSTR_IOPERST_Pos (6U) +#define RCC_APB2RSTR_IOPERST_Msk (0x1UL << RCC_APB2RSTR_IOPERST_Pos) /*!< 0x00000040 */ +#define RCC_APB2RSTR_IOPERST RCC_APB2RSTR_IOPERST_Msk /*!< I/O port E reset */ + + + + +/***************** Bit definition for RCC_APB1RSTR register *****************/ +#define RCC_APB1RSTR_TIM2RST_Pos (0U) +#define RCC_APB1RSTR_TIM2RST_Msk (0x1UL << RCC_APB1RSTR_TIM2RST_Pos) /*!< 0x00000001 */ +#define RCC_APB1RSTR_TIM2RST RCC_APB1RSTR_TIM2RST_Msk /*!< Timer 2 reset */ +#define RCC_APB1RSTR_TIM3RST_Pos (1U) +#define RCC_APB1RSTR_TIM3RST_Msk (0x1UL << RCC_APB1RSTR_TIM3RST_Pos) /*!< 0x00000002 */ +#define RCC_APB1RSTR_TIM3RST RCC_APB1RSTR_TIM3RST_Msk /*!< Timer 3 reset */ +#define RCC_APB1RSTR_WWDGRST_Pos (11U) +#define RCC_APB1RSTR_WWDGRST_Msk (0x1UL << RCC_APB1RSTR_WWDGRST_Pos) /*!< 0x00000800 */ +#define RCC_APB1RSTR_WWDGRST RCC_APB1RSTR_WWDGRST_Msk /*!< Window Watchdog reset */ +#define RCC_APB1RSTR_USART2RST_Pos (17U) +#define RCC_APB1RSTR_USART2RST_Msk (0x1UL << RCC_APB1RSTR_USART2RST_Pos) /*!< 0x00020000 */ +#define RCC_APB1RSTR_USART2RST RCC_APB1RSTR_USART2RST_Msk /*!< USART 2 reset */ +#define RCC_APB1RSTR_I2C1RST_Pos (21U) +#define RCC_APB1RSTR_I2C1RST_Msk (0x1UL << RCC_APB1RSTR_I2C1RST_Pos) /*!< 0x00200000 */ +#define RCC_APB1RSTR_I2C1RST RCC_APB1RSTR_I2C1RST_Msk /*!< I2C 1 reset */ + +#define RCC_APB1RSTR_CAN1RST_Pos (25U) +#define RCC_APB1RSTR_CAN1RST_Msk (0x1UL << RCC_APB1RSTR_CAN1RST_Pos) /*!< 0x02000000 */ +#define RCC_APB1RSTR_CAN1RST RCC_APB1RSTR_CAN1RST_Msk /*!< CAN1 reset */ + +#define RCC_APB1RSTR_BKPRST_Pos (27U) +#define RCC_APB1RSTR_BKPRST_Msk (0x1UL << RCC_APB1RSTR_BKPRST_Pos) /*!< 0x08000000 */ +#define RCC_APB1RSTR_BKPRST RCC_APB1RSTR_BKPRST_Msk /*!< Backup interface reset */ +#define RCC_APB1RSTR_PWRRST_Pos (28U) +#define RCC_APB1RSTR_PWRRST_Msk (0x1UL << RCC_APB1RSTR_PWRRST_Pos) /*!< 0x10000000 */ +#define RCC_APB1RSTR_PWRRST RCC_APB1RSTR_PWRRST_Msk /*!< Power interface reset */ + +#define RCC_APB1RSTR_TIM4RST_Pos (2U) +#define RCC_APB1RSTR_TIM4RST_Msk (0x1UL << RCC_APB1RSTR_TIM4RST_Pos) /*!< 0x00000004 */ +#define RCC_APB1RSTR_TIM4RST RCC_APB1RSTR_TIM4RST_Msk /*!< Timer 4 reset */ +#define RCC_APB1RSTR_SPI2RST_Pos (14U) +#define RCC_APB1RSTR_SPI2RST_Msk (0x1UL << RCC_APB1RSTR_SPI2RST_Pos) /*!< 0x00004000 */ +#define RCC_APB1RSTR_SPI2RST RCC_APB1RSTR_SPI2RST_Msk /*!< SPI 2 reset */ +#define RCC_APB1RSTR_USART3RST_Pos (18U) +#define RCC_APB1RSTR_USART3RST_Msk (0x1UL << RCC_APB1RSTR_USART3RST_Pos) /*!< 0x00040000 */ +#define RCC_APB1RSTR_USART3RST RCC_APB1RSTR_USART3RST_Msk /*!< USART 3 reset */ +#define RCC_APB1RSTR_I2C2RST_Pos (22U) +#define RCC_APB1RSTR_I2C2RST_Msk (0x1UL << RCC_APB1RSTR_I2C2RST_Pos) /*!< 0x00400000 */ +#define RCC_APB1RSTR_I2C2RST RCC_APB1RSTR_I2C2RST_Msk /*!< I2C 2 reset */ + +#define RCC_APB1RSTR_USBRST_Pos (23U) +#define RCC_APB1RSTR_USBRST_Msk (0x1UL << RCC_APB1RSTR_USBRST_Pos) /*!< 0x00800000 */ +#define RCC_APB1RSTR_USBRST RCC_APB1RSTR_USBRST_Msk /*!< USB Device reset */ + + + + + + +/****************** Bit definition for RCC_AHBENR register ******************/ +#define RCC_AHBENR_DMA1EN_Pos (0U) +#define RCC_AHBENR_DMA1EN_Msk (0x1UL << RCC_AHBENR_DMA1EN_Pos) /*!< 0x00000001 */ +#define RCC_AHBENR_DMA1EN RCC_AHBENR_DMA1EN_Msk /*!< DMA1 clock enable */ +#define RCC_AHBENR_SRAMEN_Pos (2U) +#define RCC_AHBENR_SRAMEN_Msk (0x1UL << RCC_AHBENR_SRAMEN_Pos) /*!< 0x00000004 */ +#define RCC_AHBENR_SRAMEN RCC_AHBENR_SRAMEN_Msk /*!< SRAM interface clock enable */ +#define RCC_AHBENR_FLITFEN_Pos (4U) +#define RCC_AHBENR_FLITFEN_Msk (0x1UL << RCC_AHBENR_FLITFEN_Pos) /*!< 0x00000010 */ +#define RCC_AHBENR_FLITFEN RCC_AHBENR_FLITFEN_Msk /*!< FLITF clock enable */ +#define RCC_AHBENR_CRCEN_Pos (6U) +#define RCC_AHBENR_CRCEN_Msk (0x1UL << RCC_AHBENR_CRCEN_Pos) /*!< 0x00000040 */ +#define RCC_AHBENR_CRCEN RCC_AHBENR_CRCEN_Msk /*!< CRC clock enable */ + + + + +/****************** Bit definition for RCC_APB2ENR register *****************/ +#define RCC_APB2ENR_AFIOEN_Pos (0U) +#define RCC_APB2ENR_AFIOEN_Msk (0x1UL << RCC_APB2ENR_AFIOEN_Pos) /*!< 0x00000001 */ +#define RCC_APB2ENR_AFIOEN RCC_APB2ENR_AFIOEN_Msk /*!< Alternate Function I/O clock enable */ +#define RCC_APB2ENR_IOPAEN_Pos (2U) +#define RCC_APB2ENR_IOPAEN_Msk (0x1UL << RCC_APB2ENR_IOPAEN_Pos) /*!< 0x00000004 */ +#define RCC_APB2ENR_IOPAEN RCC_APB2ENR_IOPAEN_Msk /*!< I/O port A clock enable */ +#define RCC_APB2ENR_IOPBEN_Pos (3U) +#define RCC_APB2ENR_IOPBEN_Msk (0x1UL << RCC_APB2ENR_IOPBEN_Pos) /*!< 0x00000008 */ +#define RCC_APB2ENR_IOPBEN RCC_APB2ENR_IOPBEN_Msk /*!< I/O port B clock enable */ +#define RCC_APB2ENR_IOPCEN_Pos (4U) +#define RCC_APB2ENR_IOPCEN_Msk (0x1UL << RCC_APB2ENR_IOPCEN_Pos) /*!< 0x00000010 */ +#define RCC_APB2ENR_IOPCEN RCC_APB2ENR_IOPCEN_Msk /*!< I/O port C clock enable */ +#define RCC_APB2ENR_IOPDEN_Pos (5U) +#define RCC_APB2ENR_IOPDEN_Msk (0x1UL << RCC_APB2ENR_IOPDEN_Pos) /*!< 0x00000020 */ +#define RCC_APB2ENR_IOPDEN RCC_APB2ENR_IOPDEN_Msk /*!< I/O port D clock enable */ +#define RCC_APB2ENR_ADC1EN_Pos (9U) +#define RCC_APB2ENR_ADC1EN_Msk (0x1UL << RCC_APB2ENR_ADC1EN_Pos) /*!< 0x00000200 */ +#define RCC_APB2ENR_ADC1EN RCC_APB2ENR_ADC1EN_Msk /*!< ADC 1 interface clock enable */ + +#define RCC_APB2ENR_ADC2EN_Pos (10U) +#define RCC_APB2ENR_ADC2EN_Msk (0x1UL << RCC_APB2ENR_ADC2EN_Pos) /*!< 0x00000400 */ +#define RCC_APB2ENR_ADC2EN RCC_APB2ENR_ADC2EN_Msk /*!< ADC 2 interface clock enable */ + +#define RCC_APB2ENR_TIM1EN_Pos (11U) +#define RCC_APB2ENR_TIM1EN_Msk (0x1UL << RCC_APB2ENR_TIM1EN_Pos) /*!< 0x00000800 */ +#define RCC_APB2ENR_TIM1EN RCC_APB2ENR_TIM1EN_Msk /*!< TIM1 Timer clock enable */ +#define RCC_APB2ENR_SPI1EN_Pos (12U) +#define RCC_APB2ENR_SPI1EN_Msk (0x1UL << RCC_APB2ENR_SPI1EN_Pos) /*!< 0x00001000 */ +#define RCC_APB2ENR_SPI1EN RCC_APB2ENR_SPI1EN_Msk /*!< SPI 1 clock enable */ +#define RCC_APB2ENR_USART1EN_Pos (14U) +#define RCC_APB2ENR_USART1EN_Msk (0x1UL << RCC_APB2ENR_USART1EN_Pos) /*!< 0x00004000 */ +#define RCC_APB2ENR_USART1EN RCC_APB2ENR_USART1EN_Msk /*!< USART1 clock enable */ + + +#define RCC_APB2ENR_IOPEEN_Pos (6U) +#define RCC_APB2ENR_IOPEEN_Msk (0x1UL << RCC_APB2ENR_IOPEEN_Pos) /*!< 0x00000040 */ +#define RCC_APB2ENR_IOPEEN RCC_APB2ENR_IOPEEN_Msk /*!< I/O port E clock enable */ + + + + +/***************** Bit definition for RCC_APB1ENR register ******************/ +#define RCC_APB1ENR_TIM2EN_Pos (0U) +#define RCC_APB1ENR_TIM2EN_Msk (0x1UL << RCC_APB1ENR_TIM2EN_Pos) /*!< 0x00000001 */ +#define RCC_APB1ENR_TIM2EN RCC_APB1ENR_TIM2EN_Msk /*!< Timer 2 clock enabled*/ +#define RCC_APB1ENR_TIM3EN_Pos (1U) +#define RCC_APB1ENR_TIM3EN_Msk (0x1UL << RCC_APB1ENR_TIM3EN_Pos) /*!< 0x00000002 */ +#define RCC_APB1ENR_TIM3EN RCC_APB1ENR_TIM3EN_Msk /*!< Timer 3 clock enable */ +#define RCC_APB1ENR_WWDGEN_Pos (11U) +#define RCC_APB1ENR_WWDGEN_Msk (0x1UL << RCC_APB1ENR_WWDGEN_Pos) /*!< 0x00000800 */ +#define RCC_APB1ENR_WWDGEN RCC_APB1ENR_WWDGEN_Msk /*!< Window Watchdog clock enable */ +#define RCC_APB1ENR_USART2EN_Pos (17U) +#define RCC_APB1ENR_USART2EN_Msk (0x1UL << RCC_APB1ENR_USART2EN_Pos) /*!< 0x00020000 */ +#define RCC_APB1ENR_USART2EN RCC_APB1ENR_USART2EN_Msk /*!< USART 2 clock enable */ +#define RCC_APB1ENR_I2C1EN_Pos (21U) +#define RCC_APB1ENR_I2C1EN_Msk (0x1UL << RCC_APB1ENR_I2C1EN_Pos) /*!< 0x00200000 */ +#define RCC_APB1ENR_I2C1EN RCC_APB1ENR_I2C1EN_Msk /*!< I2C 1 clock enable */ + +#define RCC_APB1ENR_CAN1EN_Pos (25U) +#define RCC_APB1ENR_CAN1EN_Msk (0x1UL << RCC_APB1ENR_CAN1EN_Pos) /*!< 0x02000000 */ +#define RCC_APB1ENR_CAN1EN RCC_APB1ENR_CAN1EN_Msk /*!< CAN1 clock enable */ + +#define RCC_APB1ENR_BKPEN_Pos (27U) +#define RCC_APB1ENR_BKPEN_Msk (0x1UL << RCC_APB1ENR_BKPEN_Pos) /*!< 0x08000000 */ +#define RCC_APB1ENR_BKPEN RCC_APB1ENR_BKPEN_Msk /*!< Backup interface clock enable */ +#define RCC_APB1ENR_PWREN_Pos (28U) +#define RCC_APB1ENR_PWREN_Msk (0x1UL << RCC_APB1ENR_PWREN_Pos) /*!< 0x10000000 */ +#define RCC_APB1ENR_PWREN RCC_APB1ENR_PWREN_Msk /*!< Power interface clock enable */ + +#define RCC_APB1ENR_TIM4EN_Pos (2U) +#define RCC_APB1ENR_TIM4EN_Msk (0x1UL << RCC_APB1ENR_TIM4EN_Pos) /*!< 0x00000004 */ +#define RCC_APB1ENR_TIM4EN RCC_APB1ENR_TIM4EN_Msk /*!< Timer 4 clock enable */ +#define RCC_APB1ENR_SPI2EN_Pos (14U) +#define RCC_APB1ENR_SPI2EN_Msk (0x1UL << RCC_APB1ENR_SPI2EN_Pos) /*!< 0x00004000 */ +#define RCC_APB1ENR_SPI2EN RCC_APB1ENR_SPI2EN_Msk /*!< SPI 2 clock enable */ +#define RCC_APB1ENR_USART3EN_Pos (18U) +#define RCC_APB1ENR_USART3EN_Msk (0x1UL << RCC_APB1ENR_USART3EN_Pos) /*!< 0x00040000 */ +#define RCC_APB1ENR_USART3EN RCC_APB1ENR_USART3EN_Msk /*!< USART 3 clock enable */ +#define RCC_APB1ENR_I2C2EN_Pos (22U) +#define RCC_APB1ENR_I2C2EN_Msk (0x1UL << RCC_APB1ENR_I2C2EN_Pos) /*!< 0x00400000 */ +#define RCC_APB1ENR_I2C2EN RCC_APB1ENR_I2C2EN_Msk /*!< I2C 2 clock enable */ + +#define RCC_APB1ENR_USBEN_Pos (23U) +#define RCC_APB1ENR_USBEN_Msk (0x1UL << RCC_APB1ENR_USBEN_Pos) /*!< 0x00800000 */ +#define RCC_APB1ENR_USBEN RCC_APB1ENR_USBEN_Msk /*!< USB Device clock enable */ + + + + + + +/******************* Bit definition for RCC_BDCR register *******************/ +#define RCC_BDCR_LSEON_Pos (0U) +#define RCC_BDCR_LSEON_Msk (0x1UL << RCC_BDCR_LSEON_Pos) /*!< 0x00000001 */ +#define RCC_BDCR_LSEON RCC_BDCR_LSEON_Msk /*!< External Low Speed oscillator enable */ +#define RCC_BDCR_LSERDY_Pos (1U) +#define RCC_BDCR_LSERDY_Msk (0x1UL << RCC_BDCR_LSERDY_Pos) /*!< 0x00000002 */ +#define RCC_BDCR_LSERDY RCC_BDCR_LSERDY_Msk /*!< External Low Speed oscillator Ready */ +#define RCC_BDCR_LSEBYP_Pos (2U) +#define RCC_BDCR_LSEBYP_Msk (0x1UL << RCC_BDCR_LSEBYP_Pos) /*!< 0x00000004 */ +#define RCC_BDCR_LSEBYP RCC_BDCR_LSEBYP_Msk /*!< External Low Speed oscillator Bypass */ + +#define RCC_BDCR_RTCSEL_Pos (8U) +#define RCC_BDCR_RTCSEL_Msk (0x3UL << RCC_BDCR_RTCSEL_Pos) /*!< 0x00000300 */ +#define RCC_BDCR_RTCSEL RCC_BDCR_RTCSEL_Msk /*!< RTCSEL[1:0] bits (RTC clock source selection) */ +#define RCC_BDCR_RTCSEL_0 (0x1UL << RCC_BDCR_RTCSEL_Pos) /*!< 0x00000100 */ +#define RCC_BDCR_RTCSEL_1 (0x2UL << RCC_BDCR_RTCSEL_Pos) /*!< 0x00000200 */ + +/*!< RTC configuration */ +#define RCC_BDCR_RTCSEL_NOCLOCK 0x00000000U /*!< No clock */ +#define RCC_BDCR_RTCSEL_LSE 0x00000100U /*!< LSE oscillator clock used as RTC clock */ +#define RCC_BDCR_RTCSEL_LSI 0x00000200U /*!< LSI oscillator clock used as RTC clock */ +#define RCC_BDCR_RTCSEL_HSE 0x00000300U /*!< HSE oscillator clock divided by 128 used as RTC clock */ + +#define RCC_BDCR_RTCEN_Pos (15U) +#define RCC_BDCR_RTCEN_Msk (0x1UL << RCC_BDCR_RTCEN_Pos) /*!< 0x00008000 */ +#define RCC_BDCR_RTCEN RCC_BDCR_RTCEN_Msk /*!< RTC clock enable */ +#define RCC_BDCR_BDRST_Pos (16U) +#define RCC_BDCR_BDRST_Msk (0x1UL << RCC_BDCR_BDRST_Pos) /*!< 0x00010000 */ +#define RCC_BDCR_BDRST RCC_BDCR_BDRST_Msk /*!< Backup domain software reset */ + +/******************* Bit definition for RCC_CSR register ********************/ +#define RCC_CSR_LSION_Pos (0U) +#define RCC_CSR_LSION_Msk (0x1UL << RCC_CSR_LSION_Pos) /*!< 0x00000001 */ +#define RCC_CSR_LSION RCC_CSR_LSION_Msk /*!< Internal Low Speed oscillator enable */ +#define RCC_CSR_LSIRDY_Pos (1U) +#define RCC_CSR_LSIRDY_Msk (0x1UL << RCC_CSR_LSIRDY_Pos) /*!< 0x00000002 */ +#define RCC_CSR_LSIRDY RCC_CSR_LSIRDY_Msk /*!< Internal Low Speed oscillator Ready */ +#define RCC_CSR_RMVF_Pos (24U) +#define RCC_CSR_RMVF_Msk (0x1UL << RCC_CSR_RMVF_Pos) /*!< 0x01000000 */ +#define RCC_CSR_RMVF RCC_CSR_RMVF_Msk /*!< Remove reset flag */ +#define RCC_CSR_PINRSTF_Pos (26U) +#define RCC_CSR_PINRSTF_Msk (0x1UL << RCC_CSR_PINRSTF_Pos) /*!< 0x04000000 */ +#define RCC_CSR_PINRSTF RCC_CSR_PINRSTF_Msk /*!< PIN reset flag */ +#define RCC_CSR_PORRSTF_Pos (27U) +#define RCC_CSR_PORRSTF_Msk (0x1UL << RCC_CSR_PORRSTF_Pos) /*!< 0x08000000 */ +#define RCC_CSR_PORRSTF RCC_CSR_PORRSTF_Msk /*!< POR/PDR reset flag */ +#define RCC_CSR_SFTRSTF_Pos (28U) +#define RCC_CSR_SFTRSTF_Msk (0x1UL << RCC_CSR_SFTRSTF_Pos) /*!< 0x10000000 */ +#define RCC_CSR_SFTRSTF RCC_CSR_SFTRSTF_Msk /*!< Software Reset flag */ +#define RCC_CSR_IWDGRSTF_Pos (29U) +#define RCC_CSR_IWDGRSTF_Msk (0x1UL << RCC_CSR_IWDGRSTF_Pos) /*!< 0x20000000 */ +#define RCC_CSR_IWDGRSTF RCC_CSR_IWDGRSTF_Msk /*!< Independent Watchdog reset flag */ +#define RCC_CSR_WWDGRSTF_Pos (30U) +#define RCC_CSR_WWDGRSTF_Msk (0x1UL << RCC_CSR_WWDGRSTF_Pos) /*!< 0x40000000 */ +#define RCC_CSR_WWDGRSTF RCC_CSR_WWDGRSTF_Msk /*!< Window watchdog reset flag */ +#define RCC_CSR_LPWRRSTF_Pos (31U) +#define RCC_CSR_LPWRRSTF_Msk (0x1UL << RCC_CSR_LPWRRSTF_Pos) /*!< 0x80000000 */ +#define RCC_CSR_LPWRRSTF RCC_CSR_LPWRRSTF_Msk /*!< Low-Power reset flag */ + + + +/******************************************************************************/ +/* */ +/* General Purpose and Alternate Function I/O */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for GPIO_CRL register *******************/ +#define GPIO_CRL_MODE_Pos (0U) +#define GPIO_CRL_MODE_Msk (0x33333333UL << GPIO_CRL_MODE_Pos) /*!< 0x33333333 */ +#define GPIO_CRL_MODE GPIO_CRL_MODE_Msk /*!< Port x mode bits */ + +#define GPIO_CRL_MODE0_Pos (0U) +#define GPIO_CRL_MODE0_Msk (0x3UL << GPIO_CRL_MODE0_Pos) /*!< 0x00000003 */ +#define GPIO_CRL_MODE0 GPIO_CRL_MODE0_Msk /*!< MODE0[1:0] bits (Port x mode bits, pin 0) */ +#define GPIO_CRL_MODE0_0 (0x1UL << GPIO_CRL_MODE0_Pos) /*!< 0x00000001 */ +#define GPIO_CRL_MODE0_1 (0x2UL << GPIO_CRL_MODE0_Pos) /*!< 0x00000002 */ + +#define GPIO_CRL_MODE1_Pos (4U) +#define GPIO_CRL_MODE1_Msk (0x3UL << GPIO_CRL_MODE1_Pos) /*!< 0x00000030 */ +#define GPIO_CRL_MODE1 GPIO_CRL_MODE1_Msk /*!< MODE1[1:0] bits (Port x mode bits, pin 1) */ +#define GPIO_CRL_MODE1_0 (0x1UL << GPIO_CRL_MODE1_Pos) /*!< 0x00000010 */ +#define GPIO_CRL_MODE1_1 (0x2UL << GPIO_CRL_MODE1_Pos) /*!< 0x00000020 */ + +#define GPIO_CRL_MODE2_Pos (8U) +#define GPIO_CRL_MODE2_Msk (0x3UL << GPIO_CRL_MODE2_Pos) /*!< 0x00000300 */ +#define GPIO_CRL_MODE2 GPIO_CRL_MODE2_Msk /*!< MODE2[1:0] bits (Port x mode bits, pin 2) */ +#define GPIO_CRL_MODE2_0 (0x1UL << GPIO_CRL_MODE2_Pos) /*!< 0x00000100 */ +#define GPIO_CRL_MODE2_1 (0x2UL << GPIO_CRL_MODE2_Pos) /*!< 0x00000200 */ + +#define GPIO_CRL_MODE3_Pos (12U) +#define GPIO_CRL_MODE3_Msk (0x3UL << GPIO_CRL_MODE3_Pos) /*!< 0x00003000 */ +#define GPIO_CRL_MODE3 GPIO_CRL_MODE3_Msk /*!< MODE3[1:0] bits (Port x mode bits, pin 3) */ +#define GPIO_CRL_MODE3_0 (0x1UL << GPIO_CRL_MODE3_Pos) /*!< 0x00001000 */ +#define GPIO_CRL_MODE3_1 (0x2UL << GPIO_CRL_MODE3_Pos) /*!< 0x00002000 */ + +#define GPIO_CRL_MODE4_Pos (16U) +#define GPIO_CRL_MODE4_Msk (0x3UL << GPIO_CRL_MODE4_Pos) /*!< 0x00030000 */ +#define GPIO_CRL_MODE4 GPIO_CRL_MODE4_Msk /*!< MODE4[1:0] bits (Port x mode bits, pin 4) */ +#define GPIO_CRL_MODE4_0 (0x1UL << GPIO_CRL_MODE4_Pos) /*!< 0x00010000 */ +#define GPIO_CRL_MODE4_1 (0x2UL << GPIO_CRL_MODE4_Pos) /*!< 0x00020000 */ + +#define GPIO_CRL_MODE5_Pos (20U) +#define GPIO_CRL_MODE5_Msk (0x3UL << GPIO_CRL_MODE5_Pos) /*!< 0x00300000 */ +#define GPIO_CRL_MODE5 GPIO_CRL_MODE5_Msk /*!< MODE5[1:0] bits (Port x mode bits, pin 5) */ +#define GPIO_CRL_MODE5_0 (0x1UL << GPIO_CRL_MODE5_Pos) /*!< 0x00100000 */ +#define GPIO_CRL_MODE5_1 (0x2UL << GPIO_CRL_MODE5_Pos) /*!< 0x00200000 */ + +#define GPIO_CRL_MODE6_Pos (24U) +#define GPIO_CRL_MODE6_Msk (0x3UL << GPIO_CRL_MODE6_Pos) /*!< 0x03000000 */ +#define GPIO_CRL_MODE6 GPIO_CRL_MODE6_Msk /*!< MODE6[1:0] bits (Port x mode bits, pin 6) */ +#define GPIO_CRL_MODE6_0 (0x1UL << GPIO_CRL_MODE6_Pos) /*!< 0x01000000 */ +#define GPIO_CRL_MODE6_1 (0x2UL << GPIO_CRL_MODE6_Pos) /*!< 0x02000000 */ + +#define GPIO_CRL_MODE7_Pos (28U) +#define GPIO_CRL_MODE7_Msk (0x3UL << GPIO_CRL_MODE7_Pos) /*!< 0x30000000 */ +#define GPIO_CRL_MODE7 GPIO_CRL_MODE7_Msk /*!< MODE7[1:0] bits (Port x mode bits, pin 7) */ +#define GPIO_CRL_MODE7_0 (0x1UL << GPIO_CRL_MODE7_Pos) /*!< 0x10000000 */ +#define GPIO_CRL_MODE7_1 (0x2UL << GPIO_CRL_MODE7_Pos) /*!< 0x20000000 */ + +#define GPIO_CRL_CNF_Pos (2U) +#define GPIO_CRL_CNF_Msk (0x33333333UL << GPIO_CRL_CNF_Pos) /*!< 0xCCCCCCCC */ +#define GPIO_CRL_CNF GPIO_CRL_CNF_Msk /*!< Port x configuration bits */ + +#define GPIO_CRL_CNF0_Pos (2U) +#define GPIO_CRL_CNF0_Msk (0x3UL << GPIO_CRL_CNF0_Pos) /*!< 0x0000000C */ +#define GPIO_CRL_CNF0 GPIO_CRL_CNF0_Msk /*!< CNF0[1:0] bits (Port x configuration bits, pin 0) */ +#define GPIO_CRL_CNF0_0 (0x1UL << GPIO_CRL_CNF0_Pos) /*!< 0x00000004 */ +#define GPIO_CRL_CNF0_1 (0x2UL << GPIO_CRL_CNF0_Pos) /*!< 0x00000008 */ + +#define GPIO_CRL_CNF1_Pos (6U) +#define GPIO_CRL_CNF1_Msk (0x3UL << GPIO_CRL_CNF1_Pos) /*!< 0x000000C0 */ +#define GPIO_CRL_CNF1 GPIO_CRL_CNF1_Msk /*!< CNF1[1:0] bits (Port x configuration bits, pin 1) */ +#define GPIO_CRL_CNF1_0 (0x1UL << GPIO_CRL_CNF1_Pos) /*!< 0x00000040 */ +#define GPIO_CRL_CNF1_1 (0x2UL << GPIO_CRL_CNF1_Pos) /*!< 0x00000080 */ + +#define GPIO_CRL_CNF2_Pos (10U) +#define GPIO_CRL_CNF2_Msk (0x3UL << GPIO_CRL_CNF2_Pos) /*!< 0x00000C00 */ +#define GPIO_CRL_CNF2 GPIO_CRL_CNF2_Msk /*!< CNF2[1:0] bits (Port x configuration bits, pin 2) */ +#define GPIO_CRL_CNF2_0 (0x1UL << GPIO_CRL_CNF2_Pos) /*!< 0x00000400 */ +#define GPIO_CRL_CNF2_1 (0x2UL << GPIO_CRL_CNF2_Pos) /*!< 0x00000800 */ + +#define GPIO_CRL_CNF3_Pos (14U) +#define GPIO_CRL_CNF3_Msk (0x3UL << GPIO_CRL_CNF3_Pos) /*!< 0x0000C000 */ +#define GPIO_CRL_CNF3 GPIO_CRL_CNF3_Msk /*!< CNF3[1:0] bits (Port x configuration bits, pin 3) */ +#define GPIO_CRL_CNF3_0 (0x1UL << GPIO_CRL_CNF3_Pos) /*!< 0x00004000 */ +#define GPIO_CRL_CNF3_1 (0x2UL << GPIO_CRL_CNF3_Pos) /*!< 0x00008000 */ + +#define GPIO_CRL_CNF4_Pos (18U) +#define GPIO_CRL_CNF4_Msk (0x3UL << GPIO_CRL_CNF4_Pos) /*!< 0x000C0000 */ +#define GPIO_CRL_CNF4 GPIO_CRL_CNF4_Msk /*!< CNF4[1:0] bits (Port x configuration bits, pin 4) */ +#define GPIO_CRL_CNF4_0 (0x1UL << GPIO_CRL_CNF4_Pos) /*!< 0x00040000 */ +#define GPIO_CRL_CNF4_1 (0x2UL << GPIO_CRL_CNF4_Pos) /*!< 0x00080000 */ + +#define GPIO_CRL_CNF5_Pos (22U) +#define GPIO_CRL_CNF5_Msk (0x3UL << GPIO_CRL_CNF5_Pos) /*!< 0x00C00000 */ +#define GPIO_CRL_CNF5 GPIO_CRL_CNF5_Msk /*!< CNF5[1:0] bits (Port x configuration bits, pin 5) */ +#define GPIO_CRL_CNF5_0 (0x1UL << GPIO_CRL_CNF5_Pos) /*!< 0x00400000 */ +#define GPIO_CRL_CNF5_1 (0x2UL << GPIO_CRL_CNF5_Pos) /*!< 0x00800000 */ + +#define GPIO_CRL_CNF6_Pos (26U) +#define GPIO_CRL_CNF6_Msk (0x3UL << GPIO_CRL_CNF6_Pos) /*!< 0x0C000000 */ +#define GPIO_CRL_CNF6 GPIO_CRL_CNF6_Msk /*!< CNF6[1:0] bits (Port x configuration bits, pin 6) */ +#define GPIO_CRL_CNF6_0 (0x1UL << GPIO_CRL_CNF6_Pos) /*!< 0x04000000 */ +#define GPIO_CRL_CNF6_1 (0x2UL << GPIO_CRL_CNF6_Pos) /*!< 0x08000000 */ + +#define GPIO_CRL_CNF7_Pos (30U) +#define GPIO_CRL_CNF7_Msk (0x3UL << GPIO_CRL_CNF7_Pos) /*!< 0xC0000000 */ +#define GPIO_CRL_CNF7 GPIO_CRL_CNF7_Msk /*!< CNF7[1:0] bits (Port x configuration bits, pin 7) */ +#define GPIO_CRL_CNF7_0 (0x1UL << GPIO_CRL_CNF7_Pos) /*!< 0x40000000 */ +#define GPIO_CRL_CNF7_1 (0x2UL << GPIO_CRL_CNF7_Pos) /*!< 0x80000000 */ + +/******************* Bit definition for GPIO_CRH register *******************/ +#define GPIO_CRH_MODE_Pos (0U) +#define GPIO_CRH_MODE_Msk (0x33333333UL << GPIO_CRH_MODE_Pos) /*!< 0x33333333 */ +#define GPIO_CRH_MODE GPIO_CRH_MODE_Msk /*!< Port x mode bits */ + +#define GPIO_CRH_MODE8_Pos (0U) +#define GPIO_CRH_MODE8_Msk (0x3UL << GPIO_CRH_MODE8_Pos) /*!< 0x00000003 */ +#define GPIO_CRH_MODE8 GPIO_CRH_MODE8_Msk /*!< MODE8[1:0] bits (Port x mode bits, pin 8) */ +#define GPIO_CRH_MODE8_0 (0x1UL << GPIO_CRH_MODE8_Pos) /*!< 0x00000001 */ +#define GPIO_CRH_MODE8_1 (0x2UL << GPIO_CRH_MODE8_Pos) /*!< 0x00000002 */ + +#define GPIO_CRH_MODE9_Pos (4U) +#define GPIO_CRH_MODE9_Msk (0x3UL << GPIO_CRH_MODE9_Pos) /*!< 0x00000030 */ +#define GPIO_CRH_MODE9 GPIO_CRH_MODE9_Msk /*!< MODE9[1:0] bits (Port x mode bits, pin 9) */ +#define GPIO_CRH_MODE9_0 (0x1UL << GPIO_CRH_MODE9_Pos) /*!< 0x00000010 */ +#define GPIO_CRH_MODE9_1 (0x2UL << GPIO_CRH_MODE9_Pos) /*!< 0x00000020 */ + +#define GPIO_CRH_MODE10_Pos (8U) +#define GPIO_CRH_MODE10_Msk (0x3UL << GPIO_CRH_MODE10_Pos) /*!< 0x00000300 */ +#define GPIO_CRH_MODE10 GPIO_CRH_MODE10_Msk /*!< MODE10[1:0] bits (Port x mode bits, pin 10) */ +#define GPIO_CRH_MODE10_0 (0x1UL << GPIO_CRH_MODE10_Pos) /*!< 0x00000100 */ +#define GPIO_CRH_MODE10_1 (0x2UL << GPIO_CRH_MODE10_Pos) /*!< 0x00000200 */ + +#define GPIO_CRH_MODE11_Pos (12U) +#define GPIO_CRH_MODE11_Msk (0x3UL << GPIO_CRH_MODE11_Pos) /*!< 0x00003000 */ +#define GPIO_CRH_MODE11 GPIO_CRH_MODE11_Msk /*!< MODE11[1:0] bits (Port x mode bits, pin 11) */ +#define GPIO_CRH_MODE11_0 (0x1UL << GPIO_CRH_MODE11_Pos) /*!< 0x00001000 */ +#define GPIO_CRH_MODE11_1 (0x2UL << GPIO_CRH_MODE11_Pos) /*!< 0x00002000 */ + +#define GPIO_CRH_MODE12_Pos (16U) +#define GPIO_CRH_MODE12_Msk (0x3UL << GPIO_CRH_MODE12_Pos) /*!< 0x00030000 */ +#define GPIO_CRH_MODE12 GPIO_CRH_MODE12_Msk /*!< MODE12[1:0] bits (Port x mode bits, pin 12) */ +#define GPIO_CRH_MODE12_0 (0x1UL << GPIO_CRH_MODE12_Pos) /*!< 0x00010000 */ +#define GPIO_CRH_MODE12_1 (0x2UL << GPIO_CRH_MODE12_Pos) /*!< 0x00020000 */ + +#define GPIO_CRH_MODE13_Pos (20U) +#define GPIO_CRH_MODE13_Msk (0x3UL << GPIO_CRH_MODE13_Pos) /*!< 0x00300000 */ +#define GPIO_CRH_MODE13 GPIO_CRH_MODE13_Msk /*!< MODE13[1:0] bits (Port x mode bits, pin 13) */ +#define GPIO_CRH_MODE13_0 (0x1UL << GPIO_CRH_MODE13_Pos) /*!< 0x00100000 */ +#define GPIO_CRH_MODE13_1 (0x2UL << GPIO_CRH_MODE13_Pos) /*!< 0x00200000 */ + +#define GPIO_CRH_MODE14_Pos (24U) +#define GPIO_CRH_MODE14_Msk (0x3UL << GPIO_CRH_MODE14_Pos) /*!< 0x03000000 */ +#define GPIO_CRH_MODE14 GPIO_CRH_MODE14_Msk /*!< MODE14[1:0] bits (Port x mode bits, pin 14) */ +#define GPIO_CRH_MODE14_0 (0x1UL << GPIO_CRH_MODE14_Pos) /*!< 0x01000000 */ +#define GPIO_CRH_MODE14_1 (0x2UL << GPIO_CRH_MODE14_Pos) /*!< 0x02000000 */ + +#define GPIO_CRH_MODE15_Pos (28U) +#define GPIO_CRH_MODE15_Msk (0x3UL << GPIO_CRH_MODE15_Pos) /*!< 0x30000000 */ +#define GPIO_CRH_MODE15 GPIO_CRH_MODE15_Msk /*!< MODE15[1:0] bits (Port x mode bits, pin 15) */ +#define GPIO_CRH_MODE15_0 (0x1UL << GPIO_CRH_MODE15_Pos) /*!< 0x10000000 */ +#define GPIO_CRH_MODE15_1 (0x2UL << GPIO_CRH_MODE15_Pos) /*!< 0x20000000 */ + +#define GPIO_CRH_CNF_Pos (2U) +#define GPIO_CRH_CNF_Msk (0x33333333UL << GPIO_CRH_CNF_Pos) /*!< 0xCCCCCCCC */ +#define GPIO_CRH_CNF GPIO_CRH_CNF_Msk /*!< Port x configuration bits */ + +#define GPIO_CRH_CNF8_Pos (2U) +#define GPIO_CRH_CNF8_Msk (0x3UL << GPIO_CRH_CNF8_Pos) /*!< 0x0000000C */ +#define GPIO_CRH_CNF8 GPIO_CRH_CNF8_Msk /*!< CNF8[1:0] bits (Port x configuration bits, pin 8) */ +#define GPIO_CRH_CNF8_0 (0x1UL << GPIO_CRH_CNF8_Pos) /*!< 0x00000004 */ +#define GPIO_CRH_CNF8_1 (0x2UL << GPIO_CRH_CNF8_Pos) /*!< 0x00000008 */ + +#define GPIO_CRH_CNF9_Pos (6U) +#define GPIO_CRH_CNF9_Msk (0x3UL << GPIO_CRH_CNF9_Pos) /*!< 0x000000C0 */ +#define GPIO_CRH_CNF9 GPIO_CRH_CNF9_Msk /*!< CNF9[1:0] bits (Port x configuration bits, pin 9) */ +#define GPIO_CRH_CNF9_0 (0x1UL << GPIO_CRH_CNF9_Pos) /*!< 0x00000040 */ +#define GPIO_CRH_CNF9_1 (0x2UL << GPIO_CRH_CNF9_Pos) /*!< 0x00000080 */ + +#define GPIO_CRH_CNF10_Pos (10U) +#define GPIO_CRH_CNF10_Msk (0x3UL << GPIO_CRH_CNF10_Pos) /*!< 0x00000C00 */ +#define GPIO_CRH_CNF10 GPIO_CRH_CNF10_Msk /*!< CNF10[1:0] bits (Port x configuration bits, pin 10) */ +#define GPIO_CRH_CNF10_0 (0x1UL << GPIO_CRH_CNF10_Pos) /*!< 0x00000400 */ +#define GPIO_CRH_CNF10_1 (0x2UL << GPIO_CRH_CNF10_Pos) /*!< 0x00000800 */ + +#define GPIO_CRH_CNF11_Pos (14U) +#define GPIO_CRH_CNF11_Msk (0x3UL << GPIO_CRH_CNF11_Pos) /*!< 0x0000C000 */ +#define GPIO_CRH_CNF11 GPIO_CRH_CNF11_Msk /*!< CNF11[1:0] bits (Port x configuration bits, pin 11) */ +#define GPIO_CRH_CNF11_0 (0x1UL << GPIO_CRH_CNF11_Pos) /*!< 0x00004000 */ +#define GPIO_CRH_CNF11_1 (0x2UL << GPIO_CRH_CNF11_Pos) /*!< 0x00008000 */ + +#define GPIO_CRH_CNF12_Pos (18U) +#define GPIO_CRH_CNF12_Msk (0x3UL << GPIO_CRH_CNF12_Pos) /*!< 0x000C0000 */ +#define GPIO_CRH_CNF12 GPIO_CRH_CNF12_Msk /*!< CNF12[1:0] bits (Port x configuration bits, pin 12) */ +#define GPIO_CRH_CNF12_0 (0x1UL << GPIO_CRH_CNF12_Pos) /*!< 0x00040000 */ +#define GPIO_CRH_CNF12_1 (0x2UL << GPIO_CRH_CNF12_Pos) /*!< 0x00080000 */ + +#define GPIO_CRH_CNF13_Pos (22U) +#define GPIO_CRH_CNF13_Msk (0x3UL << GPIO_CRH_CNF13_Pos) /*!< 0x00C00000 */ +#define GPIO_CRH_CNF13 GPIO_CRH_CNF13_Msk /*!< CNF13[1:0] bits (Port x configuration bits, pin 13) */ +#define GPIO_CRH_CNF13_0 (0x1UL << GPIO_CRH_CNF13_Pos) /*!< 0x00400000 */ +#define GPIO_CRH_CNF13_1 (0x2UL << GPIO_CRH_CNF13_Pos) /*!< 0x00800000 */ + +#define GPIO_CRH_CNF14_Pos (26U) +#define GPIO_CRH_CNF14_Msk (0x3UL << GPIO_CRH_CNF14_Pos) /*!< 0x0C000000 */ +#define GPIO_CRH_CNF14 GPIO_CRH_CNF14_Msk /*!< CNF14[1:0] bits (Port x configuration bits, pin 14) */ +#define GPIO_CRH_CNF14_0 (0x1UL << GPIO_CRH_CNF14_Pos) /*!< 0x04000000 */ +#define GPIO_CRH_CNF14_1 (0x2UL << GPIO_CRH_CNF14_Pos) /*!< 0x08000000 */ + +#define GPIO_CRH_CNF15_Pos (30U) +#define GPIO_CRH_CNF15_Msk (0x3UL << GPIO_CRH_CNF15_Pos) /*!< 0xC0000000 */ +#define GPIO_CRH_CNF15 GPIO_CRH_CNF15_Msk /*!< CNF15[1:0] bits (Port x configuration bits, pin 15) */ +#define GPIO_CRH_CNF15_0 (0x1UL << GPIO_CRH_CNF15_Pos) /*!< 0x40000000 */ +#define GPIO_CRH_CNF15_1 (0x2UL << GPIO_CRH_CNF15_Pos) /*!< 0x80000000 */ + +/*!<****************** Bit definition for GPIO_IDR register *******************/ +#define GPIO_IDR_IDR0_Pos (0U) +#define GPIO_IDR_IDR0_Msk (0x1UL << GPIO_IDR_IDR0_Pos) /*!< 0x00000001 */ +#define GPIO_IDR_IDR0 GPIO_IDR_IDR0_Msk /*!< Port input data, bit 0 */ +#define GPIO_IDR_IDR1_Pos (1U) +#define GPIO_IDR_IDR1_Msk (0x1UL << GPIO_IDR_IDR1_Pos) /*!< 0x00000002 */ +#define GPIO_IDR_IDR1 GPIO_IDR_IDR1_Msk /*!< Port input data, bit 1 */ +#define GPIO_IDR_IDR2_Pos (2U) +#define GPIO_IDR_IDR2_Msk (0x1UL << GPIO_IDR_IDR2_Pos) /*!< 0x00000004 */ +#define GPIO_IDR_IDR2 GPIO_IDR_IDR2_Msk /*!< Port input data, bit 2 */ +#define GPIO_IDR_IDR3_Pos (3U) +#define GPIO_IDR_IDR3_Msk (0x1UL << GPIO_IDR_IDR3_Pos) /*!< 0x00000008 */ +#define GPIO_IDR_IDR3 GPIO_IDR_IDR3_Msk /*!< Port input data, bit 3 */ +#define GPIO_IDR_IDR4_Pos (4U) +#define GPIO_IDR_IDR4_Msk (0x1UL << GPIO_IDR_IDR4_Pos) /*!< 0x00000010 */ +#define GPIO_IDR_IDR4 GPIO_IDR_IDR4_Msk /*!< Port input data, bit 4 */ +#define GPIO_IDR_IDR5_Pos (5U) +#define GPIO_IDR_IDR5_Msk (0x1UL << GPIO_IDR_IDR5_Pos) /*!< 0x00000020 */ +#define GPIO_IDR_IDR5 GPIO_IDR_IDR5_Msk /*!< Port input data, bit 5 */ +#define GPIO_IDR_IDR6_Pos (6U) +#define GPIO_IDR_IDR6_Msk (0x1UL << GPIO_IDR_IDR6_Pos) /*!< 0x00000040 */ +#define GPIO_IDR_IDR6 GPIO_IDR_IDR6_Msk /*!< Port input data, bit 6 */ +#define GPIO_IDR_IDR7_Pos (7U) +#define GPIO_IDR_IDR7_Msk (0x1UL << GPIO_IDR_IDR7_Pos) /*!< 0x00000080 */ +#define GPIO_IDR_IDR7 GPIO_IDR_IDR7_Msk /*!< Port input data, bit 7 */ +#define GPIO_IDR_IDR8_Pos (8U) +#define GPIO_IDR_IDR8_Msk (0x1UL << GPIO_IDR_IDR8_Pos) /*!< 0x00000100 */ +#define GPIO_IDR_IDR8 GPIO_IDR_IDR8_Msk /*!< Port input data, bit 8 */ +#define GPIO_IDR_IDR9_Pos (9U) +#define GPIO_IDR_IDR9_Msk (0x1UL << GPIO_IDR_IDR9_Pos) /*!< 0x00000200 */ +#define GPIO_IDR_IDR9 GPIO_IDR_IDR9_Msk /*!< Port input data, bit 9 */ +#define GPIO_IDR_IDR10_Pos (10U) +#define GPIO_IDR_IDR10_Msk (0x1UL << GPIO_IDR_IDR10_Pos) /*!< 0x00000400 */ +#define GPIO_IDR_IDR10 GPIO_IDR_IDR10_Msk /*!< Port input data, bit 10 */ +#define GPIO_IDR_IDR11_Pos (11U) +#define GPIO_IDR_IDR11_Msk (0x1UL << GPIO_IDR_IDR11_Pos) /*!< 0x00000800 */ +#define GPIO_IDR_IDR11 GPIO_IDR_IDR11_Msk /*!< Port input data, bit 11 */ +#define GPIO_IDR_IDR12_Pos (12U) +#define GPIO_IDR_IDR12_Msk (0x1UL << GPIO_IDR_IDR12_Pos) /*!< 0x00001000 */ +#define GPIO_IDR_IDR12 GPIO_IDR_IDR12_Msk /*!< Port input data, bit 12 */ +#define GPIO_IDR_IDR13_Pos (13U) +#define GPIO_IDR_IDR13_Msk (0x1UL << GPIO_IDR_IDR13_Pos) /*!< 0x00002000 */ +#define GPIO_IDR_IDR13 GPIO_IDR_IDR13_Msk /*!< Port input data, bit 13 */ +#define GPIO_IDR_IDR14_Pos (14U) +#define GPIO_IDR_IDR14_Msk (0x1UL << GPIO_IDR_IDR14_Pos) /*!< 0x00004000 */ +#define GPIO_IDR_IDR14 GPIO_IDR_IDR14_Msk /*!< Port input data, bit 14 */ +#define GPIO_IDR_IDR15_Pos (15U) +#define GPIO_IDR_IDR15_Msk (0x1UL << GPIO_IDR_IDR15_Pos) /*!< 0x00008000 */ +#define GPIO_IDR_IDR15 GPIO_IDR_IDR15_Msk /*!< Port input data, bit 15 */ + +/******************* Bit definition for GPIO_ODR register *******************/ +#define GPIO_ODR_ODR0_Pos (0U) +#define GPIO_ODR_ODR0_Msk (0x1UL << GPIO_ODR_ODR0_Pos) /*!< 0x00000001 */ +#define GPIO_ODR_ODR0 GPIO_ODR_ODR0_Msk /*!< Port output data, bit 0 */ +#define GPIO_ODR_ODR1_Pos (1U) +#define GPIO_ODR_ODR1_Msk (0x1UL << GPIO_ODR_ODR1_Pos) /*!< 0x00000002 */ +#define GPIO_ODR_ODR1 GPIO_ODR_ODR1_Msk /*!< Port output data, bit 1 */ +#define GPIO_ODR_ODR2_Pos (2U) +#define GPIO_ODR_ODR2_Msk (0x1UL << GPIO_ODR_ODR2_Pos) /*!< 0x00000004 */ +#define GPIO_ODR_ODR2 GPIO_ODR_ODR2_Msk /*!< Port output data, bit 2 */ +#define GPIO_ODR_ODR3_Pos (3U) +#define GPIO_ODR_ODR3_Msk (0x1UL << GPIO_ODR_ODR3_Pos) /*!< 0x00000008 */ +#define GPIO_ODR_ODR3 GPIO_ODR_ODR3_Msk /*!< Port output data, bit 3 */ +#define GPIO_ODR_ODR4_Pos (4U) +#define GPIO_ODR_ODR4_Msk (0x1UL << GPIO_ODR_ODR4_Pos) /*!< 0x00000010 */ +#define GPIO_ODR_ODR4 GPIO_ODR_ODR4_Msk /*!< Port output data, bit 4 */ +#define GPIO_ODR_ODR5_Pos (5U) +#define GPIO_ODR_ODR5_Msk (0x1UL << GPIO_ODR_ODR5_Pos) /*!< 0x00000020 */ +#define GPIO_ODR_ODR5 GPIO_ODR_ODR5_Msk /*!< Port output data, bit 5 */ +#define GPIO_ODR_ODR6_Pos (6U) +#define GPIO_ODR_ODR6_Msk (0x1UL << GPIO_ODR_ODR6_Pos) /*!< 0x00000040 */ +#define GPIO_ODR_ODR6 GPIO_ODR_ODR6_Msk /*!< Port output data, bit 6 */ +#define GPIO_ODR_ODR7_Pos (7U) +#define GPIO_ODR_ODR7_Msk (0x1UL << GPIO_ODR_ODR7_Pos) /*!< 0x00000080 */ +#define GPIO_ODR_ODR7 GPIO_ODR_ODR7_Msk /*!< Port output data, bit 7 */ +#define GPIO_ODR_ODR8_Pos (8U) +#define GPIO_ODR_ODR8_Msk (0x1UL << GPIO_ODR_ODR8_Pos) /*!< 0x00000100 */ +#define GPIO_ODR_ODR8 GPIO_ODR_ODR8_Msk /*!< Port output data, bit 8 */ +#define GPIO_ODR_ODR9_Pos (9U) +#define GPIO_ODR_ODR9_Msk (0x1UL << GPIO_ODR_ODR9_Pos) /*!< 0x00000200 */ +#define GPIO_ODR_ODR9 GPIO_ODR_ODR9_Msk /*!< Port output data, bit 9 */ +#define GPIO_ODR_ODR10_Pos (10U) +#define GPIO_ODR_ODR10_Msk (0x1UL << GPIO_ODR_ODR10_Pos) /*!< 0x00000400 */ +#define GPIO_ODR_ODR10 GPIO_ODR_ODR10_Msk /*!< Port output data, bit 10 */ +#define GPIO_ODR_ODR11_Pos (11U) +#define GPIO_ODR_ODR11_Msk (0x1UL << GPIO_ODR_ODR11_Pos) /*!< 0x00000800 */ +#define GPIO_ODR_ODR11 GPIO_ODR_ODR11_Msk /*!< Port output data, bit 11 */ +#define GPIO_ODR_ODR12_Pos (12U) +#define GPIO_ODR_ODR12_Msk (0x1UL << GPIO_ODR_ODR12_Pos) /*!< 0x00001000 */ +#define GPIO_ODR_ODR12 GPIO_ODR_ODR12_Msk /*!< Port output data, bit 12 */ +#define GPIO_ODR_ODR13_Pos (13U) +#define GPIO_ODR_ODR13_Msk (0x1UL << GPIO_ODR_ODR13_Pos) /*!< 0x00002000 */ +#define GPIO_ODR_ODR13 GPIO_ODR_ODR13_Msk /*!< Port output data, bit 13 */ +#define GPIO_ODR_ODR14_Pos (14U) +#define GPIO_ODR_ODR14_Msk (0x1UL << GPIO_ODR_ODR14_Pos) /*!< 0x00004000 */ +#define GPIO_ODR_ODR14 GPIO_ODR_ODR14_Msk /*!< Port output data, bit 14 */ +#define GPIO_ODR_ODR15_Pos (15U) +#define GPIO_ODR_ODR15_Msk (0x1UL << GPIO_ODR_ODR15_Pos) /*!< 0x00008000 */ +#define GPIO_ODR_ODR15 GPIO_ODR_ODR15_Msk /*!< Port output data, bit 15 */ + +/****************** Bit definition for GPIO_BSRR register *******************/ +#define GPIO_BSRR_BS0_Pos (0U) +#define GPIO_BSRR_BS0_Msk (0x1UL << GPIO_BSRR_BS0_Pos) /*!< 0x00000001 */ +#define GPIO_BSRR_BS0 GPIO_BSRR_BS0_Msk /*!< Port x Set bit 0 */ +#define GPIO_BSRR_BS1_Pos (1U) +#define GPIO_BSRR_BS1_Msk (0x1UL << GPIO_BSRR_BS1_Pos) /*!< 0x00000002 */ +#define GPIO_BSRR_BS1 GPIO_BSRR_BS1_Msk /*!< Port x Set bit 1 */ +#define GPIO_BSRR_BS2_Pos (2U) +#define GPIO_BSRR_BS2_Msk (0x1UL << GPIO_BSRR_BS2_Pos) /*!< 0x00000004 */ +#define GPIO_BSRR_BS2 GPIO_BSRR_BS2_Msk /*!< Port x Set bit 2 */ +#define GPIO_BSRR_BS3_Pos (3U) +#define GPIO_BSRR_BS3_Msk (0x1UL << GPIO_BSRR_BS3_Pos) /*!< 0x00000008 */ +#define GPIO_BSRR_BS3 GPIO_BSRR_BS3_Msk /*!< Port x Set bit 3 */ +#define GPIO_BSRR_BS4_Pos (4U) +#define GPIO_BSRR_BS4_Msk (0x1UL << GPIO_BSRR_BS4_Pos) /*!< 0x00000010 */ +#define GPIO_BSRR_BS4 GPIO_BSRR_BS4_Msk /*!< Port x Set bit 4 */ +#define GPIO_BSRR_BS5_Pos (5U) +#define GPIO_BSRR_BS5_Msk (0x1UL << GPIO_BSRR_BS5_Pos) /*!< 0x00000020 */ +#define GPIO_BSRR_BS5 GPIO_BSRR_BS5_Msk /*!< Port x Set bit 5 */ +#define GPIO_BSRR_BS6_Pos (6U) +#define GPIO_BSRR_BS6_Msk (0x1UL << GPIO_BSRR_BS6_Pos) /*!< 0x00000040 */ +#define GPIO_BSRR_BS6 GPIO_BSRR_BS6_Msk /*!< Port x Set bit 6 */ +#define GPIO_BSRR_BS7_Pos (7U) +#define GPIO_BSRR_BS7_Msk (0x1UL << GPIO_BSRR_BS7_Pos) /*!< 0x00000080 */ +#define GPIO_BSRR_BS7 GPIO_BSRR_BS7_Msk /*!< Port x Set bit 7 */ +#define GPIO_BSRR_BS8_Pos (8U) +#define GPIO_BSRR_BS8_Msk (0x1UL << GPIO_BSRR_BS8_Pos) /*!< 0x00000100 */ +#define GPIO_BSRR_BS8 GPIO_BSRR_BS8_Msk /*!< Port x Set bit 8 */ +#define GPIO_BSRR_BS9_Pos (9U) +#define GPIO_BSRR_BS9_Msk (0x1UL << GPIO_BSRR_BS9_Pos) /*!< 0x00000200 */ +#define GPIO_BSRR_BS9 GPIO_BSRR_BS9_Msk /*!< Port x Set bit 9 */ +#define GPIO_BSRR_BS10_Pos (10U) +#define GPIO_BSRR_BS10_Msk (0x1UL << GPIO_BSRR_BS10_Pos) /*!< 0x00000400 */ +#define GPIO_BSRR_BS10 GPIO_BSRR_BS10_Msk /*!< Port x Set bit 10 */ +#define GPIO_BSRR_BS11_Pos (11U) +#define GPIO_BSRR_BS11_Msk (0x1UL << GPIO_BSRR_BS11_Pos) /*!< 0x00000800 */ +#define GPIO_BSRR_BS11 GPIO_BSRR_BS11_Msk /*!< Port x Set bit 11 */ +#define GPIO_BSRR_BS12_Pos (12U) +#define GPIO_BSRR_BS12_Msk (0x1UL << GPIO_BSRR_BS12_Pos) /*!< 0x00001000 */ +#define GPIO_BSRR_BS12 GPIO_BSRR_BS12_Msk /*!< Port x Set bit 12 */ +#define GPIO_BSRR_BS13_Pos (13U) +#define GPIO_BSRR_BS13_Msk (0x1UL << GPIO_BSRR_BS13_Pos) /*!< 0x00002000 */ +#define GPIO_BSRR_BS13 GPIO_BSRR_BS13_Msk /*!< Port x Set bit 13 */ +#define GPIO_BSRR_BS14_Pos (14U) +#define GPIO_BSRR_BS14_Msk (0x1UL << GPIO_BSRR_BS14_Pos) /*!< 0x00004000 */ +#define GPIO_BSRR_BS14 GPIO_BSRR_BS14_Msk /*!< Port x Set bit 14 */ +#define GPIO_BSRR_BS15_Pos (15U) +#define GPIO_BSRR_BS15_Msk (0x1UL << GPIO_BSRR_BS15_Pos) /*!< 0x00008000 */ +#define GPIO_BSRR_BS15 GPIO_BSRR_BS15_Msk /*!< Port x Set bit 15 */ + +#define GPIO_BSRR_BR0_Pos (16U) +#define GPIO_BSRR_BR0_Msk (0x1UL << GPIO_BSRR_BR0_Pos) /*!< 0x00010000 */ +#define GPIO_BSRR_BR0 GPIO_BSRR_BR0_Msk /*!< Port x Reset bit 0 */ +#define GPIO_BSRR_BR1_Pos (17U) +#define GPIO_BSRR_BR1_Msk (0x1UL << GPIO_BSRR_BR1_Pos) /*!< 0x00020000 */ +#define GPIO_BSRR_BR1 GPIO_BSRR_BR1_Msk /*!< Port x Reset bit 1 */ +#define GPIO_BSRR_BR2_Pos (18U) +#define GPIO_BSRR_BR2_Msk (0x1UL << GPIO_BSRR_BR2_Pos) /*!< 0x00040000 */ +#define GPIO_BSRR_BR2 GPIO_BSRR_BR2_Msk /*!< Port x Reset bit 2 */ +#define GPIO_BSRR_BR3_Pos (19U) +#define GPIO_BSRR_BR3_Msk (0x1UL << GPIO_BSRR_BR3_Pos) /*!< 0x00080000 */ +#define GPIO_BSRR_BR3 GPIO_BSRR_BR3_Msk /*!< Port x Reset bit 3 */ +#define GPIO_BSRR_BR4_Pos (20U) +#define GPIO_BSRR_BR4_Msk (0x1UL << GPIO_BSRR_BR4_Pos) /*!< 0x00100000 */ +#define GPIO_BSRR_BR4 GPIO_BSRR_BR4_Msk /*!< Port x Reset bit 4 */ +#define GPIO_BSRR_BR5_Pos (21U) +#define GPIO_BSRR_BR5_Msk (0x1UL << GPIO_BSRR_BR5_Pos) /*!< 0x00200000 */ +#define GPIO_BSRR_BR5 GPIO_BSRR_BR5_Msk /*!< Port x Reset bit 5 */ +#define GPIO_BSRR_BR6_Pos (22U) +#define GPIO_BSRR_BR6_Msk (0x1UL << GPIO_BSRR_BR6_Pos) /*!< 0x00400000 */ +#define GPIO_BSRR_BR6 GPIO_BSRR_BR6_Msk /*!< Port x Reset bit 6 */ +#define GPIO_BSRR_BR7_Pos (23U) +#define GPIO_BSRR_BR7_Msk (0x1UL << GPIO_BSRR_BR7_Pos) /*!< 0x00800000 */ +#define GPIO_BSRR_BR7 GPIO_BSRR_BR7_Msk /*!< Port x Reset bit 7 */ +#define GPIO_BSRR_BR8_Pos (24U) +#define GPIO_BSRR_BR8_Msk (0x1UL << GPIO_BSRR_BR8_Pos) /*!< 0x01000000 */ +#define GPIO_BSRR_BR8 GPIO_BSRR_BR8_Msk /*!< Port x Reset bit 8 */ +#define GPIO_BSRR_BR9_Pos (25U) +#define GPIO_BSRR_BR9_Msk (0x1UL << GPIO_BSRR_BR9_Pos) /*!< 0x02000000 */ +#define GPIO_BSRR_BR9 GPIO_BSRR_BR9_Msk /*!< Port x Reset bit 9 */ +#define GPIO_BSRR_BR10_Pos (26U) +#define GPIO_BSRR_BR10_Msk (0x1UL << GPIO_BSRR_BR10_Pos) /*!< 0x04000000 */ +#define GPIO_BSRR_BR10 GPIO_BSRR_BR10_Msk /*!< Port x Reset bit 10 */ +#define GPIO_BSRR_BR11_Pos (27U) +#define GPIO_BSRR_BR11_Msk (0x1UL << GPIO_BSRR_BR11_Pos) /*!< 0x08000000 */ +#define GPIO_BSRR_BR11 GPIO_BSRR_BR11_Msk /*!< Port x Reset bit 11 */ +#define GPIO_BSRR_BR12_Pos (28U) +#define GPIO_BSRR_BR12_Msk (0x1UL << GPIO_BSRR_BR12_Pos) /*!< 0x10000000 */ +#define GPIO_BSRR_BR12 GPIO_BSRR_BR12_Msk /*!< Port x Reset bit 12 */ +#define GPIO_BSRR_BR13_Pos (29U) +#define GPIO_BSRR_BR13_Msk (0x1UL << GPIO_BSRR_BR13_Pos) /*!< 0x20000000 */ +#define GPIO_BSRR_BR13 GPIO_BSRR_BR13_Msk /*!< Port x Reset bit 13 */ +#define GPIO_BSRR_BR14_Pos (30U) +#define GPIO_BSRR_BR14_Msk (0x1UL << GPIO_BSRR_BR14_Pos) /*!< 0x40000000 */ +#define GPIO_BSRR_BR14 GPIO_BSRR_BR14_Msk /*!< Port x Reset bit 14 */ +#define GPIO_BSRR_BR15_Pos (31U) +#define GPIO_BSRR_BR15_Msk (0x1UL << GPIO_BSRR_BR15_Pos) /*!< 0x80000000 */ +#define GPIO_BSRR_BR15 GPIO_BSRR_BR15_Msk /*!< Port x Reset bit 15 */ + +/******************* Bit definition for GPIO_BRR register *******************/ +#define GPIO_BRR_BR0_Pos (0U) +#define GPIO_BRR_BR0_Msk (0x1UL << GPIO_BRR_BR0_Pos) /*!< 0x00000001 */ +#define GPIO_BRR_BR0 GPIO_BRR_BR0_Msk /*!< Port x Reset bit 0 */ +#define GPIO_BRR_BR1_Pos (1U) +#define GPIO_BRR_BR1_Msk (0x1UL << GPIO_BRR_BR1_Pos) /*!< 0x00000002 */ +#define GPIO_BRR_BR1 GPIO_BRR_BR1_Msk /*!< Port x Reset bit 1 */ +#define GPIO_BRR_BR2_Pos (2U) +#define GPIO_BRR_BR2_Msk (0x1UL << GPIO_BRR_BR2_Pos) /*!< 0x00000004 */ +#define GPIO_BRR_BR2 GPIO_BRR_BR2_Msk /*!< Port x Reset bit 2 */ +#define GPIO_BRR_BR3_Pos (3U) +#define GPIO_BRR_BR3_Msk (0x1UL << GPIO_BRR_BR3_Pos) /*!< 0x00000008 */ +#define GPIO_BRR_BR3 GPIO_BRR_BR3_Msk /*!< Port x Reset bit 3 */ +#define GPIO_BRR_BR4_Pos (4U) +#define GPIO_BRR_BR4_Msk (0x1UL << GPIO_BRR_BR4_Pos) /*!< 0x00000010 */ +#define GPIO_BRR_BR4 GPIO_BRR_BR4_Msk /*!< Port x Reset bit 4 */ +#define GPIO_BRR_BR5_Pos (5U) +#define GPIO_BRR_BR5_Msk (0x1UL << GPIO_BRR_BR5_Pos) /*!< 0x00000020 */ +#define GPIO_BRR_BR5 GPIO_BRR_BR5_Msk /*!< Port x Reset bit 5 */ +#define GPIO_BRR_BR6_Pos (6U) +#define GPIO_BRR_BR6_Msk (0x1UL << GPIO_BRR_BR6_Pos) /*!< 0x00000040 */ +#define GPIO_BRR_BR6 GPIO_BRR_BR6_Msk /*!< Port x Reset bit 6 */ +#define GPIO_BRR_BR7_Pos (7U) +#define GPIO_BRR_BR7_Msk (0x1UL << GPIO_BRR_BR7_Pos) /*!< 0x00000080 */ +#define GPIO_BRR_BR7 GPIO_BRR_BR7_Msk /*!< Port x Reset bit 7 */ +#define GPIO_BRR_BR8_Pos (8U) +#define GPIO_BRR_BR8_Msk (0x1UL << GPIO_BRR_BR8_Pos) /*!< 0x00000100 */ +#define GPIO_BRR_BR8 GPIO_BRR_BR8_Msk /*!< Port x Reset bit 8 */ +#define GPIO_BRR_BR9_Pos (9U) +#define GPIO_BRR_BR9_Msk (0x1UL << GPIO_BRR_BR9_Pos) /*!< 0x00000200 */ +#define GPIO_BRR_BR9 GPIO_BRR_BR9_Msk /*!< Port x Reset bit 9 */ +#define GPIO_BRR_BR10_Pos (10U) +#define GPIO_BRR_BR10_Msk (0x1UL << GPIO_BRR_BR10_Pos) /*!< 0x00000400 */ +#define GPIO_BRR_BR10 GPIO_BRR_BR10_Msk /*!< Port x Reset bit 10 */ +#define GPIO_BRR_BR11_Pos (11U) +#define GPIO_BRR_BR11_Msk (0x1UL << GPIO_BRR_BR11_Pos) /*!< 0x00000800 */ +#define GPIO_BRR_BR11 GPIO_BRR_BR11_Msk /*!< Port x Reset bit 11 */ +#define GPIO_BRR_BR12_Pos (12U) +#define GPIO_BRR_BR12_Msk (0x1UL << GPIO_BRR_BR12_Pos) /*!< 0x00001000 */ +#define GPIO_BRR_BR12 GPIO_BRR_BR12_Msk /*!< Port x Reset bit 12 */ +#define GPIO_BRR_BR13_Pos (13U) +#define GPIO_BRR_BR13_Msk (0x1UL << GPIO_BRR_BR13_Pos) /*!< 0x00002000 */ +#define GPIO_BRR_BR13 GPIO_BRR_BR13_Msk /*!< Port x Reset bit 13 */ +#define GPIO_BRR_BR14_Pos (14U) +#define GPIO_BRR_BR14_Msk (0x1UL << GPIO_BRR_BR14_Pos) /*!< 0x00004000 */ +#define GPIO_BRR_BR14 GPIO_BRR_BR14_Msk /*!< Port x Reset bit 14 */ +#define GPIO_BRR_BR15_Pos (15U) +#define GPIO_BRR_BR15_Msk (0x1UL << GPIO_BRR_BR15_Pos) /*!< 0x00008000 */ +#define GPIO_BRR_BR15 GPIO_BRR_BR15_Msk /*!< Port x Reset bit 15 */ + +/****************** Bit definition for GPIO_LCKR register *******************/ +#define GPIO_LCKR_LCK0_Pos (0U) +#define GPIO_LCKR_LCK0_Msk (0x1UL << GPIO_LCKR_LCK0_Pos) /*!< 0x00000001 */ +#define GPIO_LCKR_LCK0 GPIO_LCKR_LCK0_Msk /*!< Port x Lock bit 0 */ +#define GPIO_LCKR_LCK1_Pos (1U) +#define GPIO_LCKR_LCK1_Msk (0x1UL << GPIO_LCKR_LCK1_Pos) /*!< 0x00000002 */ +#define GPIO_LCKR_LCK1 GPIO_LCKR_LCK1_Msk /*!< Port x Lock bit 1 */ +#define GPIO_LCKR_LCK2_Pos (2U) +#define GPIO_LCKR_LCK2_Msk (0x1UL << GPIO_LCKR_LCK2_Pos) /*!< 0x00000004 */ +#define GPIO_LCKR_LCK2 GPIO_LCKR_LCK2_Msk /*!< Port x Lock bit 2 */ +#define GPIO_LCKR_LCK3_Pos (3U) +#define GPIO_LCKR_LCK3_Msk (0x1UL << GPIO_LCKR_LCK3_Pos) /*!< 0x00000008 */ +#define GPIO_LCKR_LCK3 GPIO_LCKR_LCK3_Msk /*!< Port x Lock bit 3 */ +#define GPIO_LCKR_LCK4_Pos (4U) +#define GPIO_LCKR_LCK4_Msk (0x1UL << GPIO_LCKR_LCK4_Pos) /*!< 0x00000010 */ +#define GPIO_LCKR_LCK4 GPIO_LCKR_LCK4_Msk /*!< Port x Lock bit 4 */ +#define GPIO_LCKR_LCK5_Pos (5U) +#define GPIO_LCKR_LCK5_Msk (0x1UL << GPIO_LCKR_LCK5_Pos) /*!< 0x00000020 */ +#define GPIO_LCKR_LCK5 GPIO_LCKR_LCK5_Msk /*!< Port x Lock bit 5 */ +#define GPIO_LCKR_LCK6_Pos (6U) +#define GPIO_LCKR_LCK6_Msk (0x1UL << GPIO_LCKR_LCK6_Pos) /*!< 0x00000040 */ +#define GPIO_LCKR_LCK6 GPIO_LCKR_LCK6_Msk /*!< Port x Lock bit 6 */ +#define GPIO_LCKR_LCK7_Pos (7U) +#define GPIO_LCKR_LCK7_Msk (0x1UL << GPIO_LCKR_LCK7_Pos) /*!< 0x00000080 */ +#define GPIO_LCKR_LCK7 GPIO_LCKR_LCK7_Msk /*!< Port x Lock bit 7 */ +#define GPIO_LCKR_LCK8_Pos (8U) +#define GPIO_LCKR_LCK8_Msk (0x1UL << GPIO_LCKR_LCK8_Pos) /*!< 0x00000100 */ +#define GPIO_LCKR_LCK8 GPIO_LCKR_LCK8_Msk /*!< Port x Lock bit 8 */ +#define GPIO_LCKR_LCK9_Pos (9U) +#define GPIO_LCKR_LCK9_Msk (0x1UL << GPIO_LCKR_LCK9_Pos) /*!< 0x00000200 */ +#define GPIO_LCKR_LCK9 GPIO_LCKR_LCK9_Msk /*!< Port x Lock bit 9 */ +#define GPIO_LCKR_LCK10_Pos (10U) +#define GPIO_LCKR_LCK10_Msk (0x1UL << GPIO_LCKR_LCK10_Pos) /*!< 0x00000400 */ +#define GPIO_LCKR_LCK10 GPIO_LCKR_LCK10_Msk /*!< Port x Lock bit 10 */ +#define GPIO_LCKR_LCK11_Pos (11U) +#define GPIO_LCKR_LCK11_Msk (0x1UL << GPIO_LCKR_LCK11_Pos) /*!< 0x00000800 */ +#define GPIO_LCKR_LCK11 GPIO_LCKR_LCK11_Msk /*!< Port x Lock bit 11 */ +#define GPIO_LCKR_LCK12_Pos (12U) +#define GPIO_LCKR_LCK12_Msk (0x1UL << GPIO_LCKR_LCK12_Pos) /*!< 0x00001000 */ +#define GPIO_LCKR_LCK12 GPIO_LCKR_LCK12_Msk /*!< Port x Lock bit 12 */ +#define GPIO_LCKR_LCK13_Pos (13U) +#define GPIO_LCKR_LCK13_Msk (0x1UL << GPIO_LCKR_LCK13_Pos) /*!< 0x00002000 */ +#define GPIO_LCKR_LCK13 GPIO_LCKR_LCK13_Msk /*!< Port x Lock bit 13 */ +#define GPIO_LCKR_LCK14_Pos (14U) +#define GPIO_LCKR_LCK14_Msk (0x1UL << GPIO_LCKR_LCK14_Pos) /*!< 0x00004000 */ +#define GPIO_LCKR_LCK14 GPIO_LCKR_LCK14_Msk /*!< Port x Lock bit 14 */ +#define GPIO_LCKR_LCK15_Pos (15U) +#define GPIO_LCKR_LCK15_Msk (0x1UL << GPIO_LCKR_LCK15_Pos) /*!< 0x00008000 */ +#define GPIO_LCKR_LCK15 GPIO_LCKR_LCK15_Msk /*!< Port x Lock bit 15 */ +#define GPIO_LCKR_LCKK_Pos (16U) +#define GPIO_LCKR_LCKK_Msk (0x1UL << GPIO_LCKR_LCKK_Pos) /*!< 0x00010000 */ +#define GPIO_LCKR_LCKK GPIO_LCKR_LCKK_Msk /*!< Lock key */ + +/*----------------------------------------------------------------------------*/ + +/****************** Bit definition for AFIO_EVCR register *******************/ +#define AFIO_EVCR_PIN_Pos (0U) +#define AFIO_EVCR_PIN_Msk (0xFUL << AFIO_EVCR_PIN_Pos) /*!< 0x0000000F */ +#define AFIO_EVCR_PIN AFIO_EVCR_PIN_Msk /*!< PIN[3:0] bits (Pin selection) */ +#define AFIO_EVCR_PIN_0 (0x1UL << AFIO_EVCR_PIN_Pos) /*!< 0x00000001 */ +#define AFIO_EVCR_PIN_1 (0x2UL << AFIO_EVCR_PIN_Pos) /*!< 0x00000002 */ +#define AFIO_EVCR_PIN_2 (0x4UL << AFIO_EVCR_PIN_Pos) /*!< 0x00000004 */ +#define AFIO_EVCR_PIN_3 (0x8UL << AFIO_EVCR_PIN_Pos) /*!< 0x00000008 */ + +/*!< PIN configuration */ +#define AFIO_EVCR_PIN_PX0 0x00000000U /*!< Pin 0 selected */ +#define AFIO_EVCR_PIN_PX1_Pos (0U) +#define AFIO_EVCR_PIN_PX1_Msk (0x1UL << AFIO_EVCR_PIN_PX1_Pos) /*!< 0x00000001 */ +#define AFIO_EVCR_PIN_PX1 AFIO_EVCR_PIN_PX1_Msk /*!< Pin 1 selected */ +#define AFIO_EVCR_PIN_PX2_Pos (1U) +#define AFIO_EVCR_PIN_PX2_Msk (0x1UL << AFIO_EVCR_PIN_PX2_Pos) /*!< 0x00000002 */ +#define AFIO_EVCR_PIN_PX2 AFIO_EVCR_PIN_PX2_Msk /*!< Pin 2 selected */ +#define AFIO_EVCR_PIN_PX3_Pos (0U) +#define AFIO_EVCR_PIN_PX3_Msk (0x3UL << AFIO_EVCR_PIN_PX3_Pos) /*!< 0x00000003 */ +#define AFIO_EVCR_PIN_PX3 AFIO_EVCR_PIN_PX3_Msk /*!< Pin 3 selected */ +#define AFIO_EVCR_PIN_PX4_Pos (2U) +#define AFIO_EVCR_PIN_PX4_Msk (0x1UL << AFIO_EVCR_PIN_PX4_Pos) /*!< 0x00000004 */ +#define AFIO_EVCR_PIN_PX4 AFIO_EVCR_PIN_PX4_Msk /*!< Pin 4 selected */ +#define AFIO_EVCR_PIN_PX5_Pos (0U) +#define AFIO_EVCR_PIN_PX5_Msk (0x5UL << AFIO_EVCR_PIN_PX5_Pos) /*!< 0x00000005 */ +#define AFIO_EVCR_PIN_PX5 AFIO_EVCR_PIN_PX5_Msk /*!< Pin 5 selected */ +#define AFIO_EVCR_PIN_PX6_Pos (1U) +#define AFIO_EVCR_PIN_PX6_Msk (0x3UL << AFIO_EVCR_PIN_PX6_Pos) /*!< 0x00000006 */ +#define AFIO_EVCR_PIN_PX6 AFIO_EVCR_PIN_PX6_Msk /*!< Pin 6 selected */ +#define AFIO_EVCR_PIN_PX7_Pos (0U) +#define AFIO_EVCR_PIN_PX7_Msk (0x7UL << AFIO_EVCR_PIN_PX7_Pos) /*!< 0x00000007 */ +#define AFIO_EVCR_PIN_PX7 AFIO_EVCR_PIN_PX7_Msk /*!< Pin 7 selected */ +#define AFIO_EVCR_PIN_PX8_Pos (3U) +#define AFIO_EVCR_PIN_PX8_Msk (0x1UL << AFIO_EVCR_PIN_PX8_Pos) /*!< 0x00000008 */ +#define AFIO_EVCR_PIN_PX8 AFIO_EVCR_PIN_PX8_Msk /*!< Pin 8 selected */ +#define AFIO_EVCR_PIN_PX9_Pos (0U) +#define AFIO_EVCR_PIN_PX9_Msk (0x9UL << AFIO_EVCR_PIN_PX9_Pos) /*!< 0x00000009 */ +#define AFIO_EVCR_PIN_PX9 AFIO_EVCR_PIN_PX9_Msk /*!< Pin 9 selected */ +#define AFIO_EVCR_PIN_PX10_Pos (1U) +#define AFIO_EVCR_PIN_PX10_Msk (0x5UL << AFIO_EVCR_PIN_PX10_Pos) /*!< 0x0000000A */ +#define AFIO_EVCR_PIN_PX10 AFIO_EVCR_PIN_PX10_Msk /*!< Pin 10 selected */ +#define AFIO_EVCR_PIN_PX11_Pos (0U) +#define AFIO_EVCR_PIN_PX11_Msk (0xBUL << AFIO_EVCR_PIN_PX11_Pos) /*!< 0x0000000B */ +#define AFIO_EVCR_PIN_PX11 AFIO_EVCR_PIN_PX11_Msk /*!< Pin 11 selected */ +#define AFIO_EVCR_PIN_PX12_Pos (2U) +#define AFIO_EVCR_PIN_PX12_Msk (0x3UL << AFIO_EVCR_PIN_PX12_Pos) /*!< 0x0000000C */ +#define AFIO_EVCR_PIN_PX12 AFIO_EVCR_PIN_PX12_Msk /*!< Pin 12 selected */ +#define AFIO_EVCR_PIN_PX13_Pos (0U) +#define AFIO_EVCR_PIN_PX13_Msk (0xDUL << AFIO_EVCR_PIN_PX13_Pos) /*!< 0x0000000D */ +#define AFIO_EVCR_PIN_PX13 AFIO_EVCR_PIN_PX13_Msk /*!< Pin 13 selected */ +#define AFIO_EVCR_PIN_PX14_Pos (1U) +#define AFIO_EVCR_PIN_PX14_Msk (0x7UL << AFIO_EVCR_PIN_PX14_Pos) /*!< 0x0000000E */ +#define AFIO_EVCR_PIN_PX14 AFIO_EVCR_PIN_PX14_Msk /*!< Pin 14 selected */ +#define AFIO_EVCR_PIN_PX15_Pos (0U) +#define AFIO_EVCR_PIN_PX15_Msk (0xFUL << AFIO_EVCR_PIN_PX15_Pos) /*!< 0x0000000F */ +#define AFIO_EVCR_PIN_PX15 AFIO_EVCR_PIN_PX15_Msk /*!< Pin 15 selected */ + +#define AFIO_EVCR_PORT_Pos (4U) +#define AFIO_EVCR_PORT_Msk (0x7UL << AFIO_EVCR_PORT_Pos) /*!< 0x00000070 */ +#define AFIO_EVCR_PORT AFIO_EVCR_PORT_Msk /*!< PORT[2:0] bits (Port selection) */ +#define AFIO_EVCR_PORT_0 (0x1UL << AFIO_EVCR_PORT_Pos) /*!< 0x00000010 */ +#define AFIO_EVCR_PORT_1 (0x2UL << AFIO_EVCR_PORT_Pos) /*!< 0x00000020 */ +#define AFIO_EVCR_PORT_2 (0x4UL << AFIO_EVCR_PORT_Pos) /*!< 0x00000040 */ + +/*!< PORT configuration */ +#define AFIO_EVCR_PORT_PA 0x00000000 /*!< Port A selected */ +#define AFIO_EVCR_PORT_PB_Pos (4U) +#define AFIO_EVCR_PORT_PB_Msk (0x1UL << AFIO_EVCR_PORT_PB_Pos) /*!< 0x00000010 */ +#define AFIO_EVCR_PORT_PB AFIO_EVCR_PORT_PB_Msk /*!< Port B selected */ +#define AFIO_EVCR_PORT_PC_Pos (5U) +#define AFIO_EVCR_PORT_PC_Msk (0x1UL << AFIO_EVCR_PORT_PC_Pos) /*!< 0x00000020 */ +#define AFIO_EVCR_PORT_PC AFIO_EVCR_PORT_PC_Msk /*!< Port C selected */ +#define AFIO_EVCR_PORT_PD_Pos (4U) +#define AFIO_EVCR_PORT_PD_Msk (0x3UL << AFIO_EVCR_PORT_PD_Pos) /*!< 0x00000030 */ +#define AFIO_EVCR_PORT_PD AFIO_EVCR_PORT_PD_Msk /*!< Port D selected */ +#define AFIO_EVCR_PORT_PE_Pos (6U) +#define AFIO_EVCR_PORT_PE_Msk (0x1UL << AFIO_EVCR_PORT_PE_Pos) /*!< 0x00000040 */ +#define AFIO_EVCR_PORT_PE AFIO_EVCR_PORT_PE_Msk /*!< Port E selected */ + +#define AFIO_EVCR_EVOE_Pos (7U) +#define AFIO_EVCR_EVOE_Msk (0x1UL << AFIO_EVCR_EVOE_Pos) /*!< 0x00000080 */ +#define AFIO_EVCR_EVOE AFIO_EVCR_EVOE_Msk /*!< Event Output Enable */ + +/****************** Bit definition for AFIO_MAPR register *******************/ +#define AFIO_MAPR_SPI1_REMAP_Pos (0U) +#define AFIO_MAPR_SPI1_REMAP_Msk (0x1UL << AFIO_MAPR_SPI1_REMAP_Pos) /*!< 0x00000001 */ +#define AFIO_MAPR_SPI1_REMAP AFIO_MAPR_SPI1_REMAP_Msk /*!< SPI1 remapping */ +#define AFIO_MAPR_I2C1_REMAP_Pos (1U) +#define AFIO_MAPR_I2C1_REMAP_Msk (0x1UL << AFIO_MAPR_I2C1_REMAP_Pos) /*!< 0x00000002 */ +#define AFIO_MAPR_I2C1_REMAP AFIO_MAPR_I2C1_REMAP_Msk /*!< I2C1 remapping */ +#define AFIO_MAPR_USART1_REMAP_Pos (2U) +#define AFIO_MAPR_USART1_REMAP_Msk (0x1UL << AFIO_MAPR_USART1_REMAP_Pos) /*!< 0x00000004 */ +#define AFIO_MAPR_USART1_REMAP AFIO_MAPR_USART1_REMAP_Msk /*!< USART1 remapping */ +#define AFIO_MAPR_USART2_REMAP_Pos (3U) +#define AFIO_MAPR_USART2_REMAP_Msk (0x1UL << AFIO_MAPR_USART2_REMAP_Pos) /*!< 0x00000008 */ +#define AFIO_MAPR_USART2_REMAP AFIO_MAPR_USART2_REMAP_Msk /*!< USART2 remapping */ + +#define AFIO_MAPR_USART3_REMAP_Pos (4U) +#define AFIO_MAPR_USART3_REMAP_Msk (0x3UL << AFIO_MAPR_USART3_REMAP_Pos) /*!< 0x00000030 */ +#define AFIO_MAPR_USART3_REMAP AFIO_MAPR_USART3_REMAP_Msk /*!< USART3_REMAP[1:0] bits (USART3 remapping) */ +#define AFIO_MAPR_USART3_REMAP_0 (0x1UL << AFIO_MAPR_USART3_REMAP_Pos) /*!< 0x00000010 */ +#define AFIO_MAPR_USART3_REMAP_1 (0x2UL << AFIO_MAPR_USART3_REMAP_Pos) /*!< 0x00000020 */ + +/* USART3_REMAP configuration */ +#define AFIO_MAPR_USART3_REMAP_NOREMAP 0x00000000U /*!< No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) */ +#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP_Pos (4U) +#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP_Msk (0x1UL << AFIO_MAPR_USART3_REMAP_PARTIALREMAP_Pos) /*!< 0x00000010 */ +#define AFIO_MAPR_USART3_REMAP_PARTIALREMAP AFIO_MAPR_USART3_REMAP_PARTIALREMAP_Msk /*!< Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) */ +#define AFIO_MAPR_USART3_REMAP_FULLREMAP_Pos (4U) +#define AFIO_MAPR_USART3_REMAP_FULLREMAP_Msk (0x3UL << AFIO_MAPR_USART3_REMAP_FULLREMAP_Pos) /*!< 0x00000030 */ +#define AFIO_MAPR_USART3_REMAP_FULLREMAP AFIO_MAPR_USART3_REMAP_FULLREMAP_Msk /*!< Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) */ + +#define AFIO_MAPR_TIM1_REMAP_Pos (6U) +#define AFIO_MAPR_TIM1_REMAP_Msk (0x3UL << AFIO_MAPR_TIM1_REMAP_Pos) /*!< 0x000000C0 */ +#define AFIO_MAPR_TIM1_REMAP AFIO_MAPR_TIM1_REMAP_Msk /*!< TIM1_REMAP[1:0] bits (TIM1 remapping) */ +#define AFIO_MAPR_TIM1_REMAP_0 (0x1UL << AFIO_MAPR_TIM1_REMAP_Pos) /*!< 0x00000040 */ +#define AFIO_MAPR_TIM1_REMAP_1 (0x2UL << AFIO_MAPR_TIM1_REMAP_Pos) /*!< 0x00000080 */ + +/*!< TIM1_REMAP configuration */ +#define AFIO_MAPR_TIM1_REMAP_NOREMAP 0x00000000U /*!< No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) */ +#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP_Pos (6U) +#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP_Msk (0x1UL << AFIO_MAPR_TIM1_REMAP_PARTIALREMAP_Pos) /*!< 0x00000040 */ +#define AFIO_MAPR_TIM1_REMAP_PARTIALREMAP AFIO_MAPR_TIM1_REMAP_PARTIALREMAP_Msk /*!< Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) */ +#define AFIO_MAPR_TIM1_REMAP_FULLREMAP_Pos (6U) +#define AFIO_MAPR_TIM1_REMAP_FULLREMAP_Msk (0x3UL << AFIO_MAPR_TIM1_REMAP_FULLREMAP_Pos) /*!< 0x000000C0 */ +#define AFIO_MAPR_TIM1_REMAP_FULLREMAP AFIO_MAPR_TIM1_REMAP_FULLREMAP_Msk /*!< Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) */ + +#define AFIO_MAPR_TIM2_REMAP_Pos (8U) +#define AFIO_MAPR_TIM2_REMAP_Msk (0x3UL << AFIO_MAPR_TIM2_REMAP_Pos) /*!< 0x00000300 */ +#define AFIO_MAPR_TIM2_REMAP AFIO_MAPR_TIM2_REMAP_Msk /*!< TIM2_REMAP[1:0] bits (TIM2 remapping) */ +#define AFIO_MAPR_TIM2_REMAP_0 (0x1UL << AFIO_MAPR_TIM2_REMAP_Pos) /*!< 0x00000100 */ +#define AFIO_MAPR_TIM2_REMAP_1 (0x2UL << AFIO_MAPR_TIM2_REMAP_Pos) /*!< 0x00000200 */ + +/*!< TIM2_REMAP configuration */ +#define AFIO_MAPR_TIM2_REMAP_NOREMAP 0x00000000U /*!< No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) */ +#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1_Pos (8U) +#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1_Msk (0x1UL << AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1_Pos) /*!< 0x00000100 */ +#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1_Msk /*!< Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) */ +#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2_Pos (9U) +#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2_Msk (0x1UL << AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2_Pos) /*!< 0x00000200 */ +#define AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2_Msk /*!< Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) */ +#define AFIO_MAPR_TIM2_REMAP_FULLREMAP_Pos (8U) +#define AFIO_MAPR_TIM2_REMAP_FULLREMAP_Msk (0x3UL << AFIO_MAPR_TIM2_REMAP_FULLREMAP_Pos) /*!< 0x00000300 */ +#define AFIO_MAPR_TIM2_REMAP_FULLREMAP AFIO_MAPR_TIM2_REMAP_FULLREMAP_Msk /*!< Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */ + +#define AFIO_MAPR_TIM3_REMAP_Pos (10U) +#define AFIO_MAPR_TIM3_REMAP_Msk (0x3UL << AFIO_MAPR_TIM3_REMAP_Pos) /*!< 0x00000C00 */ +#define AFIO_MAPR_TIM3_REMAP AFIO_MAPR_TIM3_REMAP_Msk /*!< TIM3_REMAP[1:0] bits (TIM3 remapping) */ +#define AFIO_MAPR_TIM3_REMAP_0 (0x1UL << AFIO_MAPR_TIM3_REMAP_Pos) /*!< 0x00000400 */ +#define AFIO_MAPR_TIM3_REMAP_1 (0x2UL << AFIO_MAPR_TIM3_REMAP_Pos) /*!< 0x00000800 */ + +/*!< TIM3_REMAP configuration */ +#define AFIO_MAPR_TIM3_REMAP_NOREMAP 0x00000000U /*!< No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) */ +#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP_Pos (11U) +#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP_Msk (0x1UL << AFIO_MAPR_TIM3_REMAP_PARTIALREMAP_Pos) /*!< 0x00000800 */ +#define AFIO_MAPR_TIM3_REMAP_PARTIALREMAP AFIO_MAPR_TIM3_REMAP_PARTIALREMAP_Msk /*!< Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) */ +#define AFIO_MAPR_TIM3_REMAP_FULLREMAP_Pos (10U) +#define AFIO_MAPR_TIM3_REMAP_FULLREMAP_Msk (0x3UL << AFIO_MAPR_TIM3_REMAP_FULLREMAP_Pos) /*!< 0x00000C00 */ +#define AFIO_MAPR_TIM3_REMAP_FULLREMAP AFIO_MAPR_TIM3_REMAP_FULLREMAP_Msk /*!< Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) */ + +#define AFIO_MAPR_TIM4_REMAP_Pos (12U) +#define AFIO_MAPR_TIM4_REMAP_Msk (0x1UL << AFIO_MAPR_TIM4_REMAP_Pos) /*!< 0x00001000 */ +#define AFIO_MAPR_TIM4_REMAP AFIO_MAPR_TIM4_REMAP_Msk /*!< TIM4_REMAP bit (TIM4 remapping) */ + +#define AFIO_MAPR_CAN_REMAP_Pos (13U) +#define AFIO_MAPR_CAN_REMAP_Msk (0x3UL << AFIO_MAPR_CAN_REMAP_Pos) /*!< 0x00006000 */ +#define AFIO_MAPR_CAN_REMAP AFIO_MAPR_CAN_REMAP_Msk /*!< CAN_REMAP[1:0] bits (CAN Alternate function remapping) */ +#define AFIO_MAPR_CAN_REMAP_0 (0x1UL << AFIO_MAPR_CAN_REMAP_Pos) /*!< 0x00002000 */ +#define AFIO_MAPR_CAN_REMAP_1 (0x2UL << AFIO_MAPR_CAN_REMAP_Pos) /*!< 0x00004000 */ + +/*!< CAN_REMAP configuration */ +#define AFIO_MAPR_CAN_REMAP_REMAP1 0x00000000U /*!< CANRX mapped to PA11, CANTX mapped to PA12 */ +#define AFIO_MAPR_CAN_REMAP_REMAP2_Pos (14U) +#define AFIO_MAPR_CAN_REMAP_REMAP2_Msk (0x1UL << AFIO_MAPR_CAN_REMAP_REMAP2_Pos) /*!< 0x00004000 */ +#define AFIO_MAPR_CAN_REMAP_REMAP2 AFIO_MAPR_CAN_REMAP_REMAP2_Msk /*!< CANRX mapped to PB8, CANTX mapped to PB9 */ +#define AFIO_MAPR_CAN_REMAP_REMAP3_Pos (13U) +#define AFIO_MAPR_CAN_REMAP_REMAP3_Msk (0x3UL << AFIO_MAPR_CAN_REMAP_REMAP3_Pos) /*!< 0x00006000 */ +#define AFIO_MAPR_CAN_REMAP_REMAP3 AFIO_MAPR_CAN_REMAP_REMAP3_Msk /*!< CANRX mapped to PD0, CANTX mapped to PD1 */ + +#define AFIO_MAPR_PD01_REMAP_Pos (15U) +#define AFIO_MAPR_PD01_REMAP_Msk (0x1UL << AFIO_MAPR_PD01_REMAP_Pos) /*!< 0x00008000 */ +#define AFIO_MAPR_PD01_REMAP AFIO_MAPR_PD01_REMAP_Msk /*!< Port D0/Port D1 mapping on OSC_IN/OSC_OUT */ + +/*!< SWJ_CFG configuration */ +#define AFIO_MAPR_SWJ_CFG_Pos (24U) +#define AFIO_MAPR_SWJ_CFG_Msk (0x7UL << AFIO_MAPR_SWJ_CFG_Pos) /*!< 0x07000000 */ +#define AFIO_MAPR_SWJ_CFG AFIO_MAPR_SWJ_CFG_Msk /*!< SWJ_CFG[2:0] bits (Serial Wire JTAG configuration) */ +#define AFIO_MAPR_SWJ_CFG_0 (0x1UL << AFIO_MAPR_SWJ_CFG_Pos) /*!< 0x01000000 */ +#define AFIO_MAPR_SWJ_CFG_1 (0x2UL << AFIO_MAPR_SWJ_CFG_Pos) /*!< 0x02000000 */ +#define AFIO_MAPR_SWJ_CFG_2 (0x4UL << AFIO_MAPR_SWJ_CFG_Pos) /*!< 0x04000000 */ + +#define AFIO_MAPR_SWJ_CFG_RESET 0x00000000U /*!< Full SWJ (JTAG-DP + SW-DP) : Reset State */ +#define AFIO_MAPR_SWJ_CFG_NOJNTRST_Pos (24U) +#define AFIO_MAPR_SWJ_CFG_NOJNTRST_Msk (0x1UL << AFIO_MAPR_SWJ_CFG_NOJNTRST_Pos) /*!< 0x01000000 */ +#define AFIO_MAPR_SWJ_CFG_NOJNTRST AFIO_MAPR_SWJ_CFG_NOJNTRST_Msk /*!< Full SWJ (JTAG-DP + SW-DP) but without JNTRST */ +#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE_Pos (25U) +#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE_Msk (0x1UL << AFIO_MAPR_SWJ_CFG_JTAGDISABLE_Pos) /*!< 0x02000000 */ +#define AFIO_MAPR_SWJ_CFG_JTAGDISABLE AFIO_MAPR_SWJ_CFG_JTAGDISABLE_Msk /*!< JTAG-DP Disabled and SW-DP Enabled */ +#define AFIO_MAPR_SWJ_CFG_DISABLE_Pos (26U) +#define AFIO_MAPR_SWJ_CFG_DISABLE_Msk (0x1UL << AFIO_MAPR_SWJ_CFG_DISABLE_Pos) /*!< 0x04000000 */ +#define AFIO_MAPR_SWJ_CFG_DISABLE AFIO_MAPR_SWJ_CFG_DISABLE_Msk /*!< JTAG-DP Disabled and SW-DP Disabled */ + + +/***************** Bit definition for AFIO_EXTICR1 register *****************/ +#define AFIO_EXTICR1_EXTI0_Pos (0U) +#define AFIO_EXTICR1_EXTI0_Msk (0xFUL << AFIO_EXTICR1_EXTI0_Pos) /*!< 0x0000000F */ +#define AFIO_EXTICR1_EXTI0 AFIO_EXTICR1_EXTI0_Msk /*!< EXTI 0 configuration */ +#define AFIO_EXTICR1_EXTI1_Pos (4U) +#define AFIO_EXTICR1_EXTI1_Msk (0xFUL << AFIO_EXTICR1_EXTI1_Pos) /*!< 0x000000F0 */ +#define AFIO_EXTICR1_EXTI1 AFIO_EXTICR1_EXTI1_Msk /*!< EXTI 1 configuration */ +#define AFIO_EXTICR1_EXTI2_Pos (8U) +#define AFIO_EXTICR1_EXTI2_Msk (0xFUL << AFIO_EXTICR1_EXTI2_Pos) /*!< 0x00000F00 */ +#define AFIO_EXTICR1_EXTI2 AFIO_EXTICR1_EXTI2_Msk /*!< EXTI 2 configuration */ +#define AFIO_EXTICR1_EXTI3_Pos (12U) +#define AFIO_EXTICR1_EXTI3_Msk (0xFUL << AFIO_EXTICR1_EXTI3_Pos) /*!< 0x0000F000 */ +#define AFIO_EXTICR1_EXTI3 AFIO_EXTICR1_EXTI3_Msk /*!< EXTI 3 configuration */ + +/*!< EXTI0 configuration */ +#define AFIO_EXTICR1_EXTI0_PA 0x00000000U /*!< PA[0] pin */ +#define AFIO_EXTICR1_EXTI0_PB_Pos (0U) +#define AFIO_EXTICR1_EXTI0_PB_Msk (0x1UL << AFIO_EXTICR1_EXTI0_PB_Pos) /*!< 0x00000001 */ +#define AFIO_EXTICR1_EXTI0_PB AFIO_EXTICR1_EXTI0_PB_Msk /*!< PB[0] pin */ +#define AFIO_EXTICR1_EXTI0_PC_Pos (1U) +#define AFIO_EXTICR1_EXTI0_PC_Msk (0x1UL << AFIO_EXTICR1_EXTI0_PC_Pos) /*!< 0x00000002 */ +#define AFIO_EXTICR1_EXTI0_PC AFIO_EXTICR1_EXTI0_PC_Msk /*!< PC[0] pin */ +#define AFIO_EXTICR1_EXTI0_PD_Pos (0U) +#define AFIO_EXTICR1_EXTI0_PD_Msk (0x3UL << AFIO_EXTICR1_EXTI0_PD_Pos) /*!< 0x00000003 */ +#define AFIO_EXTICR1_EXTI0_PD AFIO_EXTICR1_EXTI0_PD_Msk /*!< PD[0] pin */ +#define AFIO_EXTICR1_EXTI0_PE_Pos (2U) +#define AFIO_EXTICR1_EXTI0_PE_Msk (0x1UL << AFIO_EXTICR1_EXTI0_PE_Pos) /*!< 0x00000004 */ +#define AFIO_EXTICR1_EXTI0_PE AFIO_EXTICR1_EXTI0_PE_Msk /*!< PE[0] pin */ +#define AFIO_EXTICR1_EXTI0_PF_Pos (0U) +#define AFIO_EXTICR1_EXTI0_PF_Msk (0x5UL << AFIO_EXTICR1_EXTI0_PF_Pos) /*!< 0x00000005 */ +#define AFIO_EXTICR1_EXTI0_PF AFIO_EXTICR1_EXTI0_PF_Msk /*!< PF[0] pin */ +#define AFIO_EXTICR1_EXTI0_PG_Pos (1U) +#define AFIO_EXTICR1_EXTI0_PG_Msk (0x3UL << AFIO_EXTICR1_EXTI0_PG_Pos) /*!< 0x00000006 */ +#define AFIO_EXTICR1_EXTI0_PG AFIO_EXTICR1_EXTI0_PG_Msk /*!< PG[0] pin */ + +/*!< EXTI1 configuration */ +#define AFIO_EXTICR1_EXTI1_PA 0x00000000U /*!< PA[1] pin */ +#define AFIO_EXTICR1_EXTI1_PB_Pos (4U) +#define AFIO_EXTICR1_EXTI1_PB_Msk (0x1UL << AFIO_EXTICR1_EXTI1_PB_Pos) /*!< 0x00000010 */ +#define AFIO_EXTICR1_EXTI1_PB AFIO_EXTICR1_EXTI1_PB_Msk /*!< PB[1] pin */ +#define AFIO_EXTICR1_EXTI1_PC_Pos (5U) +#define AFIO_EXTICR1_EXTI1_PC_Msk (0x1UL << AFIO_EXTICR1_EXTI1_PC_Pos) /*!< 0x00000020 */ +#define AFIO_EXTICR1_EXTI1_PC AFIO_EXTICR1_EXTI1_PC_Msk /*!< PC[1] pin */ +#define AFIO_EXTICR1_EXTI1_PD_Pos (4U) +#define AFIO_EXTICR1_EXTI1_PD_Msk (0x3UL << AFIO_EXTICR1_EXTI1_PD_Pos) /*!< 0x00000030 */ +#define AFIO_EXTICR1_EXTI1_PD AFIO_EXTICR1_EXTI1_PD_Msk /*!< PD[1] pin */ +#define AFIO_EXTICR1_EXTI1_PE_Pos (6U) +#define AFIO_EXTICR1_EXTI1_PE_Msk (0x1UL << AFIO_EXTICR1_EXTI1_PE_Pos) /*!< 0x00000040 */ +#define AFIO_EXTICR1_EXTI1_PE AFIO_EXTICR1_EXTI1_PE_Msk /*!< PE[1] pin */ +#define AFIO_EXTICR1_EXTI1_PF_Pos (4U) +#define AFIO_EXTICR1_EXTI1_PF_Msk (0x5UL << AFIO_EXTICR1_EXTI1_PF_Pos) /*!< 0x00000050 */ +#define AFIO_EXTICR1_EXTI1_PF AFIO_EXTICR1_EXTI1_PF_Msk /*!< PF[1] pin */ +#define AFIO_EXTICR1_EXTI1_PG_Pos (5U) +#define AFIO_EXTICR1_EXTI1_PG_Msk (0x3UL << AFIO_EXTICR1_EXTI1_PG_Pos) /*!< 0x00000060 */ +#define AFIO_EXTICR1_EXTI1_PG AFIO_EXTICR1_EXTI1_PG_Msk /*!< PG[1] pin */ + +/*!< EXTI2 configuration */ +#define AFIO_EXTICR1_EXTI2_PA 0x00000000U /*!< PA[2] pin */ +#define AFIO_EXTICR1_EXTI2_PB_Pos (8U) +#define AFIO_EXTICR1_EXTI2_PB_Msk (0x1UL << AFIO_EXTICR1_EXTI2_PB_Pos) /*!< 0x00000100 */ +#define AFIO_EXTICR1_EXTI2_PB AFIO_EXTICR1_EXTI2_PB_Msk /*!< PB[2] pin */ +#define AFIO_EXTICR1_EXTI2_PC_Pos (9U) +#define AFIO_EXTICR1_EXTI2_PC_Msk (0x1UL << AFIO_EXTICR1_EXTI2_PC_Pos) /*!< 0x00000200 */ +#define AFIO_EXTICR1_EXTI2_PC AFIO_EXTICR1_EXTI2_PC_Msk /*!< PC[2] pin */ +#define AFIO_EXTICR1_EXTI2_PD_Pos (8U) +#define AFIO_EXTICR1_EXTI2_PD_Msk (0x3UL << AFIO_EXTICR1_EXTI2_PD_Pos) /*!< 0x00000300 */ +#define AFIO_EXTICR1_EXTI2_PD AFIO_EXTICR1_EXTI2_PD_Msk /*!< PD[2] pin */ +#define AFIO_EXTICR1_EXTI2_PE_Pos (10U) +#define AFIO_EXTICR1_EXTI2_PE_Msk (0x1UL << AFIO_EXTICR1_EXTI2_PE_Pos) /*!< 0x00000400 */ +#define AFIO_EXTICR1_EXTI2_PE AFIO_EXTICR1_EXTI2_PE_Msk /*!< PE[2] pin */ +#define AFIO_EXTICR1_EXTI2_PF_Pos (8U) +#define AFIO_EXTICR1_EXTI2_PF_Msk (0x5UL << AFIO_EXTICR1_EXTI2_PF_Pos) /*!< 0x00000500 */ +#define AFIO_EXTICR1_EXTI2_PF AFIO_EXTICR1_EXTI2_PF_Msk /*!< PF[2] pin */ +#define AFIO_EXTICR1_EXTI2_PG_Pos (9U) +#define AFIO_EXTICR1_EXTI2_PG_Msk (0x3UL << AFIO_EXTICR1_EXTI2_PG_Pos) /*!< 0x00000600 */ +#define AFIO_EXTICR1_EXTI2_PG AFIO_EXTICR1_EXTI2_PG_Msk /*!< PG[2] pin */ + +/*!< EXTI3 configuration */ +#define AFIO_EXTICR1_EXTI3_PA 0x00000000U /*!< PA[3] pin */ +#define AFIO_EXTICR1_EXTI3_PB_Pos (12U) +#define AFIO_EXTICR1_EXTI3_PB_Msk (0x1UL << AFIO_EXTICR1_EXTI3_PB_Pos) /*!< 0x00001000 */ +#define AFIO_EXTICR1_EXTI3_PB AFIO_EXTICR1_EXTI3_PB_Msk /*!< PB[3] pin */ +#define AFIO_EXTICR1_EXTI3_PC_Pos (13U) +#define AFIO_EXTICR1_EXTI3_PC_Msk (0x1UL << AFIO_EXTICR1_EXTI3_PC_Pos) /*!< 0x00002000 */ +#define AFIO_EXTICR1_EXTI3_PC AFIO_EXTICR1_EXTI3_PC_Msk /*!< PC[3] pin */ +#define AFIO_EXTICR1_EXTI3_PD_Pos (12U) +#define AFIO_EXTICR1_EXTI3_PD_Msk (0x3UL << AFIO_EXTICR1_EXTI3_PD_Pos) /*!< 0x00003000 */ +#define AFIO_EXTICR1_EXTI3_PD AFIO_EXTICR1_EXTI3_PD_Msk /*!< PD[3] pin */ +#define AFIO_EXTICR1_EXTI3_PE_Pos (14U) +#define AFIO_EXTICR1_EXTI3_PE_Msk (0x1UL << AFIO_EXTICR1_EXTI3_PE_Pos) /*!< 0x00004000 */ +#define AFIO_EXTICR1_EXTI3_PE AFIO_EXTICR1_EXTI3_PE_Msk /*!< PE[3] pin */ +#define AFIO_EXTICR1_EXTI3_PF_Pos (12U) +#define AFIO_EXTICR1_EXTI3_PF_Msk (0x5UL << AFIO_EXTICR1_EXTI3_PF_Pos) /*!< 0x00005000 */ +#define AFIO_EXTICR1_EXTI3_PF AFIO_EXTICR1_EXTI3_PF_Msk /*!< PF[3] pin */ +#define AFIO_EXTICR1_EXTI3_PG_Pos (13U) +#define AFIO_EXTICR1_EXTI3_PG_Msk (0x3UL << AFIO_EXTICR1_EXTI3_PG_Pos) /*!< 0x00006000 */ +#define AFIO_EXTICR1_EXTI3_PG AFIO_EXTICR1_EXTI3_PG_Msk /*!< PG[3] pin */ + +/***************** Bit definition for AFIO_EXTICR2 register *****************/ +#define AFIO_EXTICR2_EXTI4_Pos (0U) +#define AFIO_EXTICR2_EXTI4_Msk (0xFUL << AFIO_EXTICR2_EXTI4_Pos) /*!< 0x0000000F */ +#define AFIO_EXTICR2_EXTI4 AFIO_EXTICR2_EXTI4_Msk /*!< EXTI 4 configuration */ +#define AFIO_EXTICR2_EXTI5_Pos (4U) +#define AFIO_EXTICR2_EXTI5_Msk (0xFUL << AFIO_EXTICR2_EXTI5_Pos) /*!< 0x000000F0 */ +#define AFIO_EXTICR2_EXTI5 AFIO_EXTICR2_EXTI5_Msk /*!< EXTI 5 configuration */ +#define AFIO_EXTICR2_EXTI6_Pos (8U) +#define AFIO_EXTICR2_EXTI6_Msk (0xFUL << AFIO_EXTICR2_EXTI6_Pos) /*!< 0x00000F00 */ +#define AFIO_EXTICR2_EXTI6 AFIO_EXTICR2_EXTI6_Msk /*!< EXTI 6 configuration */ +#define AFIO_EXTICR2_EXTI7_Pos (12U) +#define AFIO_EXTICR2_EXTI7_Msk (0xFUL << AFIO_EXTICR2_EXTI7_Pos) /*!< 0x0000F000 */ +#define AFIO_EXTICR2_EXTI7 AFIO_EXTICR2_EXTI7_Msk /*!< EXTI 7 configuration */ + +/*!< EXTI4 configuration */ +#define AFIO_EXTICR2_EXTI4_PA 0x00000000U /*!< PA[4] pin */ +#define AFIO_EXTICR2_EXTI4_PB_Pos (0U) +#define AFIO_EXTICR2_EXTI4_PB_Msk (0x1UL << AFIO_EXTICR2_EXTI4_PB_Pos) /*!< 0x00000001 */ +#define AFIO_EXTICR2_EXTI4_PB AFIO_EXTICR2_EXTI4_PB_Msk /*!< PB[4] pin */ +#define AFIO_EXTICR2_EXTI4_PC_Pos (1U) +#define AFIO_EXTICR2_EXTI4_PC_Msk (0x1UL << AFIO_EXTICR2_EXTI4_PC_Pos) /*!< 0x00000002 */ +#define AFIO_EXTICR2_EXTI4_PC AFIO_EXTICR2_EXTI4_PC_Msk /*!< PC[4] pin */ +#define AFIO_EXTICR2_EXTI4_PD_Pos (0U) +#define AFIO_EXTICR2_EXTI4_PD_Msk (0x3UL << AFIO_EXTICR2_EXTI4_PD_Pos) /*!< 0x00000003 */ +#define AFIO_EXTICR2_EXTI4_PD AFIO_EXTICR2_EXTI4_PD_Msk /*!< PD[4] pin */ +#define AFIO_EXTICR2_EXTI4_PE_Pos (2U) +#define AFIO_EXTICR2_EXTI4_PE_Msk (0x1UL << AFIO_EXTICR2_EXTI4_PE_Pos) /*!< 0x00000004 */ +#define AFIO_EXTICR2_EXTI4_PE AFIO_EXTICR2_EXTI4_PE_Msk /*!< PE[4] pin */ +#define AFIO_EXTICR2_EXTI4_PF_Pos (0U) +#define AFIO_EXTICR2_EXTI4_PF_Msk (0x5UL << AFIO_EXTICR2_EXTI4_PF_Pos) /*!< 0x00000005 */ +#define AFIO_EXTICR2_EXTI4_PF AFIO_EXTICR2_EXTI4_PF_Msk /*!< PF[4] pin */ +#define AFIO_EXTICR2_EXTI4_PG_Pos (1U) +#define AFIO_EXTICR2_EXTI4_PG_Msk (0x3UL << AFIO_EXTICR2_EXTI4_PG_Pos) /*!< 0x00000006 */ +#define AFIO_EXTICR2_EXTI4_PG AFIO_EXTICR2_EXTI4_PG_Msk /*!< PG[4] pin */ + +/* EXTI5 configuration */ +#define AFIO_EXTICR2_EXTI5_PA 0x00000000U /*!< PA[5] pin */ +#define AFIO_EXTICR2_EXTI5_PB_Pos (4U) +#define AFIO_EXTICR2_EXTI5_PB_Msk (0x1UL << AFIO_EXTICR2_EXTI5_PB_Pos) /*!< 0x00000010 */ +#define AFIO_EXTICR2_EXTI5_PB AFIO_EXTICR2_EXTI5_PB_Msk /*!< PB[5] pin */ +#define AFIO_EXTICR2_EXTI5_PC_Pos (5U) +#define AFIO_EXTICR2_EXTI5_PC_Msk (0x1UL << AFIO_EXTICR2_EXTI5_PC_Pos) /*!< 0x00000020 */ +#define AFIO_EXTICR2_EXTI5_PC AFIO_EXTICR2_EXTI5_PC_Msk /*!< PC[5] pin */ +#define AFIO_EXTICR2_EXTI5_PD_Pos (4U) +#define AFIO_EXTICR2_EXTI5_PD_Msk (0x3UL << AFIO_EXTICR2_EXTI5_PD_Pos) /*!< 0x00000030 */ +#define AFIO_EXTICR2_EXTI5_PD AFIO_EXTICR2_EXTI5_PD_Msk /*!< PD[5] pin */ +#define AFIO_EXTICR2_EXTI5_PE_Pos (6U) +#define AFIO_EXTICR2_EXTI5_PE_Msk (0x1UL << AFIO_EXTICR2_EXTI5_PE_Pos) /*!< 0x00000040 */ +#define AFIO_EXTICR2_EXTI5_PE AFIO_EXTICR2_EXTI5_PE_Msk /*!< PE[5] pin */ +#define AFIO_EXTICR2_EXTI5_PF_Pos (4U) +#define AFIO_EXTICR2_EXTI5_PF_Msk (0x5UL << AFIO_EXTICR2_EXTI5_PF_Pos) /*!< 0x00000050 */ +#define AFIO_EXTICR2_EXTI5_PF AFIO_EXTICR2_EXTI5_PF_Msk /*!< PF[5] pin */ +#define AFIO_EXTICR2_EXTI5_PG_Pos (5U) +#define AFIO_EXTICR2_EXTI5_PG_Msk (0x3UL << AFIO_EXTICR2_EXTI5_PG_Pos) /*!< 0x00000060 */ +#define AFIO_EXTICR2_EXTI5_PG AFIO_EXTICR2_EXTI5_PG_Msk /*!< PG[5] pin */ + +/*!< EXTI6 configuration */ +#define AFIO_EXTICR2_EXTI6_PA 0x00000000U /*!< PA[6] pin */ +#define AFIO_EXTICR2_EXTI6_PB_Pos (8U) +#define AFIO_EXTICR2_EXTI6_PB_Msk (0x1UL << AFIO_EXTICR2_EXTI6_PB_Pos) /*!< 0x00000100 */ +#define AFIO_EXTICR2_EXTI6_PB AFIO_EXTICR2_EXTI6_PB_Msk /*!< PB[6] pin */ +#define AFIO_EXTICR2_EXTI6_PC_Pos (9U) +#define AFIO_EXTICR2_EXTI6_PC_Msk (0x1UL << AFIO_EXTICR2_EXTI6_PC_Pos) /*!< 0x00000200 */ +#define AFIO_EXTICR2_EXTI6_PC AFIO_EXTICR2_EXTI6_PC_Msk /*!< PC[6] pin */ +#define AFIO_EXTICR2_EXTI6_PD_Pos (8U) +#define AFIO_EXTICR2_EXTI6_PD_Msk (0x3UL << AFIO_EXTICR2_EXTI6_PD_Pos) /*!< 0x00000300 */ +#define AFIO_EXTICR2_EXTI6_PD AFIO_EXTICR2_EXTI6_PD_Msk /*!< PD[6] pin */ +#define AFIO_EXTICR2_EXTI6_PE_Pos (10U) +#define AFIO_EXTICR2_EXTI6_PE_Msk (0x1UL << AFIO_EXTICR2_EXTI6_PE_Pos) /*!< 0x00000400 */ +#define AFIO_EXTICR2_EXTI6_PE AFIO_EXTICR2_EXTI6_PE_Msk /*!< PE[6] pin */ +#define AFIO_EXTICR2_EXTI6_PF_Pos (8U) +#define AFIO_EXTICR2_EXTI6_PF_Msk (0x5UL << AFIO_EXTICR2_EXTI6_PF_Pos) /*!< 0x00000500 */ +#define AFIO_EXTICR2_EXTI6_PF AFIO_EXTICR2_EXTI6_PF_Msk /*!< PF[6] pin */ +#define AFIO_EXTICR2_EXTI6_PG_Pos (9U) +#define AFIO_EXTICR2_EXTI6_PG_Msk (0x3UL << AFIO_EXTICR2_EXTI6_PG_Pos) /*!< 0x00000600 */ +#define AFIO_EXTICR2_EXTI6_PG AFIO_EXTICR2_EXTI6_PG_Msk /*!< PG[6] pin */ + +/*!< EXTI7 configuration */ +#define AFIO_EXTICR2_EXTI7_PA 0x00000000U /*!< PA[7] pin */ +#define AFIO_EXTICR2_EXTI7_PB_Pos (12U) +#define AFIO_EXTICR2_EXTI7_PB_Msk (0x1UL << AFIO_EXTICR2_EXTI7_PB_Pos) /*!< 0x00001000 */ +#define AFIO_EXTICR2_EXTI7_PB AFIO_EXTICR2_EXTI7_PB_Msk /*!< PB[7] pin */ +#define AFIO_EXTICR2_EXTI7_PC_Pos (13U) +#define AFIO_EXTICR2_EXTI7_PC_Msk (0x1UL << AFIO_EXTICR2_EXTI7_PC_Pos) /*!< 0x00002000 */ +#define AFIO_EXTICR2_EXTI7_PC AFIO_EXTICR2_EXTI7_PC_Msk /*!< PC[7] pin */ +#define AFIO_EXTICR2_EXTI7_PD_Pos (12U) +#define AFIO_EXTICR2_EXTI7_PD_Msk (0x3UL << AFIO_EXTICR2_EXTI7_PD_Pos) /*!< 0x00003000 */ +#define AFIO_EXTICR2_EXTI7_PD AFIO_EXTICR2_EXTI7_PD_Msk /*!< PD[7] pin */ +#define AFIO_EXTICR2_EXTI7_PE_Pos (14U) +#define AFIO_EXTICR2_EXTI7_PE_Msk (0x1UL << AFIO_EXTICR2_EXTI7_PE_Pos) /*!< 0x00004000 */ +#define AFIO_EXTICR2_EXTI7_PE AFIO_EXTICR2_EXTI7_PE_Msk /*!< PE[7] pin */ +#define AFIO_EXTICR2_EXTI7_PF_Pos (12U) +#define AFIO_EXTICR2_EXTI7_PF_Msk (0x5UL << AFIO_EXTICR2_EXTI7_PF_Pos) /*!< 0x00005000 */ +#define AFIO_EXTICR2_EXTI7_PF AFIO_EXTICR2_EXTI7_PF_Msk /*!< PF[7] pin */ +#define AFIO_EXTICR2_EXTI7_PG_Pos (13U) +#define AFIO_EXTICR2_EXTI7_PG_Msk (0x3UL << AFIO_EXTICR2_EXTI7_PG_Pos) /*!< 0x00006000 */ +#define AFIO_EXTICR2_EXTI7_PG AFIO_EXTICR2_EXTI7_PG_Msk /*!< PG[7] pin */ + +/***************** Bit definition for AFIO_EXTICR3 register *****************/ +#define AFIO_EXTICR3_EXTI8_Pos (0U) +#define AFIO_EXTICR3_EXTI8_Msk (0xFUL << AFIO_EXTICR3_EXTI8_Pos) /*!< 0x0000000F */ +#define AFIO_EXTICR3_EXTI8 AFIO_EXTICR3_EXTI8_Msk /*!< EXTI 8 configuration */ +#define AFIO_EXTICR3_EXTI9_Pos (4U) +#define AFIO_EXTICR3_EXTI9_Msk (0xFUL << AFIO_EXTICR3_EXTI9_Pos) /*!< 0x000000F0 */ +#define AFIO_EXTICR3_EXTI9 AFIO_EXTICR3_EXTI9_Msk /*!< EXTI 9 configuration */ +#define AFIO_EXTICR3_EXTI10_Pos (8U) +#define AFIO_EXTICR3_EXTI10_Msk (0xFUL << AFIO_EXTICR3_EXTI10_Pos) /*!< 0x00000F00 */ +#define AFIO_EXTICR3_EXTI10 AFIO_EXTICR3_EXTI10_Msk /*!< EXTI 10 configuration */ +#define AFIO_EXTICR3_EXTI11_Pos (12U) +#define AFIO_EXTICR3_EXTI11_Msk (0xFUL << AFIO_EXTICR3_EXTI11_Pos) /*!< 0x0000F000 */ +#define AFIO_EXTICR3_EXTI11 AFIO_EXTICR3_EXTI11_Msk /*!< EXTI 11 configuration */ + +/*!< EXTI8 configuration */ +#define AFIO_EXTICR3_EXTI8_PA 0x00000000U /*!< PA[8] pin */ +#define AFIO_EXTICR3_EXTI8_PB_Pos (0U) +#define AFIO_EXTICR3_EXTI8_PB_Msk (0x1UL << AFIO_EXTICR3_EXTI8_PB_Pos) /*!< 0x00000001 */ +#define AFIO_EXTICR3_EXTI8_PB AFIO_EXTICR3_EXTI8_PB_Msk /*!< PB[8] pin */ +#define AFIO_EXTICR3_EXTI8_PC_Pos (1U) +#define AFIO_EXTICR3_EXTI8_PC_Msk (0x1UL << AFIO_EXTICR3_EXTI8_PC_Pos) /*!< 0x00000002 */ +#define AFIO_EXTICR3_EXTI8_PC AFIO_EXTICR3_EXTI8_PC_Msk /*!< PC[8] pin */ +#define AFIO_EXTICR3_EXTI8_PD_Pos (0U) +#define AFIO_EXTICR3_EXTI8_PD_Msk (0x3UL << AFIO_EXTICR3_EXTI8_PD_Pos) /*!< 0x00000003 */ +#define AFIO_EXTICR3_EXTI8_PD AFIO_EXTICR3_EXTI8_PD_Msk /*!< PD[8] pin */ +#define AFIO_EXTICR3_EXTI8_PE_Pos (2U) +#define AFIO_EXTICR3_EXTI8_PE_Msk (0x1UL << AFIO_EXTICR3_EXTI8_PE_Pos) /*!< 0x00000004 */ +#define AFIO_EXTICR3_EXTI8_PE AFIO_EXTICR3_EXTI8_PE_Msk /*!< PE[8] pin */ +#define AFIO_EXTICR3_EXTI8_PF_Pos (0U) +#define AFIO_EXTICR3_EXTI8_PF_Msk (0x5UL << AFIO_EXTICR3_EXTI8_PF_Pos) /*!< 0x00000005 */ +#define AFIO_EXTICR3_EXTI8_PF AFIO_EXTICR3_EXTI8_PF_Msk /*!< PF[8] pin */ +#define AFIO_EXTICR3_EXTI8_PG_Pos (1U) +#define AFIO_EXTICR3_EXTI8_PG_Msk (0x3UL << AFIO_EXTICR3_EXTI8_PG_Pos) /*!< 0x00000006 */ +#define AFIO_EXTICR3_EXTI8_PG AFIO_EXTICR3_EXTI8_PG_Msk /*!< PG[8] pin */ + +/*!< EXTI9 configuration */ +#define AFIO_EXTICR3_EXTI9_PA 0x00000000U /*!< PA[9] pin */ +#define AFIO_EXTICR3_EXTI9_PB_Pos (4U) +#define AFIO_EXTICR3_EXTI9_PB_Msk (0x1UL << AFIO_EXTICR3_EXTI9_PB_Pos) /*!< 0x00000010 */ +#define AFIO_EXTICR3_EXTI9_PB AFIO_EXTICR3_EXTI9_PB_Msk /*!< PB[9] pin */ +#define AFIO_EXTICR3_EXTI9_PC_Pos (5U) +#define AFIO_EXTICR3_EXTI9_PC_Msk (0x1UL << AFIO_EXTICR3_EXTI9_PC_Pos) /*!< 0x00000020 */ +#define AFIO_EXTICR3_EXTI9_PC AFIO_EXTICR3_EXTI9_PC_Msk /*!< PC[9] pin */ +#define AFIO_EXTICR3_EXTI9_PD_Pos (4U) +#define AFIO_EXTICR3_EXTI9_PD_Msk (0x3UL << AFIO_EXTICR3_EXTI9_PD_Pos) /*!< 0x00000030 */ +#define AFIO_EXTICR3_EXTI9_PD AFIO_EXTICR3_EXTI9_PD_Msk /*!< PD[9] pin */ +#define AFIO_EXTICR3_EXTI9_PE_Pos (6U) +#define AFIO_EXTICR3_EXTI9_PE_Msk (0x1UL << AFIO_EXTICR3_EXTI9_PE_Pos) /*!< 0x00000040 */ +#define AFIO_EXTICR3_EXTI9_PE AFIO_EXTICR3_EXTI9_PE_Msk /*!< PE[9] pin */ +#define AFIO_EXTICR3_EXTI9_PF_Pos (4U) +#define AFIO_EXTICR3_EXTI9_PF_Msk (0x5UL << AFIO_EXTICR3_EXTI9_PF_Pos) /*!< 0x00000050 */ +#define AFIO_EXTICR3_EXTI9_PF AFIO_EXTICR3_EXTI9_PF_Msk /*!< PF[9] pin */ +#define AFIO_EXTICR3_EXTI9_PG_Pos (5U) +#define AFIO_EXTICR3_EXTI9_PG_Msk (0x3UL << AFIO_EXTICR3_EXTI9_PG_Pos) /*!< 0x00000060 */ +#define AFIO_EXTICR3_EXTI9_PG AFIO_EXTICR3_EXTI9_PG_Msk /*!< PG[9] pin */ + +/*!< EXTI10 configuration */ +#define AFIO_EXTICR3_EXTI10_PA 0x00000000U /*!< PA[10] pin */ +#define AFIO_EXTICR3_EXTI10_PB_Pos (8U) +#define AFIO_EXTICR3_EXTI10_PB_Msk (0x1UL << AFIO_EXTICR3_EXTI10_PB_Pos) /*!< 0x00000100 */ +#define AFIO_EXTICR3_EXTI10_PB AFIO_EXTICR3_EXTI10_PB_Msk /*!< PB[10] pin */ +#define AFIO_EXTICR3_EXTI10_PC_Pos (9U) +#define AFIO_EXTICR3_EXTI10_PC_Msk (0x1UL << AFIO_EXTICR3_EXTI10_PC_Pos) /*!< 0x00000200 */ +#define AFIO_EXTICR3_EXTI10_PC AFIO_EXTICR3_EXTI10_PC_Msk /*!< PC[10] pin */ +#define AFIO_EXTICR3_EXTI10_PD_Pos (8U) +#define AFIO_EXTICR3_EXTI10_PD_Msk (0x3UL << AFIO_EXTICR3_EXTI10_PD_Pos) /*!< 0x00000300 */ +#define AFIO_EXTICR3_EXTI10_PD AFIO_EXTICR3_EXTI10_PD_Msk /*!< PD[10] pin */ +#define AFIO_EXTICR3_EXTI10_PE_Pos (10U) +#define AFIO_EXTICR3_EXTI10_PE_Msk (0x1UL << AFIO_EXTICR3_EXTI10_PE_Pos) /*!< 0x00000400 */ +#define AFIO_EXTICR3_EXTI10_PE AFIO_EXTICR3_EXTI10_PE_Msk /*!< PE[10] pin */ +#define AFIO_EXTICR3_EXTI10_PF_Pos (8U) +#define AFIO_EXTICR3_EXTI10_PF_Msk (0x5UL << AFIO_EXTICR3_EXTI10_PF_Pos) /*!< 0x00000500 */ +#define AFIO_EXTICR3_EXTI10_PF AFIO_EXTICR3_EXTI10_PF_Msk /*!< PF[10] pin */ +#define AFIO_EXTICR3_EXTI10_PG_Pos (9U) +#define AFIO_EXTICR3_EXTI10_PG_Msk (0x3UL << AFIO_EXTICR3_EXTI10_PG_Pos) /*!< 0x00000600 */ +#define AFIO_EXTICR3_EXTI10_PG AFIO_EXTICR3_EXTI10_PG_Msk /*!< PG[10] pin */ + +/*!< EXTI11 configuration */ +#define AFIO_EXTICR3_EXTI11_PA 0x00000000U /*!< PA[11] pin */ +#define AFIO_EXTICR3_EXTI11_PB_Pos (12U) +#define AFIO_EXTICR3_EXTI11_PB_Msk (0x1UL << AFIO_EXTICR3_EXTI11_PB_Pos) /*!< 0x00001000 */ +#define AFIO_EXTICR3_EXTI11_PB AFIO_EXTICR3_EXTI11_PB_Msk /*!< PB[11] pin */ +#define AFIO_EXTICR3_EXTI11_PC_Pos (13U) +#define AFIO_EXTICR3_EXTI11_PC_Msk (0x1UL << AFIO_EXTICR3_EXTI11_PC_Pos) /*!< 0x00002000 */ +#define AFIO_EXTICR3_EXTI11_PC AFIO_EXTICR3_EXTI11_PC_Msk /*!< PC[11] pin */ +#define AFIO_EXTICR3_EXTI11_PD_Pos (12U) +#define AFIO_EXTICR3_EXTI11_PD_Msk (0x3UL << AFIO_EXTICR3_EXTI11_PD_Pos) /*!< 0x00003000 */ +#define AFIO_EXTICR3_EXTI11_PD AFIO_EXTICR3_EXTI11_PD_Msk /*!< PD[11] pin */ +#define AFIO_EXTICR3_EXTI11_PE_Pos (14U) +#define AFIO_EXTICR3_EXTI11_PE_Msk (0x1UL << AFIO_EXTICR3_EXTI11_PE_Pos) /*!< 0x00004000 */ +#define AFIO_EXTICR3_EXTI11_PE AFIO_EXTICR3_EXTI11_PE_Msk /*!< PE[11] pin */ +#define AFIO_EXTICR3_EXTI11_PF_Pos (12U) +#define AFIO_EXTICR3_EXTI11_PF_Msk (0x5UL << AFIO_EXTICR3_EXTI11_PF_Pos) /*!< 0x00005000 */ +#define AFIO_EXTICR3_EXTI11_PF AFIO_EXTICR3_EXTI11_PF_Msk /*!< PF[11] pin */ +#define AFIO_EXTICR3_EXTI11_PG_Pos (13U) +#define AFIO_EXTICR3_EXTI11_PG_Msk (0x3UL << AFIO_EXTICR3_EXTI11_PG_Pos) /*!< 0x00006000 */ +#define AFIO_EXTICR3_EXTI11_PG AFIO_EXTICR3_EXTI11_PG_Msk /*!< PG[11] pin */ + +/***************** Bit definition for AFIO_EXTICR4 register *****************/ +#define AFIO_EXTICR4_EXTI12_Pos (0U) +#define AFIO_EXTICR4_EXTI12_Msk (0xFUL << AFIO_EXTICR4_EXTI12_Pos) /*!< 0x0000000F */ +#define AFIO_EXTICR4_EXTI12 AFIO_EXTICR4_EXTI12_Msk /*!< EXTI 12 configuration */ +#define AFIO_EXTICR4_EXTI13_Pos (4U) +#define AFIO_EXTICR4_EXTI13_Msk (0xFUL << AFIO_EXTICR4_EXTI13_Pos) /*!< 0x000000F0 */ +#define AFIO_EXTICR4_EXTI13 AFIO_EXTICR4_EXTI13_Msk /*!< EXTI 13 configuration */ +#define AFIO_EXTICR4_EXTI14_Pos (8U) +#define AFIO_EXTICR4_EXTI14_Msk (0xFUL << AFIO_EXTICR4_EXTI14_Pos) /*!< 0x00000F00 */ +#define AFIO_EXTICR4_EXTI14 AFIO_EXTICR4_EXTI14_Msk /*!< EXTI 14 configuration */ +#define AFIO_EXTICR4_EXTI15_Pos (12U) +#define AFIO_EXTICR4_EXTI15_Msk (0xFUL << AFIO_EXTICR4_EXTI15_Pos) /*!< 0x0000F000 */ +#define AFIO_EXTICR4_EXTI15 AFIO_EXTICR4_EXTI15_Msk /*!< EXTI 15 configuration */ + +/* EXTI12 configuration */ +#define AFIO_EXTICR4_EXTI12_PA 0x00000000U /*!< PA[12] pin */ +#define AFIO_EXTICR4_EXTI12_PB_Pos (0U) +#define AFIO_EXTICR4_EXTI12_PB_Msk (0x1UL << AFIO_EXTICR4_EXTI12_PB_Pos) /*!< 0x00000001 */ +#define AFIO_EXTICR4_EXTI12_PB AFIO_EXTICR4_EXTI12_PB_Msk /*!< PB[12] pin */ +#define AFIO_EXTICR4_EXTI12_PC_Pos (1U) +#define AFIO_EXTICR4_EXTI12_PC_Msk (0x1UL << AFIO_EXTICR4_EXTI12_PC_Pos) /*!< 0x00000002 */ +#define AFIO_EXTICR4_EXTI12_PC AFIO_EXTICR4_EXTI12_PC_Msk /*!< PC[12] pin */ +#define AFIO_EXTICR4_EXTI12_PD_Pos (0U) +#define AFIO_EXTICR4_EXTI12_PD_Msk (0x3UL << AFIO_EXTICR4_EXTI12_PD_Pos) /*!< 0x00000003 */ +#define AFIO_EXTICR4_EXTI12_PD AFIO_EXTICR4_EXTI12_PD_Msk /*!< PD[12] pin */ +#define AFIO_EXTICR4_EXTI12_PE_Pos (2U) +#define AFIO_EXTICR4_EXTI12_PE_Msk (0x1UL << AFIO_EXTICR4_EXTI12_PE_Pos) /*!< 0x00000004 */ +#define AFIO_EXTICR4_EXTI12_PE AFIO_EXTICR4_EXTI12_PE_Msk /*!< PE[12] pin */ +#define AFIO_EXTICR4_EXTI12_PF_Pos (0U) +#define AFIO_EXTICR4_EXTI12_PF_Msk (0x5UL << AFIO_EXTICR4_EXTI12_PF_Pos) /*!< 0x00000005 */ +#define AFIO_EXTICR4_EXTI12_PF AFIO_EXTICR4_EXTI12_PF_Msk /*!< PF[12] pin */ +#define AFIO_EXTICR4_EXTI12_PG_Pos (1U) +#define AFIO_EXTICR4_EXTI12_PG_Msk (0x3UL << AFIO_EXTICR4_EXTI12_PG_Pos) /*!< 0x00000006 */ +#define AFIO_EXTICR4_EXTI12_PG AFIO_EXTICR4_EXTI12_PG_Msk /*!< PG[12] pin */ + +/* EXTI13 configuration */ +#define AFIO_EXTICR4_EXTI13_PA 0x00000000U /*!< PA[13] pin */ +#define AFIO_EXTICR4_EXTI13_PB_Pos (4U) +#define AFIO_EXTICR4_EXTI13_PB_Msk (0x1UL << AFIO_EXTICR4_EXTI13_PB_Pos) /*!< 0x00000010 */ +#define AFIO_EXTICR4_EXTI13_PB AFIO_EXTICR4_EXTI13_PB_Msk /*!< PB[13] pin */ +#define AFIO_EXTICR4_EXTI13_PC_Pos (5U) +#define AFIO_EXTICR4_EXTI13_PC_Msk (0x1UL << AFIO_EXTICR4_EXTI13_PC_Pos) /*!< 0x00000020 */ +#define AFIO_EXTICR4_EXTI13_PC AFIO_EXTICR4_EXTI13_PC_Msk /*!< PC[13] pin */ +#define AFIO_EXTICR4_EXTI13_PD_Pos (4U) +#define AFIO_EXTICR4_EXTI13_PD_Msk (0x3UL << AFIO_EXTICR4_EXTI13_PD_Pos) /*!< 0x00000030 */ +#define AFIO_EXTICR4_EXTI13_PD AFIO_EXTICR4_EXTI13_PD_Msk /*!< PD[13] pin */ +#define AFIO_EXTICR4_EXTI13_PE_Pos (6U) +#define AFIO_EXTICR4_EXTI13_PE_Msk (0x1UL << AFIO_EXTICR4_EXTI13_PE_Pos) /*!< 0x00000040 */ +#define AFIO_EXTICR4_EXTI13_PE AFIO_EXTICR4_EXTI13_PE_Msk /*!< PE[13] pin */ +#define AFIO_EXTICR4_EXTI13_PF_Pos (4U) +#define AFIO_EXTICR4_EXTI13_PF_Msk (0x5UL << AFIO_EXTICR4_EXTI13_PF_Pos) /*!< 0x00000050 */ +#define AFIO_EXTICR4_EXTI13_PF AFIO_EXTICR4_EXTI13_PF_Msk /*!< PF[13] pin */ +#define AFIO_EXTICR4_EXTI13_PG_Pos (5U) +#define AFIO_EXTICR4_EXTI13_PG_Msk (0x3UL << AFIO_EXTICR4_EXTI13_PG_Pos) /*!< 0x00000060 */ +#define AFIO_EXTICR4_EXTI13_PG AFIO_EXTICR4_EXTI13_PG_Msk /*!< PG[13] pin */ + +/*!< EXTI14 configuration */ +#define AFIO_EXTICR4_EXTI14_PA 0x00000000U /*!< PA[14] pin */ +#define AFIO_EXTICR4_EXTI14_PB_Pos (8U) +#define AFIO_EXTICR4_EXTI14_PB_Msk (0x1UL << AFIO_EXTICR4_EXTI14_PB_Pos) /*!< 0x00000100 */ +#define AFIO_EXTICR4_EXTI14_PB AFIO_EXTICR4_EXTI14_PB_Msk /*!< PB[14] pin */ +#define AFIO_EXTICR4_EXTI14_PC_Pos (9U) +#define AFIO_EXTICR4_EXTI14_PC_Msk (0x1UL << AFIO_EXTICR4_EXTI14_PC_Pos) /*!< 0x00000200 */ +#define AFIO_EXTICR4_EXTI14_PC AFIO_EXTICR4_EXTI14_PC_Msk /*!< PC[14] pin */ +#define AFIO_EXTICR4_EXTI14_PD_Pos (8U) +#define AFIO_EXTICR4_EXTI14_PD_Msk (0x3UL << AFIO_EXTICR4_EXTI14_PD_Pos) /*!< 0x00000300 */ +#define AFIO_EXTICR4_EXTI14_PD AFIO_EXTICR4_EXTI14_PD_Msk /*!< PD[14] pin */ +#define AFIO_EXTICR4_EXTI14_PE_Pos (10U) +#define AFIO_EXTICR4_EXTI14_PE_Msk (0x1UL << AFIO_EXTICR4_EXTI14_PE_Pos) /*!< 0x00000400 */ +#define AFIO_EXTICR4_EXTI14_PE AFIO_EXTICR4_EXTI14_PE_Msk /*!< PE[14] pin */ +#define AFIO_EXTICR4_EXTI14_PF_Pos (8U) +#define AFIO_EXTICR4_EXTI14_PF_Msk (0x5UL << AFIO_EXTICR4_EXTI14_PF_Pos) /*!< 0x00000500 */ +#define AFIO_EXTICR4_EXTI14_PF AFIO_EXTICR4_EXTI14_PF_Msk /*!< PF[14] pin */ +#define AFIO_EXTICR4_EXTI14_PG_Pos (9U) +#define AFIO_EXTICR4_EXTI14_PG_Msk (0x3UL << AFIO_EXTICR4_EXTI14_PG_Pos) /*!< 0x00000600 */ +#define AFIO_EXTICR4_EXTI14_PG AFIO_EXTICR4_EXTI14_PG_Msk /*!< PG[14] pin */ + +/*!< EXTI15 configuration */ +#define AFIO_EXTICR4_EXTI15_PA 0x00000000U /*!< PA[15] pin */ +#define AFIO_EXTICR4_EXTI15_PB_Pos (12U) +#define AFIO_EXTICR4_EXTI15_PB_Msk (0x1UL << AFIO_EXTICR4_EXTI15_PB_Pos) /*!< 0x00001000 */ +#define AFIO_EXTICR4_EXTI15_PB AFIO_EXTICR4_EXTI15_PB_Msk /*!< PB[15] pin */ +#define AFIO_EXTICR4_EXTI15_PC_Pos (13U) +#define AFIO_EXTICR4_EXTI15_PC_Msk (0x1UL << AFIO_EXTICR4_EXTI15_PC_Pos) /*!< 0x00002000 */ +#define AFIO_EXTICR4_EXTI15_PC AFIO_EXTICR4_EXTI15_PC_Msk /*!< PC[15] pin */ +#define AFIO_EXTICR4_EXTI15_PD_Pos (12U) +#define AFIO_EXTICR4_EXTI15_PD_Msk (0x3UL << AFIO_EXTICR4_EXTI15_PD_Pos) /*!< 0x00003000 */ +#define AFIO_EXTICR4_EXTI15_PD AFIO_EXTICR4_EXTI15_PD_Msk /*!< PD[15] pin */ +#define AFIO_EXTICR4_EXTI15_PE_Pos (14U) +#define AFIO_EXTICR4_EXTI15_PE_Msk (0x1UL << AFIO_EXTICR4_EXTI15_PE_Pos) /*!< 0x00004000 */ +#define AFIO_EXTICR4_EXTI15_PE AFIO_EXTICR4_EXTI15_PE_Msk /*!< PE[15] pin */ +#define AFIO_EXTICR4_EXTI15_PF_Pos (12U) +#define AFIO_EXTICR4_EXTI15_PF_Msk (0x5UL << AFIO_EXTICR4_EXTI15_PF_Pos) /*!< 0x00005000 */ +#define AFIO_EXTICR4_EXTI15_PF AFIO_EXTICR4_EXTI15_PF_Msk /*!< PF[15] pin */ +#define AFIO_EXTICR4_EXTI15_PG_Pos (13U) +#define AFIO_EXTICR4_EXTI15_PG_Msk (0x3UL << AFIO_EXTICR4_EXTI15_PG_Pos) /*!< 0x00006000 */ +#define AFIO_EXTICR4_EXTI15_PG AFIO_EXTICR4_EXTI15_PG_Msk /*!< PG[15] pin */ + +/****************** Bit definition for AFIO_MAPR2 register ******************/ + + + +/******************************************************************************/ +/* */ +/* External Interrupt/Event Controller */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for EXTI_IMR register *******************/ +#define EXTI_IMR_MR0_Pos (0U) +#define EXTI_IMR_MR0_Msk (0x1UL << EXTI_IMR_MR0_Pos) /*!< 0x00000001 */ +#define EXTI_IMR_MR0 EXTI_IMR_MR0_Msk /*!< Interrupt Mask on line 0 */ +#define EXTI_IMR_MR1_Pos (1U) +#define EXTI_IMR_MR1_Msk (0x1UL << EXTI_IMR_MR1_Pos) /*!< 0x00000002 */ +#define EXTI_IMR_MR1 EXTI_IMR_MR1_Msk /*!< Interrupt Mask on line 1 */ +#define EXTI_IMR_MR2_Pos (2U) +#define EXTI_IMR_MR2_Msk (0x1UL << EXTI_IMR_MR2_Pos) /*!< 0x00000004 */ +#define EXTI_IMR_MR2 EXTI_IMR_MR2_Msk /*!< Interrupt Mask on line 2 */ +#define EXTI_IMR_MR3_Pos (3U) +#define EXTI_IMR_MR3_Msk (0x1UL << EXTI_IMR_MR3_Pos) /*!< 0x00000008 */ +#define EXTI_IMR_MR3 EXTI_IMR_MR3_Msk /*!< Interrupt Mask on line 3 */ +#define EXTI_IMR_MR4_Pos (4U) +#define EXTI_IMR_MR4_Msk (0x1UL << EXTI_IMR_MR4_Pos) /*!< 0x00000010 */ +#define EXTI_IMR_MR4 EXTI_IMR_MR4_Msk /*!< Interrupt Mask on line 4 */ +#define EXTI_IMR_MR5_Pos (5U) +#define EXTI_IMR_MR5_Msk (0x1UL << EXTI_IMR_MR5_Pos) /*!< 0x00000020 */ +#define EXTI_IMR_MR5 EXTI_IMR_MR5_Msk /*!< Interrupt Mask on line 5 */ +#define EXTI_IMR_MR6_Pos (6U) +#define EXTI_IMR_MR6_Msk (0x1UL << EXTI_IMR_MR6_Pos) /*!< 0x00000040 */ +#define EXTI_IMR_MR6 EXTI_IMR_MR6_Msk /*!< Interrupt Mask on line 6 */ +#define EXTI_IMR_MR7_Pos (7U) +#define EXTI_IMR_MR7_Msk (0x1UL << EXTI_IMR_MR7_Pos) /*!< 0x00000080 */ +#define EXTI_IMR_MR7 EXTI_IMR_MR7_Msk /*!< Interrupt Mask on line 7 */ +#define EXTI_IMR_MR8_Pos (8U) +#define EXTI_IMR_MR8_Msk (0x1UL << EXTI_IMR_MR8_Pos) /*!< 0x00000100 */ +#define EXTI_IMR_MR8 EXTI_IMR_MR8_Msk /*!< Interrupt Mask on line 8 */ +#define EXTI_IMR_MR9_Pos (9U) +#define EXTI_IMR_MR9_Msk (0x1UL << EXTI_IMR_MR9_Pos) /*!< 0x00000200 */ +#define EXTI_IMR_MR9 EXTI_IMR_MR9_Msk /*!< Interrupt Mask on line 9 */ +#define EXTI_IMR_MR10_Pos (10U) +#define EXTI_IMR_MR10_Msk (0x1UL << EXTI_IMR_MR10_Pos) /*!< 0x00000400 */ +#define EXTI_IMR_MR10 EXTI_IMR_MR10_Msk /*!< Interrupt Mask on line 10 */ +#define EXTI_IMR_MR11_Pos (11U) +#define EXTI_IMR_MR11_Msk (0x1UL << EXTI_IMR_MR11_Pos) /*!< 0x00000800 */ +#define EXTI_IMR_MR11 EXTI_IMR_MR11_Msk /*!< Interrupt Mask on line 11 */ +#define EXTI_IMR_MR12_Pos (12U) +#define EXTI_IMR_MR12_Msk (0x1UL << EXTI_IMR_MR12_Pos) /*!< 0x00001000 */ +#define EXTI_IMR_MR12 EXTI_IMR_MR12_Msk /*!< Interrupt Mask on line 12 */ +#define EXTI_IMR_MR13_Pos (13U) +#define EXTI_IMR_MR13_Msk (0x1UL << EXTI_IMR_MR13_Pos) /*!< 0x00002000 */ +#define EXTI_IMR_MR13 EXTI_IMR_MR13_Msk /*!< Interrupt Mask on line 13 */ +#define EXTI_IMR_MR14_Pos (14U) +#define EXTI_IMR_MR14_Msk (0x1UL << EXTI_IMR_MR14_Pos) /*!< 0x00004000 */ +#define EXTI_IMR_MR14 EXTI_IMR_MR14_Msk /*!< Interrupt Mask on line 14 */ +#define EXTI_IMR_MR15_Pos (15U) +#define EXTI_IMR_MR15_Msk (0x1UL << EXTI_IMR_MR15_Pos) /*!< 0x00008000 */ +#define EXTI_IMR_MR15 EXTI_IMR_MR15_Msk /*!< Interrupt Mask on line 15 */ +#define EXTI_IMR_MR16_Pos (16U) +#define EXTI_IMR_MR16_Msk (0x1UL << EXTI_IMR_MR16_Pos) /*!< 0x00010000 */ +#define EXTI_IMR_MR16 EXTI_IMR_MR16_Msk /*!< Interrupt Mask on line 16 */ +#define EXTI_IMR_MR17_Pos (17U) +#define EXTI_IMR_MR17_Msk (0x1UL << EXTI_IMR_MR17_Pos) /*!< 0x00020000 */ +#define EXTI_IMR_MR17 EXTI_IMR_MR17_Msk /*!< Interrupt Mask on line 17 */ +#define EXTI_IMR_MR18_Pos (18U) +#define EXTI_IMR_MR18_Msk (0x1UL << EXTI_IMR_MR18_Pos) /*!< 0x00040000 */ +#define EXTI_IMR_MR18 EXTI_IMR_MR18_Msk /*!< Interrupt Mask on line 18 */ + +/* References Defines */ +#define EXTI_IMR_IM0 EXTI_IMR_MR0 +#define EXTI_IMR_IM1 EXTI_IMR_MR1 +#define EXTI_IMR_IM2 EXTI_IMR_MR2 +#define EXTI_IMR_IM3 EXTI_IMR_MR3 +#define EXTI_IMR_IM4 EXTI_IMR_MR4 +#define EXTI_IMR_IM5 EXTI_IMR_MR5 +#define EXTI_IMR_IM6 EXTI_IMR_MR6 +#define EXTI_IMR_IM7 EXTI_IMR_MR7 +#define EXTI_IMR_IM8 EXTI_IMR_MR8 +#define EXTI_IMR_IM9 EXTI_IMR_MR9 +#define EXTI_IMR_IM10 EXTI_IMR_MR10 +#define EXTI_IMR_IM11 EXTI_IMR_MR11 +#define EXTI_IMR_IM12 EXTI_IMR_MR12 +#define EXTI_IMR_IM13 EXTI_IMR_MR13 +#define EXTI_IMR_IM14 EXTI_IMR_MR14 +#define EXTI_IMR_IM15 EXTI_IMR_MR15 +#define EXTI_IMR_IM16 EXTI_IMR_MR16 +#define EXTI_IMR_IM17 EXTI_IMR_MR17 +#define EXTI_IMR_IM18 EXTI_IMR_MR18 +#define EXTI_IMR_IM 0x0007FFFFU /*!< Interrupt Mask All */ + +/******************* Bit definition for EXTI_EMR register *******************/ +#define EXTI_EMR_MR0_Pos (0U) +#define EXTI_EMR_MR0_Msk (0x1UL << EXTI_EMR_MR0_Pos) /*!< 0x00000001 */ +#define EXTI_EMR_MR0 EXTI_EMR_MR0_Msk /*!< Event Mask on line 0 */ +#define EXTI_EMR_MR1_Pos (1U) +#define EXTI_EMR_MR1_Msk (0x1UL << EXTI_EMR_MR1_Pos) /*!< 0x00000002 */ +#define EXTI_EMR_MR1 EXTI_EMR_MR1_Msk /*!< Event Mask on line 1 */ +#define EXTI_EMR_MR2_Pos (2U) +#define EXTI_EMR_MR2_Msk (0x1UL << EXTI_EMR_MR2_Pos) /*!< 0x00000004 */ +#define EXTI_EMR_MR2 EXTI_EMR_MR2_Msk /*!< Event Mask on line 2 */ +#define EXTI_EMR_MR3_Pos (3U) +#define EXTI_EMR_MR3_Msk (0x1UL << EXTI_EMR_MR3_Pos) /*!< 0x00000008 */ +#define EXTI_EMR_MR3 EXTI_EMR_MR3_Msk /*!< Event Mask on line 3 */ +#define EXTI_EMR_MR4_Pos (4U) +#define EXTI_EMR_MR4_Msk (0x1UL << EXTI_EMR_MR4_Pos) /*!< 0x00000010 */ +#define EXTI_EMR_MR4 EXTI_EMR_MR4_Msk /*!< Event Mask on line 4 */ +#define EXTI_EMR_MR5_Pos (5U) +#define EXTI_EMR_MR5_Msk (0x1UL << EXTI_EMR_MR5_Pos) /*!< 0x00000020 */ +#define EXTI_EMR_MR5 EXTI_EMR_MR5_Msk /*!< Event Mask on line 5 */ +#define EXTI_EMR_MR6_Pos (6U) +#define EXTI_EMR_MR6_Msk (0x1UL << EXTI_EMR_MR6_Pos) /*!< 0x00000040 */ +#define EXTI_EMR_MR6 EXTI_EMR_MR6_Msk /*!< Event Mask on line 6 */ +#define EXTI_EMR_MR7_Pos (7U) +#define EXTI_EMR_MR7_Msk (0x1UL << EXTI_EMR_MR7_Pos) /*!< 0x00000080 */ +#define EXTI_EMR_MR7 EXTI_EMR_MR7_Msk /*!< Event Mask on line 7 */ +#define EXTI_EMR_MR8_Pos (8U) +#define EXTI_EMR_MR8_Msk (0x1UL << EXTI_EMR_MR8_Pos) /*!< 0x00000100 */ +#define EXTI_EMR_MR8 EXTI_EMR_MR8_Msk /*!< Event Mask on line 8 */ +#define EXTI_EMR_MR9_Pos (9U) +#define EXTI_EMR_MR9_Msk (0x1UL << EXTI_EMR_MR9_Pos) /*!< 0x00000200 */ +#define EXTI_EMR_MR9 EXTI_EMR_MR9_Msk /*!< Event Mask on line 9 */ +#define EXTI_EMR_MR10_Pos (10U) +#define EXTI_EMR_MR10_Msk (0x1UL << EXTI_EMR_MR10_Pos) /*!< 0x00000400 */ +#define EXTI_EMR_MR10 EXTI_EMR_MR10_Msk /*!< Event Mask on line 10 */ +#define EXTI_EMR_MR11_Pos (11U) +#define EXTI_EMR_MR11_Msk (0x1UL << EXTI_EMR_MR11_Pos) /*!< 0x00000800 */ +#define EXTI_EMR_MR11 EXTI_EMR_MR11_Msk /*!< Event Mask on line 11 */ +#define EXTI_EMR_MR12_Pos (12U) +#define EXTI_EMR_MR12_Msk (0x1UL << EXTI_EMR_MR12_Pos) /*!< 0x00001000 */ +#define EXTI_EMR_MR12 EXTI_EMR_MR12_Msk /*!< Event Mask on line 12 */ +#define EXTI_EMR_MR13_Pos (13U) +#define EXTI_EMR_MR13_Msk (0x1UL << EXTI_EMR_MR13_Pos) /*!< 0x00002000 */ +#define EXTI_EMR_MR13 EXTI_EMR_MR13_Msk /*!< Event Mask on line 13 */ +#define EXTI_EMR_MR14_Pos (14U) +#define EXTI_EMR_MR14_Msk (0x1UL << EXTI_EMR_MR14_Pos) /*!< 0x00004000 */ +#define EXTI_EMR_MR14 EXTI_EMR_MR14_Msk /*!< Event Mask on line 14 */ +#define EXTI_EMR_MR15_Pos (15U) +#define EXTI_EMR_MR15_Msk (0x1UL << EXTI_EMR_MR15_Pos) /*!< 0x00008000 */ +#define EXTI_EMR_MR15 EXTI_EMR_MR15_Msk /*!< Event Mask on line 15 */ +#define EXTI_EMR_MR16_Pos (16U) +#define EXTI_EMR_MR16_Msk (0x1UL << EXTI_EMR_MR16_Pos) /*!< 0x00010000 */ +#define EXTI_EMR_MR16 EXTI_EMR_MR16_Msk /*!< Event Mask on line 16 */ +#define EXTI_EMR_MR17_Pos (17U) +#define EXTI_EMR_MR17_Msk (0x1UL << EXTI_EMR_MR17_Pos) /*!< 0x00020000 */ +#define EXTI_EMR_MR17 EXTI_EMR_MR17_Msk /*!< Event Mask on line 17 */ +#define EXTI_EMR_MR18_Pos (18U) +#define EXTI_EMR_MR18_Msk (0x1UL << EXTI_EMR_MR18_Pos) /*!< 0x00040000 */ +#define EXTI_EMR_MR18 EXTI_EMR_MR18_Msk /*!< Event Mask on line 18 */ + +/* References Defines */ +#define EXTI_EMR_EM0 EXTI_EMR_MR0 +#define EXTI_EMR_EM1 EXTI_EMR_MR1 +#define EXTI_EMR_EM2 EXTI_EMR_MR2 +#define EXTI_EMR_EM3 EXTI_EMR_MR3 +#define EXTI_EMR_EM4 EXTI_EMR_MR4 +#define EXTI_EMR_EM5 EXTI_EMR_MR5 +#define EXTI_EMR_EM6 EXTI_EMR_MR6 +#define EXTI_EMR_EM7 EXTI_EMR_MR7 +#define EXTI_EMR_EM8 EXTI_EMR_MR8 +#define EXTI_EMR_EM9 EXTI_EMR_MR9 +#define EXTI_EMR_EM10 EXTI_EMR_MR10 +#define EXTI_EMR_EM11 EXTI_EMR_MR11 +#define EXTI_EMR_EM12 EXTI_EMR_MR12 +#define EXTI_EMR_EM13 EXTI_EMR_MR13 +#define EXTI_EMR_EM14 EXTI_EMR_MR14 +#define EXTI_EMR_EM15 EXTI_EMR_MR15 +#define EXTI_EMR_EM16 EXTI_EMR_MR16 +#define EXTI_EMR_EM17 EXTI_EMR_MR17 +#define EXTI_EMR_EM18 EXTI_EMR_MR18 + +/****************** Bit definition for EXTI_RTSR register *******************/ +#define EXTI_RTSR_TR0_Pos (0U) +#define EXTI_RTSR_TR0_Msk (0x1UL << EXTI_RTSR_TR0_Pos) /*!< 0x00000001 */ +#define EXTI_RTSR_TR0 EXTI_RTSR_TR0_Msk /*!< Rising trigger event configuration bit of line 0 */ +#define EXTI_RTSR_TR1_Pos (1U) +#define EXTI_RTSR_TR1_Msk (0x1UL << EXTI_RTSR_TR1_Pos) /*!< 0x00000002 */ +#define EXTI_RTSR_TR1 EXTI_RTSR_TR1_Msk /*!< Rising trigger event configuration bit of line 1 */ +#define EXTI_RTSR_TR2_Pos (2U) +#define EXTI_RTSR_TR2_Msk (0x1UL << EXTI_RTSR_TR2_Pos) /*!< 0x00000004 */ +#define EXTI_RTSR_TR2 EXTI_RTSR_TR2_Msk /*!< Rising trigger event configuration bit of line 2 */ +#define EXTI_RTSR_TR3_Pos (3U) +#define EXTI_RTSR_TR3_Msk (0x1UL << EXTI_RTSR_TR3_Pos) /*!< 0x00000008 */ +#define EXTI_RTSR_TR3 EXTI_RTSR_TR3_Msk /*!< Rising trigger event configuration bit of line 3 */ +#define EXTI_RTSR_TR4_Pos (4U) +#define EXTI_RTSR_TR4_Msk (0x1UL << EXTI_RTSR_TR4_Pos) /*!< 0x00000010 */ +#define EXTI_RTSR_TR4 EXTI_RTSR_TR4_Msk /*!< Rising trigger event configuration bit of line 4 */ +#define EXTI_RTSR_TR5_Pos (5U) +#define EXTI_RTSR_TR5_Msk (0x1UL << EXTI_RTSR_TR5_Pos) /*!< 0x00000020 */ +#define EXTI_RTSR_TR5 EXTI_RTSR_TR5_Msk /*!< Rising trigger event configuration bit of line 5 */ +#define EXTI_RTSR_TR6_Pos (6U) +#define EXTI_RTSR_TR6_Msk (0x1UL << EXTI_RTSR_TR6_Pos) /*!< 0x00000040 */ +#define EXTI_RTSR_TR6 EXTI_RTSR_TR6_Msk /*!< Rising trigger event configuration bit of line 6 */ +#define EXTI_RTSR_TR7_Pos (7U) +#define EXTI_RTSR_TR7_Msk (0x1UL << EXTI_RTSR_TR7_Pos) /*!< 0x00000080 */ +#define EXTI_RTSR_TR7 EXTI_RTSR_TR7_Msk /*!< Rising trigger event configuration bit of line 7 */ +#define EXTI_RTSR_TR8_Pos (8U) +#define EXTI_RTSR_TR8_Msk (0x1UL << EXTI_RTSR_TR8_Pos) /*!< 0x00000100 */ +#define EXTI_RTSR_TR8 EXTI_RTSR_TR8_Msk /*!< Rising trigger event configuration bit of line 8 */ +#define EXTI_RTSR_TR9_Pos (9U) +#define EXTI_RTSR_TR9_Msk (0x1UL << EXTI_RTSR_TR9_Pos) /*!< 0x00000200 */ +#define EXTI_RTSR_TR9 EXTI_RTSR_TR9_Msk /*!< Rising trigger event configuration bit of line 9 */ +#define EXTI_RTSR_TR10_Pos (10U) +#define EXTI_RTSR_TR10_Msk (0x1UL << EXTI_RTSR_TR10_Pos) /*!< 0x00000400 */ +#define EXTI_RTSR_TR10 EXTI_RTSR_TR10_Msk /*!< Rising trigger event configuration bit of line 10 */ +#define EXTI_RTSR_TR11_Pos (11U) +#define EXTI_RTSR_TR11_Msk (0x1UL << EXTI_RTSR_TR11_Pos) /*!< 0x00000800 */ +#define EXTI_RTSR_TR11 EXTI_RTSR_TR11_Msk /*!< Rising trigger event configuration bit of line 11 */ +#define EXTI_RTSR_TR12_Pos (12U) +#define EXTI_RTSR_TR12_Msk (0x1UL << EXTI_RTSR_TR12_Pos) /*!< 0x00001000 */ +#define EXTI_RTSR_TR12 EXTI_RTSR_TR12_Msk /*!< Rising trigger event configuration bit of line 12 */ +#define EXTI_RTSR_TR13_Pos (13U) +#define EXTI_RTSR_TR13_Msk (0x1UL << EXTI_RTSR_TR13_Pos) /*!< 0x00002000 */ +#define EXTI_RTSR_TR13 EXTI_RTSR_TR13_Msk /*!< Rising trigger event configuration bit of line 13 */ +#define EXTI_RTSR_TR14_Pos (14U) +#define EXTI_RTSR_TR14_Msk (0x1UL << EXTI_RTSR_TR14_Pos) /*!< 0x00004000 */ +#define EXTI_RTSR_TR14 EXTI_RTSR_TR14_Msk /*!< Rising trigger event configuration bit of line 14 */ +#define EXTI_RTSR_TR15_Pos (15U) +#define EXTI_RTSR_TR15_Msk (0x1UL << EXTI_RTSR_TR15_Pos) /*!< 0x00008000 */ +#define EXTI_RTSR_TR15 EXTI_RTSR_TR15_Msk /*!< Rising trigger event configuration bit of line 15 */ +#define EXTI_RTSR_TR16_Pos (16U) +#define EXTI_RTSR_TR16_Msk (0x1UL << EXTI_RTSR_TR16_Pos) /*!< 0x00010000 */ +#define EXTI_RTSR_TR16 EXTI_RTSR_TR16_Msk /*!< Rising trigger event configuration bit of line 16 */ +#define EXTI_RTSR_TR17_Pos (17U) +#define EXTI_RTSR_TR17_Msk (0x1UL << EXTI_RTSR_TR17_Pos) /*!< 0x00020000 */ +#define EXTI_RTSR_TR17 EXTI_RTSR_TR17_Msk /*!< Rising trigger event configuration bit of line 17 */ +#define EXTI_RTSR_TR18_Pos (18U) +#define EXTI_RTSR_TR18_Msk (0x1UL << EXTI_RTSR_TR18_Pos) /*!< 0x00040000 */ +#define EXTI_RTSR_TR18 EXTI_RTSR_TR18_Msk /*!< Rising trigger event configuration bit of line 18 */ + +/* References Defines */ +#define EXTI_RTSR_RT0 EXTI_RTSR_TR0 +#define EXTI_RTSR_RT1 EXTI_RTSR_TR1 +#define EXTI_RTSR_RT2 EXTI_RTSR_TR2 +#define EXTI_RTSR_RT3 EXTI_RTSR_TR3 +#define EXTI_RTSR_RT4 EXTI_RTSR_TR4 +#define EXTI_RTSR_RT5 EXTI_RTSR_TR5 +#define EXTI_RTSR_RT6 EXTI_RTSR_TR6 +#define EXTI_RTSR_RT7 EXTI_RTSR_TR7 +#define EXTI_RTSR_RT8 EXTI_RTSR_TR8 +#define EXTI_RTSR_RT9 EXTI_RTSR_TR9 +#define EXTI_RTSR_RT10 EXTI_RTSR_TR10 +#define EXTI_RTSR_RT11 EXTI_RTSR_TR11 +#define EXTI_RTSR_RT12 EXTI_RTSR_TR12 +#define EXTI_RTSR_RT13 EXTI_RTSR_TR13 +#define EXTI_RTSR_RT14 EXTI_RTSR_TR14 +#define EXTI_RTSR_RT15 EXTI_RTSR_TR15 +#define EXTI_RTSR_RT16 EXTI_RTSR_TR16 +#define EXTI_RTSR_RT17 EXTI_RTSR_TR17 +#define EXTI_RTSR_RT18 EXTI_RTSR_TR18 + +/****************** Bit definition for EXTI_FTSR register *******************/ +#define EXTI_FTSR_TR0_Pos (0U) +#define EXTI_FTSR_TR0_Msk (0x1UL << EXTI_FTSR_TR0_Pos) /*!< 0x00000001 */ +#define EXTI_FTSR_TR0 EXTI_FTSR_TR0_Msk /*!< Falling trigger event configuration bit of line 0 */ +#define EXTI_FTSR_TR1_Pos (1U) +#define EXTI_FTSR_TR1_Msk (0x1UL << EXTI_FTSR_TR1_Pos) /*!< 0x00000002 */ +#define EXTI_FTSR_TR1 EXTI_FTSR_TR1_Msk /*!< Falling trigger event configuration bit of line 1 */ +#define EXTI_FTSR_TR2_Pos (2U) +#define EXTI_FTSR_TR2_Msk (0x1UL << EXTI_FTSR_TR2_Pos) /*!< 0x00000004 */ +#define EXTI_FTSR_TR2 EXTI_FTSR_TR2_Msk /*!< Falling trigger event configuration bit of line 2 */ +#define EXTI_FTSR_TR3_Pos (3U) +#define EXTI_FTSR_TR3_Msk (0x1UL << EXTI_FTSR_TR3_Pos) /*!< 0x00000008 */ +#define EXTI_FTSR_TR3 EXTI_FTSR_TR3_Msk /*!< Falling trigger event configuration bit of line 3 */ +#define EXTI_FTSR_TR4_Pos (4U) +#define EXTI_FTSR_TR4_Msk (0x1UL << EXTI_FTSR_TR4_Pos) /*!< 0x00000010 */ +#define EXTI_FTSR_TR4 EXTI_FTSR_TR4_Msk /*!< Falling trigger event configuration bit of line 4 */ +#define EXTI_FTSR_TR5_Pos (5U) +#define EXTI_FTSR_TR5_Msk (0x1UL << EXTI_FTSR_TR5_Pos) /*!< 0x00000020 */ +#define EXTI_FTSR_TR5 EXTI_FTSR_TR5_Msk /*!< Falling trigger event configuration bit of line 5 */ +#define EXTI_FTSR_TR6_Pos (6U) +#define EXTI_FTSR_TR6_Msk (0x1UL << EXTI_FTSR_TR6_Pos) /*!< 0x00000040 */ +#define EXTI_FTSR_TR6 EXTI_FTSR_TR6_Msk /*!< Falling trigger event configuration bit of line 6 */ +#define EXTI_FTSR_TR7_Pos (7U) +#define EXTI_FTSR_TR7_Msk (0x1UL << EXTI_FTSR_TR7_Pos) /*!< 0x00000080 */ +#define EXTI_FTSR_TR7 EXTI_FTSR_TR7_Msk /*!< Falling trigger event configuration bit of line 7 */ +#define EXTI_FTSR_TR8_Pos (8U) +#define EXTI_FTSR_TR8_Msk (0x1UL << EXTI_FTSR_TR8_Pos) /*!< 0x00000100 */ +#define EXTI_FTSR_TR8 EXTI_FTSR_TR8_Msk /*!< Falling trigger event configuration bit of line 8 */ +#define EXTI_FTSR_TR9_Pos (9U) +#define EXTI_FTSR_TR9_Msk (0x1UL << EXTI_FTSR_TR9_Pos) /*!< 0x00000200 */ +#define EXTI_FTSR_TR9 EXTI_FTSR_TR9_Msk /*!< Falling trigger event configuration bit of line 9 */ +#define EXTI_FTSR_TR10_Pos (10U) +#define EXTI_FTSR_TR10_Msk (0x1UL << EXTI_FTSR_TR10_Pos) /*!< 0x00000400 */ +#define EXTI_FTSR_TR10 EXTI_FTSR_TR10_Msk /*!< Falling trigger event configuration bit of line 10 */ +#define EXTI_FTSR_TR11_Pos (11U) +#define EXTI_FTSR_TR11_Msk (0x1UL << EXTI_FTSR_TR11_Pos) /*!< 0x00000800 */ +#define EXTI_FTSR_TR11 EXTI_FTSR_TR11_Msk /*!< Falling trigger event configuration bit of line 11 */ +#define EXTI_FTSR_TR12_Pos (12U) +#define EXTI_FTSR_TR12_Msk (0x1UL << EXTI_FTSR_TR12_Pos) /*!< 0x00001000 */ +#define EXTI_FTSR_TR12 EXTI_FTSR_TR12_Msk /*!< Falling trigger event configuration bit of line 12 */ +#define EXTI_FTSR_TR13_Pos (13U) +#define EXTI_FTSR_TR13_Msk (0x1UL << EXTI_FTSR_TR13_Pos) /*!< 0x00002000 */ +#define EXTI_FTSR_TR13 EXTI_FTSR_TR13_Msk /*!< Falling trigger event configuration bit of line 13 */ +#define EXTI_FTSR_TR14_Pos (14U) +#define EXTI_FTSR_TR14_Msk (0x1UL << EXTI_FTSR_TR14_Pos) /*!< 0x00004000 */ +#define EXTI_FTSR_TR14 EXTI_FTSR_TR14_Msk /*!< Falling trigger event configuration bit of line 14 */ +#define EXTI_FTSR_TR15_Pos (15U) +#define EXTI_FTSR_TR15_Msk (0x1UL << EXTI_FTSR_TR15_Pos) /*!< 0x00008000 */ +#define EXTI_FTSR_TR15 EXTI_FTSR_TR15_Msk /*!< Falling trigger event configuration bit of line 15 */ +#define EXTI_FTSR_TR16_Pos (16U) +#define EXTI_FTSR_TR16_Msk (0x1UL << EXTI_FTSR_TR16_Pos) /*!< 0x00010000 */ +#define EXTI_FTSR_TR16 EXTI_FTSR_TR16_Msk /*!< Falling trigger event configuration bit of line 16 */ +#define EXTI_FTSR_TR17_Pos (17U) +#define EXTI_FTSR_TR17_Msk (0x1UL << EXTI_FTSR_TR17_Pos) /*!< 0x00020000 */ +#define EXTI_FTSR_TR17 EXTI_FTSR_TR17_Msk /*!< Falling trigger event configuration bit of line 17 */ +#define EXTI_FTSR_TR18_Pos (18U) +#define EXTI_FTSR_TR18_Msk (0x1UL << EXTI_FTSR_TR18_Pos) /*!< 0x00040000 */ +#define EXTI_FTSR_TR18 EXTI_FTSR_TR18_Msk /*!< Falling trigger event configuration bit of line 18 */ + +/* References Defines */ +#define EXTI_FTSR_FT0 EXTI_FTSR_TR0 +#define EXTI_FTSR_FT1 EXTI_FTSR_TR1 +#define EXTI_FTSR_FT2 EXTI_FTSR_TR2 +#define EXTI_FTSR_FT3 EXTI_FTSR_TR3 +#define EXTI_FTSR_FT4 EXTI_FTSR_TR4 +#define EXTI_FTSR_FT5 EXTI_FTSR_TR5 +#define EXTI_FTSR_FT6 EXTI_FTSR_TR6 +#define EXTI_FTSR_FT7 EXTI_FTSR_TR7 +#define EXTI_FTSR_FT8 EXTI_FTSR_TR8 +#define EXTI_FTSR_FT9 EXTI_FTSR_TR9 +#define EXTI_FTSR_FT10 EXTI_FTSR_TR10 +#define EXTI_FTSR_FT11 EXTI_FTSR_TR11 +#define EXTI_FTSR_FT12 EXTI_FTSR_TR12 +#define EXTI_FTSR_FT13 EXTI_FTSR_TR13 +#define EXTI_FTSR_FT14 EXTI_FTSR_TR14 +#define EXTI_FTSR_FT15 EXTI_FTSR_TR15 +#define EXTI_FTSR_FT16 EXTI_FTSR_TR16 +#define EXTI_FTSR_FT17 EXTI_FTSR_TR17 +#define EXTI_FTSR_FT18 EXTI_FTSR_TR18 + +/****************** Bit definition for EXTI_SWIER register ******************/ +#define EXTI_SWIER_SWIER0_Pos (0U) +#define EXTI_SWIER_SWIER0_Msk (0x1UL << EXTI_SWIER_SWIER0_Pos) /*!< 0x00000001 */ +#define EXTI_SWIER_SWIER0 EXTI_SWIER_SWIER0_Msk /*!< Software Interrupt on line 0 */ +#define EXTI_SWIER_SWIER1_Pos (1U) +#define EXTI_SWIER_SWIER1_Msk (0x1UL << EXTI_SWIER_SWIER1_Pos) /*!< 0x00000002 */ +#define EXTI_SWIER_SWIER1 EXTI_SWIER_SWIER1_Msk /*!< Software Interrupt on line 1 */ +#define EXTI_SWIER_SWIER2_Pos (2U) +#define EXTI_SWIER_SWIER2_Msk (0x1UL << EXTI_SWIER_SWIER2_Pos) /*!< 0x00000004 */ +#define EXTI_SWIER_SWIER2 EXTI_SWIER_SWIER2_Msk /*!< Software Interrupt on line 2 */ +#define EXTI_SWIER_SWIER3_Pos (3U) +#define EXTI_SWIER_SWIER3_Msk (0x1UL << EXTI_SWIER_SWIER3_Pos) /*!< 0x00000008 */ +#define EXTI_SWIER_SWIER3 EXTI_SWIER_SWIER3_Msk /*!< Software Interrupt on line 3 */ +#define EXTI_SWIER_SWIER4_Pos (4U) +#define EXTI_SWIER_SWIER4_Msk (0x1UL << EXTI_SWIER_SWIER4_Pos) /*!< 0x00000010 */ +#define EXTI_SWIER_SWIER4 EXTI_SWIER_SWIER4_Msk /*!< Software Interrupt on line 4 */ +#define EXTI_SWIER_SWIER5_Pos (5U) +#define EXTI_SWIER_SWIER5_Msk (0x1UL << EXTI_SWIER_SWIER5_Pos) /*!< 0x00000020 */ +#define EXTI_SWIER_SWIER5 EXTI_SWIER_SWIER5_Msk /*!< Software Interrupt on line 5 */ +#define EXTI_SWIER_SWIER6_Pos (6U) +#define EXTI_SWIER_SWIER6_Msk (0x1UL << EXTI_SWIER_SWIER6_Pos) /*!< 0x00000040 */ +#define EXTI_SWIER_SWIER6 EXTI_SWIER_SWIER6_Msk /*!< Software Interrupt on line 6 */ +#define EXTI_SWIER_SWIER7_Pos (7U) +#define EXTI_SWIER_SWIER7_Msk (0x1UL << EXTI_SWIER_SWIER7_Pos) /*!< 0x00000080 */ +#define EXTI_SWIER_SWIER7 EXTI_SWIER_SWIER7_Msk /*!< Software Interrupt on line 7 */ +#define EXTI_SWIER_SWIER8_Pos (8U) +#define EXTI_SWIER_SWIER8_Msk (0x1UL << EXTI_SWIER_SWIER8_Pos) /*!< 0x00000100 */ +#define EXTI_SWIER_SWIER8 EXTI_SWIER_SWIER8_Msk /*!< Software Interrupt on line 8 */ +#define EXTI_SWIER_SWIER9_Pos (9U) +#define EXTI_SWIER_SWIER9_Msk (0x1UL << EXTI_SWIER_SWIER9_Pos) /*!< 0x00000200 */ +#define EXTI_SWIER_SWIER9 EXTI_SWIER_SWIER9_Msk /*!< Software Interrupt on line 9 */ +#define EXTI_SWIER_SWIER10_Pos (10U) +#define EXTI_SWIER_SWIER10_Msk (0x1UL << EXTI_SWIER_SWIER10_Pos) /*!< 0x00000400 */ +#define EXTI_SWIER_SWIER10 EXTI_SWIER_SWIER10_Msk /*!< Software Interrupt on line 10 */ +#define EXTI_SWIER_SWIER11_Pos (11U) +#define EXTI_SWIER_SWIER11_Msk (0x1UL << EXTI_SWIER_SWIER11_Pos) /*!< 0x00000800 */ +#define EXTI_SWIER_SWIER11 EXTI_SWIER_SWIER11_Msk /*!< Software Interrupt on line 11 */ +#define EXTI_SWIER_SWIER12_Pos (12U) +#define EXTI_SWIER_SWIER12_Msk (0x1UL << EXTI_SWIER_SWIER12_Pos) /*!< 0x00001000 */ +#define EXTI_SWIER_SWIER12 EXTI_SWIER_SWIER12_Msk /*!< Software Interrupt on line 12 */ +#define EXTI_SWIER_SWIER13_Pos (13U) +#define EXTI_SWIER_SWIER13_Msk (0x1UL << EXTI_SWIER_SWIER13_Pos) /*!< 0x00002000 */ +#define EXTI_SWIER_SWIER13 EXTI_SWIER_SWIER13_Msk /*!< Software Interrupt on line 13 */ +#define EXTI_SWIER_SWIER14_Pos (14U) +#define EXTI_SWIER_SWIER14_Msk (0x1UL << EXTI_SWIER_SWIER14_Pos) /*!< 0x00004000 */ +#define EXTI_SWIER_SWIER14 EXTI_SWIER_SWIER14_Msk /*!< Software Interrupt on line 14 */ +#define EXTI_SWIER_SWIER15_Pos (15U) +#define EXTI_SWIER_SWIER15_Msk (0x1UL << EXTI_SWIER_SWIER15_Pos) /*!< 0x00008000 */ +#define EXTI_SWIER_SWIER15 EXTI_SWIER_SWIER15_Msk /*!< Software Interrupt on line 15 */ +#define EXTI_SWIER_SWIER16_Pos (16U) +#define EXTI_SWIER_SWIER16_Msk (0x1UL << EXTI_SWIER_SWIER16_Pos) /*!< 0x00010000 */ +#define EXTI_SWIER_SWIER16 EXTI_SWIER_SWIER16_Msk /*!< Software Interrupt on line 16 */ +#define EXTI_SWIER_SWIER17_Pos (17U) +#define EXTI_SWIER_SWIER17_Msk (0x1UL << EXTI_SWIER_SWIER17_Pos) /*!< 0x00020000 */ +#define EXTI_SWIER_SWIER17 EXTI_SWIER_SWIER17_Msk /*!< Software Interrupt on line 17 */ +#define EXTI_SWIER_SWIER18_Pos (18U) +#define EXTI_SWIER_SWIER18_Msk (0x1UL << EXTI_SWIER_SWIER18_Pos) /*!< 0x00040000 */ +#define EXTI_SWIER_SWIER18 EXTI_SWIER_SWIER18_Msk /*!< Software Interrupt on line 18 */ + +/* References Defines */ +#define EXTI_SWIER_SWI0 EXTI_SWIER_SWIER0 +#define EXTI_SWIER_SWI1 EXTI_SWIER_SWIER1 +#define EXTI_SWIER_SWI2 EXTI_SWIER_SWIER2 +#define EXTI_SWIER_SWI3 EXTI_SWIER_SWIER3 +#define EXTI_SWIER_SWI4 EXTI_SWIER_SWIER4 +#define EXTI_SWIER_SWI5 EXTI_SWIER_SWIER5 +#define EXTI_SWIER_SWI6 EXTI_SWIER_SWIER6 +#define EXTI_SWIER_SWI7 EXTI_SWIER_SWIER7 +#define EXTI_SWIER_SWI8 EXTI_SWIER_SWIER8 +#define EXTI_SWIER_SWI9 EXTI_SWIER_SWIER9 +#define EXTI_SWIER_SWI10 EXTI_SWIER_SWIER10 +#define EXTI_SWIER_SWI11 EXTI_SWIER_SWIER11 +#define EXTI_SWIER_SWI12 EXTI_SWIER_SWIER12 +#define EXTI_SWIER_SWI13 EXTI_SWIER_SWIER13 +#define EXTI_SWIER_SWI14 EXTI_SWIER_SWIER14 +#define EXTI_SWIER_SWI15 EXTI_SWIER_SWIER15 +#define EXTI_SWIER_SWI16 EXTI_SWIER_SWIER16 +#define EXTI_SWIER_SWI17 EXTI_SWIER_SWIER17 +#define EXTI_SWIER_SWI18 EXTI_SWIER_SWIER18 + +/******************* Bit definition for EXTI_PR register ********************/ +#define EXTI_PR_PR0_Pos (0U) +#define EXTI_PR_PR0_Msk (0x1UL << EXTI_PR_PR0_Pos) /*!< 0x00000001 */ +#define EXTI_PR_PR0 EXTI_PR_PR0_Msk /*!< Pending bit for line 0 */ +#define EXTI_PR_PR1_Pos (1U) +#define EXTI_PR_PR1_Msk (0x1UL << EXTI_PR_PR1_Pos) /*!< 0x00000002 */ +#define EXTI_PR_PR1 EXTI_PR_PR1_Msk /*!< Pending bit for line 1 */ +#define EXTI_PR_PR2_Pos (2U) +#define EXTI_PR_PR2_Msk (0x1UL << EXTI_PR_PR2_Pos) /*!< 0x00000004 */ +#define EXTI_PR_PR2 EXTI_PR_PR2_Msk /*!< Pending bit for line 2 */ +#define EXTI_PR_PR3_Pos (3U) +#define EXTI_PR_PR3_Msk (0x1UL << EXTI_PR_PR3_Pos) /*!< 0x00000008 */ +#define EXTI_PR_PR3 EXTI_PR_PR3_Msk /*!< Pending bit for line 3 */ +#define EXTI_PR_PR4_Pos (4U) +#define EXTI_PR_PR4_Msk (0x1UL << EXTI_PR_PR4_Pos) /*!< 0x00000010 */ +#define EXTI_PR_PR4 EXTI_PR_PR4_Msk /*!< Pending bit for line 4 */ +#define EXTI_PR_PR5_Pos (5U) +#define EXTI_PR_PR5_Msk (0x1UL << EXTI_PR_PR5_Pos) /*!< 0x00000020 */ +#define EXTI_PR_PR5 EXTI_PR_PR5_Msk /*!< Pending bit for line 5 */ +#define EXTI_PR_PR6_Pos (6U) +#define EXTI_PR_PR6_Msk (0x1UL << EXTI_PR_PR6_Pos) /*!< 0x00000040 */ +#define EXTI_PR_PR6 EXTI_PR_PR6_Msk /*!< Pending bit for line 6 */ +#define EXTI_PR_PR7_Pos (7U) +#define EXTI_PR_PR7_Msk (0x1UL << EXTI_PR_PR7_Pos) /*!< 0x00000080 */ +#define EXTI_PR_PR7 EXTI_PR_PR7_Msk /*!< Pending bit for line 7 */ +#define EXTI_PR_PR8_Pos (8U) +#define EXTI_PR_PR8_Msk (0x1UL << EXTI_PR_PR8_Pos) /*!< 0x00000100 */ +#define EXTI_PR_PR8 EXTI_PR_PR8_Msk /*!< Pending bit for line 8 */ +#define EXTI_PR_PR9_Pos (9U) +#define EXTI_PR_PR9_Msk (0x1UL << EXTI_PR_PR9_Pos) /*!< 0x00000200 */ +#define EXTI_PR_PR9 EXTI_PR_PR9_Msk /*!< Pending bit for line 9 */ +#define EXTI_PR_PR10_Pos (10U) +#define EXTI_PR_PR10_Msk (0x1UL << EXTI_PR_PR10_Pos) /*!< 0x00000400 */ +#define EXTI_PR_PR10 EXTI_PR_PR10_Msk /*!< Pending bit for line 10 */ +#define EXTI_PR_PR11_Pos (11U) +#define EXTI_PR_PR11_Msk (0x1UL << EXTI_PR_PR11_Pos) /*!< 0x00000800 */ +#define EXTI_PR_PR11 EXTI_PR_PR11_Msk /*!< Pending bit for line 11 */ +#define EXTI_PR_PR12_Pos (12U) +#define EXTI_PR_PR12_Msk (0x1UL << EXTI_PR_PR12_Pos) /*!< 0x00001000 */ +#define EXTI_PR_PR12 EXTI_PR_PR12_Msk /*!< Pending bit for line 12 */ +#define EXTI_PR_PR13_Pos (13U) +#define EXTI_PR_PR13_Msk (0x1UL << EXTI_PR_PR13_Pos) /*!< 0x00002000 */ +#define EXTI_PR_PR13 EXTI_PR_PR13_Msk /*!< Pending bit for line 13 */ +#define EXTI_PR_PR14_Pos (14U) +#define EXTI_PR_PR14_Msk (0x1UL << EXTI_PR_PR14_Pos) /*!< 0x00004000 */ +#define EXTI_PR_PR14 EXTI_PR_PR14_Msk /*!< Pending bit for line 14 */ +#define EXTI_PR_PR15_Pos (15U) +#define EXTI_PR_PR15_Msk (0x1UL << EXTI_PR_PR15_Pos) /*!< 0x00008000 */ +#define EXTI_PR_PR15 EXTI_PR_PR15_Msk /*!< Pending bit for line 15 */ +#define EXTI_PR_PR16_Pos (16U) +#define EXTI_PR_PR16_Msk (0x1UL << EXTI_PR_PR16_Pos) /*!< 0x00010000 */ +#define EXTI_PR_PR16 EXTI_PR_PR16_Msk /*!< Pending bit for line 16 */ +#define EXTI_PR_PR17_Pos (17U) +#define EXTI_PR_PR17_Msk (0x1UL << EXTI_PR_PR17_Pos) /*!< 0x00020000 */ +#define EXTI_PR_PR17 EXTI_PR_PR17_Msk /*!< Pending bit for line 17 */ +#define EXTI_PR_PR18_Pos (18U) +#define EXTI_PR_PR18_Msk (0x1UL << EXTI_PR_PR18_Pos) /*!< 0x00040000 */ +#define EXTI_PR_PR18 EXTI_PR_PR18_Msk /*!< Pending bit for line 18 */ + +/* References Defines */ +#define EXTI_PR_PIF0 EXTI_PR_PR0 +#define EXTI_PR_PIF1 EXTI_PR_PR1 +#define EXTI_PR_PIF2 EXTI_PR_PR2 +#define EXTI_PR_PIF3 EXTI_PR_PR3 +#define EXTI_PR_PIF4 EXTI_PR_PR4 +#define EXTI_PR_PIF5 EXTI_PR_PR5 +#define EXTI_PR_PIF6 EXTI_PR_PR6 +#define EXTI_PR_PIF7 EXTI_PR_PR7 +#define EXTI_PR_PIF8 EXTI_PR_PR8 +#define EXTI_PR_PIF9 EXTI_PR_PR9 +#define EXTI_PR_PIF10 EXTI_PR_PR10 +#define EXTI_PR_PIF11 EXTI_PR_PR11 +#define EXTI_PR_PIF12 EXTI_PR_PR12 +#define EXTI_PR_PIF13 EXTI_PR_PR13 +#define EXTI_PR_PIF14 EXTI_PR_PR14 +#define EXTI_PR_PIF15 EXTI_PR_PR15 +#define EXTI_PR_PIF16 EXTI_PR_PR16 +#define EXTI_PR_PIF17 EXTI_PR_PR17 +#define EXTI_PR_PIF18 EXTI_PR_PR18 + +/******************************************************************************/ +/* */ +/* DMA Controller */ +/* */ +/******************************************************************************/ + +/******************* Bit definition for DMA_ISR register ********************/ +#define DMA_ISR_GIF1_Pos (0U) +#define DMA_ISR_GIF1_Msk (0x1UL << DMA_ISR_GIF1_Pos) /*!< 0x00000001 */ +#define DMA_ISR_GIF1 DMA_ISR_GIF1_Msk /*!< Channel 1 Global interrupt flag */ +#define DMA_ISR_TCIF1_Pos (1U) +#define DMA_ISR_TCIF1_Msk (0x1UL << DMA_ISR_TCIF1_Pos) /*!< 0x00000002 */ +#define DMA_ISR_TCIF1 DMA_ISR_TCIF1_Msk /*!< Channel 1 Transfer Complete flag */ +#define DMA_ISR_HTIF1_Pos (2U) +#define DMA_ISR_HTIF1_Msk (0x1UL << DMA_ISR_HTIF1_Pos) /*!< 0x00000004 */ +#define DMA_ISR_HTIF1 DMA_ISR_HTIF1_Msk /*!< Channel 1 Half Transfer flag */ +#define DMA_ISR_TEIF1_Pos (3U) +#define DMA_ISR_TEIF1_Msk (0x1UL << DMA_ISR_TEIF1_Pos) /*!< 0x00000008 */ +#define DMA_ISR_TEIF1 DMA_ISR_TEIF1_Msk /*!< Channel 1 Transfer Error flag */ +#define DMA_ISR_GIF2_Pos (4U) +#define DMA_ISR_GIF2_Msk (0x1UL << DMA_ISR_GIF2_Pos) /*!< 0x00000010 */ +#define DMA_ISR_GIF2 DMA_ISR_GIF2_Msk /*!< Channel 2 Global interrupt flag */ +#define DMA_ISR_TCIF2_Pos (5U) +#define DMA_ISR_TCIF2_Msk (0x1UL << DMA_ISR_TCIF2_Pos) /*!< 0x00000020 */ +#define DMA_ISR_TCIF2 DMA_ISR_TCIF2_Msk /*!< Channel 2 Transfer Complete flag */ +#define DMA_ISR_HTIF2_Pos (6U) +#define DMA_ISR_HTIF2_Msk (0x1UL << DMA_ISR_HTIF2_Pos) /*!< 0x00000040 */ +#define DMA_ISR_HTIF2 DMA_ISR_HTIF2_Msk /*!< Channel 2 Half Transfer flag */ +#define DMA_ISR_TEIF2_Pos (7U) +#define DMA_ISR_TEIF2_Msk (0x1UL << DMA_ISR_TEIF2_Pos) /*!< 0x00000080 */ +#define DMA_ISR_TEIF2 DMA_ISR_TEIF2_Msk /*!< Channel 2 Transfer Error flag */ +#define DMA_ISR_GIF3_Pos (8U) +#define DMA_ISR_GIF3_Msk (0x1UL << DMA_ISR_GIF3_Pos) /*!< 0x00000100 */ +#define DMA_ISR_GIF3 DMA_ISR_GIF3_Msk /*!< Channel 3 Global interrupt flag */ +#define DMA_ISR_TCIF3_Pos (9U) +#define DMA_ISR_TCIF3_Msk (0x1UL << DMA_ISR_TCIF3_Pos) /*!< 0x00000200 */ +#define DMA_ISR_TCIF3 DMA_ISR_TCIF3_Msk /*!< Channel 3 Transfer Complete flag */ +#define DMA_ISR_HTIF3_Pos (10U) +#define DMA_ISR_HTIF3_Msk (0x1UL << DMA_ISR_HTIF3_Pos) /*!< 0x00000400 */ +#define DMA_ISR_HTIF3 DMA_ISR_HTIF3_Msk /*!< Channel 3 Half Transfer flag */ +#define DMA_ISR_TEIF3_Pos (11U) +#define DMA_ISR_TEIF3_Msk (0x1UL << DMA_ISR_TEIF3_Pos) /*!< 0x00000800 */ +#define DMA_ISR_TEIF3 DMA_ISR_TEIF3_Msk /*!< Channel 3 Transfer Error flag */ +#define DMA_ISR_GIF4_Pos (12U) +#define DMA_ISR_GIF4_Msk (0x1UL << DMA_ISR_GIF4_Pos) /*!< 0x00001000 */ +#define DMA_ISR_GIF4 DMA_ISR_GIF4_Msk /*!< Channel 4 Global interrupt flag */ +#define DMA_ISR_TCIF4_Pos (13U) +#define DMA_ISR_TCIF4_Msk (0x1UL << DMA_ISR_TCIF4_Pos) /*!< 0x00002000 */ +#define DMA_ISR_TCIF4 DMA_ISR_TCIF4_Msk /*!< Channel 4 Transfer Complete flag */ +#define DMA_ISR_HTIF4_Pos (14U) +#define DMA_ISR_HTIF4_Msk (0x1UL << DMA_ISR_HTIF4_Pos) /*!< 0x00004000 */ +#define DMA_ISR_HTIF4 DMA_ISR_HTIF4_Msk /*!< Channel 4 Half Transfer flag */ +#define DMA_ISR_TEIF4_Pos (15U) +#define DMA_ISR_TEIF4_Msk (0x1UL << DMA_ISR_TEIF4_Pos) /*!< 0x00008000 */ +#define DMA_ISR_TEIF4 DMA_ISR_TEIF4_Msk /*!< Channel 4 Transfer Error flag */ +#define DMA_ISR_GIF5_Pos (16U) +#define DMA_ISR_GIF5_Msk (0x1UL << DMA_ISR_GIF5_Pos) /*!< 0x00010000 */ +#define DMA_ISR_GIF5 DMA_ISR_GIF5_Msk /*!< Channel 5 Global interrupt flag */ +#define DMA_ISR_TCIF5_Pos (17U) +#define DMA_ISR_TCIF5_Msk (0x1UL << DMA_ISR_TCIF5_Pos) /*!< 0x00020000 */ +#define DMA_ISR_TCIF5 DMA_ISR_TCIF5_Msk /*!< Channel 5 Transfer Complete flag */ +#define DMA_ISR_HTIF5_Pos (18U) +#define DMA_ISR_HTIF5_Msk (0x1UL << DMA_ISR_HTIF5_Pos) /*!< 0x00040000 */ +#define DMA_ISR_HTIF5 DMA_ISR_HTIF5_Msk /*!< Channel 5 Half Transfer flag */ +#define DMA_ISR_TEIF5_Pos (19U) +#define DMA_ISR_TEIF5_Msk (0x1UL << DMA_ISR_TEIF5_Pos) /*!< 0x00080000 */ +#define DMA_ISR_TEIF5 DMA_ISR_TEIF5_Msk /*!< Channel 5 Transfer Error flag */ +#define DMA_ISR_GIF6_Pos (20U) +#define DMA_ISR_GIF6_Msk (0x1UL << DMA_ISR_GIF6_Pos) /*!< 0x00100000 */ +#define DMA_ISR_GIF6 DMA_ISR_GIF6_Msk /*!< Channel 6 Global interrupt flag */ +#define DMA_ISR_TCIF6_Pos (21U) +#define DMA_ISR_TCIF6_Msk (0x1UL << DMA_ISR_TCIF6_Pos) /*!< 0x00200000 */ +#define DMA_ISR_TCIF6 DMA_ISR_TCIF6_Msk /*!< Channel 6 Transfer Complete flag */ +#define DMA_ISR_HTIF6_Pos (22U) +#define DMA_ISR_HTIF6_Msk (0x1UL << DMA_ISR_HTIF6_Pos) /*!< 0x00400000 */ +#define DMA_ISR_HTIF6 DMA_ISR_HTIF6_Msk /*!< Channel 6 Half Transfer flag */ +#define DMA_ISR_TEIF6_Pos (23U) +#define DMA_ISR_TEIF6_Msk (0x1UL << DMA_ISR_TEIF6_Pos) /*!< 0x00800000 */ +#define DMA_ISR_TEIF6 DMA_ISR_TEIF6_Msk /*!< Channel 6 Transfer Error flag */ +#define DMA_ISR_GIF7_Pos (24U) +#define DMA_ISR_GIF7_Msk (0x1UL << DMA_ISR_GIF7_Pos) /*!< 0x01000000 */ +#define DMA_ISR_GIF7 DMA_ISR_GIF7_Msk /*!< Channel 7 Global interrupt flag */ +#define DMA_ISR_TCIF7_Pos (25U) +#define DMA_ISR_TCIF7_Msk (0x1UL << DMA_ISR_TCIF7_Pos) /*!< 0x02000000 */ +#define DMA_ISR_TCIF7 DMA_ISR_TCIF7_Msk /*!< Channel 7 Transfer Complete flag */ +#define DMA_ISR_HTIF7_Pos (26U) +#define DMA_ISR_HTIF7_Msk (0x1UL << DMA_ISR_HTIF7_Pos) /*!< 0x04000000 */ +#define DMA_ISR_HTIF7 DMA_ISR_HTIF7_Msk /*!< Channel 7 Half Transfer flag */ +#define DMA_ISR_TEIF7_Pos (27U) +#define DMA_ISR_TEIF7_Msk (0x1UL << DMA_ISR_TEIF7_Pos) /*!< 0x08000000 */ +#define DMA_ISR_TEIF7 DMA_ISR_TEIF7_Msk /*!< Channel 7 Transfer Error flag */ + +/******************* Bit definition for DMA_IFCR register *******************/ +#define DMA_IFCR_CGIF1_Pos (0U) +#define DMA_IFCR_CGIF1_Msk (0x1UL << DMA_IFCR_CGIF1_Pos) /*!< 0x00000001 */ +#define DMA_IFCR_CGIF1 DMA_IFCR_CGIF1_Msk /*!< Channel 1 Global interrupt clear */ +#define DMA_IFCR_CTCIF1_Pos (1U) +#define DMA_IFCR_CTCIF1_Msk (0x1UL << DMA_IFCR_CTCIF1_Pos) /*!< 0x00000002 */ +#define DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1_Msk /*!< Channel 1 Transfer Complete clear */ +#define DMA_IFCR_CHTIF1_Pos (2U) +#define DMA_IFCR_CHTIF1_Msk (0x1UL << DMA_IFCR_CHTIF1_Pos) /*!< 0x00000004 */ +#define DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1_Msk /*!< Channel 1 Half Transfer clear */ +#define DMA_IFCR_CTEIF1_Pos (3U) +#define DMA_IFCR_CTEIF1_Msk (0x1UL << DMA_IFCR_CTEIF1_Pos) /*!< 0x00000008 */ +#define DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1_Msk /*!< Channel 1 Transfer Error clear */ +#define DMA_IFCR_CGIF2_Pos (4U) +#define DMA_IFCR_CGIF2_Msk (0x1UL << DMA_IFCR_CGIF2_Pos) /*!< 0x00000010 */ +#define DMA_IFCR_CGIF2 DMA_IFCR_CGIF2_Msk /*!< Channel 2 Global interrupt clear */ +#define DMA_IFCR_CTCIF2_Pos (5U) +#define DMA_IFCR_CTCIF2_Msk (0x1UL << DMA_IFCR_CTCIF2_Pos) /*!< 0x00000020 */ +#define DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2_Msk /*!< Channel 2 Transfer Complete clear */ +#define DMA_IFCR_CHTIF2_Pos (6U) +#define DMA_IFCR_CHTIF2_Msk (0x1UL << DMA_IFCR_CHTIF2_Pos) /*!< 0x00000040 */ +#define DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2_Msk /*!< Channel 2 Half Transfer clear */ +#define DMA_IFCR_CTEIF2_Pos (7U) +#define DMA_IFCR_CTEIF2_Msk (0x1UL << DMA_IFCR_CTEIF2_Pos) /*!< 0x00000080 */ +#define DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2_Msk /*!< Channel 2 Transfer Error clear */ +#define DMA_IFCR_CGIF3_Pos (8U) +#define DMA_IFCR_CGIF3_Msk (0x1UL << DMA_IFCR_CGIF3_Pos) /*!< 0x00000100 */ +#define DMA_IFCR_CGIF3 DMA_IFCR_CGIF3_Msk /*!< Channel 3 Global interrupt clear */ +#define DMA_IFCR_CTCIF3_Pos (9U) +#define DMA_IFCR_CTCIF3_Msk (0x1UL << DMA_IFCR_CTCIF3_Pos) /*!< 0x00000200 */ +#define DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3_Msk /*!< Channel 3 Transfer Complete clear */ +#define DMA_IFCR_CHTIF3_Pos (10U) +#define DMA_IFCR_CHTIF3_Msk (0x1UL << DMA_IFCR_CHTIF3_Pos) /*!< 0x00000400 */ +#define DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3_Msk /*!< Channel 3 Half Transfer clear */ +#define DMA_IFCR_CTEIF3_Pos (11U) +#define DMA_IFCR_CTEIF3_Msk (0x1UL << DMA_IFCR_CTEIF3_Pos) /*!< 0x00000800 */ +#define DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3_Msk /*!< Channel 3 Transfer Error clear */ +#define DMA_IFCR_CGIF4_Pos (12U) +#define DMA_IFCR_CGIF4_Msk (0x1UL << DMA_IFCR_CGIF4_Pos) /*!< 0x00001000 */ +#define DMA_IFCR_CGIF4 DMA_IFCR_CGIF4_Msk /*!< Channel 4 Global interrupt clear */ +#define DMA_IFCR_CTCIF4_Pos (13U) +#define DMA_IFCR_CTCIF4_Msk (0x1UL << DMA_IFCR_CTCIF4_Pos) /*!< 0x00002000 */ +#define DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4_Msk /*!< Channel 4 Transfer Complete clear */ +#define DMA_IFCR_CHTIF4_Pos (14U) +#define DMA_IFCR_CHTIF4_Msk (0x1UL << DMA_IFCR_CHTIF4_Pos) /*!< 0x00004000 */ +#define DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4_Msk /*!< Channel 4 Half Transfer clear */ +#define DMA_IFCR_CTEIF4_Pos (15U) +#define DMA_IFCR_CTEIF4_Msk (0x1UL << DMA_IFCR_CTEIF4_Pos) /*!< 0x00008000 */ +#define DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4_Msk /*!< Channel 4 Transfer Error clear */ +#define DMA_IFCR_CGIF5_Pos (16U) +#define DMA_IFCR_CGIF5_Msk (0x1UL << DMA_IFCR_CGIF5_Pos) /*!< 0x00010000 */ +#define DMA_IFCR_CGIF5 DMA_IFCR_CGIF5_Msk /*!< Channel 5 Global interrupt clear */ +#define DMA_IFCR_CTCIF5_Pos (17U) +#define DMA_IFCR_CTCIF5_Msk (0x1UL << DMA_IFCR_CTCIF5_Pos) /*!< 0x00020000 */ +#define DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5_Msk /*!< Channel 5 Transfer Complete clear */ +#define DMA_IFCR_CHTIF5_Pos (18U) +#define DMA_IFCR_CHTIF5_Msk (0x1UL << DMA_IFCR_CHTIF5_Pos) /*!< 0x00040000 */ +#define DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5_Msk /*!< Channel 5 Half Transfer clear */ +#define DMA_IFCR_CTEIF5_Pos (19U) +#define DMA_IFCR_CTEIF5_Msk (0x1UL << DMA_IFCR_CTEIF5_Pos) /*!< 0x00080000 */ +#define DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5_Msk /*!< Channel 5 Transfer Error clear */ +#define DMA_IFCR_CGIF6_Pos (20U) +#define DMA_IFCR_CGIF6_Msk (0x1UL << DMA_IFCR_CGIF6_Pos) /*!< 0x00100000 */ +#define DMA_IFCR_CGIF6 DMA_IFCR_CGIF6_Msk /*!< Channel 6 Global interrupt clear */ +#define DMA_IFCR_CTCIF6_Pos (21U) +#define DMA_IFCR_CTCIF6_Msk (0x1UL << DMA_IFCR_CTCIF6_Pos) /*!< 0x00200000 */ +#define DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6_Msk /*!< Channel 6 Transfer Complete clear */ +#define DMA_IFCR_CHTIF6_Pos (22U) +#define DMA_IFCR_CHTIF6_Msk (0x1UL << DMA_IFCR_CHTIF6_Pos) /*!< 0x00400000 */ +#define DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6_Msk /*!< Channel 6 Half Transfer clear */ +#define DMA_IFCR_CTEIF6_Pos (23U) +#define DMA_IFCR_CTEIF6_Msk (0x1UL << DMA_IFCR_CTEIF6_Pos) /*!< 0x00800000 */ +#define DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6_Msk /*!< Channel 6 Transfer Error clear */ +#define DMA_IFCR_CGIF7_Pos (24U) +#define DMA_IFCR_CGIF7_Msk (0x1UL << DMA_IFCR_CGIF7_Pos) /*!< 0x01000000 */ +#define DMA_IFCR_CGIF7 DMA_IFCR_CGIF7_Msk /*!< Channel 7 Global interrupt clear */ +#define DMA_IFCR_CTCIF7_Pos (25U) +#define DMA_IFCR_CTCIF7_Msk (0x1UL << DMA_IFCR_CTCIF7_Pos) /*!< 0x02000000 */ +#define DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7_Msk /*!< Channel 7 Transfer Complete clear */ +#define DMA_IFCR_CHTIF7_Pos (26U) +#define DMA_IFCR_CHTIF7_Msk (0x1UL << DMA_IFCR_CHTIF7_Pos) /*!< 0x04000000 */ +#define DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7_Msk /*!< Channel 7 Half Transfer clear */ +#define DMA_IFCR_CTEIF7_Pos (27U) +#define DMA_IFCR_CTEIF7_Msk (0x1UL << DMA_IFCR_CTEIF7_Pos) /*!< 0x08000000 */ +#define DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7_Msk /*!< Channel 7 Transfer Error clear */ + +/******************* Bit definition for DMA_CCR register *******************/ +#define DMA_CCR_EN_Pos (0U) +#define DMA_CCR_EN_Msk (0x1UL << DMA_CCR_EN_Pos) /*!< 0x00000001 */ +#define DMA_CCR_EN DMA_CCR_EN_Msk /*!< Channel enable */ +#define DMA_CCR_TCIE_Pos (1U) +#define DMA_CCR_TCIE_Msk (0x1UL << DMA_CCR_TCIE_Pos) /*!< 0x00000002 */ +#define DMA_CCR_TCIE DMA_CCR_TCIE_Msk /*!< Transfer complete interrupt enable */ +#define DMA_CCR_HTIE_Pos (2U) +#define DMA_CCR_HTIE_Msk (0x1UL << DMA_CCR_HTIE_Pos) /*!< 0x00000004 */ +#define DMA_CCR_HTIE DMA_CCR_HTIE_Msk /*!< Half Transfer interrupt enable */ +#define DMA_CCR_TEIE_Pos (3U) +#define DMA_CCR_TEIE_Msk (0x1UL << DMA_CCR_TEIE_Pos) /*!< 0x00000008 */ +#define DMA_CCR_TEIE DMA_CCR_TEIE_Msk /*!< Transfer error interrupt enable */ +#define DMA_CCR_DIR_Pos (4U) +#define DMA_CCR_DIR_Msk (0x1UL << DMA_CCR_DIR_Pos) /*!< 0x00000010 */ +#define DMA_CCR_DIR DMA_CCR_DIR_Msk /*!< Data transfer direction */ +#define DMA_CCR_CIRC_Pos (5U) +#define DMA_CCR_CIRC_Msk (0x1UL << DMA_CCR_CIRC_Pos) /*!< 0x00000020 */ +#define DMA_CCR_CIRC DMA_CCR_CIRC_Msk /*!< Circular mode */ +#define DMA_CCR_PINC_Pos (6U) +#define DMA_CCR_PINC_Msk (0x1UL << DMA_CCR_PINC_Pos) /*!< 0x00000040 */ +#define DMA_CCR_PINC DMA_CCR_PINC_Msk /*!< Peripheral increment mode */ +#define DMA_CCR_MINC_Pos (7U) +#define DMA_CCR_MINC_Msk (0x1UL << DMA_CCR_MINC_Pos) /*!< 0x00000080 */ +#define DMA_CCR_MINC DMA_CCR_MINC_Msk /*!< Memory increment mode */ + +#define DMA_CCR_PSIZE_Pos (8U) +#define DMA_CCR_PSIZE_Msk (0x3UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000300 */ +#define DMA_CCR_PSIZE DMA_CCR_PSIZE_Msk /*!< PSIZE[1:0] bits (Peripheral size) */ +#define DMA_CCR_PSIZE_0 (0x1UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000100 */ +#define DMA_CCR_PSIZE_1 (0x2UL << DMA_CCR_PSIZE_Pos) /*!< 0x00000200 */ + +#define DMA_CCR_MSIZE_Pos (10U) +#define DMA_CCR_MSIZE_Msk (0x3UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000C00 */ +#define DMA_CCR_MSIZE DMA_CCR_MSIZE_Msk /*!< MSIZE[1:0] bits (Memory size) */ +#define DMA_CCR_MSIZE_0 (0x1UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000400 */ +#define DMA_CCR_MSIZE_1 (0x2UL << DMA_CCR_MSIZE_Pos) /*!< 0x00000800 */ + +#define DMA_CCR_PL_Pos (12U) +#define DMA_CCR_PL_Msk (0x3UL << DMA_CCR_PL_Pos) /*!< 0x00003000 */ +#define DMA_CCR_PL DMA_CCR_PL_Msk /*!< PL[1:0] bits(Channel Priority level) */ +#define DMA_CCR_PL_0 (0x1UL << DMA_CCR_PL_Pos) /*!< 0x00001000 */ +#define DMA_CCR_PL_1 (0x2UL << DMA_CCR_PL_Pos) /*!< 0x00002000 */ + +#define DMA_CCR_MEM2MEM_Pos (14U) +#define DMA_CCR_MEM2MEM_Msk (0x1UL << DMA_CCR_MEM2MEM_Pos) /*!< 0x00004000 */ +#define DMA_CCR_MEM2MEM DMA_CCR_MEM2MEM_Msk /*!< Memory to memory mode */ + +/****************** Bit definition for DMA_CNDTR register ******************/ +#define DMA_CNDTR_NDT_Pos (0U) +#define DMA_CNDTR_NDT_Msk (0xFFFFUL << DMA_CNDTR_NDT_Pos) /*!< 0x0000FFFF */ +#define DMA_CNDTR_NDT DMA_CNDTR_NDT_Msk /*!< Number of data to Transfer */ + +/****************** Bit definition for DMA_CPAR register *******************/ +#define DMA_CPAR_PA_Pos (0U) +#define DMA_CPAR_PA_Msk (0xFFFFFFFFUL << DMA_CPAR_PA_Pos) /*!< 0xFFFFFFFF */ +#define DMA_CPAR_PA DMA_CPAR_PA_Msk /*!< Peripheral Address */ + +/****************** Bit definition for DMA_CMAR register *******************/ +#define DMA_CMAR_MA_Pos (0U) +#define DMA_CMAR_MA_Msk (0xFFFFFFFFUL << DMA_CMAR_MA_Pos) /*!< 0xFFFFFFFF */ +#define DMA_CMAR_MA DMA_CMAR_MA_Msk /*!< Memory Address */ + +/******************************************************************************/ +/* */ +/* Analog to Digital Converter (ADC) */ +/* */ +/******************************************************************************/ + +/* + * @brief Specific device feature definitions (not present on all devices in the STM32F1 family) + */ +#define ADC_MULTIMODE_SUPPORT /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */ + +/******************** Bit definition for ADC_SR register ********************/ +#define ADC_SR_AWD_Pos (0U) +#define ADC_SR_AWD_Msk (0x1UL << ADC_SR_AWD_Pos) /*!< 0x00000001 */ +#define ADC_SR_AWD ADC_SR_AWD_Msk /*!< ADC analog watchdog 1 flag */ +#define ADC_SR_EOS_Pos (1U) +#define ADC_SR_EOS_Msk (0x1UL << ADC_SR_EOS_Pos) /*!< 0x00000002 */ +#define ADC_SR_EOS ADC_SR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */ +#define ADC_SR_JEOS_Pos (2U) +#define ADC_SR_JEOS_Msk (0x1UL << ADC_SR_JEOS_Pos) /*!< 0x00000004 */ +#define ADC_SR_JEOS ADC_SR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */ +#define ADC_SR_JSTRT_Pos (3U) +#define ADC_SR_JSTRT_Msk (0x1UL << ADC_SR_JSTRT_Pos) /*!< 0x00000008 */ +#define ADC_SR_JSTRT ADC_SR_JSTRT_Msk /*!< ADC group injected conversion start flag */ +#define ADC_SR_STRT_Pos (4U) +#define ADC_SR_STRT_Msk (0x1UL << ADC_SR_STRT_Pos) /*!< 0x00000010 */ +#define ADC_SR_STRT ADC_SR_STRT_Msk /*!< ADC group regular conversion start flag */ + +/* Legacy defines */ +#define ADC_SR_EOC (ADC_SR_EOS) +#define ADC_SR_JEOC (ADC_SR_JEOS) + +/******************* Bit definition for ADC_CR1 register ********************/ +#define ADC_CR1_AWDCH_Pos (0U) +#define ADC_CR1_AWDCH_Msk (0x1FUL << ADC_CR1_AWDCH_Pos) /*!< 0x0000001F */ +#define ADC_CR1_AWDCH ADC_CR1_AWDCH_Msk /*!< ADC analog watchdog 1 monitored channel selection */ +#define ADC_CR1_AWDCH_0 (0x01UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000001 */ +#define ADC_CR1_AWDCH_1 (0x02UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000002 */ +#define ADC_CR1_AWDCH_2 (0x04UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000004 */ +#define ADC_CR1_AWDCH_3 (0x08UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000008 */ +#define ADC_CR1_AWDCH_4 (0x10UL << ADC_CR1_AWDCH_Pos) /*!< 0x00000010 */ + +#define ADC_CR1_EOSIE_Pos (5U) +#define ADC_CR1_EOSIE_Msk (0x1UL << ADC_CR1_EOSIE_Pos) /*!< 0x00000020 */ +#define ADC_CR1_EOSIE ADC_CR1_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */ +#define ADC_CR1_AWDIE_Pos (6U) +#define ADC_CR1_AWDIE_Msk (0x1UL << ADC_CR1_AWDIE_Pos) /*!< 0x00000040 */ +#define ADC_CR1_AWDIE ADC_CR1_AWDIE_Msk /*!< ADC analog watchdog 1 interrupt */ +#define ADC_CR1_JEOSIE_Pos (7U) +#define ADC_CR1_JEOSIE_Msk (0x1UL << ADC_CR1_JEOSIE_Pos) /*!< 0x00000080 */ +#define ADC_CR1_JEOSIE ADC_CR1_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */ +#define ADC_CR1_SCAN_Pos (8U) +#define ADC_CR1_SCAN_Msk (0x1UL << ADC_CR1_SCAN_Pos) /*!< 0x00000100 */ +#define ADC_CR1_SCAN ADC_CR1_SCAN_Msk /*!< ADC scan mode */ +#define ADC_CR1_AWDSGL_Pos (9U) +#define ADC_CR1_AWDSGL_Msk (0x1UL << ADC_CR1_AWDSGL_Pos) /*!< 0x00000200 */ +#define ADC_CR1_AWDSGL ADC_CR1_AWDSGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */ +#define ADC_CR1_JAUTO_Pos (10U) +#define ADC_CR1_JAUTO_Msk (0x1UL << ADC_CR1_JAUTO_Pos) /*!< 0x00000400 */ +#define ADC_CR1_JAUTO ADC_CR1_JAUTO_Msk /*!< ADC group injected automatic trigger mode */ +#define ADC_CR1_DISCEN_Pos (11U) +#define ADC_CR1_DISCEN_Msk (0x1UL << ADC_CR1_DISCEN_Pos) /*!< 0x00000800 */ +#define ADC_CR1_DISCEN ADC_CR1_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */ +#define ADC_CR1_JDISCEN_Pos (12U) +#define ADC_CR1_JDISCEN_Msk (0x1UL << ADC_CR1_JDISCEN_Pos) /*!< 0x00001000 */ +#define ADC_CR1_JDISCEN ADC_CR1_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */ + +#define ADC_CR1_DISCNUM_Pos (13U) +#define ADC_CR1_DISCNUM_Msk (0x7UL << ADC_CR1_DISCNUM_Pos) /*!< 0x0000E000 */ +#define ADC_CR1_DISCNUM ADC_CR1_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */ +#define ADC_CR1_DISCNUM_0 (0x1UL << ADC_CR1_DISCNUM_Pos) /*!< 0x00002000 */ +#define ADC_CR1_DISCNUM_1 (0x2UL << ADC_CR1_DISCNUM_Pos) /*!< 0x00004000 */ +#define ADC_CR1_DISCNUM_2 (0x4UL << ADC_CR1_DISCNUM_Pos) /*!< 0x00008000 */ + +#define ADC_CR1_DUALMOD_Pos (16U) +#define ADC_CR1_DUALMOD_Msk (0xFUL << ADC_CR1_DUALMOD_Pos) /*!< 0x000F0000 */ +#define ADC_CR1_DUALMOD ADC_CR1_DUALMOD_Msk /*!< ADC multimode mode selection */ +#define ADC_CR1_DUALMOD_0 (0x1UL << ADC_CR1_DUALMOD_Pos) /*!< 0x00010000 */ +#define ADC_CR1_DUALMOD_1 (0x2UL << ADC_CR1_DUALMOD_Pos) /*!< 0x00020000 */ +#define ADC_CR1_DUALMOD_2 (0x4UL << ADC_CR1_DUALMOD_Pos) /*!< 0x00040000 */ +#define ADC_CR1_DUALMOD_3 (0x8UL << ADC_CR1_DUALMOD_Pos) /*!< 0x00080000 */ + +#define ADC_CR1_JAWDEN_Pos (22U) +#define ADC_CR1_JAWDEN_Msk (0x1UL << ADC_CR1_JAWDEN_Pos) /*!< 0x00400000 */ +#define ADC_CR1_JAWDEN ADC_CR1_JAWDEN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */ +#define ADC_CR1_AWDEN_Pos (23U) +#define ADC_CR1_AWDEN_Msk (0x1UL << ADC_CR1_AWDEN_Pos) /*!< 0x00800000 */ +#define ADC_CR1_AWDEN ADC_CR1_AWDEN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */ + +/* Legacy defines */ +#define ADC_CR1_EOCIE (ADC_CR1_EOSIE) +#define ADC_CR1_JEOCIE (ADC_CR1_JEOSIE) + +/******************* Bit definition for ADC_CR2 register ********************/ +#define ADC_CR2_ADON_Pos (0U) +#define ADC_CR2_ADON_Msk (0x1UL << ADC_CR2_ADON_Pos) /*!< 0x00000001 */ +#define ADC_CR2_ADON ADC_CR2_ADON_Msk /*!< ADC enable */ +#define ADC_CR2_CONT_Pos (1U) +#define ADC_CR2_CONT_Msk (0x1UL << ADC_CR2_CONT_Pos) /*!< 0x00000002 */ +#define ADC_CR2_CONT ADC_CR2_CONT_Msk /*!< ADC group regular continuous conversion mode */ +#define ADC_CR2_CAL_Pos (2U) +#define ADC_CR2_CAL_Msk (0x1UL << ADC_CR2_CAL_Pos) /*!< 0x00000004 */ +#define ADC_CR2_CAL ADC_CR2_CAL_Msk /*!< ADC calibration start */ +#define ADC_CR2_RSTCAL_Pos (3U) +#define ADC_CR2_RSTCAL_Msk (0x1UL << ADC_CR2_RSTCAL_Pos) /*!< 0x00000008 */ +#define ADC_CR2_RSTCAL ADC_CR2_RSTCAL_Msk /*!< ADC calibration reset */ +#define ADC_CR2_DMA_Pos (8U) +#define ADC_CR2_DMA_Msk (0x1UL << ADC_CR2_DMA_Pos) /*!< 0x00000100 */ +#define ADC_CR2_DMA ADC_CR2_DMA_Msk /*!< ADC DMA transfer enable */ +#define ADC_CR2_ALIGN_Pos (11U) +#define ADC_CR2_ALIGN_Msk (0x1UL << ADC_CR2_ALIGN_Pos) /*!< 0x00000800 */ +#define ADC_CR2_ALIGN ADC_CR2_ALIGN_Msk /*!< ADC data alignment */ + +#define ADC_CR2_JEXTSEL_Pos (12U) +#define ADC_CR2_JEXTSEL_Msk (0x7UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00007000 */ +#define ADC_CR2_JEXTSEL ADC_CR2_JEXTSEL_Msk /*!< ADC group injected external trigger source */ +#define ADC_CR2_JEXTSEL_0 (0x1UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00001000 */ +#define ADC_CR2_JEXTSEL_1 (0x2UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00002000 */ +#define ADC_CR2_JEXTSEL_2 (0x4UL << ADC_CR2_JEXTSEL_Pos) /*!< 0x00004000 */ + +#define ADC_CR2_JEXTTRIG_Pos (15U) +#define ADC_CR2_JEXTTRIG_Msk (0x1UL << ADC_CR2_JEXTTRIG_Pos) /*!< 0x00008000 */ +#define ADC_CR2_JEXTTRIG ADC_CR2_JEXTTRIG_Msk /*!< ADC group injected external trigger enable */ + +#define ADC_CR2_EXTSEL_Pos (17U) +#define ADC_CR2_EXTSEL_Msk (0x7UL << ADC_CR2_EXTSEL_Pos) /*!< 0x000E0000 */ +#define ADC_CR2_EXTSEL ADC_CR2_EXTSEL_Msk /*!< ADC group regular external trigger source */ +#define ADC_CR2_EXTSEL_0 (0x1UL << ADC_CR2_EXTSEL_Pos) /*!< 0x00020000 */ +#define ADC_CR2_EXTSEL_1 (0x2UL << ADC_CR2_EXTSEL_Pos) /*!< 0x00040000 */ +#define ADC_CR2_EXTSEL_2 (0x4UL << ADC_CR2_EXTSEL_Pos) /*!< 0x00080000 */ + +#define ADC_CR2_EXTTRIG_Pos (20U) +#define ADC_CR2_EXTTRIG_Msk (0x1UL << ADC_CR2_EXTTRIG_Pos) /*!< 0x00100000 */ +#define ADC_CR2_EXTTRIG ADC_CR2_EXTTRIG_Msk /*!< ADC group regular external trigger enable */ +#define ADC_CR2_JSWSTART_Pos (21U) +#define ADC_CR2_JSWSTART_Msk (0x1UL << ADC_CR2_JSWSTART_Pos) /*!< 0x00200000 */ +#define ADC_CR2_JSWSTART ADC_CR2_JSWSTART_Msk /*!< ADC group injected conversion start */ +#define ADC_CR2_SWSTART_Pos (22U) +#define ADC_CR2_SWSTART_Msk (0x1UL << ADC_CR2_SWSTART_Pos) /*!< 0x00400000 */ +#define ADC_CR2_SWSTART ADC_CR2_SWSTART_Msk /*!< ADC group regular conversion start */ +#define ADC_CR2_TSVREFE_Pos (23U) +#define ADC_CR2_TSVREFE_Msk (0x1UL << ADC_CR2_TSVREFE_Pos) /*!< 0x00800000 */ +#define ADC_CR2_TSVREFE ADC_CR2_TSVREFE_Msk /*!< ADC internal path to VrefInt and temperature sensor enable */ + +/****************** Bit definition for ADC_SMPR1 register *******************/ +#define ADC_SMPR1_SMP10_Pos (0U) +#define ADC_SMPR1_SMP10_Msk (0x7UL << ADC_SMPR1_SMP10_Pos) /*!< 0x00000007 */ +#define ADC_SMPR1_SMP10 ADC_SMPR1_SMP10_Msk /*!< ADC channel 10 sampling time selection */ +#define ADC_SMPR1_SMP10_0 (0x1UL << ADC_SMPR1_SMP10_Pos) /*!< 0x00000001 */ +#define ADC_SMPR1_SMP10_1 (0x2UL << ADC_SMPR1_SMP10_Pos) /*!< 0x00000002 */ +#define ADC_SMPR1_SMP10_2 (0x4UL << ADC_SMPR1_SMP10_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR1_SMP11_Pos (3U) +#define ADC_SMPR1_SMP11_Msk (0x7UL << ADC_SMPR1_SMP11_Pos) /*!< 0x00000038 */ +#define ADC_SMPR1_SMP11 ADC_SMPR1_SMP11_Msk /*!< ADC channel 11 sampling time selection */ +#define ADC_SMPR1_SMP11_0 (0x1UL << ADC_SMPR1_SMP11_Pos) /*!< 0x00000008 */ +#define ADC_SMPR1_SMP11_1 (0x2UL << ADC_SMPR1_SMP11_Pos) /*!< 0x00000010 */ +#define ADC_SMPR1_SMP11_2 (0x4UL << ADC_SMPR1_SMP11_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR1_SMP12_Pos (6U) +#define ADC_SMPR1_SMP12_Msk (0x7UL << ADC_SMPR1_SMP12_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR1_SMP12 ADC_SMPR1_SMP12_Msk /*!< ADC channel 12 sampling time selection */ +#define ADC_SMPR1_SMP12_0 (0x1UL << ADC_SMPR1_SMP12_Pos) /*!< 0x00000040 */ +#define ADC_SMPR1_SMP12_1 (0x2UL << ADC_SMPR1_SMP12_Pos) /*!< 0x00000080 */ +#define ADC_SMPR1_SMP12_2 (0x4UL << ADC_SMPR1_SMP12_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR1_SMP13_Pos (9U) +#define ADC_SMPR1_SMP13_Msk (0x7UL << ADC_SMPR1_SMP13_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR1_SMP13 ADC_SMPR1_SMP13_Msk /*!< ADC channel 13 sampling time selection */ +#define ADC_SMPR1_SMP13_0 (0x1UL << ADC_SMPR1_SMP13_Pos) /*!< 0x00000200 */ +#define ADC_SMPR1_SMP13_1 (0x2UL << ADC_SMPR1_SMP13_Pos) /*!< 0x00000400 */ +#define ADC_SMPR1_SMP13_2 (0x4UL << ADC_SMPR1_SMP13_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR1_SMP14_Pos (12U) +#define ADC_SMPR1_SMP14_Msk (0x7UL << ADC_SMPR1_SMP14_Pos) /*!< 0x00007000 */ +#define ADC_SMPR1_SMP14 ADC_SMPR1_SMP14_Msk /*!< ADC channel 14 sampling time selection */ +#define ADC_SMPR1_SMP14_0 (0x1UL << ADC_SMPR1_SMP14_Pos) /*!< 0x00001000 */ +#define ADC_SMPR1_SMP14_1 (0x2UL << ADC_SMPR1_SMP14_Pos) /*!< 0x00002000 */ +#define ADC_SMPR1_SMP14_2 (0x4UL << ADC_SMPR1_SMP14_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR1_SMP15_Pos (15U) +#define ADC_SMPR1_SMP15_Msk (0x7UL << ADC_SMPR1_SMP15_Pos) /*!< 0x00038000 */ +#define ADC_SMPR1_SMP15 ADC_SMPR1_SMP15_Msk /*!< ADC channel 15 sampling time selection */ +#define ADC_SMPR1_SMP15_0 (0x1UL << ADC_SMPR1_SMP15_Pos) /*!< 0x00008000 */ +#define ADC_SMPR1_SMP15_1 (0x2UL << ADC_SMPR1_SMP15_Pos) /*!< 0x00010000 */ +#define ADC_SMPR1_SMP15_2 (0x4UL << ADC_SMPR1_SMP15_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR1_SMP16_Pos (18U) +#define ADC_SMPR1_SMP16_Msk (0x7UL << ADC_SMPR1_SMP16_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR1_SMP16 ADC_SMPR1_SMP16_Msk /*!< ADC channel 16 sampling time selection */ +#define ADC_SMPR1_SMP16_0 (0x1UL << ADC_SMPR1_SMP16_Pos) /*!< 0x00040000 */ +#define ADC_SMPR1_SMP16_1 (0x2UL << ADC_SMPR1_SMP16_Pos) /*!< 0x00080000 */ +#define ADC_SMPR1_SMP16_2 (0x4UL << ADC_SMPR1_SMP16_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR1_SMP17_Pos (21U) +#define ADC_SMPR1_SMP17_Msk (0x7UL << ADC_SMPR1_SMP17_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR1_SMP17 ADC_SMPR1_SMP17_Msk /*!< ADC channel 17 sampling time selection */ +#define ADC_SMPR1_SMP17_0 (0x1UL << ADC_SMPR1_SMP17_Pos) /*!< 0x00200000 */ +#define ADC_SMPR1_SMP17_1 (0x2UL << ADC_SMPR1_SMP17_Pos) /*!< 0x00400000 */ +#define ADC_SMPR1_SMP17_2 (0x4UL << ADC_SMPR1_SMP17_Pos) /*!< 0x00800000 */ + +/****************** Bit definition for ADC_SMPR2 register *******************/ +#define ADC_SMPR2_SMP0_Pos (0U) +#define ADC_SMPR2_SMP0_Msk (0x7UL << ADC_SMPR2_SMP0_Pos) /*!< 0x00000007 */ +#define ADC_SMPR2_SMP0 ADC_SMPR2_SMP0_Msk /*!< ADC channel 0 sampling time selection */ +#define ADC_SMPR2_SMP0_0 (0x1UL << ADC_SMPR2_SMP0_Pos) /*!< 0x00000001 */ +#define ADC_SMPR2_SMP0_1 (0x2UL << ADC_SMPR2_SMP0_Pos) /*!< 0x00000002 */ +#define ADC_SMPR2_SMP0_2 (0x4UL << ADC_SMPR2_SMP0_Pos) /*!< 0x00000004 */ + +#define ADC_SMPR2_SMP1_Pos (3U) +#define ADC_SMPR2_SMP1_Msk (0x7UL << ADC_SMPR2_SMP1_Pos) /*!< 0x00000038 */ +#define ADC_SMPR2_SMP1 ADC_SMPR2_SMP1_Msk /*!< ADC channel 1 sampling time selection */ +#define ADC_SMPR2_SMP1_0 (0x1UL << ADC_SMPR2_SMP1_Pos) /*!< 0x00000008 */ +#define ADC_SMPR2_SMP1_1 (0x2UL << ADC_SMPR2_SMP1_Pos) /*!< 0x00000010 */ +#define ADC_SMPR2_SMP1_2 (0x4UL << ADC_SMPR2_SMP1_Pos) /*!< 0x00000020 */ + +#define ADC_SMPR2_SMP2_Pos (6U) +#define ADC_SMPR2_SMP2_Msk (0x7UL << ADC_SMPR2_SMP2_Pos) /*!< 0x000001C0 */ +#define ADC_SMPR2_SMP2 ADC_SMPR2_SMP2_Msk /*!< ADC channel 2 sampling time selection */ +#define ADC_SMPR2_SMP2_0 (0x1UL << ADC_SMPR2_SMP2_Pos) /*!< 0x00000040 */ +#define ADC_SMPR2_SMP2_1 (0x2UL << ADC_SMPR2_SMP2_Pos) /*!< 0x00000080 */ +#define ADC_SMPR2_SMP2_2 (0x4UL << ADC_SMPR2_SMP2_Pos) /*!< 0x00000100 */ + +#define ADC_SMPR2_SMP3_Pos (9U) +#define ADC_SMPR2_SMP3_Msk (0x7UL << ADC_SMPR2_SMP3_Pos) /*!< 0x00000E00 */ +#define ADC_SMPR2_SMP3 ADC_SMPR2_SMP3_Msk /*!< ADC channel 3 sampling time selection */ +#define ADC_SMPR2_SMP3_0 (0x1UL << ADC_SMPR2_SMP3_Pos) /*!< 0x00000200 */ +#define ADC_SMPR2_SMP3_1 (0x2UL << ADC_SMPR2_SMP3_Pos) /*!< 0x00000400 */ +#define ADC_SMPR2_SMP3_2 (0x4UL << ADC_SMPR2_SMP3_Pos) /*!< 0x00000800 */ + +#define ADC_SMPR2_SMP4_Pos (12U) +#define ADC_SMPR2_SMP4_Msk (0x7UL << ADC_SMPR2_SMP4_Pos) /*!< 0x00007000 */ +#define ADC_SMPR2_SMP4 ADC_SMPR2_SMP4_Msk /*!< ADC channel 4 sampling time selection */ +#define ADC_SMPR2_SMP4_0 (0x1UL << ADC_SMPR2_SMP4_Pos) /*!< 0x00001000 */ +#define ADC_SMPR2_SMP4_1 (0x2UL << ADC_SMPR2_SMP4_Pos) /*!< 0x00002000 */ +#define ADC_SMPR2_SMP4_2 (0x4UL << ADC_SMPR2_SMP4_Pos) /*!< 0x00004000 */ + +#define ADC_SMPR2_SMP5_Pos (15U) +#define ADC_SMPR2_SMP5_Msk (0x7UL << ADC_SMPR2_SMP5_Pos) /*!< 0x00038000 */ +#define ADC_SMPR2_SMP5 ADC_SMPR2_SMP5_Msk /*!< ADC channel 5 sampling time selection */ +#define ADC_SMPR2_SMP5_0 (0x1UL << ADC_SMPR2_SMP5_Pos) /*!< 0x00008000 */ +#define ADC_SMPR2_SMP5_1 (0x2UL << ADC_SMPR2_SMP5_Pos) /*!< 0x00010000 */ +#define ADC_SMPR2_SMP5_2 (0x4UL << ADC_SMPR2_SMP5_Pos) /*!< 0x00020000 */ + +#define ADC_SMPR2_SMP6_Pos (18U) +#define ADC_SMPR2_SMP6_Msk (0x7UL << ADC_SMPR2_SMP6_Pos) /*!< 0x001C0000 */ +#define ADC_SMPR2_SMP6 ADC_SMPR2_SMP6_Msk /*!< ADC channel 6 sampling time selection */ +#define ADC_SMPR2_SMP6_0 (0x1UL << ADC_SMPR2_SMP6_Pos) /*!< 0x00040000 */ +#define ADC_SMPR2_SMP6_1 (0x2UL << ADC_SMPR2_SMP6_Pos) /*!< 0x00080000 */ +#define ADC_SMPR2_SMP6_2 (0x4UL << ADC_SMPR2_SMP6_Pos) /*!< 0x00100000 */ + +#define ADC_SMPR2_SMP7_Pos (21U) +#define ADC_SMPR2_SMP7_Msk (0x7UL << ADC_SMPR2_SMP7_Pos) /*!< 0x00E00000 */ +#define ADC_SMPR2_SMP7 ADC_SMPR2_SMP7_Msk /*!< ADC channel 7 sampling time selection */ +#define ADC_SMPR2_SMP7_0 (0x1UL << ADC_SMPR2_SMP7_Pos) /*!< 0x00200000 */ +#define ADC_SMPR2_SMP7_1 (0x2UL << ADC_SMPR2_SMP7_Pos) /*!< 0x00400000 */ +#define ADC_SMPR2_SMP7_2 (0x4UL << ADC_SMPR2_SMP7_Pos) /*!< 0x00800000 */ + +#define ADC_SMPR2_SMP8_Pos (24U) +#define ADC_SMPR2_SMP8_Msk (0x7UL << ADC_SMPR2_SMP8_Pos) /*!< 0x07000000 */ +#define ADC_SMPR2_SMP8 ADC_SMPR2_SMP8_Msk /*!< ADC channel 8 sampling time selection */ +#define ADC_SMPR2_SMP8_0 (0x1UL << ADC_SMPR2_SMP8_Pos) /*!< 0x01000000 */ +#define ADC_SMPR2_SMP8_1 (0x2UL << ADC_SMPR2_SMP8_Pos) /*!< 0x02000000 */ +#define ADC_SMPR2_SMP8_2 (0x4UL << ADC_SMPR2_SMP8_Pos) /*!< 0x04000000 */ + +#define ADC_SMPR2_SMP9_Pos (27U) +#define ADC_SMPR2_SMP9_Msk (0x7UL << ADC_SMPR2_SMP9_Pos) /*!< 0x38000000 */ +#define ADC_SMPR2_SMP9 ADC_SMPR2_SMP9_Msk /*!< ADC channel 9 sampling time selection */ +#define ADC_SMPR2_SMP9_0 (0x1UL << ADC_SMPR2_SMP9_Pos) /*!< 0x08000000 */ +#define ADC_SMPR2_SMP9_1 (0x2UL << ADC_SMPR2_SMP9_Pos) /*!< 0x10000000 */ +#define ADC_SMPR2_SMP9_2 (0x4UL << ADC_SMPR2_SMP9_Pos) /*!< 0x20000000 */ + +/****************** Bit definition for ADC_JOFR1 register *******************/ +#define ADC_JOFR1_JOFFSET1_Pos (0U) +#define ADC_JOFR1_JOFFSET1_Msk (0xFFFUL << ADC_JOFR1_JOFFSET1_Pos) /*!< 0x00000FFF */ +#define ADC_JOFR1_JOFFSET1 ADC_JOFR1_JOFFSET1_Msk /*!< ADC group injected sequencer rank 1 offset value */ + +/****************** Bit definition for ADC_JOFR2 register *******************/ +#define ADC_JOFR2_JOFFSET2_Pos (0U) +#define ADC_JOFR2_JOFFSET2_Msk (0xFFFUL << ADC_JOFR2_JOFFSET2_Pos) /*!< 0x00000FFF */ +#define ADC_JOFR2_JOFFSET2 ADC_JOFR2_JOFFSET2_Msk /*!< ADC group injected sequencer rank 2 offset value */ + +/****************** Bit definition for ADC_JOFR3 register *******************/ +#define ADC_JOFR3_JOFFSET3_Pos (0U) +#define ADC_JOFR3_JOFFSET3_Msk (0xFFFUL << ADC_JOFR3_JOFFSET3_Pos) /*!< 0x00000FFF */ +#define ADC_JOFR3_JOFFSET3 ADC_JOFR3_JOFFSET3_Msk /*!< ADC group injected sequencer rank 3 offset value */ + +/****************** Bit definition for ADC_JOFR4 register *******************/ +#define ADC_JOFR4_JOFFSET4_Pos (0U) +#define ADC_JOFR4_JOFFSET4_Msk (0xFFFUL << ADC_JOFR4_JOFFSET4_Pos) /*!< 0x00000FFF */ +#define ADC_JOFR4_JOFFSET4 ADC_JOFR4_JOFFSET4_Msk /*!< ADC group injected sequencer rank 4 offset value */ + +/******************* Bit definition for ADC_HTR register ********************/ +#define ADC_HTR_HT_Pos (0U) +#define ADC_HTR_HT_Msk (0xFFFUL << ADC_HTR_HT_Pos) /*!< 0x00000FFF */ +#define ADC_HTR_HT ADC_HTR_HT_Msk /*!< ADC analog watchdog 1 threshold high */ + +/******************* Bit definition for ADC_LTR register ********************/ +#define ADC_LTR_LT_Pos (0U) +#define ADC_LTR_LT_Msk (0xFFFUL << ADC_LTR_LT_Pos) /*!< 0x00000FFF */ +#define ADC_LTR_LT ADC_LTR_LT_Msk /*!< ADC analog watchdog 1 threshold low */ + +/******************* Bit definition for ADC_SQR1 register *******************/ +#define ADC_SQR1_SQ13_Pos (0U) +#define ADC_SQR1_SQ13_Msk (0x1FUL << ADC_SQR1_SQ13_Pos) /*!< 0x0000001F */ +#define ADC_SQR1_SQ13 ADC_SQR1_SQ13_Msk /*!< ADC group regular sequencer rank 13 */ +#define ADC_SQR1_SQ13_0 (0x01UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000001 */ +#define ADC_SQR1_SQ13_1 (0x02UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000002 */ +#define ADC_SQR1_SQ13_2 (0x04UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000004 */ +#define ADC_SQR1_SQ13_3 (0x08UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000008 */ +#define ADC_SQR1_SQ13_4 (0x10UL << ADC_SQR1_SQ13_Pos) /*!< 0x00000010 */ + +#define ADC_SQR1_SQ14_Pos (5U) +#define ADC_SQR1_SQ14_Msk (0x1FUL << ADC_SQR1_SQ14_Pos) /*!< 0x000003E0 */ +#define ADC_SQR1_SQ14 ADC_SQR1_SQ14_Msk /*!< ADC group regular sequencer rank 14 */ +#define ADC_SQR1_SQ14_0 (0x01UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000020 */ +#define ADC_SQR1_SQ14_1 (0x02UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000040 */ +#define ADC_SQR1_SQ14_2 (0x04UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000080 */ +#define ADC_SQR1_SQ14_3 (0x08UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000100 */ +#define ADC_SQR1_SQ14_4 (0x10UL << ADC_SQR1_SQ14_Pos) /*!< 0x00000200 */ + +#define ADC_SQR1_SQ15_Pos (10U) +#define ADC_SQR1_SQ15_Msk (0x1FUL << ADC_SQR1_SQ15_Pos) /*!< 0x00007C00 */ +#define ADC_SQR1_SQ15 ADC_SQR1_SQ15_Msk /*!< ADC group regular sequencer rank 15 */ +#define ADC_SQR1_SQ15_0 (0x01UL << ADC_SQR1_SQ15_Pos) /*!< 0x00000400 */ +#define ADC_SQR1_SQ15_1 (0x02UL << ADC_SQR1_SQ15_Pos) /*!< 0x00000800 */ +#define ADC_SQR1_SQ15_2 (0x04UL << ADC_SQR1_SQ15_Pos) /*!< 0x00001000 */ +#define ADC_SQR1_SQ15_3 (0x08UL << ADC_SQR1_SQ15_Pos) /*!< 0x00002000 */ +#define ADC_SQR1_SQ15_4 (0x10UL << ADC_SQR1_SQ15_Pos) /*!< 0x00004000 */ + +#define ADC_SQR1_SQ16_Pos (15U) +#define ADC_SQR1_SQ16_Msk (0x1FUL << ADC_SQR1_SQ16_Pos) /*!< 0x000F8000 */ +#define ADC_SQR1_SQ16 ADC_SQR1_SQ16_Msk /*!< ADC group regular sequencer rank 16 */ +#define ADC_SQR1_SQ16_0 (0x01UL << ADC_SQR1_SQ16_Pos) /*!< 0x00008000 */ +#define ADC_SQR1_SQ16_1 (0x02UL << ADC_SQR1_SQ16_Pos) /*!< 0x00010000 */ +#define ADC_SQR1_SQ16_2 (0x04UL << ADC_SQR1_SQ16_Pos) /*!< 0x00020000 */ +#define ADC_SQR1_SQ16_3 (0x08UL << ADC_SQR1_SQ16_Pos) /*!< 0x00040000 */ +#define ADC_SQR1_SQ16_4 (0x10UL << ADC_SQR1_SQ16_Pos) /*!< 0x00080000 */ + +#define ADC_SQR1_L_Pos (20U) +#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x00F00000 */ +#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */ +#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00100000 */ +#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00200000 */ +#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00400000 */ +#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00800000 */ + +/******************* Bit definition for ADC_SQR2 register *******************/ +#define ADC_SQR2_SQ7_Pos (0U) +#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0000001F */ +#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */ +#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000001 */ +#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000002 */ +#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000004 */ +#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000008 */ +#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00000010 */ + +#define ADC_SQR2_SQ8_Pos (5U) +#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x000003E0 */ +#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */ +#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000020 */ +#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000040 */ +#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000080 */ +#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000100 */ +#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00000200 */ + +#define ADC_SQR2_SQ9_Pos (10U) +#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x00007C00 */ +#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */ +#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x00000400 */ +#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x00000800 */ +#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x00001000 */ +#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x00002000 */ +#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x00004000 */ + +#define ADC_SQR2_SQ10_Pos (15U) +#define ADC_SQR2_SQ10_Msk (0x1FUL << ADC_SQR2_SQ10_Pos) /*!< 0x000F8000 */ +#define ADC_SQR2_SQ10 ADC_SQR2_SQ10_Msk /*!< ADC group regular sequencer rank 10 */ +#define ADC_SQR2_SQ10_0 (0x01UL << ADC_SQR2_SQ10_Pos) /*!< 0x00008000 */ +#define ADC_SQR2_SQ10_1 (0x02UL << ADC_SQR2_SQ10_Pos) /*!< 0x00010000 */ +#define ADC_SQR2_SQ10_2 (0x04UL << ADC_SQR2_SQ10_Pos) /*!< 0x00020000 */ +#define ADC_SQR2_SQ10_3 (0x08UL << ADC_SQR2_SQ10_Pos) /*!< 0x00040000 */ +#define ADC_SQR2_SQ10_4 (0x10UL << ADC_SQR2_SQ10_Pos) /*!< 0x00080000 */ + +#define ADC_SQR2_SQ11_Pos (20U) +#define ADC_SQR2_SQ11_Msk (0x1FUL << ADC_SQR2_SQ11_Pos) /*!< 0x01F00000 */ +#define ADC_SQR2_SQ11 ADC_SQR2_SQ11_Msk /*!< ADC group regular sequencer rank 1 */ +#define ADC_SQR2_SQ11_0 (0x01UL << ADC_SQR2_SQ11_Pos) /*!< 0x00100000 */ +#define ADC_SQR2_SQ11_1 (0x02UL << ADC_SQR2_SQ11_Pos) /*!< 0x00200000 */ +#define ADC_SQR2_SQ11_2 (0x04UL << ADC_SQR2_SQ11_Pos) /*!< 0x00400000 */ +#define ADC_SQR2_SQ11_3 (0x08UL << ADC_SQR2_SQ11_Pos) /*!< 0x00800000 */ +#define ADC_SQR2_SQ11_4 (0x10UL << ADC_SQR2_SQ11_Pos) /*!< 0x01000000 */ + +#define ADC_SQR2_SQ12_Pos (25U) +#define ADC_SQR2_SQ12_Msk (0x1FUL << ADC_SQR2_SQ12_Pos) /*!< 0x3E000000 */ +#define ADC_SQR2_SQ12 ADC_SQR2_SQ12_Msk /*!< ADC group regular sequencer rank 12 */ +#define ADC_SQR2_SQ12_0 (0x01UL << ADC_SQR2_SQ12_Pos) /*!< 0x02000000 */ +#define ADC_SQR2_SQ12_1 (0x02UL << ADC_SQR2_SQ12_Pos) /*!< 0x04000000 */ +#define ADC_SQR2_SQ12_2 (0x04UL << ADC_SQR2_SQ12_Pos) /*!< 0x08000000 */ +#define ADC_SQR2_SQ12_3 (0x08UL << ADC_SQR2_SQ12_Pos) /*!< 0x10000000 */ +#define ADC_SQR2_SQ12_4 (0x10UL << ADC_SQR2_SQ12_Pos) /*!< 0x20000000 */ + +/******************* Bit definition for ADC_SQR3 register *******************/ +#define ADC_SQR3_SQ1_Pos (0U) +#define ADC_SQR3_SQ1_Msk (0x1FUL << ADC_SQR3_SQ1_Pos) /*!< 0x0000001F */ +#define ADC_SQR3_SQ1 ADC_SQR3_SQ1_Msk /*!< ADC group regular sequencer rank 1 */ +#define ADC_SQR3_SQ1_0 (0x01UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000001 */ +#define ADC_SQR3_SQ1_1 (0x02UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000002 */ +#define ADC_SQR3_SQ1_2 (0x04UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000004 */ +#define ADC_SQR3_SQ1_3 (0x08UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000008 */ +#define ADC_SQR3_SQ1_4 (0x10UL << ADC_SQR3_SQ1_Pos) /*!< 0x00000010 */ + +#define ADC_SQR3_SQ2_Pos (5U) +#define ADC_SQR3_SQ2_Msk (0x1FUL << ADC_SQR3_SQ2_Pos) /*!< 0x000003E0 */ +#define ADC_SQR3_SQ2 ADC_SQR3_SQ2_Msk /*!< ADC group regular sequencer rank 2 */ +#define ADC_SQR3_SQ2_0 (0x01UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000020 */ +#define ADC_SQR3_SQ2_1 (0x02UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000040 */ +#define ADC_SQR3_SQ2_2 (0x04UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000080 */ +#define ADC_SQR3_SQ2_3 (0x08UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000100 */ +#define ADC_SQR3_SQ2_4 (0x10UL << ADC_SQR3_SQ2_Pos) /*!< 0x00000200 */ + +#define ADC_SQR3_SQ3_Pos (10U) +#define ADC_SQR3_SQ3_Msk (0x1FUL << ADC_SQR3_SQ3_Pos) /*!< 0x00007C00 */ +#define ADC_SQR3_SQ3 ADC_SQR3_SQ3_Msk /*!< ADC group regular sequencer rank 3 */ +#define ADC_SQR3_SQ3_0 (0x01UL << ADC_SQR3_SQ3_Pos) /*!< 0x00000400 */ +#define ADC_SQR3_SQ3_1 (0x02UL << ADC_SQR3_SQ3_Pos) /*!< 0x00000800 */ +#define ADC_SQR3_SQ3_2 (0x04UL << ADC_SQR3_SQ3_Pos) /*!< 0x00001000 */ +#define ADC_SQR3_SQ3_3 (0x08UL << ADC_SQR3_SQ3_Pos) /*!< 0x00002000 */ +#define ADC_SQR3_SQ3_4 (0x10UL << ADC_SQR3_SQ3_Pos) /*!< 0x00004000 */ + +#define ADC_SQR3_SQ4_Pos (15U) +#define ADC_SQR3_SQ4_Msk (0x1FUL << ADC_SQR3_SQ4_Pos) /*!< 0x000F8000 */ +#define ADC_SQR3_SQ4 ADC_SQR3_SQ4_Msk /*!< ADC group regular sequencer rank 4 */ +#define ADC_SQR3_SQ4_0 (0x01UL << ADC_SQR3_SQ4_Pos) /*!< 0x00008000 */ +#define ADC_SQR3_SQ4_1 (0x02UL << ADC_SQR3_SQ4_Pos) /*!< 0x00010000 */ +#define ADC_SQR3_SQ4_2 (0x04UL << ADC_SQR3_SQ4_Pos) /*!< 0x00020000 */ +#define ADC_SQR3_SQ4_3 (0x08UL << ADC_SQR3_SQ4_Pos) /*!< 0x00040000 */ +#define ADC_SQR3_SQ4_4 (0x10UL << ADC_SQR3_SQ4_Pos) /*!< 0x00080000 */ + +#define ADC_SQR3_SQ5_Pos (20U) +#define ADC_SQR3_SQ5_Msk (0x1FUL << ADC_SQR3_SQ5_Pos) /*!< 0x01F00000 */ +#define ADC_SQR3_SQ5 ADC_SQR3_SQ5_Msk /*!< ADC group regular sequencer rank 5 */ +#define ADC_SQR3_SQ5_0 (0x01UL << ADC_SQR3_SQ5_Pos) /*!< 0x00100000 */ +#define ADC_SQR3_SQ5_1 (0x02UL << ADC_SQR3_SQ5_Pos) /*!< 0x00200000 */ +#define ADC_SQR3_SQ5_2 (0x04UL << ADC_SQR3_SQ5_Pos) /*!< 0x00400000 */ +#define ADC_SQR3_SQ5_3 (0x08UL << ADC_SQR3_SQ5_Pos) /*!< 0x00800000 */ +#define ADC_SQR3_SQ5_4 (0x10UL << ADC_SQR3_SQ5_Pos) /*!< 0x01000000 */ + +#define ADC_SQR3_SQ6_Pos (25U) +#define ADC_SQR3_SQ6_Msk (0x1FUL << ADC_SQR3_SQ6_Pos) /*!< 0x3E000000 */ +#define ADC_SQR3_SQ6 ADC_SQR3_SQ6_Msk /*!< ADC group regular sequencer rank 6 */ +#define ADC_SQR3_SQ6_0 (0x01UL << ADC_SQR3_SQ6_Pos) /*!< 0x02000000 */ +#define ADC_SQR3_SQ6_1 (0x02UL << ADC_SQR3_SQ6_Pos) /*!< 0x04000000 */ +#define ADC_SQR3_SQ6_2 (0x04UL << ADC_SQR3_SQ6_Pos) /*!< 0x08000000 */ +#define ADC_SQR3_SQ6_3 (0x08UL << ADC_SQR3_SQ6_Pos) /*!< 0x10000000 */ +#define ADC_SQR3_SQ6_4 (0x10UL << ADC_SQR3_SQ6_Pos) /*!< 0x20000000 */ + +/******************* Bit definition for ADC_JSQR register *******************/ +#define ADC_JSQR_JSQ1_Pos (0U) +#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x0000001F */ +#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */ +#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000001 */ +#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000002 */ +#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000004 */ +#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000008 */ +#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000010 */ + +#define ADC_JSQR_JSQ2_Pos (5U) +#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x000003E0 */ +#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */ +#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000020 */ +#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000040 */ +#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000080 */ +#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000100 */ +#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00000200 */ + +#define ADC_JSQR_JSQ3_Pos (10U) +#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x00007C00 */ +#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */ +#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00000400 */ +#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00000800 */ +#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00001000 */ +#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00002000 */ +#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00004000 */ + +#define ADC_JSQR_JSQ4_Pos (15U) +#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0x000F8000 */ +#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */ +#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00008000 */ +#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00010000 */ +#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00020000 */ +#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00040000 */ +#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x00080000 */ + +#define ADC_JSQR_JL_Pos (20U) +#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00300000 */ +#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */ +#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00100000 */ +#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00200000 */ + +/******************* Bit definition for ADC_JDR1 register *******************/ +#define ADC_JDR1_JDATA_Pos (0U) +#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */ + +/******************* Bit definition for ADC_JDR2 register *******************/ +#define ADC_JDR2_JDATA_Pos (0U) +#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */ + +/******************* Bit definition for ADC_JDR3 register *******************/ +#define ADC_JDR3_JDATA_Pos (0U) +#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */ + +/******************* Bit definition for ADC_JDR4 register *******************/ +#define ADC_JDR4_JDATA_Pos (0U) +#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */ +#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */ + +/******************** Bit definition for ADC_DR register ********************/ +#define ADC_DR_DATA_Pos (0U) +#define ADC_DR_DATA_Msk (0xFFFFUL << ADC_DR_DATA_Pos) /*!< 0x0000FFFF */ +#define ADC_DR_DATA ADC_DR_DATA_Msk /*!< ADC group regular conversion data */ +#define ADC_DR_ADC2DATA_Pos (16U) +#define ADC_DR_ADC2DATA_Msk (0xFFFFUL << ADC_DR_ADC2DATA_Pos) /*!< 0xFFFF0000 */ +#define ADC_DR_ADC2DATA ADC_DR_ADC2DATA_Msk /*!< ADC group regular conversion data for ADC slave, in multimode */ + + +/*****************************************************************************/ +/* */ +/* Timers (TIM) */ +/* */ +/*****************************************************************************/ +/******************* Bit definition for TIM_CR1 register *******************/ +#define TIM_CR1_CEN_Pos (0U) +#define TIM_CR1_CEN_Msk (0x1UL << TIM_CR1_CEN_Pos) /*!< 0x00000001 */ +#define TIM_CR1_CEN TIM_CR1_CEN_Msk /*!>= 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 new file mode 100644 index 0000000..162a400 --- /dev/null +++ b/Drivers/CMSIS/Include/cmsis_armclang.h @@ -0,0 +1,1869 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..94212eb --- /dev/null +++ b/Drivers/CMSIS/Include/cmsis_compiler.h @@ -0,0 +1,266 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..2d9db15 --- /dev/null +++ b/Drivers/CMSIS/Include/cmsis_gcc.h @@ -0,0 +1,2085 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..11c4af0 --- /dev/null +++ b/Drivers/CMSIS/Include/cmsis_iccarm.h @@ -0,0 +1,935 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..660f612 --- /dev/null +++ b/Drivers/CMSIS/Include/cmsis_version.h @@ -0,0 +1,39 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..251e4ed --- /dev/null +++ b/Drivers/CMSIS/Include/core_armv8mbl.h @@ -0,0 +1,1918 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..3a3148e --- /dev/null +++ b/Drivers/CMSIS/Include/core_armv8mml.h @@ -0,0 +1,2927 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..f929bba --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm0.h @@ -0,0 +1,949 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..424011a --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm0plus.h @@ -0,0 +1,1083 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..0ed678e --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm1.h @@ -0,0 +1,976 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..acbc5df --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm23.h @@ -0,0 +1,1993 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..74bff64 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm3.h @@ -0,0 +1,1941 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..6cd2db7 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm33.h @@ -0,0 +1,3002 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..7d56873 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm4.h @@ -0,0 +1,2129 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..a14dc62 --- /dev/null +++ b/Drivers/CMSIS/Include/core_cm7.h @@ -0,0 +1,2671 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..9b67c92 --- /dev/null +++ b/Drivers/CMSIS/Include/core_sc000.h @@ -0,0 +1,1022 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..3e8a471 --- /dev/null +++ b/Drivers/CMSIS/Include/core_sc300.h @@ -0,0 +1,1915 @@ +/**************************************************************************//** + * @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 new file mode 100644 index 0000000..0142203 --- /dev/null +++ b/Drivers/CMSIS/Include/mpu_armv7.h @@ -0,0 +1,270 @@ +/****************************************************************************** + * @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 new file mode 100644 index 0000000..62571da --- /dev/null +++ b/Drivers/CMSIS/Include/mpu_armv8.h @@ -0,0 +1,333 @@ +/****************************************************************************** + * @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 new file mode 100644 index 0000000..0d09749 --- /dev/null +++ b/Drivers/CMSIS/Include/tz_context.h @@ -0,0 +1,70 @@ +/****************************************************************************** + * @file tz_context.h + * @brief Context Management for Armv8-M TrustZone + * @version V1.0.1 + * @date 10. January 2018 + ******************************************************************************/ +/* + * Copyright (c) 2017-2018 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the License); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#if defined ( __ICCARM__ ) + #pragma system_include /* treat file as system include file for MISRA check */ +#elif defined (__clang__) + #pragma clang system_header /* treat file as system include file */ +#endif + +#ifndef TZ_CONTEXT_H +#define TZ_CONTEXT_H + +#include + +#ifndef TZ_MODULEID_T +#define TZ_MODULEID_T +/// \details Data type that identifies secure software modules called by a process. +typedef uint32_t TZ_ModuleId_t; +#endif + +/// \details TZ Memory ID identifies an allocated memory slot. +typedef uint32_t TZ_MemoryId_t; + +/// Initialize secure context memory system +/// \return execution status (1: success, 0: error) +uint32_t TZ_InitContextSystem_S (void); + +/// Allocate context memory for calling secure software modules in TrustZone +/// \param[in] module identifies software modules called from non-secure mode +/// \return value != 0 id TrustZone memory slot identifier +/// \return value 0 no memory available or internal error +TZ_MemoryId_t TZ_AllocModuleContext_S (TZ_ModuleId_t module); + +/// Free context memory that was previously allocated with \ref TZ_AllocModuleContext_S +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_FreeModuleContext_S (TZ_MemoryId_t id); + +/// Load secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_LoadContext_S (TZ_MemoryId_t id); + +/// Store secure context (called on RTOS thread context switch) +/// \param[in] id TrustZone memory slot identifier +/// \return execution status (1: success, 0: error) +uint32_t TZ_StoreContext_S (TZ_MemoryId_t id); + +#endif // TZ_CONTEXT_H diff --git a/Drivers/CMSIS/LICENSE.txt b/Drivers/CMSIS/LICENSE.txt new file mode 100644 index 0000000..8dada3e --- /dev/null +++ b/Drivers/CMSIS/LICENSE.txt @@ -0,0 +1,201 @@ + 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/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h new file mode 100644 index 0000000..146fd88 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_bus.h @@ -0,0 +1,1012 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_bus.h + * @author MCD Application Team + * @brief Header file of BUS LL module. + + @verbatim + ##### RCC Limitations ##### + ============================================================================== + [..] + A delay between an RCC peripheral clock enable and the effective peripheral + enabling should be taken into account in order to manage the peripheral read/write + from/to registers. + (+) This delay depends on the peripheral mapping. + (++) AHB & APB peripherals, 1 dummy read is necessary + + [..] + Workarounds: + (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_BUS_H +#define __STM32F1xx_LL_BUS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup BUS_LL BUS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +#if defined(RCC_AHBRSTR_OTGFSRST) || defined(RCC_AHBRSTR_ETHMACRST) +#define RCC_AHBRSTR_SUPPORT +#endif /* RCC_AHBRSTR_OTGFSRST || RCC_AHBRSTR_ETHMACRST */ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + * @{ + */ + +/** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + * @{ + */ +#define LL_AHB1_GRP1_PERIPH_ALL (uint32_t)0xFFFFFFFFU +#define LL_AHB1_GRP1_PERIPH_CRC RCC_AHBENR_CRCEN +#define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHBENR_DMA1EN +#if defined(DMA2) +#define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHBENR_DMA2EN +#endif /*DMA2*/ +#if defined(ETH) +#define LL_AHB1_GRP1_PERIPH_ETHMAC RCC_AHBENR_ETHMACEN +#define LL_AHB1_GRP1_PERIPH_ETHMACRX RCC_AHBENR_ETHMACRXEN +#define LL_AHB1_GRP1_PERIPH_ETHMACTX RCC_AHBENR_ETHMACTXEN +#endif /*ETH*/ +#define LL_AHB1_GRP1_PERIPH_FLASH RCC_AHBENR_FLITFEN +#if defined(FSMC_Bank1) +#define LL_AHB1_GRP1_PERIPH_FSMC RCC_AHBENR_FSMCEN +#endif /*FSMC_Bank1*/ +#if defined(USB_OTG_FS) +#define LL_AHB1_GRP1_PERIPH_OTGFS RCC_AHBENR_OTGFSEN +#endif /*USB_OTG_FS*/ +#if defined(SDIO) +#define LL_AHB1_GRP1_PERIPH_SDIO RCC_AHBENR_SDIOEN +#endif /*SDIO*/ +#define LL_AHB1_GRP1_PERIPH_SRAM RCC_AHBENR_SRAMEN +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + * @{ + */ +#define LL_APB1_GRP1_PERIPH_ALL (uint32_t)0xFFFFFFFFU +#define LL_APB1_GRP1_PERIPH_BKP RCC_APB1ENR_BKPEN +#if defined(CAN1) +#define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR_CAN1EN +#endif /*CAN1*/ +#if defined(CAN2) +#define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR_CAN2EN +#endif /*CAN2*/ +#if defined(CEC) +#define LL_APB1_GRP1_PERIPH_CEC RCC_APB1ENR_CECEN +#endif /*CEC*/ +#if defined(DAC) +#define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN +#endif /*DAC*/ +#define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN +#if defined(I2C2) +#define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN +#endif /*I2C2*/ +#define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN +#if defined(SPI2) +#define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN +#endif /*SPI2*/ +#if defined(SPI3) +#define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN +#endif /*SPI3*/ +#if defined(TIM12) +#define LL_APB1_GRP1_PERIPH_TIM12 RCC_APB1ENR_TIM12EN +#endif /*TIM12*/ +#if defined(TIM13) +#define LL_APB1_GRP1_PERIPH_TIM13 RCC_APB1ENR_TIM13EN +#endif /*TIM13*/ +#if defined(TIM14) +#define LL_APB1_GRP1_PERIPH_TIM14 RCC_APB1ENR_TIM14EN +#endif /*TIM14*/ +#define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN +#define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN +#if defined(TIM4) +#define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN +#endif /*TIM4*/ +#if defined(TIM5) +#define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN +#endif /*TIM5*/ +#if defined(TIM6) +#define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN +#endif /*TIM6*/ +#if defined(TIM7) +#define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN +#endif /*TIM7*/ +#if defined(UART4) +#define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN +#endif /*UART4*/ +#if defined(UART5) +#define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN +#endif /*UART5*/ +#define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN +#if defined(USART3) +#define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN +#endif /*USART3*/ +#if defined(USB) +#define LL_APB1_GRP1_PERIPH_USB RCC_APB1ENR_USBEN +#endif /*USB*/ +#define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + * @{ + */ +#define LL_APB2_GRP1_PERIPH_ALL (uint32_t)0xFFFFFFFFU +#define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN +#if defined(ADC2) +#define LL_APB2_GRP1_PERIPH_ADC2 RCC_APB2ENR_ADC2EN +#endif /*ADC2*/ +#if defined(ADC3) +#define LL_APB2_GRP1_PERIPH_ADC3 RCC_APB2ENR_ADC3EN +#endif /*ADC3*/ +#define LL_APB2_GRP1_PERIPH_AFIO RCC_APB2ENR_AFIOEN +#define LL_APB2_GRP1_PERIPH_GPIOA RCC_APB2ENR_IOPAEN +#define LL_APB2_GRP1_PERIPH_GPIOB RCC_APB2ENR_IOPBEN +#define LL_APB2_GRP1_PERIPH_GPIOC RCC_APB2ENR_IOPCEN +#define LL_APB2_GRP1_PERIPH_GPIOD RCC_APB2ENR_IOPDEN +#if defined(GPIOE) +#define LL_APB2_GRP1_PERIPH_GPIOE RCC_APB2ENR_IOPEEN +#endif /*GPIOE*/ +#if defined(GPIOF) +#define LL_APB2_GRP1_PERIPH_GPIOF RCC_APB2ENR_IOPFEN +#endif /*GPIOF*/ +#if defined(GPIOG) +#define LL_APB2_GRP1_PERIPH_GPIOG RCC_APB2ENR_IOPGEN +#endif /*GPIOG*/ +#define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN +#if defined(TIM10) +#define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN +#endif /*TIM10*/ +#if defined(TIM11) +#define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN +#endif /*TIM11*/ +#if defined(TIM15) +#define LL_APB2_GRP1_PERIPH_TIM15 RCC_APB2ENR_TIM15EN +#endif /*TIM15*/ +#if defined(TIM16) +#define LL_APB2_GRP1_PERIPH_TIM16 RCC_APB2ENR_TIM16EN +#endif /*TIM16*/ +#if defined(TIM17) +#define LL_APB2_GRP1_PERIPH_TIM17 RCC_APB2ENR_TIM17EN +#endif /*TIM17*/ +#define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN +#if defined(TIM8) +#define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN +#endif /*TIM8*/ +#if defined(TIM9) +#define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN +#endif /*TIM9*/ +#define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + * @{ + */ + +/** @defgroup BUS_LL_EF_AHB1 AHB1 + * @{ + */ + +/** + * @brief Enable AHB1 peripherals clock. + * @rmtoll AHBENR CRCEN LL_AHB1_GRP1_EnableClock\n + * AHBENR DMA1EN LL_AHB1_GRP1_EnableClock\n + * AHBENR DMA2EN LL_AHB1_GRP1_EnableClock\n + * AHBENR ETHMACEN LL_AHB1_GRP1_EnableClock\n + * AHBENR ETHMACRXEN LL_AHB1_GRP1_EnableClock\n + * AHBENR ETHMACTXEN LL_AHB1_GRP1_EnableClock\n + * AHBENR FLITFEN LL_AHB1_GRP1_EnableClock\n + * AHBENR FSMCEN LL_AHB1_GRP1_EnableClock\n + * AHBENR OTGFSEN LL_AHB1_GRP1_EnableClock\n + * AHBENR SDIOEN LL_AHB1_GRP1_EnableClock\n + * AHBENR SRAMEN LL_AHB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHBENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if AHB1 peripheral clock is enabled or not + * @rmtoll AHBENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR ETHMACEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR ETHMACRXEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR ETHMACTXEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR FLITFEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR FSMCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR OTGFSEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR SDIOEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR SRAMEN LL_AHB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->AHBENR, Periphs) == Periphs); +} + +/** + * @brief Disable AHB1 peripherals clock. + * @rmtoll AHBENR CRCEN LL_AHB1_GRP1_DisableClock\n + * AHBENR DMA1EN LL_AHB1_GRP1_DisableClock\n + * AHBENR DMA2EN LL_AHB1_GRP1_DisableClock\n + * AHBENR ETHMACEN LL_AHB1_GRP1_DisableClock\n + * AHBENR ETHMACRXEN LL_AHB1_GRP1_DisableClock\n + * AHBENR ETHMACTXEN LL_AHB1_GRP1_DisableClock\n + * AHBENR FLITFEN LL_AHB1_GRP1_DisableClock\n + * AHBENR FSMCEN LL_AHB1_GRP1_DisableClock\n + * AHBENR OTGFSEN LL_AHB1_GRP1_DisableClock\n + * AHBENR SDIOEN LL_AHB1_GRP1_DisableClock\n + * AHBENR SRAMEN LL_AHB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHBENR, Periphs); +} + +#if defined(RCC_AHBRSTR_SUPPORT) +/** + * @brief Force AHB1 peripherals reset. + * @rmtoll AHBRSTR ETHMACRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR OTGFSRST LL_AHB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->AHBRSTR, Periphs); +} + +/** + * @brief Release AHB1 peripherals reset. + * @rmtoll AHBRSTR ETHMACRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR OTGFSRST LL_AHB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHBRSTR, Periphs); +} +#endif /* RCC_AHBRSTR_SUPPORT */ + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB1 APB1 + * @{ + */ + +/** + * @brief Enable APB1 peripherals clock. + * @rmtoll APB1ENR BKPEN LL_APB1_GRP1_EnableClock\n + * APB1ENR CAN1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR CAN2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR CECEN LL_APB1_GRP1_EnableClock\n + * APB1ENR DACEN LL_APB1_GRP1_EnableClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR PWREN LL_APB1_GRP1_EnableClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM12EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM13EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM14EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_EnableClock\n + * APB1ENR UART4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR UART5EN LL_APB1_GRP1_EnableClock\n + * APB1ENR USART2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR USART3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR USBEN LL_APB1_GRP1_EnableClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_BKP + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB1ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB1 peripheral clock is enabled or not + * @rmtoll APB1ENR BKPEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR CAN1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR CAN2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR CECEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR DACEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR PWREN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM12EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM13EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM14EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR UART4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR UART5EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USART2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USART3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USBEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_BKP + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->APB1ENR, Periphs) == Periphs); +} + +/** + * @brief Disable APB1 peripherals clock. + * @rmtoll APB1ENR BKPEN LL_APB1_GRP1_DisableClock\n + * APB1ENR CAN1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR CAN2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR CECEN LL_APB1_GRP1_DisableClock\n + * APB1ENR DACEN LL_APB1_GRP1_DisableClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR PWREN LL_APB1_GRP1_DisableClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM12EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM13EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM14EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_DisableClock\n + * APB1ENR UART4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR UART5EN LL_APB1_GRP1_DisableClock\n + * APB1ENR USART2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR USART3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR USBEN LL_APB1_GRP1_DisableClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_BKP + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1ENR, Periphs); +} + +/** + * @brief Force APB1 peripherals reset. + * @rmtoll APB1RSTR BKPRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR CAN1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR CAN2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR CECRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR DACRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR I2C1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR I2C2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR PWRRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR SPI2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR SPI3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM12RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM13RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM14RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM5RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM6RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM7RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR UART4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR UART5RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USART2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USART3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USBRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR WWDGRST LL_APB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_ALL + * @arg @ref LL_APB1_GRP1_PERIPH_BKP + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB1RSTR, Periphs); +} + +/** + * @brief Release APB1 peripherals reset. + * @rmtoll APB1RSTR BKPRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR CAN1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR CAN2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR CECRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR DACRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR I2C1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR I2C2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR PWRRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR SPI2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR SPI3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM12RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM13RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM14RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM5RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM6RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM7RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR UART4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR UART5RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USART2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USART3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USBRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR WWDGRST LL_APB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_ALL + * @arg @ref LL_APB1_GRP1_PERIPH_BKP + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1RSTR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB2 APB2 + * @{ + */ + +/** + * @brief Enable APB2 peripherals clock. + * @rmtoll APB2ENR ADC1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR ADC2EN LL_APB2_GRP1_EnableClock\n + * APB2ENR ADC3EN LL_APB2_GRP1_EnableClock\n + * APB2ENR AFIOEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPAEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPBEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPCEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPDEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPEEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPFEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPGEN LL_APB2_GRP1_EnableClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM15EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM16EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM17EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_EnableClock\n + * APB2ENR USART1EN LL_APB2_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_AFIO + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOD + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB2ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB2 peripheral clock is enabled or not + * @rmtoll APB2ENR ADC1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR ADC2EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR ADC3EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR AFIOEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPAEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPBEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPCEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPDEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPEEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPFEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPGEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM15EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM16EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM17EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_AFIO + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOD + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->APB2ENR, Periphs) == Periphs); +} + +/** + * @brief Disable APB2 peripherals clock. + * @rmtoll APB2ENR ADC1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR ADC2EN LL_APB2_GRP1_DisableClock\n + * APB2ENR ADC3EN LL_APB2_GRP1_DisableClock\n + * APB2ENR AFIOEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPAEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPBEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPCEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPDEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPEEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPFEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPGEN LL_APB2_GRP1_DisableClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM15EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM16EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM17EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_DisableClock\n + * APB2ENR USART1EN LL_APB2_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_AFIO + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOD + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2ENR, Periphs); +} + +/** + * @brief Force APB2 peripherals reset. + * @rmtoll APB2RSTR ADC1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR ADC2RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR ADC3RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR AFIORST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPARST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPBRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPCRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPDRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPERST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPFRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPGRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM10RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM11RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM15RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM16RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM17RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM8RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM9RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_AFIO + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOD + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB2RSTR, Periphs); +} + +/** + * @brief Release APB2 peripherals reset. + * @rmtoll APB2RSTR ADC1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR ADC2RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR ADC3RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR AFIORST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPARST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPBRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPCRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPDRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPERST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPFRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPGRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SPI1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM10RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM11RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM15RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM16RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM17RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM8RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM9RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR USART1RST LL_APB2_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_AFIO + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOD + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2RSTR, Periphs); +} + +/** + * @} + */ + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RCC) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_BUS_H */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h new file mode 100644 index 0000000..c8b503c --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_cortex.h @@ -0,0 +1,638 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_cortex.h + * @author MCD Application Team + * @brief Header file of CORTEX LL module. + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL CORTEX driver contains a set of generic APIs that can be + used by user: + (+) SYSTICK configuration used by LL_mDelay and LL_Init1msTick + functions + (+) Low power mode configuration (SCB register of Cortex-MCU) + (+) MPU API to configure and enable regions + (MPU services provided only on some devices) + (+) API to access to MCU info (CPUID register) + (+) API to enable fault handler (SHCSR accesses) + + @endverbatim + ****************************************************************************** + * @attention + * + * Copyright (c) 2017 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_CORTEX_H +#define __STM32F1xx_LL_CORTEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +/** @defgroup CORTEX_LL CORTEX + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Constants CORTEX Exported Constants + * @{ + */ + +/** @defgroup CORTEX_LL_EC_CLKSOURCE_HCLK SYSTICK Clock Source + * @{ + */ +#define LL_SYSTICK_CLKSOURCE_HCLK_DIV8 0x00000000U /*!< AHB clock divided by 8 selected as SysTick clock source.*/ +#define LL_SYSTICK_CLKSOURCE_HCLK SysTick_CTRL_CLKSOURCE_Msk /*!< AHB clock selected as SysTick clock source. */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_FAULT Handler Fault type + * @{ + */ +#define LL_HANDLER_FAULT_USG SCB_SHCSR_USGFAULTENA_Msk /*!< Usage fault */ +#define LL_HANDLER_FAULT_BUS SCB_SHCSR_BUSFAULTENA_Msk /*!< Bus fault */ +#define LL_HANDLER_FAULT_MEM SCB_SHCSR_MEMFAULTENA_Msk /*!< Memory management fault */ +/** + * @} + */ + +#if __MPU_PRESENT + +/** @defgroup CORTEX_LL_EC_CTRL_HFNMI_PRIVDEF MPU Control + * @{ + */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF_NONE 0x00000000U /*!< Disable NMI and privileged SW access */ +#define LL_MPU_CTRL_HARDFAULT_NMI MPU_CTRL_HFNMIENA_Msk /*!< Enables the operation of MPU during hard fault, NMI, and FAULTMASK handlers */ +#define LL_MPU_CTRL_PRIVILEGED_DEFAULT MPU_CTRL_PRIVDEFENA_Msk /*!< Enable privileged software access to default memory map */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF (MPU_CTRL_HFNMIENA_Msk | MPU_CTRL_PRIVDEFENA_Msk) /*!< Enable NMI and privileged SW access */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION MPU Region Number + * @{ + */ +#define LL_MPU_REGION_NUMBER0 0x00U /*!< REGION Number 0 */ +#define LL_MPU_REGION_NUMBER1 0x01U /*!< REGION Number 1 */ +#define LL_MPU_REGION_NUMBER2 0x02U /*!< REGION Number 2 */ +#define LL_MPU_REGION_NUMBER3 0x03U /*!< REGION Number 3 */ +#define LL_MPU_REGION_NUMBER4 0x04U /*!< REGION Number 4 */ +#define LL_MPU_REGION_NUMBER5 0x05U /*!< REGION Number 5 */ +#define LL_MPU_REGION_NUMBER6 0x06U /*!< REGION Number 6 */ +#define LL_MPU_REGION_NUMBER7 0x07U /*!< REGION Number 7 */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_SIZE MPU Region Size + * @{ + */ +#define LL_MPU_REGION_SIZE_32B (0x04U << MPU_RASR_SIZE_Pos) /*!< 32B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64B (0x05U << MPU_RASR_SIZE_Pos) /*!< 64B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128B (0x06U << MPU_RASR_SIZE_Pos) /*!< 128B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256B (0x07U << MPU_RASR_SIZE_Pos) /*!< 256B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512B (0x08U << MPU_RASR_SIZE_Pos) /*!< 512B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1KB (0x09U << MPU_RASR_SIZE_Pos) /*!< 1KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2KB (0x0AU << MPU_RASR_SIZE_Pos) /*!< 2KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4KB (0x0BU << MPU_RASR_SIZE_Pos) /*!< 4KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8KB (0x0CU << MPU_RASR_SIZE_Pos) /*!< 8KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16KB (0x0DU << MPU_RASR_SIZE_Pos) /*!< 16KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32KB (0x0EU << MPU_RASR_SIZE_Pos) /*!< 32KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64KB (0x0FU << MPU_RASR_SIZE_Pos) /*!< 64KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128KB (0x10U << MPU_RASR_SIZE_Pos) /*!< 128KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256KB (0x11U << MPU_RASR_SIZE_Pos) /*!< 256KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512KB (0x12U << MPU_RASR_SIZE_Pos) /*!< 512KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1MB (0x13U << MPU_RASR_SIZE_Pos) /*!< 1MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2MB (0x14U << MPU_RASR_SIZE_Pos) /*!< 2MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4MB (0x15U << MPU_RASR_SIZE_Pos) /*!< 4MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8MB (0x16U << MPU_RASR_SIZE_Pos) /*!< 8MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16MB (0x17U << MPU_RASR_SIZE_Pos) /*!< 16MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32MB (0x18U << MPU_RASR_SIZE_Pos) /*!< 32MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64MB (0x19U << MPU_RASR_SIZE_Pos) /*!< 64MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128MB (0x1AU << MPU_RASR_SIZE_Pos) /*!< 128MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256MB (0x1BU << MPU_RASR_SIZE_Pos) /*!< 256MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512MB (0x1CU << MPU_RASR_SIZE_Pos) /*!< 512MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1GB (0x1DU << MPU_RASR_SIZE_Pos) /*!< 1GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2GB (0x1EU << MPU_RASR_SIZE_Pos) /*!< 2GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4GB (0x1FU << MPU_RASR_SIZE_Pos) /*!< 4GB Size of the MPU protection region */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_PRIVILEDGES MPU Region Privileges + * @{ + */ +#define LL_MPU_REGION_NO_ACCESS (0x00U << MPU_RASR_AP_Pos) /*!< No access*/ +#define LL_MPU_REGION_PRIV_RW (0x01U << MPU_RASR_AP_Pos) /*!< RW privileged (privileged access only)*/ +#define LL_MPU_REGION_PRIV_RW_URO (0x02U << MPU_RASR_AP_Pos) /*!< RW privileged - RO user (Write in a user program generates a fault) */ +#define LL_MPU_REGION_FULL_ACCESS (0x03U << MPU_RASR_AP_Pos) /*!< RW privileged & user (Full access) */ +#define LL_MPU_REGION_PRIV_RO (0x05U << MPU_RASR_AP_Pos) /*!< RO privileged (privileged read only)*/ +#define LL_MPU_REGION_PRIV_RO_URO (0x06U << MPU_RASR_AP_Pos) /*!< RO privileged & user (read only) */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_TEX MPU TEX Level + * @{ + */ +#define LL_MPU_TEX_LEVEL0 (0x00U << MPU_RASR_TEX_Pos) /*!< b000 for TEX bits */ +#define LL_MPU_TEX_LEVEL1 (0x01U << MPU_RASR_TEX_Pos) /*!< b001 for TEX bits */ +#define LL_MPU_TEX_LEVEL2 (0x02U << MPU_RASR_TEX_Pos) /*!< b010 for TEX bits */ +#define LL_MPU_TEX_LEVEL4 (0x04U << MPU_RASR_TEX_Pos) /*!< b100 for TEX bits */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_INSTRUCTION_ACCESS MPU Instruction Access + * @{ + */ +#define LL_MPU_INSTRUCTION_ACCESS_ENABLE 0x00U /*!< Instruction fetches enabled */ +#define LL_MPU_INSTRUCTION_ACCESS_DISABLE MPU_RASR_XN_Msk /*!< Instruction fetches disabled*/ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_SHAREABLE_ACCESS MPU Shareable Access + * @{ + */ +#define LL_MPU_ACCESS_SHAREABLE MPU_RASR_S_Msk /*!< Shareable memory attribute */ +#define LL_MPU_ACCESS_NOT_SHAREABLE 0x00U /*!< Not Shareable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_CACHEABLE_ACCESS MPU Cacheable Access + * @{ + */ +#define LL_MPU_ACCESS_CACHEABLE MPU_RASR_C_Msk /*!< Cacheable memory attribute */ +#define LL_MPU_ACCESS_NOT_CACHEABLE 0x00U /*!< Not Cacheable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_BUFFERABLE_ACCESS MPU Bufferable Access + * @{ + */ +#define LL_MPU_ACCESS_BUFFERABLE MPU_RASR_B_Msk /*!< Bufferable memory attribute */ +#define LL_MPU_ACCESS_NOT_BUFFERABLE 0x00U /*!< Not Bufferable memory attribute */ +/** + * @} + */ +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Functions CORTEX Exported Functions + * @{ + */ + +/** @defgroup CORTEX_LL_EF_SYSTICK SYSTICK + * @{ + */ + +/** + * @brief This function checks if the Systick counter flag is active or not. + * @note It can be used in timeout function on application side. + * @rmtoll STK_CTRL COUNTFLAG LL_SYSTICK_IsActiveCounterFlag + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsActiveCounterFlag(void) +{ + return ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == (SysTick_CTRL_COUNTFLAG_Msk)); +} + +/** + * @brief Configures the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_SetClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_SetClkSource(uint32_t Source) +{ + if (Source == LL_SYSTICK_CLKSOURCE_HCLK) + { + SET_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } + else + { + CLEAR_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } +} + +/** + * @brief Get the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_GetClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + */ +__STATIC_INLINE uint32_t LL_SYSTICK_GetClkSource(void) +{ + return READ_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); +} + +/** + * @brief Enable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_EnableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_EnableIT(void) +{ + SET_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Disable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_DisableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_DisableIT(void) +{ + CLEAR_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Checks if the SYSTICK interrupt is enabled or disabled. + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_IsEnabledIT + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsEnabledIT(void) +{ + return (READ_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk) == (SysTick_CTRL_TICKINT_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_LOW_POWER_MODE LOW POWER MODE + * @{ + */ + +/** + * @brief Processor uses sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleep(void) +{ + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Processor uses deep sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableDeepSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableDeepSleep(void) +{ + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Configures sleep-on-exit when returning from Handler mode to Thread mode. + * @note Setting this bit to 1 enables an interrupt-driven application to avoid returning to an + * empty main application. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_EnableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleepOnExit(void) +{ + /* Set SLEEPONEXIT bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Do not sleep when returning to Thread mode. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_DisableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableSleepOnExit(void) +{ + /* Clear SLEEPONEXIT bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Enabled events and all interrupts, including disabled interrupts, can wakeup the + * processor. + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_EnableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableEventOnPend(void) +{ + /* Set SEVEONPEND bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @brief Only enabled interrupts or events can wakeup the processor, disabled interrupts are + * excluded + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_DisableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableEventOnPend(void) +{ + /* Clear SEVEONPEND bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_HANDLER HANDLER + * @{ + */ + +/** + * @brief Enable a fault in System handler control register (SHCSR) + * @rmtoll SCB_SHCSR MEMFAULTENA LL_HANDLER_EnableFault + * @param Fault This parameter can be a combination of the following values: + * @arg @ref LL_HANDLER_FAULT_USG + * @arg @ref LL_HANDLER_FAULT_BUS + * @arg @ref LL_HANDLER_FAULT_MEM + * @retval None + */ +__STATIC_INLINE void LL_HANDLER_EnableFault(uint32_t Fault) +{ + /* Enable the system handler fault */ + SET_BIT(SCB->SHCSR, Fault); +} + +/** + * @brief Disable a fault in System handler control register (SHCSR) + * @rmtoll SCB_SHCSR MEMFAULTENA LL_HANDLER_DisableFault + * @param Fault This parameter can be a combination of the following values: + * @arg @ref LL_HANDLER_FAULT_USG + * @arg @ref LL_HANDLER_FAULT_BUS + * @arg @ref LL_HANDLER_FAULT_MEM + * @retval None + */ +__STATIC_INLINE void LL_HANDLER_DisableFault(uint32_t Fault) +{ + /* Disable the system handler fault */ + CLEAR_BIT(SCB->SHCSR, Fault); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_MCU_INFO MCU INFO + * @{ + */ + +/** + * @brief Get Implementer code + * @rmtoll SCB_CPUID IMPLEMENTER LL_CPUID_GetImplementer + * @retval Value should be equal to 0x41 for ARM + */ +__STATIC_INLINE uint32_t LL_CPUID_GetImplementer(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_IMPLEMENTER_Msk) >> SCB_CPUID_IMPLEMENTER_Pos); +} + +/** + * @brief Get Variant number (The r value in the rnpn product revision identifier) + * @rmtoll SCB_CPUID VARIANT LL_CPUID_GetVariant + * @retval Value between 0 and 255 (0x1: revision 1, 0x2: revision 2) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetVariant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_VARIANT_Msk) >> SCB_CPUID_VARIANT_Pos); +} + +/** + * @brief Get Constant number + * @rmtoll SCB_CPUID ARCHITECTURE LL_CPUID_GetConstant + * @retval Value should be equal to 0xF for Cortex-M3 devices + */ +__STATIC_INLINE uint32_t LL_CPUID_GetConstant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_ARCHITECTURE_Msk) >> SCB_CPUID_ARCHITECTURE_Pos); +} + +/** + * @brief Get Part number + * @rmtoll SCB_CPUID PARTNO LL_CPUID_GetParNo + * @retval Value should be equal to 0xC23 for Cortex-M3 + */ +__STATIC_INLINE uint32_t LL_CPUID_GetParNo(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_PARTNO_Msk) >> SCB_CPUID_PARTNO_Pos); +} + +/** + * @brief Get Revision number (The p value in the rnpn product revision identifier, indicates patch release) + * @rmtoll SCB_CPUID REVISION LL_CPUID_GetRevision + * @retval Value between 0 and 255 (0x0: patch 0, 0x1: patch 1) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetRevision(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_REVISION_Msk) >> SCB_CPUID_REVISION_Pos); +} + +/** + * @} + */ + +#if __MPU_PRESENT +/** @defgroup CORTEX_LL_EF_MPU MPU + * @{ + */ + +/** + * @brief Enable MPU with input options + * @rmtoll MPU_CTRL ENABLE LL_MPU_Enable + * @param Options This parameter can be one of the following values: + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF_NONE + * @arg @ref LL_MPU_CTRL_HARDFAULT_NMI + * @arg @ref LL_MPU_CTRL_PRIVILEGED_DEFAULT + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF + * @retval None + */ +__STATIC_INLINE void LL_MPU_Enable(uint32_t Options) +{ + /* Enable the MPU*/ + WRITE_REG(MPU->CTRL, (MPU_CTRL_ENABLE_Msk | Options)); + /* Ensure MPU settings take effects */ + __DSB(); + /* Sequence instruction fetches using update settings */ + __ISB(); +} + +/** + * @brief Disable MPU + * @rmtoll MPU_CTRL ENABLE LL_MPU_Disable + * @retval None + */ +__STATIC_INLINE void LL_MPU_Disable(void) +{ + /* Make sure outstanding transfers are done */ + __DMB(); + /* Disable MPU*/ + WRITE_REG(MPU->CTRL, 0U); +} + +/** + * @brief Check if MPU is enabled or not + * @rmtoll MPU_CTRL ENABLE LL_MPU_IsEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_MPU_IsEnabled(void) +{ + return (READ_BIT(MPU->CTRL, MPU_CTRL_ENABLE_Msk) == (MPU_CTRL_ENABLE_Msk)); +} + +/** + * @brief Enable a MPU region + * @rmtoll MPU_RASR ENABLE LL_MPU_EnableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_EnableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Enable the MPU region */ + SET_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @brief Configure and enable a region + * @rmtoll MPU_RNR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR ADDR LL_MPU_ConfigRegion\n + * MPU_RASR XN LL_MPU_ConfigRegion\n + * MPU_RASR AP LL_MPU_ConfigRegion\n + * MPU_RASR S LL_MPU_ConfigRegion\n + * MPU_RASR C LL_MPU_ConfigRegion\n + * MPU_RASR B LL_MPU_ConfigRegion\n + * MPU_RASR SIZE LL_MPU_ConfigRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @param Address Value of region base address + * @param SubRegionDisable Sub-region disable value between Min_Data = 0x00 and Max_Data = 0xFF + * @param Attributes This parameter can be a combination of the following values: + * @arg @ref LL_MPU_REGION_SIZE_32B or @ref LL_MPU_REGION_SIZE_64B or @ref LL_MPU_REGION_SIZE_128B or @ref LL_MPU_REGION_SIZE_256B or @ref LL_MPU_REGION_SIZE_512B + * or @ref LL_MPU_REGION_SIZE_1KB or @ref LL_MPU_REGION_SIZE_2KB or @ref LL_MPU_REGION_SIZE_4KB or @ref LL_MPU_REGION_SIZE_8KB or @ref LL_MPU_REGION_SIZE_16KB + * or @ref LL_MPU_REGION_SIZE_32KB or @ref LL_MPU_REGION_SIZE_64KB or @ref LL_MPU_REGION_SIZE_128KB or @ref LL_MPU_REGION_SIZE_256KB or @ref LL_MPU_REGION_SIZE_512KB + * or @ref LL_MPU_REGION_SIZE_1MB or @ref LL_MPU_REGION_SIZE_2MB or @ref LL_MPU_REGION_SIZE_4MB or @ref LL_MPU_REGION_SIZE_8MB or @ref LL_MPU_REGION_SIZE_16MB + * or @ref LL_MPU_REGION_SIZE_32MB or @ref LL_MPU_REGION_SIZE_64MB or @ref LL_MPU_REGION_SIZE_128MB or @ref LL_MPU_REGION_SIZE_256MB or @ref LL_MPU_REGION_SIZE_512MB + * or @ref LL_MPU_REGION_SIZE_1GB or @ref LL_MPU_REGION_SIZE_2GB or @ref LL_MPU_REGION_SIZE_4GB + * @arg @ref LL_MPU_REGION_NO_ACCESS or @ref LL_MPU_REGION_PRIV_RW or @ref LL_MPU_REGION_PRIV_RW_URO or @ref LL_MPU_REGION_FULL_ACCESS + * or @ref LL_MPU_REGION_PRIV_RO or @ref LL_MPU_REGION_PRIV_RO_URO + * @arg @ref LL_MPU_TEX_LEVEL0 or @ref LL_MPU_TEX_LEVEL1 or @ref LL_MPU_TEX_LEVEL2 or @ref LL_MPU_TEX_LEVEL4 + * @arg @ref LL_MPU_INSTRUCTION_ACCESS_ENABLE or @ref LL_MPU_INSTRUCTION_ACCESS_DISABLE + * @arg @ref LL_MPU_ACCESS_SHAREABLE or @ref LL_MPU_ACCESS_NOT_SHAREABLE + * @arg @ref LL_MPU_ACCESS_CACHEABLE or @ref LL_MPU_ACCESS_NOT_CACHEABLE + * @arg @ref LL_MPU_ACCESS_BUFFERABLE or @ref LL_MPU_ACCESS_NOT_BUFFERABLE + * @retval None + */ +__STATIC_INLINE void LL_MPU_ConfigRegion(uint32_t Region, uint32_t SubRegionDisable, uint32_t Address, uint32_t Attributes) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Set base address */ + WRITE_REG(MPU->RBAR, (Address & 0xFFFFFFE0U)); + /* Configure MPU */ + WRITE_REG(MPU->RASR, (MPU_RASR_ENABLE_Msk | Attributes | SubRegionDisable << MPU_RASR_SRD_Pos)); +} + +/** + * @brief Disable a region + * @rmtoll MPU_RNR REGION LL_MPU_DisableRegion\n + * MPU_RASR ENABLE LL_MPU_DisableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_DisableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Disable the MPU region */ + CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @} + */ + +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_CORTEX_H */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h new file mode 100644 index 0000000..9c526e8 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h @@ -0,0 +1,1958 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_dma.h + * @author MCD Application Team + * @brief Header file of DMA LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_DMA_H +#define __STM32F1xx_LL_DMA_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (DMA1) || defined (DMA2) + +/** @defgroup DMA_LL DMA + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup DMA_LL_Private_Variables DMA Private Variables + * @{ + */ +/* Array used to get the DMA channel register offset versus channel index LL_DMA_CHANNEL_x */ +static const uint8_t CHANNEL_OFFSET_TAB[] = +{ + (uint8_t)(DMA1_Channel1_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel2_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel3_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel4_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel5_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel6_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel7_BASE - DMA1_BASE) +}; +/** + * @} + */ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_Private_Macros DMA Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_ES_INIT DMA Exported Init structure + * @{ + */ +typedef struct +{ + uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer + or as Source base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer + or as Destination base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, + from memory to memory or from peripheral to memory. + This parameter can be a value of @ref DMA_LL_EC_DIRECTION + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */ + + uint32_t Mode; /*!< Specifies the normal or circular operation mode. + This parameter can be a value of @ref DMA_LL_EC_MODE + @note: The circular buffer mode cannot be used if the memory to memory + data transfer direction is configured on the selected Channel + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */ + + uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_PERIPH + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */ + + uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_MEMORY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */ + + uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */ + + uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */ + + uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. + The data unit is equal to the source buffer configuration set in PeripheralSize + or MemorySize parameters depending in the transfer direction. + This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */ + + uint32_t Priority; /*!< Specifies the channel priority level. + This parameter can be a value of @ref DMA_LL_EC_PRIORITY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetChannelPriorityLevel(). */ + +} LL_DMA_InitTypeDef; +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Constants DMA Exported Constants + * @{ + */ +/** @defgroup DMA_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_DMA_WriteReg function + * @{ + */ +#define LL_DMA_IFCR_CGIF1 DMA_IFCR_CGIF1 /*!< Channel 1 global flag */ +#define LL_DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1 /*!< Channel 1 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1 /*!< Channel 1 half transfer flag */ +#define LL_DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1 /*!< Channel 1 transfer error flag */ +#define LL_DMA_IFCR_CGIF2 DMA_IFCR_CGIF2 /*!< Channel 2 global flag */ +#define LL_DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2 /*!< Channel 2 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2 /*!< Channel 2 half transfer flag */ +#define LL_DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2 /*!< Channel 2 transfer error flag */ +#define LL_DMA_IFCR_CGIF3 DMA_IFCR_CGIF3 /*!< Channel 3 global flag */ +#define LL_DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3 /*!< Channel 3 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3 /*!< Channel 3 half transfer flag */ +#define LL_DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3 /*!< Channel 3 transfer error flag */ +#define LL_DMA_IFCR_CGIF4 DMA_IFCR_CGIF4 /*!< Channel 4 global flag */ +#define LL_DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4 /*!< Channel 4 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4 /*!< Channel 4 half transfer flag */ +#define LL_DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4 /*!< Channel 4 transfer error flag */ +#define LL_DMA_IFCR_CGIF5 DMA_IFCR_CGIF5 /*!< Channel 5 global flag */ +#define LL_DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5 /*!< Channel 5 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5 /*!< Channel 5 half transfer flag */ +#define LL_DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5 /*!< Channel 5 transfer error flag */ +#define LL_DMA_IFCR_CGIF6 DMA_IFCR_CGIF6 /*!< Channel 6 global flag */ +#define LL_DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6 /*!< Channel 6 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6 /*!< Channel 6 half transfer flag */ +#define LL_DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6 /*!< Channel 6 transfer error flag */ +#define LL_DMA_IFCR_CGIF7 DMA_IFCR_CGIF7 /*!< Channel 7 global flag */ +#define LL_DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7 /*!< Channel 7 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7 /*!< Channel 7 half transfer flag */ +#define LL_DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7 /*!< Channel 7 transfer error flag */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_DMA_ReadReg function + * @{ + */ +#define LL_DMA_ISR_GIF1 DMA_ISR_GIF1 /*!< Channel 1 global flag */ +#define LL_DMA_ISR_TCIF1 DMA_ISR_TCIF1 /*!< Channel 1 transfer complete flag */ +#define LL_DMA_ISR_HTIF1 DMA_ISR_HTIF1 /*!< Channel 1 half transfer flag */ +#define LL_DMA_ISR_TEIF1 DMA_ISR_TEIF1 /*!< Channel 1 transfer error flag */ +#define LL_DMA_ISR_GIF2 DMA_ISR_GIF2 /*!< Channel 2 global flag */ +#define LL_DMA_ISR_TCIF2 DMA_ISR_TCIF2 /*!< Channel 2 transfer complete flag */ +#define LL_DMA_ISR_HTIF2 DMA_ISR_HTIF2 /*!< Channel 2 half transfer flag */ +#define LL_DMA_ISR_TEIF2 DMA_ISR_TEIF2 /*!< Channel 2 transfer error flag */ +#define LL_DMA_ISR_GIF3 DMA_ISR_GIF3 /*!< Channel 3 global flag */ +#define LL_DMA_ISR_TCIF3 DMA_ISR_TCIF3 /*!< Channel 3 transfer complete flag */ +#define LL_DMA_ISR_HTIF3 DMA_ISR_HTIF3 /*!< Channel 3 half transfer flag */ +#define LL_DMA_ISR_TEIF3 DMA_ISR_TEIF3 /*!< Channel 3 transfer error flag */ +#define LL_DMA_ISR_GIF4 DMA_ISR_GIF4 /*!< Channel 4 global flag */ +#define LL_DMA_ISR_TCIF4 DMA_ISR_TCIF4 /*!< Channel 4 transfer complete flag */ +#define LL_DMA_ISR_HTIF4 DMA_ISR_HTIF4 /*!< Channel 4 half transfer flag */ +#define LL_DMA_ISR_TEIF4 DMA_ISR_TEIF4 /*!< Channel 4 transfer error flag */ +#define LL_DMA_ISR_GIF5 DMA_ISR_GIF5 /*!< Channel 5 global flag */ +#define LL_DMA_ISR_TCIF5 DMA_ISR_TCIF5 /*!< Channel 5 transfer complete flag */ +#define LL_DMA_ISR_HTIF5 DMA_ISR_HTIF5 /*!< Channel 5 half transfer flag */ +#define LL_DMA_ISR_TEIF5 DMA_ISR_TEIF5 /*!< Channel 5 transfer error flag */ +#define LL_DMA_ISR_GIF6 DMA_ISR_GIF6 /*!< Channel 6 global flag */ +#define LL_DMA_ISR_TCIF6 DMA_ISR_TCIF6 /*!< Channel 6 transfer complete flag */ +#define LL_DMA_ISR_HTIF6 DMA_ISR_HTIF6 /*!< Channel 6 half transfer flag */ +#define LL_DMA_ISR_TEIF6 DMA_ISR_TEIF6 /*!< Channel 6 transfer error flag */ +#define LL_DMA_ISR_GIF7 DMA_ISR_GIF7 /*!< Channel 7 global flag */ +#define LL_DMA_ISR_TCIF7 DMA_ISR_TCIF7 /*!< Channel 7 transfer complete flag */ +#define LL_DMA_ISR_HTIF7 DMA_ISR_HTIF7 /*!< Channel 7 half transfer flag */ +#define LL_DMA_ISR_TEIF7 DMA_ISR_TEIF7 /*!< Channel 7 transfer error flag */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMA_WriteReg functions + * @{ + */ +#define LL_DMA_CCR_TCIE DMA_CCR_TCIE /*!< Transfer complete interrupt */ +#define LL_DMA_CCR_HTIE DMA_CCR_HTIE /*!< Half Transfer interrupt */ +#define LL_DMA_CCR_TEIE DMA_CCR_TEIE /*!< Transfer error interrupt */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_CHANNEL CHANNEL + * @{ + */ +#define LL_DMA_CHANNEL_1 0x00000001U /*!< DMA Channel 1 */ +#define LL_DMA_CHANNEL_2 0x00000002U /*!< DMA Channel 2 */ +#define LL_DMA_CHANNEL_3 0x00000003U /*!< DMA Channel 3 */ +#define LL_DMA_CHANNEL_4 0x00000004U /*!< DMA Channel 4 */ +#define LL_DMA_CHANNEL_5 0x00000005U /*!< DMA Channel 5 */ +#define LL_DMA_CHANNEL_6 0x00000006U /*!< DMA Channel 6 */ +#define LL_DMA_CHANNEL_7 0x00000007U /*!< DMA Channel 7 */ +#if defined(USE_FULL_LL_DRIVER) +#define LL_DMA_CHANNEL_ALL 0xFFFF0000U /*!< DMA Channel all (used only for function @ref LL_DMA_DeInit(). */ +#endif /*USE_FULL_LL_DRIVER*/ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_DIRECTION Transfer Direction + * @{ + */ +#define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CCR_DIR /*!< Memory to peripheral direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM /*!< Memory to memory direction */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MODE Transfer mode + * @{ + */ +#define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */ +#define LL_DMA_MODE_CIRCULAR DMA_CCR_CIRC /*!< Circular Mode */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PERIPH Peripheral increment mode + * @{ + */ +#define LL_DMA_PERIPH_INCREMENT DMA_CCR_PINC /*!< Peripheral increment mode Enable */ +#define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MEMORY Memory increment mode + * @{ + */ +#define LL_DMA_MEMORY_INCREMENT DMA_CCR_MINC /*!< Memory increment mode Enable */ +#define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PDATAALIGN Peripheral data alignment + * @{ + */ +#define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */ +#define LL_DMA_PDATAALIGN_HALFWORD DMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */ +#define LL_DMA_PDATAALIGN_WORD DMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MDATAALIGN Memory data alignment + * @{ + */ +#define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */ +#define LL_DMA_MDATAALIGN_HALFWORD DMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */ +#define LL_DMA_MDATAALIGN_WORD DMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PRIORITY Transfer Priority level + * @{ + */ +#define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */ +#define LL_DMA_PRIORITY_MEDIUM DMA_CCR_PL_0 /*!< Priority level : Medium */ +#define LL_DMA_PRIORITY_HIGH DMA_CCR_PL_1 /*!< Priority level : High */ +#define LL_DMA_PRIORITY_VERYHIGH DMA_CCR_PL /*!< Priority level : Very_High */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Macros DMA Exported Macros + * @{ + */ + +/** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros + * @{ + */ +/** + * @brief Write a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely + * @{ + */ + +/** + * @brief Convert DMAx_Channely into DMAx + * @param __CHANNEL_INSTANCE__ DMAx_Channely + * @retval DMAx + */ +#if defined(DMA2) +#define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)DMA1_Channel7)) ? DMA2 : DMA1) +#else +#define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (DMA1) +#endif + +/** + * @brief Convert DMAx_Channely into LL_DMA_CHANNEL_y + * @param __CHANNEL_INSTANCE__ DMAx_Channely + * @retval LL_DMA_CHANNEL_y + */ +#if defined (DMA2) +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#else +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#endif + +/** + * @brief Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely + * @param __DMA_INSTANCE__ DMAx + * @param __CHANNEL__ LL_DMA_CHANNEL_y + * @retval DMAx_Channely + */ +#if defined (DMA2) +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA2_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA2_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA2_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA2_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA2_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + DMA1_Channel7) +#else +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + DMA1_Channel7) +#endif + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Functions DMA Exported Functions + * @{ + */ + +/** @defgroup DMA_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Enable DMA channel. + * @rmtoll CCR EN LL_DMA_EnableChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_EN); +} + +/** + * @brief Disable DMA channel. + * @rmtoll CCR EN LL_DMA_DisableChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_EN); +} + +/** + * @brief Check if DMA channel is enabled or disabled. + * @rmtoll CCR EN LL_DMA_IsEnabledChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_EN) == (DMA_CCR_EN)); +} + +/** + * @brief Configure all parameters link to DMA transfer. + * @rmtoll CCR DIR LL_DMA_ConfigTransfer\n + * CCR MEM2MEM LL_DMA_ConfigTransfer\n + * CCR CIRC LL_DMA_ConfigTransfer\n + * CCR PINC LL_DMA_ConfigTransfer\n + * CCR MINC LL_DMA_ConfigTransfer\n + * CCR PSIZE LL_DMA_ConfigTransfer\n + * CCR MSIZE LL_DMA_ConfigTransfer\n + * CCR PL LL_DMA_ConfigTransfer + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR + * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT + * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT + * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD + * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD + * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM | DMA_CCR_CIRC | DMA_CCR_PINC | DMA_CCR_MINC | DMA_CCR_PSIZE | DMA_CCR_MSIZE | DMA_CCR_PL, + Configuration); +} + +/** + * @brief Set Data transfer direction (read from peripheral or from memory). + * @rmtoll CCR DIR LL_DMA_SetDataTransferDirection\n + * CCR MEM2MEM LL_DMA_SetDataTransferDirection + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM, Direction); +} + +/** + * @brief Get Data transfer direction (read from peripheral or from memory). + * @rmtoll CCR DIR LL_DMA_GetDataTransferDirection\n + * CCR MEM2MEM LL_DMA_GetDataTransferDirection + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM)); +} + +/** + * @brief Set DMA mode circular or normal. + * @note The circular buffer mode cannot be used if the memory-to-memory + * data transfer is configured on the selected Channel. + * @rmtoll CCR CIRC LL_DMA_SetMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_CIRC, + Mode); +} + +/** + * @brief Get DMA mode circular or normal. + * @rmtoll CCR CIRC LL_DMA_GetMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + */ +__STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_CIRC)); +} + +/** + * @brief Set Peripheral increment mode. + * @rmtoll CCR PINC LL_DMA_SetPeriphIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values: + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PINC, + PeriphOrM2MSrcIncMode); +} + +/** + * @brief Get Peripheral increment mode. + * @rmtoll CCR PINC LL_DMA_GetPeriphIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_PINC)); +} + +/** + * @brief Set Memory increment mode. + * @rmtoll CCR MINC LL_DMA_SetMemoryIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryOrM2MDstIncMode This parameter can be one of the following values: + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_MINC, + MemoryOrM2MDstIncMode); +} + +/** + * @brief Get Memory increment mode. + * @rmtoll CCR MINC LL_DMA_GetMemoryIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_MINC)); +} + +/** + * @brief Set Peripheral size. + * @rmtoll CCR PSIZE LL_DMA_SetPeriphSize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PSIZE, + PeriphOrM2MSrcDataSize); +} + +/** + * @brief Get Peripheral size. + * @rmtoll CCR PSIZE LL_DMA_GetPeriphSize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_PSIZE)); +} + +/** + * @brief Set Memory size. + * @rmtoll CCR MSIZE LL_DMA_SetMemorySize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryOrM2MDstDataSize This parameter can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_MSIZE, + MemoryOrM2MDstDataSize); +} + +/** + * @brief Get Memory size. + * @rmtoll CCR MSIZE LL_DMA_GetMemorySize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_MSIZE)); +} + +/** + * @brief Set Channel priority level. + * @rmtoll CCR PL LL_DMA_SetChannelPriorityLevel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Priority This parameter can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Priority) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PL, + Priority); +} + +/** + * @brief Get Channel priority level. + * @rmtoll CCR PL LL_DMA_GetChannelPriorityLevel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + */ +__STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_PL)); +} + +/** + * @brief Set Number of data to transfer. + * @note This action has no effect if + * channel is enabled. + * @rmtoll CNDTR NDT LL_DMA_SetDataLength + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t NbData) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CNDTR, + DMA_CNDTR_NDT, NbData); +} + +/** + * @brief Get Number of data to transfer. + * @note Once the channel is enabled, the return value indicate the + * remaining bytes to be transmitted. + * @rmtoll CNDTR NDT LL_DMA_GetDataLength + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CNDTR, + DMA_CNDTR_NDT)); +} + +/** + * @brief Configure the Source and Destination addresses. + * @note This API must not be called when the DMA channel is enabled. + * @note Each IP using DMA provides an API to get directly the register address (LL_PPP_DMA_GetRegAddr). + * @rmtoll CPAR PA LL_DMA_ConfigAddresses\n + * CMAR MA LL_DMA_ConfigAddresses + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress, + uint32_t DstAddress, uint32_t Direction) +{ + /* Direction Memory to Periph */ + if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) + { + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, SrcAddress); + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, DstAddress); + } + /* Direction Periph to Memory and Memory to Memory */ + else + { + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, SrcAddress); + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, DstAddress); + } +} + +/** + * @brief Set the Memory address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CMAR MA LL_DMA_SetMemoryAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, MemoryAddress); +} + +/** + * @brief Set the Peripheral address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CPAR PA LL_DMA_SetPeriphAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, PeriphAddress); +} + +/** + * @brief Get Memory address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @rmtoll CMAR MA LL_DMA_GetMemoryAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR)); +} + +/** + * @brief Get Peripheral address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @rmtoll CPAR PA LL_DMA_GetPeriphAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR)); +} + +/** + * @brief Set the Memory to Memory Source address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CPAR PA LL_DMA_SetM2MSrcAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, MemoryAddress); +} + +/** + * @brief Set the Memory to Memory Destination address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CMAR MA LL_DMA_SetM2MDstAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, MemoryAddress); +} + +/** + * @brief Get the Memory to Memory Source address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @rmtoll CPAR PA LL_DMA_GetM2MSrcAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR)); +} + +/** + * @brief Get the Memory to Memory Destination address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @rmtoll CMAR MA LL_DMA_GetM2MDstAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR)); +} + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Channel 1 global interrupt flag. + * @rmtoll ISR GIF1 LL_DMA_IsActiveFlag_GI1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF1) == (DMA_ISR_GIF1)); +} + +/** + * @brief Get Channel 2 global interrupt flag. + * @rmtoll ISR GIF2 LL_DMA_IsActiveFlag_GI2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF2) == (DMA_ISR_GIF2)); +} + +/** + * @brief Get Channel 3 global interrupt flag. + * @rmtoll ISR GIF3 LL_DMA_IsActiveFlag_GI3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF3) == (DMA_ISR_GIF3)); +} + +/** + * @brief Get Channel 4 global interrupt flag. + * @rmtoll ISR GIF4 LL_DMA_IsActiveFlag_GI4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF4) == (DMA_ISR_GIF4)); +} + +/** + * @brief Get Channel 5 global interrupt flag. + * @rmtoll ISR GIF5 LL_DMA_IsActiveFlag_GI5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF5) == (DMA_ISR_GIF5)); +} + +/** + * @brief Get Channel 6 global interrupt flag. + * @rmtoll ISR GIF6 LL_DMA_IsActiveFlag_GI6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF6) == (DMA_ISR_GIF6)); +} + +/** + * @brief Get Channel 7 global interrupt flag. + * @rmtoll ISR GIF7 LL_DMA_IsActiveFlag_GI7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF7) == (DMA_ISR_GIF7)); +} + +/** + * @brief Get Channel 1 transfer complete flag. + * @rmtoll ISR TCIF1 LL_DMA_IsActiveFlag_TC1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF1) == (DMA_ISR_TCIF1)); +} + +/** + * @brief Get Channel 2 transfer complete flag. + * @rmtoll ISR TCIF2 LL_DMA_IsActiveFlag_TC2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF2) == (DMA_ISR_TCIF2)); +} + +/** + * @brief Get Channel 3 transfer complete flag. + * @rmtoll ISR TCIF3 LL_DMA_IsActiveFlag_TC3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF3) == (DMA_ISR_TCIF3)); +} + +/** + * @brief Get Channel 4 transfer complete flag. + * @rmtoll ISR TCIF4 LL_DMA_IsActiveFlag_TC4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF4) == (DMA_ISR_TCIF4)); +} + +/** + * @brief Get Channel 5 transfer complete flag. + * @rmtoll ISR TCIF5 LL_DMA_IsActiveFlag_TC5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF5) == (DMA_ISR_TCIF5)); +} + +/** + * @brief Get Channel 6 transfer complete flag. + * @rmtoll ISR TCIF6 LL_DMA_IsActiveFlag_TC6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF6) == (DMA_ISR_TCIF6)); +} + +/** + * @brief Get Channel 7 transfer complete flag. + * @rmtoll ISR TCIF7 LL_DMA_IsActiveFlag_TC7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF7) == (DMA_ISR_TCIF7)); +} + +/** + * @brief Get Channel 1 half transfer flag. + * @rmtoll ISR HTIF1 LL_DMA_IsActiveFlag_HT1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF1) == (DMA_ISR_HTIF1)); +} + +/** + * @brief Get Channel 2 half transfer flag. + * @rmtoll ISR HTIF2 LL_DMA_IsActiveFlag_HT2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF2) == (DMA_ISR_HTIF2)); +} + +/** + * @brief Get Channel 3 half transfer flag. + * @rmtoll ISR HTIF3 LL_DMA_IsActiveFlag_HT3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF3) == (DMA_ISR_HTIF3)); +} + +/** + * @brief Get Channel 4 half transfer flag. + * @rmtoll ISR HTIF4 LL_DMA_IsActiveFlag_HT4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF4) == (DMA_ISR_HTIF4)); +} + +/** + * @brief Get Channel 5 half transfer flag. + * @rmtoll ISR HTIF5 LL_DMA_IsActiveFlag_HT5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF5) == (DMA_ISR_HTIF5)); +} + +/** + * @brief Get Channel 6 half transfer flag. + * @rmtoll ISR HTIF6 LL_DMA_IsActiveFlag_HT6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF6) == (DMA_ISR_HTIF6)); +} + +/** + * @brief Get Channel 7 half transfer flag. + * @rmtoll ISR HTIF7 LL_DMA_IsActiveFlag_HT7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF7) == (DMA_ISR_HTIF7)); +} + +/** + * @brief Get Channel 1 transfer error flag. + * @rmtoll ISR TEIF1 LL_DMA_IsActiveFlag_TE1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF1) == (DMA_ISR_TEIF1)); +} + +/** + * @brief Get Channel 2 transfer error flag. + * @rmtoll ISR TEIF2 LL_DMA_IsActiveFlag_TE2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF2) == (DMA_ISR_TEIF2)); +} + +/** + * @brief Get Channel 3 transfer error flag. + * @rmtoll ISR TEIF3 LL_DMA_IsActiveFlag_TE3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF3) == (DMA_ISR_TEIF3)); +} + +/** + * @brief Get Channel 4 transfer error flag. + * @rmtoll ISR TEIF4 LL_DMA_IsActiveFlag_TE4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF4) == (DMA_ISR_TEIF4)); +} + +/** + * @brief Get Channel 5 transfer error flag. + * @rmtoll ISR TEIF5 LL_DMA_IsActiveFlag_TE5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF5) == (DMA_ISR_TEIF5)); +} + +/** + * @brief Get Channel 6 transfer error flag. + * @rmtoll ISR TEIF6 LL_DMA_IsActiveFlag_TE6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF6) == (DMA_ISR_TEIF6)); +} + +/** + * @brief Get Channel 7 transfer error flag. + * @rmtoll ISR TEIF7 LL_DMA_IsActiveFlag_TE7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF7) == (DMA_ISR_TEIF7)); +} + +/** + * @brief Clear Channel 1 global interrupt flag. + * @rmtoll IFCR CGIF1 LL_DMA_ClearFlag_GI1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF1); +} + +/** + * @brief Clear Channel 2 global interrupt flag. + * @rmtoll IFCR CGIF2 LL_DMA_ClearFlag_GI2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF2); +} + +/** + * @brief Clear Channel 3 global interrupt flag. + * @rmtoll IFCR CGIF3 LL_DMA_ClearFlag_GI3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF3); +} + +/** + * @brief Clear Channel 4 global interrupt flag. + * @rmtoll IFCR CGIF4 LL_DMA_ClearFlag_GI4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF4); +} + +/** + * @brief Clear Channel 5 global interrupt flag. + * @rmtoll IFCR CGIF5 LL_DMA_ClearFlag_GI5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF5); +} + +/** + * @brief Clear Channel 6 global interrupt flag. + * @rmtoll IFCR CGIF6 LL_DMA_ClearFlag_GI6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF6); +} + +/** + * @brief Clear Channel 7 global interrupt flag. + * @rmtoll IFCR CGIF7 LL_DMA_ClearFlag_GI7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF7); +} + +/** + * @brief Clear Channel 1 transfer complete flag. + * @rmtoll IFCR CTCIF1 LL_DMA_ClearFlag_TC1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF1); +} + +/** + * @brief Clear Channel 2 transfer complete flag. + * @rmtoll IFCR CTCIF2 LL_DMA_ClearFlag_TC2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF2); +} + +/** + * @brief Clear Channel 3 transfer complete flag. + * @rmtoll IFCR CTCIF3 LL_DMA_ClearFlag_TC3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF3); +} + +/** + * @brief Clear Channel 4 transfer complete flag. + * @rmtoll IFCR CTCIF4 LL_DMA_ClearFlag_TC4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF4); +} + +/** + * @brief Clear Channel 5 transfer complete flag. + * @rmtoll IFCR CTCIF5 LL_DMA_ClearFlag_TC5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF5); +} + +/** + * @brief Clear Channel 6 transfer complete flag. + * @rmtoll IFCR CTCIF6 LL_DMA_ClearFlag_TC6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF6); +} + +/** + * @brief Clear Channel 7 transfer complete flag. + * @rmtoll IFCR CTCIF7 LL_DMA_ClearFlag_TC7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF7); +} + +/** + * @brief Clear Channel 1 half transfer flag. + * @rmtoll IFCR CHTIF1 LL_DMA_ClearFlag_HT1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF1); +} + +/** + * @brief Clear Channel 2 half transfer flag. + * @rmtoll IFCR CHTIF2 LL_DMA_ClearFlag_HT2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF2); +} + +/** + * @brief Clear Channel 3 half transfer flag. + * @rmtoll IFCR CHTIF3 LL_DMA_ClearFlag_HT3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF3); +} + +/** + * @brief Clear Channel 4 half transfer flag. + * @rmtoll IFCR CHTIF4 LL_DMA_ClearFlag_HT4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF4); +} + +/** + * @brief Clear Channel 5 half transfer flag. + * @rmtoll IFCR CHTIF5 LL_DMA_ClearFlag_HT5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF5); +} + +/** + * @brief Clear Channel 6 half transfer flag. + * @rmtoll IFCR CHTIF6 LL_DMA_ClearFlag_HT6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF6); +} + +/** + * @brief Clear Channel 7 half transfer flag. + * @rmtoll IFCR CHTIF7 LL_DMA_ClearFlag_HT7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF7); +} + +/** + * @brief Clear Channel 1 transfer error flag. + * @rmtoll IFCR CTEIF1 LL_DMA_ClearFlag_TE1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF1); +} + +/** + * @brief Clear Channel 2 transfer error flag. + * @rmtoll IFCR CTEIF2 LL_DMA_ClearFlag_TE2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF2); +} + +/** + * @brief Clear Channel 3 transfer error flag. + * @rmtoll IFCR CTEIF3 LL_DMA_ClearFlag_TE3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF3); +} + +/** + * @brief Clear Channel 4 transfer error flag. + * @rmtoll IFCR CTEIF4 LL_DMA_ClearFlag_TE4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF4); +} + +/** + * @brief Clear Channel 5 transfer error flag. + * @rmtoll IFCR CTEIF5 LL_DMA_ClearFlag_TE5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF5); +} + +/** + * @brief Clear Channel 6 transfer error flag. + * @rmtoll IFCR CTEIF6 LL_DMA_ClearFlag_TE6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF6); +} + +/** + * @brief Clear Channel 7 transfer error flag. + * @rmtoll IFCR CTEIF7 LL_DMA_ClearFlag_TE7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF7); +} + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable Transfer complete interrupt. + * @rmtoll CCR TCIE LL_DMA_EnableIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TCIE); +} + +/** + * @brief Enable Half transfer interrupt. + * @rmtoll CCR HTIE LL_DMA_EnableIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_HTIE); +} + +/** + * @brief Enable Transfer error interrupt. + * @rmtoll CCR TEIE LL_DMA_EnableIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TEIE); +} + +/** + * @brief Disable Transfer complete interrupt. + * @rmtoll CCR TCIE LL_DMA_DisableIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TCIE); +} + +/** + * @brief Disable Half transfer interrupt. + * @rmtoll CCR HTIE LL_DMA_DisableIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_HTIE); +} + +/** + * @brief Disable Transfer error interrupt. + * @rmtoll CCR TEIE LL_DMA_DisableIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TEIE); +} + +/** + * @brief Check if Transfer complete Interrupt is enabled. + * @rmtoll CCR TCIE LL_DMA_IsEnabledIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_TCIE) == (DMA_CCR_TCIE)); +} + +/** + * @brief Check if Half transfer Interrupt is enabled. + * @rmtoll CCR HTIE LL_DMA_IsEnabledIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_HTIE) == (DMA_CCR_HTIE)); +} + +/** + * @brief Check if Transfer error Interrupt is enabled. + * @rmtoll CCR TEIE LL_DMA_IsEnabledIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_TEIE) == (DMA_CCR_TEIE)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct); +uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel); +void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMA1 || DMA2 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_DMA_H */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h new file mode 100644 index 0000000..48a42f0 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h @@ -0,0 +1,886 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_exti.h + * @author MCD Application Team + * @brief Header file of EXTI LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_EXTI_H +#define STM32F1xx_LL_EXTI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (EXTI) + +/** @defgroup EXTI_LL EXTI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private Macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_Private_Macros EXTI Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_ES_INIT EXTI Exported Init structure + * @{ + */ +typedef struct +{ + + uint32_t Line_0_31; /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 0 to 31 + This parameter can be any combination of @ref EXTI_LL_EC_LINE */ + + FunctionalState LineCommand; /*!< Specifies the new state of the selected EXTI lines. + This parameter can be set either to ENABLE or DISABLE */ + + uint8_t Mode; /*!< Specifies the mode for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_MODE. */ + + uint8_t Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_TRIGGER. */ +} LL_EXTI_InitTypeDef; + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Constants EXTI Exported Constants + * @{ + */ + +/** @defgroup EXTI_LL_EC_LINE LINE + * @{ + */ +#define LL_EXTI_LINE_0 EXTI_IMR_IM0 /*!< Extended line 0 */ +#define LL_EXTI_LINE_1 EXTI_IMR_IM1 /*!< Extended line 1 */ +#define LL_EXTI_LINE_2 EXTI_IMR_IM2 /*!< Extended line 2 */ +#define LL_EXTI_LINE_3 EXTI_IMR_IM3 /*!< Extended line 3 */ +#define LL_EXTI_LINE_4 EXTI_IMR_IM4 /*!< Extended line 4 */ +#define LL_EXTI_LINE_5 EXTI_IMR_IM5 /*!< Extended line 5 */ +#define LL_EXTI_LINE_6 EXTI_IMR_IM6 /*!< Extended line 6 */ +#define LL_EXTI_LINE_7 EXTI_IMR_IM7 /*!< Extended line 7 */ +#define LL_EXTI_LINE_8 EXTI_IMR_IM8 /*!< Extended line 8 */ +#define LL_EXTI_LINE_9 EXTI_IMR_IM9 /*!< Extended line 9 */ +#define LL_EXTI_LINE_10 EXTI_IMR_IM10 /*!< Extended line 10 */ +#define LL_EXTI_LINE_11 EXTI_IMR_IM11 /*!< Extended line 11 */ +#define LL_EXTI_LINE_12 EXTI_IMR_IM12 /*!< Extended line 12 */ +#define LL_EXTI_LINE_13 EXTI_IMR_IM13 /*!< Extended line 13 */ +#define LL_EXTI_LINE_14 EXTI_IMR_IM14 /*!< Extended line 14 */ +#define LL_EXTI_LINE_15 EXTI_IMR_IM15 /*!< Extended line 15 */ +#if defined(EXTI_IMR_IM16) +#define LL_EXTI_LINE_16 EXTI_IMR_IM16 /*!< Extended line 16 */ +#endif +#define LL_EXTI_LINE_17 EXTI_IMR_IM17 /*!< Extended line 17 */ +#if defined(EXTI_IMR_IM18) +#define LL_EXTI_LINE_18 EXTI_IMR_IM18 /*!< Extended line 18 */ +#endif +#if defined(EXTI_IMR_IM19) +#define LL_EXTI_LINE_19 EXTI_IMR_IM19 /*!< Extended line 19 */ +#endif +#if defined(EXTI_IMR_IM20) +#define LL_EXTI_LINE_20 EXTI_IMR_IM20 /*!< Extended line 20 */ +#endif +#if defined(EXTI_IMR_IM21) +#define LL_EXTI_LINE_21 EXTI_IMR_IM21 /*!< Extended line 21 */ +#endif +#if defined(EXTI_IMR_IM22) +#define LL_EXTI_LINE_22 EXTI_IMR_IM22 /*!< Extended line 22 */ +#endif +#if defined(EXTI_IMR_IM23) +#define LL_EXTI_LINE_23 EXTI_IMR_IM23 /*!< Extended line 23 */ +#endif +#if defined(EXTI_IMR_IM24) +#define LL_EXTI_LINE_24 EXTI_IMR_IM24 /*!< Extended line 24 */ +#endif +#if defined(EXTI_IMR_IM25) +#define LL_EXTI_LINE_25 EXTI_IMR_IM25 /*!< Extended line 25 */ +#endif +#if defined(EXTI_IMR_IM26) +#define LL_EXTI_LINE_26 EXTI_IMR_IM26 /*!< Extended line 26 */ +#endif +#if defined(EXTI_IMR_IM27) +#define LL_EXTI_LINE_27 EXTI_IMR_IM27 /*!< Extended line 27 */ +#endif +#if defined(EXTI_IMR_IM28) +#define LL_EXTI_LINE_28 EXTI_IMR_IM28 /*!< Extended line 28 */ +#endif +#if defined(EXTI_IMR_IM29) +#define LL_EXTI_LINE_29 EXTI_IMR_IM29 /*!< Extended line 29 */ +#endif +#if defined(EXTI_IMR_IM30) +#define LL_EXTI_LINE_30 EXTI_IMR_IM30 /*!< Extended line 30 */ +#endif +#if defined(EXTI_IMR_IM31) +#define LL_EXTI_LINE_31 EXTI_IMR_IM31 /*!< Extended line 31 */ +#endif +#define LL_EXTI_LINE_ALL_0_31 EXTI_IMR_IM /*!< All Extended line not reserved*/ + + +#define LL_EXTI_LINE_ALL (0xFFFFFFFFU) /*!< All Extended line */ + +#if defined(USE_FULL_LL_DRIVER) +#define LL_EXTI_LINE_NONE (0x00000000U) /*!< None Extended line */ +#endif /*USE_FULL_LL_DRIVER*/ + +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup EXTI_LL_EC_MODE Mode + * @{ + */ +#define LL_EXTI_MODE_IT ((uint8_t)0x00) /*!< Interrupt Mode */ +#define LL_EXTI_MODE_EVENT ((uint8_t)0x01) /*!< Event Mode */ +#define LL_EXTI_MODE_IT_EVENT ((uint8_t)0x02) /*!< Interrupt & Event Mode */ +/** + * @} + */ + +/** @defgroup EXTI_LL_EC_TRIGGER Edge Trigger + * @{ + */ +#define LL_EXTI_TRIGGER_NONE ((uint8_t)0x00) /*!< No Trigger Mode */ +#define LL_EXTI_TRIGGER_RISING ((uint8_t)0x01) /*!< Trigger Rising Mode */ +#define LL_EXTI_TRIGGER_FALLING ((uint8_t)0x02) /*!< Trigger Falling Mode */ +#define LL_EXTI_TRIGGER_RISING_FALLING ((uint8_t)0x03) /*!< Trigger Rising & Falling Mode */ + +/** + * @} + */ + + +#endif /*USE_FULL_LL_DRIVER*/ + + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Macros EXTI Exported Macros + * @{ + */ + +/** @defgroup EXTI_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in EXTI register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_EXTI_WriteReg(__REG__, __VALUE__) WRITE_REG(EXTI->__REG__, (__VALUE__)) + +/** + * @brief Read a value in EXTI register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_EXTI_ReadReg(__REG__) READ_REG(EXTI->__REG__) +/** + * @} + */ + + +/** + * @} + */ + + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Functions EXTI Exported Functions + * @{ + */ +/** @defgroup EXTI_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_EnableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableIT_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->IMR, ExtiLine); +} + +/** + * @brief Disable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_DisableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableIT_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->IMR, ExtiLine); +} + + +/** + * @brief Indicate if ExtiLine Interrupt request is enabled for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_IsEnabledIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->IMR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Event_Management Event_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_EnableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->EMR, ExtiLine); + +} + + +/** + * @brief Disable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_DisableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->EMR, ExtiLine); +} + + +/** + * @brief Indicate if ExtiLine Event request is enabled for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_IsEnabledEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->EMR, ExtiLine) == (ExtiLine)); + +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Rising_Trigger_Management Rising_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR RTx LL_EXTI_EnableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->RTSR, ExtiLine); + +} + + +/** + * @brief Disable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR RTx LL_EXTI_DisableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->RTSR, ExtiLine); + +} + + +/** + * @brief Check if rising edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll RTSR RTx LL_EXTI_IsEnabledRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->RTSR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Falling_Trigger_Management Falling_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll FTSR FTx LL_EXTI_EnableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->FTSR, ExtiLine); +} + + +/** + * @brief Disable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a Falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for the same interrupt line. + * In this case, both generate a trigger condition. + * @rmtoll FTSR FTx LL_EXTI_DisableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->FTSR, ExtiLine); +} + + +/** + * @brief Check if falling edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll FTSR FTx LL_EXTI_IsEnabledFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->FTSR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Software_Interrupt_Management Software_Interrupt_Management + * @{ + */ + +/** + * @brief Generate a software Interrupt Event for Lines in range 0 to 31 + * @note If the interrupt is enabled on this line in the EXTI_IMR, writing a 1 to + * this bit when it is at '0' sets the corresponding pending bit in EXTI_PR + * resulting in an interrupt request generation. + * This bit is cleared by clearing the corresponding bit in the EXTI_PR + * register (by writing a 1 into the bit) + * @rmtoll SWIER SWIx LL_EXTI_GenerateSWI_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_GenerateSWI_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->SWIER, ExtiLine); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Flag_Management Flag_Management + * @{ + */ + +/** + * @brief Check if the ExtLine Flag is set or not for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_IsActiveFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsActiveFlag_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->PR, ExtiLine) == (ExtiLine)); +} + + +/** + * @brief Read ExtLine Combination Flag for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_ReadFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval @note This bit is set when the selected edge event arrives on the interrupt + */ +__STATIC_INLINE uint32_t LL_EXTI_ReadFlag_0_31(uint32_t ExtiLine) +{ + return (uint32_t)(READ_BIT(EXTI->PR, ExtiLine)); +} + + +/** + * @brief Clear ExtLine Flags for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_ClearFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_ClearFlag_0_31(uint32_t ExtiLine) +{ + WRITE_REG(EXTI->PR, ExtiLine); +} + + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct); +uint32_t LL_EXTI_DeInit(void); +void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct); + + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* EXTI */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_EXTI_H */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h new file mode 100644 index 0000000..7058686 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h @@ -0,0 +1,2341 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_gpio.h + * @author MCD Application Team + * @brief Header file of GPIO LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_GPIO_H +#define STM32F1xx_LL_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) + +/** @defgroup GPIO_LL GPIO + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ + +/** @defgroup GPIO_LL_Private_Constants GPIO Private Constants + * @{ + */ +/* Defines used for Pin Mask Initialization */ +#define GPIO_PIN_MASK_POS 8U +#define GPIO_PIN_NB 16U +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_Private_Macros GPIO Private Macros + * @{ + */ + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures + * @{ + */ + +/** + * @brief LL GPIO Init Structure definition + */ +typedef struct +{ + uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_LL_EC_PIN */ + + uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_MODE. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/ + + uint32_t Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_SPEED. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/ + + uint32_t OutputType; /*!< Specifies the operating output type for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_OUTPUT. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/ + + uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_PULL. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/ +} LL_GPIO_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants + * @{ + */ + +/** @defgroup GPIO_LL_EC_PIN PIN + * @{ + */ +#define LL_GPIO_PIN_0 ((GPIO_BSRR_BS0 << GPIO_PIN_MASK_POS) | 0x00000001U) /*!< Select pin 0 */ +#define LL_GPIO_PIN_1 ((GPIO_BSRR_BS1 << GPIO_PIN_MASK_POS) | 0x00000002U) /*!< Select pin 1 */ +#define LL_GPIO_PIN_2 ((GPIO_BSRR_BS2 << GPIO_PIN_MASK_POS) | 0x00000004U) /*!< Select pin 2 */ +#define LL_GPIO_PIN_3 ((GPIO_BSRR_BS3 << GPIO_PIN_MASK_POS) | 0x00000008U) /*!< Select pin 3 */ +#define LL_GPIO_PIN_4 ((GPIO_BSRR_BS4 << GPIO_PIN_MASK_POS) | 0x00000010U) /*!< Select pin 4 */ +#define LL_GPIO_PIN_5 ((GPIO_BSRR_BS5 << GPIO_PIN_MASK_POS) | 0x00000020U) /*!< Select pin 5 */ +#define LL_GPIO_PIN_6 ((GPIO_BSRR_BS6 << GPIO_PIN_MASK_POS) | 0x00000040U) /*!< Select pin 6 */ +#define LL_GPIO_PIN_7 ((GPIO_BSRR_BS7 << GPIO_PIN_MASK_POS) | 0x00000080U) /*!< Select pin 7 */ +#define LL_GPIO_PIN_8 ((GPIO_BSRR_BS8 << GPIO_PIN_MASK_POS) | 0x04000001U) /*!< Select pin 8 */ +#define LL_GPIO_PIN_9 ((GPIO_BSRR_BS9 << GPIO_PIN_MASK_POS) | 0x04000002U) /*!< Select pin 9 */ +#define LL_GPIO_PIN_10 ((GPIO_BSRR_BS10 << GPIO_PIN_MASK_POS) | 0x04000004U) /*!< Select pin 10 */ +#define LL_GPIO_PIN_11 ((GPIO_BSRR_BS11 << GPIO_PIN_MASK_POS) | 0x04000008U) /*!< Select pin 11 */ +#define LL_GPIO_PIN_12 ((GPIO_BSRR_BS12 << GPIO_PIN_MASK_POS) | 0x04000010U) /*!< Select pin 12 */ +#define LL_GPIO_PIN_13 ((GPIO_BSRR_BS13 << GPIO_PIN_MASK_POS) | 0x04000020U) /*!< Select pin 13 */ +#define LL_GPIO_PIN_14 ((GPIO_BSRR_BS14 << GPIO_PIN_MASK_POS) | 0x04000040U) /*!< Select pin 14 */ +#define LL_GPIO_PIN_15 ((GPIO_BSRR_BS15 << GPIO_PIN_MASK_POS) | 0x04000080U) /*!< Select pin 15 */ +#define LL_GPIO_PIN_ALL (LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | \ + LL_GPIO_PIN_3 | LL_GPIO_PIN_4 | LL_GPIO_PIN_5 | \ + LL_GPIO_PIN_6 | LL_GPIO_PIN_7 | LL_GPIO_PIN_8 | \ + LL_GPIO_PIN_9 | LL_GPIO_PIN_10 | LL_GPIO_PIN_11 | \ + LL_GPIO_PIN_12 | LL_GPIO_PIN_13 | LL_GPIO_PIN_14 | \ + LL_GPIO_PIN_15) /*!< Select all pins */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_MODE Mode + * @{ + */ +#define LL_GPIO_MODE_ANALOG 0x00000000U /*!< Select analog mode */ +#define LL_GPIO_MODE_FLOATING GPIO_CRL_CNF0_0 /*!< Select floating mode */ +#define LL_GPIO_MODE_INPUT GPIO_CRL_CNF0_1 /*!< Select input mode */ +#define LL_GPIO_MODE_OUTPUT GPIO_CRL_MODE0_0 /*!< Select general purpose output mode */ +#define LL_GPIO_MODE_ALTERNATE (GPIO_CRL_CNF0_1 | GPIO_CRL_MODE0_0) /*!< Select alternate function mode */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_OUTPUT Output Type + * @{ + */ +#define LL_GPIO_OUTPUT_PUSHPULL 0x00000000U /*!< Select push-pull as output type */ +#define LL_GPIO_OUTPUT_OPENDRAIN GPIO_CRL_CNF0_0 /*!< Select open-drain as output type */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_SPEED Output Speed + * @{ + */ +#define LL_GPIO_MODE_OUTPUT_10MHz GPIO_CRL_MODE0_0 /*!< Select Output mode, max speed 10 MHz */ +#define LL_GPIO_MODE_OUTPUT_2MHz GPIO_CRL_MODE0_1 /*!< Select Output mode, max speed 20 MHz */ +#define LL_GPIO_MODE_OUTPUT_50MHz GPIO_CRL_MODE0 /*!< Select Output mode, max speed 50 MHz */ +/** + * @} + */ + +#define LL_GPIO_SPEED_FREQ_LOW LL_GPIO_MODE_OUTPUT_2MHz /*!< Select I/O low output speed */ +#define LL_GPIO_SPEED_FREQ_MEDIUM LL_GPIO_MODE_OUTPUT_10MHz /*!< Select I/O medium output speed */ +#define LL_GPIO_SPEED_FREQ_HIGH LL_GPIO_MODE_OUTPUT_50MHz /*!< Select I/O high output speed */ + +/** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down + * @{ + */ +#define LL_GPIO_PULL_DOWN 0x00000000U /*!< Select I/O pull down */ +#define LL_GPIO_PULL_UP GPIO_ODR_ODR0 /*!< Select I/O pull up */ + +/** + * @} + */ + +/** @defgroup GPIO_LL_EVENTOUT_PIN EVENTOUT Pin + * @{ + */ + +#define LL_GPIO_AF_EVENTOUT_PIN_0 AFIO_EVCR_PIN_PX0 /*!< EVENTOUT on pin 0 */ +#define LL_GPIO_AF_EVENTOUT_PIN_1 AFIO_EVCR_PIN_PX1 /*!< EVENTOUT on pin 1 */ +#define LL_GPIO_AF_EVENTOUT_PIN_2 AFIO_EVCR_PIN_PX2 /*!< EVENTOUT on pin 2 */ +#define LL_GPIO_AF_EVENTOUT_PIN_3 AFIO_EVCR_PIN_PX3 /*!< EVENTOUT on pin 3 */ +#define LL_GPIO_AF_EVENTOUT_PIN_4 AFIO_EVCR_PIN_PX4 /*!< EVENTOUT on pin 4 */ +#define LL_GPIO_AF_EVENTOUT_PIN_5 AFIO_EVCR_PIN_PX5 /*!< EVENTOUT on pin 5 */ +#define LL_GPIO_AF_EVENTOUT_PIN_6 AFIO_EVCR_PIN_PX6 /*!< EVENTOUT on pin 6 */ +#define LL_GPIO_AF_EVENTOUT_PIN_7 AFIO_EVCR_PIN_PX7 /*!< EVENTOUT on pin 7 */ +#define LL_GPIO_AF_EVENTOUT_PIN_8 AFIO_EVCR_PIN_PX8 /*!< EVENTOUT on pin 8 */ +#define LL_GPIO_AF_EVENTOUT_PIN_9 AFIO_EVCR_PIN_PX9 /*!< EVENTOUT on pin 9 */ +#define LL_GPIO_AF_EVENTOUT_PIN_10 AFIO_EVCR_PIN_PX10 /*!< EVENTOUT on pin 10 */ +#define LL_GPIO_AF_EVENTOUT_PIN_11 AFIO_EVCR_PIN_PX11 /*!< EVENTOUT on pin 11 */ +#define LL_GPIO_AF_EVENTOUT_PIN_12 AFIO_EVCR_PIN_PX12 /*!< EVENTOUT on pin 12 */ +#define LL_GPIO_AF_EVENTOUT_PIN_13 AFIO_EVCR_PIN_PX13 /*!< EVENTOUT on pin 13 */ +#define LL_GPIO_AF_EVENTOUT_PIN_14 AFIO_EVCR_PIN_PX14 /*!< EVENTOUT on pin 14 */ +#define LL_GPIO_AF_EVENTOUT_PIN_15 AFIO_EVCR_PIN_PX15 /*!< EVENTOUT on pin 15 */ + +/** + * @} + */ + +/** @defgroup GPIO_LL_EVENTOUT_PORT EVENTOUT Port + * @{ + */ + +#define LL_GPIO_AF_EVENTOUT_PORT_A AFIO_EVCR_PORT_PA /*!< EVENTOUT on port A */ +#define LL_GPIO_AF_EVENTOUT_PORT_B AFIO_EVCR_PORT_PB /*!< EVENTOUT on port B */ +#define LL_GPIO_AF_EVENTOUT_PORT_C AFIO_EVCR_PORT_PC /*!< EVENTOUT on port C */ +#define LL_GPIO_AF_EVENTOUT_PORT_D AFIO_EVCR_PORT_PD /*!< EVENTOUT on port D */ +#define LL_GPIO_AF_EVENTOUT_PORT_E AFIO_EVCR_PORT_PE /*!< EVENTOUT on port E */ + +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_EXTI_PORT GPIO EXTI PORT + * @{ + */ +#define LL_GPIO_AF_EXTI_PORTA 0U /*!< EXTI PORT A */ +#define LL_GPIO_AF_EXTI_PORTB 1U /*!< EXTI PORT B */ +#define LL_GPIO_AF_EXTI_PORTC 2U /*!< EXTI PORT C */ +#define LL_GPIO_AF_EXTI_PORTD 3U /*!< EXTI PORT D */ +#define LL_GPIO_AF_EXTI_PORTE 4U /*!< EXTI PORT E */ +#define LL_GPIO_AF_EXTI_PORTF 5U /*!< EXTI PORT F */ +#define LL_GPIO_AF_EXTI_PORTG 6U /*!< EXTI PORT G */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_EXTI_LINE GPIO EXTI LINE + * @{ + */ +#define LL_GPIO_AF_EXTI_LINE0 (0x000FU << 16U | 0U) /*!< EXTI_POSITION_0 | EXTICR[0] */ +#define LL_GPIO_AF_EXTI_LINE1 (0x00F0U << 16U | 0U) /*!< EXTI_POSITION_4 | EXTICR[0] */ +#define LL_GPIO_AF_EXTI_LINE2 (0x0F00U << 16U | 0U) /*!< EXTI_POSITION_8 | EXTICR[0] */ +#define LL_GPIO_AF_EXTI_LINE3 (0xF000U << 16U | 0U) /*!< EXTI_POSITION_12 | EXTICR[0] */ +#define LL_GPIO_AF_EXTI_LINE4 (0x000FU << 16U | 1U) /*!< EXTI_POSITION_0 | EXTICR[1] */ +#define LL_GPIO_AF_EXTI_LINE5 (0x00F0U << 16U | 1U) /*!< EXTI_POSITION_4 | EXTICR[1] */ +#define LL_GPIO_AF_EXTI_LINE6 (0x0F00U << 16U | 1U) /*!< EXTI_POSITION_8 | EXTICR[1] */ +#define LL_GPIO_AF_EXTI_LINE7 (0xF000U << 16U | 1U) /*!< EXTI_POSITION_12 | EXTICR[1] */ +#define LL_GPIO_AF_EXTI_LINE8 (0x000FU << 16U | 2U) /*!< EXTI_POSITION_0 | EXTICR[2] */ +#define LL_GPIO_AF_EXTI_LINE9 (0x00F0U << 16U | 2U) /*!< EXTI_POSITION_4 | EXTICR[2] */ +#define LL_GPIO_AF_EXTI_LINE10 (0x0F00U << 16U | 2U) /*!< EXTI_POSITION_8 | EXTICR[2] */ +#define LL_GPIO_AF_EXTI_LINE11 (0xF000U << 16U | 2U) /*!< EXTI_POSITION_12 | EXTICR[2] */ +#define LL_GPIO_AF_EXTI_LINE12 (0x000FU << 16U | 3U) /*!< EXTI_POSITION_0 | EXTICR[3] */ +#define LL_GPIO_AF_EXTI_LINE13 (0x00F0U << 16U | 3U) /*!< EXTI_POSITION_4 | EXTICR[3] */ +#define LL_GPIO_AF_EXTI_LINE14 (0x0F00U << 16U | 3U) /*!< EXTI_POSITION_8 | EXTICR[3] */ +#define LL_GPIO_AF_EXTI_LINE15 (0xF000U << 16U | 3U) /*!< EXTI_POSITION_12 | EXTICR[3] */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros + * @{ + */ + +/** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions + * @{ + */ + +/** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration + * @{ + */ + +/** + * @brief Configure gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Analog, Floating input, Input with pull-up/pull-down, General purpose Output, + * Alternate function Output. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll CRL CNFy LL_GPIO_SetPinMode + * @rmtoll CRL MODEy LL_GPIO_SetPinMode + * @rmtoll CRH CNFy LL_GPIO_SetPinMode + * @rmtoll CRH MODEy LL_GPIO_SetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_GPIO_MODE_ANALOG + * @arg @ref LL_GPIO_MODE_FLOATING + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); + MODIFY_REG(*pReg, ((GPIO_CRL_CNF0 | GPIO_CRL_MODE0) << (POSITION_VAL(Pin) * 4U)), (Mode << (POSITION_VAL(Pin) * 4U))); +} + +/** + * @brief Return gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Analog, Floating input, Input with pull-up/pull-down, General purpose Output, + * Alternate function Output. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll CRL CNFy LL_GPIO_GetPinMode + * @rmtoll CRL MODEy LL_GPIO_GetPinMode + * @rmtoll CRH CNFy LL_GPIO_GetPinMode + * @rmtoll CRH MODEy LL_GPIO_GetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_MODE_ANALOG + * @arg @ref LL_GPIO_MODE_FLOATING + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); + return (READ_BIT(*pReg, ((GPIO_CRL_CNF0 | GPIO_CRL_MODE0) << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); +} + +/** + * @brief Configure gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium or Fast speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll CRL MODEy LL_GPIO_SetPinSpeed + * @rmtoll CRH MODEy LL_GPIO_SetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Speed This parameter can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); + MODIFY_REG(*pReg, (GPIO_CRL_MODE0 << (POSITION_VAL(Pin) * 4U)), + (Speed << (POSITION_VAL(Pin) * 4U))); +} + +/** + * @brief Return gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium, Fast or High speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll CRL MODEy LL_GPIO_GetPinSpeed + * @rmtoll CRH MODEy LL_GPIO_GetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); + return (READ_BIT(*pReg, (GPIO_CRL_MODE0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); +} + +/** + * @brief Configure gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @rmtoll CRL MODEy LL_GPIO_SetPinOutputType + * @rmtoll CRH MODEy LL_GPIO_SetPinOutputType + * @param GPIOx GPIO Port + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @param OutputType This parameter can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t OutputType) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); + MODIFY_REG(*pReg, (GPIO_CRL_CNF0_0 << (POSITION_VAL(Pin) * 4U)), + (OutputType << (POSITION_VAL(Pin) * 4U))); +} + +/** + * @brief Return gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll CRL MODEy LL_GPIO_GetPinOutputType + * @rmtoll CRH MODEy LL_GPIO_GetPinOutputType + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)((uint32_t)(&GPIOx->CRL) + (Pin >> 24))); + return (READ_BIT(*pReg, (GPIO_CRL_CNF0_0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); + +} + +/** + * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll ODR ODR LL_GPIO_SetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Pull This parameter can be one of the following values: + * @arg @ref LL_GPIO_PULL_DOWN + * @arg @ref LL_GPIO_PULL_UP + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull) +{ + MODIFY_REG(GPIOx->ODR, (Pin >> GPIO_PIN_MASK_POS), Pull << (POSITION_VAL(Pin >> GPIO_PIN_MASK_POS))); +} + +/** + * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port + * @note Warning: only one pin can be passed as parameter. + * @rmtoll ODR ODR LL_GPIO_GetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_PULL_DOWN + * @arg @ref LL_GPIO_PULL_UP + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (READ_BIT(GPIOx->ODR, (GPIO_ODR_ODR0 << (POSITION_VAL(Pin >> GPIO_PIN_MASK_POS)))) >> (POSITION_VAL(Pin >> GPIO_PIN_MASK_POS))); +} + +/** + * @brief Lock configuration of several pins for a dedicated port. + * @note When the lock sequence has been applied on a port bit, the + * value of this port bit can no longer be modified until the + * next reset. + * @note Each lock bit freezes a specific configuration register + * (control and alternate function registers). + * @rmtoll LCKR LCKK LL_GPIO_LockPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + __IO uint32_t temp; + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); + WRITE_REG(GPIOx->LCKR, ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); + temp = READ_REG(GPIOx->LCKR); + (void) temp; +} + +/** + * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0. + * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->LCKR, ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)) == ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); +} + +/** + * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0. + * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked + * @param GPIOx GPIO Port + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) +{ + return (READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK)); +} + +/** + * @} + */ + +/** @defgroup GPIO_LL_EF_Data_Access Data Access + * @{ + */ + +/** + * @brief Return full input data register value for a dedicated port. + * @rmtoll IDR IDy LL_GPIO_ReadInputPort + * @param GPIOx GPIO Port + * @retval Input data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) +{ + return (READ_REG(GPIOx->IDR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll IDR IDy LL_GPIO_IsInputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->IDR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU) == ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); +} + +/** + * @brief Write output data register for the port. + * @rmtoll ODR ODy LL_GPIO_WriteOutputPort + * @param GPIOx GPIO Port + * @param PortValue Level value for each pin of the port + * @retval None + */ +__STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue) +{ + WRITE_REG(GPIOx->ODR, PortValue); +} + +/** + * @brief Return full output data register value for a dedicated port. + * @rmtoll ODR ODy LL_GPIO_ReadOutputPort + * @param GPIOx GPIO Port + * @retval Output data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) +{ + return (uint32_t)(READ_REG(GPIOx->ODR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->ODR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU) == ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); +} + +/** + * @brief Set several pins to high level on dedicated gpio port. + * @rmtoll BSRR BSy LL_GPIO_SetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BSRR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU); +} + +/** + * @brief Set several pins to low level on dedicated gpio port. + * @rmtoll BRR BRy LL_GPIO_ResetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BRR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU); +} + +/** + * @brief Toggle data value for several pin of dedicated port. + * @rmtoll ODR ODy LL_GPIO_TogglePin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + uint32_t odr = READ_REG(GPIOx->ODR); + uint32_t pinmask = ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU); + WRITE_REG(GPIOx->BSRR, ((odr & pinmask) << 16u) | (~odr & pinmask)); +} + +/** + * @} + */ + +/** @defgroup GPIO_AF_REMAPPING Alternate Function Remapping + * @brief This section propose definition to remap the alternate function to some other port/pins. + * @{ + */ + +/** + * @brief Enable the remapping of SPI1 alternate function NSS, SCK, MISO and MOSI. + * @rmtoll MAPR SPI1_REMAP LL_GPIO_AF_EnableRemap_SPI1 + * @note ENABLE: Remap (NSS/PA15, SCK/PB3, MISO/PB4, MOSI/PB5) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_SPI1(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_SPI1_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of SPI1 alternate function NSS, SCK, MISO and MOSI. + * @rmtoll MAPR SPI1_REMAP LL_GPIO_AF_DisableRemap_SPI1 + * @note DISABLE: No remap (NSS/PA4, SCK/PA5, MISO/PA6, MOSI/PA7) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_SPI1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_SPI1_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if SPI1 has been remapped or not + * @rmtoll MAPR SPI1_REMAP LL_GPIO_AF_IsEnabledRemap_SPI1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_SPI1(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_SPI1_REMAP) == (AFIO_MAPR_SPI1_REMAP)); +} + +/** + * @brief Enable the remapping of I2C1 alternate function SCL and SDA. + * @rmtoll MAPR I2C1_REMAP LL_GPIO_AF_EnableRemap_I2C1 + * @note ENABLE: Remap (SCL/PB8, SDA/PB9) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_I2C1(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_I2C1_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of I2C1 alternate function SCL and SDA. + * @rmtoll MAPR I2C1_REMAP LL_GPIO_AF_DisableRemap_I2C1 + * @note DISABLE: No remap (SCL/PB6, SDA/PB7) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_I2C1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_I2C1_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if I2C1 has been remapped or not + * @rmtoll MAPR I2C1_REMAP LL_GPIO_AF_IsEnabledRemap_I2C1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_I2C1(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_I2C1_REMAP) == (AFIO_MAPR_I2C1_REMAP)); +} + +/** + * @brief Enable the remapping of USART1 alternate function TX and RX. + * @rmtoll MAPR USART1_REMAP LL_GPIO_AF_EnableRemap_USART1 + * @note ENABLE: Remap (TX/PB6, RX/PB7) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART1(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_USART1_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of USART1 alternate function TX and RX. + * @rmtoll MAPR USART1_REMAP LL_GPIO_AF_DisableRemap_USART1 + * @note DISABLE: No remap (TX/PA9, RX/PA10) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART1_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if USART1 has been remapped or not + * @rmtoll MAPR USART1_REMAP LL_GPIO_AF_IsEnabledRemap_USART1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_USART1(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_USART1_REMAP) == (AFIO_MAPR_USART1_REMAP)); +} + +/** + * @brief Enable the remapping of USART2 alternate function CTS, RTS, CK, TX and RX. + * @rmtoll MAPR USART2_REMAP LL_GPIO_AF_EnableRemap_USART2 + * @note ENABLE: Remap (CTS/PD3, RTS/PD4, TX/PD5, RX/PD6, CK/PD7) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART2(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_USART2_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of USART2 alternate function CTS, RTS, CK, TX and RX. + * @rmtoll MAPR USART2_REMAP LL_GPIO_AF_DisableRemap_USART2 + * @note DISABLE: No remap (CTS/PA0, RTS/PA1, TX/PA2, RX/PA3, CK/PA4) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART2_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if USART2 has been remapped or not + * @rmtoll MAPR USART2_REMAP LL_GPIO_AF_IsEnabledRemap_USART2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_USART2(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_USART2_REMAP) == (AFIO_MAPR_USART2_REMAP)); +} + +#if defined (AFIO_MAPR_USART3_REMAP) +/** + * @brief Enable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX. + * @rmtoll MAPR USART3_REMAP LL_GPIO_AF_EnableRemap_USART3 + * @note ENABLE: Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_USART3_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX. + * @rmtoll MAPR USART3_REMAP LL_GPIO_AF_RemapPartial_USART3 + * @note PARTIAL: Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial_USART3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_USART3_REMAP_PARTIALREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Disable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX. + * @rmtoll MAPR USART3_REMAP LL_GPIO_AF_DisableRemap_USART3 + * @note DISABLE: No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_USART3_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); +} +#endif + +/** + * @brief Enable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN) + * @rmtoll MAPR TIM1_REMAP LL_GPIO_AF_EnableRemap_TIM1 + * @note ENABLE: Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM1_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM1_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN) + * @rmtoll MAPR TIM1_REMAP LL_GPIO_AF_RemapPartial_TIM1 + * @note PARTIAL: Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial_TIM1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM1_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM1_REMAP_PARTIALREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Disable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN) + * @rmtoll MAPR TIM1_REMAP LL_GPIO_AF_DisableRemap_TIM1 + * @note DISABLE: No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM1_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM1_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) + * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_EnableRemap_TIM2 + * @note ENABLE: Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) + * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_RemapPartial2_TIM2 + * @note PARTIAL_2: Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial2_TIM2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) + * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_RemapPartial1_TIM2 + * @note PARTIAL_1: Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial1_TIM2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Disable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) + * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_DisableRemap_TIM2 + * @note DISABLE: No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM3 alternate function channels 1 to 4 + * @rmtoll MAPR TIM3_REMAP LL_GPIO_AF_EnableRemap_TIM3 + * @note ENABLE: Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) + * @note TIM3_ETR on PE0 is not re-mapped. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM3_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM3 alternate function channels 1 to 4 + * @rmtoll MAPR TIM3_REMAP LL_GPIO_AF_RemapPartial_TIM3 + * @note PARTIAL: Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) + * @note TIM3_ETR on PE0 is not re-mapped. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial_TIM3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM3_REMAP_PARTIALREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Disable the remapping of TIM3 alternate function channels 1 to 4 + * @rmtoll MAPR TIM3_REMAP LL_GPIO_AF_DisableRemap_TIM3 + * @note DISABLE: No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) + * @note TIM3_ETR on PE0 is not re-mapped. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM3_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); +} + +#if defined(AFIO_MAPR_TIM4_REMAP) +/** + * @brief Enable the remapping of TIM4 alternate function channels 1 to 4. + * @rmtoll MAPR TIM4_REMAP LL_GPIO_AF_EnableRemap_TIM4 + * @note ENABLE: Full remap (TIM4_CH1/PD12, TIM4_CH2/PD13, TIM4_CH3/PD14, TIM4_CH4/PD15) + * @note TIM4_ETR on PE0 is not re-mapped. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM4(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM4_REMAP | AFIO_MAPR_SWJ_CFG); +} +/** + * @brief Disable the remapping of TIM4 alternate function channels 1 to 4. + * @rmtoll MAPR TIM4_REMAP LL_GPIO_AF_DisableRemap_TIM4 + * @note DISABLE: No remap (TIM4_CH1/PB6, TIM4_CH2/PB7, TIM4_CH3/PB8, TIM4_CH4/PB9) + * @note TIM4_ETR on PE0 is not re-mapped. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM4(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM4_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if TIM4 has been remapped or not + * @rmtoll MAPR TIM4_REMAP LL_GPIO_AF_IsEnabledRemap_TIM4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM4(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_TIM4_REMAP) == (AFIO_MAPR_TIM4_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_CAN_REMAP_REMAP1) + +/** + * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface. + * @rmtoll MAPR CAN_REMAP LL_GPIO_AF_RemapPartial1_CAN1 + * @note CASE 1: CAN_RX mapped to PA11, CAN_TX mapped to PA12 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial1_CAN1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_CAN_REMAP_REMAP1 | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface. + * @rmtoll MAPR CAN_REMAP LL_GPIO_AF_RemapPartial2_CAN1 + * @note CASE 2: CAN_RX mapped to PB8, CAN_TX mapped to PB9 (not available on 36-pin package) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial2_CAN1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_CAN_REMAP_REMAP2 | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface. + * @rmtoll MAPR CAN_REMAP LL_GPIO_AF_RemapPartial3_CAN1 + * @note CASE 3: CAN_RX mapped to PD0, CAN_TX mapped to PD1 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial3_CAN1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_CAN_REMAP_REMAP3 | AFIO_MAPR_SWJ_CFG)); +} +#endif + +/** + * @brief Enable the remapping of PD0 and PD1. When the HSE oscillator is not used + * (application running on internal 8 MHz RC) PD0 and PD1 can be mapped on OSC_IN and + * OSC_OUT. This is available only on 36, 48 and 64 pins packages (PD0 and PD1 are available + * on 100-pin and 144-pin packages, no need for remapping). + * @rmtoll MAPR PD01_REMAP LL_GPIO_AF_EnableRemap_PD01 + * @note ENABLE: PD0 remapped on OSC_IN, PD1 remapped on OSC_OUT. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_PD01(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_PD01_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of PD0 and PD1. When the HSE oscillator is not used + * (application running on internal 8 MHz RC) PD0 and PD1 can be mapped on OSC_IN and + * OSC_OUT. This is available only on 36, 48 and 64 pins packages (PD0 and PD1 are available + * on 100-pin and 144-pin packages, no need for remapping). + * @rmtoll MAPR PD01_REMAP LL_GPIO_AF_DisableRemap_PD01 + * @note DISABLE: No remapping of PD0 and PD1 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_PD01(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_PD01_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if PD01 has been remapped or not + * @rmtoll MAPR PD01_REMAP LL_GPIO_AF_IsEnabledRemap_PD01 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_PD01(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_PD01_REMAP) == (AFIO_MAPR_PD01_REMAP)); +} + +#if defined(AFIO_MAPR_TIM5CH4_IREMAP) +/** + * @brief Enable the remapping of TIM5CH4. + * @rmtoll MAPR TIM5CH4_IREMAP LL_GPIO_AF_EnableRemap_TIM5CH4 + * @note ENABLE: LSI internal clock is connected to TIM5_CH4 input for calibration purpose. + * @note This function is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM5CH4(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM5CH4_IREMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of TIM5CH4. + * @rmtoll MAPR TIM5CH4_IREMAP LL_GPIO_AF_DisableRemap_TIM5CH4 + * @note DISABLE: TIM5_CH4 is connected to PA3 + * @note This function is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM5CH4(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM5CH4_IREMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if TIM5CH4 has been remapped or not + * @rmtoll MAPR TIM5CH4_IREMAP LL_GPIO_AF_IsEnabledRemap_TIM5CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM5CH4(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_TIM5CH4_IREMAP) == (AFIO_MAPR_TIM5CH4_IREMAP)); +} +#endif + +#if defined(AFIO_MAPR_ETH_REMAP) +/** + * @brief Enable the remapping of Ethernet MAC connections with the PHY. + * @rmtoll MAPR ETH_REMAP LL_GPIO_AF_EnableRemap_ETH + * @note ENABLE: Remap (RX_DV-CRS_DV/PD8, RXD0/PD9, RXD1/PD10, RXD2/PD11, RXD3/PD12) + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ETH(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_ETH_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of Ethernet MAC connections with the PHY. + * @rmtoll MAPR ETH_REMAP LL_GPIO_AF_DisableRemap_ETH + * @note DISABLE: No remap (RX_DV-CRS_DV/PA7, RXD0/PC4, RXD1/PC5, RXD2/PB0, RXD3/PB1) + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ETH(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ETH_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if ETH has been remapped or not + * @rmtoll MAPR ETH_REMAP LL_GPIO_AF_IsEnabledRemap_ETH + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ETH(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ETH_REMAP) == (AFIO_MAPR_ETH_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_CAN2_REMAP) + +/** + * @brief Enable the remapping of CAN2 alternate function CAN2_RX and CAN2_TX. + * @rmtoll MAPR CAN2_REMAP LL_GPIO_AF_EnableRemap_CAN2 + * @note ENABLE: Remap (CAN2_RX/PB5, CAN2_TX/PB6) + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_CAN2(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_CAN2_REMAP | AFIO_MAPR_SWJ_CFG); +} +/** + * @brief Disable the remapping of CAN2 alternate function CAN2_RX and CAN2_TX. + * @rmtoll MAPR CAN2_REMAP LL_GPIO_AF_DisableRemap_CAN2 + * @note DISABLE: No remap (CAN2_RX/PB12, CAN2_TX/PB13) + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_CAN2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN2_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if CAN2 has been remapped or not + * @rmtoll MAPR CAN2_REMAP LL_GPIO_AF_IsEnabledRemap_CAN2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_CAN2(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_CAN2_REMAP) == (AFIO_MAPR_CAN2_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_MII_RMII_SEL) +/** + * @brief Configures the Ethernet MAC internally for use with an external MII or RMII PHY. + * @rmtoll MAPR MII_RMII_SEL LL_GPIO_AF_Select_ETH_RMII + * @note ETH_RMII: Configure Ethernet MAC for connection with an RMII PHY + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Select_ETH_RMII(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_MII_RMII_SEL | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Configures the Ethernet MAC internally for use with an external MII or RMII PHY. + * @rmtoll MAPR MII_RMII_SEL LL_GPIO_AF_Select_ETH_MII + * @note ETH_MII: Configure Ethernet MAC for connection with an MII PHY + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Select_ETH_MII(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_MII_RMII_SEL | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} +#endif + +#if defined(AFIO_MAPR_ADC1_ETRGINJ_REMAP) +/** + * @brief Enable the remapping of ADC1_ETRGINJ (ADC 1 External trigger injected conversion). + * @rmtoll MAPR ADC1_ETRGINJ_REMAP LL_GPIO_AF_EnableRemap_ADC1_ETRGINJ + * @note ENABLE: ADC1 External Event injected conversion is connected to TIM8 Channel4. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC1_ETRGINJ(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of ADC1_ETRGINJ (ADC 1 External trigger injected conversion). + * @rmtoll MAPR ADC1_ETRGINJ_REMAP LL_GPIO_AF_DisableRemap_ADC1_ETRGINJ + * @note DISABLE: ADC1 External trigger injected conversion is connected to EXTI15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC1_ETRGINJ(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC1_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if ADC1_ETRGINJ has been remapped or not + * @rmtoll MAPR ADC1_ETRGINJ_REMAP LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGINJ + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGINJ(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGINJ_REMAP) == (AFIO_MAPR_ADC1_ETRGINJ_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_ADC1_ETRGREG_REMAP) +/** + * @brief Enable the remapping of ADC1_ETRGREG (ADC 1 External trigger regular conversion). + * @rmtoll MAPR ADC1_ETRGREG_REMAP LL_GPIO_AF_EnableRemap_ADC1_ETRGREG + * @note ENABLE: ADC1 External Event regular conversion is connected to TIM8 TRG0. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC1_ETRGREG(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of ADC1_ETRGREG (ADC 1 External trigger regular conversion). + * @rmtoll MAPR ADC1_ETRGREG_REMAP LL_GPIO_AF_DisableRemap_ADC1_ETRGREG + * @note DISABLE: ADC1 External trigger regular conversion is connected to EXTI11 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC1_ETRGREG(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC1_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if ADC1_ETRGREG has been remapped or not + * @rmtoll MAPR ADC1_ETRGREG_REMAP LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGREG + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGREG(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGREG_REMAP) == (AFIO_MAPR_ADC1_ETRGREG_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_ADC2_ETRGINJ_REMAP) + +/** + * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger injected conversion). + * @rmtoll MAPR ADC2_ETRGINJ_REMAP LL_GPIO_AF_EnableRemap_ADC2_ETRGINJ + * @note ENABLE: ADC2 External Event injected conversion is connected to TIM8 Channel4. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC2_ETRGINJ(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger injected conversion). + * @rmtoll MAPR ADC2_ETRGINJ_REMAP LL_GPIO_AF_DisableRemap_ADC2_ETRGINJ + * @note DISABLE: ADC2 External trigger injected conversion is connected to EXTI15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC2_ETRGINJ(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC2_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if ADC2_ETRGINJ has been remapped or not + * @rmtoll MAPR ADC2_ETRGINJ_REMAP LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGINJ + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGINJ(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGINJ_REMAP) == (AFIO_MAPR_ADC2_ETRGINJ_REMAP)); +} +#endif + +#if defined (AFIO_MAPR_ADC2_ETRGREG_REMAP) + +/** + * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). + * @rmtoll MAPR ADC2_ETRGREG_REMAP LL_GPIO_AF_EnableRemap_ADC2_ETRGREG + * @note ENABLE: ADC2 External Event regular conversion is connected to TIM8 TRG0. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC2_ETRGREG(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). + * @rmtoll MAPR ADC2_ETRGREG_REMAP LL_GPIO_AF_DisableRemap_ADC2_ETRGREG + * @note DISABLE: ADC2 External trigger regular conversion is connected to EXTI11 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC2_ETRGREG(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC2_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if ADC2_ETRGREG has been remapped or not + * @rmtoll MAPR ADC2_ETRGREG_REMAP LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGREG + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGREG(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGREG_REMAP) == (AFIO_MAPR_ADC2_ETRGREG_REMAP)); +} +#endif + +/** + * @brief Enable the Serial wire JTAG configuration + * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_EnableRemap_SWJ + * @note ENABLE: Full SWJ (JTAG-DP + SW-DP): Reset State + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_SWJ(void) +{ + MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_RESET); +} + +/** + * @brief Enable the Serial wire JTAG configuration + * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_Remap_SWJ_NONJTRST + * @note NONJTRST: Full SWJ (JTAG-DP + SW-DP) but without NJTRST + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Remap_SWJ_NONJTRST(void) +{ + MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_NOJNTRST); +} + +/** + * @brief Enable the Serial wire JTAG configuration + * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_Remap_SWJ_NOJTAG + * @note NOJTAG: JTAG-DP Disabled and SW-DP Enabled + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Remap_SWJ_NOJTAG(void) +{ + MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_JTAGDISABLE); +} + +/** + * @brief Disable the Serial wire JTAG configuration + * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_DisableRemap_SWJ + * @note DISABLE: JTAG-DP Disabled and SW-DP Disabled + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_SWJ(void) +{ + MODIFY_REG(AFIO->MAPR, AFIO_MAPR_SWJ_CFG, AFIO_MAPR_SWJ_CFG_DISABLE); +} + +#if defined(AFIO_MAPR_SPI3_REMAP) + +/** + * @brief Enable the remapping of SPI3 alternate functions SPI3_NSS/I2S3_WS, SPI3_SCK/I2S3_CK, SPI3_MISO, SPI3_MOSI/I2S3_SD. + * @rmtoll MAPR SPI3_REMAP LL_GPIO_AF_EnableRemap_SPI3 + * @note ENABLE: Remap (SPI3_NSS-I2S3_WS/PA4, SPI3_SCK-I2S3_CK/PC10, SPI3_MISO/PC11, SPI3_MOSI-I2S3_SD/PC12) + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_SPI3(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_SPI3_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of SPI3 alternate functions SPI3_NSS/I2S3_WS, SPI3_SCK/I2S3_CK, SPI3_MISO, SPI3_MOSI/I2S3_SD. + * @rmtoll MAPR SPI3_REMAP LL_GPIO_AF_DisableRemap_SPI3 + * @note DISABLE: No remap (SPI3_NSS-I2S3_WS/PA15, SPI3_SCK-I2S3_CK/PB3, SPI3_MISO/PB4, SPI3_MOSI-I2S3_SD/PB5). + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_SPI3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_SPI3_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if SPI3 has been remapped or not + * @rmtoll MAPR SPI3_REMAP LL_GPIO_AF_IsEnabledRemap_SPI3_REMAP + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_SPI3(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_SPI3_REMAP) == (AFIO_MAPR_SPI3_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_TIM2ITR1_IREMAP) + +/** + * @brief Control of TIM2_ITR1 internal mapping. + * @rmtoll MAPR TIM2ITR1_IREMAP LL_GPIO_AF_Remap_TIM2ITR1_TO_USB + * @note TO_USB: Connect USB OTG SOF (Start of Frame) output to TIM2_ITR1 for calibration purposes. + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Remap_TIM2ITR1_TO_USB(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM2ITR1_IREMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Control of TIM2_ITR1 internal mapping. + * @rmtoll MAPR TIM2ITR1_IREMAP LL_GPIO_AF_Remap_TIM2ITR1_TO_ETH + * @note TO_ETH: Connect TIM2_ITR1 internally to the Ethernet PTP output for calibration purposes. + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Remap_TIM2ITR1_TO_ETH(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2ITR1_IREMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} +#endif + +#if defined(AFIO_MAPR_PTP_PPS_REMAP) + +/** + * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). + * @rmtoll MAPR PTP_PPS_REMAP LL_GPIO_AF_EnableRemap_ETH_PTP_PPS + * @note ENABLE: PTP_PPS is output on PB5 pin. + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ETH_PTP_PPS(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_PTP_PPS_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). + * @rmtoll MAPR PTP_PPS_REMAP LL_GPIO_AF_DisableRemap_ETH_PTP_PPS + * @note DISABLE: PTP_PPS not output on PB5 pin. + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ETH_PTP_PPS(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_PTP_PPS_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} +#endif + +#if defined(AFIO_MAPR2_TIM9_REMAP) + +/** + * @brief Enable the remapping of TIM9_CH1 and TIM9_CH2. + * @rmtoll MAPR2 TIM9_REMAP LL_GPIO_AF_EnableRemap_TIM9 + * @note ENABLE: Remap (TIM9_CH1 on PE5 and TIM9_CH2 on PE6). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM9(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP); +} + +/** + * @brief Disable the remapping of TIM9_CH1 and TIM9_CH2. + * @rmtoll MAPR2 TIM9_REMAP LL_GPIO_AF_DisableRemap_TIM9 + * @note DISABLE: No remap (TIM9_CH1 on PA2 and TIM9_CH2 on PA3). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM9(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP); +} + +/** + * @brief Check if TIM9_CH1 and TIM9_CH2 have been remapped or not + * @rmtoll MAPR2 TIM9_REMAP LL_GPIO_AF_IsEnabledRemap_TIM9 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM9(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP) == (AFIO_MAPR2_TIM9_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM10_REMAP) + +/** + * @brief Enable the remapping of TIM10_CH1. + * @rmtoll MAPR2 TIM10_REMAP LL_GPIO_AF_EnableRemap_TIM10 + * @note ENABLE: Remap (TIM10_CH1 on PF6). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM10(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP); +} + +/** + * @brief Disable the remapping of TIM10_CH1. + * @rmtoll MAPR2 TIM10_REMAP LL_GPIO_AF_DisableRemap_TIM10 + * @note DISABLE: No remap (TIM10_CH1 on PB8). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM10(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP); +} + +/** + * @brief Check if TIM10_CH1 has been remapped or not + * @rmtoll MAPR2 TIM10_REMAP LL_GPIO_AF_IsEnabledRemap_TIM10 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM10(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP) == (AFIO_MAPR2_TIM10_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM11_REMAP) +/** + * @brief Enable the remapping of TIM11_CH1. + * @rmtoll MAPR2 TIM11_REMAP LL_GPIO_AF_EnableRemap_TIM11 + * @note ENABLE: Remap (TIM11_CH1 on PF7). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM11(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP); +} + +/** + * @brief Disable the remapping of TIM11_CH1. + * @rmtoll MAPR2 TIM11_REMAP LL_GPIO_AF_DisableRemap_TIM11 + * @note DISABLE: No remap (TIM11_CH1 on PB9). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM11(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP); +} + +/** + * @brief Check if TIM11_CH1 has been remapped or not + * @rmtoll MAPR2 TIM11_REMAP LL_GPIO_AF_IsEnabledRemap_TIM11 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM11(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP) == (AFIO_MAPR2_TIM11_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM13_REMAP) + +/** + * @brief Enable the remapping of TIM13_CH1. + * @rmtoll MAPR2 TIM13_REMAP LL_GPIO_AF_EnableRemap_TIM13 + * @note ENABLE: Remap STM32F100:(TIM13_CH1 on PF8). Others:(TIM13_CH1 on PB0). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM13(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP); +} + +/** + * @brief Disable the remapping of TIM13_CH1. + * @rmtoll MAPR2 TIM13_REMAP LL_GPIO_AF_DisableRemap_TIM13 + * @note DISABLE: No remap STM32F100:(TIM13_CH1 on PA6). Others:(TIM13_CH1 on PC8). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM13(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP); +} + +/** + * @brief Check if TIM13_CH1 has been remapped or not + * @rmtoll MAPR2 TIM13_REMAP LL_GPIO_AF_IsEnabledRemap_TIM13 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM13(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP) == (AFIO_MAPR2_TIM13_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM14_REMAP) + +/** + * @brief Enable the remapping of TIM14_CH1. + * @rmtoll MAPR2 TIM14_REMAP LL_GPIO_AF_EnableRemap_TIM14 + * @note ENABLE: Remap STM32F100:(TIM14_CH1 on PB1). Others:(TIM14_CH1 on PF9). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM14(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP); +} + +/** + * @brief Disable the remapping of TIM14_CH1. + * @rmtoll MAPR2 TIM14_REMAP LL_GPIO_AF_DisableRemap_TIM14 + * @note DISABLE: No remap STM32F100:(TIM14_CH1 on PC9). Others:(TIM14_CH1 on PA7). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM14(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP); +} + +/** + * @brief Check if TIM14_CH1 has been remapped or not + * @rmtoll MAPR2 TIM14_REMAP LL_GPIO_AF_IsEnabledRemap_TIM14 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM14(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP) == (AFIO_MAPR2_TIM14_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_FSMC_NADV_REMAP) + +/** + * @brief Controls the use of the optional FSMC_NADV signal. + * @rmtoll MAPR2 FSMC_NADV LL_GPIO_AF_Disconnect_FSMCNADV + * @note DISCONNECTED: The NADV signal is not connected. The I/O pin can be used by another peripheral. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Disconnect_FSMCNADV(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_FSMC_NADV_REMAP); +} + +/** + * @brief Controls the use of the optional FSMC_NADV signal. + * @rmtoll MAPR2 FSMC_NADV LL_GPIO_AF_Connect_FSMCNADV + * @note CONNECTED: The NADV signal is connected to the output (default). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Connect_FSMCNADV(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_FSMC_NADV_REMAP); +} +#endif + +#if defined(AFIO_MAPR2_TIM15_REMAP) + +/** + * @brief Enable the remapping of TIM15_CH1 and TIM15_CH2. + * @rmtoll MAPR2 TIM15_REMAP LL_GPIO_AF_EnableRemap_TIM15 + * @note ENABLE: Remap (TIM15_CH1 on PB14 and TIM15_CH2 on PB15). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM15(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP); +} +/** + * @brief Disable the remapping of TIM15_CH1 and TIM15_CH2. + * @rmtoll MAPR2 TIM15_REMAP LL_GPIO_AF_DisableRemap_TIM15 + * @note DISABLE: No remap (TIM15_CH1 on PA2 and TIM15_CH2 on PA3). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM15(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP); +} + +/** + * @brief Check if TIM15_CH1 has been remapped or not + * @rmtoll MAPR2 TIM15_REMAP LL_GPIO_AF_IsEnabledRemap_TIM15 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM15(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP) == (AFIO_MAPR2_TIM15_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM16_REMAP) + +/** + * @brief Enable the remapping of TIM16_CH1. + * @rmtoll MAPR2 TIM16_REMAP LL_GPIO_AF_EnableRemap_TIM16 + * @note ENABLE: Remap (TIM16_CH1 on PA6). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM16(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP); +} + +/** + * @brief Disable the remapping of TIM16_CH1. + * @rmtoll MAPR2 TIM16_REMAP LL_GPIO_AF_DisableRemap_TIM16 + * @note DISABLE: No remap (TIM16_CH1 on PB8). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM16(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP); +} + +/** + * @brief Check if TIM16_CH1 has been remapped or not + * @rmtoll MAPR2 TIM16_REMAP LL_GPIO_AF_IsEnabledRemap_TIM16 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM16(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP) == (AFIO_MAPR2_TIM16_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM17_REMAP) + +/** + * @brief Enable the remapping of TIM17_CH1. + * @rmtoll MAPR2 TIM17_REMAP LL_GPIO_AF_EnableRemap_TIM17 + * @note ENABLE: Remap (TIM17_CH1 on PA7). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM17(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP); +} + +/** + * @brief Disable the remapping of TIM17_CH1. + * @rmtoll MAPR2 TIM17_REMAP LL_GPIO_AF_DisableRemap_TIM17 + * @note DISABLE: No remap (TIM17_CH1 on PB9). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM17(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP); +} + +/** + * @brief Check if TIM17_CH1 has been remapped or not + * @rmtoll MAPR2 TIM17_REMAP LL_GPIO_AF_IsEnabledRemap_TIM17 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM17(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP) == (AFIO_MAPR2_TIM17_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_CEC_REMAP) + +/** + * @brief Enable the remapping of CEC. + * @rmtoll MAPR2 CEC_REMAP LL_GPIO_AF_EnableRemap_CEC + * @note ENABLE: Remap (CEC on PB10). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_CEC(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP); +} + +/** + * @brief Disable the remapping of CEC. + * @rmtoll MAPR2 CEC_REMAP LL_GPIO_AF_DisableRemap_CEC + * @note DISABLE: No remap (CEC on PB8). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_CEC(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP); +} + +/** + * @brief Check if CEC has been remapped or not + * @rmtoll MAPR2 CEC_REMAP LL_GPIO_AF_IsEnabledRemap_CEC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_CEC(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP) == (AFIO_MAPR2_CEC_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM1_DMA_REMAP) + +/** + * @brief Controls the mapping of the TIM1_CH1 TIM1_CH2 DMA requests onto the DMA1 channels. + * @rmtoll MAPR2 TIM1_DMA_REMAP LL_GPIO_AF_EnableRemap_TIM1DMA + * @note ENABLE: Remap (TIM1_CH1 DMA request/DMA1 Channel6, TIM1_CH2 DMA request/DMA1 Channel6) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM1DMA(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP); +} + +/** + * @brief Controls the mapping of the TIM1_CH1 TIM1_CH2 DMA requests onto the DMA1 channels. + * @rmtoll MAPR2 TIM1_DMA_REMAP LL_GPIO_AF_DisableRemap_TIM1DMA + * @note DISABLE: No remap (TIM1_CH1 DMA request/DMA1 Channel2, TIM1_CH2 DMA request/DMA1 Channel3). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM1DMA(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP); +} + +/** + * @brief Check if TIM1DMA has been remapped or not + * @rmtoll MAPR2 TIM1_DMA_REMAP LL_GPIO_AF_IsEnabledRemap_TIM1DMA + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM1DMA(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP) == (AFIO_MAPR2_TIM1_DMA_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM67_DAC_DMA_REMAP) + +/** + * @brief Controls the mapping of the TIM6_DAC1 and TIM7_DAC2 DMA requests onto the DMA1 channels. + * @rmtoll MAPR2 TIM76_DAC_DMA_REMAP LL_GPIO_AF_EnableRemap_TIM67DACDMA + * @note ENABLE: Remap (TIM6_DAC1 DMA request/DMA1 Channel3, TIM7_DAC2 DMA request/DMA1 Channel4) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM67DACDMA(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP); +} + +/** + * @brief Controls the mapping of the TIM6_DAC1 and TIM7_DAC2 DMA requests onto the DMA1 channels. + * @rmtoll MAPR2 TIM76_DAC_DMA_REMAP LL_GPIO_AF_DisableRemap_TIM67DACDMA + * @note DISABLE: No remap (TIM6_DAC1 DMA request/DMA2 Channel3, TIM7_DAC2 DMA request/DMA2 Channel4) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM67DACDMA(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP); +} + +/** + * @brief Check if TIM67DACDMA has been remapped or not + * @rmtoll MAPR2 TIM76_DAC_DMA_REMAP LL_GPIO_AF_IsEnabledRemap_TIM67DACDMA + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM67DACDMA(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP) == (AFIO_MAPR2_TIM67_DAC_DMA_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM12_REMAP) + +/** + * @brief Enable the remapping of TIM12_CH1 and TIM12_CH2. + * @rmtoll MAPR2 TIM12_REMAP LL_GPIO_AF_EnableRemap_TIM12 + * @note ENABLE: Remap (TIM12_CH1 on PB12 and TIM12_CH2 on PB13). + * @note This bit is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM12(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP); +} + +/** + * @brief Disable the remapping of TIM12_CH1 and TIM12_CH2. + * @rmtoll MAPR2 TIM12_REMAP LL_GPIO_AF_DisableRemap_TIM12 + * @note DISABLE: No remap (TIM12_CH1 on PC4 and TIM12_CH2 on PC5). + * @note This bit is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM12(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP); +} + +/** + * @brief Check if TIM12_CH1 has been remapped or not + * @rmtoll MAPR2 TIM12_REMAP LL_GPIO_AF_IsEnabledRemap_TIM12 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM12(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP) == (AFIO_MAPR2_TIM12_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_MISC_REMAP) + +/** + * @brief Miscellaneous features remapping. + * This bit is set and cleared by software. It controls miscellaneous features. + * The DMA2 channel 5 interrupt position in the vector table. + * The timer selection for DAC trigger 3 (TSEL[2:0] = 011, for more details refer to the DAC_CR register). + * @rmtoll MAPR2 MISC_REMAP LL_GPIO_AF_EnableRemap_MISC + * @note ENABLE: DMA2 channel 5 interrupt is mapped separately at position 60 and TIM15 TRGO event is + * selected as DAC Trigger 3, TIM15 triggers TIM1/3. + * @note This bit is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_MISC(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP); +} + +/** + * @brief Miscellaneous features remapping. + * This bit is set and cleared by software. It controls miscellaneous features. + * The DMA2 channel 5 interrupt position in the vector table. + * The timer selection for DAC trigger 3 (TSEL[2:0] = 011, for more details refer to the DAC_CR register). + * @rmtoll MAPR2 MISC_REMAP LL_GPIO_AF_DisableRemap_MISC + * @note DISABLE: DMA2 channel 5 interrupt is mapped with DMA2 channel 4 at position 59, TIM5 TRGO + * event is selected as DAC Trigger 3, TIM5 triggers TIM1/3. + * @note This bit is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_MISC(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP); +} + +/** + * @brief Check if MISC has been remapped or not + * @rmtoll MAPR2 MISC_REMAP LL_GPIO_AF_IsEnabledRemap_MISC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_MISC(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP) == (AFIO_MAPR2_MISC_REMAP)); +} +#endif + +/** + * @} + */ + +/** @defgroup GPIO_AF_LL_EVENTOUT Output Event configuration + * @brief This section propose definition to Configure EVENTOUT Cortex feature . + * @{ + */ + +/** + * @brief Configures the port and pin on which the EVENTOUT Cortex signal will be connected. + * @rmtoll EVCR PORT LL_GPIO_AF_ConfigEventout\n + * EVCR PIN LL_GPIO_AF_ConfigEventout + * @param LL_GPIO_PortSource This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_A + * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_B + * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_C + * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_D + * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_E + * @param LL_GPIO_PinSource This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_0 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_1 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_2 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_3 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_4 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_5 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_6 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_7 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_8 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_9 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_10 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_11 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_12 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_13 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_14 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_15 + * @retval None +*/ +__STATIC_INLINE void LL_GPIO_AF_ConfigEventout(uint32_t LL_GPIO_PortSource, uint32_t LL_GPIO_PinSource) +{ + MODIFY_REG(AFIO->EVCR, (AFIO_EVCR_PORT) | (AFIO_EVCR_PIN), (LL_GPIO_PortSource) | (LL_GPIO_PinSource)); +} + +/** + * @brief Enables the Event Output. + * @rmtoll EVCR EVOE LL_GPIO_AF_EnableEventout + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableEventout(void) +{ + SET_BIT(AFIO->EVCR, AFIO_EVCR_EVOE); +} + +/** + * @brief Disables the Event Output. + * @rmtoll EVCR EVOE LL_GPIO_AF_DisableEventout + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableEventout(void) +{ + CLEAR_BIT(AFIO->EVCR, AFIO_EVCR_EVOE); +} + +/** + * @} + */ +/** @defgroup GPIO_AF_LL_EXTI EXTI external interrupt + * @brief This section Configure source input for the EXTI external interrupt . + * @{ + */ + +/** + * @brief Configure source input for the EXTI external interrupt. + * @rmtoll AFIO_EXTICR1 EXTIx LL_GPIO_AF_SetEXTISource\n + * AFIO_EXTICR2 EXTIx LL_GPIO_AF_SetEXTISource\n + * AFIO_EXTICR3 EXTIx LL_GPIO_AF_SetEXTISource\n + * AFIO_EXTICR4 EXTIx LL_GPIO_AF_SetEXTISource + * @param Port This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_EXTI_PORTA + * @arg @ref LL_GPIO_AF_EXTI_PORTB + * @arg @ref LL_GPIO_AF_EXTI_PORTC + * @arg @ref LL_GPIO_AF_EXTI_PORTD + * @arg @ref LL_GPIO_AF_EXTI_PORTE + * @arg @ref LL_GPIO_AF_EXTI_PORTF + * @arg @ref LL_GPIO_AF_EXTI_PORTG + * @param Line This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_EXTI_LINE0 + * @arg @ref LL_GPIO_AF_EXTI_LINE1 + * @arg @ref LL_GPIO_AF_EXTI_LINE2 + * @arg @ref LL_GPIO_AF_EXTI_LINE3 + * @arg @ref LL_GPIO_AF_EXTI_LINE4 + * @arg @ref LL_GPIO_AF_EXTI_LINE5 + * @arg @ref LL_GPIO_AF_EXTI_LINE6 + * @arg @ref LL_GPIO_AF_EXTI_LINE7 + * @arg @ref LL_GPIO_AF_EXTI_LINE8 + * @arg @ref LL_GPIO_AF_EXTI_LINE9 + * @arg @ref LL_GPIO_AF_EXTI_LINE10 + * @arg @ref LL_GPIO_AF_EXTI_LINE11 + * @arg @ref LL_GPIO_AF_EXTI_LINE12 + * @arg @ref LL_GPIO_AF_EXTI_LINE13 + * @arg @ref LL_GPIO_AF_EXTI_LINE14 + * @arg @ref LL_GPIO_AF_EXTI_LINE15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_SetEXTISource(uint32_t Port, uint32_t Line) +{ + MODIFY_REG(AFIO->EXTICR[Line & 0xFF], (Line >> 16), Port << POSITION_VAL((Line >> 16))); +} + +/** + * @brief Get the configured defined for specific EXTI Line + * @rmtoll AFIO_EXTICR1 EXTIx LL_GPIO_AF_GetEXTISource\n + * AFIO_EXTICR2 EXTIx LL_GPIO_AF_GetEXTISource\n + * AFIO_EXTICR3 EXTIx LL_GPIO_AF_GetEXTISource\n + * AFIO_EXTICR4 EXTIx LL_GPIO_AF_GetEXTISource + * @param Line This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_EXTI_LINE0 + * @arg @ref LL_GPIO_AF_EXTI_LINE1 + * @arg @ref LL_GPIO_AF_EXTI_LINE2 + * @arg @ref LL_GPIO_AF_EXTI_LINE3 + * @arg @ref LL_GPIO_AF_EXTI_LINE4 + * @arg @ref LL_GPIO_AF_EXTI_LINE5 + * @arg @ref LL_GPIO_AF_EXTI_LINE6 + * @arg @ref LL_GPIO_AF_EXTI_LINE7 + * @arg @ref LL_GPIO_AF_EXTI_LINE8 + * @arg @ref LL_GPIO_AF_EXTI_LINE9 + * @arg @ref LL_GPIO_AF_EXTI_LINE10 + * @arg @ref LL_GPIO_AF_EXTI_LINE11 + * @arg @ref LL_GPIO_AF_EXTI_LINE12 + * @arg @ref LL_GPIO_AF_EXTI_LINE13 + * @arg @ref LL_GPIO_AF_EXTI_LINE14 + * @arg @ref LL_GPIO_AF_EXTI_LINE15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_AF_EXTI_PORTA + * @arg @ref LL_GPIO_AF_EXTI_PORTB + * @arg @ref LL_GPIO_AF_EXTI_PORTC + * @arg @ref LL_GPIO_AF_EXTI_PORTD + * @arg @ref LL_GPIO_AF_EXTI_PORTE + * @arg @ref LL_GPIO_AF_EXTI_PORTF + * @arg @ref LL_GPIO_AF_EXTI_PORTG + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_GetEXTISource(uint32_t Line) +{ + return (uint32_t)(READ_BIT(AFIO->EXTICR[Line & 0xFF], (Line >> 16)) >> POSITION_VAL(Line >> 16)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx); +ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct); +void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) */ +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_GPIO_H */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h new file mode 100644 index 0000000..f912a16 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h @@ -0,0 +1,437 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_pwr.h + * @author MCD Application Team + * @brief Header file of PWR LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_PWR_H +#define __STM32F1xx_LL_PWR_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(PWR) + +/** @defgroup PWR_LL PWR + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Constants PWR Exported Constants + * @{ + */ + +/** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_PWR_WriteReg function + * @{ + */ +#define LL_PWR_CR_CSBF PWR_CR_CSBF /*!< Clear standby flag */ +#define LL_PWR_CR_CWUF PWR_CR_CWUF /*!< Clear wakeup flag */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_PWR_ReadReg function + * @{ + */ +#define LL_PWR_CSR_WUF PWR_CSR_WUF /*!< Wakeup flag */ +#define LL_PWR_CSR_SBF PWR_CSR_SBF /*!< Standby flag */ +#define LL_PWR_CSR_PVDO PWR_CSR_PVDO /*!< Power voltage detector output flag */ +#define LL_PWR_CSR_EWUP1 PWR_CSR_EWUP /*!< Enable WKUP pin 1 */ +/** + * @} + */ + + +/** @defgroup PWR_LL_EC_MODE_PWR Mode Power + * @{ + */ +#define LL_PWR_MODE_STOP_MAINREGU 0x00000000U /*!< Enter Stop mode when the CPU enters deepsleep */ +#define LL_PWR_MODE_STOP_LPREGU (PWR_CR_LPDS) /*!< Enter Stop mode (with low power Regulator ON) when the CPU enters deepsleep */ +#define LL_PWR_MODE_STANDBY (PWR_CR_PDDS) /*!< Enter Standby mode when the CPU enters deepsleep */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_REGU_MODE_DS_MODE Regulator Mode In Deep Sleep Mode + * @{ + */ +#define LL_PWR_REGU_DSMODE_MAIN 0x00000000U /*!< Voltage Regulator in main mode during deepsleep mode */ +#define LL_PWR_REGU_DSMODE_LOW_POWER (PWR_CR_LPDS) /*!< Voltage Regulator in low-power mode during deepsleep mode */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_PVDLEVEL Power Voltage Detector Level + * @{ + */ +#define LL_PWR_PVDLEVEL_0 (PWR_CR_PLS_LEV0) /*!< Voltage threshold detected by PVD 2.2 V */ +#define LL_PWR_PVDLEVEL_1 (PWR_CR_PLS_LEV1) /*!< Voltage threshold detected by PVD 2.3 V */ +#define LL_PWR_PVDLEVEL_2 (PWR_CR_PLS_LEV2) /*!< Voltage threshold detected by PVD 2.4 V */ +#define LL_PWR_PVDLEVEL_3 (PWR_CR_PLS_LEV3) /*!< Voltage threshold detected by PVD 2.5 V */ +#define LL_PWR_PVDLEVEL_4 (PWR_CR_PLS_LEV4) /*!< Voltage threshold detected by PVD 2.6 V */ +#define LL_PWR_PVDLEVEL_5 (PWR_CR_PLS_LEV5) /*!< Voltage threshold detected by PVD 2.7 V */ +#define LL_PWR_PVDLEVEL_6 (PWR_CR_PLS_LEV6) /*!< Voltage threshold detected by PVD 2.8 V */ +#define LL_PWR_PVDLEVEL_7 (PWR_CR_PLS_LEV7) /*!< Voltage threshold detected by PVD 2.9 V */ +/** + * @} + */ +/** @defgroup PWR_LL_EC_WAKEUP_PIN Wakeup Pins + * @{ + */ +#define LL_PWR_WAKEUP_PIN1 (PWR_CSR_EWUP) /*!< WKUP pin 1 : PA0 */ +/** + * @} + */ + +/** + * @} + */ + + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Macros PWR Exported Macros + * @{ + */ + +/** @defgroup PWR_LL_EM_WRITE_READ Common write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in PWR register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__)) + +/** + * @brief Read a value in PWR register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @defgroup PWR_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Enable access to the backup domain + * @rmtoll CR DBP LL_PWR_EnableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableBkUpAccess(void) +{ + SET_BIT(PWR->CR, PWR_CR_DBP); +} + +/** + * @brief Disable access to the backup domain + * @rmtoll CR DBP LL_PWR_DisableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableBkUpAccess(void) +{ + CLEAR_BIT(PWR->CR, PWR_CR_DBP); +} + +/** + * @brief Check if the backup domain is enabled + * @rmtoll CR DBP LL_PWR_IsEnabledBkUpAccess + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void) +{ + return (READ_BIT(PWR->CR, PWR_CR_DBP) == (PWR_CR_DBP)); +} + +/** + * @brief Set voltage Regulator mode during deep sleep mode + * @rmtoll CR LPDS LL_PWR_SetRegulModeDS + * @param RegulMode This parameter can be one of the following values: + * @arg @ref LL_PWR_REGU_DSMODE_MAIN + * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetRegulModeDS(uint32_t RegulMode) +{ + MODIFY_REG(PWR->CR, PWR_CR_LPDS, RegulMode); +} + +/** + * @brief Get voltage Regulator mode during deep sleep mode + * @rmtoll CR LPDS LL_PWR_GetRegulModeDS + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_REGU_DSMODE_MAIN + * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER + */ +__STATIC_INLINE uint32_t LL_PWR_GetRegulModeDS(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_LPDS)); +} + +/** + * @brief Set Power Down mode when CPU enters deepsleep + * @rmtoll CR PDDS LL_PWR_SetPowerMode\n + * @rmtoll CR LPDS LL_PWR_SetPowerMode + * @param PDMode This parameter can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP_MAINREGU + * @arg @ref LL_PWR_MODE_STOP_LPREGU + * @arg @ref LL_PWR_MODE_STANDBY + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPowerMode(uint32_t PDMode) +{ + MODIFY_REG(PWR->CR, (PWR_CR_PDDS| PWR_CR_LPDS), PDMode); +} + +/** + * @brief Get Power Down mode when CPU enters deepsleep + * @rmtoll CR PDDS LL_PWR_GetPowerMode\n + * @rmtoll CR LPDS LL_PWR_GetPowerMode + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP_MAINREGU + * @arg @ref LL_PWR_MODE_STOP_LPREGU + * @arg @ref LL_PWR_MODE_STANDBY + */ +__STATIC_INLINE uint32_t LL_PWR_GetPowerMode(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, (PWR_CR_PDDS| PWR_CR_LPDS))); +} + +/** + * @brief Configure the voltage threshold detected by the Power Voltage Detector + * @rmtoll CR PLS LL_PWR_SetPVDLevel + * @param PVDLevel This parameter can be one of the following values: + * @arg @ref LL_PWR_PVDLEVEL_0 + * @arg @ref LL_PWR_PVDLEVEL_1 + * @arg @ref LL_PWR_PVDLEVEL_2 + * @arg @ref LL_PWR_PVDLEVEL_3 + * @arg @ref LL_PWR_PVDLEVEL_4 + * @arg @ref LL_PWR_PVDLEVEL_5 + * @arg @ref LL_PWR_PVDLEVEL_6 + * @arg @ref LL_PWR_PVDLEVEL_7 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel) +{ + MODIFY_REG(PWR->CR, PWR_CR_PLS, PVDLevel); +} + +/** + * @brief Get the voltage threshold detection + * @rmtoll CR PLS LL_PWR_GetPVDLevel + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_PVDLEVEL_0 + * @arg @ref LL_PWR_PVDLEVEL_1 + * @arg @ref LL_PWR_PVDLEVEL_2 + * @arg @ref LL_PWR_PVDLEVEL_3 + * @arg @ref LL_PWR_PVDLEVEL_4 + * @arg @ref LL_PWR_PVDLEVEL_5 + * @arg @ref LL_PWR_PVDLEVEL_6 + * @arg @ref LL_PWR_PVDLEVEL_7 + */ +__STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_PLS)); +} + +/** + * @brief Enable Power Voltage Detector + * @rmtoll CR PVDE LL_PWR_EnablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnablePVD(void) +{ + SET_BIT(PWR->CR, PWR_CR_PVDE); +} + +/** + * @brief Disable Power Voltage Detector + * @rmtoll CR PVDE LL_PWR_DisablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisablePVD(void) +{ + CLEAR_BIT(PWR->CR, PWR_CR_PVDE); +} + +/** + * @brief Check if Power Voltage Detector is enabled + * @rmtoll CR PVDE LL_PWR_IsEnabledPVD + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void) +{ + return (READ_BIT(PWR->CR, PWR_CR_PVDE) == (PWR_CR_PVDE)); +} + +/** + * @brief Enable the WakeUp PINx functionality + * @rmtoll CSR EWUP LL_PWR_EnableWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin) +{ + SET_BIT(PWR->CSR, WakeUpPin); +} + +/** + * @brief Disable the WakeUp PINx functionality + * @rmtoll CSR EWUP LL_PWR_DisableWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin) +{ + CLEAR_BIT(PWR->CSR, WakeUpPin); +} + +/** + * @brief Check if the WakeUp PINx functionality is enabled + * @rmtoll CSR EWUP LL_PWR_IsEnabledWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin) +{ + return (READ_BIT(PWR->CSR, WakeUpPin) == (WakeUpPin)); +} + + +/** + * @} + */ + +/** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Wake-up Flag + * @rmtoll CSR WUF LL_PWR_IsActiveFlag_WU + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU(void) +{ + return (READ_BIT(PWR->CSR, PWR_CSR_WUF) == (PWR_CSR_WUF)); +} + +/** + * @brief Get Standby Flag + * @rmtoll CSR SBF LL_PWR_IsActiveFlag_SB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(void) +{ + return (READ_BIT(PWR->CSR, PWR_CSR_SBF) == (PWR_CSR_SBF)); +} + +/** + * @brief Indicate whether VDD voltage is below the selected PVD threshold + * @rmtoll CSR PVDO LL_PWR_IsActiveFlag_PVDO + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void) +{ + return (READ_BIT(PWR->CSR, PWR_CSR_PVDO) == (PWR_CSR_PVDO)); +} + +/** + * @brief Clear Standby Flag + * @rmtoll CR CSBF LL_PWR_ClearFlag_SB + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_SB(void) +{ + SET_BIT(PWR->CR, PWR_CR_CSBF); +} + +/** + * @brief Clear Wake-up Flags + * @rmtoll CR CWUF LL_PWR_ClearFlag_WU + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU(void) +{ + SET_BIT(PWR->CR, PWR_CR_CWUF); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup PWR_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_PWR_DeInit(void); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(PWR) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_PWR_H */ diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h new file mode 100644 index 0000000..97a6390 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h @@ -0,0 +1,2309 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_rcc.h + * @author MCD Application Team + * @brief Header file of RCC LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file in + * the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_RCC_H +#define __STM32F1xx_LL_RCC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup RCC_LL RCC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_Private_Macros RCC Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_Exported_Types RCC Exported Types + * @{ + */ + +/** @defgroup LL_ES_CLOCK_FREQ Clocks Frequency Structure + * @{ + */ + +/** + * @brief RCC Clocks Frequency Structure + */ +typedef struct +{ + uint32_t SYSCLK_Frequency; /*!< SYSCLK clock frequency */ + uint32_t HCLK_Frequency; /*!< HCLK clock frequency */ + uint32_t PCLK1_Frequency; /*!< PCLK1 clock frequency */ + uint32_t PCLK2_Frequency; /*!< PCLK2 clock frequency */ +} LL_RCC_ClocksTypeDef; + +/** + * @} + */ + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Constants RCC Exported Constants + * @{ + */ + +/** @defgroup RCC_LL_EC_OSC_VALUES Oscillator Values adaptation + * @brief Defines used to adapt values of different oscillators + * @note These values could be modified in the user environment according to + * HW set-up. + * @{ + */ +#if !defined (HSE_VALUE) +#define HSE_VALUE 8000000U /*!< Value of the HSE oscillator in Hz */ +#endif /* HSE_VALUE */ + +#if !defined (HSI_VALUE) +#define HSI_VALUE 8000000U /*!< Value of the HSI oscillator in Hz */ +#endif /* HSI_VALUE */ + +#if !defined (LSE_VALUE) +#define LSE_VALUE 32768U /*!< Value of the LSE oscillator in Hz */ +#endif /* LSE_VALUE */ + +#if !defined (LSI_VALUE) +#define LSI_VALUE 40000U /*!< Value of the LSI oscillator in Hz */ +#endif /* LSI_VALUE */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_RCC_WriteReg function + * @{ + */ +#define LL_RCC_CIR_LSIRDYC RCC_CIR_LSIRDYC /*!< LSI Ready Interrupt Clear */ +#define LL_RCC_CIR_LSERDYC RCC_CIR_LSERDYC /*!< LSE Ready Interrupt Clear */ +#define LL_RCC_CIR_HSIRDYC RCC_CIR_HSIRDYC /*!< HSI Ready Interrupt Clear */ +#define LL_RCC_CIR_HSERDYC RCC_CIR_HSERDYC /*!< HSE Ready Interrupt Clear */ +#define LL_RCC_CIR_PLLRDYC RCC_CIR_PLLRDYC /*!< PLL Ready Interrupt Clear */ +#define LL_RCC_CIR_PLL3RDYC RCC_CIR_PLL3RDYC /*!< PLL3(PLLI2S) Ready Interrupt Clear */ +#define LL_RCC_CIR_PLL2RDYC RCC_CIR_PLL2RDYC /*!< PLL2 Ready Interrupt Clear */ +#define LL_RCC_CIR_CSSC RCC_CIR_CSSC /*!< Clock Security System Interrupt Clear */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_RCC_ReadReg function + * @{ + */ +#define LL_RCC_CIR_LSIRDYF RCC_CIR_LSIRDYF /*!< LSI Ready Interrupt flag */ +#define LL_RCC_CIR_LSERDYF RCC_CIR_LSERDYF /*!< LSE Ready Interrupt flag */ +#define LL_RCC_CIR_HSIRDYF RCC_CIR_HSIRDYF /*!< HSI Ready Interrupt flag */ +#define LL_RCC_CIR_HSERDYF RCC_CIR_HSERDYF /*!< HSE Ready Interrupt flag */ +#define LL_RCC_CIR_PLLRDYF RCC_CIR_PLLRDYF /*!< PLL Ready Interrupt flag */ +#define LL_RCC_CIR_PLL3RDYF RCC_CIR_PLL3RDYF /*!< PLL3(PLLI2S) Ready Interrupt flag */ +#define LL_RCC_CIR_PLL2RDYF RCC_CIR_PLL2RDYF /*!< PLL2 Ready Interrupt flag */ +#define LL_RCC_CIR_CSSF RCC_CIR_CSSF /*!< Clock Security System Interrupt flag */ +#define LL_RCC_CSR_PINRSTF RCC_CSR_PINRSTF /*!< PIN reset flag */ +#define LL_RCC_CSR_PORRSTF RCC_CSR_PORRSTF /*!< POR/PDR reset flag */ +#define LL_RCC_CSR_SFTRSTF RCC_CSR_SFTRSTF /*!< Software Reset flag */ +#define LL_RCC_CSR_IWDGRSTF RCC_CSR_IWDGRSTF /*!< Independent Watchdog reset flag */ +#define LL_RCC_CSR_WWDGRSTF RCC_CSR_WWDGRSTF /*!< Window watchdog reset flag */ +#define LL_RCC_CSR_LPWRRSTF RCC_CSR_LPWRRSTF /*!< Low-Power reset flag */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_RCC_ReadReg and LL_RCC_WriteReg functions + * @{ + */ +#define LL_RCC_CIR_LSIRDYIE RCC_CIR_LSIRDYIE /*!< LSI Ready Interrupt Enable */ +#define LL_RCC_CIR_LSERDYIE RCC_CIR_LSERDYIE /*!< LSE Ready Interrupt Enable */ +#define LL_RCC_CIR_HSIRDYIE RCC_CIR_HSIRDYIE /*!< HSI Ready Interrupt Enable */ +#define LL_RCC_CIR_HSERDYIE RCC_CIR_HSERDYIE /*!< HSE Ready Interrupt Enable */ +#define LL_RCC_CIR_PLLRDYIE RCC_CIR_PLLRDYIE /*!< PLL Ready Interrupt Enable */ +#define LL_RCC_CIR_PLL3RDYIE RCC_CIR_PLL3RDYIE /*!< PLL3(PLLI2S) Ready Interrupt Enable */ +#define LL_RCC_CIR_PLL2RDYIE RCC_CIR_PLL2RDYIE /*!< PLL2 Ready Interrupt Enable */ +/** + * @} + */ + +#if defined(RCC_CFGR2_PREDIV2) +/** @defgroup RCC_LL_EC_HSE_PREDIV2_DIV HSE PREDIV2 Division factor + * @{ + */ +#define LL_RCC_HSE_PREDIV2_DIV_1 RCC_CFGR2_PREDIV2_DIV1 /*!< PREDIV2 input clock not divided */ +#define LL_RCC_HSE_PREDIV2_DIV_2 RCC_CFGR2_PREDIV2_DIV2 /*!< PREDIV2 input clock divided by 2 */ +#define LL_RCC_HSE_PREDIV2_DIV_3 RCC_CFGR2_PREDIV2_DIV3 /*!< PREDIV2 input clock divided by 3 */ +#define LL_RCC_HSE_PREDIV2_DIV_4 RCC_CFGR2_PREDIV2_DIV4 /*!< PREDIV2 input clock divided by 4 */ +#define LL_RCC_HSE_PREDIV2_DIV_5 RCC_CFGR2_PREDIV2_DIV5 /*!< PREDIV2 input clock divided by 5 */ +#define LL_RCC_HSE_PREDIV2_DIV_6 RCC_CFGR2_PREDIV2_DIV6 /*!< PREDIV2 input clock divided by 6 */ +#define LL_RCC_HSE_PREDIV2_DIV_7 RCC_CFGR2_PREDIV2_DIV7 /*!< PREDIV2 input clock divided by 7 */ +#define LL_RCC_HSE_PREDIV2_DIV_8 RCC_CFGR2_PREDIV2_DIV8 /*!< PREDIV2 input clock divided by 8 */ +#define LL_RCC_HSE_PREDIV2_DIV_9 RCC_CFGR2_PREDIV2_DIV9 /*!< PREDIV2 input clock divided by 9 */ +#define LL_RCC_HSE_PREDIV2_DIV_10 RCC_CFGR2_PREDIV2_DIV10 /*!< PREDIV2 input clock divided by 10 */ +#define LL_RCC_HSE_PREDIV2_DIV_11 RCC_CFGR2_PREDIV2_DIV11 /*!< PREDIV2 input clock divided by 11 */ +#define LL_RCC_HSE_PREDIV2_DIV_12 RCC_CFGR2_PREDIV2_DIV12 /*!< PREDIV2 input clock divided by 12 */ +#define LL_RCC_HSE_PREDIV2_DIV_13 RCC_CFGR2_PREDIV2_DIV13 /*!< PREDIV2 input clock divided by 13 */ +#define LL_RCC_HSE_PREDIV2_DIV_14 RCC_CFGR2_PREDIV2_DIV14 /*!< PREDIV2 input clock divided by 14 */ +#define LL_RCC_HSE_PREDIV2_DIV_15 RCC_CFGR2_PREDIV2_DIV15 /*!< PREDIV2 input clock divided by 15 */ +#define LL_RCC_HSE_PREDIV2_DIV_16 RCC_CFGR2_PREDIV2_DIV16 /*!< PREDIV2 input clock divided by 16 */ +/** + * @} + */ + +#endif /* RCC_CFGR2_PREDIV2 */ + +/** @defgroup RCC_LL_EC_SYS_CLKSOURCE System clock switch + * @{ + */ +#define LL_RCC_SYS_CLKSOURCE_HSI RCC_CFGR_SW_HSI /*!< HSI selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_HSE RCC_CFGR_SW_HSE /*!< HSE selection as system clock */ +#define LL_RCC_SYS_CLKSOURCE_PLL RCC_CFGR_SW_PLL /*!< PLL selection as system clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYS_CLKSOURCE_STATUS System clock switch status + * @{ + */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_HSI RCC_CFGR_SWS_HSI /*!< HSI used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_HSE RCC_CFGR_SWS_HSE /*!< HSE used as system clock */ +#define LL_RCC_SYS_CLKSOURCE_STATUS_PLL RCC_CFGR_SWS_PLL /*!< PLL used as system clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_SYSCLK_DIV AHB prescaler + * @{ + */ +#define LL_RCC_SYSCLK_DIV_1 RCC_CFGR_HPRE_DIV1 /*!< SYSCLK not divided */ +#define LL_RCC_SYSCLK_DIV_2 RCC_CFGR_HPRE_DIV2 /*!< SYSCLK divided by 2 */ +#define LL_RCC_SYSCLK_DIV_4 RCC_CFGR_HPRE_DIV4 /*!< SYSCLK divided by 4 */ +#define LL_RCC_SYSCLK_DIV_8 RCC_CFGR_HPRE_DIV8 /*!< SYSCLK divided by 8 */ +#define LL_RCC_SYSCLK_DIV_16 RCC_CFGR_HPRE_DIV16 /*!< SYSCLK divided by 16 */ +#define LL_RCC_SYSCLK_DIV_64 RCC_CFGR_HPRE_DIV64 /*!< SYSCLK divided by 64 */ +#define LL_RCC_SYSCLK_DIV_128 RCC_CFGR_HPRE_DIV128 /*!< SYSCLK divided by 128 */ +#define LL_RCC_SYSCLK_DIV_256 RCC_CFGR_HPRE_DIV256 /*!< SYSCLK divided by 256 */ +#define LL_RCC_SYSCLK_DIV_512 RCC_CFGR_HPRE_DIV512 /*!< SYSCLK divided by 512 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_APB1_DIV APB low-speed prescaler (APB1) + * @{ + */ +#define LL_RCC_APB1_DIV_1 RCC_CFGR_PPRE1_DIV1 /*!< HCLK not divided */ +#define LL_RCC_APB1_DIV_2 RCC_CFGR_PPRE1_DIV2 /*!< HCLK divided by 2 */ +#define LL_RCC_APB1_DIV_4 RCC_CFGR_PPRE1_DIV4 /*!< HCLK divided by 4 */ +#define LL_RCC_APB1_DIV_8 RCC_CFGR_PPRE1_DIV8 /*!< HCLK divided by 8 */ +#define LL_RCC_APB1_DIV_16 RCC_CFGR_PPRE1_DIV16 /*!< HCLK divided by 16 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_APB2_DIV APB high-speed prescaler (APB2) + * @{ + */ +#define LL_RCC_APB2_DIV_1 RCC_CFGR_PPRE2_DIV1 /*!< HCLK not divided */ +#define LL_RCC_APB2_DIV_2 RCC_CFGR_PPRE2_DIV2 /*!< HCLK divided by 2 */ +#define LL_RCC_APB2_DIV_4 RCC_CFGR_PPRE2_DIV4 /*!< HCLK divided by 4 */ +#define LL_RCC_APB2_DIV_8 RCC_CFGR_PPRE2_DIV8 /*!< HCLK divided by 8 */ +#define LL_RCC_APB2_DIV_16 RCC_CFGR_PPRE2_DIV16 /*!< HCLK divided by 16 */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_MCO1SOURCE MCO1 SOURCE selection + * @{ + */ +#define LL_RCC_MCO1SOURCE_NOCLOCK RCC_CFGR_MCO_NOCLOCK /*!< MCO output disabled, no clock on MCO */ +#define LL_RCC_MCO1SOURCE_SYSCLK RCC_CFGR_MCO_SYSCLK /*!< SYSCLK selection as MCO source */ +#define LL_RCC_MCO1SOURCE_HSI RCC_CFGR_MCO_HSI /*!< HSI selection as MCO source */ +#define LL_RCC_MCO1SOURCE_HSE RCC_CFGR_MCO_HSE /*!< HSE selection as MCO source */ +#define LL_RCC_MCO1SOURCE_PLLCLK_DIV_2 RCC_CFGR_MCO_PLLCLK_DIV2 /*!< PLL clock divided by 2*/ +#if defined(RCC_CFGR_MCO_PLL2CLK) +#define LL_RCC_MCO1SOURCE_PLL2CLK RCC_CFGR_MCO_PLL2CLK /*!< PLL2 clock selected as MCO source*/ +#endif /* RCC_CFGR_MCO_PLL2CLK */ +#if defined(RCC_CFGR_MCO_PLL3CLK_DIV2) +#define LL_RCC_MCO1SOURCE_PLLI2SCLK_DIV2 RCC_CFGR_MCO_PLL3CLK_DIV2 /*!< PLLI2S clock divided by 2 selected as MCO source*/ +#endif /* RCC_CFGR_MCO_PLL3CLK_DIV2 */ +#if defined(RCC_CFGR_MCO_EXT_HSE) +#define LL_RCC_MCO1SOURCE_EXT_HSE RCC_CFGR_MCO_EXT_HSE /*!< XT1 external 3-25 MHz oscillator clock selected as MCO source */ +#endif /* RCC_CFGR_MCO_EXT_HSE */ +#if defined(RCC_CFGR_MCO_PLL3CLK) +#define LL_RCC_MCO1SOURCE_PLLI2SCLK RCC_CFGR_MCO_PLL3CLK /*!< PLLI2S clock selected as MCO source */ +#endif /* RCC_CFGR_MCO_PLL3CLK */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_EC_PERIPH_FREQUENCY Peripheral clock frequency + * @{ + */ +#define LL_RCC_PERIPH_FREQUENCY_NO 0x00000000U /*!< No clock enabled for the peripheral */ +#define LL_RCC_PERIPH_FREQUENCY_NA 0xFFFFFFFFU /*!< Frequency cannot be provided as external clock */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +#if defined(RCC_CFGR2_I2S2SRC) +/** @defgroup RCC_LL_EC_I2S2CLKSOURCE Peripheral I2S clock source selection + * @{ + */ +#define LL_RCC_I2S2_CLKSOURCE_SYSCLK RCC_CFGR2_I2S2SRC /*!< System clock (SYSCLK) selected as I2S2 clock entry */ +#define LL_RCC_I2S2_CLKSOURCE_PLLI2S_VCO (uint32_t)(RCC_CFGR2_I2S2SRC | (RCC_CFGR2_I2S2SRC >> 16U)) /*!< PLLI2S VCO clock selected as I2S2 clock entry */ +#define LL_RCC_I2S3_CLKSOURCE_SYSCLK RCC_CFGR2_I2S3SRC /*!< System clock (SYSCLK) selected as I2S3 clock entry */ +#define LL_RCC_I2S3_CLKSOURCE_PLLI2S_VCO (uint32_t)(RCC_CFGR2_I2S3SRC | (RCC_CFGR2_I2S3SRC >> 16U)) /*!< PLLI2S VCO clock selected as I2S3 clock entry */ +/** + * @} + */ +#endif /* RCC_CFGR2_I2S2SRC */ + +#if defined(USB_OTG_FS) || defined(USB) +/** @defgroup RCC_LL_EC_USB_CLKSOURCE Peripheral USB clock source selection + * @{ + */ +#if defined(RCC_CFGR_USBPRE) +#define LL_RCC_USB_CLKSOURCE_PLL RCC_CFGR_USBPRE /*!< PLL clock is not divided */ +#define LL_RCC_USB_CLKSOURCE_PLL_DIV_1_5 0x00000000U /*!< PLL clock is divided by 1.5 */ +#endif /*RCC_CFGR_USBPRE*/ +#if defined(RCC_CFGR_OTGFSPRE) +#define LL_RCC_USB_CLKSOURCE_PLL_DIV_2 RCC_CFGR_OTGFSPRE /*!< PLL clock is divided by 2 */ +#define LL_RCC_USB_CLKSOURCE_PLL_DIV_3 0x00000000U /*!< PLL clock is divided by 3 */ +#endif /*RCC_CFGR_OTGFSPRE*/ +/** + * @} + */ +#endif /* USB_OTG_FS || USB */ + +/** @defgroup RCC_LL_EC_ADC_CLKSOURCE_PCLK2 Peripheral ADC clock source selection + * @{ + */ +#define LL_RCC_ADC_CLKSRC_PCLK2_DIV_2 RCC_CFGR_ADCPRE_DIV2 /*ADC prescaler PCLK2 divided by 2*/ +#define LL_RCC_ADC_CLKSRC_PCLK2_DIV_4 RCC_CFGR_ADCPRE_DIV4 /*ADC prescaler PCLK2 divided by 4*/ +#define LL_RCC_ADC_CLKSRC_PCLK2_DIV_6 RCC_CFGR_ADCPRE_DIV6 /*ADC prescaler PCLK2 divided by 6*/ +#define LL_RCC_ADC_CLKSRC_PCLK2_DIV_8 RCC_CFGR_ADCPRE_DIV8 /*ADC prescaler PCLK2 divided by 8*/ +/** + * @} + */ + +#if defined(RCC_CFGR2_I2S2SRC) +/** @defgroup RCC_LL_EC_I2S2 Peripheral I2S get clock source + * @{ + */ +#define LL_RCC_I2S2_CLKSOURCE RCC_CFGR2_I2S2SRC /*!< I2S2 Clock source selection */ +#define LL_RCC_I2S3_CLKSOURCE RCC_CFGR2_I2S3SRC /*!< I2S3 Clock source selection */ +/** + * @} + */ + +#endif /* RCC_CFGR2_I2S2SRC */ + +#if defined(USB_OTG_FS) || defined(USB) +/** @defgroup RCC_LL_EC_USB Peripheral USB get clock source + * @{ + */ +#define LL_RCC_USB_CLKSOURCE 0x00400000U /*!< USB Clock source selection */ +/** + * @} + */ + +#endif /* USB_OTG_FS || USB */ + +/** @defgroup RCC_LL_EC_ADC Peripheral ADC get clock source + * @{ + */ +#define LL_RCC_ADC_CLKSOURCE RCC_CFGR_ADCPRE /*!< ADC Clock source selection */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_RTC_CLKSOURCE RTC clock source selection + * @{ + */ +#define LL_RCC_RTC_CLKSOURCE_NONE 0x00000000U /*!< No clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_LSE RCC_BDCR_RTCSEL_0 /*!< LSE oscillator clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_LSI RCC_BDCR_RTCSEL_1 /*!< LSI oscillator clock used as RTC clock */ +#define LL_RCC_RTC_CLKSOURCE_HSE_DIV128 RCC_BDCR_RTCSEL /*!< HSE oscillator clock divided by 128 used as RTC clock */ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLL_MUL PLL Multiplicator factor + * @{ + */ +#if defined(RCC_CFGR_PLLMULL2) +#define LL_RCC_PLL_MUL_2 RCC_CFGR_PLLMULL2 /*!< PLL input clock*2 */ +#endif /*RCC_CFGR_PLLMULL2*/ +#if defined(RCC_CFGR_PLLMULL3) +#define LL_RCC_PLL_MUL_3 RCC_CFGR_PLLMULL3 /*!< PLL input clock*3 */ +#endif /*RCC_CFGR_PLLMULL3*/ +#define LL_RCC_PLL_MUL_4 RCC_CFGR_PLLMULL4 /*!< PLL input clock*4 */ +#define LL_RCC_PLL_MUL_5 RCC_CFGR_PLLMULL5 /*!< PLL input clock*5 */ +#define LL_RCC_PLL_MUL_6 RCC_CFGR_PLLMULL6 /*!< PLL input clock*6 */ +#define LL_RCC_PLL_MUL_7 RCC_CFGR_PLLMULL7 /*!< PLL input clock*7 */ +#define LL_RCC_PLL_MUL_8 RCC_CFGR_PLLMULL8 /*!< PLL input clock*8 */ +#define LL_RCC_PLL_MUL_9 RCC_CFGR_PLLMULL9 /*!< PLL input clock*9 */ +#if defined(RCC_CFGR_PLLMULL6_5) +#define LL_RCC_PLL_MUL_6_5 RCC_CFGR_PLLMULL6_5 /*!< PLL input clock*6 */ +#else +#define LL_RCC_PLL_MUL_10 RCC_CFGR_PLLMULL10 /*!< PLL input clock*10 */ +#define LL_RCC_PLL_MUL_11 RCC_CFGR_PLLMULL11 /*!< PLL input clock*11 */ +#define LL_RCC_PLL_MUL_12 RCC_CFGR_PLLMULL12 /*!< PLL input clock*12 */ +#define LL_RCC_PLL_MUL_13 RCC_CFGR_PLLMULL13 /*!< PLL input clock*13 */ +#define LL_RCC_PLL_MUL_14 RCC_CFGR_PLLMULL14 /*!< PLL input clock*14 */ +#define LL_RCC_PLL_MUL_15 RCC_CFGR_PLLMULL15 /*!< PLL input clock*15 */ +#define LL_RCC_PLL_MUL_16 RCC_CFGR_PLLMULL16 /*!< PLL input clock*16 */ +#endif /*RCC_CFGR_PLLMULL6_5*/ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PLLSOURCE PLL SOURCE + * @{ + */ +#define LL_RCC_PLLSOURCE_HSI_DIV_2 0x00000000U /*!< HSI clock divided by 2 selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE RCC_CFGR_PLLSRC /*!< HSE/PREDIV1 clock selected as PLL entry clock source */ +#if defined(RCC_CFGR2_PREDIV1SRC) +#define LL_RCC_PLLSOURCE_PLL2 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/PREDIV1 clock selected as PLL entry clock source */ +#endif /*RCC_CFGR2_PREDIV1SRC*/ + +#if defined(RCC_CFGR2_PREDIV1) +#define LL_RCC_PLLSOURCE_HSE_DIV_1 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV1) /*!< HSE/1 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_2 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV2) /*!< HSE/2 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_3 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV3) /*!< HSE/3 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_4 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV4) /*!< HSE/4 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_5 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV5) /*!< HSE/5 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_6 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV6) /*!< HSE/6 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_7 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV7) /*!< HSE/7 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_8 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV8) /*!< HSE/8 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_9 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV9) /*!< HSE/9 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_10 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV10) /*!< HSE/10 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_11 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV11) /*!< HSE/11 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_12 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV12) /*!< HSE/12 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_13 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV13) /*!< HSE/13 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_14 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV14) /*!< HSE/14 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_15 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV15) /*!< HSE/15 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_16 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV16) /*!< HSE/16 clock selected as PLL entry clock source */ +#if defined(RCC_CFGR2_PREDIV1SRC) +#define LL_RCC_PLLSOURCE_PLL2_DIV_1 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV1 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/1 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_2 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV2 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/2 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_3 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV3 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/3 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_4 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV4 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/4 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_5 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV5 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/5 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_6 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV6 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/6 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_7 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV7 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/7 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_8 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV8 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/8 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_9 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV9 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/9 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_10 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV10 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/10 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_11 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV11 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/11 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_12 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV12 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/12 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_13 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV13 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/13 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_14 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV14 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/14 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_15 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV15 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/15 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_PLL2_DIV_16 (RCC_CFGR_PLLSRC | RCC_CFGR2_PREDIV1_DIV16 | RCC_CFGR2_PREDIV1SRC << 4U) /*!< PLL2/16 clock selected as PLL entry clock source */ +#endif /*RCC_CFGR2_PREDIV1SRC*/ +#else +#define LL_RCC_PLLSOURCE_HSE_DIV_1 (RCC_CFGR_PLLSRC | 0x00000000U) /*!< HSE/1 clock selected as PLL entry clock source */ +#define LL_RCC_PLLSOURCE_HSE_DIV_2 (RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE) /*!< HSE/2 clock selected as PLL entry clock source */ +#endif /*RCC_CFGR2_PREDIV1*/ +/** + * @} + */ + +/** @defgroup RCC_LL_EC_PREDIV_DIV PREDIV Division factor + * @{ + */ +#if defined(RCC_CFGR2_PREDIV1) +#define LL_RCC_PREDIV_DIV_1 RCC_CFGR2_PREDIV1_DIV1 /*!< PREDIV1 input clock not divided */ +#define LL_RCC_PREDIV_DIV_2 RCC_CFGR2_PREDIV1_DIV2 /*!< PREDIV1 input clock divided by 2 */ +#define LL_RCC_PREDIV_DIV_3 RCC_CFGR2_PREDIV1_DIV3 /*!< PREDIV1 input clock divided by 3 */ +#define LL_RCC_PREDIV_DIV_4 RCC_CFGR2_PREDIV1_DIV4 /*!< PREDIV1 input clock divided by 4 */ +#define LL_RCC_PREDIV_DIV_5 RCC_CFGR2_PREDIV1_DIV5 /*!< PREDIV1 input clock divided by 5 */ +#define LL_RCC_PREDIV_DIV_6 RCC_CFGR2_PREDIV1_DIV6 /*!< PREDIV1 input clock divided by 6 */ +#define LL_RCC_PREDIV_DIV_7 RCC_CFGR2_PREDIV1_DIV7 /*!< PREDIV1 input clock divided by 7 */ +#define LL_RCC_PREDIV_DIV_8 RCC_CFGR2_PREDIV1_DIV8 /*!< PREDIV1 input clock divided by 8 */ +#define LL_RCC_PREDIV_DIV_9 RCC_CFGR2_PREDIV1_DIV9 /*!< PREDIV1 input clock divided by 9 */ +#define LL_RCC_PREDIV_DIV_10 RCC_CFGR2_PREDIV1_DIV10 /*!< PREDIV1 input clock divided by 10 */ +#define LL_RCC_PREDIV_DIV_11 RCC_CFGR2_PREDIV1_DIV11 /*!< PREDIV1 input clock divided by 11 */ +#define LL_RCC_PREDIV_DIV_12 RCC_CFGR2_PREDIV1_DIV12 /*!< PREDIV1 input clock divided by 12 */ +#define LL_RCC_PREDIV_DIV_13 RCC_CFGR2_PREDIV1_DIV13 /*!< PREDIV1 input clock divided by 13 */ +#define LL_RCC_PREDIV_DIV_14 RCC_CFGR2_PREDIV1_DIV14 /*!< PREDIV1 input clock divided by 14 */ +#define LL_RCC_PREDIV_DIV_15 RCC_CFGR2_PREDIV1_DIV15 /*!< PREDIV1 input clock divided by 15 */ +#define LL_RCC_PREDIV_DIV_16 RCC_CFGR2_PREDIV1_DIV16 /*!< PREDIV1 input clock divided by 16 */ +#else +#define LL_RCC_PREDIV_DIV_1 0x00000000U /*!< HSE divider clock clock not divided */ +#define LL_RCC_PREDIV_DIV_2 RCC_CFGR_PLLXTPRE /*!< HSE divider clock divided by 2 for PLL entry */ +#endif /*RCC_CFGR2_PREDIV1*/ +/** + * @} + */ + +#if defined(RCC_PLLI2S_SUPPORT) +/** @defgroup RCC_LL_EC_PLLI2S_MUL PLLI2S MUL + * @{ + */ +#define LL_RCC_PLLI2S_MUL_8 RCC_CFGR2_PLL3MUL8 /*!< PLLI2S input clock * 8 */ +#define LL_RCC_PLLI2S_MUL_9 RCC_CFGR2_PLL3MUL9 /*!< PLLI2S input clock * 9 */ +#define LL_RCC_PLLI2S_MUL_10 RCC_CFGR2_PLL3MUL10 /*!< PLLI2S input clock * 10 */ +#define LL_RCC_PLLI2S_MUL_11 RCC_CFGR2_PLL3MUL11 /*!< PLLI2S input clock * 11 */ +#define LL_RCC_PLLI2S_MUL_12 RCC_CFGR2_PLL3MUL12 /*!< PLLI2S input clock * 12 */ +#define LL_RCC_PLLI2S_MUL_13 RCC_CFGR2_PLL3MUL13 /*!< PLLI2S input clock * 13 */ +#define LL_RCC_PLLI2S_MUL_14 RCC_CFGR2_PLL3MUL14 /*!< PLLI2S input clock * 14 */ +#define LL_RCC_PLLI2S_MUL_16 RCC_CFGR2_PLL3MUL16 /*!< PLLI2S input clock * 16 */ +#define LL_RCC_PLLI2S_MUL_20 RCC_CFGR2_PLL3MUL20 /*!< PLLI2S input clock * 20 */ +/** + * @} + */ + +#endif /* RCC_PLLI2S_SUPPORT */ + +#if defined(RCC_PLL2_SUPPORT) +/** @defgroup RCC_LL_EC_PLL2_MUL PLL2 MUL + * @{ + */ +#define LL_RCC_PLL2_MUL_8 RCC_CFGR2_PLL2MUL8 /*!< PLL2 input clock * 8 */ +#define LL_RCC_PLL2_MUL_9 RCC_CFGR2_PLL2MUL9 /*!< PLL2 input clock * 9 */ +#define LL_RCC_PLL2_MUL_10 RCC_CFGR2_PLL2MUL10 /*!< PLL2 input clock * 10 */ +#define LL_RCC_PLL2_MUL_11 RCC_CFGR2_PLL2MUL11 /*!< PLL2 input clock * 11 */ +#define LL_RCC_PLL2_MUL_12 RCC_CFGR2_PLL2MUL12 /*!< PLL2 input clock * 12 */ +#define LL_RCC_PLL2_MUL_13 RCC_CFGR2_PLL2MUL13 /*!< PLL2 input clock * 13 */ +#define LL_RCC_PLL2_MUL_14 RCC_CFGR2_PLL2MUL14 /*!< PLL2 input clock * 14 */ +#define LL_RCC_PLL2_MUL_16 RCC_CFGR2_PLL2MUL16 /*!< PLL2 input clock * 16 */ +#define LL_RCC_PLL2_MUL_20 RCC_CFGR2_PLL2MUL20 /*!< PLL2 input clock * 20 */ +/** + * @} + */ + +#endif /* RCC_PLL2_SUPPORT */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Macros RCC Exported Macros + * @{ + */ + +/** @defgroup RCC_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in RCC register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_RCC_WriteReg(__REG__, __VALUE__) WRITE_REG(RCC->__REG__, (__VALUE__)) + +/** + * @brief Read a value in RCC register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_RCC_ReadReg(__REG__) READ_REG(RCC->__REG__) +/** + * @} + */ + +/** @defgroup RCC_LL_EM_CALC_FREQ Calculate frequencies + * @{ + */ + +#if defined(RCC_CFGR_PLLMULL6_5) +/** + * @brief Helper macro to calculate the PLLCLK frequency + * @note ex: @ref __LL_RCC_CALC_PLLCLK_FREQ (HSE_VALUE / (@ref LL_RCC_PLL_GetPrediv () + 1), @ref LL_RCC_PLL_GetMultiplicator()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE div Prediv1 / HSI div 2 / PLL2 div Prediv1) + * @param __PLLMUL__: This parameter can be one of the following values: + * @arg @ref LL_RCC_PLL_MUL_4 + * @arg @ref LL_RCC_PLL_MUL_5 + * @arg @ref LL_RCC_PLL_MUL_6 + * @arg @ref LL_RCC_PLL_MUL_7 + * @arg @ref LL_RCC_PLL_MUL_8 + * @arg @ref LL_RCC_PLL_MUL_9 + * @arg @ref LL_RCC_PLL_MUL_6_5 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_FREQ(__INPUTFREQ__, __PLLMUL__) \ + (((__PLLMUL__) != RCC_CFGR_PLLMULL6_5) ? \ + ((__INPUTFREQ__) * ((((__PLLMUL__) & RCC_CFGR_PLLMULL) >> RCC_CFGR_PLLMULL_Pos) + 2U)) :\ + (((__INPUTFREQ__) * 13U) / 2U)) + +#else +/** + * @brief Helper macro to calculate the PLLCLK frequency + * @note ex: @ref __LL_RCC_CALC_PLLCLK_FREQ (HSE_VALUE / (@ref LL_RCC_PLL_GetPrediv () + 1), @ref LL_RCC_PLL_GetMultiplicator ()); + * @param __INPUTFREQ__ PLL Input frequency (based on HSE div Prediv1 or div 2 / HSI div 2) + * @param __PLLMUL__: This parameter can be one of the following values: + * @arg @ref LL_RCC_PLL_MUL_2 + * @arg @ref LL_RCC_PLL_MUL_3 + * @arg @ref LL_RCC_PLL_MUL_4 + * @arg @ref LL_RCC_PLL_MUL_5 + * @arg @ref LL_RCC_PLL_MUL_6 + * @arg @ref LL_RCC_PLL_MUL_7 + * @arg @ref LL_RCC_PLL_MUL_8 + * @arg @ref LL_RCC_PLL_MUL_9 + * @arg @ref LL_RCC_PLL_MUL_10 + * @arg @ref LL_RCC_PLL_MUL_11 + * @arg @ref LL_RCC_PLL_MUL_12 + * @arg @ref LL_RCC_PLL_MUL_13 + * @arg @ref LL_RCC_PLL_MUL_14 + * @arg @ref LL_RCC_PLL_MUL_15 + * @arg @ref LL_RCC_PLL_MUL_16 + * @retval PLL clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLCLK_FREQ(__INPUTFREQ__, __PLLMUL__) ((__INPUTFREQ__) * (((__PLLMUL__) >> RCC_CFGR_PLLMULL_Pos) + 2U)) +#endif /* RCC_CFGR_PLLMULL6_5 */ + +#if defined(RCC_PLLI2S_SUPPORT) +/** + * @brief Helper macro to calculate the PLLI2S frequency + * @note ex: @ref __LL_RCC_CALC_PLLI2SCLK_FREQ (HSE_VALUE, @ref LL_RCC_PLLI2S_GetMultiplicator (), @ref LL_RCC_HSE_GetPrediv2 ()); + * @param __INPUTFREQ__ PLLI2S Input frequency (based on HSE value) + * @param __PLLI2SMUL__: This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLI2S_MUL_8 + * @arg @ref LL_RCC_PLLI2S_MUL_9 + * @arg @ref LL_RCC_PLLI2S_MUL_10 + * @arg @ref LL_RCC_PLLI2S_MUL_11 + * @arg @ref LL_RCC_PLLI2S_MUL_12 + * @arg @ref LL_RCC_PLLI2S_MUL_13 + * @arg @ref LL_RCC_PLLI2S_MUL_14 + * @arg @ref LL_RCC_PLLI2S_MUL_16 + * @arg @ref LL_RCC_PLLI2S_MUL_20 + * @param __PLLI2SDIV__: This parameter can be one of the following values: + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_1 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_2 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_3 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_4 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_5 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_6 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_7 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_8 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_9 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_10 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_11 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_12 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_13 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_14 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_15 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_16 + * @retval PLLI2S clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLLI2SCLK_FREQ(__INPUTFREQ__, __PLLI2SMUL__, __PLLI2SDIV__) (((__INPUTFREQ__) * (((__PLLI2SMUL__) >> RCC_CFGR2_PLL3MUL_Pos) + 2U)) / (((__PLLI2SDIV__) >> RCC_CFGR2_PREDIV2_Pos) + 1U)) +#endif /* RCC_PLLI2S_SUPPORT */ + +#if defined(RCC_PLL2_SUPPORT) +/** + * @brief Helper macro to calculate the PLL2 frequency + * @note ex: @ref __LL_RCC_CALC_PLL2CLK_FREQ (HSE_VALUE, @ref LL_RCC_PLL2_GetMultiplicator (), @ref LL_RCC_HSE_GetPrediv2 ()); + * @param __INPUTFREQ__ PLL2 Input frequency (based on HSE value) + * @param __PLL2MUL__: This parameter can be one of the following values: + * @arg @ref LL_RCC_PLL2_MUL_8 + * @arg @ref LL_RCC_PLL2_MUL_9 + * @arg @ref LL_RCC_PLL2_MUL_10 + * @arg @ref LL_RCC_PLL2_MUL_11 + * @arg @ref LL_RCC_PLL2_MUL_12 + * @arg @ref LL_RCC_PLL2_MUL_13 + * @arg @ref LL_RCC_PLL2_MUL_14 + * @arg @ref LL_RCC_PLL2_MUL_16 + * @arg @ref LL_RCC_PLL2_MUL_20 + * @param __PLL2DIV__: This parameter can be one of the following values: + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_1 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_2 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_3 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_4 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_5 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_6 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_7 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_8 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_9 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_10 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_11 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_12 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_13 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_14 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_15 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_16 + * @retval PLL2 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PLL2CLK_FREQ(__INPUTFREQ__, __PLL2MUL__, __PLL2DIV__) (((__INPUTFREQ__) * (((__PLL2MUL__) >> RCC_CFGR2_PLL2MUL_Pos) + 2U)) / (((__PLL2DIV__) >> RCC_CFGR2_PREDIV2_Pos) + 1U)) +#endif /* RCC_PLL2_SUPPORT */ + +/** + * @brief Helper macro to calculate the HCLK frequency + * @note: __AHBPRESCALER__ be retrieved by @ref LL_RCC_GetAHBPrescaler + * ex: __LL_RCC_CALC_HCLK_FREQ(LL_RCC_GetAHBPrescaler()) + * @param __SYSCLKFREQ__ SYSCLK frequency (based on HSE/HSI/PLLCLK) + * @param __AHBPRESCALER__: This parameter can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval HCLK clock frequency (in Hz) + */ +#define __LL_RCC_CALC_HCLK_FREQ(__SYSCLKFREQ__, __AHBPRESCALER__) ((__SYSCLKFREQ__) >> AHBPrescTable[((__AHBPRESCALER__) & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos]) + +/** + * @brief Helper macro to calculate the PCLK1 frequency (ABP1) + * @note: __APB1PRESCALER__ be retrieved by @ref LL_RCC_GetAPB1Prescaler + * ex: __LL_RCC_CALC_PCLK1_FREQ(LL_RCC_GetAPB1Prescaler()) + * @param __HCLKFREQ__ HCLK frequency + * @param __APB1PRESCALER__: This parameter can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval PCLK1 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PCLK1_FREQ(__HCLKFREQ__, __APB1PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[(__APB1PRESCALER__) >> RCC_CFGR_PPRE1_Pos]) + +/** + * @brief Helper macro to calculate the PCLK2 frequency (ABP2) + * @note: __APB2PRESCALER__ be retrieved by @ref LL_RCC_GetAPB2Prescaler + * ex: __LL_RCC_CALC_PCLK2_FREQ(LL_RCC_GetAPB2Prescaler()) + * @param __HCLKFREQ__ HCLK frequency + * @param __APB2PRESCALER__: This parameter can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + * @retval PCLK2 clock frequency (in Hz) + */ +#define __LL_RCC_CALC_PCLK2_FREQ(__HCLKFREQ__, __APB2PRESCALER__) ((__HCLKFREQ__) >> APBPrescTable[(__APB2PRESCALER__) >> RCC_CFGR_PPRE2_Pos]) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup RCC_LL_Exported_Functions RCC Exported Functions + * @{ + */ + +/** @defgroup RCC_LL_EF_HSE HSE + * @{ + */ + +/** + * @brief Enable the Clock Security System. + * @rmtoll CR CSSON LL_RCC_HSE_EnableCSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_EnableCSS(void) +{ + SET_BIT(RCC->CR, RCC_CR_CSSON); +} + +/** + * @brief Enable HSE external oscillator (HSE Bypass) + * @rmtoll CR HSEBYP LL_RCC_HSE_EnableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_EnableBypass(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSEBYP); +} + +/** + * @brief Disable HSE external oscillator (HSE Bypass) + * @rmtoll CR HSEBYP LL_RCC_HSE_DisableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_DisableBypass(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSEBYP); +} + +/** + * @brief Enable HSE crystal oscillator (HSE ON) + * @rmtoll CR HSEON LL_RCC_HSE_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSEON); +} + +/** + * @brief Disable HSE crystal oscillator (HSE ON) + * @rmtoll CR HSEON LL_RCC_HSE_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSE_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSEON); +} + +/** + * @brief Check if HSE oscillator Ready + * @rmtoll CR HSERDY LL_RCC_HSE_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSE_IsReady(void) +{ + return (READ_BIT(RCC->CR, RCC_CR_HSERDY) == (RCC_CR_HSERDY)); +} + +#if defined(RCC_CFGR2_PREDIV2) +/** + * @brief Get PREDIV2 division factor + * @rmtoll CFGR2 PREDIV2 LL_RCC_HSE_GetPrediv2 + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_1 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_2 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_3 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_4 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_5 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_6 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_7 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_8 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_9 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_10 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_11 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_12 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_13 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_14 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_15 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_HSE_GetPrediv2(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR2, RCC_CFGR2_PREDIV2)); +} +#endif /* RCC_CFGR2_PREDIV2 */ + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_HSI HSI + * @{ + */ + +/** + * @brief Enable HSI oscillator + * @rmtoll CR HSION LL_RCC_HSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_HSION); +} + +/** + * @brief Disable HSI oscillator + * @rmtoll CR HSION LL_RCC_HSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_HSION); +} + +/** + * @brief Check if HSI clock is ready + * @rmtoll CR HSIRDY LL_RCC_HSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_IsReady(void) +{ + return (READ_BIT(RCC->CR, RCC_CR_HSIRDY) == (RCC_CR_HSIRDY)); +} + +/** + * @brief Get HSI Calibration value + * @note When HSITRIM is written, HSICAL is updated with the sum of + * HSITRIM and the factory trim value + * @rmtoll CR HSICAL LL_RCC_HSI_GetCalibration + * @retval Between Min_Data = 0x00 and Max_Data = 0xFF + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibration(void) +{ + return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_HSICAL) >> RCC_CR_HSICAL_Pos); +} + +/** + * @brief Set HSI Calibration trimming + * @note user-programmable trimming value that is added to the HSICAL + * @note Default value is 16, which, when added to the HSICAL value, + * should trim the HSI to 16 MHz +/- 1 % + * @rmtoll CR HSITRIM LL_RCC_HSI_SetCalibTrimming + * @param Value between Min_Data = 0x00 and Max_Data = 0x1F + * @retval None + */ +__STATIC_INLINE void LL_RCC_HSI_SetCalibTrimming(uint32_t Value) +{ + MODIFY_REG(RCC->CR, RCC_CR_HSITRIM, Value << RCC_CR_HSITRIM_Pos); +} + +/** + * @brief Get HSI Calibration trimming + * @rmtoll CR HSITRIM LL_RCC_HSI_GetCalibTrimming + * @retval Between Min_Data = 0x00 and Max_Data = 0x1F + */ +__STATIC_INLINE uint32_t LL_RCC_HSI_GetCalibTrimming(void) +{ + return (uint32_t)(READ_BIT(RCC->CR, RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_LSE LSE + * @{ + */ + +/** + * @brief Enable Low Speed External (LSE) crystal. + * @rmtoll BDCR LSEON LL_RCC_LSE_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_Enable(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEON); +} + +/** + * @brief Disable Low Speed External (LSE) crystal. + * @rmtoll BDCR LSEON LL_RCC_LSE_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_Disable(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEON); +} + +/** + * @brief Enable external clock source (LSE bypass). + * @rmtoll BDCR LSEBYP LL_RCC_LSE_EnableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_EnableBypass(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +} + +/** + * @brief Disable external clock source (LSE bypass). + * @rmtoll BDCR LSEBYP LL_RCC_LSE_DisableBypass + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSE_DisableBypass(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_LSEBYP); +} + +/** + * @brief Check if LSE oscillator Ready + * @rmtoll BDCR LSERDY LL_RCC_LSE_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSE_IsReady(void) +{ + return (READ_BIT(RCC->BDCR, RCC_BDCR_LSERDY) == (RCC_BDCR_LSERDY)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_LSI LSI + * @{ + */ + +/** + * @brief Enable LSI Oscillator + * @rmtoll CSR LSION LL_RCC_LSI_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_Enable(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_LSION); +} + +/** + * @brief Disable LSI Oscillator + * @rmtoll CSR LSION LL_RCC_LSI_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_LSI_Disable(void) +{ + CLEAR_BIT(RCC->CSR, RCC_CSR_LSION); +} + +/** + * @brief Check if LSI is Ready + * @rmtoll CSR LSIRDY LL_RCC_LSI_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_LSI_IsReady(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_LSIRDY) == (RCC_CSR_LSIRDY)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_System System + * @{ + */ + +/** + * @brief Configure the system clock source + * @rmtoll CFGR SW LL_RCC_SetSysClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_PLL + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetSysClkSource(uint32_t Source) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_SW, Source); +} + +/** + * @brief Get the system clock source + * @rmtoll CFGR SWS LL_RCC_GetSysClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSI + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_HSE + * @arg @ref LL_RCC_SYS_CLKSOURCE_STATUS_PLL + */ +__STATIC_INLINE uint32_t LL_RCC_GetSysClkSource(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_SWS)); +} + +/** + * @brief Set AHB prescaler + * @rmtoll CFGR HPRE LL_RCC_SetAHBPrescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAHBPrescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_HPRE, Prescaler); +} + +/** + * @brief Set APB1 prescaler + * @rmtoll CFGR PPRE1 LL_RCC_SetAPB1Prescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB1Prescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, Prescaler); +} + +/** + * @brief Set APB2 prescaler + * @rmtoll CFGR PPRE2 LL_RCC_SetAPB2Prescaler + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetAPB2Prescaler(uint32_t Prescaler) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, Prescaler); +} + +/** + * @brief Get AHB prescaler + * @rmtoll CFGR HPRE LL_RCC_GetAHBPrescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_SYSCLK_DIV_1 + * @arg @ref LL_RCC_SYSCLK_DIV_2 + * @arg @ref LL_RCC_SYSCLK_DIV_4 + * @arg @ref LL_RCC_SYSCLK_DIV_8 + * @arg @ref LL_RCC_SYSCLK_DIV_16 + * @arg @ref LL_RCC_SYSCLK_DIV_64 + * @arg @ref LL_RCC_SYSCLK_DIV_128 + * @arg @ref LL_RCC_SYSCLK_DIV_256 + * @arg @ref LL_RCC_SYSCLK_DIV_512 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAHBPrescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_HPRE)); +} + +/** + * @brief Get APB1 prescaler + * @rmtoll CFGR PPRE1 LL_RCC_GetAPB1Prescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_APB1_DIV_1 + * @arg @ref LL_RCC_APB1_DIV_2 + * @arg @ref LL_RCC_APB1_DIV_4 + * @arg @ref LL_RCC_APB1_DIV_8 + * @arg @ref LL_RCC_APB1_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAPB1Prescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE1)); +} + +/** + * @brief Get APB2 prescaler + * @rmtoll CFGR PPRE2 LL_RCC_GetAPB2Prescaler + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_APB2_DIV_1 + * @arg @ref LL_RCC_APB2_DIV_2 + * @arg @ref LL_RCC_APB2_DIV_4 + * @arg @ref LL_RCC_APB2_DIV_8 + * @arg @ref LL_RCC_APB2_DIV_16 + */ +__STATIC_INLINE uint32_t LL_RCC_GetAPB2Prescaler(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PPRE2)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_MCO MCO + * @{ + */ + +/** + * @brief Configure MCOx + * @rmtoll CFGR MCO LL_RCC_ConfigMCO + * @param MCOxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_MCO1SOURCE_NOCLOCK + * @arg @ref LL_RCC_MCO1SOURCE_SYSCLK + * @arg @ref LL_RCC_MCO1SOURCE_HSI + * @arg @ref LL_RCC_MCO1SOURCE_HSE + * @arg @ref LL_RCC_MCO1SOURCE_PLLCLK_DIV_2 + * @arg @ref LL_RCC_MCO1SOURCE_PLL2CLK (*) + * @arg @ref LL_RCC_MCO1SOURCE_PLLI2SCLK_DIV2 (*) + * @arg @ref LL_RCC_MCO1SOURCE_EXT_HSE (*) + * @arg @ref LL_RCC_MCO1SOURCE_PLLI2SCLK (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_RCC_ConfigMCO(uint32_t MCOxSource) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_MCOSEL, MCOxSource); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_Peripheral_Clock_Source Peripheral Clock Source + * @{ + */ + +#if defined(RCC_CFGR2_I2S2SRC) +/** + * @brief Configure I2Sx clock source + * @rmtoll CFGR2 I2S2SRC LL_RCC_SetI2SClockSource\n + * CFGR2 I2S3SRC LL_RCC_SetI2SClockSource + * @param I2SxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2S2_CLKSOURCE_PLLI2S_VCO + * @arg @ref LL_RCC_I2S3_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2S3_CLKSOURCE_PLLI2S_VCO + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetI2SClockSource(uint32_t I2SxSource) +{ + MODIFY_REG(RCC->CFGR2, (I2SxSource & 0xFFFF0000U), (I2SxSource << 16U)); +} +#endif /* RCC_CFGR2_I2S2SRC */ + +#if defined(USB_OTG_FS) || defined(USB) +/** + * @brief Configure USB clock source + * @rmtoll CFGR OTGFSPRE LL_RCC_SetUSBClockSource\n + * CFGR USBPRE LL_RCC_SetUSBClockSource + * @param USBxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL_DIV_1_5 (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL_DIV_2 (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL_DIV_3 (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetUSBClockSource(uint32_t USBxSource) +{ +#if defined(RCC_CFGR_USBPRE) + MODIFY_REG(RCC->CFGR, RCC_CFGR_USBPRE, USBxSource); +#else /*RCC_CFGR_OTGFSPRE*/ + MODIFY_REG(RCC->CFGR, RCC_CFGR_OTGFSPRE, USBxSource); +#endif /*RCC_CFGR_USBPRE*/ +} +#endif /* USB_OTG_FS || USB */ + +/** + * @brief Configure ADC clock source + * @rmtoll CFGR ADCPRE LL_RCC_SetADCClockSource + * @param ADCxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSRC_PCLK2_DIV_2 + * @arg @ref LL_RCC_ADC_CLKSRC_PCLK2_DIV_4 + * @arg @ref LL_RCC_ADC_CLKSRC_PCLK2_DIV_6 + * @arg @ref LL_RCC_ADC_CLKSRC_PCLK2_DIV_8 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetADCClockSource(uint32_t ADCxSource) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_ADCPRE, ADCxSource); +} + +#if defined(RCC_CFGR2_I2S2SRC) +/** + * @brief Get I2Sx clock source + * @rmtoll CFGR2 I2S2SRC LL_RCC_GetI2SClockSource\n + * CFGR2 I2S3SRC LL_RCC_GetI2SClockSource + * @param I2Sx This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S2_CLKSOURCE + * @arg @ref LL_RCC_I2S3_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_I2S2_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2S2_CLKSOURCE_PLLI2S_VCO + * @arg @ref LL_RCC_I2S3_CLKSOURCE_SYSCLK + * @arg @ref LL_RCC_I2S3_CLKSOURCE_PLLI2S_VCO + */ +__STATIC_INLINE uint32_t LL_RCC_GetI2SClockSource(uint32_t I2Sx) +{ + return (uint32_t)(READ_BIT(RCC->CFGR2, I2Sx) >> 16U | I2Sx); +} +#endif /* RCC_CFGR2_I2S2SRC */ + +#if defined(USB_OTG_FS) || defined(USB) +/** + * @brief Get USBx clock source + * @rmtoll CFGR OTGFSPRE LL_RCC_GetUSBClockSource\n + * CFGR USBPRE LL_RCC_GetUSBClockSource + * @param USBx This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL_DIV_1_5 (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL_DIV_2 (*) + * @arg @ref LL_RCC_USB_CLKSOURCE_PLL_DIV_3 (*) + * + * (*) value not defined in all devices + */ +__STATIC_INLINE uint32_t LL_RCC_GetUSBClockSource(uint32_t USBx) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, USBx)); +} +#endif /* USB_OTG_FS || USB */ + +/** + * @brief Get ADCx clock source + * @rmtoll CFGR ADCPRE LL_RCC_GetADCClockSource + * @param ADCx This parameter can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSOURCE + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSRC_PCLK2_DIV_2 + * @arg @ref LL_RCC_ADC_CLKSRC_PCLK2_DIV_4 + * @arg @ref LL_RCC_ADC_CLKSRC_PCLK2_DIV_6 + * @arg @ref LL_RCC_ADC_CLKSRC_PCLK2_DIV_8 + */ +__STATIC_INLINE uint32_t LL_RCC_GetADCClockSource(uint32_t ADCx) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, ADCx)); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_RTC RTC + * @{ + */ + +/** + * @brief Set RTC Clock Source + * @note Once the RTC clock source has been selected, it cannot be changed any more unless + * the Backup domain is reset. The BDRST bit can be used to reset them. + * @rmtoll BDCR RTCSEL LL_RCC_SetRTCClockSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI + * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE_DIV128 + * @retval None + */ +__STATIC_INLINE void LL_RCC_SetRTCClockSource(uint32_t Source) +{ + MODIFY_REG(RCC->BDCR, RCC_BDCR_RTCSEL, Source); +} + +/** + * @brief Get RTC Clock Source + * @rmtoll BDCR RTCSEL LL_RCC_GetRTCClockSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_RTC_CLKSOURCE_NONE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSE + * @arg @ref LL_RCC_RTC_CLKSOURCE_LSI + * @arg @ref LL_RCC_RTC_CLKSOURCE_HSE_DIV128 + */ +__STATIC_INLINE uint32_t LL_RCC_GetRTCClockSource(void) +{ + return (uint32_t)(READ_BIT(RCC->BDCR, RCC_BDCR_RTCSEL)); +} + +/** + * @brief Enable RTC + * @rmtoll BDCR RTCEN LL_RCC_EnableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableRTC(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +} + +/** + * @brief Disable RTC + * @rmtoll BDCR RTCEN LL_RCC_DisableRTC + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableRTC(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_RTCEN); +} + +/** + * @brief Check if RTC has been enabled or not + * @rmtoll BDCR RTCEN LL_RCC_IsEnabledRTC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledRTC(void) +{ + return (READ_BIT(RCC->BDCR, RCC_BDCR_RTCEN) == (RCC_BDCR_RTCEN)); +} + +/** + * @brief Force the Backup domain reset + * @rmtoll BDCR BDRST LL_RCC_ForceBackupDomainReset + * @retval None + */ +__STATIC_INLINE void LL_RCC_ForceBackupDomainReset(void) +{ + SET_BIT(RCC->BDCR, RCC_BDCR_BDRST); +} + +/** + * @brief Release the Backup domain reset + * @rmtoll BDCR BDRST LL_RCC_ReleaseBackupDomainReset + * @retval None + */ +__STATIC_INLINE void LL_RCC_ReleaseBackupDomainReset(void) +{ + CLEAR_BIT(RCC->BDCR, RCC_BDCR_BDRST); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_PLL PLL + * @{ + */ + +/** + * @brief Enable PLL + * @rmtoll CR PLLON LL_RCC_PLL_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLLON); +} + +/** + * @brief Disable PLL + * @note Cannot be disabled if the PLL clock is used as the system clock + * @rmtoll CR PLLON LL_RCC_PLL_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLLON); +} + +/** + * @brief Check if PLL Ready + * @rmtoll CR PLLRDY LL_RCC_PLL_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_IsReady(void) +{ + return (READ_BIT(RCC->CR, RCC_CR_PLLRDY) == (RCC_CR_PLLRDY)); +} + +/** + * @brief Configure PLL used for SYSCLK Domain + * @rmtoll CFGR PLLSRC LL_RCC_PLL_ConfigDomain_SYS\n + * CFGR PLLXTPRE LL_RCC_PLL_ConfigDomain_SYS\n + * CFGR PLLMULL LL_RCC_PLL_ConfigDomain_SYS\n + * CFGR2 PREDIV1 LL_RCC_PLL_ConfigDomain_SYS\n + * CFGR2 PREDIV1SRC LL_RCC_PLL_ConfigDomain_SYS + * @param Source This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI_DIV_2 + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_1 + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_2 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_3 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_4 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_5 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_6 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_7 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_8 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_9 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_10 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_11 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_12 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_13 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_14 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_15 (*) + * @arg @ref LL_RCC_PLLSOURCE_HSE_DIV_16 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_1 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_2 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_3 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_4 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_5 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_6 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_7 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_8 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_9 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_10 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_11 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_12 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_13 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_14 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_15 (*) + * @arg @ref LL_RCC_PLLSOURCE_PLL2_DIV_16 (*) + * + * (*) value not defined in all devices + * @param PLLMul This parameter can be one of the following values: + * @arg @ref LL_RCC_PLL_MUL_2 (*) + * @arg @ref LL_RCC_PLL_MUL_3 (*) + * @arg @ref LL_RCC_PLL_MUL_4 + * @arg @ref LL_RCC_PLL_MUL_5 + * @arg @ref LL_RCC_PLL_MUL_6 + * @arg @ref LL_RCC_PLL_MUL_7 + * @arg @ref LL_RCC_PLL_MUL_8 + * @arg @ref LL_RCC_PLL_MUL_9 + * @arg @ref LL_RCC_PLL_MUL_6_5 (*) + * @arg @ref LL_RCC_PLL_MUL_10 (*) + * @arg @ref LL_RCC_PLL_MUL_11 (*) + * @arg @ref LL_RCC_PLL_MUL_12 (*) + * @arg @ref LL_RCC_PLL_MUL_13 (*) + * @arg @ref LL_RCC_PLL_MUL_14 (*) + * @arg @ref LL_RCC_PLL_MUL_15 (*) + * @arg @ref LL_RCC_PLL_MUL_16 (*) + * + * (*) value not defined in all devices + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_SYS(uint32_t Source, uint32_t PLLMul) +{ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL, + (Source & (RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE)) | PLLMul); +#if defined(RCC_CFGR2_PREDIV1) +#if defined(RCC_CFGR2_PREDIV1SRC) + MODIFY_REG(RCC->CFGR2, (RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC), + (Source & RCC_CFGR2_PREDIV1) | ((Source & (RCC_CFGR2_PREDIV1SRC << 4U)) >> 4U)); +#else + MODIFY_REG(RCC->CFGR2, RCC_CFGR2_PREDIV1, (Source & RCC_CFGR2_PREDIV1)); +#endif /*RCC_CFGR2_PREDIV1SRC*/ +#endif /*RCC_CFGR2_PREDIV1*/ +} + +/** + * @brief Configure PLL clock source + * @rmtoll CFGR PLLSRC LL_RCC_PLL_SetMainSource\n + * CFGR2 PREDIV1SRC LL_RCC_PLL_SetMainSource + * @param PLLSource This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI_DIV_2 + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @arg @ref LL_RCC_PLLSOURCE_PLL2 (*) + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_SetMainSource(uint32_t PLLSource) +{ +#if defined(RCC_CFGR2_PREDIV1SRC) + MODIFY_REG(RCC->CFGR2, RCC_CFGR2_PREDIV1SRC, ((PLLSource & (RCC_CFGR2_PREDIV1SRC << 4U)) >> 4U)); +#endif /* RCC_CFGR2_PREDIV1SRC */ + MODIFY_REG(RCC->CFGR, RCC_CFGR_PLLSRC, PLLSource); +} + +/** + * @brief Get the oscillator used as PLL clock source. + * @rmtoll CFGR PLLSRC LL_RCC_PLL_GetMainSource\n + * CFGR2 PREDIV1SRC LL_RCC_PLL_GetMainSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLSOURCE_HSI_DIV_2 + * @arg @ref LL_RCC_PLLSOURCE_HSE + * @arg @ref LL_RCC_PLLSOURCE_PLL2 (*) + * + * (*) value not defined in all devices + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetMainSource(void) +{ +#if defined(RCC_CFGR2_PREDIV1SRC) + uint32_t pllsrc = READ_BIT(RCC->CFGR, RCC_CFGR_PLLSRC); + uint32_t predivsrc = (uint32_t)(READ_BIT(RCC->CFGR2, RCC_CFGR2_PREDIV1SRC) << 4U); + return (uint32_t)(pllsrc | predivsrc); +#else + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PLLSRC)); +#endif /*RCC_CFGR2_PREDIV1SRC*/ +} + +/** + * @brief Get PLL multiplication Factor + * @rmtoll CFGR PLLMULL LL_RCC_PLL_GetMultiplicator + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLL_MUL_2 (*) + * @arg @ref LL_RCC_PLL_MUL_3 (*) + * @arg @ref LL_RCC_PLL_MUL_4 + * @arg @ref LL_RCC_PLL_MUL_5 + * @arg @ref LL_RCC_PLL_MUL_6 + * @arg @ref LL_RCC_PLL_MUL_7 + * @arg @ref LL_RCC_PLL_MUL_8 + * @arg @ref LL_RCC_PLL_MUL_9 + * @arg @ref LL_RCC_PLL_MUL_6_5 (*) + * @arg @ref LL_RCC_PLL_MUL_10 (*) + * @arg @ref LL_RCC_PLL_MUL_11 (*) + * @arg @ref LL_RCC_PLL_MUL_12 (*) + * @arg @ref LL_RCC_PLL_MUL_13 (*) + * @arg @ref LL_RCC_PLL_MUL_14 (*) + * @arg @ref LL_RCC_PLL_MUL_15 (*) + * @arg @ref LL_RCC_PLL_MUL_16 (*) + * + * (*) value not defined in all devices + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetMultiplicator(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PLLMULL)); +} + +/** + * @brief Get PREDIV1 division factor for the main PLL + * @note They can be written only when the PLL is disabled + * @rmtoll CFGR2 PREDIV1 LL_RCC_PLL_GetPrediv\n + * CFGR2 PLLXTPRE LL_RCC_PLL_GetPrediv + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PREDIV_DIV_1 + * @arg @ref LL_RCC_PREDIV_DIV_2 + * @arg @ref LL_RCC_PREDIV_DIV_3 (*) + * @arg @ref LL_RCC_PREDIV_DIV_4 (*) + * @arg @ref LL_RCC_PREDIV_DIV_5 (*) + * @arg @ref LL_RCC_PREDIV_DIV_6 (*) + * @arg @ref LL_RCC_PREDIV_DIV_7 (*) + * @arg @ref LL_RCC_PREDIV_DIV_8 (*) + * @arg @ref LL_RCC_PREDIV_DIV_9 (*) + * @arg @ref LL_RCC_PREDIV_DIV_10 (*) + * @arg @ref LL_RCC_PREDIV_DIV_11 (*) + * @arg @ref LL_RCC_PREDIV_DIV_12 (*) + * @arg @ref LL_RCC_PREDIV_DIV_13 (*) + * @arg @ref LL_RCC_PREDIV_DIV_14 (*) + * @arg @ref LL_RCC_PREDIV_DIV_15 (*) + * @arg @ref LL_RCC_PREDIV_DIV_16 (*) + * + * (*) value not defined in all devices + */ +__STATIC_INLINE uint32_t LL_RCC_PLL_GetPrediv(void) +{ +#if defined(RCC_CFGR2_PREDIV1) + return (uint32_t)(READ_BIT(RCC->CFGR2, RCC_CFGR2_PREDIV1)); +#else + return (uint32_t)(READ_BIT(RCC->CFGR, RCC_CFGR_PLLXTPRE) >> RCC_CFGR_PLLXTPRE_Pos); +#endif /*RCC_CFGR2_PREDIV1*/ +} + +/** + * @} + */ + +#if defined(RCC_PLLI2S_SUPPORT) +/** @defgroup RCC_LL_EF_PLLI2S PLLI2S + * @{ + */ + +/** + * @brief Enable PLLI2S + * @rmtoll CR PLL3ON LL_RCC_PLLI2S_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLI2S_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLL3ON); +} + +/** + * @brief Disable PLLI2S + * @rmtoll CR PLL3ON LL_RCC_PLLI2S_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLLI2S_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLL3ON); +} + +/** + * @brief Check if PLLI2S Ready + * @rmtoll CR PLL3RDY LL_RCC_PLLI2S_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLLI2S_IsReady(void) +{ + return (READ_BIT(RCC->CR, RCC_CR_PLL3RDY) == (RCC_CR_PLL3RDY)); +} + +/** + * @brief Configure PLLI2S used for I2S Domain + * @rmtoll CFGR2 PREDIV2 LL_RCC_PLL_ConfigDomain_PLLI2S\n + * CFGR2 PLL3MUL LL_RCC_PLL_ConfigDomain_PLLI2S + * @param Divider This parameter can be one of the following values: + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_1 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_2 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_3 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_4 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_5 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_6 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_7 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_8 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_9 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_10 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_11 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_12 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_13 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_14 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_15 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_16 + * @param Multiplicator This parameter can be one of the following values: + * @arg @ref LL_RCC_PLLI2S_MUL_8 + * @arg @ref LL_RCC_PLLI2S_MUL_9 + * @arg @ref LL_RCC_PLLI2S_MUL_10 + * @arg @ref LL_RCC_PLLI2S_MUL_11 + * @arg @ref LL_RCC_PLLI2S_MUL_12 + * @arg @ref LL_RCC_PLLI2S_MUL_13 + * @arg @ref LL_RCC_PLLI2S_MUL_14 + * @arg @ref LL_RCC_PLLI2S_MUL_16 + * @arg @ref LL_RCC_PLLI2S_MUL_20 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_PLLI2S(uint32_t Divider, uint32_t Multiplicator) +{ + MODIFY_REG(RCC->CFGR2, RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL3MUL, Divider | Multiplicator); +} + +/** + * @brief Get PLLI2S Multiplication Factor + * @rmtoll CFGR2 PLL3MUL LL_RCC_PLLI2S_GetMultiplicator + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLLI2S_MUL_8 + * @arg @ref LL_RCC_PLLI2S_MUL_9 + * @arg @ref LL_RCC_PLLI2S_MUL_10 + * @arg @ref LL_RCC_PLLI2S_MUL_11 + * @arg @ref LL_RCC_PLLI2S_MUL_12 + * @arg @ref LL_RCC_PLLI2S_MUL_13 + * @arg @ref LL_RCC_PLLI2S_MUL_14 + * @arg @ref LL_RCC_PLLI2S_MUL_16 + * @arg @ref LL_RCC_PLLI2S_MUL_20 + */ +__STATIC_INLINE uint32_t LL_RCC_PLLI2S_GetMultiplicator(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR2, RCC_CFGR2_PLL3MUL)); +} + +/** + * @} + */ +#endif /* RCC_PLLI2S_SUPPORT */ + +#if defined(RCC_PLL2_SUPPORT) +/** @defgroup RCC_LL_EF_PLL2 PLL2 + * @{ + */ + +/** + * @brief Enable PLL2 + * @rmtoll CR PLL2ON LL_RCC_PLL2_Enable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL2_Enable(void) +{ + SET_BIT(RCC->CR, RCC_CR_PLL2ON); +} + +/** + * @brief Disable PLL2 + * @rmtoll CR PLL2ON LL_RCC_PLL2_Disable + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL2_Disable(void) +{ + CLEAR_BIT(RCC->CR, RCC_CR_PLL2ON); +} + +/** + * @brief Check if PLL2 Ready + * @rmtoll CR PLL2RDY LL_RCC_PLL2_IsReady + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_PLL2_IsReady(void) +{ + return (READ_BIT(RCC->CR, RCC_CR_PLL2RDY) == (RCC_CR_PLL2RDY)); +} + +/** + * @brief Configure PLL2 used for PLL2 Domain + * @rmtoll CFGR2 PREDIV2 LL_RCC_PLL_ConfigDomain_PLL2\n + * CFGR2 PLL2MUL LL_RCC_PLL_ConfigDomain_PLL2 + * @param Divider This parameter can be one of the following values: + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_1 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_2 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_3 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_4 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_5 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_6 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_7 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_8 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_9 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_10 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_11 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_12 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_13 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_14 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_15 + * @arg @ref LL_RCC_HSE_PREDIV2_DIV_16 + * @param Multiplicator This parameter can be one of the following values: + * @arg @ref LL_RCC_PLL2_MUL_8 + * @arg @ref LL_RCC_PLL2_MUL_9 + * @arg @ref LL_RCC_PLL2_MUL_10 + * @arg @ref LL_RCC_PLL2_MUL_11 + * @arg @ref LL_RCC_PLL2_MUL_12 + * @arg @ref LL_RCC_PLL2_MUL_13 + * @arg @ref LL_RCC_PLL2_MUL_14 + * @arg @ref LL_RCC_PLL2_MUL_16 + * @arg @ref LL_RCC_PLL2_MUL_20 + * @retval None + */ +__STATIC_INLINE void LL_RCC_PLL_ConfigDomain_PLL2(uint32_t Divider, uint32_t Multiplicator) +{ + MODIFY_REG(RCC->CFGR2, RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL, Divider | Multiplicator); +} + +/** + * @brief Get PLL2 Multiplication Factor + * @rmtoll CFGR2 PLL2MUL LL_RCC_PLL2_GetMultiplicator + * @retval Returned value can be one of the following values: + * @arg @ref LL_RCC_PLL2_MUL_8 + * @arg @ref LL_RCC_PLL2_MUL_9 + * @arg @ref LL_RCC_PLL2_MUL_10 + * @arg @ref LL_RCC_PLL2_MUL_11 + * @arg @ref LL_RCC_PLL2_MUL_12 + * @arg @ref LL_RCC_PLL2_MUL_13 + * @arg @ref LL_RCC_PLL2_MUL_14 + * @arg @ref LL_RCC_PLL2_MUL_16 + * @arg @ref LL_RCC_PLL2_MUL_20 + */ +__STATIC_INLINE uint32_t LL_RCC_PLL2_GetMultiplicator(void) +{ + return (uint32_t)(READ_BIT(RCC->CFGR2, RCC_CFGR2_PLL2MUL)); +} + +/** + * @} + */ +#endif /* RCC_PLL2_SUPPORT */ + +/** @defgroup RCC_LL_EF_FLAG_Management FLAG Management + * @{ + */ + +/** + * @brief Clear LSI ready interrupt flag + * @rmtoll CIR LSIRDYC LL_RCC_ClearFlag_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSIRDYC); +} + +/** + * @brief Clear LSE ready interrupt flag + * @rmtoll CIR LSERDYC LL_RCC_ClearFlag_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_LSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSERDYC); +} + +/** + * @brief Clear HSI ready interrupt flag + * @rmtoll CIR HSIRDYC LL_RCC_ClearFlag_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSIRDYC); +} + +/** + * @brief Clear HSE ready interrupt flag + * @rmtoll CIR HSERDYC LL_RCC_ClearFlag_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSERDYC); +} + +/** + * @brief Clear PLL ready interrupt flag + * @rmtoll CIR PLLRDYC LL_RCC_ClearFlag_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLLRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLLRDYC); +} + +#if defined(RCC_PLLI2S_SUPPORT) +/** + * @brief Clear PLLI2S ready interrupt flag + * @rmtoll CIR PLL3RDYC LL_RCC_ClearFlag_PLLI2SRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLLI2SRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLL3RDYC); +} +#endif /* RCC_PLLI2S_SUPPORT */ + +#if defined(RCC_PLL2_SUPPORT) +/** + * @brief Clear PLL2 ready interrupt flag + * @rmtoll CIR PLL2RDYC LL_RCC_ClearFlag_PLL2RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_PLL2RDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLL2RDYC); +} +#endif /* RCC_PLL2_SUPPORT */ + +/** + * @brief Clear Clock security system interrupt flag + * @rmtoll CIR CSSC LL_RCC_ClearFlag_HSECSS + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearFlag_HSECSS(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_CSSC); +} + +/** + * @brief Check if LSI ready interrupt occurred or not + * @rmtoll CIR LSIRDYF LL_RCC_IsActiveFlag_LSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSIRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_LSIRDYF) == (RCC_CIR_LSIRDYF)); +} + +/** + * @brief Check if LSE ready interrupt occurred or not + * @rmtoll CIR LSERDYF LL_RCC_IsActiveFlag_LSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LSERDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_LSERDYF) == (RCC_CIR_LSERDYF)); +} + +/** + * @brief Check if HSI ready interrupt occurred or not + * @rmtoll CIR HSIRDYF LL_RCC_IsActiveFlag_HSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSIRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_HSIRDYF) == (RCC_CIR_HSIRDYF)); +} + +/** + * @brief Check if HSE ready interrupt occurred or not + * @rmtoll CIR HSERDYF LL_RCC_IsActiveFlag_HSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSERDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_HSERDYF) == (RCC_CIR_HSERDYF)); +} + +/** + * @brief Check if PLL ready interrupt occurred or not + * @rmtoll CIR PLLRDYF LL_RCC_IsActiveFlag_PLLRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLLRDYF) == (RCC_CIR_PLLRDYF)); +} + +#if defined(RCC_PLLI2S_SUPPORT) +/** + * @brief Check if PLLI2S ready interrupt occurred or not + * @rmtoll CIR PLL3RDYF LL_RCC_IsActiveFlag_PLLI2SRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLLI2SRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLL3RDYF) == (RCC_CIR_PLL3RDYF)); +} +#endif /* RCC_PLLI2S_SUPPORT */ + +#if defined(RCC_PLL2_SUPPORT) +/** + * @brief Check if PLL2 ready interrupt occurred or not + * @rmtoll CIR PLL2RDYF LL_RCC_IsActiveFlag_PLL2RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PLL2RDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLL2RDYF) == (RCC_CIR_PLL2RDYF)); +} +#endif /* RCC_PLL2_SUPPORT */ + +/** + * @brief Check if Clock security system interrupt occurred or not + * @rmtoll CIR CSSF LL_RCC_IsActiveFlag_HSECSS + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_HSECSS(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_CSSF) == (RCC_CIR_CSSF)); +} + +/** + * @brief Check if RCC flag Independent Watchdog reset is set or not. + * @rmtoll CSR IWDGRSTF LL_RCC_IsActiveFlag_IWDGRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_IWDGRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_IWDGRSTF) == (RCC_CSR_IWDGRSTF)); +} + +/** + * @brief Check if RCC flag Low Power reset is set or not. + * @rmtoll CSR LPWRRSTF LL_RCC_IsActiveFlag_LPWRRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_LPWRRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_LPWRRSTF) == (RCC_CSR_LPWRRSTF)); +} + +/** + * @brief Check if RCC flag Pin reset is set or not. + * @rmtoll CSR PINRSTF LL_RCC_IsActiveFlag_PINRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PINRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_PINRSTF) == (RCC_CSR_PINRSTF)); +} + +/** + * @brief Check if RCC flag POR/PDR reset is set or not. + * @rmtoll CSR PORRSTF LL_RCC_IsActiveFlag_PORRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_PORRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_PORRSTF) == (RCC_CSR_PORRSTF)); +} + +/** + * @brief Check if RCC flag Software reset is set or not. + * @rmtoll CSR SFTRSTF LL_RCC_IsActiveFlag_SFTRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_SFTRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_SFTRSTF) == (RCC_CSR_SFTRSTF)); +} + +/** + * @brief Check if RCC flag Window Watchdog reset is set or not. + * @rmtoll CSR WWDGRSTF LL_RCC_IsActiveFlag_WWDGRST + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsActiveFlag_WWDGRST(void) +{ + return (READ_BIT(RCC->CSR, RCC_CSR_WWDGRSTF) == (RCC_CSR_WWDGRSTF)); +} + +/** + * @brief Set RMVF bit to clear the reset flags. + * @rmtoll CSR RMVF LL_RCC_ClearResetFlags + * @retval None + */ +__STATIC_INLINE void LL_RCC_ClearResetFlags(void) +{ + SET_BIT(RCC->CSR, RCC_CSR_RMVF); +} + +/** + * @} + */ + +/** @defgroup RCC_LL_EF_IT_Management IT Management + * @{ + */ + +/** + * @brief Enable LSI ready interrupt + * @rmtoll CIR LSIRDYIE LL_RCC_EnableIT_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSIRDYIE); +} + +/** + * @brief Enable LSE ready interrupt + * @rmtoll CIR LSERDYIE LL_RCC_EnableIT_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_LSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_LSERDYIE); +} + +/** + * @brief Enable HSI ready interrupt + * @rmtoll CIR HSIRDYIE LL_RCC_EnableIT_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSIRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSIRDYIE); +} + +/** + * @brief Enable HSE ready interrupt + * @rmtoll CIR HSERDYIE LL_RCC_EnableIT_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_HSERDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_HSERDYIE); +} + +/** + * @brief Enable PLL ready interrupt + * @rmtoll CIR PLLRDYIE LL_RCC_EnableIT_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLLRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLLRDYIE); +} + +#if defined(RCC_PLLI2S_SUPPORT) +/** + * @brief Enable PLLI2S ready interrupt + * @rmtoll CIR PLL3RDYIE LL_RCC_EnableIT_PLLI2SRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLLI2SRDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLL3RDYIE); +} +#endif /* RCC_PLLI2S_SUPPORT */ + +#if defined(RCC_PLL2_SUPPORT) +/** + * @brief Enable PLL2 ready interrupt + * @rmtoll CIR PLL2RDYIE LL_RCC_EnableIT_PLL2RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_EnableIT_PLL2RDY(void) +{ + SET_BIT(RCC->CIR, RCC_CIR_PLL2RDYIE); +} +#endif /* RCC_PLL2_SUPPORT */ + +/** + * @brief Disable LSI ready interrupt + * @rmtoll CIR LSIRDYIE LL_RCC_DisableIT_LSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSIRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_LSIRDYIE); +} + +/** + * @brief Disable LSE ready interrupt + * @rmtoll CIR LSERDYIE LL_RCC_DisableIT_LSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_LSERDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_LSERDYIE); +} + +/** + * @brief Disable HSI ready interrupt + * @rmtoll CIR HSIRDYIE LL_RCC_DisableIT_HSIRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSIRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_HSIRDYIE); +} + +/** + * @brief Disable HSE ready interrupt + * @rmtoll CIR HSERDYIE LL_RCC_DisableIT_HSERDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_HSERDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_HSERDYIE); +} + +/** + * @brief Disable PLL ready interrupt + * @rmtoll CIR PLLRDYIE LL_RCC_DisableIT_PLLRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLLRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_PLLRDYIE); +} + +#if defined(RCC_PLLI2S_SUPPORT) +/** + * @brief Disable PLLI2S ready interrupt + * @rmtoll CIR PLL3RDYIE LL_RCC_DisableIT_PLLI2SRDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLLI2SRDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_PLL3RDYIE); +} +#endif /* RCC_PLLI2S_SUPPORT */ + +#if defined(RCC_PLL2_SUPPORT) +/** + * @brief Disable PLL2 ready interrupt + * @rmtoll CIR PLL2RDYIE LL_RCC_DisableIT_PLL2RDY + * @retval None + */ +__STATIC_INLINE void LL_RCC_DisableIT_PLL2RDY(void) +{ + CLEAR_BIT(RCC->CIR, RCC_CIR_PLL2RDYIE); +} +#endif /* RCC_PLL2_SUPPORT */ + +/** + * @brief Checks if LSI ready interrupt source is enabled or disabled. + * @rmtoll CIR LSIRDYIE LL_RCC_IsEnabledIT_LSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSIRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_LSIRDYIE) == (RCC_CIR_LSIRDYIE)); +} + +/** + * @brief Checks if LSE ready interrupt source is enabled or disabled. + * @rmtoll CIR LSERDYIE LL_RCC_IsEnabledIT_LSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_LSERDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_LSERDYIE) == (RCC_CIR_LSERDYIE)); +} + +/** + * @brief Checks if HSI ready interrupt source is enabled or disabled. + * @rmtoll CIR HSIRDYIE LL_RCC_IsEnabledIT_HSIRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSIRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_HSIRDYIE) == (RCC_CIR_HSIRDYIE)); +} + +/** + * @brief Checks if HSE ready interrupt source is enabled or disabled. + * @rmtoll CIR HSERDYIE LL_RCC_IsEnabledIT_HSERDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_HSERDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_HSERDYIE) == (RCC_CIR_HSERDYIE)); +} + +/** + * @brief Checks if PLL ready interrupt source is enabled or disabled. + * @rmtoll CIR PLLRDYIE LL_RCC_IsEnabledIT_PLLRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLLRDYIE) == (RCC_CIR_PLLRDYIE)); +} + +#if defined(RCC_PLLI2S_SUPPORT) +/** + * @brief Checks if PLLI2S ready interrupt source is enabled or disabled. + * @rmtoll CIR PLL3RDYIE LL_RCC_IsEnabledIT_PLLI2SRDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLLI2SRDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLL3RDYIE) == (RCC_CIR_PLL3RDYIE)); +} +#endif /* RCC_PLLI2S_SUPPORT */ + +#if defined(RCC_PLL2_SUPPORT) +/** + * @brief Checks if PLL2 ready interrupt source is enabled or disabled. + * @rmtoll CIR PLL2RDYIE LL_RCC_IsEnabledIT_PLL2RDY + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RCC_IsEnabledIT_PLL2RDY(void) +{ + return (READ_BIT(RCC->CIR, RCC_CIR_PLL2RDYIE) == (RCC_CIR_PLL2RDYIE)); +} +#endif /* RCC_PLL2_SUPPORT */ + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RCC_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_RCC_DeInit(void); +/** + * @} + */ + +/** @defgroup RCC_LL_EF_Get_Freq Get system and peripherals clocks frequency functions + * @{ + */ +void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks); +#if defined(RCC_CFGR2_I2S2SRC) +uint32_t LL_RCC_GetI2SClockFreq(uint32_t I2SxSource); +#endif /* RCC_CFGR2_I2S2SRC */ +#if defined(USB_OTG_FS) || defined(USB) +uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource); +#endif /* USB_OTG_FS || USB */ +uint32_t LL_RCC_GetADCClockFreq(uint32_t ADCxSource); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* RCC */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_RCC_H */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h new file mode 100644 index 0000000..0aba37b --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_system.h @@ -0,0 +1,575 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_system.h + * @author MCD Application Team + * @brief Header file of SYSTEM LL module. + * + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 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. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL SYSTEM driver contains a set of generic APIs that can be + used by user: + (+) Some of the FLASH features need to be handled in the SYSTEM file. + (+) Access to DBGCMU registers + (+) Access to SYSCFG registers + + @endverbatim + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_SYSTEM_H +#define __STM32F1xx_LL_SYSTEM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (FLASH) || defined (DBGMCU) + +/** @defgroup SYSTEM_LL SYSTEM + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Private_Constants SYSTEM Private Constants + * @{ + */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Exported_Constants SYSTEM Exported Constants + * @{ + */ + + + +/** @defgroup SYSTEM_LL_EC_TRACE DBGMCU TRACE Pin Assignment + * @{ + */ +#define LL_DBGMCU_TRACE_NONE 0x00000000U /*!< TRACE pins not assigned (default state) */ +#define LL_DBGMCU_TRACE_ASYNCH DBGMCU_CR_TRACE_IOEN /*!< TRACE pin assignment for Asynchronous Mode */ +#define LL_DBGMCU_TRACE_SYNCH_SIZE1 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_0) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 1 */ +#define LL_DBGMCU_TRACE_SYNCH_SIZE2 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE_1) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 2 */ +#define LL_DBGMCU_TRACE_SYNCH_SIZE4 (DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE) /*!< TRACE pin assignment for Synchronous Mode with a TRACEDATA size of 4 */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_APB1_GRP1_STOP_IP DBGMCU APB1 GRP1 STOP IP + * @{ + */ +#define LL_DBGMCU_APB1_GRP1_TIM2_STOP DBGMCU_CR_DBG_TIM2_STOP /*!< TIM2 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_TIM3_STOP DBGMCU_CR_DBG_TIM3_STOP /*!< TIM3 counter stopped when core is halted */ +#define LL_DBGMCU_APB1_GRP1_TIM4_STOP DBGMCU_CR_DBG_TIM4_STOP /*!< TIM4 counter stopped when core is halted */ +#if defined(DBGMCU_CR_DBG_TIM5_STOP) +#define LL_DBGMCU_APB1_GRP1_TIM5_STOP DBGMCU_CR_DBG_TIM5_STOP /*!< TIM5 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM5_STOP */ +#if defined(DBGMCU_CR_DBG_TIM6_STOP) +#define LL_DBGMCU_APB1_GRP1_TIM6_STOP DBGMCU_CR_DBG_TIM6_STOP /*!< TIM6 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM6_STOP */ +#if defined(DBGMCU_CR_DBG_TIM7_STOP) +#define LL_DBGMCU_APB1_GRP1_TIM7_STOP DBGMCU_CR_DBG_TIM7_STOP /*!< TIM7 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM7_STOP */ +#if defined(DBGMCU_CR_DBG_TIM12_STOP) +#define LL_DBGMCU_APB1_GRP1_TIM12_STOP DBGMCU_CR_DBG_TIM12_STOP /*!< TIM12 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM12_STOP */ +#if defined(DBGMCU_CR_DBG_TIM13_STOP) +#define LL_DBGMCU_APB1_GRP1_TIM13_STOP DBGMCU_CR_DBG_TIM13_STOP /*!< TIM13 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM13_STOP */ +#if defined(DBGMCU_CR_DBG_TIM14_STOP) +#define LL_DBGMCU_APB1_GRP1_TIM14_STOP DBGMCU_CR_DBG_TIM14_STOP /*!< TIM14 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM14_STOP */ +#define LL_DBGMCU_APB1_GRP1_WWDG_STOP DBGMCU_CR_DBG_WWDG_STOP /*!< Debug Window Watchdog stopped when Core is halted */ +#define LL_DBGMCU_APB1_GRP1_IWDG_STOP DBGMCU_CR_DBG_IWDG_STOP /*!< Debug Independent Watchdog stopped when Core is halted */ +#define LL_DBGMCU_APB1_GRP1_I2C1_STOP DBGMCU_CR_DBG_I2C1_SMBUS_TIMEOUT /*!< I2C1 SMBUS timeout mode stopped when Core is halted */ +#if defined(DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT) +#define LL_DBGMCU_APB1_GRP1_I2C2_STOP DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT /*!< I2C2 SMBUS timeout mode stopped when Core is halted */ +#endif /* DBGMCU_CR_DBG_I2C2_SMBUS_TIMEOUT */ +#if defined(DBGMCU_CR_DBG_CAN1_STOP) +#define LL_DBGMCU_APB1_GRP1_CAN1_STOP DBGMCU_CR_DBG_CAN1_STOP /*!< CAN1 debug stopped when Core is halted */ +#endif /* DBGMCU_CR_DBG_CAN1_STOP */ +#if defined(DBGMCU_CR_DBG_CAN2_STOP) +#define LL_DBGMCU_APB1_GRP1_CAN2_STOP DBGMCU_CR_DBG_CAN2_STOP /*!< CAN2 debug stopped when Core is halted */ +#endif /* DBGMCU_CR_DBG_CAN2_STOP */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_APB2_GRP1_STOP_IP DBGMCU APB2 GRP1 STOP IP + * @{ + */ +#define LL_DBGMCU_APB2_GRP1_TIM1_STOP DBGMCU_CR_DBG_TIM1_STOP /*!< TIM1 counter stopped when core is halted */ +#if defined(DBGMCU_CR_DBG_TIM8_STOP) +#define LL_DBGMCU_APB2_GRP1_TIM8_STOP DBGMCU_CR_DBG_TIM8_STOP /*!< TIM8 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_CAN1_STOP */ +#if defined(DBGMCU_CR_DBG_TIM9_STOP) +#define LL_DBGMCU_APB2_GRP1_TIM9_STOP DBGMCU_CR_DBG_TIM9_STOP /*!< TIM9 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM9_STOP */ +#if defined(DBGMCU_CR_DBG_TIM10_STOP) +#define LL_DBGMCU_APB2_GRP1_TIM10_STOP DBGMCU_CR_DBG_TIM10_STOP /*!< TIM10 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM10_STOP */ +#if defined(DBGMCU_CR_DBG_TIM11_STOP) +#define LL_DBGMCU_APB2_GRP1_TIM11_STOP DBGMCU_CR_DBG_TIM11_STOP /*!< TIM11 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM11_STOP */ +#if defined(DBGMCU_CR_DBG_TIM15_STOP) +#define LL_DBGMCU_APB2_GRP1_TIM15_STOP DBGMCU_CR_DBG_TIM15_STOP /*!< TIM15 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM15_STOP */ +#if defined(DBGMCU_CR_DBG_TIM16_STOP) +#define LL_DBGMCU_APB2_GRP1_TIM16_STOP DBGMCU_CR_DBG_TIM16_STOP /*!< TIM16 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM16_STOP */ +#if defined(DBGMCU_CR_DBG_TIM17_STOP) +#define LL_DBGMCU_APB2_GRP1_TIM17_STOP DBGMCU_CR_DBG_TIM17_STOP /*!< TIM17 counter stopped when core is halted */ +#endif /* DBGMCU_CR_DBG_TIM17_STOP */ +/** + * @} + */ + +/** @defgroup SYSTEM_LL_EC_LATENCY FLASH LATENCY + * @{ + */ +#if defined(FLASH_ACR_LATENCY) +#define LL_FLASH_LATENCY_0 0x00000000U /*!< FLASH Zero Latency cycle */ +#define LL_FLASH_LATENCY_1 FLASH_ACR_LATENCY_0 /*!< FLASH One Latency cycle */ +#define LL_FLASH_LATENCY_2 FLASH_ACR_LATENCY_1 /*!< FLASH Two wait states */ +#else +#endif /* FLASH_ACR_LATENCY */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup SYSTEM_LL_Exported_Functions SYSTEM Exported Functions + * @{ + */ + + + +/** @defgroup SYSTEM_LL_EF_DBGMCU DBGMCU + * @{ + */ + +/** + * @brief Return the device identifier + * @note For Low Density devices, the device ID is 0x412 + * @note For Medium Density devices, the device ID is 0x410 + * @note For High Density devices, the device ID is 0x414 + * @note For XL Density devices, the device ID is 0x430 + * @note For Connectivity Line devices, the device ID is 0x418 + * @rmtoll DBGMCU_IDCODE DEV_ID LL_DBGMCU_GetDeviceID + * @retval Values between Min_Data=0x00 and Max_Data=0xFFF + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetDeviceID(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_DEV_ID)); +} + +/** + * @brief Return the device revision identifier + * @note This field indicates the revision of the device. + For example, it is read as revA -> 0x1000,for Low Density devices + For example, it is read as revA -> 0x0000, revB -> 0x2000, revZ -> 0x2001, rev1,2,3,X or Y -> 0x2003,for Medium Density devices + For example, it is read as revA or 1 -> 0x1000, revZ -> 0x1001,rev1,2,3,X or Y -> 0x1003,for Medium Density devices + For example, it is read as revA or 1 -> 0x1003,for XL Density devices + For example, it is read as revA -> 0x1000, revZ -> 0x1001 for Connectivity line devices + * @rmtoll DBGMCU_IDCODE REV_ID LL_DBGMCU_GetRevisionID + * @retval Values between Min_Data=0x00 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetRevisionID(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->IDCODE, DBGMCU_IDCODE_REV_ID) >> DBGMCU_IDCODE_REV_ID_Pos); +} + +/** + * @brief Enable the Debug Module during SLEEP mode + * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_EnableDBGSleepMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGSleepMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Disable the Debug Module during SLEEP mode + * @rmtoll DBGMCU_CR DBG_SLEEP LL_DBGMCU_DisableDBGSleepMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGSleepMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_SLEEP); +} + +/** + * @brief Enable the Debug Module during STOP mode + * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_EnableDBGStopMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGStopMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Disable the Debug Module during STOP mode + * @rmtoll DBGMCU_CR DBG_STOP LL_DBGMCU_DisableDBGStopMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGStopMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STOP); +} + +/** + * @brief Enable the Debug Module during STANDBY mode + * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_EnableDBGStandbyMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_EnableDBGStandbyMode(void) +{ + SET_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Disable the Debug Module during STANDBY mode + * @rmtoll DBGMCU_CR DBG_STANDBY LL_DBGMCU_DisableDBGStandbyMode + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_DisableDBGStandbyMode(void) +{ + CLEAR_BIT(DBGMCU->CR, DBGMCU_CR_DBG_STANDBY); +} + +/** + * @brief Set Trace pin assignment control + * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_SetTracePinAssignment\n + * DBGMCU_CR TRACE_MODE LL_DBGMCU_SetTracePinAssignment + * @param PinAssignment This parameter can be one of the following values: + * @arg @ref LL_DBGMCU_TRACE_NONE + * @arg @ref LL_DBGMCU_TRACE_ASYNCH + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4 + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_SetTracePinAssignment(uint32_t PinAssignment) +{ + MODIFY_REG(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE, PinAssignment); +} + +/** + * @brief Get Trace pin assignment control + * @rmtoll DBGMCU_CR TRACE_IOEN LL_DBGMCU_GetTracePinAssignment\n + * DBGMCU_CR TRACE_MODE LL_DBGMCU_GetTracePinAssignment + * @retval Returned value can be one of the following values: + * @arg @ref LL_DBGMCU_TRACE_NONE + * @arg @ref LL_DBGMCU_TRACE_ASYNCH + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE1 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE2 + * @arg @ref LL_DBGMCU_TRACE_SYNCH_SIZE4 + */ +__STATIC_INLINE uint32_t LL_DBGMCU_GetTracePinAssignment(void) +{ + return (uint32_t)(READ_BIT(DBGMCU->CR, DBGMCU_CR_TRACE_IOEN | DBGMCU_CR_TRACE_MODE)); +} + +/** + * @brief Freeze APB1 peripherals (group1 peripherals) + * @rmtoll DBGMCU_CR_APB1 DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM4_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM5_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM12_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM13_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM14_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_I2C1_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_I2C2_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_CAN1_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph\n + * DBGMCU_CR_APB1 DBG_CAN2_STOP LL_DBGMCU_APB1_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM12_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM13_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM14_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN1_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN2_STOP (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP1_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBGMCU->CR, Periphs); +} + +/** + * @brief Unfreeze APB1 peripherals (group1 peripherals) + * @rmtoll DBGMCU_CR_APB1 DBG_TIM2_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM3_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM4_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM5_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM6_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM7_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM12_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM13_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_TIM14_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_RTC_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_WWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_IWDG_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_I2C1_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_I2C2_SMBUS_TIMEOUT LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_CAN1_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph\n + * DBGMCU_CR_APB1 DBG_CAN2_STOP LL_DBGMCU_APB1_GRP1_UnFreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM2_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM3_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM4_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM5_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM6_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM7_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM12_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM13_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_TIM14_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_RTC_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_WWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_IWDG_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C1_STOP + * @arg @ref LL_DBGMCU_APB1_GRP1_I2C2_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN1_STOP (*) + * @arg @ref LL_DBGMCU_APB1_GRP1_CAN2_STOP (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB1_GRP1_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBGMCU->CR, Periphs); +} + +/** + * @brief Freeze APB2 peripherals + * @rmtoll DBGMCU_CR_APB2 DBG_TIM1_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM8_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM9_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM10_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM11_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM15_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM16_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM17_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM9_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM10_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM11_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB2_GRP1_FreezePeriph(uint32_t Periphs) +{ + SET_BIT(DBGMCU->CR, Periphs); +} + +/** + * @brief Unfreeze APB2 peripherals + * @rmtoll DBGMCU_CR_APB2 DBG_TIM1_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM8_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM9_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM10_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM11_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM15_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM16_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph\n + * DBGMCU_CR_APB2 DBG_TIM17_STOP LL_DBGMCU_APB2_GRP1_FreezePeriph + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM1_STOP + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM8_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM9_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM10_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM11_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM15_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM16_STOP (*) + * @arg @ref LL_DBGMCU_APB2_GRP1_TIM17_STOP (*) + * + * (*) value not defined in all devices. + * @retval None + */ +__STATIC_INLINE void LL_DBGMCU_APB2_GRP1_UnFreezePeriph(uint32_t Periphs) +{ + CLEAR_BIT(DBGMCU->CR, Periphs); +} +/** + * @} + */ + +#if defined(FLASH_ACR_LATENCY) +/** @defgroup SYSTEM_LL_EF_FLASH FLASH + * @{ + */ + +/** + * @brief Set FLASH Latency + * @rmtoll FLASH_ACR LATENCY LL_FLASH_SetLatency + * @param Latency This parameter can be one of the following values: + * @arg @ref LL_FLASH_LATENCY_0 + * @arg @ref LL_FLASH_LATENCY_1 + * @arg @ref LL_FLASH_LATENCY_2 + * @retval None + */ +__STATIC_INLINE void LL_FLASH_SetLatency(uint32_t Latency) +{ + MODIFY_REG(FLASH->ACR, FLASH_ACR_LATENCY, Latency); +} + +/** + * @brief Get FLASH Latency + * @rmtoll FLASH_ACR LATENCY LL_FLASH_GetLatency + * @retval Returned value can be one of the following values: + * @arg @ref LL_FLASH_LATENCY_0 + * @arg @ref LL_FLASH_LATENCY_1 + * @arg @ref LL_FLASH_LATENCY_2 + */ +__STATIC_INLINE uint32_t LL_FLASH_GetLatency(void) +{ + return (uint32_t)(READ_BIT(FLASH->ACR, FLASH_ACR_LATENCY)); +} + +/** + * @brief Enable Prefetch + * @rmtoll FLASH_ACR PRFTBE LL_FLASH_EnablePrefetch + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnablePrefetch(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_PRFTBE); +} + +/** + * @brief Disable Prefetch + * @rmtoll FLASH_ACR PRFTBE LL_FLASH_DisablePrefetch + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisablePrefetch(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_PRFTBE); +} + +/** + * @brief Check if Prefetch buffer is enabled + * @rmtoll FLASH_ACR PRFTBS LL_FLASH_IsPrefetchEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_FLASH_IsPrefetchEnabled(void) +{ + return (READ_BIT(FLASH->ACR, FLASH_ACR_PRFTBS) == (FLASH_ACR_PRFTBS)); +} + +#endif /* FLASH_ACR_LATENCY */ +/** + * @brief Enable Flash Half Cycle Access + * @rmtoll FLASH_ACR HLFCYA LL_FLASH_EnableHalfCycleAccess + * @retval None + */ +__STATIC_INLINE void LL_FLASH_EnableHalfCycleAccess(void) +{ + SET_BIT(FLASH->ACR, FLASH_ACR_HLFCYA); +} + +/** + * @brief Disable Flash Half Cycle Access + * @rmtoll FLASH_ACR HLFCYA LL_FLASH_DisableHalfCycleAccess + * @retval None + */ +__STATIC_INLINE void LL_FLASH_DisableHalfCycleAccess(void) +{ + CLEAR_BIT(FLASH->ACR, FLASH_ACR_HLFCYA); +} + +/** + * @brief Check if Flash Half Cycle Access is enabled or not + * @rmtoll FLASH_ACR HLFCYA LL_FLASH_IsHalfCycleAccessEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_FLASH_IsHalfCycleAccessEnabled(void) +{ + return (READ_BIT(FLASH->ACR, FLASH_ACR_HLFCYA) == (FLASH_ACR_HLFCYA)); +} + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (FLASH) || defined (DBGMCU) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_SYSTEM_H */ + + diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h new file mode 100644 index 0000000..f1bceb7 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h @@ -0,0 +1,3890 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_tim.h + * @author MCD Application Team + * @brief Header file of TIM LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_TIM_H +#define __STM32F1xx_LL_TIM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM6) || defined (TIM7) || defined (TIM8) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM12) || defined (TIM13) || defined (TIM14) || defined (TIM15) || defined (TIM16) || defined (TIM17) + +/** @defgroup TIM_LL TIM + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Variables TIM Private Variables + * @{ + */ +static const uint8_t OFFSET_TAB_CCMRx[] = +{ + 0x00U, /* 0: TIMx_CH1 */ + 0x00U, /* 1: TIMx_CH1N */ + 0x00U, /* 2: TIMx_CH2 */ + 0x00U, /* 3: TIMx_CH2N */ + 0x04U, /* 4: TIMx_CH3 */ + 0x04U, /* 5: TIMx_CH3N */ + 0x04U /* 6: TIMx_CH4 */ +}; + +static const uint8_t SHIFT_TAB_OCxx[] = +{ + 0U, /* 0: OC1M, OC1FE, OC1PE */ + 0U, /* 1: - NA */ + 8U, /* 2: OC2M, OC2FE, OC2PE */ + 0U, /* 3: - NA */ + 0U, /* 4: OC3M, OC3FE, OC3PE */ + 0U, /* 5: - NA */ + 8U /* 6: OC4M, OC4FE, OC4PE */ +}; + +static const uint8_t SHIFT_TAB_ICxx[] = +{ + 0U, /* 0: CC1S, IC1PSC, IC1F */ + 0U, /* 1: - NA */ + 8U, /* 2: CC2S, IC2PSC, IC2F */ + 0U, /* 3: - NA */ + 0U, /* 4: CC3S, IC3PSC, IC3F */ + 0U, /* 5: - NA */ + 8U /* 6: CC4S, IC4PSC, IC4F */ +}; + +static const uint8_t SHIFT_TAB_CCxP[] = +{ + 0U, /* 0: CC1P */ + 2U, /* 1: CC1NP */ + 4U, /* 2: CC2P */ + 6U, /* 3: CC2NP */ + 8U, /* 4: CC3P */ + 10U, /* 5: CC3NP */ + 12U /* 6: CC4P */ +}; + +static const uint8_t SHIFT_TAB_OISx[] = +{ + 0U, /* 0: OIS1 */ + 1U, /* 1: OIS1N */ + 2U, /* 2: OIS2 */ + 3U, /* 3: OIS2N */ + 4U, /* 4: OIS3 */ + 5U, /* 5: OIS3N */ + 6U /* 6: OIS4 */ +}; +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Constants TIM Private Constants + * @{ + */ + + + +/* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */ +#define DT_DELAY_1 ((uint8_t)0x7F) +#define DT_DELAY_2 ((uint8_t)0x3F) +#define DT_DELAY_3 ((uint8_t)0x1F) +#define DT_DELAY_4 ((uint8_t)0x1F) + +/* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */ +#define DT_RANGE_1 ((uint8_t)0x00) +#define DT_RANGE_2 ((uint8_t)0x80) +#define DT_RANGE_3 ((uint8_t)0xC0) +#define DT_RANGE_4 ((uint8_t)0xE0) + + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Macros TIM Private Macros + * @{ + */ +/** @brief Convert channel id into channel index. + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval none + */ +#define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \ + (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U : 6U) + +/** @brief Calculate the deadtime sampling period(in ps). + * @param __TIMCLK__ timer input clock frequency (in Hz). + * @param __CKD__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @retval none + */ +#define TIM_CALC_DTS(__TIMCLK__, __CKD__) \ + (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__)) : \ + ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \ + ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U))) +/** + * @} + */ + + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_ES_INIT TIM Exported Init structure + * @{ + */ + +/** + * @brief TIM Time Base configuration structure definition. + */ +typedef struct +{ + uint16_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetPrescaler().*/ + + uint32_t CounterMode; /*!< Specifies the counter mode. + This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetCounterMode().*/ + + uint32_t Autoreload; /*!< Specifies the auto reload value to be loaded into the active + Auto-Reload Register at the next update event. + This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + Some timer instances may support 32 bits counters. In that case this parameter must + be a number between 0x0000 and 0xFFFFFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetAutoReload().*/ + + uint32_t ClockDivision; /*!< Specifies the clock division. + This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetClockDivision().*/ + + uint32_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter + reaches zero, an update event is generated and counting restarts + from the RCR value (N). + This means in PWM mode that (N+1) corresponds to: + - the number of PWM periods in edge-aligned mode + - the number of half PWM period in center-aligned mode + GP timers: this parameter must be a number between Min_Data = 0x00 and + Max_Data = 0xFF. + Advanced timers: this parameter must be a number between Min_Data = 0x0000 and + Max_Data = 0xFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetRepetitionCounter().*/ +} LL_TIM_InitTypeDef; + +/** + * @brief TIM Output Compare configuration structure definition. + */ +typedef struct +{ + uint32_t OCMode; /*!< Specifies the output mode. + This parameter can be a value of @ref TIM_LL_EC_OCMODE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetMode().*/ + + uint32_t OCState; /*!< Specifies the TIM Output Compare state. + This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + + uint32_t OCNState; /*!< Specifies the TIM complementary Output Compare state. + This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + + uint32_t CompareValue; /*!< Specifies the Compare value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + + This feature can be modified afterwards using unitary function + LL_TIM_OC_SetCompareCHx (x=1..6).*/ + + uint32_t OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetPolarity().*/ + + uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetPolarity().*/ + + + uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetIdleState().*/ + + uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetIdleState().*/ +} LL_TIM_OC_InitTypeDef; + +/** + * @brief TIM Input Capture configuration structure definition. + */ + +typedef struct +{ + + uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t ICActiveInput; /*!< Specifies the input. + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t ICFilter; /*!< Specifies the input capture filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ +} LL_TIM_IC_InitTypeDef; + + +/** + * @brief TIM Encoder interface configuration structure definition. + */ +typedef struct +{ + uint32_t EncoderMode; /*!< Specifies the encoder resolution (x2 or x4). + This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetEncoderMode().*/ + + uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC1ActiveInput; /*!< Specifies the TI1 input source + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ + + uint32_t IC2Polarity; /*!< Specifies the active edge of TI2 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC2ActiveInput; /*!< Specifies the TI2 input source + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t IC2Prescaler; /*!< Specifies the TI2 input prescaler value. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC2Filter; /*!< Specifies the TI2 input filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ + +} LL_TIM_ENCODER_InitTypeDef; + +/** + * @brief TIM Hall sensor interface configuration structure definition. + */ +typedef struct +{ + + uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + Prescaler must be set to get a maximum counter period longer than the + time interval between 2 consecutive changes on the Hall inputs. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + This parameter can be a value of + @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_IC_SetFilter().*/ + + uint32_t CommutationDelay; /*!< Specifies the compare value to be loaded into the Capture Compare Register. + A positive pulse (TRGO event) is generated with a programmable delay every time + a change occurs on the Hall inputs. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetCompareCH2().*/ +} LL_TIM_HALLSENSOR_InitTypeDef; + +/** + * @brief BDTR (Break and Dead Time) structure definition + */ +typedef struct +{ + uint32_t OSSRState; /*!< Specifies the Off-State selection used in Run mode. + This parameter can be a value of @ref TIM_LL_EC_OSSR + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetOffStates() + + @note This bit-field cannot be modified as long as LOCK level 2 has been + programmed. */ + + uint32_t OSSIState; /*!< Specifies the Off-State used in Idle state. + This parameter can be a value of @ref TIM_LL_EC_OSSI + + This feature can be modified afterwards using unitary function + @ref LL_TIM_SetOffStates() + + @note This bit-field cannot be modified as long as LOCK level 2 has been + programmed. */ + + uint32_t LockLevel; /*!< Specifies the LOCK level parameters. + This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL + + @note The LOCK bits can be written only once after the reset. Once the TIMx_BDTR + register has been written, their content is frozen until the next reset.*/ + + uint8_t DeadTime; /*!< Specifies the delay time between the switching-off and the + switching-on of the outputs. + This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF. + + This feature can be modified afterwards using unitary function + @ref LL_TIM_OC_SetDeadTime() + + @note This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been + programmed. */ + + uint16_t BreakState; /*!< Specifies whether the TIM Break input is enabled or not. + This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. + This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARITY + + This feature can be modified afterwards using unitary function + @ref LL_TIM_ConfigBRK() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ + + uint32_t AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not. + This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTPUT_ENABLE + + This feature can be modified afterwards using unitary functions + @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAutomaticOutput() + + @note This bit-field can not be modified as long as LOCK level 1 has been + programmed. */ +} LL_TIM_BDTR_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup TIM_LL_Exported_Constants TIM Exported Constants + * @{ + */ + +/** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_TIM_ReadReg function. + * @{ + */ +#define LL_TIM_SR_UIF TIM_SR_UIF /*!< Update interrupt flag */ +#define LL_TIM_SR_CC1IF TIM_SR_CC1IF /*!< Capture/compare 1 interrupt flag */ +#define LL_TIM_SR_CC2IF TIM_SR_CC2IF /*!< Capture/compare 2 interrupt flag */ +#define LL_TIM_SR_CC3IF TIM_SR_CC3IF /*!< Capture/compare 3 interrupt flag */ +#define LL_TIM_SR_CC4IF TIM_SR_CC4IF /*!< Capture/compare 4 interrupt flag */ +#define LL_TIM_SR_COMIF TIM_SR_COMIF /*!< COM interrupt flag */ +#define LL_TIM_SR_TIF TIM_SR_TIF /*!< Trigger interrupt flag */ +#define LL_TIM_SR_BIF TIM_SR_BIF /*!< Break interrupt flag */ +#define LL_TIM_SR_CC1OF TIM_SR_CC1OF /*!< Capture/Compare 1 overcapture flag */ +#define LL_TIM_SR_CC2OF TIM_SR_CC2OF /*!< Capture/Compare 2 overcapture flag */ +#define LL_TIM_SR_CC3OF TIM_SR_CC3OF /*!< Capture/Compare 3 overcapture flag */ +#define LL_TIM_SR_CC4OF TIM_SR_CC4OF /*!< Capture/Compare 4 overcapture flag */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_EC_BREAK_ENABLE Break Enable + * @{ + */ +#define LL_TIM_BREAK_DISABLE 0x00000000U /*!< Break function disabled */ +#define LL_TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break function enabled */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_AUTOMATICOUTPUT_ENABLE Automatic output enable + * @{ + */ +#define LL_TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by software */ +#define LL_TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by software or automatically at the next update event */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup TIM_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_TIM_ReadReg and LL_TIM_WriteReg functions. + * @{ + */ +#define LL_TIM_DIER_UIE TIM_DIER_UIE /*!< Update interrupt enable */ +#define LL_TIM_DIER_CC1IE TIM_DIER_CC1IE /*!< Capture/compare 1 interrupt enable */ +#define LL_TIM_DIER_CC2IE TIM_DIER_CC2IE /*!< Capture/compare 2 interrupt enable */ +#define LL_TIM_DIER_CC3IE TIM_DIER_CC3IE /*!< Capture/compare 3 interrupt enable */ +#define LL_TIM_DIER_CC4IE TIM_DIER_CC4IE /*!< Capture/compare 4 interrupt enable */ +#define LL_TIM_DIER_COMIE TIM_DIER_COMIE /*!< COM interrupt enable */ +#define LL_TIM_DIER_TIE TIM_DIER_TIE /*!< Trigger interrupt enable */ +#define LL_TIM_DIER_BIE TIM_DIER_BIE /*!< Break interrupt enable */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_UPDATESOURCE Update Source + * @{ + */ +#define LL_TIM_UPDATESOURCE_REGULAR 0x00000000U /*!< Counter overflow/underflow, Setting the UG bit or Update generation through the slave mode controller generates an update request */ +#define LL_TIM_UPDATESOURCE_COUNTER TIM_CR1_URS /*!< Only counter overflow/underflow generates an update request */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode + * @{ + */ +#define LL_TIM_ONEPULSEMODE_SINGLE TIM_CR1_OPM /*!< Counter stops counting at the next update event */ +#define LL_TIM_ONEPULSEMODE_REPETITIVE 0x00000000U /*!< Counter is not stopped at update event */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode + * @{ + */ +#define LL_TIM_COUNTERMODE_UP 0x00000000U /*!TIMx_CCRy else active.*/ +#define LL_TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!TIMx_CCRy else inactive*/ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_OCPOLARITY Output Configuration Polarity + * @{ + */ +#define LL_TIM_OCPOLARITY_HIGH 0x00000000U /*!< OCxactive high*/ +#define LL_TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< OCxactive low*/ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_OCIDLESTATE Output Configuration Idle State + * @{ + */ +#define LL_TIM_OCIDLESTATE_LOW 0x00000000U /*!__REG__, (__VALUE__)) + +/** + * @brief Read a value in TIM register. + * @param __INSTANCE__ TIM Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__) +/** + * @} + */ + +/** + * @brief HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested dead time duration. + * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __CKD__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @param __DT__ deadtime duration (in ns) + * @retval DTG[0:7] + */ +#define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__) \ + ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__))) & DT_DELAY_1) : \ + (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \ + (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\ + (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \ + (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\ + (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? \ + (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), \ + (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\ + 0U) + +/** + * @brief HELPER macro calculating the prescaler value to achieve the required counter clock frequency. + * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __CNTCLK__ counter clock frequency (in Hz) + * @retval Prescaler value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__) \ + (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)((((__TIMCLK__) + (__CNTCLK__)/2U)/(__CNTCLK__)) - 1U) : 0U) + +/** + * @brief HELPER macro calculating the auto-reload value to achieve the required output signal frequency. + * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __FREQ__ output signal frequency (in Hz) + * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \ + ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U) + +/** + * @brief HELPER macro calculating the compare value required to achieve the required timer output compare + * active/inactive delay. + * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __DELAY__ timer output compare active/inactive delay (in us) + * @retval Compare value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__) \ + ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \ + / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U)))) + +/** + * @brief HELPER macro calculating the auto-reload value to achieve the required pulse duration + * (when the timer operates in one pulse mode). + * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __DELAY__ timer output compare active/inactive delay (in us) + * @param __PULSE__ pulse duration (in us) + * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__) \ + ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \ + + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__)))) + +/** + * @brief HELPER macro retrieving the ratio of the input capture prescaler + * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ()); + * @param __ICPSC__ This parameter can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + * @retval Input capture prescaler ratio (1, 2, 4 or 8) + */ +#define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__) \ + ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos))) + + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup TIM_LL_Exported_Functions TIM Exported Functions + * @{ + */ + +/** @defgroup TIM_LL_EF_Time_Base Time Base configuration + * @{ + */ +/** + * @brief Enable timer counter. + * @rmtoll CR1 CEN LL_TIM_EnableCounter + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_CEN); +} + +/** + * @brief Disable timer counter. + * @rmtoll CR1 CEN LL_TIM_DisableCounter + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN); +} + +/** + * @brief Indicates whether the timer counter is enabled. + * @rmtoll CR1 CEN LL_TIM_IsEnabledCounter + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable update event generation. + * @rmtoll CR1 UDIS LL_TIM_EnableUpdateEvent + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS); +} + +/** + * @brief Disable update event generation. + * @rmtoll CR1 UDIS LL_TIM_DisableUpdateEvent + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_UDIS); +} + +/** + * @brief Indicates whether update event generation is enabled. + * @rmtoll CR1 UDIS LL_TIM_IsEnabledUpdateEvent + * @param TIMx Timer instance + * @retval Inverted state of bit (0 or 1). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL); +} + +/** + * @brief Set update event source + * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events + * generate an update interrupt or DMA request if enabled: + * - Counter overflow/underflow + * - Setting the UG bit + * - Update generation through the slave mode controller + * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter + * overflow/underflow generates an update interrupt or DMA request if enabled. + * @rmtoll CR1 URS LL_TIM_SetUpdateSource + * @param TIMx Timer instance + * @param UpdateSource This parameter can be one of the following values: + * @arg @ref LL_TIM_UPDATESOURCE_REGULAR + * @arg @ref LL_TIM_UPDATESOURCE_COUNTER + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource); +} + +/** + * @brief Get actual event update source + * @rmtoll CR1 URS LL_TIM_GetUpdateSource + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_UPDATESOURCE_REGULAR + * @arg @ref LL_TIM_UPDATESOURCE_COUNTER + */ +__STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS)); +} + +/** + * @brief Set one pulse mode (one shot v.s. repetitive). + * @rmtoll CR1 OPM LL_TIM_SetOnePulseMode + * @param TIMx Timer instance + * @param OnePulseMode This parameter can be one of the following values: + * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE + * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode); +} + +/** + * @brief Get actual one pulse mode. + * @rmtoll CR1 OPM LL_TIM_GetOnePulseMode + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE + * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE + */ +__STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM)); +} + +/** + * @brief Set the timer counter counting mode. + * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to + * check whether or not the counter mode selection feature is supported + * by a timer instance. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * @rmtoll CR1 DIR LL_TIM_SetCounterMode\n + * CR1 CMS LL_TIM_SetCounterMode + * @param TIMx Timer instance + * @param CounterMode This parameter can be one of the following values: + * @arg @ref LL_TIM_COUNTERMODE_UP + * @arg @ref LL_TIM_COUNTERMODE_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP + * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode) +{ + MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode); +} + +/** + * @brief Get actual counter mode. + * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to + * check whether or not the counter mode selection feature is supported + * by a timer instance. + * @rmtoll CR1 DIR LL_TIM_GetCounterMode\n + * CR1 CMS LL_TIM_GetCounterMode + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_COUNTERMODE_UP + * @arg @ref LL_TIM_COUNTERMODE_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP + * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN + */ +__STATIC_INLINE uint32_t LL_TIM_GetCounterMode(const TIM_TypeDef *TIMx) +{ + uint32_t counter_mode; + + counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CMS)); + + if (counter_mode == 0U) + { + counter_mode = (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); + } + + return counter_mode; +} + +/** + * @brief Enable auto-reload (ARR) preload. + * @rmtoll CR1 ARPE LL_TIM_EnableARRPreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_ARPE); +} + +/** + * @brief Disable auto-reload (ARR) preload. + * @rmtoll CR1 ARPE LL_TIM_DisableARRPreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE); +} + +/** + * @brief Indicates whether auto-reload (ARR) preload is enabled. + * @rmtoll CR1 ARPE LL_TIM_IsEnabledARRPreload + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL); +} + +/** + * @brief Set the division ratio between the timer clock and the sampling clock used by the dead-time generators + * (when supported) and the digital filters. + * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check + * whether or not the clock division feature is supported by the timer + * instance. + * @rmtoll CR1 CKD LL_TIM_SetClockDivision + * @param TIMx Timer instance + * @param ClockDivision This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision); +} + +/** + * @brief Get the actual division ratio between the timer clock and the sampling clock used by the dead-time + * generators (when supported) and the digital filters. + * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check + * whether or not the clock division feature is supported by the timer + * instance. + * @rmtoll CR1 CKD LL_TIM_GetClockDivision + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + */ +__STATIC_INLINE uint32_t LL_TIM_GetClockDivision(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD)); +} + +/** + * @brief Set the counter value. + * @rmtoll CNT CNT LL_TIM_SetCounter + * @param TIMx Timer instance + * @param Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF) + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter) +{ + WRITE_REG(TIMx->CNT, Counter); +} + +/** + * @brief Get the counter value. + * @rmtoll CNT CNT LL_TIM_GetCounter + * @param TIMx Timer instance + * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF) + */ +__STATIC_INLINE uint32_t LL_TIM_GetCounter(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CNT)); +} + +/** + * @brief Get the current direction of the counter + * @rmtoll CR1 DIR LL_TIM_GetDirection + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_COUNTERDIRECTION_UP + * @arg @ref LL_TIM_COUNTERDIRECTION_DOWN + */ +__STATIC_INLINE uint32_t LL_TIM_GetDirection(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); +} + +/** + * @brief Set the prescaler value. + * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1). + * @note The prescaler can be changed on the fly as this control register is buffered. The new + * prescaler ratio is taken into account at the next update event. + * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter + * @rmtoll PSC PSC LL_TIM_SetPrescaler + * @param TIMx Timer instance + * @param Prescaler between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler) +{ + WRITE_REG(TIMx->PSC, Prescaler); +} + +/** + * @brief Get the prescaler value. + * @rmtoll PSC PSC LL_TIM_GetPrescaler + * @param TIMx Timer instance + * @retval Prescaler value between Min_Data=0 and Max_Data=65535 + */ +__STATIC_INLINE uint32_t LL_TIM_GetPrescaler(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->PSC)); +} + +/** + * @brief Set the auto-reload value. + * @note The counter is blocked while the auto-reload value is null. + * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter + * @rmtoll ARR ARR LL_TIM_SetAutoReload + * @param TIMx Timer instance + * @param AutoReload between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload) +{ + WRITE_REG(TIMx->ARR, AutoReload); +} + +/** + * @brief Get the auto-reload value. + * @rmtoll ARR ARR LL_TIM_GetAutoReload + * @param TIMx Timer instance + * @retval Auto-reload value + */ +__STATIC_INLINE uint32_t LL_TIM_GetAutoReload(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->ARR)); +} + +/** + * @brief Set the repetition counter value. + * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a repetition counter. + * @rmtoll RCR REP LL_TIM_SetRepetitionCounter + * @param TIMx Timer instance + * @param RepetitionCounter between Min_Data=0 and Max_Data=255 or 65535 for advanced timer. + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter) +{ + WRITE_REG(TIMx->RCR, RepetitionCounter); +} + +/** + * @brief Get the repetition counter value. + * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a repetition counter. + * @rmtoll RCR REP LL_TIM_GetRepetitionCounter + * @param TIMx Timer instance + * @retval Repetition counter value + */ +__STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->RCR)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration + * @{ + */ +/** + * @brief Enable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. + * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written, + * they are updated only when a commutation event (COM) occurs. + * @note Only on channels that have a complementary output. + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCPC LL_TIM_CC_EnablePreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR2, TIM_CR2_CCPC); +} + +/** + * @brief Disable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCPC LL_TIM_CC_DisablePreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC); +} + +/** + * @brief Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM). + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCUS LL_TIM_CC_SetUpdate + * @param TIMx Timer instance + * @param CCUpdateSource This parameter can be one of the following values: + * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY + * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource); +} + +/** + * @brief Set the trigger of the capture/compare DMA request. + * @rmtoll CR2 CCDS LL_TIM_CC_SetDMAReqTrigger + * @param TIMx Timer instance + * @param DMAReqTrigger This parameter can be one of the following values: + * @arg @ref LL_TIM_CCDMAREQUEST_CC + * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger); +} + +/** + * @brief Get actual trigger of the capture/compare DMA request. + * @rmtoll CR2 CCDS LL_TIM_CC_GetDMAReqTrigger + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_CCDMAREQUEST_CC + * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE + */ +__STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS)); +} + +/** + * @brief Set the lock level to freeze the + * configuration of several capture/compare parameters. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * the lock mechanism is supported by a timer instance. + * @rmtoll BDTR LOCK LL_TIM_CC_SetLockLevel + * @param TIMx Timer instance + * @param LockLevel This parameter can be one of the following values: + * @arg @ref LL_TIM_LOCKLEVEL_OFF + * @arg @ref LL_TIM_LOCKLEVEL_1 + * @arg @ref LL_TIM_LOCKLEVEL_2 + * @arg @ref LL_TIM_LOCKLEVEL_3 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel); +} + +/** + * @brief Enable capture/compare channels. + * @rmtoll CCER CC1E LL_TIM_CC_EnableChannel\n + * CCER CC1NE LL_TIM_CC_EnableChannel\n + * CCER CC2E LL_TIM_CC_EnableChannel\n + * CCER CC2NE LL_TIM_CC_EnableChannel\n + * CCER CC3E LL_TIM_CC_EnableChannel\n + * CCER CC3NE LL_TIM_CC_EnableChannel\n + * CCER CC4E LL_TIM_CC_EnableChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +{ + SET_BIT(TIMx->CCER, Channels); +} + +/** + * @brief Disable capture/compare channels. + * @rmtoll CCER CC1E LL_TIM_CC_DisableChannel\n + * CCER CC1NE LL_TIM_CC_DisableChannel\n + * CCER CC2E LL_TIM_CC_DisableChannel\n + * CCER CC2NE LL_TIM_CC_DisableChannel\n + * CCER CC3E LL_TIM_CC_DisableChannel\n + * CCER CC3NE LL_TIM_CC_DisableChannel\n + * CCER CC4E LL_TIM_CC_DisableChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +{ + CLEAR_BIT(TIMx->CCER, Channels); +} + +/** + * @brief Indicate whether channel(s) is(are) enabled. + * @rmtoll CCER CC1E LL_TIM_CC_IsEnabledChannel\n + * CCER CC1NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC2E LL_TIM_CC_IsEnabledChannel\n + * CCER CC2NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC3E LL_TIM_CC_IsEnabledChannel\n + * CCER CC3NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC4E LL_TIM_CC_IsEnabledChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(const TIM_TypeDef *TIMx, uint32_t Channels) +{ + return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Output_Channel Output channel configuration + * @{ + */ +/** + * @brief Configure an output channel. + * @rmtoll CCMR1 CC1S LL_TIM_OC_ConfigOutput\n + * CCMR1 CC2S LL_TIM_OC_ConfigOutput\n + * CCMR2 CC3S LL_TIM_OC_ConfigOutput\n + * CCMR2 CC4S LL_TIM_OC_ConfigOutput\n + * CCER CC1P LL_TIM_OC_ConfigOutput\n + * CCER CC2P LL_TIM_OC_ConfigOutput\n + * CCER CC3P LL_TIM_OC_ConfigOutput\n + * CCER CC4P LL_TIM_OC_ConfigOutput\n + * CR2 OIS1 LL_TIM_OC_ConfigOutput\n + * CR2 OIS2 LL_TIM_OC_ConfigOutput\n + * CR2 OIS3 LL_TIM_OC_ConfigOutput\n + * CR2 OIS4 LL_TIM_OC_ConfigOutput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW + * @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel])); + MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), + (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]); + MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), + (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Define the behavior of the output reference signal OCxREF from which + * OCx and OCxN (when relevant) are derived. + * @rmtoll CCMR1 OC1M LL_TIM_OC_SetMode\n + * CCMR1 OC2M LL_TIM_OC_SetMode\n + * CCMR2 OC3M LL_TIM_OC_SetMode\n + * CCMR2 OC4M LL_TIM_OC_SetMode + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_TIM_OCMODE_FROZEN + * @arg @ref LL_TIM_OCMODE_ACTIVE + * @arg @ref LL_TIM_OCMODE_INACTIVE + * @arg @ref LL_TIM_OCMODE_TOGGLE + * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE + * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE + * @arg @ref LL_TIM_OCMODE_PWM1 + * @arg @ref LL_TIM_OCMODE_PWM2 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]); +} + +/** + * @brief Get the output compare mode of an output channel. + * @rmtoll CCMR1 OC1M LL_TIM_OC_GetMode\n + * CCMR1 OC2M LL_TIM_OC_GetMode\n + * CCMR2 OC3M LL_TIM_OC_GetMode\n + * CCMR2 OC4M LL_TIM_OC_GetMode + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCMODE_FROZEN + * @arg @ref LL_TIM_OCMODE_ACTIVE + * @arg @ref LL_TIM_OCMODE_INACTIVE + * @arg @ref LL_TIM_OCMODE_TOGGLE + * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE + * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE + * @arg @ref LL_TIM_OCMODE_PWM1 + * @arg @ref LL_TIM_OCMODE_PWM2 + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]); +} + +/** + * @brief Set the polarity of an output channel. + * @rmtoll CCER CC1P LL_TIM_OC_SetPolarity\n + * CCER CC1NP LL_TIM_OC_SetPolarity\n + * CCER CC2P LL_TIM_OC_SetPolarity\n + * CCER CC2NP LL_TIM_OC_SetPolarity\n + * CCER CC3P LL_TIM_OC_SetPolarity\n + * CCER CC3NP LL_TIM_OC_SetPolarity\n + * CCER CC4P LL_TIM_OC_SetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH + * @arg @ref LL_TIM_OCPOLARITY_LOW + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), Polarity << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Get the polarity of an output channel. + * @rmtoll CCER CC1P LL_TIM_OC_GetPolarity\n + * CCER CC1NP LL_TIM_OC_GetPolarity\n + * CCER CC2P LL_TIM_OC_GetPolarity\n + * CCER CC2NP LL_TIM_OC_GetPolarity\n + * CCER CC3P LL_TIM_OC_GetPolarity\n + * CCER CC3NP LL_TIM_OC_GetPolarity\n + * CCER CC4P LL_TIM_OC_GetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH + * @arg @ref LL_TIM_OCPOLARITY_LOW + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Set the IDLE state of an output channel + * @note This function is significant only for the timer instances + * supporting the break feature. Macro IS_TIM_BREAK_INSTANCE(TIMx) + * can be used to check whether or not a timer instance provides + * a break input. + * @rmtoll CR2 OIS1 LL_TIM_OC_SetIdleState\n + * CR2 OIS1N LL_TIM_OC_SetIdleState\n + * CR2 OIS2 LL_TIM_OC_SetIdleState\n + * CR2 OIS2N LL_TIM_OC_SetIdleState\n + * CR2 OIS3 LL_TIM_OC_SetIdleState\n + * CR2 OIS3N LL_TIM_OC_SetIdleState\n + * CR2 OIS4 LL_TIM_OC_SetIdleState + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param IdleState This parameter can be one of the following values: + * @arg @ref LL_TIM_OCIDLESTATE_LOW + * @arg @ref LL_TIM_OCIDLESTATE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), IdleState << SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Get the IDLE state of an output channel + * @rmtoll CR2 OIS1 LL_TIM_OC_GetIdleState\n + * CR2 OIS1N LL_TIM_OC_GetIdleState\n + * CR2 OIS2 LL_TIM_OC_GetIdleState\n + * CR2 OIS2N LL_TIM_OC_GetIdleState\n + * CR2 OIS3 LL_TIM_OC_GetIdleState\n + * CR2 OIS3N LL_TIM_OC_GetIdleState\n + * CR2 OIS4 LL_TIM_OC_GetIdleState + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCIDLESTATE_LOW + * @arg @ref LL_TIM_OCIDLESTATE_HIGH + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Enable fast mode for the output channel. + * @note Acts only if the channel is configured in PWM1 or PWM2 mode. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_EnableFast\n + * CCMR1 OC2FE LL_TIM_OC_EnableFast\n + * CCMR2 OC3FE LL_TIM_OC_EnableFast\n + * CCMR2 OC4FE LL_TIM_OC_EnableFast + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); + +} + +/** + * @brief Disable fast mode for the output channel. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_DisableFast\n + * CCMR1 OC2FE LL_TIM_OC_DisableFast\n + * CCMR2 OC3FE LL_TIM_OC_DisableFast\n + * CCMR2 OC4FE LL_TIM_OC_DisableFast + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); + +} + +/** + * @brief Indicates whether fast mode is enabled for the output channel. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_IsEnabledFast\n + * CCMR1 OC2FE LL_TIM_OC_IsEnabledFast\n + * CCMR2 OC3FE LL_TIM_OC_IsEnabledFast\n + * CCMR2 OC4FE LL_TIM_OC_IsEnabledFast\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Enable compare register (TIMx_CCRx) preload for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_EnablePreload\n + * CCMR1 OC2PE LL_TIM_OC_EnablePreload\n + * CCMR2 OC3PE LL_TIM_OC_EnablePreload\n + * CCMR2 OC4PE LL_TIM_OC_EnablePreload + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Disable compare register (TIMx_CCRx) preload for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_DisablePreload\n + * CCMR1 OC2PE LL_TIM_OC_DisablePreload\n + * CCMR2 OC3PE LL_TIM_OC_DisablePreload\n + * CCMR2 OC4PE LL_TIM_OC_DisablePreload + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_IsEnabledPreload\n + * CCMR1 OC2PE LL_TIM_OC_IsEnabledPreload\n + * CCMR2 OC3PE LL_TIM_OC_IsEnabledPreload\n + * CCMR2 OC4PE LL_TIM_OC_IsEnabledPreload\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Enable clearing the output channel on an external event. + * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_EnableClear\n + * CCMR1 OC2CE LL_TIM_OC_EnableClear\n + * CCMR2 OC3CE LL_TIM_OC_EnableClear\n + * CCMR2 OC4CE LL_TIM_OC_EnableClear + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Disable clearing the output channel on an external event. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_DisableClear\n + * CCMR1 OC2CE LL_TIM_OC_DisableClear\n + * CCMR2 OC3CE LL_TIM_OC_DisableClear\n + * CCMR2 OC4CE LL_TIM_OC_DisableClear + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Indicates clearing the output channel on an external event is enabled for the output channel. + * @note This function enables clearing the output channel on an external event. + * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_IsEnabledClear\n + * CCMR1 OC2CE LL_TIM_OC_IsEnabledClear\n + * CCMR2 OC3CE LL_TIM_OC_IsEnabledClear\n + * CCMR2 OC4CE LL_TIM_OC_IsEnabledClear\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge of + * the Ocx and OCxN signals). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * dead-time insertion feature is supported by a timer instance. + * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter + * @rmtoll BDTR DTG LL_TIM_OC_SetDeadTime + * @param TIMx Timer instance + * @param DeadTime between Min_Data=0 and Max_Data=255 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime); +} + +/** + * @brief Set compare value for output channel 1 (TIMx_CCR1). + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * output channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_OC_SetCompareCH1 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR1, CompareValue); +} + +/** + * @brief Set compare value for output channel 2 (TIMx_CCR2). + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * output channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_OC_SetCompareCH2 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR2, CompareValue); +} + +/** + * @brief Set compare value for output channel 3 (TIMx_CCR3). + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * output channel is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_OC_SetCompareCH3 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR3, CompareValue); +} + +/** + * @brief Set compare value for output channel 4 (TIMx_CCR4). + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * output channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_OC_SetCompareCH4 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR4, CompareValue); +} + +/** + * @brief Get compare value (TIMx_CCR1) set for output channel 1. + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * output channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_OC_GetCompareCH1 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR1)); +} + +/** + * @brief Get compare value (TIMx_CCR2) set for output channel 2. + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * output channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_OC_GetCompareCH2 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR2)); +} + +/** + * @brief Get compare value (TIMx_CCR3) set for output channel 3. + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * output channel 3 is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_OC_GetCompareCH3 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR3)); +} + +/** + * @brief Get compare value (TIMx_CCR4) set for output channel 4. + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * output channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_OC_GetCompareCH4 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR4)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Input_Channel Input channel configuration + * @{ + */ +/** + * @brief Configure input channel. + * @rmtoll CCMR1 CC1S LL_TIM_IC_Config\n + * CCMR1 IC1PSC LL_TIM_IC_Config\n + * CCMR1 IC1F LL_TIM_IC_Config\n + * CCMR1 CC2S LL_TIM_IC_Config\n + * CCMR1 IC2PSC LL_TIM_IC_Config\n + * CCMR1 IC2F LL_TIM_IC_Config\n + * CCMR2 CC3S LL_TIM_IC_Config\n + * CCMR2 IC3PSC LL_TIM_IC_Config\n + * CCMR2 IC3F LL_TIM_IC_Config\n + * CCMR2 CC4S LL_TIM_IC_Config\n + * CCMR2 IC4PSC LL_TIM_IC_Config\n + * CCMR2 IC4F LL_TIM_IC_Config\n + * CCER CC1P LL_TIM_IC_Config\n + * CCER CC1NP LL_TIM_IC_Config\n + * CCER CC2P LL_TIM_IC_Config\n + * CCER CC2NP LL_TIM_IC_Config\n + * CCER CC3P LL_TIM_IC_Config\n + * CCER CC3NP LL_TIM_IC_Config\n + * CCER CC4P LL_TIM_IC_Config\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_TIM_ACTIVEINPUT_TRC + * @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8 + * @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8 + * @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), + ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S)) \ + << SHIFT_TAB_ICxx[iChannel]); + MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), + (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Set the active input. + * @rmtoll CCMR1 CC1S LL_TIM_IC_SetActiveInput\n + * CCMR1 CC2S LL_TIM_IC_SetActiveInput\n + * CCMR2 CC3S LL_TIM_IC_SetActiveInput\n + * CCMR2 CC4S LL_TIM_IC_SetActiveInput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICActiveInput This parameter can be one of the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_TRC + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the current active input. + * @rmtoll CCMR1 CC1S LL_TIM_IC_GetActiveInput\n + * CCMR1 CC2S LL_TIM_IC_GetActiveInput\n + * CCMR2 CC3S LL_TIM_IC_GetActiveInput\n + * CCMR2 CC4S LL_TIM_IC_GetActiveInput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_TRC + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the prescaler of input channel. + * @rmtoll CCMR1 IC1PSC LL_TIM_IC_SetPrescaler\n + * CCMR1 IC2PSC LL_TIM_IC_SetPrescaler\n + * CCMR2 IC3PSC LL_TIM_IC_SetPrescaler\n + * CCMR2 IC4PSC LL_TIM_IC_SetPrescaler + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICPrescaler This parameter can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the current prescaler value acting on an input channel. + * @rmtoll CCMR1 IC1PSC LL_TIM_IC_GetPrescaler\n + * CCMR1 IC2PSC LL_TIM_IC_GetPrescaler\n + * CCMR2 IC3PSC LL_TIM_IC_GetPrescaler\n + * CCMR2 IC4PSC LL_TIM_IC_GetPrescaler + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the input filter duration. + * @rmtoll CCMR1 IC1F LL_TIM_IC_SetFilter\n + * CCMR1 IC2F LL_TIM_IC_SetFilter\n + * CCMR2 IC3F LL_TIM_IC_SetFilter\n + * CCMR2 IC4F LL_TIM_IC_SetFilter + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICFilter This parameter can be one of the following values: + * @arg @ref LL_TIM_IC_FILTER_FDIV1 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the input filter duration. + * @rmtoll CCMR1 IC1F LL_TIM_IC_GetFilter\n + * CCMR1 IC2F LL_TIM_IC_GetFilter\n + * CCMR2 IC3F LL_TIM_IC_GetFilter\n + * CCMR2 IC4F LL_TIM_IC_GetFilter + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_IC_FILTER_FDIV1 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the input channel polarity. + * @rmtoll CCER CC1P LL_TIM_IC_SetPolarity\n + * CCER CC1NP LL_TIM_IC_SetPolarity\n + * CCER CC2P LL_TIM_IC_SetPolarity\n + * CCER CC2NP LL_TIM_IC_SetPolarity\n + * CCER CC3P LL_TIM_IC_SetPolarity\n + * CCER CC3NP LL_TIM_IC_SetPolarity\n + * CCER CC4P LL_TIM_IC_SetPolarity\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_IC_POLARITY_RISING + * @arg @ref LL_TIM_IC_POLARITY_FALLING + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), + ICPolarity << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Get the current input channel polarity. + * @rmtoll CCER CC1P LL_TIM_IC_GetPolarity\n + * CCER CC1NP LL_TIM_IC_GetPolarity\n + * CCER CC2P LL_TIM_IC_GetPolarity\n + * CCER CC2NP LL_TIM_IC_GetPolarity\n + * CCER CC3P LL_TIM_IC_GetPolarity\n + * CCER CC3NP LL_TIM_IC_GetPolarity\n + * CCER CC4P LL_TIM_IC_GetPolarity\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_IC_POLARITY_RISING + * @arg @ref LL_TIM_IC_POLARITY_FALLING + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(const TIM_TypeDef *TIMx, uint32_t Channel) +{ + uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >> + SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Connect the TIMx_CH1, CH2 and CH3 pins to the TI1 input (XOR combination). + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_EnableXORCombination + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR2, TIM_CR2_TI1S); +} + +/** + * @brief Disconnect the TIMx_CH1, CH2 and CH3 pins from the TI1 input. + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_DisableXORCombination + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S); +} + +/** + * @brief Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input. + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_IsEnabledXORCombination + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL); +} + +/** + * @brief Get captured value for input channel 1. + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * input channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_IC_GetCaptureCH1 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR1)); +} + +/** + * @brief Get captured value for input channel 2. + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * input channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_IC_GetCaptureCH2 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR2)); +} + +/** + * @brief Get captured value for input channel 3. + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * input channel 3 is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_IC_GetCaptureCH3 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR3)); +} + +/** + * @brief Get captured value for input channel 4. + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * input channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_IC_GetCaptureCH4 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(const TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR4)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection + * @{ + */ +/** + * @brief Enable external clock mode 2. + * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ETRF signal. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_EnableExternalClock + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->SMCR, TIM_SMCR_ECE); +} + +/** + * @brief Disable external clock mode 2. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_DisableExternalClock + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE); +} + +/** + * @brief Indicate whether external clock mode 2 is enabled. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_IsEnabledExternalClock + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL); +} + +/** + * @brief Set the clock source of the counter clock. + * @note when selected clock source is external clock mode 1, the timer input + * the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput() + * function. This timer input must be configured by calling + * the @ref LL_TIM_IC_Config() function. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode1. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR SMS LL_TIM_SetClockSource\n + * SMCR ECE LL_TIM_SetClockSource + * @param TIMx Timer instance + * @param ClockSource This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL + * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1 + * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource); +} + +/** + * @brief Set the encoder interface mode. + * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports the encoder mode. + * @rmtoll SMCR SMS LL_TIM_SetEncoderMode + * @param TIMx Timer instance + * @param EncoderMode This parameter can be one of the following values: + * @arg @ref LL_TIM_ENCODERMODE_X2_TI1 + * @arg @ref LL_TIM_ENCODERMODE_X2_TI2 + * @arg @ref LL_TIM_ENCODERMODE_X4_TI12 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration + * @{ + */ +/** + * @brief Set the trigger output (TRGO) used for timer synchronization . + * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance can operate as a master timer. + * @rmtoll CR2 MMS LL_TIM_SetTriggerOutput + * @param TIMx Timer instance + * @param TimerSynchronization This parameter can be one of the following values: + * @arg @ref LL_TIM_TRGO_RESET + * @arg @ref LL_TIM_TRGO_ENABLE + * @arg @ref LL_TIM_TRGO_UPDATE + * @arg @ref LL_TIM_TRGO_CC1IF + * @arg @ref LL_TIM_TRGO_OC1REF + * @arg @ref LL_TIM_TRGO_OC2REF + * @arg @ref LL_TIM_TRGO_OC3REF + * @arg @ref LL_TIM_TRGO_OC4REF + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization); +} + +/** + * @brief Set the synchronization mode of a slave timer. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR SMS LL_TIM_SetSlaveMode + * @param TIMx Timer instance + * @param SlaveMode This parameter can be one of the following values: + * @arg @ref LL_TIM_SLAVEMODE_DISABLED + * @arg @ref LL_TIM_SLAVEMODE_RESET + * @arg @ref LL_TIM_SLAVEMODE_GATED + * @arg @ref LL_TIM_SLAVEMODE_TRIGGER + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode); +} + +/** + * @brief Set the selects the trigger input to be used to synchronize the counter. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR TS LL_TIM_SetTriggerInput + * @param TIMx Timer instance + * @param TriggerInput This parameter can be one of the following values: + * @arg @ref LL_TIM_TS_ITR0 + * @arg @ref LL_TIM_TS_ITR1 + * @arg @ref LL_TIM_TS_ITR2 + * @arg @ref LL_TIM_TS_ITR3 + * @arg @ref LL_TIM_TS_TI1F_ED + * @arg @ref LL_TIM_TS_TI1FP1 + * @arg @ref LL_TIM_TS_TI2FP2 + * @arg @ref LL_TIM_TS_ETRF + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput); +} + +/** + * @brief Enable the Master/Slave mode. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_EnableMasterSlaveMode + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->SMCR, TIM_SMCR_MSM); +} + +/** + * @brief Disable the Master/Slave mode. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_DisableMasterSlaveMode + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM); +} + +/** + * @brief Indicates whether the Master/Slave mode is enabled. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_IsEnabledMasterSlaveMode + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL); +} + +/** + * @brief Configure the external trigger (ETR) input. + * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an external trigger input. + * @rmtoll SMCR ETP LL_TIM_ConfigETR\n + * SMCR ETPS LL_TIM_ConfigETR\n + * SMCR ETF LL_TIM_ConfigETR + * @param TIMx Timer instance + * @param ETRPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED + * @arg @ref LL_TIM_ETR_POLARITY_INVERTED + * @param ETRPrescaler This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_PRESCALER_DIV1 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV2 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV4 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV8 + * @param ETRFilter This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_FILTER_FDIV1 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescaler, + uint32_t ETRFilter) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | ETRFilter); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Break_Function Break function configuration + * @{ + */ +/** + * @brief Enable the break function. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR BKE LL_TIM_EnableBRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx) +{ + __IO uint32_t tmpreg; + SET_BIT(TIMx->BDTR, TIM_BDTR_BKE); + /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */ + tmpreg = READ_REG(TIMx->BDTR); + (void)(tmpreg); +} + +/** + * @brief Disable the break function. + * @rmtoll BDTR BKE LL_TIM_DisableBRK + * @param TIMx Timer instance + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx) +{ + __IO uint32_t tmpreg; + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE); + /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */ + tmpreg = READ_REG(TIMx->BDTR); + (void)(tmpreg); +} + +/** + * @brief Configure the break input. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR BKP LL_TIM_ConfigBRK + * @param TIMx Timer instance + * @param BreakPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_POLARITY_LOW + * @arg @ref LL_TIM_BREAK_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity) +{ + __IO uint32_t tmpreg; + MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP, BreakPolarity); + /* Note: Any write operation to BKP bit takes a delay of 1 APB clock cycle to become effective. */ + tmpreg = READ_REG(TIMx->BDTR); + (void)(tmpreg); +} + +/** + * @brief Select the outputs off state (enabled v.s. disabled) in Idle and Run modes. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR OSSI LL_TIM_SetOffStates\n + * BDTR OSSR LL_TIM_SetOffStates + * @param TIMx Timer instance + * @param OffStateIdle This parameter can be one of the following values: + * @arg @ref LL_TIM_OSSI_DISABLE + * @arg @ref LL_TIM_OSSI_ENABLE + * @param OffStateRun This parameter can be one of the following values: + * @arg @ref LL_TIM_OSSR_DISABLE + * @arg @ref LL_TIM_OSSR_ENABLE + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStateRun) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun); +} + +/** + * @brief Enable automatic output (MOE can be set by software or automatically when a break input is active). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_EnableAutomaticOutput + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_AOE); +} + +/** + * @brief Disable automatic output (MOE can be set only by software). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_DisableAutomaticOutput + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE); +} + +/** + * @brief Indicate whether automatic output is enabled. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_IsEnabledAutomaticOutput + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL); +} + +/** + * @brief Enable the outputs (set the MOE bit in TIMx_BDTR register). + * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by + * software and is reset in case of break or break2 event + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_EnableAllOutputs + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_MOE); +} + +/** + * @brief Disable the outputs (reset the MOE bit in TIMx_BDTR register). + * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by + * software and is reset in case of break or break2 event. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_DisableAllOutputs + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE); +} + +/** + * @brief Indicates whether outputs are enabled. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_IsEnabledAllOutputs + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration + * @{ + */ +/** + * @brief Configures the timer DMA burst feature. + * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or + * not a timer instance supports the DMA burst mode. + * @rmtoll DCR DBL LL_TIM_ConfigDMABurst\n + * DCR DBA LL_TIM_ConfigDMABurst + * @param TIMx Timer instance + * @param DMABurstBaseAddress This parameter can be one of the following values: + * @arg @ref LL_TIM_DMABURST_BASEADDR_CR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR + * @arg @ref LL_TIM_DMABURST_BASEADDR_DIER + * @arg @ref LL_TIM_DMABURST_BASEADDR_SR + * @arg @ref LL_TIM_DMABURST_BASEADDR_EGR + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCER + * @arg @ref LL_TIM_DMABURST_BASEADDR_CNT + * @arg @ref LL_TIM_DMABURST_BASEADDR_PSC + * @arg @ref LL_TIM_DMABURST_BASEADDR_ARR + * @arg @ref LL_TIM_DMABURST_BASEADDR_RCR + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4 + * @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR + * @param DMABurstLength This parameter can be one of the following values: + * @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER + * @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength) +{ + MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength)); +} + +/** + * @} + */ + + +/** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management + * @{ + */ +/** + * @brief Clear the update interrupt flag (UIF). + * @rmtoll SR UIF LL_TIM_ClearFlag_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_UIF)); +} + +/** + * @brief Indicate whether update interrupt flag (UIF) is set (update interrupt is pending). + * @rmtoll SR UIF LL_TIM_IsActiveFlag_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 1 interrupt flag (CC1F). + * @rmtoll SR CC1IF LL_TIM_ClearFlag_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF)); +} + +/** + * @brief Indicate whether Capture/Compare 1 interrupt flag (CC1F) is set (Capture/Compare 1 interrupt is pending). + * @rmtoll SR CC1IF LL_TIM_IsActiveFlag_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 2 interrupt flag (CC2F). + * @rmtoll SR CC2IF LL_TIM_ClearFlag_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF)); +} + +/** + * @brief Indicate whether Capture/Compare 2 interrupt flag (CC2F) is set (Capture/Compare 2 interrupt is pending). + * @rmtoll SR CC2IF LL_TIM_IsActiveFlag_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 3 interrupt flag (CC3F). + * @rmtoll SR CC3IF LL_TIM_ClearFlag_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF)); +} + +/** + * @brief Indicate whether Capture/Compare 3 interrupt flag (CC3F) is set (Capture/Compare 3 interrupt is pending). + * @rmtoll SR CC3IF LL_TIM_IsActiveFlag_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 4 interrupt flag (CC4F). + * @rmtoll SR CC4IF LL_TIM_ClearFlag_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF)); +} + +/** + * @brief Indicate whether Capture/Compare 4 interrupt flag (CC4F) is set (Capture/Compare 4 interrupt is pending). + * @rmtoll SR CC4IF LL_TIM_IsActiveFlag_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the commutation interrupt flag (COMIF). + * @rmtoll SR COMIF LL_TIM_ClearFlag_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_COM(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_COMIF)); +} + +/** + * @brief Indicate whether commutation interrupt flag (COMIF) is set (commutation interrupt is pending). + * @rmtoll SR COMIF LL_TIM_IsActiveFlag_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the trigger interrupt flag (TIF). + * @rmtoll SR TIF LL_TIM_ClearFlag_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_TIF)); +} + +/** + * @brief Indicate whether trigger interrupt flag (TIF) is set (trigger interrupt is pending). + * @rmtoll SR TIF LL_TIM_IsActiveFlag_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the break interrupt flag (BIF). + * @rmtoll SR BIF LL_TIM_ClearFlag_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_BRK(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_BIF)); +} + +/** + * @brief Indicate whether break interrupt flag (BIF) is set (break interrupt is pending). + * @rmtoll SR BIF LL_TIM_IsActiveFlag_BRK + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF). + * @rmtoll SR CC1OF LL_TIM_ClearFlag_CC1OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF)); +} + +/** + * @brief Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set + * (Capture/Compare 1 interrupt is pending). + * @rmtoll SR CC1OF LL_TIM_IsActiveFlag_CC1OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF). + * @rmtoll SR CC2OF LL_TIM_ClearFlag_CC2OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF)); +} + +/** + * @brief Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set + * (Capture/Compare 2 over-capture interrupt is pending). + * @rmtoll SR CC2OF LL_TIM_IsActiveFlag_CC2OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF). + * @rmtoll SR CC3OF LL_TIM_ClearFlag_CC3OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF)); +} + +/** + * @brief Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set + * (Capture/Compare 3 over-capture interrupt is pending). + * @rmtoll SR CC3OF LL_TIM_IsActiveFlag_CC3OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF). + * @rmtoll SR CC4OF LL_TIM_ClearFlag_CC4OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF)); +} + +/** + * @brief Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set + * (Capture/Compare 4 over-capture interrupt is pending). + * @rmtoll SR CC4OF LL_TIM_IsActiveFlag_CC4OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_IT_Management IT-Management + * @{ + */ +/** + * @brief Enable update interrupt (UIE). + * @rmtoll DIER UIE LL_TIM_EnableIT_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_UIE); +} + +/** + * @brief Disable update interrupt (UIE). + * @rmtoll DIER UIE LL_TIM_DisableIT_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_UPDATE(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_UIE); +} + +/** + * @brief Indicates whether the update interrupt (UIE) is enabled. + * @rmtoll DIER UIE LL_TIM_IsEnabledIT_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 1 interrupt (CC1IE). + * @rmtoll DIER CC1IE LL_TIM_EnableIT_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC1IE); +} + +/** + * @brief Disable capture/compare 1 interrupt (CC1IE). + * @rmtoll DIER CC1IE LL_TIM_DisableIT_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC1(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1IE); +} + +/** + * @brief Indicates whether the capture/compare 1 interrupt (CC1IE) is enabled. + * @rmtoll DIER CC1IE LL_TIM_IsEnabledIT_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 2 interrupt (CC2IE). + * @rmtoll DIER CC2IE LL_TIM_EnableIT_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC2IE); +} + +/** + * @brief Disable capture/compare 2 interrupt (CC2IE). + * @rmtoll DIER CC2IE LL_TIM_DisableIT_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2IE); +} + +/** + * @brief Indicates whether the capture/compare 2 interrupt (CC2IE) is enabled. + * @rmtoll DIER CC2IE LL_TIM_IsEnabledIT_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 3 interrupt (CC3IE). + * @rmtoll DIER CC3IE LL_TIM_EnableIT_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC3IE); +} + +/** + * @brief Disable capture/compare 3 interrupt (CC3IE). + * @rmtoll DIER CC3IE LL_TIM_DisableIT_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC3(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3IE); +} + +/** + * @brief Indicates whether the capture/compare 3 interrupt (CC3IE) is enabled. + * @rmtoll DIER CC3IE LL_TIM_IsEnabledIT_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 4 interrupt (CC4IE). + * @rmtoll DIER CC4IE LL_TIM_EnableIT_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC4IE); +} + +/** + * @brief Disable capture/compare 4 interrupt (CC4IE). + * @rmtoll DIER CC4IE LL_TIM_DisableIT_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC4(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4IE); +} + +/** + * @brief Indicates whether the capture/compare 4 interrupt (CC4IE) is enabled. + * @rmtoll DIER CC4IE LL_TIM_IsEnabledIT_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable commutation interrupt (COMIE). + * @rmtoll DIER COMIE LL_TIM_EnableIT_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_COMIE); +} + +/** + * @brief Disable commutation interrupt (COMIE). + * @rmtoll DIER COMIE LL_TIM_DisableIT_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_COM(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_COMIE); +} + +/** + * @brief Indicates whether the commutation interrupt (COMIE) is enabled. + * @rmtoll DIER COMIE LL_TIM_IsEnabledIT_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable trigger interrupt (TIE). + * @rmtoll DIER TIE LL_TIM_EnableIT_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_TIE); +} + +/** + * @brief Disable trigger interrupt (TIE). + * @rmtoll DIER TIE LL_TIM_DisableIT_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_TRIG(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_TIE); +} + +/** + * @brief Indicates whether the trigger interrupt (TIE) is enabled. + * @rmtoll DIER TIE LL_TIM_IsEnabledIT_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable break interrupt (BIE). + * @rmtoll DIER BIE LL_TIM_EnableIT_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_BRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_BIE); +} + +/** + * @brief Disable break interrupt (BIE). + * @rmtoll DIER BIE LL_TIM_DisableIT_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_BRK(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_BIE); +} + +/** + * @brief Indicates whether the break interrupt (BIE) is enabled. + * @rmtoll DIER BIE LL_TIM_IsEnabledIT_BRK + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_DMA_Management DMA Management + * @{ + */ +/** + * @brief Enable update DMA request (UDE). + * @rmtoll DIER UDE LL_TIM_EnableDMAReq_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_UDE); +} + +/** + * @brief Disable update DMA request (UDE). + * @rmtoll DIER UDE LL_TIM_DisableDMAReq_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_UPDATE(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_UDE); +} + +/** + * @brief Indicates whether the update DMA request (UDE) is enabled. + * @rmtoll DIER UDE LL_TIM_IsEnabledDMAReq_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 1 DMA request (CC1DE). + * @rmtoll DIER CC1DE LL_TIM_EnableDMAReq_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC1DE); +} + +/** + * @brief Disable capture/compare 1 DMA request (CC1DE). + * @rmtoll DIER CC1DE LL_TIM_DisableDMAReq_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC1(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1DE); +} + +/** + * @brief Indicates whether the capture/compare 1 DMA request (CC1DE) is enabled. + * @rmtoll DIER CC1DE LL_TIM_IsEnabledDMAReq_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 2 DMA request (CC2DE). + * @rmtoll DIER CC2DE LL_TIM_EnableDMAReq_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC2DE); +} + +/** + * @brief Disable capture/compare 2 DMA request (CC2DE). + * @rmtoll DIER CC2DE LL_TIM_DisableDMAReq_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2DE); +} + +/** + * @brief Indicates whether the capture/compare 2 DMA request (CC2DE) is enabled. + * @rmtoll DIER CC2DE LL_TIM_IsEnabledDMAReq_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 3 DMA request (CC3DE). + * @rmtoll DIER CC3DE LL_TIM_EnableDMAReq_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC3DE); +} + +/** + * @brief Disable capture/compare 3 DMA request (CC3DE). + * @rmtoll DIER CC3DE LL_TIM_DisableDMAReq_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC3(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3DE); +} + +/** + * @brief Indicates whether the capture/compare 3 DMA request (CC3DE) is enabled. + * @rmtoll DIER CC3DE LL_TIM_IsEnabledDMAReq_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 4 DMA request (CC4DE). + * @rmtoll DIER CC4DE LL_TIM_EnableDMAReq_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC4DE); +} + +/** + * @brief Disable capture/compare 4 DMA request (CC4DE). + * @rmtoll DIER CC4DE LL_TIM_DisableDMAReq_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC4(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4DE); +} + +/** + * @brief Indicates whether the capture/compare 4 DMA request (CC4DE) is enabled. + * @rmtoll DIER CC4DE LL_TIM_IsEnabledDMAReq_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable commutation DMA request (COMDE). + * @rmtoll DIER COMDE LL_TIM_EnableDMAReq_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_COMDE); +} + +/** + * @brief Disable commutation DMA request (COMDE). + * @rmtoll DIER COMDE LL_TIM_DisableDMAReq_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_COM(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_COMDE); +} + +/** + * @brief Indicates whether the commutation DMA request (COMDE) is enabled. + * @rmtoll DIER COMDE LL_TIM_IsEnabledDMAReq_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE)) ? 1UL : 0UL); +} + +/** + * @brief Enable trigger interrupt (TDE). + * @rmtoll DIER TDE LL_TIM_EnableDMAReq_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_TDE); +} + +/** + * @brief Disable trigger interrupt (TDE). + * @rmtoll DIER TDE LL_TIM_DisableDMAReq_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_TRIG(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_TDE); +} + +/** + * @brief Indicates whether the trigger interrupt (TDE) is enabled. + * @rmtoll DIER TDE LL_TIM_IsEnabledDMAReq_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(const TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_EVENT_Management EVENT-Management + * @{ + */ +/** + * @brief Generate an update event. + * @rmtoll EGR UG LL_TIM_GenerateEvent_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_UG); +} + +/** + * @brief Generate Capture/Compare 1 event. + * @rmtoll EGR CC1G LL_TIM_GenerateEvent_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC1G); +} + +/** + * @brief Generate Capture/Compare 2 event. + * @rmtoll EGR CC2G LL_TIM_GenerateEvent_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC2G); +} + +/** + * @brief Generate Capture/Compare 3 event. + * @rmtoll EGR CC3G LL_TIM_GenerateEvent_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC3G); +} + +/** + * @brief Generate Capture/Compare 4 event. + * @rmtoll EGR CC4G LL_TIM_GenerateEvent_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC4G); +} + +/** + * @brief Generate commutation event. + * @rmtoll EGR COMG LL_TIM_GenerateEvent_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_COMG); +} + +/** + * @brief Generate trigger event. + * @rmtoll EGR TG LL_TIM_GenerateEvent_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_TG); +} + +/** + * @brief Generate break event. + * @rmtoll EGR BG LL_TIM_GenerateEvent_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_BRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_BG); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_EF_Init Initialisation and deinitialisation functions + * @{ + */ + +ErrorStatus LL_TIM_DeInit(const TIM_TypeDef *TIMx); +void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct); +ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, const LL_TIM_InitTypeDef *TIM_InitStruct); +void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct); +ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct); +void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct); +void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct); +ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, const LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct); +void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct); +ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, const LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct); +void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct); +ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, const LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* TIM1 || TIM2 || TIM3 || TIM4 || TIM5 || TIM6 || TIM7 || TIM8 || TIM9 || TIM10 || TIM11 || TIM12 || TIM13 || TIM14 || TIM15 || TIM16 || TIM17 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_TIM_H */ diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h new file mode 100644 index 0000000..ffe4192 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h @@ -0,0 +1,2569 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_usart.h + * @author MCD Application Team + * @brief Header file of USART LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_USART_H +#define __STM32F1xx_LL_USART_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (USART1) || defined (USART2) || defined (USART3) || defined (UART4) || defined (UART5) + +/** @defgroup USART_LL USART + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup USART_LL_Private_Constants USART Private Constants + * @{ + */ + +/* Defines used for the bit position in the register and perform offsets*/ +#define USART_POSITION_GTPR_GT USART_GTPR_GT_Pos +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_Private_Macros USART Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_ES_INIT USART Exported Init structures + * @{ + */ + +/** + * @brief LL USART Init Structure definition + */ +typedef struct +{ + uint32_t BaudRate; /*!< This field defines expected Usart communication baud rate. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetBaudRate().*/ + + uint32_t DataWidth; /*!< Specifies the number of data bits transmitted or received in a frame. + This parameter can be a value of @ref USART_LL_EC_DATAWIDTH. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetDataWidth().*/ + + uint32_t StopBits; /*!< Specifies the number of stop bits transmitted. + This parameter can be a value of @ref USART_LL_EC_STOPBITS. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetStopBitsLength().*/ + + uint32_t Parity; /*!< Specifies the parity mode. + This parameter can be a value of @ref USART_LL_EC_PARITY. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetParity().*/ + + uint32_t TransferDirection; /*!< Specifies whether the Receive and/or Transmit mode is enabled or disabled. + This parameter can be a value of @ref USART_LL_EC_DIRECTION. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetTransferDirection().*/ + + uint32_t HardwareFlowControl; /*!< Specifies whether the hardware flow control mode is enabled or disabled. + This parameter can be a value of @ref USART_LL_EC_HWCONTROL. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetHWFlowCtrl().*/ + + uint32_t OverSampling; /*!< Specifies whether USART oversampling mode is 16 or 8. + This parameter can be a value of @ref USART_LL_EC_OVERSAMPLING. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetOverSampling().*/ + +} LL_USART_InitTypeDef; + +/** + * @brief LL USART Clock Init Structure definition + */ +typedef struct +{ + uint32_t ClockOutput; /*!< Specifies whether the USART clock is enabled or disabled. + This parameter can be a value of @ref USART_LL_EC_CLOCK. + + USART HW configuration can be modified afterwards using unitary functions + @ref LL_USART_EnableSCLKOutput() or @ref LL_USART_DisableSCLKOutput(). + For more details, refer to description of this function. */ + + uint32_t ClockPolarity; /*!< Specifies the steady state of the serial clock. + This parameter can be a value of @ref USART_LL_EC_POLARITY. + + USART HW configuration can be modified afterwards using unitary functions @ref LL_USART_SetClockPolarity(). + For more details, refer to description of this function. */ + + uint32_t ClockPhase; /*!< Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref USART_LL_EC_PHASE. + + USART HW configuration can be modified afterwards using unitary functions @ref LL_USART_SetClockPhase(). + For more details, refer to description of this function. */ + + uint32_t LastBitClockPulse; /*!< Specifies whether the clock pulse corresponding to the last transmitted + data bit (MSB) has to be output on the SCLK pin in synchronous mode. + This parameter can be a value of @ref USART_LL_EC_LASTCLKPULSE. + + USART HW configuration can be modified afterwards using unitary functions @ref LL_USART_SetLastClkPulseOutput(). + For more details, refer to description of this function. */ + +} LL_USART_ClockInitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup USART_LL_Exported_Constants USART Exported Constants + * @{ + */ + +/** @defgroup USART_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_USART_ReadReg function + * @{ + */ +#define LL_USART_SR_PE USART_SR_PE /*!< Parity error flag */ +#define LL_USART_SR_FE USART_SR_FE /*!< Framing error flag */ +#define LL_USART_SR_NE USART_SR_NE /*!< Noise detected flag */ +#define LL_USART_SR_ORE USART_SR_ORE /*!< Overrun error flag */ +#define LL_USART_SR_IDLE USART_SR_IDLE /*!< Idle line detected flag */ +#define LL_USART_SR_RXNE USART_SR_RXNE /*!< Read data register not empty flag */ +#define LL_USART_SR_TC USART_SR_TC /*!< Transmission complete flag */ +#define LL_USART_SR_TXE USART_SR_TXE /*!< Transmit data register empty flag */ +#define LL_USART_SR_LBD USART_SR_LBD /*!< LIN break detection flag */ +#define LL_USART_SR_CTS USART_SR_CTS /*!< CTS flag */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_USART_ReadReg and LL_USART_WriteReg functions + * @{ + */ +#define LL_USART_CR1_IDLEIE USART_CR1_IDLEIE /*!< IDLE interrupt enable */ +#define LL_USART_CR1_RXNEIE USART_CR1_RXNEIE /*!< Read data register not empty interrupt enable */ +#define LL_USART_CR1_TCIE USART_CR1_TCIE /*!< Transmission complete interrupt enable */ +#define LL_USART_CR1_TXEIE USART_CR1_TXEIE /*!< Transmit data register empty interrupt enable */ +#define LL_USART_CR1_PEIE USART_CR1_PEIE /*!< Parity error */ +#define LL_USART_CR2_LBDIE USART_CR2_LBDIE /*!< LIN break detection interrupt enable */ +#define LL_USART_CR3_EIE USART_CR3_EIE /*!< Error interrupt enable */ +#define LL_USART_CR3_CTSIE USART_CR3_CTSIE /*!< CTS interrupt enable */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_DIRECTION Communication Direction + * @{ + */ +#define LL_USART_DIRECTION_NONE 0x00000000U /*!< Transmitter and Receiver are disabled */ +#define LL_USART_DIRECTION_RX USART_CR1_RE /*!< Transmitter is disabled and Receiver is enabled */ +#define LL_USART_DIRECTION_TX USART_CR1_TE /*!< Transmitter is enabled and Receiver is disabled */ +#define LL_USART_DIRECTION_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< Transmitter and Receiver are enabled */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_PARITY Parity Control + * @{ + */ +#define LL_USART_PARITY_NONE 0x00000000U /*!< Parity control disabled */ +#define LL_USART_PARITY_EVEN USART_CR1_PCE /*!< Parity control enabled and Even Parity is selected */ +#define LL_USART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< Parity control enabled and Odd Parity is selected */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_WAKEUP Wakeup + * @{ + */ +#define LL_USART_WAKEUP_IDLELINE 0x00000000U /*!< USART wake up from Mute mode on Idle Line */ +#define LL_USART_WAKEUP_ADDRESSMARK USART_CR1_WAKE /*!< USART wake up from Mute mode on Address Mark */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_DATAWIDTH Datawidth + * @{ + */ +#define LL_USART_DATAWIDTH_8B 0x00000000U /*!< 8 bits word length : Start bit, 8 data bits, n stop bits */ +#define LL_USART_DATAWIDTH_9B USART_CR1_M /*!< 9 bits word length : Start bit, 9 data bits, n stop bits */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_OVERSAMPLING Oversampling + * @{ + */ +#define LL_USART_OVERSAMPLING_16 0x00000000U /*!< Oversampling by 16 */ +#if defined(USART_CR1_OVER8) +#define LL_USART_OVERSAMPLING_8 USART_CR1_OVER8 /*!< Oversampling by 8 */ +#endif /* USART_OverSampling_Feature */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_EC_CLOCK Clock Signal + * @{ + */ + +#define LL_USART_CLOCK_DISABLE 0x00000000U /*!< Clock signal not provided */ +#define LL_USART_CLOCK_ENABLE USART_CR2_CLKEN /*!< Clock signal provided */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/** @defgroup USART_LL_EC_LASTCLKPULSE Last Clock Pulse + * @{ + */ +#define LL_USART_LASTCLKPULSE_NO_OUTPUT 0x00000000U /*!< The clock pulse of the last data bit is not output to the SCLK pin */ +#define LL_USART_LASTCLKPULSE_OUTPUT USART_CR2_LBCL /*!< The clock pulse of the last data bit is output to the SCLK pin */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_PHASE Clock Phase + * @{ + */ +#define LL_USART_PHASE_1EDGE 0x00000000U /*!< The first clock transition is the first data capture edge */ +#define LL_USART_PHASE_2EDGE USART_CR2_CPHA /*!< The second clock transition is the first data capture edge */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_POLARITY Clock Polarity + * @{ + */ +#define LL_USART_POLARITY_LOW 0x00000000U /*!< Steady low value on SCLK pin outside transmission window*/ +#define LL_USART_POLARITY_HIGH USART_CR2_CPOL /*!< Steady high value on SCLK pin outside transmission window */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_STOPBITS Stop Bits + * @{ + */ +#define LL_USART_STOPBITS_0_5 USART_CR2_STOP_0 /*!< 0.5 stop bit */ +#define LL_USART_STOPBITS_1 0x00000000U /*!< 1 stop bit */ +#define LL_USART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) /*!< 1.5 stop bits */ +#define LL_USART_STOPBITS_2 USART_CR2_STOP_1 /*!< 2 stop bits */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_HWCONTROL Hardware Control + * @{ + */ +#define LL_USART_HWCONTROL_NONE 0x00000000U /*!< CTS and RTS hardware flow control disabled */ +#define LL_USART_HWCONTROL_RTS USART_CR3_RTSE /*!< RTS output enabled, data is only requested when there is space in the receive buffer */ +#define LL_USART_HWCONTROL_CTS USART_CR3_CTSE /*!< CTS mode enabled, data is only transmitted when the nCTS input is asserted (tied to 0) */ +#define LL_USART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /*!< CTS and RTS hardware flow control enabled */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_IRDA_POWER IrDA Power + * @{ + */ +#define LL_USART_IRDA_POWER_NORMAL 0x00000000U /*!< IrDA normal power mode */ +#define LL_USART_IRDA_POWER_LOW USART_CR3_IRLP /*!< IrDA low power mode */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_LINBREAK_DETECT LIN Break Detection Length + * @{ + */ +#define LL_USART_LINBREAK_DETECT_10B 0x00000000U /*!< 10-bit break detection method selected */ +#define LL_USART_LINBREAK_DETECT_11B USART_CR2_LBDL /*!< 11-bit break detection method selected */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup USART_LL_Exported_Macros USART Exported Macros + * @{ + */ + +/** @defgroup USART_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in USART register + * @param __INSTANCE__ USART Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_USART_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in USART register + * @param __INSTANCE__ USART Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_USART_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup USART_LL_EM_Exported_Macros_Helper Exported_Macros_Helper + * @{ + */ + +/** + * @brief Compute USARTDIV value according to Peripheral Clock and + * expected Baud Rate in 8 bits sampling mode (32 bits value of USARTDIV is returned) + * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + * @param __BAUDRATE__ Baud rate value to achieve + * @retval USARTDIV value to be used for BRR register filling in OverSampling_8 case + */ +#define __LL_USART_DIV_SAMPLING8_100(__PERIPHCLK__, __BAUDRATE__) (((__PERIPHCLK__)*25)/(2*(__BAUDRATE__))) +#define __LL_USART_DIVMANT_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) (__LL_USART_DIV_SAMPLING8_100((__PERIPHCLK__), (__BAUDRATE__))/100) +#define __LL_USART_DIVFRAQ_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) (((__LL_USART_DIV_SAMPLING8_100((__PERIPHCLK__), (__BAUDRATE__)) - (__LL_USART_DIVMANT_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) * 100)) * 8\ + + 50) / 100) +/* UART BRR = mantissa + overflow + fraction + = (UART DIVMANT << 4) + ((UART DIVFRAQ & 0xF8) << 1) + (UART DIVFRAQ & 0x07) */ +#define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) (((__LL_USART_DIVMANT_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) << 4) + \ + ((__LL_USART_DIVFRAQ_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) & 0xF8) << 1)) + \ + (__LL_USART_DIVFRAQ_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) & 0x07)) + +/** + * @brief Compute USARTDIV value according to Peripheral Clock and + * expected Baud Rate in 16 bits sampling mode (32 bits value of USARTDIV is returned) + * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + * @param __BAUDRATE__ Baud rate value to achieve + * @retval USARTDIV value to be used for BRR register filling in OverSampling_16 case + */ +#define __LL_USART_DIV_SAMPLING16_100(__PERIPHCLK__, __BAUDRATE__) (((__PERIPHCLK__)*25)/(4*(__BAUDRATE__))) +#define __LL_USART_DIVMANT_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (__LL_USART_DIV_SAMPLING16_100((__PERIPHCLK__), (__BAUDRATE__))/100) +#define __LL_USART_DIVFRAQ_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) ((((__LL_USART_DIV_SAMPLING16_100((__PERIPHCLK__), (__BAUDRATE__)) - (__LL_USART_DIVMANT_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) * 100)) * 16)\ + + 50) / 100) +/* USART BRR = mantissa + overflow + fraction + = (USART DIVMANT << 4) + (USART DIVFRAQ & 0xF0) + (USART DIVFRAQ & 0x0F) */ +#define __LL_USART_DIV_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (((__LL_USART_DIVMANT_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) << 4) + \ + (__LL_USART_DIVFRAQ_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) & 0xF0)) + \ + (__LL_USART_DIVFRAQ_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) & 0x0F)) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup USART_LL_Exported_Functions USART Exported Functions + * @{ + */ + +/** @defgroup USART_LL_EF_Configuration Configuration functions + * @{ + */ + +/** + * @brief USART Enable + * @rmtoll CR1 UE LL_USART_Enable + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_Enable(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_UE); +} + +/** + * @brief USART Disable (all USART prescalers and outputs are disabled) + * @note When USART is disabled, USART prescalers and outputs are stopped immediately, + * and current operations are discarded. The configuration of the USART is kept, but all the status + * flags, in the USARTx_SR are set to their default values. + * @rmtoll CR1 UE LL_USART_Disable + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_Disable(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_UE); +} + +/** + * @brief Indicate if USART is enabled + * @rmtoll CR1 UE LL_USART_IsEnabled + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabled(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)); +} + +/** + * @brief Receiver Enable (Receiver is enabled and begins searching for a start bit) + * @rmtoll CR1 RE LL_USART_EnableDirectionRx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDirectionRx(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RE); +} + +/** + * @brief Receiver Disable + * @rmtoll CR1 RE LL_USART_DisableDirectionRx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDirectionRx(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RE); +} + +/** + * @brief Transmitter Enable + * @rmtoll CR1 TE LL_USART_EnableDirectionTx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDirectionTx(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TE); +} + +/** + * @brief Transmitter Disable + * @rmtoll CR1 TE LL_USART_DisableDirectionTx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDirectionTx(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TE); +} + +/** + * @brief Configure simultaneously enabled/disabled states + * of Transmitter and Receiver + * @rmtoll CR1 RE LL_USART_SetTransferDirection\n + * CR1 TE LL_USART_SetTransferDirection + * @param USARTx USART Instance + * @param TransferDirection This parameter can be one of the following values: + * @arg @ref LL_USART_DIRECTION_NONE + * @arg @ref LL_USART_DIRECTION_RX + * @arg @ref LL_USART_DIRECTION_TX + * @arg @ref LL_USART_DIRECTION_TX_RX + * @retval None + */ +__STATIC_INLINE void LL_USART_SetTransferDirection(USART_TypeDef *USARTx, uint32_t TransferDirection) +{ + ATOMIC_MODIFY_REG(USARTx->CR1, USART_CR1_RE | USART_CR1_TE, TransferDirection); +} + +/** + * @brief Return enabled/disabled states of Transmitter and Receiver + * @rmtoll CR1 RE LL_USART_GetTransferDirection\n + * CR1 TE LL_USART_GetTransferDirection + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_DIRECTION_NONE + * @arg @ref LL_USART_DIRECTION_RX + * @arg @ref LL_USART_DIRECTION_TX + * @arg @ref LL_USART_DIRECTION_TX_RX + */ +__STATIC_INLINE uint32_t LL_USART_GetTransferDirection(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_RE | USART_CR1_TE)); +} + +/** + * @brief Configure Parity (enabled/disabled and parity mode if enabled). + * @note This function selects if hardware parity control (generation and detection) is enabled or disabled. + * When the parity control is enabled (Odd or Even), computed parity bit is inserted at the MSB position + * (9th or 8th bit depending on data width) and parity is checked on the received data. + * @rmtoll CR1 PS LL_USART_SetParity\n + * CR1 PCE LL_USART_SetParity + * @param USARTx USART Instance + * @param Parity This parameter can be one of the following values: + * @arg @ref LL_USART_PARITY_NONE + * @arg @ref LL_USART_PARITY_EVEN + * @arg @ref LL_USART_PARITY_ODD + * @retval None + */ +__STATIC_INLINE void LL_USART_SetParity(USART_TypeDef *USARTx, uint32_t Parity) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE, Parity); +} + +/** + * @brief Return Parity configuration (enabled/disabled and parity mode if enabled) + * @rmtoll CR1 PS LL_USART_GetParity\n + * CR1 PCE LL_USART_GetParity + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_PARITY_NONE + * @arg @ref LL_USART_PARITY_EVEN + * @arg @ref LL_USART_PARITY_ODD + */ +__STATIC_INLINE uint32_t LL_USART_GetParity(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE)); +} + +/** + * @brief Set Receiver Wake Up method from Mute mode. + * @rmtoll CR1 WAKE LL_USART_SetWakeUpMethod + * @param USARTx USART Instance + * @param Method This parameter can be one of the following values: + * @arg @ref LL_USART_WAKEUP_IDLELINE + * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + * @retval None + */ +__STATIC_INLINE void LL_USART_SetWakeUpMethod(USART_TypeDef *USARTx, uint32_t Method) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_WAKE, Method); +} + +/** + * @brief Return Receiver Wake Up method from Mute mode + * @rmtoll CR1 WAKE LL_USART_GetWakeUpMethod + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_WAKEUP_IDLELINE + * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + */ +__STATIC_INLINE uint32_t LL_USART_GetWakeUpMethod(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_WAKE)); +} + +/** + * @brief Set Word length (i.e. nb of data bits, excluding start and stop bits) + * @rmtoll CR1 M LL_USART_SetDataWidth + * @param USARTx USART Instance + * @param DataWidth This parameter can be one of the following values: + * @arg @ref LL_USART_DATAWIDTH_8B + * @arg @ref LL_USART_DATAWIDTH_9B + * @retval None + */ +__STATIC_INLINE void LL_USART_SetDataWidth(USART_TypeDef *USARTx, uint32_t DataWidth) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_M, DataWidth); +} + +/** + * @brief Return Word length (i.e. nb of data bits, excluding start and stop bits) + * @rmtoll CR1 M LL_USART_GetDataWidth + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_DATAWIDTH_8B + * @arg @ref LL_USART_DATAWIDTH_9B + */ +__STATIC_INLINE uint32_t LL_USART_GetDataWidth(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_M)); +} + +#if defined(USART_CR1_OVER8) +/** + * @brief Set Oversampling to 8-bit or 16-bit mode + * @rmtoll CR1 OVER8 LL_USART_SetOverSampling + * @param USARTx USART Instance + * @param OverSampling This parameter can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetOverSampling(USART_TypeDef *USARTx, uint32_t OverSampling) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_OVER8, OverSampling); +} + +/** + * @brief Return Oversampling mode + * @rmtoll CR1 OVER8 LL_USART_GetOverSampling + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + */ +__STATIC_INLINE uint32_t LL_USART_GetOverSampling(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_OVER8)); +} + +#endif /* USART_OverSampling_Feature */ +/** + * @brief Configure if Clock pulse of the last data bit is output to the SCLK pin or not + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 LBCL LL_USART_SetLastClkPulseOutput + * @param USARTx USART Instance + * @param LastBitClockPulse This parameter can be one of the following values: + * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + * @retval None + */ +__STATIC_INLINE void LL_USART_SetLastClkPulseOutput(USART_TypeDef *USARTx, uint32_t LastBitClockPulse) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_LBCL, LastBitClockPulse); +} + +/** + * @brief Retrieve Clock pulse of the last data bit output configuration + * (Last bit Clock pulse output to the SCLK pin or not) + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 LBCL LL_USART_GetLastClkPulseOutput + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + */ +__STATIC_INLINE uint32_t LL_USART_GetLastClkPulseOutput(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBCL)); +} + +/** + * @brief Select the phase of the clock output on the SCLK pin in synchronous mode + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPHA LL_USART_SetClockPhase + * @param USARTx USART Instance + * @param ClockPhase This parameter can be one of the following values: + * @arg @ref LL_USART_PHASE_1EDGE + * @arg @ref LL_USART_PHASE_2EDGE + * @retval None + */ +__STATIC_INLINE void LL_USART_SetClockPhase(USART_TypeDef *USARTx, uint32_t ClockPhase) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_CPHA, ClockPhase); +} + +/** + * @brief Return phase of the clock output on the SCLK pin in synchronous mode + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPHA LL_USART_GetClockPhase + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_PHASE_1EDGE + * @arg @ref LL_USART_PHASE_2EDGE + */ +__STATIC_INLINE uint32_t LL_USART_GetClockPhase(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPHA)); +} + +/** + * @brief Select the polarity of the clock output on the SCLK pin in synchronous mode + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPOL LL_USART_SetClockPolarity + * @param USARTx USART Instance + * @param ClockPolarity This parameter can be one of the following values: + * @arg @ref LL_USART_POLARITY_LOW + * @arg @ref LL_USART_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_USART_SetClockPolarity(USART_TypeDef *USARTx, uint32_t ClockPolarity) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_CPOL, ClockPolarity); +} + +/** + * @brief Return polarity of the clock output on the SCLK pin in synchronous mode + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPOL LL_USART_GetClockPolarity + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_POLARITY_LOW + * @arg @ref LL_USART_POLARITY_HIGH + */ +__STATIC_INLINE uint32_t LL_USART_GetClockPolarity(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPOL)); +} + +/** + * @brief Configure Clock signal format (Phase Polarity and choice about output of last bit clock pulse) + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clock Phase configuration using @ref LL_USART_SetClockPhase() function + * - Clock Polarity configuration using @ref LL_USART_SetClockPolarity() function + * - Output of Last bit Clock pulse configuration using @ref LL_USART_SetLastClkPulseOutput() function + * @rmtoll CR2 CPHA LL_USART_ConfigClock\n + * CR2 CPOL LL_USART_ConfigClock\n + * CR2 LBCL LL_USART_ConfigClock + * @param USARTx USART Instance + * @param Phase This parameter can be one of the following values: + * @arg @ref LL_USART_PHASE_1EDGE + * @arg @ref LL_USART_PHASE_2EDGE + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_USART_POLARITY_LOW + * @arg @ref LL_USART_POLARITY_HIGH + * @param LBCPOutput This parameter can be one of the following values: + * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigClock(USART_TypeDef *USARTx, uint32_t Phase, uint32_t Polarity, uint32_t LBCPOutput) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, Phase | Polarity | LBCPOutput); +} + +/** + * @brief Enable Clock output on SCLK pin + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CLKEN LL_USART_EnableSCLKOutput + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableSCLKOutput(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_CLKEN); +} + +/** + * @brief Disable Clock output on SCLK pin + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CLKEN LL_USART_DisableSCLKOutput + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableSCLKOutput(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_CLKEN); +} + +/** + * @brief Indicate if Clock output on SCLK pin is enabled + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CLKEN LL_USART_IsEnabledSCLKOutput + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledSCLKOutput(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR2, USART_CR2_CLKEN) == (USART_CR2_CLKEN)); +} + +/** + * @brief Set the length of the stop bits + * @rmtoll CR2 STOP LL_USART_SetStopBitsLength + * @param USARTx USART Instance + * @param StopBits This parameter can be one of the following values: + * @arg @ref LL_USART_STOPBITS_0_5 + * @arg @ref LL_USART_STOPBITS_1 + * @arg @ref LL_USART_STOPBITS_1_5 + * @arg @ref LL_USART_STOPBITS_2 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetStopBitsLength(USART_TypeDef *USARTx, uint32_t StopBits) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +} + +/** + * @brief Retrieve the length of the stop bits + * @rmtoll CR2 STOP LL_USART_GetStopBitsLength + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_STOPBITS_0_5 + * @arg @ref LL_USART_STOPBITS_1 + * @arg @ref LL_USART_STOPBITS_1_5 + * @arg @ref LL_USART_STOPBITS_2 + */ +__STATIC_INLINE uint32_t LL_USART_GetStopBitsLength(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_STOP)); +} + +/** + * @brief Configure Character frame format (Datawidth, Parity control, Stop Bits) + * @note Call of this function is equivalent to following function call sequence : + * - Data Width configuration using @ref LL_USART_SetDataWidth() function + * - Parity Control and mode configuration using @ref LL_USART_SetParity() function + * - Stop bits configuration using @ref LL_USART_SetStopBitsLength() function + * @rmtoll CR1 PS LL_USART_ConfigCharacter\n + * CR1 PCE LL_USART_ConfigCharacter\n + * CR1 M LL_USART_ConfigCharacter\n + * CR2 STOP LL_USART_ConfigCharacter + * @param USARTx USART Instance + * @param DataWidth This parameter can be one of the following values: + * @arg @ref LL_USART_DATAWIDTH_8B + * @arg @ref LL_USART_DATAWIDTH_9B + * @param Parity This parameter can be one of the following values: + * @arg @ref LL_USART_PARITY_NONE + * @arg @ref LL_USART_PARITY_EVEN + * @arg @ref LL_USART_PARITY_ODD + * @param StopBits This parameter can be one of the following values: + * @arg @ref LL_USART_STOPBITS_0_5 + * @arg @ref LL_USART_STOPBITS_1 + * @arg @ref LL_USART_STOPBITS_1_5 + * @arg @ref LL_USART_STOPBITS_2 + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigCharacter(USART_TypeDef *USARTx, uint32_t DataWidth, uint32_t Parity, + uint32_t StopBits) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE | USART_CR1_M, Parity | DataWidth); + MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +} + +/** + * @brief Set Address of the USART node. + * @note This is used in multiprocessor communication during Mute mode or Stop mode, + * for wake up with address mark detection. + * @rmtoll CR2 ADD LL_USART_SetNodeAddress + * @param USARTx USART Instance + * @param NodeAddress 4 bit Address of the USART node. + * @retval None + */ +__STATIC_INLINE void LL_USART_SetNodeAddress(USART_TypeDef *USARTx, uint32_t NodeAddress) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_ADD, (NodeAddress & USART_CR2_ADD)); +} + +/** + * @brief Return 4 bit Address of the USART node as set in ADD field of CR2. + * @note only 4bits (b3-b0) of returned value are relevant (b31-b4 are not relevant) + * @rmtoll CR2 ADD LL_USART_GetNodeAddress + * @param USARTx USART Instance + * @retval Address of the USART node (Value between Min_Data=0 and Max_Data=255) + */ +__STATIC_INLINE uint32_t LL_USART_GetNodeAddress(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADD)); +} + +/** + * @brief Enable RTS HW Flow Control + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_EnableRTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableRTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_RTSE); +} + +/** + * @brief Disable RTS HW Flow Control + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_DisableRTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableRTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_RTSE); +} + +/** + * @brief Enable CTS HW Flow Control + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSE LL_USART_EnableCTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableCTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_CTSE); +} + +/** + * @brief Disable CTS HW Flow Control + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSE LL_USART_DisableCTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableCTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_CTSE); +} + +/** + * @brief Configure HW Flow Control mode (both CTS and RTS) + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_SetHWFlowCtrl\n + * CR3 CTSE LL_USART_SetHWFlowCtrl + * @param USARTx USART Instance + * @param HardwareFlowControl This parameter can be one of the following values: + * @arg @ref LL_USART_HWCONTROL_NONE + * @arg @ref LL_USART_HWCONTROL_RTS + * @arg @ref LL_USART_HWCONTROL_CTS + * @arg @ref LL_USART_HWCONTROL_RTS_CTS + * @retval None + */ +__STATIC_INLINE void LL_USART_SetHWFlowCtrl(USART_TypeDef *USARTx, uint32_t HardwareFlowControl) +{ + MODIFY_REG(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE, HardwareFlowControl); +} + +/** + * @brief Return HW Flow Control configuration (both CTS and RTS) + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_GetHWFlowCtrl\n + * CR3 CTSE LL_USART_GetHWFlowCtrl + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_HWCONTROL_NONE + * @arg @ref LL_USART_HWCONTROL_RTS + * @arg @ref LL_USART_HWCONTROL_CTS + * @arg @ref LL_USART_HWCONTROL_RTS_CTS + */ +__STATIC_INLINE uint32_t LL_USART_GetHWFlowCtrl(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE)); +} + +#if defined(USART_CR3_ONEBIT) +/** + * @brief Enable One bit sampling method + * @rmtoll CR3 ONEBIT LL_USART_EnableOneBitSamp + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableOneBitSamp(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_ONEBIT); +} + +/** + * @brief Disable One bit sampling method + * @rmtoll CR3 ONEBIT LL_USART_DisableOneBitSamp + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableOneBitSamp(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_ONEBIT); +} + +/** + * @brief Indicate if One bit sampling method is enabled + * @rmtoll CR3 ONEBIT LL_USART_IsEnabledOneBitSamp + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledOneBitSamp(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_ONEBIT) == (USART_CR3_ONEBIT)); +} +#endif /* USART_OneBitSampling_Feature */ + +#if defined(USART_CR1_OVER8) +/** + * @brief Configure USART BRR register for achieving expected Baud Rate value. + * @note Compute and set USARTDIV value in BRR Register (full BRR content) + * according to used Peripheral Clock, Oversampling mode, and expected Baud Rate values + * @note Peripheral clock and Baud rate values provided as function parameters should be valid + * (Baud rate value != 0) + * @rmtoll BRR BRR LL_USART_SetBaudRate + * @param USARTx USART Instance + * @param PeriphClk Peripheral Clock + * @param OverSampling This parameter can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + * @param BaudRate Baud Rate + * @retval None + */ +__STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling, + uint32_t BaudRate) +{ + if (OverSampling == LL_USART_OVERSAMPLING_8) + { + USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING8(PeriphClk, BaudRate)); + } + else + { + USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING16(PeriphClk, BaudRate)); + } +} + +/** + * @brief Return current Baud Rate value, according to USARTDIV present in BRR register + * (full BRR content), and to used Peripheral Clock and Oversampling mode values + * @note In case of non-initialized or invalid value stored in BRR register, value 0 will be returned. + * @rmtoll BRR BRR LL_USART_GetBaudRate + * @param USARTx USART Instance + * @param PeriphClk Peripheral Clock + * @param OverSampling This parameter can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + * @retval Baud Rate + */ +__STATIC_INLINE uint32_t LL_USART_GetBaudRate(const USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling) +{ + uint32_t usartdiv = 0x0U; + uint32_t brrresult = 0x0U; + + usartdiv = USARTx->BRR; + + if (OverSampling == LL_USART_OVERSAMPLING_8) + { + if ((usartdiv & 0xFFF7U) != 0U) + { + usartdiv = (uint16_t)((usartdiv & 0xFFF0U) | ((usartdiv & 0x0007U) << 1U)) ; + brrresult = (PeriphClk * 2U) / usartdiv; + } + } + else + { + if ((usartdiv & 0xFFFFU) != 0U) + { + brrresult = PeriphClk / usartdiv; + } + } + return (brrresult); +} +#else +/** + * @brief Configure USART BRR register for achieving expected Baud Rate value. + * @note Compute and set USARTDIV value in BRR Register (full BRR content) + * according to used Peripheral Clock, Oversampling mode, and expected Baud Rate values + * @note Peripheral clock and Baud rate values provided as function parameters should be valid + * (Baud rate value != 0) + * @rmtoll BRR BRR LL_USART_SetBaudRate + * @param USARTx USART Instance + * @param PeriphClk Peripheral Clock + * @param BaudRate Baud Rate + * @retval None + */ +__STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t BaudRate) +{ + USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING16(PeriphClk, BaudRate)); +} + +/** + * @brief Return current Baud Rate value, according to USARTDIV present in BRR register + * (full BRR content), and to used Peripheral Clock and Oversampling mode values + * @note In case of non-initialized or invalid value stored in BRR register, value 0 will be returned. + * @rmtoll BRR BRR LL_USART_GetBaudRate + * @param USARTx USART Instance + * @param PeriphClk Peripheral Clock + * @retval Baud Rate + */ +__STATIC_INLINE uint32_t LL_USART_GetBaudRate(const USART_TypeDef *USARTx, uint32_t PeriphClk) +{ + uint32_t usartdiv = 0x0U; + uint32_t brrresult = 0x0U; + + usartdiv = USARTx->BRR; + + if ((usartdiv & 0xFFFFU) != 0U) + { + brrresult = PeriphClk / usartdiv; + } + return (brrresult); +} +#endif /* USART_OverSampling_Feature */ + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_IRDA Configuration functions related to Irda feature + * @{ + */ + +/** + * @brief Enable IrDA mode + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IREN LL_USART_EnableIrda + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIrda(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_IREN); +} + +/** + * @brief Disable IrDA mode + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IREN LL_USART_DisableIrda + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIrda(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_IREN); +} + +/** + * @brief Indicate if IrDA mode is enabled + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IREN LL_USART_IsEnabledIrda + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIrda(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_IREN) == (USART_CR3_IREN)); +} + +/** + * @brief Configure IrDA Power Mode (Normal or Low Power) + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IRLP LL_USART_SetIrdaPowerMode + * @param USARTx USART Instance + * @param PowerMode This parameter can be one of the following values: + * @arg @ref LL_USART_IRDA_POWER_NORMAL + * @arg @ref LL_USART_IRDA_POWER_LOW + * @retval None + */ +__STATIC_INLINE void LL_USART_SetIrdaPowerMode(USART_TypeDef *USARTx, uint32_t PowerMode) +{ + MODIFY_REG(USARTx->CR3, USART_CR3_IRLP, PowerMode); +} + +/** + * @brief Retrieve IrDA Power Mode configuration (Normal or Low Power) + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IRLP LL_USART_GetIrdaPowerMode + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_IRDA_POWER_NORMAL + * @arg @ref LL_USART_PHASE_2EDGE + */ +__STATIC_INLINE uint32_t LL_USART_GetIrdaPowerMode(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_IRLP)); +} + +/** + * @brief Set Irda prescaler value, used for dividing the USART clock source + * to achieve the Irda Low Power frequency (8 bits value) + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_SetIrdaPrescaler + * @param USARTx USART Instance + * @param PrescalerValue Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_USART_SetIrdaPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue) +{ + MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, PrescalerValue); +} + +/** + * @brief Return Irda prescaler value, used for dividing the USART clock source + * to achieve the Irda Low Power frequency (8 bits value) + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_GetIrdaPrescaler + * @param USARTx USART Instance + * @retval Irda prescaler value (Value between Min_Data=0x00 and Max_Data=0xFF) + */ +__STATIC_INLINE uint32_t LL_USART_GetIrdaPrescaler(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_Smartcard Configuration functions related to Smartcard feature + * @{ + */ + +/** + * @brief Enable Smartcard NACK transmission + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 NACK LL_USART_EnableSmartcardNACK + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableSmartcardNACK(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_NACK); +} + +/** + * @brief Disable Smartcard NACK transmission + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 NACK LL_USART_DisableSmartcardNACK + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableSmartcardNACK(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_NACK); +} + +/** + * @brief Indicate if Smartcard NACK transmission is enabled + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 NACK LL_USART_IsEnabledSmartcardNACK + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcardNACK(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_NACK) == (USART_CR3_NACK)); +} + +/** + * @brief Enable Smartcard mode + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 SCEN LL_USART_EnableSmartcard + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableSmartcard(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_SCEN); +} + +/** + * @brief Disable Smartcard mode + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 SCEN LL_USART_DisableSmartcard + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableSmartcard(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_SCEN); +} + +/** + * @brief Indicate if Smartcard mode is enabled + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 SCEN LL_USART_IsEnabledSmartcard + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcard(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_SCEN) == (USART_CR3_SCEN)); +} + +/** + * @brief Set Smartcard prescaler value, used for dividing the USART clock + * source to provide the SMARTCARD Clock (5 bits value) + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_SetSmartcardPrescaler + * @param USARTx USART Instance + * @param PrescalerValue Value between Min_Data=0 and Max_Data=31 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetSmartcardPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue) +{ + MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, PrescalerValue); +} + +/** + * @brief Return Smartcard prescaler value, used for dividing the USART clock + * source to provide the SMARTCARD Clock (5 bits value) + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_GetSmartcardPrescaler + * @param USARTx USART Instance + * @retval Smartcard prescaler value (Value between Min_Data=0 and Max_Data=31) + */ +__STATIC_INLINE uint32_t LL_USART_GetSmartcardPrescaler(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC)); +} + +/** + * @brief Set Smartcard Guard time value, expressed in nb of baud clocks periods + * (GT[7:0] bits : Guard time value) + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR GT LL_USART_SetSmartcardGuardTime + * @param USARTx USART Instance + * @param GuardTime Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_USART_SetSmartcardGuardTime(USART_TypeDef *USARTx, uint32_t GuardTime) +{ + MODIFY_REG(USARTx->GTPR, USART_GTPR_GT, GuardTime << USART_POSITION_GTPR_GT); +} + +/** + * @brief Return Smartcard Guard time value, expressed in nb of baud clocks periods + * (GT[7:0] bits : Guard time value) + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR GT LL_USART_GetSmartcardGuardTime + * @param USARTx USART Instance + * @retval Smartcard Guard time value (Value between Min_Data=0x00 and Max_Data=0xFF) + */ +__STATIC_INLINE uint32_t LL_USART_GetSmartcardGuardTime(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_GT) >> USART_POSITION_GTPR_GT); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_HalfDuplex Configuration functions related to Half Duplex feature + * @{ + */ + +/** + * @brief Enable Single Wire Half-Duplex mode + * @note Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @rmtoll CR3 HDSEL LL_USART_EnableHalfDuplex + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableHalfDuplex(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_HDSEL); +} + +/** + * @brief Disable Single Wire Half-Duplex mode + * @note Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @rmtoll CR3 HDSEL LL_USART_DisableHalfDuplex + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableHalfDuplex(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_HDSEL); +} + +/** + * @brief Indicate if Single Wire Half-Duplex mode is enabled + * @note Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @rmtoll CR3 HDSEL LL_USART_IsEnabledHalfDuplex + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledHalfDuplex(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_HDSEL) == (USART_CR3_HDSEL)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_LIN Configuration functions related to LIN feature + * @{ + */ + +/** + * @brief Set LIN Break Detection Length + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDL LL_USART_SetLINBrkDetectionLen + * @param USARTx USART Instance + * @param LINBDLength This parameter can be one of the following values: + * @arg @ref LL_USART_LINBREAK_DETECT_10B + * @arg @ref LL_USART_LINBREAK_DETECT_11B + * @retval None + */ +__STATIC_INLINE void LL_USART_SetLINBrkDetectionLen(USART_TypeDef *USARTx, uint32_t LINBDLength) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_LBDL, LINBDLength); +} + +/** + * @brief Return LIN Break Detection Length + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDL LL_USART_GetLINBrkDetectionLen + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_LINBREAK_DETECT_10B + * @arg @ref LL_USART_LINBREAK_DETECT_11B + */ +__STATIC_INLINE uint32_t LL_USART_GetLINBrkDetectionLen(const USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBDL)); +} + +/** + * @brief Enable LIN mode + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LINEN LL_USART_EnableLIN + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableLIN(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_LINEN); +} + +/** + * @brief Disable LIN mode + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LINEN LL_USART_DisableLIN + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableLIN(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_LINEN); +} + +/** + * @brief Indicate if LIN mode is enabled + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LINEN LL_USART_IsEnabledLIN + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledLIN(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR2, USART_CR2_LINEN) == (USART_CR2_LINEN)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_AdvancedConfiguration Advanced Configurations services + * @{ + */ + +/** + * @brief Perform basic configuration of USART for enabling use in Asynchronous Mode (UART) + * @note In UART mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - CLKEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * @note Other remaining configurations items related to Asynchronous Mode + * (as Baud Rate, Word length, Parity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigAsyncMode\n + * CR2 CLKEN LL_USART_ConfigAsyncMode\n + * CR3 SCEN LL_USART_ConfigAsyncMode\n + * CR3 IREN LL_USART_ConfigAsyncMode\n + * CR3 HDSEL LL_USART_ConfigAsyncMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigAsyncMode(USART_TypeDef *USARTx) +{ + /* In Asynchronous mode, the following bits must be kept cleared: + - LINEN, CLKEN bits in the USART_CR2 register, + - SCEN, IREN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Synchronous Mode + * @note In Synchronous mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also sets the USART in Synchronous mode. + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Set CLKEN in CR2 using @ref LL_USART_EnableSCLKOutput() function + * @note Other remaining configurations items related to Synchronous Mode + * (as Baud Rate, Word length, Parity, Clock Polarity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigSyncMode\n + * CR2 CLKEN LL_USART_ConfigSyncMode\n + * CR3 SCEN LL_USART_ConfigSyncMode\n + * CR3 IREN LL_USART_ConfigSyncMode\n + * CR3 HDSEL LL_USART_ConfigSyncMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigSyncMode(USART_TypeDef *USARTx) +{ + /* In Synchronous mode, the following bits must be kept cleared: + - LINEN bit in the USART_CR2 register, + - SCEN, IREN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); + /* set the UART/USART in Synchronous mode */ + SET_BIT(USARTx->CR2, USART_CR2_CLKEN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in LIN Mode + * @note In LIN mode, the following bits must be kept cleared: + * - STOP and CLKEN bits in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also set the UART/USART in LIN mode. + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear STOP in CR2 using @ref LL_USART_SetStopBitsLength() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Set LINEN in CR2 using @ref LL_USART_EnableLIN() function + * @note Other remaining configurations items related to LIN Mode + * (as Baud Rate, Word length, LIN Break Detection Length, ...) should be set using + * dedicated functions + * @rmtoll CR2 CLKEN LL_USART_ConfigLINMode\n + * CR2 STOP LL_USART_ConfigLINMode\n + * CR2 LINEN LL_USART_ConfigLINMode\n + * CR3 IREN LL_USART_ConfigLINMode\n + * CR3 SCEN LL_USART_ConfigLINMode\n + * CR3 HDSEL LL_USART_ConfigLINMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigLINMode(USART_TypeDef *USARTx) +{ + /* In LIN mode, the following bits must be kept cleared: + - STOP and CLKEN bits in the USART_CR2 register, + - IREN, SCEN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_CLKEN | USART_CR2_STOP)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_SCEN | USART_CR3_HDSEL)); + /* Set the UART/USART in LIN mode */ + SET_BIT(USARTx->CR2, USART_CR2_LINEN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Half Duplex Mode + * @note In Half Duplex mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - CLKEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * This function also sets the UART/USART in Half Duplex mode. + * @note Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Set HDSEL in CR3 using @ref LL_USART_EnableHalfDuplex() function + * @note Other remaining configurations items related to Half Duplex Mode + * (as Baud Rate, Word length, Parity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigHalfDuplexMode\n + * CR2 CLKEN LL_USART_ConfigHalfDuplexMode\n + * CR3 HDSEL LL_USART_ConfigHalfDuplexMode\n + * CR3 SCEN LL_USART_ConfigHalfDuplexMode\n + * CR3 IREN LL_USART_ConfigHalfDuplexMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigHalfDuplexMode(USART_TypeDef *USARTx) +{ + /* In Half Duplex mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - SCEN and IREN bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN)); + /* set the UART/USART in Half Duplex mode */ + SET_BIT(USARTx->CR3, USART_CR3_HDSEL); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Smartcard Mode + * @note In Smartcard mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also configures Stop bits to 1.5 bits and + * sets the USART in Smartcard mode (SCEN bit). + * Clock Output is also enabled (CLKEN). + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Configure STOP in CR2 using @ref LL_USART_SetStopBitsLength() function + * - Set CLKEN in CR2 using @ref LL_USART_EnableSCLKOutput() function + * - Set SCEN in CR3 using @ref LL_USART_EnableSmartcard() function + * @note Other remaining configurations items related to Smartcard Mode + * (as Baud Rate, Word length, Parity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigSmartcardMode\n + * CR2 STOP LL_USART_ConfigSmartcardMode\n + * CR2 CLKEN LL_USART_ConfigSmartcardMode\n + * CR3 HDSEL LL_USART_ConfigSmartcardMode\n + * CR3 SCEN LL_USART_ConfigSmartcardMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigSmartcardMode(USART_TypeDef *USARTx) +{ + /* In Smartcard mode, the following bits must be kept cleared: + - LINEN bit in the USART_CR2 register, + - IREN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_HDSEL)); + /* Configure Stop bits to 1.5 bits */ + /* Synchronous mode is activated by default */ + SET_BIT(USARTx->CR2, (USART_CR2_STOP_0 | USART_CR2_STOP_1 | USART_CR2_CLKEN)); + /* set the UART/USART in Smartcard mode */ + SET_BIT(USARTx->CR3, USART_CR3_SCEN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Irda Mode + * @note In IRDA mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - STOP and CLKEN bits in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also sets the UART/USART in IRDA mode (IREN bit). + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Configure STOP in CR2 using @ref LL_USART_SetStopBitsLength() function + * - Set IREN in CR3 using @ref LL_USART_EnableIrda() function + * @note Other remaining configurations items related to Irda Mode + * (as Baud Rate, Word length, Power mode, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigIrdaMode\n + * CR2 CLKEN LL_USART_ConfigIrdaMode\n + * CR2 STOP LL_USART_ConfigIrdaMode\n + * CR3 SCEN LL_USART_ConfigIrdaMode\n + * CR3 HDSEL LL_USART_ConfigIrdaMode\n + * CR3 IREN LL_USART_ConfigIrdaMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigIrdaMode(USART_TypeDef *USARTx) +{ + /* In IRDA mode, the following bits must be kept cleared: + - LINEN, STOP and CLKEN bits in the USART_CR2 register, + - SCEN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); + /* set the UART/USART in IRDA mode */ + SET_BIT(USARTx->CR3, USART_CR3_IREN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Multi processor Mode + * (several USARTs connected in a network, one of the USARTs can be the master, + * its TX output connected to the RX inputs of the other slaves USARTs). + * @note In MultiProcessor mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - CLKEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * @note Other remaining configurations items related to Multi processor Mode + * (as Baud Rate, Wake Up Method, Node address, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigMultiProcessMode\n + * CR2 CLKEN LL_USART_ConfigMultiProcessMode\n + * CR3 SCEN LL_USART_ConfigMultiProcessMode\n + * CR3 HDSEL LL_USART_ConfigMultiProcessMode\n + * CR3 IREN LL_USART_ConfigMultiProcessMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigMultiProcessMode(USART_TypeDef *USARTx) +{ + /* In Multi Processor mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - IREN, SCEN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Check if the USART Parity Error Flag is set or not + * @rmtoll SR PE LL_USART_IsActiveFlag_PE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_PE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_PE) == (USART_SR_PE)); +} + +/** + * @brief Check if the USART Framing Error Flag is set or not + * @rmtoll SR FE LL_USART_IsActiveFlag_FE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_FE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_FE) == (USART_SR_FE)); +} + +/** + * @brief Check if the USART Noise error detected Flag is set or not + * @rmtoll SR NF LL_USART_IsActiveFlag_NE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_NE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_NE) == (USART_SR_NE)); +} + +/** + * @brief Check if the USART OverRun Error Flag is set or not + * @rmtoll SR ORE LL_USART_IsActiveFlag_ORE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ORE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_ORE) == (USART_SR_ORE)); +} + +/** + * @brief Check if the USART IDLE line detected Flag is set or not + * @rmtoll SR IDLE LL_USART_IsActiveFlag_IDLE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_IDLE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_IDLE) == (USART_SR_IDLE)); +} + +/** + * @brief Check if the USART Read Data Register Not Empty Flag is set or not + * @rmtoll SR RXNE LL_USART_IsActiveFlag_RXNE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RXNE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_RXNE) == (USART_SR_RXNE)); +} + +/** + * @brief Check if the USART Transmission Complete Flag is set or not + * @rmtoll SR TC LL_USART_IsActiveFlag_TC + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TC(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_TC) == (USART_SR_TC)); +} + +/** + * @brief Check if the USART Transmit Data Register Empty Flag is set or not + * @rmtoll SR TXE LL_USART_IsActiveFlag_TXE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TXE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_TXE) == (USART_SR_TXE)); +} + +/** + * @brief Check if the USART LIN Break Detection Flag is set or not + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll SR LBD LL_USART_IsActiveFlag_LBD + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_LBD(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_LBD) == (USART_SR_LBD)); +} + +/** + * @brief Check if the USART CTS Flag is set or not + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll SR CTS LL_USART_IsActiveFlag_nCTS + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_nCTS(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_CTS) == (USART_SR_CTS)); +} + +/** + * @brief Check if the USART Send Break Flag is set or not + * @rmtoll CR1 SBK LL_USART_IsActiveFlag_SBK + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_SBK(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_SBK) == (USART_CR1_SBK)); +} + +/** + * @brief Check if the USART Receive Wake Up from mute mode Flag is set or not + * @rmtoll CR1 RWU LL_USART_IsActiveFlag_RWU + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RWU(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_RWU) == (USART_CR1_RWU)); +} + +/** + * @brief Clear Parity Error Flag + * @note Clearing this flag is done by a read access to the USARTx_SR + * register followed by a read access to the USARTx_DR register. + * @note Please also consider that when clearing this flag, other flags as + * NE, FE, ORE, IDLE would also be cleared. + * @rmtoll SR PE LL_USART_ClearFlag_PE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_PE(USART_TypeDef *USARTx) +{ + __IO uint32_t tmpreg; + tmpreg = USARTx->SR; + (void) tmpreg; + tmpreg = USARTx->DR; + (void) tmpreg; +} + +/** + * @brief Clear Framing Error Flag + * @note Clearing this flag is done by a read access to the USARTx_SR + * register followed by a read access to the USARTx_DR register. + * @note Please also consider that when clearing this flag, other flags as + * PE, NE, ORE, IDLE would also be cleared. + * @rmtoll SR FE LL_USART_ClearFlag_FE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_FE(USART_TypeDef *USARTx) +{ + __IO uint32_t tmpreg; + tmpreg = USARTx->SR; + (void) tmpreg; + tmpreg = USARTx->DR; + (void) tmpreg; +} + +/** + * @brief Clear Noise detected Flag + * @note Clearing this flag is done by a read access to the USARTx_SR + * register followed by a read access to the USARTx_DR register. + * @note Please also consider that when clearing this flag, other flags as + * PE, FE, ORE, IDLE would also be cleared. + * @rmtoll SR NF LL_USART_ClearFlag_NE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_NE(USART_TypeDef *USARTx) +{ + __IO uint32_t tmpreg; + tmpreg = USARTx->SR; + (void) tmpreg; + tmpreg = USARTx->DR; + (void) tmpreg; +} + +/** + * @brief Clear OverRun Error Flag + * @note Clearing this flag is done by a read access to the USARTx_SR + * register followed by a read access to the USARTx_DR register. + * @note Please also consider that when clearing this flag, other flags as + * PE, NE, FE, IDLE would also be cleared. + * @rmtoll SR ORE LL_USART_ClearFlag_ORE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_ORE(USART_TypeDef *USARTx) +{ + __IO uint32_t tmpreg; + tmpreg = USARTx->SR; + (void) tmpreg; + tmpreg = USARTx->DR; + (void) tmpreg; +} + +/** + * @brief Clear IDLE line detected Flag + * @note Clearing this flag is done by a read access to the USARTx_SR + * register followed by a read access to the USARTx_DR register. + * @note Please also consider that when clearing this flag, other flags as + * PE, NE, FE, ORE would also be cleared. + * @rmtoll SR IDLE LL_USART_ClearFlag_IDLE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_IDLE(USART_TypeDef *USARTx) +{ + __IO uint32_t tmpreg; + tmpreg = USARTx->SR; + (void) tmpreg; + tmpreg = USARTx->DR; + (void) tmpreg; +} + +/** + * @brief Clear Transmission Complete Flag + * @rmtoll SR TC LL_USART_ClearFlag_TC + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_TC(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->SR, ~(USART_SR_TC)); +} + +/** + * @brief Clear RX Not Empty Flag + * @rmtoll SR RXNE LL_USART_ClearFlag_RXNE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_RXNE(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->SR, ~(USART_SR_RXNE)); +} + +/** + * @brief Clear LIN Break Detection Flag + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll SR LBD LL_USART_ClearFlag_LBD + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_LBD(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->SR, ~(USART_SR_LBD)); +} + +/** + * @brief Clear CTS Interrupt Flag + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll SR CTS LL_USART_ClearFlag_nCTS + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_nCTS(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->SR, ~(USART_SR_CTS)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable IDLE Interrupt + * @rmtoll CR1 IDLEIE LL_USART_EnableIT_IDLE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_IDLE(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_IDLEIE); +} + +/** + * @brief Enable RX Not Empty Interrupt + * @rmtoll CR1 RXNEIE LL_USART_EnableIT_RXNE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_RXNE(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_RXNEIE); +} + +/** + * @brief Enable Transmission Complete Interrupt + * @rmtoll CR1 TCIE LL_USART_EnableIT_TC + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_TC(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TCIE); +} + +/** + * @brief Enable TX Empty Interrupt + * @rmtoll CR1 TXEIE LL_USART_EnableIT_TXE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_TXE(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_TXEIE); +} + +/** + * @brief Enable Parity Error Interrupt + * @rmtoll CR1 PEIE LL_USART_EnableIT_PE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_PE(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR1, USART_CR1_PEIE); +} + +/** + * @brief Enable LIN Break Detection Interrupt + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDIE LL_USART_EnableIT_LBD + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_LBD(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_LBDIE); +} + +/** + * @brief Enable Error Interrupt + * @note When set, Error Interrupt Enable Bit is enabling interrupt generation in case of a framing + * error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USARTx_SR register). + * 0: Interrupt is inhibited + * 1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USARTx_SR register. + * @rmtoll CR3 EIE LL_USART_EnableIT_ERROR + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_ERROR(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_EIE); +} + +/** + * @brief Enable CTS Interrupt + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSIE LL_USART_EnableIT_CTS + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_CTS(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_CTSIE); +} + +/** + * @brief Disable IDLE Interrupt + * @rmtoll CR1 IDLEIE LL_USART_DisableIT_IDLE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_IDLE(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_IDLEIE); +} + +/** + * @brief Disable RX Not Empty Interrupt + * @rmtoll CR1 RXNEIE LL_USART_DisableIT_RXNE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_RXNE(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_RXNEIE); +} + +/** + * @brief Disable Transmission Complete Interrupt + * @rmtoll CR1 TCIE LL_USART_DisableIT_TC + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_TC(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TCIE); +} + +/** + * @brief Disable TX Empty Interrupt + * @rmtoll CR1 TXEIE LL_USART_DisableIT_TXE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_TXE(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_TXEIE); +} + +/** + * @brief Disable Parity Error Interrupt + * @rmtoll CR1 PEIE LL_USART_DisableIT_PE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_PE(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR1, USART_CR1_PEIE); +} + +/** + * @brief Disable LIN Break Detection Interrupt + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDIE LL_USART_DisableIT_LBD + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_LBD(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_LBDIE); +} + +/** + * @brief Disable Error Interrupt + * @note When set, Error Interrupt Enable Bit is enabling interrupt generation in case of a framing + * error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USARTx_SR register). + * 0: Interrupt is inhibited + * 1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USARTx_SR register. + * @rmtoll CR3 EIE LL_USART_DisableIT_ERROR + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_ERROR(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_EIE); +} + +/** + * @brief Disable CTS Interrupt + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSIE LL_USART_DisableIT_CTS + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_CTS(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE); +} + +/** + * @brief Check if the USART IDLE Interrupt source is enabled or disabled. + * @rmtoll CR1 IDLEIE LL_USART_IsEnabledIT_IDLE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_IDLE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_IDLEIE) == (USART_CR1_IDLEIE)); +} + +/** + * @brief Check if the USART RX Not Empty Interrupt is enabled or disabled. + * @rmtoll CR1 RXNEIE LL_USART_IsEnabledIT_RXNE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RXNE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_RXNEIE) == (USART_CR1_RXNEIE)); +} + +/** + * @brief Check if the USART Transmission Complete Interrupt is enabled or disabled. + * @rmtoll CR1 TCIE LL_USART_IsEnabledIT_TC + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TC(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_TCIE) == (USART_CR1_TCIE)); +} + +/** + * @brief Check if the USART TX Empty Interrupt is enabled or disabled. + * @rmtoll CR1 TXEIE LL_USART_IsEnabledIT_TXE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TXE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_TXEIE) == (USART_CR1_TXEIE)); +} + +/** + * @brief Check if the USART Parity Error Interrupt is enabled or disabled. + * @rmtoll CR1 PEIE LL_USART_IsEnabledIT_PE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_PE(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_PEIE) == (USART_CR1_PEIE)); +} + +/** + * @brief Check if the USART LIN Break Detection Interrupt is enabled or disabled. + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDIE LL_USART_IsEnabledIT_LBD + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_LBD(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR2, USART_CR2_LBDIE) == (USART_CR2_LBDIE)); +} + +/** + * @brief Check if the USART Error Interrupt is enabled or disabled. + * @rmtoll CR3 EIE LL_USART_IsEnabledIT_ERROR + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_ERROR(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_EIE) == (USART_CR3_EIE)); +} + +/** + * @brief Check if the USART CTS Interrupt is enabled or disabled. + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSIE LL_USART_IsEnabledIT_CTS + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CTS(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_DMA_Management DMA_Management + * @{ + */ + +/** + * @brief Enable DMA Mode for reception + * @rmtoll CR3 DMAR LL_USART_EnableDMAReq_RX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDMAReq_RX(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAR); +} + +/** + * @brief Disable DMA Mode for reception + * @rmtoll CR3 DMAR LL_USART_DisableDMAReq_RX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDMAReq_RX(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAR); +} + +/** + * @brief Check if DMA Mode is enabled for reception + * @rmtoll CR3 DMAR LL_USART_IsEnabledDMAReq_RX + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_RX(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_DMAR) == (USART_CR3_DMAR)); +} + +/** + * @brief Enable DMA Mode for transmission + * @rmtoll CR3 DMAT LL_USART_EnableDMAReq_TX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDMAReq_TX(USART_TypeDef *USARTx) +{ + ATOMIC_SET_BIT(USARTx->CR3, USART_CR3_DMAT); +} + +/** + * @brief Disable DMA Mode for transmission + * @rmtoll CR3 DMAT LL_USART_DisableDMAReq_TX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDMAReq_TX(USART_TypeDef *USARTx) +{ + ATOMIC_CLEAR_BIT(USARTx->CR3, USART_CR3_DMAT); +} + +/** + * @brief Check if DMA Mode is enabled for transmission + * @rmtoll CR3 DMAT LL_USART_IsEnabledDMAReq_TX + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_TX(const USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_DMAT) == (USART_CR3_DMAT)); +} + +/** + * @brief Get the data register address used for DMA transfer + * @rmtoll DR DR LL_USART_DMA_GetRegAddr + * @note Address of Data Register is valid for both Transmit and Receive transfers. + * @param USARTx USART Instance + * @retval Address of data register + */ +__STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(const USART_TypeDef *USARTx) +{ + /* return address of DR register */ + return ((uint32_t) &(USARTx->DR)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Data_Management Data_Management + * @{ + */ + +/** + * @brief Read Receiver Data register (Receive Data value, 8 bits) + * @rmtoll DR DR LL_USART_ReceiveData8 + * @param USARTx USART Instance + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint8_t LL_USART_ReceiveData8(const USART_TypeDef *USARTx) +{ + return (uint8_t)(READ_BIT(USARTx->DR, USART_DR_DR)); +} + +/** + * @brief Read Receiver Data register (Receive Data value, 9 bits) + * @rmtoll DR DR LL_USART_ReceiveData9 + * @param USARTx USART Instance + * @retval Value between Min_Data=0x00 and Max_Data=0x1FF + */ +__STATIC_INLINE uint16_t LL_USART_ReceiveData9(const USART_TypeDef *USARTx) +{ + return (uint16_t)(READ_BIT(USARTx->DR, USART_DR_DR)); +} + +/** + * @brief Write in Transmitter Data Register (Transmit Data value, 8 bits) + * @rmtoll DR DR LL_USART_TransmitData8 + * @param USARTx USART Instance + * @param Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_USART_TransmitData8(USART_TypeDef *USARTx, uint8_t Value) +{ + USARTx->DR = Value; +} + +/** + * @brief Write in Transmitter Data Register (Transmit Data value, 9 bits) + * @rmtoll DR DR LL_USART_TransmitData9 + * @param USARTx USART Instance + * @param Value between Min_Data=0x00 and Max_Data=0x1FF + * @retval None + */ +__STATIC_INLINE void LL_USART_TransmitData9(USART_TypeDef *USARTx, uint16_t Value) +{ + USARTx->DR = Value & 0x1FFU; +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Execution Execution + * @{ + */ + +/** + * @brief Request Break sending + * @rmtoll CR1 SBK LL_USART_RequestBreakSending + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestBreakSending(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_SBK); +} + +/** + * @brief Put USART in Mute mode + * @rmtoll CR1 RWU LL_USART_RequestEnterMuteMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestEnterMuteMode(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_RWU); +} + +/** + * @brief Put USART in Active mode + * @rmtoll CR1 RWU LL_USART_RequestExitMuteMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestExitMuteMode(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_RWU); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_EF_Init Initialization and de-initialization functions + * @{ + */ +ErrorStatus LL_USART_DeInit(const USART_TypeDef *USARTx); +ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, const LL_USART_InitTypeDef *USART_InitStruct); +void LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct); +ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, const LL_USART_ClockInitTypeDef *USART_ClockInitStruct); +void LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* USART1 || USART2 || USART3 || UART4 || UART5 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_USART_H */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h new file mode 100644 index 0000000..d938fa3 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_utils.h @@ -0,0 +1,270 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_utils.h + * @author MCD Application Team + * @brief Header file of UTILS LL module. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 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. + * + ****************************************************************************** + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL UTILS driver contains a set of generic APIs that can be + used by user: + (+) Device electronic signature + (+) Timing functions + (+) PLL configuration functions + + @endverbatim + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_UTILS_H +#define __STM32F1xx_LL_UTILS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +/** @defgroup UTILS_LL UTILS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Constants UTILS Private Constants + * @{ + */ + +/* Max delay can be used in LL_mDelay */ +#define LL_MAX_DELAY 0xFFFFFFFFU + +/** + * @brief Unique device ID register base address + */ +#define UID_BASE_ADDRESS UID_BASE + +/** + * @brief Flash size data register base address + */ +#define FLASHSIZE_BASE_ADDRESS FLASHSIZE_BASE + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Macros UTILS Private Macros + * @{ + */ +/** + * @} + */ +/* Exported types ------------------------------------------------------------*/ +/** @defgroup UTILS_LL_ES_INIT UTILS Exported structures + * @{ + */ +/** + * @brief UTILS PLL structure definition + */ +typedef struct +{ + uint32_t PLLMul; /*!< Multiplication factor for PLL VCO input clock. + This parameter can be a value of @ref RCC_LL_EC_PLL_MUL + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ + + uint32_t Prediv; /*!< Division factor for HSE used as PLL clock source. + This parameter can be a value of @ref RCC_LL_EC_PREDIV_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_PLL_ConfigDomain_SYS(). */ +} LL_UTILS_PLLInitTypeDef; + +/** + * @brief UTILS System, AHB and APB buses clock configuration structure definition + */ +typedef struct +{ + uint32_t AHBCLKDivider; /*!< The AHB clock (HCLK) divider. This clock is derived from the system clock (SYSCLK). + This parameter can be a value of @ref RCC_LL_EC_SYSCLK_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAHBPrescaler(). */ + + uint32_t APB1CLKDivider; /*!< The APB1 clock (PCLK1) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_LL_EC_APB1_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAPB1Prescaler(). */ + + uint32_t APB2CLKDivider; /*!< The APB2 clock (PCLK2) divider. This clock is derived from the AHB clock (HCLK). + This parameter can be a value of @ref RCC_LL_EC_APB2_DIV + + This feature can be modified afterwards using unitary function + @ref LL_RCC_SetAPB2Prescaler(). */ + +} LL_UTILS_ClkInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup UTILS_LL_Exported_Constants UTILS Exported Constants + * @{ + */ + +/** @defgroup UTILS_EC_HSE_BYPASS HSE Bypass activation + * @{ + */ +#define LL_UTILS_HSEBYPASS_OFF 0x00000000U /*!< HSE Bypass is not enabled */ +#define LL_UTILS_HSEBYPASS_ON 0x00000001U /*!< HSE Bypass is enabled */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup UTILS_LL_Exported_Functions UTILS Exported Functions + * @{ + */ + +/** @defgroup UTILS_EF_DEVICE_ELECTRONIC_SIGNATURE DEVICE ELECTRONIC SIGNATURE + * @{ + */ + +/** + * @brief Get Word0 of the unique device identifier (UID based on 96 bits) + * @retval UID[31:0] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word0(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)UID_BASE_ADDRESS))); +} + +/** + * @brief Get Word1 of the unique device identifier (UID based on 96 bits) + * @retval UID[63:32] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word1(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 4U)))); +} + +/** + * @brief Get Word2 of the unique device identifier (UID based on 96 bits) + * @retval UID[95:64] + */ +__STATIC_INLINE uint32_t LL_GetUID_Word2(void) +{ + return (uint32_t)(READ_REG(*((uint32_t *)(UID_BASE_ADDRESS + 8U)))); +} + +/** + * @brief Get Flash memory size + * @note This bitfield indicates the size of the device Flash memory expressed in + * Kbytes. As an example, 0x040 corresponds to 64 Kbytes. + * @retval FLASH_SIZE[15:0]: Flash memory size + */ +__STATIC_INLINE uint32_t LL_GetFlashSize(void) +{ + return (uint16_t)(READ_REG(*((uint32_t *)FLASHSIZE_BASE_ADDRESS))); +} + + +/** + * @} + */ + +/** @defgroup UTILS_LL_EF_DELAY DELAY + * @{ + */ + +/** + * @brief This function configures the Cortex-M SysTick source of the time base. + * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro) + * @note When a RTOS is used, it is recommended to avoid changing the SysTick + * configuration by calling this function, for a delay use rather osDelay RTOS service. + * @param Ticks Number of ticks + * @retval None + */ +__STATIC_INLINE void LL_InitTick(uint32_t HCLKFrequency, uint32_t Ticks) +{ + /* Configure the SysTick to have interrupt in 1ms time base */ + SysTick->LOAD = (uint32_t)((HCLKFrequency / Ticks) - 1UL); /* set reload register */ + SysTick->VAL = 0UL; /* Load the SysTick Counter Value */ + SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | + SysTick_CTRL_ENABLE_Msk; /* Enable the Systick Timer */ +} + +void LL_Init1msTick(uint32_t HCLKFrequency); +void LL_mDelay(uint32_t Delay); + +/** + * @} + */ + +/** @defgroup UTILS_EF_SYSTEM SYSTEM + * @{ + */ + +void LL_SetSystemCoreClock(uint32_t HCLKFrequency); +#if defined(FLASH_ACR_LATENCY) +ErrorStatus LL_SetFlashLatency(uint32_t Frequency); +#endif /* FLASH_ACR_LATENCY */ +ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +#if defined(RCC_PLL2_SUPPORT) +ErrorStatus LL_PLL_ConfigSystemClock_PLL2(uint32_t HSEFrequency, uint32_t HSEBypass, LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_PLLInitTypeDef *UTILS_PLL2InitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +#endif /* RCC_PLL2_SUPPORT */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_UTILS_H */ diff --git a/Drivers/STM32F1xx_HAL_Driver/LICENSE.txt b/Drivers/STM32F1xx_HAL_Driver/LICENSE.txt new file mode 100644 index 0000000..3edc4d1 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/LICENSE.txt @@ -0,0 +1,6 @@ +This software component is provided to you as part of a software package and +applicable license terms are in the Package_license file. If you received this +software component outside of a package or without applicable license terms, +the terms of the BSD-3-Clause license shall apply. +You may obtain a copy of the BSD-3-Clause at: +https://opensource.org/licenses/BSD-3-Clause diff --git a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c new file mode 100644 index 0000000..98d03e3 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c @@ -0,0 +1,312 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_dma.c + * @author MCD Application Team + * @brief DMA LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 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. + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_dma.h" +#include "stm32f1xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (DMA1) || defined (DMA2) + +/** @defgroup DMA_LL DMA + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup DMA_LL_Private_Macros + * @{ + */ +#define IS_LL_DMA_DIRECTION(__VALUE__) (((__VALUE__) == LL_DMA_DIRECTION_PERIPH_TO_MEMORY) || \ + ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) || \ + ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_MEMORY)) + +#define IS_LL_DMA_MODE(__VALUE__) (((__VALUE__) == LL_DMA_MODE_NORMAL) || \ + ((__VALUE__) == LL_DMA_MODE_CIRCULAR)) + +#define IS_LL_DMA_PERIPHINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_PERIPH_INCREMENT) || \ + ((__VALUE__) == LL_DMA_PERIPH_NOINCREMENT)) + +#define IS_LL_DMA_MEMORYINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_MEMORY_INCREMENT) || \ + ((__VALUE__) == LL_DMA_MEMORY_NOINCREMENT)) + +#define IS_LL_DMA_PERIPHDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_PDATAALIGN_BYTE) || \ + ((__VALUE__) == LL_DMA_PDATAALIGN_HALFWORD) || \ + ((__VALUE__) == LL_DMA_PDATAALIGN_WORD)) + +#define IS_LL_DMA_MEMORYDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_MDATAALIGN_BYTE) || \ + ((__VALUE__) == LL_DMA_MDATAALIGN_HALFWORD) || \ + ((__VALUE__) == LL_DMA_MDATAALIGN_WORD)) + +#define IS_LL_DMA_NBDATA(__VALUE__) ((__VALUE__) <= 0x0000FFFFU) + +#define IS_LL_DMA_PRIORITY(__VALUE__) (((__VALUE__) == LL_DMA_PRIORITY_LOW) || \ + ((__VALUE__) == LL_DMA_PRIORITY_MEDIUM) || \ + ((__VALUE__) == LL_DMA_PRIORITY_HIGH) || \ + ((__VALUE__) == LL_DMA_PRIORITY_VERYHIGH)) + +#if defined (DMA2) +#define IS_LL_DMA_ALL_CHANNEL_INSTANCE(INSTANCE, CHANNEL) ((((INSTANCE) == DMA1) && \ + (((CHANNEL) == LL_DMA_CHANNEL_1) || \ + ((CHANNEL) == LL_DMA_CHANNEL_2) || \ + ((CHANNEL) == LL_DMA_CHANNEL_3) || \ + ((CHANNEL) == LL_DMA_CHANNEL_4) || \ + ((CHANNEL) == LL_DMA_CHANNEL_5) || \ + ((CHANNEL) == LL_DMA_CHANNEL_6) || \ + ((CHANNEL) == LL_DMA_CHANNEL_7))) || \ + (((INSTANCE) == DMA2) && \ + (((CHANNEL) == LL_DMA_CHANNEL_1) || \ + ((CHANNEL) == LL_DMA_CHANNEL_2) || \ + ((CHANNEL) == LL_DMA_CHANNEL_3) || \ + ((CHANNEL) == LL_DMA_CHANNEL_4) || \ + ((CHANNEL) == LL_DMA_CHANNEL_5)))) +#else +#define IS_LL_DMA_ALL_CHANNEL_INSTANCE(INSTANCE, CHANNEL) ((((INSTANCE) == DMA1) && \ + (((CHANNEL) == LL_DMA_CHANNEL_1) || \ + ((CHANNEL) == LL_DMA_CHANNEL_2) || \ + ((CHANNEL) == LL_DMA_CHANNEL_3) || \ + ((CHANNEL) == LL_DMA_CHANNEL_4) || \ + ((CHANNEL) == LL_DMA_CHANNEL_5) || \ + ((CHANNEL) == LL_DMA_CHANNEL_6) || \ + ((CHANNEL) == LL_DMA_CHANNEL_7)))) +#endif +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup DMA_LL_Exported_Functions + * @{ + */ + +/** @addtogroup DMA_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the DMA registers to their default reset values. + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval An ErrorStatus enumeration value: + * - SUCCESS: DMA registers are de-initialized + * - ERROR: DMA registers are not de-initialized + */ +uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel) +{ + DMA_Channel_TypeDef *tmp = (DMA_Channel_TypeDef *)DMA1_Channel1; + ErrorStatus status = SUCCESS; + + /* Check the DMA Instance DMAx and Channel parameters*/ + assert_param(IS_LL_DMA_ALL_CHANNEL_INSTANCE(DMAx, Channel)); + + tmp = (DMA_Channel_TypeDef *)(__LL_DMA_GET_CHANNEL_INSTANCE(DMAx, Channel)); + + /* Disable the selected DMAx_Channely */ + CLEAR_BIT(tmp->CCR, DMA_CCR_EN); + + /* Reset DMAx_Channely control register */ + LL_DMA_WriteReg(tmp, CCR, 0U); + + /* Reset DMAx_Channely remaining bytes register */ + LL_DMA_WriteReg(tmp, CNDTR, 0U); + + /* Reset DMAx_Channely peripheral address register */ + LL_DMA_WriteReg(tmp, CPAR, 0U); + + /* Reset DMAx_Channely memory address register */ + LL_DMA_WriteReg(tmp, CMAR, 0U); + + if (Channel == LL_DMA_CHANNEL_1) + { + /* Reset interrupt pending bits for DMAx Channel1 */ + LL_DMA_ClearFlag_GI1(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_2) + { + /* Reset interrupt pending bits for DMAx Channel2 */ + LL_DMA_ClearFlag_GI2(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_3) + { + /* Reset interrupt pending bits for DMAx Channel3 */ + LL_DMA_ClearFlag_GI3(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_4) + { + /* Reset interrupt pending bits for DMAx Channel4 */ + LL_DMA_ClearFlag_GI4(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_5) + { + /* Reset interrupt pending bits for DMAx Channel5 */ + LL_DMA_ClearFlag_GI5(DMAx); + } + + else if (Channel == LL_DMA_CHANNEL_6) + { + /* Reset interrupt pending bits for DMAx Channel6 */ + LL_DMA_ClearFlag_GI6(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_7) + { + /* Reset interrupt pending bits for DMAx Channel7 */ + LL_DMA_ClearFlag_GI7(DMAx); + } + else + { + status = ERROR; + } + + return status; +} + +/** + * @brief Initialize the DMA registers according to the specified parameters in DMA_InitStruct. + * @note To convert DMAx_Channely Instance to DMAx Instance and Channely, use helper macros : + * @arg @ref __LL_DMA_GET_INSTANCE + * @arg @ref __LL_DMA_GET_CHANNEL + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param DMA_InitStruct pointer to a @ref LL_DMA_InitTypeDef structure. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: DMA registers are initialized + * - ERROR: Not applicable + */ +uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct) +{ + /* Check the DMA Instance DMAx and Channel parameters*/ + assert_param(IS_LL_DMA_ALL_CHANNEL_INSTANCE(DMAx, Channel)); + + /* Check the DMA parameters from DMA_InitStruct */ + assert_param(IS_LL_DMA_DIRECTION(DMA_InitStruct->Direction)); + assert_param(IS_LL_DMA_MODE(DMA_InitStruct->Mode)); + assert_param(IS_LL_DMA_PERIPHINCMODE(DMA_InitStruct->PeriphOrM2MSrcIncMode)); + assert_param(IS_LL_DMA_MEMORYINCMODE(DMA_InitStruct->MemoryOrM2MDstIncMode)); + assert_param(IS_LL_DMA_PERIPHDATASIZE(DMA_InitStruct->PeriphOrM2MSrcDataSize)); + assert_param(IS_LL_DMA_MEMORYDATASIZE(DMA_InitStruct->MemoryOrM2MDstDataSize)); + assert_param(IS_LL_DMA_NBDATA(DMA_InitStruct->NbData)); + assert_param(IS_LL_DMA_PRIORITY(DMA_InitStruct->Priority)); + + /*---------------------------- DMAx CCR Configuration ------------------------ + * Configure DMAx_Channely: data transfer direction, data transfer mode, + * peripheral and memory increment mode, + * data size alignment and priority level with parameters : + * - Direction: DMA_CCR_DIR and DMA_CCR_MEM2MEM bits + * - Mode: DMA_CCR_CIRC bit + * - PeriphOrM2MSrcIncMode: DMA_CCR_PINC bit + * - MemoryOrM2MDstIncMode: DMA_CCR_MINC bit + * - PeriphOrM2MSrcDataSize: DMA_CCR_PSIZE[1:0] bits + * - MemoryOrM2MDstDataSize: DMA_CCR_MSIZE[1:0] bits + * - Priority: DMA_CCR_PL[1:0] bits + */ + LL_DMA_ConfigTransfer(DMAx, Channel, DMA_InitStruct->Direction | \ + DMA_InitStruct->Mode | \ + DMA_InitStruct->PeriphOrM2MSrcIncMode | \ + DMA_InitStruct->MemoryOrM2MDstIncMode | \ + DMA_InitStruct->PeriphOrM2MSrcDataSize | \ + DMA_InitStruct->MemoryOrM2MDstDataSize | \ + DMA_InitStruct->Priority); + + /*-------------------------- DMAx CMAR Configuration ------------------------- + * Configure the memory or destination base address with parameter : + * - MemoryOrM2MDstAddress: DMA_CMAR_MA[31:0] bits + */ + LL_DMA_SetMemoryAddress(DMAx, Channel, DMA_InitStruct->MemoryOrM2MDstAddress); + + /*-------------------------- DMAx CPAR Configuration ------------------------- + * Configure the peripheral or source base address with parameter : + * - PeriphOrM2MSrcAddress: DMA_CPAR_PA[31:0] bits + */ + LL_DMA_SetPeriphAddress(DMAx, Channel, DMA_InitStruct->PeriphOrM2MSrcAddress); + + /*--------------------------- DMAx CNDTR Configuration ----------------------- + * Configure the peripheral base address with parameter : + * - NbData: DMA_CNDTR_NDT[15:0] bits + */ + LL_DMA_SetDataLength(DMAx, Channel, DMA_InitStruct->NbData); + + return SUCCESS; +} + +/** + * @brief Set each @ref LL_DMA_InitTypeDef field to default value. + * @param DMA_InitStruct Pointer to a @ref LL_DMA_InitTypeDef structure. + * @retval None + */ +void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct) +{ + /* Set DMA_InitStruct fields to default values */ + DMA_InitStruct->PeriphOrM2MSrcAddress = 0x00000000U; + DMA_InitStruct->MemoryOrM2MDstAddress = 0x00000000U; + DMA_InitStruct->Direction = LL_DMA_DIRECTION_PERIPH_TO_MEMORY; + DMA_InitStruct->Mode = LL_DMA_MODE_NORMAL; + DMA_InitStruct->PeriphOrM2MSrcIncMode = LL_DMA_PERIPH_NOINCREMENT; + DMA_InitStruct->MemoryOrM2MDstIncMode = LL_DMA_MEMORY_NOINCREMENT; + DMA_InitStruct->PeriphOrM2MSrcDataSize = LL_DMA_PDATAALIGN_BYTE; + DMA_InitStruct->MemoryOrM2MDstDataSize = LL_DMA_MDATAALIGN_BYTE; + DMA_InitStruct->NbData = 0x00000000U; + DMA_InitStruct->Priority = LL_DMA_PRIORITY_LOW; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMA1 || DMA2 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c new file mode 100644 index 0000000..fe19ca1 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c @@ -0,0 +1,213 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_exti.c + * @author MCD Application Team + * @brief EXTI LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 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. + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_exti.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (EXTI) + +/** @defgroup EXTI_LL EXTI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup EXTI_LL_Private_Macros + * @{ + */ + +#define IS_LL_EXTI_LINE_0_31(__VALUE__) (((__VALUE__) & ~LL_EXTI_LINE_ALL_0_31) == 0x00000000U) + +#define IS_LL_EXTI_MODE(__VALUE__) (((__VALUE__) == LL_EXTI_MODE_IT) \ + || ((__VALUE__) == LL_EXTI_MODE_EVENT) \ + || ((__VALUE__) == LL_EXTI_MODE_IT_EVENT)) + + +#define IS_LL_EXTI_TRIGGER(__VALUE__) (((__VALUE__) == LL_EXTI_TRIGGER_NONE) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_RISING) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_FALLING) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_RISING_FALLING)) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup EXTI_LL_Exported_Functions + * @{ + */ + +/** @addtogroup EXTI_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the EXTI registers to their default reset values. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: EXTI registers are de-initialized + * - ERROR: not applicable + */ +uint32_t LL_EXTI_DeInit(void) +{ + /* Interrupt mask register set to default reset values */ + LL_EXTI_WriteReg(IMR, 0x00000000U); + /* Event mask register set to default reset values */ + LL_EXTI_WriteReg(EMR, 0x00000000U); + /* Rising Trigger selection register set to default reset values */ + LL_EXTI_WriteReg(RTSR, 0x00000000U); + /* Falling Trigger selection register set to default reset values */ + LL_EXTI_WriteReg(FTSR, 0x00000000U); + /* Software interrupt event register set to default reset values */ + LL_EXTI_WriteReg(SWIER, 0x00000000U); + /* Pending register clear */ + LL_EXTI_WriteReg(PR, 0x000FFFFFU); + + return SUCCESS; +} + +/** + * @brief Initialize the EXTI registers according to the specified parameters in EXTI_InitStruct. + * @param EXTI_InitStruct pointer to a @ref LL_EXTI_InitTypeDef structure. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: EXTI registers are initialized + * - ERROR: not applicable + */ +uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct) +{ + ErrorStatus status = SUCCESS; + /* Check the parameters */ + assert_param(IS_LL_EXTI_LINE_0_31(EXTI_InitStruct->Line_0_31)); + assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->LineCommand)); + assert_param(IS_LL_EXTI_MODE(EXTI_InitStruct->Mode)); + + /* ENABLE LineCommand */ + if (EXTI_InitStruct->LineCommand != DISABLE) + { + assert_param(IS_LL_EXTI_TRIGGER(EXTI_InitStruct->Trigger)); + + /* Configure EXTI Lines in range from 0 to 31 */ + if (EXTI_InitStruct->Line_0_31 != LL_EXTI_LINE_NONE) + { + switch (EXTI_InitStruct->Mode) + { + case LL_EXTI_MODE_IT: + /* First Disable Event on provided Lines */ + LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable IT on provided Lines */ + LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_MODE_EVENT: + /* First Disable IT on provided Lines */ + LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Event on provided Lines */ + LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_MODE_IT_EVENT: + /* Directly Enable IT & Event on provided Lines */ + LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + break; + default: + status = ERROR; + break; + } + if (EXTI_InitStruct->Trigger != LL_EXTI_TRIGGER_NONE) + { + switch (EXTI_InitStruct->Trigger) + { + case LL_EXTI_TRIGGER_RISING: + /* First Disable Falling Trigger on provided Lines */ + LL_EXTI_DisableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Rising Trigger on provided Lines */ + LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_TRIGGER_FALLING: + /* First Disable Rising Trigger on provided Lines */ + LL_EXTI_DisableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Falling Trigger on provided Lines */ + LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_TRIGGER_RISING_FALLING: + LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + default: + status = ERROR; + break; + } + } + } + } + /* DISABLE LineCommand */ + else + { + /* De-configure EXTI Lines in range from 0 to 31 */ + LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31); + } + return status; +} + +/** + * @brief Set each @ref LL_EXTI_InitTypeDef field to default value. + * @param EXTI_InitStruct Pointer to a @ref LL_EXTI_InitTypeDef structure. + * @retval None + */ +void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct) +{ + EXTI_InitStruct->Line_0_31 = LL_EXTI_LINE_NONE; + EXTI_InitStruct->LineCommand = DISABLE; + EXTI_InitStruct->Mode = LL_EXTI_MODE_IT; + EXTI_InitStruct->Trigger = LL_EXTI_TRIGGER_FALLING; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (EXTI) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c new file mode 100644 index 0000000..e8e0534 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c @@ -0,0 +1,256 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_gpio.c + * @author MCD Application Team + * @brief GPIO LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 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. + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_gpio.h" +#include "stm32f1xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) + +/** @addtogroup GPIO_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup GPIO_LL_Private_Macros + * @{ + */ + +#define IS_LL_GPIO_PIN(__VALUE__) ((((__VALUE__) & LL_GPIO_PIN_ALL)!= 0u) &&\ + (((__VALUE__) & (~LL_GPIO_PIN_ALL))== 0u)) + +#define IS_LL_GPIO_MODE(__VALUE__) (((__VALUE__) == LL_GPIO_MODE_ANALOG) ||\ + ((__VALUE__) == LL_GPIO_MODE_FLOATING) ||\ + ((__VALUE__) == LL_GPIO_MODE_INPUT) ||\ + ((__VALUE__) == LL_GPIO_MODE_OUTPUT) ||\ + ((__VALUE__) == LL_GPIO_MODE_ALTERNATE)) + +#define IS_LL_GPIO_SPEED(__VALUE__) (((__VALUE__) == LL_GPIO_SPEED_FREQ_LOW) ||\ + ((__VALUE__) == LL_GPIO_SPEED_FREQ_MEDIUM) ||\ + ((__VALUE__) == LL_GPIO_SPEED_FREQ_HIGH)) + +#define IS_LL_GPIO_OUTPUT_TYPE(__VALUE__) (((__VALUE__) == LL_GPIO_OUTPUT_PUSHPULL) ||\ + ((__VALUE__) == LL_GPIO_OUTPUT_OPENDRAIN)) + +#define IS_LL_GPIO_PULL(__VALUE__) (((__VALUE__) == LL_GPIO_PULL_DOWN) ||\ + ((__VALUE__) == LL_GPIO_PULL_UP)) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup GPIO_LL_Exported_Functions + * @{ + */ + +/** @addtogroup GPIO_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize GPIO registers (Registers restored to their default values). + * @param GPIOx GPIO Port + * @retval An ErrorStatus enumeration value: + * - SUCCESS: GPIO registers are de-initialized + * - ERROR: Wrong GPIO Port + */ +ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx) +{ + ErrorStatus status = SUCCESS; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + + /* Force and Release reset on clock of GPIOx Port */ + if (GPIOx == GPIOA) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOA); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOA); + } + else if (GPIOx == GPIOB) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOB); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOB); + } + else if (GPIOx == GPIOC) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOC); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOC); + } + else if (GPIOx == GPIOD) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOD); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOD); + } +#if defined(GPIOE) + else if (GPIOx == GPIOE) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOE); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOE); + } +#endif +#if defined(GPIOF) + else if (GPIOx == GPIOF) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOF); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOF); + } +#endif +#if defined(GPIOG) + else if (GPIOx == GPIOG) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOG); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOG); + } +#endif + else + { + status = ERROR; + } + + return (status); +} + +/** + * @brief Initialize GPIO registers according to the specified parameters in GPIO_InitStruct. + * @param GPIOx GPIO Port + * @param GPIO_InitStruct: pointer to a @ref LL_GPIO_InitTypeDef structure + * that contains the configuration information for the specified GPIO peripheral. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: GPIO registers are initialized according to GPIO_InitStruct content + * - ERROR: Not applicable + */ +ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct) +{ + uint32_t pinmask; + uint32_t pinpos; + uint32_t currentpin; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_LL_GPIO_PIN(GPIO_InitStruct->Pin)); + + /* ------------------------- Configure the port pins ---------------- */ + /* Initialize pinpos on first pin set */ + + pinmask = ((GPIO_InitStruct->Pin) << GPIO_PIN_MASK_POS) >> GPIO_PIN_NB; + pinpos = POSITION_VAL(pinmask); + + /* Configure the port pins */ + while ((pinmask >> pinpos) != 0u) + { + /* skip if bit is not set */ + if ((pinmask & (1u << pinpos)) != 0u) + { + /* Get current io position */ + if (pinpos < GPIO_PIN_MASK_POS) + { + currentpin = (0x00000101uL << pinpos); + } + else + { + currentpin = ((0x00010001u << (pinpos - GPIO_PIN_MASK_POS)) | 0x04000000u); + } + + if (GPIO_InitStruct->Mode == LL_GPIO_MODE_INPUT) + { + /* Check The Pull parameter */ + assert_param(IS_LL_GPIO_PULL(GPIO_InitStruct->Pull)); + + /* Pull-up Pull-down resistor configuration*/ + LL_GPIO_SetPinPull(GPIOx, currentpin, GPIO_InitStruct->Pull); + } + + /* Check Pin Mode parameters */ + assert_param(IS_LL_GPIO_MODE(GPIO_InitStruct->Mode)); + + /* Pin Mode configuration */ + LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode); + + if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE)) + { + /* Check speed and Output mode parameters */ + assert_param(IS_LL_GPIO_SPEED(GPIO_InitStruct->Speed)); + assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType)); + + /* Speed mode configuration */ + LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed); + + /* Output mode configuration*/ + LL_GPIO_SetPinOutputType(GPIOx, currentpin, GPIO_InitStruct->OutputType); + } + } + pinpos++; + } + return (SUCCESS); +} + +/** + * @brief Set each @ref LL_GPIO_InitTypeDef field to default value. + * @param GPIO_InitStruct: pointer to a @ref LL_GPIO_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ + +void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct) +{ + /* Reset GPIO init structure parameters values */ + GPIO_InitStruct->Pin = LL_GPIO_PIN_ALL; + GPIO_InitStruct->Mode = LL_GPIO_MODE_FLOATING; + GPIO_InitStruct->Speed = LL_GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct->OutputType = LL_GPIO_OUTPUT_OPENDRAIN; + GPIO_InitStruct->Pull = LL_GPIO_PULL_DOWN; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c new file mode 100644 index 0000000..3cf8846 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c @@ -0,0 +1,83 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_pwr.c + * @author MCD Application Team + * @brief PWR LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 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. + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_pwr.h" +#include "stm32f1xx_ll_bus.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(PWR) + +/** @defgroup PWR_LL PWR + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PWR_LL_Exported_Functions + * @{ + */ + +/** @addtogroup PWR_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the PWR registers to their default reset values. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: PWR registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_PWR_DeInit(void) +{ + /* Force reset of PWR clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_PWR); + + /* Release reset of PWR clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_PWR); + + return SUCCESS; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined(PWR) */ +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ diff --git a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c new file mode 100644 index 0000000..9d46678 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c @@ -0,0 +1,471 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_rcc.c + * @author MCD Application Team + * @brief RCC LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 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. + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_rcc.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup RCC_LL RCC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup RCC_LL_Private_Macros + * @{ + */ +#if defined(RCC_PLLI2S_SUPPORT) +#define IS_LL_RCC_I2S_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_I2S2_CLKSOURCE) \ + || ((__VALUE__) == LL_RCC_I2S3_CLKSOURCE)) +#endif /* RCC_PLLI2S_SUPPORT */ + +#if defined(USB) || defined(USB_OTG_FS) +#define IS_LL_RCC_USB_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_USB_CLKSOURCE)) +#endif /* USB */ + +#define IS_LL_RCC_ADC_CLKSOURCE(__VALUE__) (((__VALUE__) == LL_RCC_ADC_CLKSOURCE)) +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup RCC_LL_Private_Functions RCC Private functions + * @{ + */ +uint32_t RCC_GetSystemClockFreq(void); +uint32_t RCC_GetHCLKClockFreq(uint32_t SYSCLK_Frequency); +uint32_t RCC_GetPCLK1ClockFreq(uint32_t HCLK_Frequency); +uint32_t RCC_GetPCLK2ClockFreq(uint32_t HCLK_Frequency); +uint32_t RCC_PLL_GetFreqDomain_SYS(void); +#if defined(RCC_PLLI2S_SUPPORT) +uint32_t RCC_PLLI2S_GetFreqDomain_I2S(void); +#endif /* RCC_PLLI2S_SUPPORT */ +#if defined(RCC_PLL2_SUPPORT) +uint32_t RCC_PLL2_GetFreqClockFreq(void); +#endif /* RCC_PLL2_SUPPORT */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup RCC_LL_Exported_Functions + * @{ + */ + +/** @addtogroup RCC_LL_EF_Init + * @{ + */ + +/** + * @brief Reset the RCC clock configuration to the default reset state. + * @note The default reset state of the clock configuration is given below: + * - HSI ON and used as system clock source + * - HSE PLL, PLL2 & PLL3 are OFF + * - AHB, APB1 and APB2 prescaler set to 1. + * - CSS, MCO OFF + * - All interrupts disabled + * @note This function doesn't modify the configuration of the + * - Peripheral clocks + * - LSI, LSE and RTC clocks + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RCC registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_RCC_DeInit(void) +{ + /* Set HSION bit */ + LL_RCC_HSI_Enable(); + + /* Wait for HSI READY bit */ + while (LL_RCC_HSI_IsReady() != 1U) + {} + + /* Configure HSI as system clock source */ + LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_HSI); + + /* Wait till clock switch is ready */ + while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_HSI) + {} + + /* Reset PLLON bit */ + CLEAR_BIT(RCC->CR, RCC_CR_PLLON); + + /* Wait for PLL READY bit to be reset */ + while (LL_RCC_PLL_IsReady() != 0U) + {} + + /* Reset CFGR register */ + LL_RCC_WriteReg(CFGR, 0x00000000U); + + /* Reset HSEON, HSEBYP & CSSON bits */ + CLEAR_BIT(RCC->CR, (RCC_CR_CSSON | RCC_CR_HSEON | RCC_CR_HSEBYP)); + +#if defined(RCC_CR_PLL2ON) + /* Reset PLL2ON bit */ + CLEAR_BIT(RCC->CR, RCC_CR_PLL2ON); +#endif /* RCC_CR_PLL2ON */ + +#if defined(RCC_CR_PLL3ON) + /* Reset PLL3ON bit */ + CLEAR_BIT(RCC->CR, RCC_CR_PLL3ON); +#endif /* RCC_CR_PLL3ON */ + + /* Set HSITRIM bits to the reset value */ + LL_RCC_HSI_SetCalibTrimming(0x10U); + +#if defined(RCC_CFGR2_PREDIV1) + /* Reset CFGR2 register */ + LL_RCC_WriteReg(CFGR2, 0x00000000U); +#endif /* RCC_CFGR2_PREDIV1 */ + + /* Disable all interrupts */ + LL_RCC_WriteReg(CIR, 0x00000000U); + + /* Clear reset flags */ + LL_RCC_ClearResetFlags(); + + return SUCCESS; +} + +/** + * @} + */ + +/** @addtogroup RCC_LL_EF_Get_Freq + * @brief Return the frequencies of different on chip clocks; System, AHB, APB1 and APB2 buses clocks + * and different peripheral clocks available on the device. + * @note If SYSCLK source is HSI, function returns values based on HSI_VALUE(**) + * @note If SYSCLK source is HSE, function returns values based on HSE_VALUE(***) + * @note If SYSCLK source is PLL, function returns values based on + * HSI_VALUE(**) or HSE_VALUE(***) multiplied/divided by the PLL factors. + * @note (**) HSI_VALUE is a defined constant but the real value may vary + * depending on the variations in voltage and temperature. + * @note (***) HSE_VALUE is a defined constant, user has to ensure that + * HSE_VALUE is same as the real frequency of the crystal used. + * Otherwise, this function may have wrong result. + * @note The result of this function could be incorrect when using fractional + * value for HSE crystal. + * @note This function can be used by the user application to compute the + * baud-rate for the communication peripherals or configure other parameters. + * @{ + */ + +/** + * @brief Return the frequencies of different on chip clocks; System, AHB, APB1 and APB2 buses clocks + * @note Each time SYSCLK, HCLK, PCLK1 and/or PCLK2 clock changes, this function + * must be called to update structure fields. Otherwise, any + * configuration based on this function will be incorrect. + * @param RCC_Clocks pointer to a @ref LL_RCC_ClocksTypeDef structure which will hold the clocks frequencies + * @retval None + */ +void LL_RCC_GetSystemClocksFreq(LL_RCC_ClocksTypeDef *RCC_Clocks) +{ + /* Get SYSCLK frequency */ + RCC_Clocks->SYSCLK_Frequency = RCC_GetSystemClockFreq(); + + /* HCLK clock frequency */ + RCC_Clocks->HCLK_Frequency = RCC_GetHCLKClockFreq(RCC_Clocks->SYSCLK_Frequency); + + /* PCLK1 clock frequency */ + RCC_Clocks->PCLK1_Frequency = RCC_GetPCLK1ClockFreq(RCC_Clocks->HCLK_Frequency); + + /* PCLK2 clock frequency */ + RCC_Clocks->PCLK2_Frequency = RCC_GetPCLK2ClockFreq(RCC_Clocks->HCLK_Frequency); +} + +#if defined(RCC_CFGR2_I2S2SRC) +/** + * @brief Return I2Sx clock frequency + * @param I2SxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_I2S2_CLKSOURCE + * @arg @ref LL_RCC_I2S3_CLKSOURCE + * @retval I2S clock frequency (in Hz) + */ +uint32_t LL_RCC_GetI2SClockFreq(uint32_t I2SxSource) +{ + uint32_t i2s_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_I2S_CLKSOURCE(I2SxSource)); + + /* I2S1CLK clock frequency */ + switch (LL_RCC_GetI2SClockSource(I2SxSource)) + { + case LL_RCC_I2S2_CLKSOURCE_SYSCLK: /*!< System clock selected as I2S clock source */ + case LL_RCC_I2S3_CLKSOURCE_SYSCLK: + i2s_frequency = RCC_GetSystemClockFreq(); + break; + + case LL_RCC_I2S2_CLKSOURCE_PLLI2S_VCO: /*!< PLLI2S oscillator clock selected as I2S clock source */ + case LL_RCC_I2S3_CLKSOURCE_PLLI2S_VCO: + default: + i2s_frequency = RCC_PLLI2S_GetFreqDomain_I2S() * 2U; + break; + } + + return i2s_frequency; +} +#endif /* RCC_CFGR2_I2S2SRC */ + +#if defined(USB) || defined(USB_OTG_FS) +/** + * @brief Return USBx clock frequency + * @param USBxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_USB_CLKSOURCE + * @retval USB clock frequency (in Hz) + * @arg @ref LL_RCC_PERIPH_FREQUENCY_NO indicates that oscillator (HSI), HSE or PLL is not ready + */ +uint32_t LL_RCC_GetUSBClockFreq(uint32_t USBxSource) +{ + uint32_t usb_frequency = LL_RCC_PERIPH_FREQUENCY_NO; + + /* Check parameter */ + assert_param(IS_LL_RCC_USB_CLKSOURCE(USBxSource)); + + /* USBCLK clock frequency */ + switch (LL_RCC_GetUSBClockSource(USBxSource)) + { +#if defined(RCC_CFGR_USBPRE) + case LL_RCC_USB_CLKSOURCE_PLL: /* PLL clock used as USB clock source */ + if (LL_RCC_PLL_IsReady()) + { + usb_frequency = RCC_PLL_GetFreqDomain_SYS(); + } + break; + + case LL_RCC_USB_CLKSOURCE_PLL_DIV_1_5: /* PLL clock divided by 1.5 used as USB clock source */ + default: + if (LL_RCC_PLL_IsReady()) + { + usb_frequency = (RCC_PLL_GetFreqDomain_SYS() * 3U) / 2U; + } + break; +#endif /* RCC_CFGR_USBPRE */ +#if defined(RCC_CFGR_OTGFSPRE) + /* USBCLK = PLLVCO/2 + = (2 x PLLCLK) / 2 + = PLLCLK */ + case LL_RCC_USB_CLKSOURCE_PLL_DIV_2: /* PLL clock used as USB clock source */ + if (LL_RCC_PLL_IsReady()) + { + usb_frequency = RCC_PLL_GetFreqDomain_SYS(); + } + break; + + /* USBCLK = PLLVCO/3 + = (2 x PLLCLK) / 3 */ + case LL_RCC_USB_CLKSOURCE_PLL_DIV_3: /* PLL clock divided by 3 used as USB clock source */ + default: + if (LL_RCC_PLL_IsReady()) + { + usb_frequency = (RCC_PLL_GetFreqDomain_SYS() * 2U) / 3U; + } + break; +#endif /* RCC_CFGR_OTGFSPRE */ + } + + return usb_frequency; +} +#endif /* USB */ + +/** + * @brief Return ADCx clock frequency + * @param ADCxSource This parameter can be one of the following values: + * @arg @ref LL_RCC_ADC_CLKSOURCE + * @retval ADC clock frequency (in Hz) + */ +uint32_t LL_RCC_GetADCClockFreq(uint32_t ADCxSource) +{ + uint32_t adc_prescaler = 0U; + uint32_t adc_frequency = 0U; + + /* Check parameter */ + assert_param(IS_LL_RCC_ADC_CLKSOURCE(ADCxSource)); + + /* Get ADC prescaler */ + adc_prescaler = LL_RCC_GetADCClockSource(ADCxSource); + + /* ADC frequency = PCLK2 frequency / ADC prescaler (2, 4, 6 or 8) */ + adc_frequency = RCC_GetPCLK2ClockFreq(RCC_GetHCLKClockFreq(RCC_GetSystemClockFreq())) + / (((adc_prescaler >> POSITION_VAL(ADCxSource)) + 1U) * 2U); + + return adc_frequency; +} + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup RCC_LL_Private_Functions + * @{ + */ + +/** + * @brief Return SYSTEM clock frequency + * @retval SYSTEM clock frequency (in Hz) + */ +uint32_t RCC_GetSystemClockFreq(void) +{ + uint32_t frequency = 0U; + + /* Get SYSCLK source -------------------------------------------------------*/ + switch (LL_RCC_GetSysClkSource()) + { + case LL_RCC_SYS_CLKSOURCE_STATUS_HSI: /* HSI used as system clock source */ + frequency = HSI_VALUE; + break; + + case LL_RCC_SYS_CLKSOURCE_STATUS_HSE: /* HSE used as system clock source */ + frequency = HSE_VALUE; + break; + + case LL_RCC_SYS_CLKSOURCE_STATUS_PLL: /* PLL used as system clock source */ + frequency = RCC_PLL_GetFreqDomain_SYS(); + break; + + default: + frequency = HSI_VALUE; + break; + } + + return frequency; +} + +/** + * @brief Return HCLK clock frequency + * @param SYSCLK_Frequency SYSCLK clock frequency + * @retval HCLK clock frequency (in Hz) + */ +uint32_t RCC_GetHCLKClockFreq(uint32_t SYSCLK_Frequency) +{ + /* HCLK clock frequency */ + return __LL_RCC_CALC_HCLK_FREQ(SYSCLK_Frequency, LL_RCC_GetAHBPrescaler()); +} + +/** + * @brief Return PCLK1 clock frequency + * @param HCLK_Frequency HCLK clock frequency + * @retval PCLK1 clock frequency (in Hz) + */ +uint32_t RCC_GetPCLK1ClockFreq(uint32_t HCLK_Frequency) +{ + /* PCLK1 clock frequency */ + return __LL_RCC_CALC_PCLK1_FREQ(HCLK_Frequency, LL_RCC_GetAPB1Prescaler()); +} + +/** + * @brief Return PCLK2 clock frequency + * @param HCLK_Frequency HCLK clock frequency + * @retval PCLK2 clock frequency (in Hz) + */ +uint32_t RCC_GetPCLK2ClockFreq(uint32_t HCLK_Frequency) +{ + /* PCLK2 clock frequency */ + return __LL_RCC_CALC_PCLK2_FREQ(HCLK_Frequency, LL_RCC_GetAPB2Prescaler()); +} + +/** + * @brief Return PLL clock frequency used for system domain + * @retval PLL clock frequency (in Hz) + */ +uint32_t RCC_PLL_GetFreqDomain_SYS(void) +{ + uint32_t pllinputfreq = 0U, pllsource = 0U; + + /* PLL_VCO = (HSE_VALUE, HSI_VALUE or PLL2 / PLL Predivider) * PLL Multiplicator */ + + /* Get PLL source */ + pllsource = LL_RCC_PLL_GetMainSource(); + + switch (pllsource) + { + case LL_RCC_PLLSOURCE_HSI_DIV_2: /* HSI used as PLL clock source */ + pllinputfreq = HSI_VALUE / 2U; + break; + + case LL_RCC_PLLSOURCE_HSE: /* HSE used as PLL clock source */ + pllinputfreq = HSE_VALUE / (LL_RCC_PLL_GetPrediv() + 1U); + break; + +#if defined(RCC_PLL2_SUPPORT) + case LL_RCC_PLLSOURCE_PLL2: /* PLL2 used as PLL clock source */ + pllinputfreq = RCC_PLL2_GetFreqClockFreq() / (LL_RCC_PLL_GetPrediv() + 1U); + break; +#endif /* RCC_PLL2_SUPPORT */ + + default: + pllinputfreq = HSI_VALUE / 2U; + break; + } + return __LL_RCC_CALC_PLLCLK_FREQ(pllinputfreq, LL_RCC_PLL_GetMultiplicator()); +} + +#if defined(RCC_PLL2_SUPPORT) +/** + * @brief Return PLL clock frequency used for system domain + * @retval PLL clock frequency (in Hz) + */ +uint32_t RCC_PLL2_GetFreqClockFreq(void) +{ + return __LL_RCC_CALC_PLL2CLK_FREQ(HSE_VALUE, LL_RCC_PLL2_GetMultiplicator(), LL_RCC_HSE_GetPrediv2()); +} +#endif /* RCC_PLL2_SUPPORT */ + +#if defined(RCC_PLLI2S_SUPPORT) +/** + * @brief Return PLL clock frequency used for system domain + * @retval PLL clock frequency (in Hz) + */ +uint32_t RCC_PLLI2S_GetFreqDomain_I2S(void) +{ + return __LL_RCC_CALC_PLLI2SCLK_FREQ(HSE_VALUE, LL_RCC_PLLI2S_GetMultiplicator(), LL_RCC_HSE_GetPrediv2()); +} +#endif /* RCC_PLLI2S_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RCC) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c new file mode 100644 index 0000000..6e01d0f --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c @@ -0,0 +1,1206 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_tim.c + * @author MCD Application Team + * @brief TIM LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 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. + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_tim.h" +#include "stm32f1xx_ll_bus.h" + +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM6) || defined (TIM7) || defined (TIM8) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM12) || defined (TIM13) || defined (TIM14) || defined (TIM15) || defined (TIM16) || defined (TIM17) + +/** @addtogroup TIM_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup TIM_LL_Private_Macros + * @{ + */ +#define IS_LL_TIM_COUNTERMODE(__VALUE__) (((__VALUE__) == LL_TIM_COUNTERMODE_UP) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_DOWN) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_UP) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_DOWN) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_UP_DOWN)) + +#define IS_LL_TIM_CLOCKDIVISION(__VALUE__) (((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV1) \ + || ((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV2) \ + || ((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV4)) + +#define IS_LL_TIM_OCMODE(__VALUE__) (((__VALUE__) == LL_TIM_OCMODE_FROZEN) \ + || ((__VALUE__) == LL_TIM_OCMODE_ACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_INACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_TOGGLE) \ + || ((__VALUE__) == LL_TIM_OCMODE_FORCED_INACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_FORCED_ACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_PWM1) \ + || ((__VALUE__) == LL_TIM_OCMODE_PWM2)) + +#define IS_LL_TIM_OCSTATE(__VALUE__) (((__VALUE__) == LL_TIM_OCSTATE_DISABLE) \ + || ((__VALUE__) == LL_TIM_OCSTATE_ENABLE)) + +#define IS_LL_TIM_OCPOLARITY(__VALUE__) (((__VALUE__) == LL_TIM_OCPOLARITY_HIGH) \ + || ((__VALUE__) == LL_TIM_OCPOLARITY_LOW)) + +#define IS_LL_TIM_OCIDLESTATE(__VALUE__) (((__VALUE__) == LL_TIM_OCIDLESTATE_LOW) \ + || ((__VALUE__) == LL_TIM_OCIDLESTATE_HIGH)) + +#define IS_LL_TIM_ACTIVEINPUT(__VALUE__) (((__VALUE__) == LL_TIM_ACTIVEINPUT_DIRECTTI) \ + || ((__VALUE__) == LL_TIM_ACTIVEINPUT_INDIRECTTI) \ + || ((__VALUE__) == LL_TIM_ACTIVEINPUT_TRC)) + +#define IS_LL_TIM_ICPSC(__VALUE__) (((__VALUE__) == LL_TIM_ICPSC_DIV1) \ + || ((__VALUE__) == LL_TIM_ICPSC_DIV2) \ + || ((__VALUE__) == LL_TIM_ICPSC_DIV4) \ + || ((__VALUE__) == LL_TIM_ICPSC_DIV8)) + +#define IS_LL_TIM_IC_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_IC_FILTER_FDIV1) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N2) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N4) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV2_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV2_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV4_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV4_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV8_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV8_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N5) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N5) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N8)) + +#define IS_LL_TIM_IC_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_IC_POLARITY_RISING) \ + || ((__VALUE__) == LL_TIM_IC_POLARITY_FALLING)) + +#define IS_LL_TIM_ENCODERMODE(__VALUE__) (((__VALUE__) == LL_TIM_ENCODERMODE_X2_TI1) \ + || ((__VALUE__) == LL_TIM_ENCODERMODE_X2_TI2) \ + || ((__VALUE__) == LL_TIM_ENCODERMODE_X4_TI12)) + +#define IS_LL_TIM_IC_POLARITY_ENCODER(__VALUE__) (((__VALUE__) == LL_TIM_IC_POLARITY_RISING) \ + || ((__VALUE__) == LL_TIM_IC_POLARITY_FALLING)) + +#define IS_LL_TIM_OSSR_STATE(__VALUE__) (((__VALUE__) == LL_TIM_OSSR_DISABLE) \ + || ((__VALUE__) == LL_TIM_OSSR_ENABLE)) + +#define IS_LL_TIM_OSSI_STATE(__VALUE__) (((__VALUE__) == LL_TIM_OSSI_DISABLE) \ + || ((__VALUE__) == LL_TIM_OSSI_ENABLE)) + +#define IS_LL_TIM_LOCK_LEVEL(__VALUE__) (((__VALUE__) == LL_TIM_LOCKLEVEL_OFF) \ + || ((__VALUE__) == LL_TIM_LOCKLEVEL_1) \ + || ((__VALUE__) == LL_TIM_LOCKLEVEL_2) \ + || ((__VALUE__) == LL_TIM_LOCKLEVEL_3)) + +#define IS_LL_TIM_BREAK_STATE(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_DISABLE) \ + || ((__VALUE__) == LL_TIM_BREAK_ENABLE)) + +#define IS_LL_TIM_BREAK_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_POLARITY_LOW) \ + || ((__VALUE__) == LL_TIM_BREAK_POLARITY_HIGH)) + +#define IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(__VALUE__) (((__VALUE__) == LL_TIM_AUTOMATICOUTPUT_DISABLE) \ + || ((__VALUE__) == LL_TIM_AUTOMATICOUTPUT_ENABLE)) +/** + * @} + */ + + +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup TIM_LL_Private_Functions TIM Private Functions + * @{ + */ +static ErrorStatus OC1Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC2Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC3Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC4Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus IC1Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +static ErrorStatus IC2Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +static ErrorStatus IC3Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +static ErrorStatus IC4Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup TIM_LL_Exported_Functions + * @{ + */ + +/** @addtogroup TIM_LL_EF_Init + * @{ + */ + +/** + * @brief Set TIMx registers to their reset values. + * @param TIMx Timer instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: invalid TIMx instance + */ +ErrorStatus LL_TIM_DeInit(const TIM_TypeDef *TIMx) +{ + ErrorStatus result = SUCCESS; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(TIMx)); + + if (TIMx == TIM2) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM2); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM2); + } +#if defined(TIM1) + else if (TIMx == TIM1) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM1); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM1); + } +#endif /* TIM1 */ +#if defined(TIM3) + else if (TIMx == TIM3) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM3); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM3); + } +#endif /* TIM3 */ +#if defined(TIM4) + else if (TIMx == TIM4) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM4); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM4); + } +#endif /* TIM4 */ +#if defined(TIM5) + else if (TIMx == TIM5) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM5); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM5); + } +#endif /* TIM5 */ +#if defined(TIM6) + else if (TIMx == TIM6) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM6); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM6); + } +#endif /* TIM6 */ +#if defined (TIM7) + else if (TIMx == TIM7) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM7); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM7); + } +#endif /* TIM7 */ +#if defined(TIM8) + else if (TIMx == TIM8) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM8); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM8); + } +#endif /* TIM8 */ +#if defined(TIM9) + else if (TIMx == TIM9) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM9); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM9); + } +#endif /* TIM9 */ +#if defined(TIM10) + else if (TIMx == TIM10) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM10); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM10); + } +#endif /* TIM10 */ +#if defined(TIM11) + else if (TIMx == TIM11) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM11); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM11); + } +#endif /* TIM11 */ +#if defined(TIM12) + else if (TIMx == TIM12) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM12); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM12); + } +#endif /* TIM12 */ +#if defined(TIM13) + else if (TIMx == TIM13) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM13); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM13); + } +#endif /* TIM13 */ +#if defined(TIM14) + else if (TIMx == TIM14) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM14); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM14); + } +#endif /* TIM14 */ +#if defined(TIM15) + else if (TIMx == TIM15) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM15); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM15); + } +#endif /* TIM15 */ +#if defined(TIM16) + else if (TIMx == TIM16) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM16); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM16); + } +#endif /* TIM16 */ +#if defined(TIM17) + else if (TIMx == TIM17) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM17); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM17); + } +#endif /* TIM17 */ + else + { + result = ERROR; + } + + return result; +} + +/** + * @brief Set the fields of the time base unit configuration data structure + * to their default values. + * @param TIM_InitStruct pointer to a @ref LL_TIM_InitTypeDef structure (time base unit configuration data structure) + * @retval None + */ +void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct) +{ + /* Set the default configuration */ + TIM_InitStruct->Prescaler = (uint16_t)0x0000; + TIM_InitStruct->CounterMode = LL_TIM_COUNTERMODE_UP; + TIM_InitStruct->Autoreload = 0xFFFFFFFFU; + TIM_InitStruct->ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + TIM_InitStruct->RepetitionCounter = 0x00000000U; +} + +/** + * @brief Configure the TIMx time base unit. + * @param TIMx Timer Instance + * @param TIM_InitStruct pointer to a @ref LL_TIM_InitTypeDef structure + * (TIMx time base unit configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, const LL_TIM_InitTypeDef *TIM_InitStruct) +{ + uint32_t tmpcr1; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_COUNTERMODE(TIM_InitStruct->CounterMode)); + assert_param(IS_LL_TIM_CLOCKDIVISION(TIM_InitStruct->ClockDivision)); + + tmpcr1 = LL_TIM_ReadReg(TIMx, CR1); + + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + { + /* Select the Counter Mode */ + MODIFY_REG(tmpcr1, (TIM_CR1_DIR | TIM_CR1_CMS), TIM_InitStruct->CounterMode); + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + { + /* Set the clock division */ + MODIFY_REG(tmpcr1, TIM_CR1_CKD, TIM_InitStruct->ClockDivision); + } + + /* Write to TIMx CR1 */ + LL_TIM_WriteReg(TIMx, CR1, tmpcr1); + + /* Set the Autoreload value */ + LL_TIM_SetAutoReload(TIMx, TIM_InitStruct->Autoreload); + + /* Set the Prescaler value */ + LL_TIM_SetPrescaler(TIMx, TIM_InitStruct->Prescaler); + + if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) + { + /* Set the Repetition Counter value */ + LL_TIM_SetRepetitionCounter(TIMx, TIM_InitStruct->RepetitionCounter); + } + + /* Generate an update event to reload the Prescaler + and the repetition counter value (if applicable) immediately */ + LL_TIM_GenerateEvent_UPDATE(TIMx); + + return SUCCESS; +} + +/** + * @brief Set the fields of the TIMx output channel configuration data + * structure to their default values. + * @param TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure + * (the output channel configuration data structure) + * @retval None + */ +void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct) +{ + /* Set the default configuration */ + TIM_OC_InitStruct->OCMode = LL_TIM_OCMODE_FROZEN; + TIM_OC_InitStruct->OCState = LL_TIM_OCSTATE_DISABLE; + TIM_OC_InitStruct->OCNState = LL_TIM_OCSTATE_DISABLE; + TIM_OC_InitStruct->CompareValue = 0x00000000U; + TIM_OC_InitStruct->OCPolarity = LL_TIM_OCPOLARITY_HIGH; + TIM_OC_InitStruct->OCNPolarity = LL_TIM_OCPOLARITY_HIGH; + TIM_OC_InitStruct->OCIdleState = LL_TIM_OCIDLESTATE_LOW; + TIM_OC_InitStruct->OCNIdleState = LL_TIM_OCIDLESTATE_LOW; +} + +/** + * @brief Configure the TIMx output channel. + * @param TIMx Timer Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure (TIMx output channel configuration + * data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx output channel is initialized + * - ERROR: TIMx output channel is not initialized + */ +ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct) +{ + ErrorStatus result = ERROR; + + switch (Channel) + { + case LL_TIM_CHANNEL_CH1: + result = OC1Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH2: + result = OC2Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH3: + result = OC3Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH4: + result = OC4Config(TIMx, TIM_OC_InitStruct); + break; + default: + break; + } + + return result; +} + +/** + * @brief Set the fields of the TIMx input channel configuration data + * structure to their default values. + * @param TIM_ICInitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (the input channel configuration + * data structure) + * @retval None + */ +void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Set the default configuration */ + TIM_ICInitStruct->ICPolarity = LL_TIM_IC_POLARITY_RISING; + TIM_ICInitStruct->ICActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + TIM_ICInitStruct->ICPrescaler = LL_TIM_ICPSC_DIV1; + TIM_ICInitStruct->ICFilter = LL_TIM_IC_FILTER_FDIV1; +} + +/** + * @brief Configure the TIMx input channel. + * @param TIMx Timer Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param TIM_IC_InitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (TIMx input channel configuration data + * structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx output channel is initialized + * - ERROR: TIMx output channel is not initialized + */ +ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, const LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct) +{ + ErrorStatus result = ERROR; + + switch (Channel) + { + case LL_TIM_CHANNEL_CH1: + result = IC1Config(TIMx, TIM_IC_InitStruct); + break; + case LL_TIM_CHANNEL_CH2: + result = IC2Config(TIMx, TIM_IC_InitStruct); + break; + case LL_TIM_CHANNEL_CH3: + result = IC3Config(TIMx, TIM_IC_InitStruct); + break; + case LL_TIM_CHANNEL_CH4: + result = IC4Config(TIMx, TIM_IC_InitStruct); + break; + default: + break; + } + + return result; +} + +/** + * @brief Fills each TIM_EncoderInitStruct field with its default value + * @param TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (encoder interface + * configuration data structure) + * @retval None + */ +void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct) +{ + /* Set the default configuration */ + TIM_EncoderInitStruct->EncoderMode = LL_TIM_ENCODERMODE_X2_TI1; + TIM_EncoderInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING; + TIM_EncoderInitStruct->IC1ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + TIM_EncoderInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + TIM_EncoderInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + TIM_EncoderInitStruct->IC2Polarity = LL_TIM_IC_POLARITY_RISING; + TIM_EncoderInitStruct->IC2ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + TIM_EncoderInitStruct->IC2Prescaler = LL_TIM_ICPSC_DIV1; + TIM_EncoderInitStruct->IC2Filter = LL_TIM_IC_FILTER_FDIV1; +} + +/** + * @brief Configure the encoder interface of the timer instance. + * @param TIMx Timer Instance + * @param TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (TIMx encoder interface + * configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, const LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_ENCODERMODE(TIM_EncoderInitStruct->EncoderMode)); + assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC1Polarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC1ActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC1Prescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC1Filter)); + assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC2Polarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC2ActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC2Prescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC2Filter)); + + /* Disable the CC1 and CC2: Reset the CC1E and CC2E Bits */ + TIMx->CCER &= (uint32_t)~(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Configure TI1 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1ActiveInput >> 16U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Filter >> 16U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Prescaler >> 16U); + + /* Configure TI2 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC2S | TIM_CCMR1_IC2F | TIM_CCMR1_IC2PSC); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2ActiveInput >> 8U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Filter >> 8U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Prescaler >> 8U); + + /* Set TI1 and TI2 polarity and enable TI1 and TI2 */ + tmpccer &= (uint32_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP | TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC1Polarity); + tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC2Polarity << 4U); + tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Set encoder mode */ + LL_TIM_SetEncoderMode(TIMx, TIM_EncoderInitStruct->EncoderMode); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Set the fields of the TIMx Hall sensor interface configuration data + * structure to their default values. + * @param TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (HALL sensor interface + * configuration data structure) + * @retval None + */ +void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct) +{ + /* Set the default configuration */ + TIM_HallSensorInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING; + TIM_HallSensorInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + TIM_HallSensorInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + TIM_HallSensorInitStruct->CommutationDelay = 0U; +} + +/** + * @brief Configure the Hall sensor interface of the timer instance. + * @note TIMx CH1, CH2 and CH3 inputs connected through a XOR + * to the TI1 input channel + * @note TIMx slave mode controller is configured in reset mode. + Selected internal trigger is TI1F_ED. + * @note Channel 1 is configured as input, IC1 is mapped on TRC. + * @note Captured value stored in TIMx_CCR1 correspond to the time elapsed + * between 2 changes on the inputs. It gives information about motor speed. + * @note Channel 2 is configured in output PWM 2 mode. + * @note Compare value stored in TIMx_CCR2 corresponds to the commutation delay. + * @note OC2REF is selected as trigger output on TRGO. + * @param TIMx Timer Instance + * @param TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (TIMx HALL sensor + * interface configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, const LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct) +{ + uint32_t tmpcr2; + uint32_t tmpccmr1; + uint32_t tmpccer; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_HallSensorInitStruct->IC1Polarity)); + assert_param(IS_LL_TIM_ICPSC(TIM_HallSensorInitStruct->IC1Prescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_HallSensorInitStruct->IC1Filter)); + + /* Disable the CC1 and CC2: Reset the CC1E and CC2E Bits */ + TIMx->CCER &= (uint32_t)~(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx SMCR register value */ + tmpsmcr = LL_TIM_ReadReg(TIMx, SMCR); + + /* Connect TIMx_CH1, CH2 and CH3 pins to the TI1 input */ + tmpcr2 |= TIM_CR2_TI1S; + + /* OC2REF signal is used as trigger output (TRGO) */ + tmpcr2 |= LL_TIM_TRGO_OC2REF; + + /* Configure the slave mode controller */ + tmpsmcr &= (uint32_t)~(TIM_SMCR_TS | TIM_SMCR_SMS); + tmpsmcr |= LL_TIM_TS_TI1F_ED; + tmpsmcr |= LL_TIM_SLAVEMODE_RESET; + + /* Configure input channel 1 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC); + tmpccmr1 |= (uint32_t)(LL_TIM_ACTIVEINPUT_TRC >> 16U); + tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Filter >> 16U); + tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Prescaler >> 16U); + + /* Configure input channel 2 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_OC2M | TIM_CCMR1_OC2FE | TIM_CCMR1_OC2PE | TIM_CCMR1_OC2CE); + tmpccmr1 |= (uint32_t)(LL_TIM_OCMODE_PWM2 << 8U); + + /* Set Channel 1 polarity and enable Channel 1 and Channel2 */ + tmpccer &= (uint32_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP | TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= (uint32_t)(TIM_HallSensorInitStruct->IC1Polarity); + tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx SMCR */ + LL_TIM_WriteReg(TIMx, SMCR, tmpsmcr); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + /* Write to TIMx CCR2 */ + LL_TIM_OC_SetCompareCH2(TIMx, TIM_HallSensorInitStruct->CommutationDelay); + + return SUCCESS; +} + +/** + * @brief Set the fields of the Break and Dead Time configuration data structure + * to their default values. + * @param TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead Time configuration + * data structure) + * @retval None + */ +void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct) +{ + /* Set the default configuration */ + TIM_BDTRInitStruct->OSSRState = LL_TIM_OSSR_DISABLE; + TIM_BDTRInitStruct->OSSIState = LL_TIM_OSSI_DISABLE; + TIM_BDTRInitStruct->LockLevel = LL_TIM_LOCKLEVEL_OFF; + TIM_BDTRInitStruct->DeadTime = (uint8_t)0x00; + TIM_BDTRInitStruct->BreakState = LL_TIM_BREAK_DISABLE; + TIM_BDTRInitStruct->BreakPolarity = LL_TIM_BREAK_POLARITY_LOW; + TIM_BDTRInitStruct->AutomaticOutput = LL_TIM_AUTOMATICOUTPUT_DISABLE; +} + +/** + * @brief Configure the Break and Dead Time feature of the timer instance. + * @note As the bits AOE, BKP, BKE, OSSR, OSSI and DTG[7:0] can be write-locked + * depending on the LOCK configuration, it can be necessary to configure all of + * them during the first write access to the TIMx_BDTR register. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @param TIMx Timer Instance + * @param TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead Time configuration + * data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Break and Dead Time is initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, const LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct) +{ + uint32_t tmpbdtr = 0; + + /* Check the parameters */ + assert_param(IS_TIM_BREAK_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OSSR_STATE(TIM_BDTRInitStruct->OSSRState)); + assert_param(IS_LL_TIM_OSSI_STATE(TIM_BDTRInitStruct->OSSIState)); + assert_param(IS_LL_TIM_LOCK_LEVEL(TIM_BDTRInitStruct->LockLevel)); + assert_param(IS_LL_TIM_BREAK_STATE(TIM_BDTRInitStruct->BreakState)); + assert_param(IS_LL_TIM_BREAK_POLARITY(TIM_BDTRInitStruct->BreakPolarity)); + assert_param(IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(TIM_BDTRInitStruct->AutomaticOutput)); + + /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State, + the OSSI State, the dead time value and the Automatic Output Enable Bit */ + + /* Set the BDTR bits */ + MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, TIM_BDTRInitStruct->DeadTime); + MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, TIM_BDTRInitStruct->LockLevel); + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, TIM_BDTRInitStruct->OSSIState); + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, TIM_BDTRInitStruct->OSSRState); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, TIM_BDTRInitStruct->BreakState); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, TIM_BDTRInitStruct->BreakPolarity); + MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, TIM_BDTRInitStruct->AutomaticOutput); + + /* Set TIMx_BDTR */ + LL_TIM_WriteReg(TIMx, BDTR, tmpbdtr); + + return SUCCESS; +} +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup TIM_LL_Private_Functions TIM Private Functions + * @brief Private functions + * @{ + */ +/** + * @brief Configure the TIMx output channel 1. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 1 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC1Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + + /* Disable the Channel 1: Reset the CC1E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC1E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr1, TIM_CCMR1_CC1S); + + /* Set the Output Compare Mode */ + MODIFY_REG(tmpccmr1, TIM_CCMR1_OC1M, TIM_OCInitStruct->OCMode); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC1P, TIM_OCInitStruct->OCPolarity); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC1E, TIM_OCInitStruct->OCState); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the complementary output Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC1NP, TIM_OCInitStruct->OCNPolarity << 2U); + + /* Set the complementary output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC1NE, TIM_OCInitStruct->OCNState << 2U); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS1, TIM_OCInitStruct->OCIdleState); + + /* Set the complementary output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS1N, TIM_OCInitStruct->OCNIdleState << 1U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH1(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 2. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 2 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC2Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + + /* Disable the Channel 2: Reset the CC2E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC2E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr1, TIM_CCMR1_CC2S); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr1, TIM_CCMR1_OC2M, TIM_OCInitStruct->OCMode << 8U); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC2P, TIM_OCInitStruct->OCPolarity << 4U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC2E, TIM_OCInitStruct->OCState << 4U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the complementary output Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC2NP, TIM_OCInitStruct->OCNPolarity << 6U); + + /* Set the complementary output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC2NE, TIM_OCInitStruct->OCNState << 6U); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS2, TIM_OCInitStruct->OCIdleState << 2U); + + /* Set the complementary output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS2N, TIM_OCInitStruct->OCNIdleState << 3U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH2(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 3. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 3 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC3Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + + /* Disable the Channel 3: Reset the CC3E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC3E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR2 register value */ + tmpccmr2 = LL_TIM_ReadReg(TIMx, CCMR2); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr2, TIM_CCMR2_CC3S); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr2, TIM_CCMR2_OC3M, TIM_OCInitStruct->OCMode); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC3P, TIM_OCInitStruct->OCPolarity << 8U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC3E, TIM_OCInitStruct->OCState << 8U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the complementary output Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC3NP, TIM_OCInitStruct->OCNPolarity << 10U); + + /* Set the complementary output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC3NE, TIM_OCInitStruct->OCNState << 10U); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS3, TIM_OCInitStruct->OCIdleState << 4U); + + /* Set the complementary output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS3N, TIM_OCInitStruct->OCNIdleState << 5U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR2 */ + LL_TIM_WriteReg(TIMx, CCMR2, tmpccmr2); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH3(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 4. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 4 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC4Config(TIM_TypeDef *TIMx, const LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + + /* Disable the Channel 4: Reset the CC4E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC4E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR2 register value */ + tmpccmr2 = LL_TIM_ReadReg(TIMx, CCMR2); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr2, TIM_CCMR2_CC4S); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr2, TIM_CCMR2_OC4M, TIM_OCInitStruct->OCMode << 8U); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC4P, TIM_OCInitStruct->OCPolarity << 12U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC4E, TIM_OCInitStruct->OCState << 12U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS4, TIM_OCInitStruct->OCIdleState << 6U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR2 */ + LL_TIM_WriteReg(TIMx, CCMR2, tmpccmr2); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH4(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + + +/** + * @brief Configure the TIMx input channel 1. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 1 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC1Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC1E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR1, + (TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 16U); + + /* Select the Polarity and set the CC1E Bit */ + MODIFY_REG(TIMx->CCER, + (TIM_CCER_CC1P | TIM_CCER_CC1NP), + (TIM_ICInitStruct->ICPolarity | TIM_CCER_CC1E)); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx input channel 2. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 2 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC2Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC2E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR1, + (TIM_CCMR1_CC2S | TIM_CCMR1_IC2F | TIM_CCMR1_IC2PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 8U); + + /* Select the Polarity and set the CC2E Bit */ + MODIFY_REG(TIMx->CCER, + (TIM_CCER_CC2P | TIM_CCER_CC2NP), + ((TIM_ICInitStruct->ICPolarity << 4U) | TIM_CCER_CC2E)); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx input channel 3. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 3 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC3Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 3: Reset the CC3E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC3E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR2, + (TIM_CCMR2_CC3S | TIM_CCMR2_IC3F | TIM_CCMR2_IC3PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 16U); + + /* Select the Polarity and set the CC3E Bit */ + MODIFY_REG(TIMx->CCER, + (TIM_CCER_CC3P | TIM_CCER_CC3NP), + ((TIM_ICInitStruct->ICPolarity << 8U) | TIM_CCER_CC3E)); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx input channel 4. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 4 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC4Config(TIM_TypeDef *TIMx, const LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC4E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR2, + (TIM_CCMR2_CC4S | TIM_CCMR2_IC4F | TIM_CCMR2_IC4PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 8U); + + /* Select the Polarity and set the CC4E Bit */ + MODIFY_REG(TIMx->CCER, + TIM_CCER_CC4P, + ((TIM_ICInitStruct->ICPolarity << 12U) | TIM_CCER_CC4E)); + + return SUCCESS; +} + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* TIM1 || TIM2 || TIM3 || TIM4 || TIM5 || TIM6 || TIM7 || TIM8 || TIM9 || TIM10 || TIM11 || TIM12 || TIM13 || TIM14 || TIM15 || TIM16 || TIM17 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + diff --git a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c new file mode 100644 index 0000000..4301d09 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c @@ -0,0 +1,438 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_usart.c + * @author MCD Application Team + * @brief USART LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 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. + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_usart.h" +#include "stm32f1xx_ll_rcc.h" +#include "stm32f1xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (USART1) || defined (USART2) || defined (USART3) || defined (UART4) || defined (UART5) + +/** @addtogroup USART_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @addtogroup USART_LL_Private_Constants + * @{ + */ + +/** + * @} + */ + + +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup USART_LL_Private_Macros + * @{ + */ + +/* __BAUDRATE__ The maximum Baud Rate is derived from the maximum clock available + * divided by the smallest oversampling used on the USART (i.e. 8) */ +#define IS_LL_USART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) <= 4500000U) + +/* __VALUE__ In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. */ +#define IS_LL_USART_BRR_MIN(__VALUE__) ((__VALUE__) >= 16U) + +#define IS_LL_USART_DIRECTION(__VALUE__) (((__VALUE__) == LL_USART_DIRECTION_NONE) \ + || ((__VALUE__) == LL_USART_DIRECTION_RX) \ + || ((__VALUE__) == LL_USART_DIRECTION_TX) \ + || ((__VALUE__) == LL_USART_DIRECTION_TX_RX)) + +#define IS_LL_USART_PARITY(__VALUE__) (((__VALUE__) == LL_USART_PARITY_NONE) \ + || ((__VALUE__) == LL_USART_PARITY_EVEN) \ + || ((__VALUE__) == LL_USART_PARITY_ODD)) + +#define IS_LL_USART_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_USART_DATAWIDTH_8B) \ + || ((__VALUE__) == LL_USART_DATAWIDTH_9B)) + +#define IS_LL_USART_OVERSAMPLING(__VALUE__) (((__VALUE__) == LL_USART_OVERSAMPLING_16) \ + || ((__VALUE__) == LL_USART_OVERSAMPLING_8)) + +#define IS_LL_USART_LASTBITCLKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_LASTCLKPULSE_NO_OUTPUT) \ + || ((__VALUE__) == LL_USART_LASTCLKPULSE_OUTPUT)) + +#define IS_LL_USART_CLOCKPHASE(__VALUE__) (((__VALUE__) == LL_USART_PHASE_1EDGE) \ + || ((__VALUE__) == LL_USART_PHASE_2EDGE)) + +#define IS_LL_USART_CLOCKPOLARITY(__VALUE__) (((__VALUE__) == LL_USART_POLARITY_LOW) \ + || ((__VALUE__) == LL_USART_POLARITY_HIGH)) + +#define IS_LL_USART_CLOCKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_CLOCK_DISABLE) \ + || ((__VALUE__) == LL_USART_CLOCK_ENABLE)) + +#define IS_LL_USART_STOPBITS(__VALUE__) (((__VALUE__) == LL_USART_STOPBITS_0_5) \ + || ((__VALUE__) == LL_USART_STOPBITS_1) \ + || ((__VALUE__) == LL_USART_STOPBITS_1_5) \ + || ((__VALUE__) == LL_USART_STOPBITS_2)) + +#define IS_LL_USART_HWCONTROL(__VALUE__) (((__VALUE__) == LL_USART_HWCONTROL_NONE) \ + || ((__VALUE__) == LL_USART_HWCONTROL_RTS) \ + || ((__VALUE__) == LL_USART_HWCONTROL_CTS) \ + || ((__VALUE__) == LL_USART_HWCONTROL_RTS_CTS)) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup USART_LL_Exported_Functions + * @{ + */ + +/** @addtogroup USART_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize USART registers (Registers restored to their default values). + * @param USARTx USART Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: USART registers are de-initialized + * - ERROR: USART registers are not de-initialized + */ +ErrorStatus LL_USART_DeInit(const USART_TypeDef *USARTx) +{ + ErrorStatus status = SUCCESS; + + /* Check the parameters */ + assert_param(IS_UART_INSTANCE(USARTx)); + + if (USARTx == USART1) + { + /* Force reset of USART clock */ + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_USART1); + + /* Release reset of USART clock */ + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_USART1); + } + else if (USARTx == USART2) + { + /* Force reset of USART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_USART2); + + /* Release reset of USART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_USART2); + } +#if defined(USART3) + else if (USARTx == USART3) + { + /* Force reset of USART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_USART3); + + /* Release reset of USART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_USART3); + } +#endif /* USART3 */ +#if defined(UART4) + else if (USARTx == UART4) + { + /* Force reset of UART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART4); + + /* Release reset of UART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART4); + } +#endif /* UART4 */ +#if defined(UART5) + else if (USARTx == UART5) + { + /* Force reset of UART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART5); + + /* Release reset of UART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART5); + } +#endif /* UART5 */ + else + { + status = ERROR; + } + + return (status); +} + +/** + * @brief Initialize USART registers according to the specified + * parameters in USART_InitStruct. + * @note As some bits in USART configuration registers can only be written when the USART is disabled (USART_CR1_UE bit =0), + * USART IP should be in disabled state prior calling this function. Otherwise, ERROR result will be returned. + * @note Baud rate value stored in USART_InitStruct BaudRate field, should be valid (different from 0). + * @param USARTx USART Instance + * @param USART_InitStruct pointer to a LL_USART_InitTypeDef structure + * that contains the configuration information for the specified USART peripheral. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: USART registers are initialized according to USART_InitStruct content + * - ERROR: Problem occurred during USART Registers initialization + */ +ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, const LL_USART_InitTypeDef *USART_InitStruct) +{ + ErrorStatus status = ERROR; + uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + LL_RCC_ClocksTypeDef rcc_clocks; + + /* Check the parameters */ + assert_param(IS_UART_INSTANCE(USARTx)); + assert_param(IS_LL_USART_BAUDRATE(USART_InitStruct->BaudRate)); + assert_param(IS_LL_USART_DATAWIDTH(USART_InitStruct->DataWidth)); + assert_param(IS_LL_USART_STOPBITS(USART_InitStruct->StopBits)); + assert_param(IS_LL_USART_PARITY(USART_InitStruct->Parity)); + assert_param(IS_LL_USART_DIRECTION(USART_InitStruct->TransferDirection)); + assert_param(IS_LL_USART_HWCONTROL(USART_InitStruct->HardwareFlowControl)); +#if defined(USART_CR1_OVER8) + assert_param(IS_LL_USART_OVERSAMPLING(USART_InitStruct->OverSampling)); +#endif /* USART_OverSampling_Feature */ + + /* USART needs to be in disabled state, in order to be able to configure some bits in + CRx registers */ + if (LL_USART_IsEnabled(USARTx) == 0U) + { + /*---------------------------- USART CR1 Configuration ----------------------- + * Configure USARTx CR1 (USART Word Length, Parity, Mode and Oversampling bits) with parameters: + * - DataWidth: USART_CR1_M bits according to USART_InitStruct->DataWidth value + * - Parity: USART_CR1_PCE, USART_CR1_PS bits according to USART_InitStruct->Parity value + * - TransferDirection: USART_CR1_TE, USART_CR1_RE bits according to USART_InitStruct->TransferDirection value + * - Oversampling: USART_CR1_OVER8 bit according to USART_InitStruct->OverSampling value. + */ +#if defined(USART_CR1_OVER8) + MODIFY_REG(USARTx->CR1, + (USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | + USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8), + (USART_InitStruct->DataWidth | USART_InitStruct->Parity | + USART_InitStruct->TransferDirection | USART_InitStruct->OverSampling)); +#else + MODIFY_REG(USARTx->CR1, + (USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | + USART_CR1_TE | USART_CR1_RE), + (USART_InitStruct->DataWidth | USART_InitStruct->Parity | + USART_InitStruct->TransferDirection)); +#endif /* USART_OverSampling_Feature */ + + /*---------------------------- USART CR2 Configuration ----------------------- + * Configure USARTx CR2 (Stop bits) with parameters: + * - Stop Bits: USART_CR2_STOP bits according to USART_InitStruct->StopBits value. + * - CLKEN, CPOL, CPHA and LBCL bits are to be configured using LL_USART_ClockInit(). + */ + LL_USART_SetStopBitsLength(USARTx, USART_InitStruct->StopBits); + + /*---------------------------- USART CR3 Configuration ----------------------- + * Configure USARTx CR3 (Hardware Flow Control) with parameters: + * - HardwareFlowControl: USART_CR3_RTSE, USART_CR3_CTSE bits according to USART_InitStruct->HardwareFlowControl value. + */ + LL_USART_SetHWFlowCtrl(USARTx, USART_InitStruct->HardwareFlowControl); + + /*---------------------------- USART BRR Configuration ----------------------- + * Retrieve Clock frequency used for USART Peripheral + */ + LL_RCC_GetSystemClocksFreq(&rcc_clocks); + if (USARTx == USART1) + { + periphclk = rcc_clocks.PCLK2_Frequency; + } + else if (USARTx == USART2) + { + periphclk = rcc_clocks.PCLK1_Frequency; + } +#if defined(USART3) + else if (USARTx == USART3) + { + periphclk = rcc_clocks.PCLK1_Frequency; + } +#endif /* USART3 */ +#if defined(UART4) + else if (USARTx == UART4) + { + periphclk = rcc_clocks.PCLK1_Frequency; + } +#endif /* UART4 */ +#if defined(UART5) + else if (USARTx == UART5) + { + periphclk = rcc_clocks.PCLK1_Frequency; + } +#endif /* UART5 */ + else + { + /* Nothing to do, as error code is already assigned to ERROR value */ + } + + /* Configure the USART Baud Rate : + - valid baud rate value (different from 0) is required + - Peripheral clock as returned by RCC service, should be valid (different from 0). + */ + if ((periphclk != LL_RCC_PERIPH_FREQUENCY_NO) + && (USART_InitStruct->BaudRate != 0U)) + { + status = SUCCESS; +#if defined(USART_CR1_OVER8) + LL_USART_SetBaudRate(USARTx, + periphclk, + USART_InitStruct->OverSampling, + USART_InitStruct->BaudRate); +#else + LL_USART_SetBaudRate(USARTx, + periphclk, + USART_InitStruct->BaudRate); +#endif /* USART_OverSampling_Feature */ + + /* Check BRR is greater than or equal to 16d */ + assert_param(IS_LL_USART_BRR_MIN(USARTx->BRR)); + } + } + /* Endif (=> USART not in Disabled state => return ERROR) */ + + return (status); +} + +/** + * @brief Set each @ref LL_USART_InitTypeDef field to default value. + * @param USART_InitStruct Pointer to a @ref LL_USART_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ + +void LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct) +{ + /* Set USART_InitStruct fields to default values */ + USART_InitStruct->BaudRate = 9600U; + USART_InitStruct->DataWidth = LL_USART_DATAWIDTH_8B; + USART_InitStruct->StopBits = LL_USART_STOPBITS_1; + USART_InitStruct->Parity = LL_USART_PARITY_NONE ; + USART_InitStruct->TransferDirection = LL_USART_DIRECTION_TX_RX; + USART_InitStruct->HardwareFlowControl = LL_USART_HWCONTROL_NONE; +#if defined(USART_CR1_OVER8) + USART_InitStruct->OverSampling = LL_USART_OVERSAMPLING_16; +#endif /* USART_OverSampling_Feature */ +} + +/** + * @brief Initialize USART Clock related settings according to the + * specified parameters in the USART_ClockInitStruct. + * @note As some bits in USART configuration registers can only be written when the USART is disabled (USART_CR1_UE bit =0), + * USART IP should be in disabled state prior calling this function. Otherwise, ERROR result will be returned. + * @param USARTx USART Instance + * @param USART_ClockInitStruct Pointer to a @ref LL_USART_ClockInitTypeDef structure + * that contains the Clock configuration information for the specified USART peripheral. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: USART registers related to Clock settings are initialized according to USART_ClockInitStruct content + * - ERROR: Problem occurred during USART Registers initialization + */ +ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, const LL_USART_ClockInitTypeDef *USART_ClockInitStruct) +{ + ErrorStatus status = SUCCESS; + + /* Check USART Instance and Clock signal output parameters */ + assert_param(IS_UART_INSTANCE(USARTx)); + assert_param(IS_LL_USART_CLOCKOUTPUT(USART_ClockInitStruct->ClockOutput)); + + /* USART needs to be in disabled state, in order to be able to configure some bits in + CRx registers */ + if (LL_USART_IsEnabled(USARTx) == 0U) + { + /*---------------------------- USART CR2 Configuration -----------------------*/ + /* If Clock signal has to be output */ + if (USART_ClockInitStruct->ClockOutput == LL_USART_CLOCK_DISABLE) + { + /* Deactivate Clock signal delivery : + * - Disable Clock Output: USART_CR2_CLKEN cleared + */ + LL_USART_DisableSCLKOutput(USARTx); + } + else + { + /* Ensure USART instance is USART capable */ + assert_param(IS_USART_INSTANCE(USARTx)); + + /* Check clock related parameters */ + assert_param(IS_LL_USART_CLOCKPOLARITY(USART_ClockInitStruct->ClockPolarity)); + assert_param(IS_LL_USART_CLOCKPHASE(USART_ClockInitStruct->ClockPhase)); + assert_param(IS_LL_USART_LASTBITCLKOUTPUT(USART_ClockInitStruct->LastBitClockPulse)); + + /*---------------------------- USART CR2 Configuration ----------------------- + * Configure USARTx CR2 (Clock signal related bits) with parameters: + * - Enable Clock Output: USART_CR2_CLKEN set + * - Clock Polarity: USART_CR2_CPOL bit according to USART_ClockInitStruct->ClockPolarity value + * - Clock Phase: USART_CR2_CPHA bit according to USART_ClockInitStruct->ClockPhase value + * - Last Bit Clock Pulse Output: USART_CR2_LBCL bit according to USART_ClockInitStruct->LastBitClockPulse value. + */ + MODIFY_REG(USARTx->CR2, + USART_CR2_CLKEN | USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, + USART_CR2_CLKEN | USART_ClockInitStruct->ClockPolarity | + USART_ClockInitStruct->ClockPhase | USART_ClockInitStruct->LastBitClockPulse); + } + } + /* Else (USART not in Disabled state => return ERROR */ + else + { + status = ERROR; + } + + return (status); +} + +/** + * @brief Set each field of a @ref LL_USART_ClockInitTypeDef type structure to default value. + * @param USART_ClockInitStruct Pointer to a @ref LL_USART_ClockInitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ +void LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct) +{ + /* Set LL_USART_ClockInitStruct fields with default values */ + USART_ClockInitStruct->ClockOutput = LL_USART_CLOCK_DISABLE; + USART_ClockInitStruct->ClockPolarity = LL_USART_POLARITY_LOW; /* Not relevant when ClockOutput = LL_USART_CLOCK_DISABLE */ + USART_ClockInitStruct->ClockPhase = LL_USART_PHASE_1EDGE; /* Not relevant when ClockOutput = LL_USART_CLOCK_DISABLE */ + USART_ClockInitStruct->LastBitClockPulse = LL_USART_LASTCLKPULSE_NO_OUTPUT; /* Not relevant when ClockOutput = LL_USART_CLOCK_DISABLE */ +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* USART1 || USART2 || USART3 || UART4 || UART5 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + + diff --git a/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c new file mode 100644 index 0000000..98e7c88 --- /dev/null +++ b/Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c @@ -0,0 +1,767 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_utils.c + * @author MCD Application Team + * @brief UTILS LL module driver. + ****************************************************************************** + * @attention + * + * Copyright (c) 2016 STMicroelectronics. + * All rights reserved. + * + * This software is licensed under terms that can be found in the LICENSE file + * in the root directory of this software component. + * If no LICENSE file comes with this software, it is provided AS-IS. + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_rcc.h" +#include "stm32f1xx_ll_utils.h" +#include "stm32f1xx_ll_system.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +/** @addtogroup UTILS_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @addtogroup UTILS_LL_Private_Constants + * @{ + */ + +/* Defines used for PLL range */ +#define UTILS_PLL_OUTPUT_MAX RCC_MAX_FREQUENCY /*!< Frequency max for PLL output, in Hz */ +#define UTILS_PLL2_OUTPUT_MAX RCC_MAX_FREQUENCY /*!< Frequency max for PLL2 output, in Hz */ + +/* Defines used for HSE range */ +#define UTILS_HSE_FREQUENCY_MIN RCC_HSE_MIN /*!< Frequency min for HSE frequency, in Hz */ +#define UTILS_HSE_FREQUENCY_MAX RCC_HSE_MAX /*!< Frequency max for HSE frequency, in Hz */ + +/* Defines used for FLASH latency according to HCLK Frequency */ +#if defined(FLASH_ACR_LATENCY) +#define UTILS_LATENCY1_FREQ 24000000U /*!< SYSCLK frequency to set FLASH latency 1 */ +#define UTILS_LATENCY2_FREQ 48000000U /*!< SYSCLK frequency to set FLASH latency 2 */ +#else +/*!< No Latency Configuration in this device */ +#endif +/** + * @} + */ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup UTILS_LL_Private_Macros + * @{ + */ +#define IS_LL_UTILS_SYSCLK_DIV(__VALUE__) (((__VALUE__) == LL_RCC_SYSCLK_DIV_1) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_2) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_4) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_8) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_16) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_64) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_128) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_256) \ + || ((__VALUE__) == LL_RCC_SYSCLK_DIV_512)) + +#define IS_LL_UTILS_APB1_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB1_DIV_1) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_2) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_4) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_8) \ + || ((__VALUE__) == LL_RCC_APB1_DIV_16)) + +#define IS_LL_UTILS_APB2_DIV(__VALUE__) (((__VALUE__) == LL_RCC_APB2_DIV_1) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_2) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_4) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_8) \ + || ((__VALUE__) == LL_RCC_APB2_DIV_16)) + +#if defined(RCC_CFGR_PLLMULL6_5) +#define IS_LL_UTILS_PLLMUL_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLL_MUL_4) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_5) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_6) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_7) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_8) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_9) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_6_5)) +#else +#define IS_LL_UTILS_PLLMUL_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLL_MUL_2) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_3) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_4) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_5) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_6) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_7) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_8) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_9) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_10) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_11) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_12) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_13) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_14) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_15) \ + || ((__VALUE__) == LL_RCC_PLL_MUL_16)) +#endif /* RCC_CFGR_PLLMULL6_5 */ + +#if defined(RCC_CFGR2_PREDIV1) +#define IS_LL_UTILS_PREDIV_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PREDIV_DIV_1) || ((__VALUE__) == LL_RCC_PREDIV_DIV_2) || \ + ((__VALUE__) == LL_RCC_PREDIV_DIV_3) || ((__VALUE__) == LL_RCC_PREDIV_DIV_4) || \ + ((__VALUE__) == LL_RCC_PREDIV_DIV_5) || ((__VALUE__) == LL_RCC_PREDIV_DIV_6) || \ + ((__VALUE__) == LL_RCC_PREDIV_DIV_7) || ((__VALUE__) == LL_RCC_PREDIV_DIV_8) || \ + ((__VALUE__) == LL_RCC_PREDIV_DIV_9) || ((__VALUE__) == LL_RCC_PREDIV_DIV_10) || \ + ((__VALUE__) == LL_RCC_PREDIV_DIV_11) || ((__VALUE__) == LL_RCC_PREDIV_DIV_12) || \ + ((__VALUE__) == LL_RCC_PREDIV_DIV_13) || ((__VALUE__) == LL_RCC_PREDIV_DIV_14) || \ + ((__VALUE__) == LL_RCC_PREDIV_DIV_15) || ((__VALUE__) == LL_RCC_PREDIV_DIV_16)) +#else +#define IS_LL_UTILS_PREDIV_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PREDIV_DIV_1) || ((__VALUE__) == LL_RCC_PREDIV_DIV_2)) +#endif /*RCC_PREDIV1_DIV_2_16_SUPPORT*/ + +#define IS_LL_UTILS_PLL_FREQUENCY(__VALUE__) ((__VALUE__) <= UTILS_PLL_OUTPUT_MAX) + +#if defined(RCC_PLL2_SUPPORT) +#define IS_LL_UTILS_PLL2MUL_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_PLL2_MUL_8) \ + || ((__VALUE__) == LL_RCC_PLL2_MUL_9) \ + || ((__VALUE__) == LL_RCC_PLL2_MUL_10) \ + || ((__VALUE__) == LL_RCC_PLL2_MUL_11) \ + || ((__VALUE__) == LL_RCC_PLL2_MUL_12) \ + || ((__VALUE__) == LL_RCC_PLL2_MUL_13) \ + || ((__VALUE__) == LL_RCC_PLL2_MUL_14) \ + || ((__VALUE__) == LL_RCC_PLL2_MUL_16) \ + || ((__VALUE__) == LL_RCC_PLL2_MUL_20)) + +#define IS_LL_UTILS_PREDIV2_VALUE(__VALUE__) (((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_1) || ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_2) || \ + ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_3) || ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_4) || \ + ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_5) || ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_6) || \ + ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_7) || ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_8) || \ + ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_9) || ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_10) || \ + ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_11) || ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_12) || \ + ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_13) || ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_14) || \ + ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_15) || ((__VALUE__) == LL_RCC_HSE_PREDIV2_DIV_16)) + +#define IS_LL_UTILS_PLL2_FREQUENCY(__VALUE__) ((__VALUE__) <= UTILS_PLL2_OUTPUT_MAX) +#endif /* RCC_PLL2_SUPPORT */ + +#define IS_LL_UTILS_HSE_BYPASS(__STATE__) (((__STATE__) == LL_UTILS_HSEBYPASS_ON) \ + || ((__STATE__) == LL_UTILS_HSEBYPASS_OFF)) + +#define IS_LL_UTILS_HSE_FREQUENCY(__FREQUENCY__) (((__FREQUENCY__) >= UTILS_HSE_FREQUENCY_MIN) && ((__FREQUENCY__) <= UTILS_HSE_FREQUENCY_MAX)) +/** + * @} + */ +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup UTILS_LL_Private_Functions UTILS Private functions + * @{ + */ +static uint32_t UTILS_GetPLLOutputFrequency(uint32_t PLL_InputFrequency, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct); +static ErrorStatus UTILS_PLL_HSE_ConfigSystemClock(uint32_t PLL_InputFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +#if defined(RCC_PLL2_SUPPORT) +static uint32_t UTILS_GetPLL2OutputFrequency(uint32_t PLL2_InputFrequency, + LL_UTILS_PLLInitTypeDef *UTILS_PLL2InitStruct); +#endif /* RCC_PLL2_SUPPORT */ +static ErrorStatus UTILS_EnablePLLAndSwitchSystem(uint32_t SYSCLK_Frequency, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct); +static ErrorStatus UTILS_PLL_IsBusy(void); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup UTILS_LL_Exported_Functions + * @{ + */ + +/** @addtogroup UTILS_LL_EF_DELAY + * @{ + */ + +/** + * @brief This function configures the Cortex-M SysTick source to have 1ms time base. + * @note When a RTOS is used, it is recommended to avoid changing the Systick + * configuration by calling this function, for a delay use rather osDelay RTOS service. + * @param HCLKFrequency HCLK frequency in Hz + * @note HCLK frequency can be calculated thanks to RCC helper macro or function @ref LL_RCC_GetSystemClocksFreq + * @retval None + */ +void LL_Init1msTick(uint32_t HCLKFrequency) +{ + /* Use frequency provided in argument */ + LL_InitTick(HCLKFrequency, 1000U); +} + +/** + * @brief This function provides accurate delay (in milliseconds) based + * on SysTick counter flag + * @note When a RTOS is used, it is recommended to avoid using blocking delay + * and use rather osDelay service. + * @note To respect 1ms timebase, user should call @ref LL_Init1msTick function which + * will configure Systick to 1ms + * @param Delay specifies the delay time length, in milliseconds. + * @retval None + */ +void LL_mDelay(uint32_t Delay) +{ + __IO uint32_t tmp = SysTick->CTRL; /* Clear the COUNTFLAG first */ + /* Add this code to indicate that local variable is not used */ + ((void)tmp); + + /* Add a period to guaranty minimum wait */ + if (Delay < LL_MAX_DELAY) + { + Delay++; + } + + while (Delay) + { + if ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) != 0U) + { + Delay--; + } + } +} + +/** + * @} + */ + +/** @addtogroup UTILS_EF_SYSTEM + * @brief System Configuration functions + * + @verbatim + =============================================================================== + ##### System Configuration functions ##### + =============================================================================== + [..] + System, AHB and APB buses clocks configuration + + (+) The maximum frequency of the SYSCLK, HCLK, PCLK1 and PCLK2 is RCC_MAX_FREQUENCY Hz. + @endverbatim + @internal + Depending on the SYSCLK frequency, the flash latency should be adapted accordingly: + (++) +-----------------------------------------------+ + (++) | Latency | SYSCLK clock frequency (MHz) | + (++) |---------------|-------------------------------| + (++) |0WS(1CPU cycle)| 0 < SYSCLK <= 24 | + (++) |---------------|-------------------------------| + (++) |1WS(2CPU cycle)| 24 < SYSCLK <= 48 | + (++) |---------------|-------------------------------| + (++) |2WS(3CPU cycle)| 48 < SYSCLK <= 72 | + (++) +-----------------------------------------------+ + @endinternal + * @{ + */ + +/** + * @brief This function sets directly SystemCoreClock CMSIS variable. + * @note Variable can be calculated also through SystemCoreClockUpdate function. + * @param HCLKFrequency HCLK frequency in Hz (can be calculated thanks to RCC helper macro) + * @retval None + */ +void LL_SetSystemCoreClock(uint32_t HCLKFrequency) +{ + /* HCLK clock frequency */ + SystemCoreClock = HCLKFrequency; +} + +/** + * @brief Update number of Flash wait states in line with new frequency and current + voltage range. + * @param Frequency SYSCLK frequency + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Latency has been modified + * - ERROR: Latency cannot be modified + */ +#if defined(FLASH_ACR_LATENCY) +ErrorStatus LL_SetFlashLatency(uint32_t Frequency) +{ + uint32_t timeout; + uint32_t getlatency; + uint32_t latency = LL_FLASH_LATENCY_0; /* default value 0WS */ + ErrorStatus status = SUCCESS; + + /* Frequency cannot be equal to 0 */ + if (Frequency == 0U) + { + status = ERROR; + } + else + { + if (Frequency > UTILS_LATENCY2_FREQ) + { + /* 48 < SYSCLK <= 72 => 2WS (3 CPU cycles) */ + latency = LL_FLASH_LATENCY_2; + } + else + { + if (Frequency > UTILS_LATENCY1_FREQ) + { + /* 24 < SYSCLK <= 48 => 1WS (2 CPU cycles) */ + latency = LL_FLASH_LATENCY_1; + } + else + { + /* else SYSCLK < 24MHz default LL_FLASH_LATENCY_0 0WS */ + latency = LL_FLASH_LATENCY_0; + } + } + + if (status != ERROR) + { + LL_FLASH_SetLatency(latency); + + /* Check that the new number of wait states is taken into account to access the Flash + memory by reading the FLASH_ACR register */ + timeout = 2; + do + { + /* Wait for Flash latency to be updated */ + getlatency = LL_FLASH_GetLatency(); + timeout--; + } + while ((getlatency != latency) && (timeout > 0)); + + if (getlatency != latency) + { + status = ERROR; + } + else + { + status = SUCCESS; + } + } + } + + return status; +} +#endif /* FLASH_ACR_LATENCY */ + +/** + * @brief This function configures system clock with HSI as clock source of the PLL + * @note The application need to ensure that PLL is disabled. + * @note Function is based on the following formula: + * - PLL output frequency = ((HSI frequency / PREDIV) * PLLMUL) + * - PREDIV: Set to 2 for few devices + * - PLLMUL: The application software must set correctly the PLL multiplication factor to + * not exceed 72MHz + * @note FLASH latency can be modified through this function. + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Max frequency configuration done + * - ERROR: Max frequency configuration not done + */ +ErrorStatus LL_PLL_ConfigSystemClock_HSI(LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status = SUCCESS; + uint32_t pllfreq = 0U; + + /* Check if one of the PLL is enabled */ + if (UTILS_PLL_IsBusy() == SUCCESS) + { +#if defined(RCC_PLLSRC_PREDIV1_SUPPORT) + /* Check PREDIV value */ + assert_param(IS_LL_UTILS_PREDIV_VALUE(UTILS_PLLInitStruct->PLLDiv)); +#else + /* Force PREDIV value to 2 */ + UTILS_PLLInitStruct->Prediv = LL_RCC_PREDIV_DIV_2; +#endif /*RCC_PLLSRC_PREDIV1_SUPPORT*/ + /* Calculate the new PLL output frequency */ + pllfreq = UTILS_GetPLLOutputFrequency(HSI_VALUE, UTILS_PLLInitStruct); + + /* Enable HSI if not enabled */ + if (LL_RCC_HSI_IsReady() != 1U) + { + LL_RCC_HSI_Enable(); + while (LL_RCC_HSI_IsReady() != 1U) + { + /* Wait for HSI ready */ + } + } + + /* Configure PLL */ + LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSI_DIV_2, UTILS_PLLInitStruct->PLLMul); + + /* Enable PLL and switch system clock to PLL */ + status = UTILS_EnablePLLAndSwitchSystem(pllfreq, UTILS_ClkInitStruct); + } + else + { + /* Current PLL configuration cannot be modified */ + status = ERROR; + } + + return status; +} + +/** + * @brief This function configures system clock with HSE as clock source of the PLL + * @note The application need to ensure that PLL is disabled. + * @note Function is based on the following formula: + * - PLL output frequency = ((HSI frequency / PREDIV) * PLLMUL) + * - PREDIV: Set to 2 for few devices + * - PLLMUL: The application software must set correctly the PLL multiplication factor to + * not exceed @ref UTILS_PLL_OUTPUT_MAX + * @note FLASH latency can be modified through this function. + * @param HSEFrequency Value between Min_Data = RCC_HSE_MIN and Max_Data = RCC_HSE_MAX + * @param HSEBypass This parameter can be one of the following values: + * @arg @ref LL_UTILS_HSEBYPASS_ON + * @arg @ref LL_UTILS_HSEBYPASS_OFF + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Max frequency configuration done + * - ERROR: Max frequency configuration not done + */ +ErrorStatus LL_PLL_ConfigSystemClock_HSE(uint32_t HSEFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status = SUCCESS; + uint32_t pllfrequency = 0U; + + /* Check the parameters */ + assert_param(IS_LL_UTILS_HSE_FREQUENCY(HSEFrequency)); + assert_param(IS_LL_UTILS_HSE_BYPASS(HSEBypass)); + assert_param(IS_LL_UTILS_PREDIV_VALUE(UTILS_PLLInitStruct->Prediv)); + + /* Calculate the new PLL output frequency */ + pllfrequency = UTILS_GetPLLOutputFrequency(HSEFrequency, UTILS_PLLInitStruct); + + /* Enable HSE if not enabled */ + status = UTILS_PLL_HSE_ConfigSystemClock(HSEFrequency, HSEBypass, UTILS_PLLInitStruct, UTILS_ClkInitStruct); + + /* Check if HSE is not enabled*/ + if (status == SUCCESS) + { + /* Configure PLL */ + LL_RCC_PLL_ConfigDomain_SYS((LL_RCC_PLLSOURCE_HSE | UTILS_PLLInitStruct->Prediv), UTILS_PLLInitStruct->PLLMul); + + /* Enable PLL and switch system clock to PLL */ + status = UTILS_EnablePLLAndSwitchSystem(pllfrequency, UTILS_ClkInitStruct); + } + + return status; +} + +#if defined(RCC_PLL2_SUPPORT) +/** + * @brief This function configures system clock with HSE as clock source of the PLL, via PLL2 + * @note The application need to ensure that PLL and PLL2 are disabled. + * @note Function is based on the following formula: + * - PLL output frequency = ((((HSE frequency / PREDIV2) * PLL2MUL) / PREDIV) * PLLMUL) + * - PREDIV, PLLMUL, PREDIV2, PLL2MUL: The application software must set correctly the + * PLL multiplication factor to not exceed @ref UTILS_PLL_OUTPUT_MAX + * @note FLASH latency can be modified through this function. + * @param HSEFrequency Value between Min_Data = RCC_HSE_MIN and Max_Data = RCC_HSE_MAX + * @param HSEBypass This parameter can be one of the following values: + * @arg @ref LL_UTILS_HSEBYPASS_ON + * @arg @ref LL_UTILS_HSEBYPASS_OFF + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @param UTILS_PLL2InitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL2. + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Max frequency configuration done + * - ERROR: Max frequency configuration not done + */ +ErrorStatus LL_PLL_ConfigSystemClock_PLL2(uint32_t HSEFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_PLLInitTypeDef *UTILS_PLL2InitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status = SUCCESS; + uint32_t pllfrequency = 0U; + + /* Check the parameters */ + assert_param(IS_LL_UTILS_HSE_FREQUENCY(HSEFrequency)); + assert_param(IS_LL_UTILS_HSE_BYPASS(HSEBypass)); + assert_param(IS_LL_UTILS_PREDIV_VALUE(UTILS_PLLInitStruct->Prediv)); + assert_param(IS_LL_UTILS_PREDIV2_VALUE(UTILS_PLL2InitStruct->Prediv)); + + /* Calculate the new PLL output frequency */ + pllfrequency = UTILS_GetPLLOutputFrequency(HSEFrequency, UTILS_PLLInitStruct); + + /* Enable HSE if not enabled */ + status = UTILS_PLL_HSE_ConfigSystemClock(HSEFrequency, HSEBypass, UTILS_PLLInitStruct, UTILS_ClkInitStruct); + + /* Check if HSE is not enabled*/ + if (status == SUCCESS) + { + /* Configure PLL */ + LL_RCC_PLL_ConfigDomain_PLL2(UTILS_PLL2InitStruct->Prediv, UTILS_PLL2InitStruct->PLLMul); + LL_RCC_PLL_ConfigDomain_SYS((LL_RCC_PLLSOURCE_PLL2 | UTILS_PLLInitStruct->Prediv), UTILS_PLLInitStruct->PLLMul); + + /* Calculate the new PLL output frequency */ + pllfrequency = UTILS_GetPLL2OutputFrequency(pllfrequency, UTILS_PLL2InitStruct); + + /* Enable PLL and switch system clock to PLL */ + status = UTILS_EnablePLLAndSwitchSystem(pllfrequency, UTILS_ClkInitStruct); + } + + return status; +} +#endif /* RCC_PLL2_SUPPORT */ + +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup UTILS_LL_Private_Functions + * @{ + */ +/** + * @brief Function to check that PLL can be modified + * @param PLL_InputFrequency PLL input frequency (in Hz) + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @retval PLL output frequency (in Hz) + */ +static uint32_t UTILS_GetPLLOutputFrequency(uint32_t PLL_InputFrequency, LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct) +{ + uint32_t pllfreq = 0U; + + /* Check the parameters */ + assert_param(IS_LL_UTILS_PLLMUL_VALUE(UTILS_PLLInitStruct->PLLMul)); + + /* Check different PLL parameters according to RM */ +#if defined (RCC_CFGR2_PREDIV1) + pllfreq = __LL_RCC_CALC_PLLCLK_FREQ(PLL_InputFrequency / (UTILS_PLLInitStruct->Prediv + 1U), UTILS_PLLInitStruct->PLLMul); +#else + pllfreq = __LL_RCC_CALC_PLLCLK_FREQ(PLL_InputFrequency / ((UTILS_PLLInitStruct->Prediv >> RCC_CFGR_PLLXTPRE_Pos) + 1U), UTILS_PLLInitStruct->PLLMul); +#endif /*RCC_CFGR2_PREDIV1SRC*/ + assert_param(IS_LL_UTILS_PLL_FREQUENCY(pllfreq)); + + return pllfreq; +} + +/** + * @brief This function enable the HSE when it is used by PLL or PLL2 + * @note The application need to ensure that PLL is disabled. + * @param HSEFrequency Value between Min_Data = RCC_HSE_MIN and Max_Data = RCC_HSE_MAX + * @param HSEBypass This parameter can be one of the following values: + * @arg @ref LL_UTILS_HSEBYPASS_ON + * @arg @ref LL_UTILS_HSEBYPASS_OFF + * @param UTILS_PLLInitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: HSE configuration done + * - ERROR: HSE configuration not done + */ +static ErrorStatus UTILS_PLL_HSE_ConfigSystemClock(uint32_t PLL_InputFrequency, uint32_t HSEBypass, + LL_UTILS_PLLInitTypeDef *UTILS_PLLInitStruct, + LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status = SUCCESS; + + /* Check if one of the PLL is enabled */ + if (UTILS_PLL_IsBusy() == SUCCESS) + { + /* Enable HSE if not enabled */ + if (LL_RCC_HSE_IsReady() != 1U) + { + /* Check if need to enable HSE bypass feature or not */ + if (HSEBypass == LL_UTILS_HSEBYPASS_ON) + { + LL_RCC_HSE_EnableBypass(); + } + else + { + LL_RCC_HSE_DisableBypass(); + } + + /* Enable HSE */ + LL_RCC_HSE_Enable(); + while (LL_RCC_HSE_IsReady() != 1U) + { + /* Wait for HSE ready */ + } + } + } + else + { + /* Current PLL configuration cannot be modified */ + status = ERROR; + } + + return status; +} + +#if defined(RCC_PLL2_SUPPORT) +/** + * @brief Function to check that PLL2 can be modified + * @param PLL2_InputFrequency PLL2 input frequency (in Hz) + * @param UTILS_PLL2InitStruct pointer to a @ref LL_UTILS_PLLInitTypeDef structure that contains + * the configuration information for the PLL. + * @retval PLL2 output frequency (in Hz) + */ +static uint32_t UTILS_GetPLL2OutputFrequency(uint32_t PLL2_InputFrequency, LL_UTILS_PLLInitTypeDef *UTILS_PLL2InitStruct) +{ + uint32_t pll2freq = 0U; + + /* Check the parameters */ + assert_param(IS_LL_UTILS_PLL2MUL_VALUE(UTILS_PLL2InitStruct->PLLMul)); + assert_param(IS_LL_UTILS_PREDIV2_VALUE(UTILS_PLL2InitStruct->Prediv)); + + /* Check different PLL2 parameters according to RM */ + pll2freq = __LL_RCC_CALC_PLL2CLK_FREQ(PLL2_InputFrequency, UTILS_PLL2InitStruct->PLLMul, UTILS_PLL2InitStruct->Prediv); + assert_param(IS_LL_UTILS_PLL2_FREQUENCY(pll2freq)); + + return pll2freq; +} +#endif /* RCC_PLL2_SUPPORT */ + +/** + * @brief Function to check that PLL can be modified + * @retval An ErrorStatus enumeration value: + * - SUCCESS: PLL modification can be done + * - ERROR: PLL is busy + */ +static ErrorStatus UTILS_PLL_IsBusy(void) +{ + ErrorStatus status = SUCCESS; + + /* Check if PLL is busy*/ + if (LL_RCC_PLL_IsReady() != 0U) + { + /* PLL configuration cannot be modified */ + status = ERROR; + } +#if defined(RCC_PLL2_SUPPORT) + /* Check if PLL2 is busy*/ + if (LL_RCC_PLL2_IsReady() != 0U) + { + /* PLL2 configuration cannot be modified */ + status = ERROR; + } +#endif /* RCC_PLL2_SUPPORT */ + +#if defined(RCC_PLLI2S_SUPPORT) + /* Check if PLLI2S is busy*/ + if (LL_RCC_PLLI2S_IsReady() != 0U) + { + /* PLLI2S configuration cannot be modified */ + status = ERROR; + } +#endif /* RCC_PLLI2S_SUPPORT */ + + return status; +} + +/** + * @brief Function to enable PLL and switch system clock to PLL + * @param SYSCLK_Frequency SYSCLK frequency + * @param UTILS_ClkInitStruct pointer to a @ref LL_UTILS_ClkInitTypeDef structure that contains + * the configuration information for the BUS prescalers. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: No problem to switch system to PLL + * - ERROR: Problem to switch system to PLL + */ +static ErrorStatus UTILS_EnablePLLAndSwitchSystem(uint32_t SYSCLK_Frequency, LL_UTILS_ClkInitTypeDef *UTILS_ClkInitStruct) +{ + ErrorStatus status = SUCCESS; +#if defined(FLASH_ACR_LATENCY) + uint32_t sysclk_frequency_current = 0U; +#endif /* FLASH_ACR_LATENCY */ + + assert_param(IS_LL_UTILS_SYSCLK_DIV(UTILS_ClkInitStruct->AHBCLKDivider)); + assert_param(IS_LL_UTILS_APB1_DIV(UTILS_ClkInitStruct->APB1CLKDivider)); + assert_param(IS_LL_UTILS_APB2_DIV(UTILS_ClkInitStruct->APB2CLKDivider)); + +#if defined(FLASH_ACR_LATENCY) + /* Calculate current SYSCLK frequency */ + sysclk_frequency_current = (SystemCoreClock << AHBPrescTable[LL_RCC_GetAHBPrescaler() >> RCC_CFGR_HPRE_Pos]); +#endif /* FLASH_ACR_LATENCY */ + + /* Increasing the number of wait states because of higher CPU frequency */ +#if defined (FLASH_ACR_LATENCY) + if (sysclk_frequency_current < SYSCLK_Frequency) + { + /* Set FLASH latency to highest latency */ + status = LL_SetFlashLatency(SYSCLK_Frequency); + } +#endif /* FLASH_ACR_LATENCY */ + + /* Update system clock configuration */ + if (status == SUCCESS) + { +#if defined(RCC_PLL2_SUPPORT) + if (LL_RCC_PLL_GetMainSource() != LL_RCC_PLLSOURCE_HSI_DIV_2) + { + /* Enable PLL2 */ + LL_RCC_PLL2_Enable(); + while (LL_RCC_PLL2_IsReady() != 1U) + { + /* Wait for PLL2 ready */ + } + } +#endif /* RCC_PLL2_SUPPORT */ + /* Enable PLL */ + LL_RCC_PLL_Enable(); + while (LL_RCC_PLL_IsReady() != 1U) + { + /* Wait for PLL ready */ + } + + /* Sysclk activation on the main PLL */ + LL_RCC_SetAHBPrescaler(UTILS_ClkInitStruct->AHBCLKDivider); + LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); + while (LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + { + /* Wait for system clock switch to PLL */ + } + + /* Set APB1 & APB2 prescaler*/ + LL_RCC_SetAPB1Prescaler(UTILS_ClkInitStruct->APB1CLKDivider); + LL_RCC_SetAPB2Prescaler(UTILS_ClkInitStruct->APB2CLKDivider); + } + + /* Decreasing the number of wait states because of lower CPU frequency */ +#if defined (FLASH_ACR_LATENCY) + if (sysclk_frequency_current > SYSCLK_Frequency) + { + /* Set FLASH latency to lowest latency */ + status = LL_SetFlashLatency(SYSCLK_Frequency); + } +#endif /* FLASH_ACR_LATENCY */ + + /* Update SystemCoreClock variable */ + if (status == SUCCESS) + { + LL_SetSystemCoreClock(__LL_RCC_CALC_HCLK_FREQ(SYSCLK_Frequency, UTILS_ClkInitStruct->AHBCLKDivider)); + } + + return status; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ diff --git a/MDK-ARM/.gitignore b/MDK-ARM/.gitignore new file mode 100644 index 0000000..c2f4ce9 --- /dev/null +++ b/MDK-ARM/.gitignore @@ -0,0 +1,15 @@ +# dot files +/.vscode/launch.json +/.settings +/.eide/log +/.eide.usr.ctx.json + +# project out +/build +/bin +/obj +/out + +# eide template +*.ept +*.eide-template diff --git a/MDK-ARM/EventRecorderStub.scvd b/MDK-ARM/EventRecorderStub.scvd new file mode 100644 index 0000000..2956b29 --- /dev/null +++ b/MDK-ARM/EventRecorderStub.scvd @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/MDK-ARM/RTE/_motor/RTE_Components.h b/MDK-ARM/RTE/_motor/RTE_Components.h new file mode 100644 index 0000000..eed4ffd --- /dev/null +++ b/MDK-ARM/RTE/_motor/RTE_Components.h @@ -0,0 +1,21 @@ + +/* + * Auto generated Run-Time-Environment Configuration File + * *** Do not modify ! *** + * + * Project: 'motor' + * Target: 'motor' + */ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + + +/* + * Define the Device Header File: + */ +#define CMSIS_device_header "cs32f10x.h" + + + +#endif /* RTE_COMPONENTS_H */ diff --git a/MDK-ARM/RTE_Components.h b/MDK-ARM/RTE_Components.h new file mode 100644 index 0000000..9248134 --- /dev/null +++ b/MDK-ARM/RTE_Components.h @@ -0,0 +1,8 @@ +/*-----------------------------------------------------------------------------------*/ +/* Auto generate by EIDE, don't modify this file, any changes will be overwritten ! */ +/*-----------------------------------------------------------------------------------*/ + +#ifndef RTE_COMPONENTS_H +#define RTE_COMPONENTS_H + +#endif diff --git a/MDK-ARM/motor.uvoptx b/MDK-ARM/motor.uvoptx new file mode 100644 index 0000000..ef9b26c --- /dev/null +++ b/MDK-ARM/motor.uvoptx @@ -0,0 +1,885 @@ + + + + 1.0 + +
### uVision Project, (C) Keil Software
+ + + *.c + *.s*; *.src; *.a* + *.obj; *.o + *.lib + *.txt; *.h; *.inc; *.md + *.plm + *.cpp + 0 + + + + 0 + 0 + + + + motor + 0x4 + ARM-ADS + + 12000000 + + 1 + 1 + 0 + 1 + 0 + + + 1 + 65535 + 0 + 0 + 0 + + + 79 + 66 + 8 + + + + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 0 + 0 + 0 + 0 + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + + + 1 + 0 + 1 + + 255 + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 3 + + + + + + + + + + + BIN\CMSIS_AGDI.dll + + + + 0 + CMSIS_AGDI + -X"" -O206 -S0 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0CS32F10x_128.FLM -FS08000000 -FL020000 -FP0($$Device:CS32F103C8$Flash\CS32F10x_128.FLM) + + + 0 + UL2CM3 + UL2CM3(-S0 -C0 -P0 ) -FN1 -FC1000 -FD20000000 -FF0CS32F10x_128 -FL020000 -FS08000000 -FP0($$Device:CS32F103C8$Flash\CS32F10x_128.FLM) + + + 0 + ARMRTXEVENTFLAGS + -L70 -Z18 -C0 -M0 -T1 + + + 0 + DLGTARM + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0) + + + 0 + ARMDBGFLAGS + + + + 0 + DLGUARM + + + + + + + 0 + 1 + _tmc2240,0x0A + + + 1 + 1 + app,0x0A + + + + + 1 + 0 + 0x20003450 + 0 + + + + 0 + + + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + + + + 0 + 0 + 0 + + + + + + + + + + + + + Application/MDK-ARM + 0 + 0 + 0 + 0 + + 1 + 1 + 2 + 0 + 0 + 0 + startup_stm32f103xb.s + startup_stm32f103xb.s + 0 + 0 + + + + + Application/User/Core + 1 + 0 + 0 + 0 + + 2 + 2 + 1 + 0 + 0 + 0 + ../Core/Src/main.c + main.c + 0 + 0 + + + 2 + 3 + 1 + 0 + 0 + 0 + ../Core/Src/gpio.c + gpio.c + 0 + 0 + + + 2 + 4 + 1 + 0 + 0 + 0 + ../Core/Src/dma.c + dma.c + 0 + 0 + + + 2 + 5 + 1 + 0 + 0 + 0 + ../Core/Src/tim.c + tim.c + 0 + 0 + + + 2 + 6 + 1 + 0 + 0 + 0 + ../Core/Src/usart.c + usart.c + 0 + 0 + + + 2 + 7 + 1 + 0 + 0 + 0 + ../Core/Src/stm32f1xx_it.c + stm32f1xx_it.c + 0 + 0 + + + + + Drivers/CMSIS + 0 + 0 + 0 + 0 + + 3 + 8 + 1 + 0 + 0 + 0 + ../Core/Src/system_stm32f1xx.c + system_stm32f1xx.c + 0 + 0 + + + + + User/application + 1 + 0 + 0 + 0 + + 4 + 9 + 1 + 0 + 0 + 0 + ..\User\application\app.c + app.c + 0 + 0 + + + 4 + 10 + 1 + 0 + 0 + 0 + ..\User\application\key.c + key.c + 0 + 0 + + + + + User/system + 0 + 0 + 0 + 0 + + 5 + 11 + 1 + 0 + 0 + 0 + ..\User\system\btn.c + btn.c + 0 + 0 + + + 5 + 12 + 1 + 0 + 0 + 0 + ..\User\system\delay.c + delay.c + 0 + 0 + + + 5 + 13 + 1 + 0 + 0 + 0 + ..\User\system\sys.c + sys.c + 0 + 0 + + + 5 + 14 + 1 + 0 + 0 + 0 + ..\User\system\bsp\bsp.c + bsp.c + 0 + 0 + + + 5 + 15 + 1 + 0 + 0 + 0 + ..\User\system\bsp\gpios.c + gpios.c + 0 + 0 + + + 5 + 16 + 1 + 0 + 0 + 0 + ..\User\system\bsp\uarts.c + uarts.c + 0 + 0 + + + + + Drivers/STM32F1xx_HAL_Driver + 0 + 0 + 0 + 0 + + 6 + 17 + 1 + 0 + 0 + 0 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c + stm32f1xx_ll_gpio.c + 0 + 0 + + + 6 + 18 + 1 + 0 + 0 + 0 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c + stm32f1xx_ll_dma.c + 0 + 0 + + + 6 + 19 + 1 + 0 + 0 + 0 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c + stm32f1xx_ll_pwr.c + 0 + 0 + + + 6 + 20 + 1 + 0 + 0 + 0 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c + stm32f1xx_ll_exti.c + 0 + 0 + + + 6 + 21 + 1 + 0 + 0 + 0 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c + stm32f1xx_ll_tim.c + 0 + 0 + + + 6 + 22 + 1 + 0 + 0 + 0 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c + stm32f1xx_ll_rcc.c + 0 + 0 + + + 6 + 23 + 1 + 0 + 0 + 0 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c + stm32f1xx_ll_utils.c + 0 + 0 + + + 6 + 24 + 1 + 0 + 0 + 0 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c + stm32f1xx_ll_usart.c + 0 + 0 + + + + + User/board + 0 + 0 + 0 + 0 + + 7 + 25 + 1 + 0 + 0 + 0 + ..\User\board\board.c + board.c + 0 + 0 + + + + + User/system/lib + 0 + 0 + 0 + 0 + + 8 + 26 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\aes.c + aes.c + 0 + 0 + + + 8 + 27 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\clist.c + clist.c + 0 + 0 + + + 8 + 28 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\cmac.c + cmac.c + 0 + 0 + + + 8 + 29 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\cmd.c + cmd.c + 0 + 0 + + + 8 + 30 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\data_analysis.c + data_analysis.c + 0 + 0 + + + 8 + 31 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\debug.c + debug.c + 0 + 0 + + + 8 + 32 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\filter.c + filter.c + 0 + 0 + + + 8 + 33 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\lib.c + lib.c + 0 + 0 + + + 8 + 34 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\malloc.c + malloc.c + 0 + 0 + + + 8 + 35 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\mlist.c + mlist.c + 0 + 0 + + + 8 + 36 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\pbuf.c + pbuf.c + 0 + 0 + + + 8 + 37 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\sqqueue.c + sqqueue.c + 0 + 0 + + + 8 + 38 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\storage.c + storage.c + 0 + 0 + + + 8 + 39 + 1 + 0 + 0 + 0 + ..\User\system\lib\src\wl_flash.c + wl_flash.c + 0 + 0 + + + 8 + 40 + 1 + 0 + 0 + 0 + ..\User\system\lib\flow\flow_core.c + flow_core.c + 0 + 0 + + + + + User/system/freertos + 1 + 0 + 0 + 0 + + 9 + 41 + 1 + 0 + 0 + 0 + ..\User\system\freertos\src\croutine.c + croutine.c + 0 + 0 + + + 9 + 42 + 1 + 0 + 0 + 0 + ..\User\system\freertos\src\event_groups.c + event_groups.c + 0 + 0 + + + 9 + 43 + 1 + 0 + 0 + 0 + ..\User\system\freertos\src\list.c + list.c + 0 + 0 + + + 9 + 44 + 1 + 0 + 0 + 0 + ..\User\system\freertos\src\queue.c + queue.c + 0 + 0 + + + 9 + 45 + 1 + 0 + 0 + 0 + ..\User\system\freertos\src\stream_buffer.c + stream_buffer.c + 0 + 0 + + + 9 + 46 + 1 + 0 + 0 + 0 + ..\User\system\freertos\src\tasks.c + tasks.c + 0 + 0 + + + 9 + 47 + 1 + 0 + 0 + 0 + ..\User\system\freertos\src\timers.c + timers.c + 0 + 0 + + + 9 + 48 + 1 + 0 + 0 + 0 + ..\User\system\freertos\port\MemMang\heap_4.c + heap_4.c + 0 + 0 + + + 9 + 49 + 1 + 0 + 0 + 0 + ..\User\system\freertos\port\port.c + port.c + 0 + 0 + + + + + ::CMSIS + 0 + 0 + 0 + 1 + + +
diff --git a/MDK-ARM/motor.uvprojx b/MDK-ARM/motor.uvprojx new file mode 100644 index 0000000..701e0da --- /dev/null +++ b/MDK-ARM/motor.uvprojx @@ -0,0 +1,1383 @@ + + + + 2.1 + +
### uVision Project, (C) Keil Software
+ + + + motor + 0x4 + ARM-ADS + 5060960::V5.06 update 7 (build 960)::.\ARMCC + 0 + + + CS32F103C8 + AutoChips + Keil.CS32F1xx_DFP.1.0.0 + http://www.keil.com/pack/ + IRAM(0x20000000,0x5000) IROM(0x08000000,0x10000) CPUTYPE("Cortex-M3") CLOCK(12000000) ELITTLE + + + UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000 -FN1 -FF0CS32F10x_128 -FS08000000 -FL020000 -FP0($$Device:CS32F103C8$Flash\CS32F10x_128.FLM)) + 0 + $$Device:CS32F103C8$Device\Include\cs32f10x.h + + + + + + + + + + $$Device:CS32F103C8$SVD\CS32F103xx.svd + 0 + 0 + + + + + + + 0 + 0 + 0 + 0 + 1 + + motor\ + motor + 1 + 0 + 1 + 1 + 0 + + 1 + 0 + 0 + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + + 0 + 0 + + + 0 + 0 + 0 + 0 + + 1 + + + + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 3 + + + 0 + + + SARMCM3.DLL + -REMAP + DCM.DLL + -pCM3 + SARMCM3.DLL + + TCM.DLL + -pCM3 + + + + 1 + 0 + 0 + 0 + 16 + + + + + 1 + 0 + 0 + 1 + 1 + 4096 + + 1 + BIN\UL2CM3.DLL + + + + + + 0 + + + + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 1 + 1 + 0 + 1 + 1 + 0 + 0 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 0 + 0 + "Cortex-M3" + + 0 + 0 + 0 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 8 + 1 + 0 + 0 + 0 + 3 + 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 1 + 0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 1 + 0x8000000 + 0x10000 + + + 0 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x0 + 0x0 + + + 1 + 0x8000000 + 0x10000 + + + 1 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x0 + 0x0 + + + 0 + 0x20000000 + 0x5000 + + + 0 + 0x0 + 0x0 + + + + + + 1 + 1 + 0 + 0 + 1 + 0 + 0 + 0 + 0 + 0 + 2 + 0 + 0 + 1 + 1 + 0 + 3 + 3 + 1 + 1 + 0 + 0 + 0 + + + STM32,STM32F103xB,USE_FULL_LL_DRIVER,HSE_VALUE=8000000,HSE_STARTUP_TIMEOUT=100,LSE_STARTUP_TIMEOUT=5000,LSE_VALUE=32768,HSI_VALUE=8000000,LSI_VALUE=40000,VDD_VALUE=3300,PREFETCH_ENABLE=1 + + ../Core/Inc;../Drivers/STM32F1xx_HAL_Driver/Inc;../Drivers/CMSIS/Device/ST/STM32F1xx/Include;../Drivers/CMSIS/Include;../User;../User/application;../User/board;../User/system;../User/system/bsp;../User/system/lib/inc;../User/system/lib/flow;../User/system/lib/control/inc;../User/system/lib/driver;../User/system/freertos/inc;../User/system/freertos/port;../User/system/freertos + + + + 1 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + + + + + + + + + 1 + 0 + 0 + 0 + 1 + 0 + + + + + + + + + + + + + + + Application/MDK-ARM + + + startup_stm32f103xb.s + 2 + startup_stm32f103xb.s + + + + + Application/User/Core + + + main.c + 1 + ../Core/Src/main.c + + + gpio.c + 1 + ../Core/Src/gpio.c + + + dma.c + 1 + ../Core/Src/dma.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + tim.c + 1 + ../Core/Src/tim.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + usart.c + 1 + ../Core/Src/usart.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f1xx_it.c + 1 + ../Core/Src/stm32f1xx_it.c + + + + + Drivers/CMSIS + + + system_stm32f1xx.c + 1 + ../Core/Src/system_stm32f1xx.c + + + + + User/application + + + app.c + 1 + ..\User\application\app.c + + + key.c + 1 + ..\User\application\key.c + + + 2 + 0 + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + + + User/system + + + btn.c + 1 + ..\User\system\btn.c + + + delay.c + 1 + ..\User\system\delay.c + + + sys.c + 1 + ..\User\system\sys.c + + + bsp.c + 1 + ..\User\system\bsp\bsp.c + + + gpios.c + 1 + ..\User\system\bsp\gpios.c + + + uarts.c + 1 + ..\User\system\bsp\uarts.c + + + + + Drivers/STM32F1xx_HAL_Driver + + + 0 + 0 + 0 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 4 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 1 + + + + + + + + + + + + stm32f1xx_ll_gpio.c + 1 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f1xx_ll_dma.c + 1 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f1xx_ll_pwr.c + 1 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f1xx_ll_exti.c + 1 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f1xx_ll_tim.c + 1 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f1xx_ll_rcc.c + 1 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rcc.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f1xx_ll_utils.c + 1 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_utils.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + stm32f1xx_ll_usart.c + 1 + ../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c + + + 2 + 0 + 0 + 0 + 0 + 1 + 2 + 2 + 2 + 2 + 11 + + + 1 + + + + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 2 + 0 + 2 + 2 + 2 + 2 + 2 + 0 + 0 + 2 + 2 + 2 + 2 + 2 + + + + + + + + + + + + + + User/board + + + board.c + 1 + ..\User\board\board.c + + + + + User/system/lib + + + aes.c + 1 + ..\User\system\lib\src\aes.c + + + clist.c + 1 + ..\User\system\lib\src\clist.c + + + cmac.c + 1 + ..\User\system\lib\src\cmac.c + + + cmd.c + 1 + ..\User\system\lib\src\cmd.c + + + data_analysis.c + 1 + ..\User\system\lib\src\data_analysis.c + + + debug.c + 1 + ..\User\system\lib\src\debug.c + + + filter.c + 1 + ..\User\system\lib\src\filter.c + + + lib.c + 1 + ..\User\system\lib\src\lib.c + + + malloc.c + 1 + ..\User\system\lib\src\malloc.c + + + mlist.c + 1 + ..\User\system\lib\src\mlist.c + + + pbuf.c + 1 + ..\User\system\lib\src\pbuf.c + + + sqqueue.c + 1 + ..\User\system\lib\src\sqqueue.c + + + storage.c + 1 + ..\User\system\lib\src\storage.c + + + wl_flash.c + 1 + ..\User\system\lib\src\wl_flash.c + + + flow_core.c + 1 + ..\User\system\lib\flow\flow_core.c + + + + + User/system/freertos + + + croutine.c + 1 + ..\User\system\freertos\src\croutine.c + + + event_groups.c + 1 + ..\User\system\freertos\src\event_groups.c + + + list.c + 1 + ..\User\system\freertos\src\list.c + + + queue.c + 1 + ..\User\system\freertos\src\queue.c + + + stream_buffer.c + 1 + ..\User\system\freertos\src\stream_buffer.c + + + tasks.c + 1 + ..\User\system\freertos\src\tasks.c + + + timers.c + 1 + ..\User\system\freertos\src\timers.c + + + heap_4.c + 1 + ..\User\system\freertos\port\MemMang\heap_4.c + + + port.c + 1 + ..\User\system\freertos\port\port.c + + + + + ::CMSIS + + + + + + + + + + + + + + + + + + + + + + motor + 1 + + + + +
diff --git a/MDK-ARM/motor/motor.hex b/MDK-ARM/motor/motor.hex new file mode 100644 index 0000000..fd3832d --- /dev/null +++ b/MDK-ARM/motor/motor.hex @@ -0,0 +1,645 @@ +:020000040800F2 +:10000000A84D00209D010008590D00084B02000872 +:10001000550D000809020008A910000800000000A2 +:1000200000000000000000000000000005010008C2 +:10003000490200080000000049010008990E00086C +:10004000B7010008B7010008B7010008B7010008B0 +:10005000B7010008B7010008B7010008B7010008A0 +:10006000B7010008B7010008B7010008B701000890 +:10007000B7010008B701000829020008390200088A +:10008000B7010008B7010008B7010008B701000870 +:10009000B7010008B7010008B7010008B701000860 +:1000A000B7010008C10F0008B7010008B701000838 +:1000B000B7010008B7010008B7010008B701000840 +:1000C000B7010008B7010008B7010008B701000830 +:1000D000B701000899100008B7010008B70100082F +:1000E000B7010008B7010008B7010008DFF810D019 +:1000F00000F078F80048004701120008AFF30080D4 +:10010000A84D0020224B19680868B0E8F00F80F372 +:100110000988BFF36F8F4FF0000080F311884EF015 +:100120000D0E70470000000006480068006880F36C +:10013000088862B661B6BFF34F8FBFF36F8F00DFE1 +:1001400000BF00BF08ED00E0EFF30980BFF36F8F41 +:100150000F4B1A6820E9F00F106008B54FF0BF0090 +:1001600080F31188BFF34F8FBFF36F8F02F094F8C5 +:100170004FF0000080F31188BDE808401968086856 +:10018000B0E8F00F80F30988BFF36F8F704700BFAE +:100190004C000020EFF305807047000006488047C0 +:1001A00006480047FEE7FEE7FEE7FEE7FEE7FEE75C +:1001B000FEE7FEE7FEE7FEE7BD0F0008ED000008E2 +:1001C000D2B201E000F8012B491EFBD27047002299 +:1001D000F6E710B513460A4604461946FFF7F0FF46 +:1001E000204610BD064C074D06E0E06840F00103D4 +:1001F00094E8070098471034AC42F6D3FFF77AFF33 +:10020000242700084427000800BFFEE770B5044615 +:100210000D4600BF2CB901F011FC01E000BF00BF8A +:10022000FCE700BF012070BD10B50248006801F076 +:1002300094FC10BD2000002010B50248006801F0B9 +:100240008CFC10BD20000020704700BFFEE70000BE +:1002500008B5054989690143034A916111468969D5 +:100260000140009100BF08BD0010024008B50549DB +:1002700089690143034A91611146896901400091EE +:1002800000BF08BD0010024010B54A1E044B9A5C26 +:10029000825822F001034A1E014CA25C835010BD1B +:1002A000CA26000810B54A1E044B9A5C825842F0D8 +:1002B00001034A1E014CA25C835010BDCA260008EF +:1002C00010B54A1E044B9A5C825842F002034A1E43 +:1002D000014CA25C835010BDCA26000830B54B1EED +:1002E000054CE35CC35823F4405313434C1E024DAA +:1002F0002C5D035130BD00008826000830B54B1E30 +:10030000064CE35C03445B686FF30F0313434C1E1E +:10031000024D2C5D0444636030BD0000CA26000815 +:1003200030B54B1E054CE35CC35844F21004A343A4 +:1003300013434C1E014D2C5D035130BD882600082F +:1003400010B54B1E024CE35C0344DA6010BD0000A4 +:10035000CA26000830B54B1E054CE35CC35823F099 +:10036000800313434C1E024D2C5D035130BD000031 +:100370008826000830B54B1E054CE35CC35823F4B7 +:10038000406313434C1E024D2C5D035130BD0000F1 +:100390008826000830B54B1E054CE35CC35823F09B +:1003A000200313434C1E024D2C5D035130BD000051 +:1003B0008826000810B54B1E024CE35C03449A608B +:1003C00010BD0000CA26000830B54B1E054CE35C8A +:1003D000C35823F0400313434C1E024D2C5D0351C0 +:1003E00030BD00008826000830B54B1E054CE35C8C +:1003F000C35823F4407313434C1E024D2C5D03512C +:1004000030BD000088260008024909688143014A7E +:100410001160704704040140024909688143014AA0 +:100420001160704700040140024909680143014A14 +:100430001160704704040140024909680143014A00 +:10044000116070470C040140024909680143014AE8 +:100450001160704700040140024909680143014AE4 +:10046000116070470804014070B5044600252079EA +:1004700000284DD02068002850D0607920B1012894 +:1004800009D0022815D10DE02068FFF7BDFF2068D4 +:10049000FFF7DAFF0FE02068FFF7BEFF2068FFF7E5 +:1004A000C3FF08E02068FFF7CFFF2068FFF7BCFF1D +:1004B00001E0012500BF00BFA07940B3A079012869 +:1004C00004D002280DD003281FD117E0206814495A +:1004D00009688143124A116000BF2068FFF7BCFF22 +:1004E00015E020680E49091F096881430C4A121F54 +:1004F000116000BF2068FFF79FFF08E02068FFF74A +:10050000ABFF2068FFF798FF01E0012500BF05E081 +:100510002068FFF781FF2068FFF776FF284670BD4F +:100520000C0401402DE9F04102460B461868C0F367 +:100530000F2595FAA5F0B0FA80F480E00120A040E4 +:10054000284000287AD0082C04D240F2011000FA8A +:1005500004F106E0A4F108004FF00116864046F0D1 +:100560008061586808280ED11869D66826EA1126D5 +:100570000F0A97FAA7F7B7FA87F700FA07F73E438B +:10058000D66000BF00BF586802EB116691FAA1FC6B +:10059000BCFA8CFC4FEA8C084FF00F0C0CFA08FCEC +:1005A000376827EA0C0791FAA1FCBCFA8CFC4FEAE9 +:1005B0008C0C00FA0CFC47EA0C07376000BF586847 +:1005C000012802D05868092838D1986802EB1166D2 +:1005D00091FAA1FCBCFA8CFC4FEA8C084FF0030C9A +:1005E0000CFA08FC376827EA0C0791FAA1FCBCFA60 +:1005F0008CFC4FEA8C0C00FA0CFC47EA0C073760C5 +:1006000000BFD86802EB116691FAA1FCBCFA8CFC21 +:100610004FEA8C084FF0040C0CFA08FC376827EA04 +:100620000C0791FAA1FCBCFA8CFC4FEA8C0C00FA86 +:100630000CFC47EA0C07376000BF00BF641C25FABA +:1006400004F000287FF47AAFBDE8F081024800682A +:10065000401C014908607047100000204FF47A7177 +:10066000B0FBF1F2521E4FF0E0235A6100229A6172 +:1006700005221A6100BF704710B5044600F0C2FBA6 +:100680002060206800F08AFB6060606800F096FBE4 +:10069000A060606800F0A4FBE06010BD0149086044 +:1006A000704700000000002010B5024613681C4887 +:1006B000824208D0B2F1804F05D01A48824202D05F +:1006C0001948824204D123F070004C6840EA0403C8 +:1006D0001348824208D0B2F1804F05D011488242BF +:1006E00002D01148824204D123F44070CC6840EA21 +:1006F000040313608868D06200BF0888906200BF5E +:100700000748824203D10869106300BF00BF00BFE1 +:10071000506940F00100506100BF002010BD000092 +:10072000002C014000040040000800400146086918 +:1007300000F00100704708B50168009100BF4168F2 +:10074000009100BF08BD6FF04001016070470000DC +:100750002DE9FF4104460D4601270026204600F002 +:1007600055F8002833D1E9686868084329690843C7 +:10077000E16841F20C6291430843E060A868216996 +:1007800021F440510143216100BF6869616921F48E +:1007900040710143616100BF6846FFF76DFF0E487D +:1007A000844201D1039E08E00C48844201D1029E9C +:1007B00003E00B48844200D1029E46B1286830B164 +:1007C0000027314620462A6800F025F800BF384649 +:1007D00004B0BDE8F0810000003801400044004052 +:1007E0000048004001460868C0F3400070470146D9 +:1007F0000868C0F38000704701460868C0F3C00075 +:10080000704701460868C0F3801070470146C86809 +:10081000C0F34030704770B501EBC10303EB011327 +:100820009400B3FBF4F301EBC10404EB0114950055 +:10083000B4FBF5F46425B4FBF5F404EBC40505EB57 +:100840000414A3EB8403322404EB03136424B3FBEA +:10085000F4F303F0F00301EBC10404EB0114950081 +:10086000B4FBF5F46425B4FBF5F403EB041401EBDD +:10087000C10303EB01139500B3FBF5F301EBC105D5 +:1008800005EB01159600B5FBF6F56426B5FBF6F50C +:1008900005EBC50606EB0515A3EB8503322505EB35 +:1008A00003136425B3FBF5F303F00F0323449BB25A +:1008B000836070BD38B50120144949690143134A6A +:1008C0005161114649690140009100BF00BF00F02D +:1008D000FBFB05460022114600F040FA0446214683 +:1008E0000E2000F0F9FB0E2000F0E0FB00F0ECFB26 +:1008F00005460022114600F031FA044621460F2039 +:1009000000F0EAFB0F2000F0D1FB38BD00100240E0 +:1009100070B588B0002006900790142101A8FFF759 +:1009200056FC1020FFF794FC2020FFF791FC0420D8 +:10093000FFF78EFC0820FFF78BFC3348C0F30F2134 +:10094000324A516100BF01900120029002200390C1 +:100950000020049001A91046FFF7E4FD2C48019007 +:100960000020029001A92948FFF7DCFD29480190E9 +:100970000020029001A92848FFF7D4FD27480190E4 +:100980000020029001A92648FFF7CCFD012125484F +:10099000254AC3B252F8232022EA1042030C93FAEC +:1009A000A3F3B3FA83F301FA03F31A431E4BC4B261 +:1009B00043F8242000BF0803069001208DF81C0096 +:1009C00000208DF81D0001208DF81E0006A8FFF7FD +:1009D0004BFD13491548042201EB106390FAA0F572 +:1009E000B5FA85F5AE000F25B5401C68AC4390FA0A +:1009F000A0F5B5FA85F5AD0002FA05F52C431C60AB +:100A000000BF08B070BD00002000200400100140AD +:100A1000C000C004FFFF990400080140FFFFEF047D +:100A2000000C014003000F000800014010001004FA +:100A30002DE9F04186B0142101A8FFF7C8FB4FF45F +:100A40000060474989690143454A916111468969B6 +:100A50000140009100BF00BF1921424B1B68C3F346 +:100A60000220032400250346C3F1070CBCF1040F48 +:100A700002D94FF0040C01E0C3F1070C674603F103 +:100A8000040CBCF1070F02D24FF0000C01E0A3F1FF +:100A9000030C66464FF0010C0CFA07FCACF1010C9C +:100AA0000CEA040C0CFA06FC4FF0010808FA06F8F0 +:100AB000A8F1010808EA05084CEA080200BF00296D +:100AC00004DB1007030E2848435407E01007040E08 +:100AD00024480C3001F00F031B1FC45400BF192021 +:100AE000002809DB00F01F02012191404209920019 +:100AF00002F1E022C2F8001100BF41F61F40ADF83C +:100B000004000020029063200390002004900590D0 +:100B100001A91648FFF7C8FD00BF1448006820F07F +:100B200080001249086000BF0020896844F2070273 +:100B3000914301430D4A916000BF00BF11464968CF +:100B400021F070010143516000BF00BF1046806872 +:100B500020F080001146886000BF06B0BDE8F0813B +:100B6000001002400CED00E000E400E0002C014029 +:100B70002DE9F0418CB01C2105A8FFF728FB1421BA +:100B80006846FFF724FB4FF48040FFF76FFB04201B +:100B9000FFF76CFB68480090092001900320029049 +:100BA0000020039069466548FFF7BCFC644800904C +:100BB0000420019069466148FFF7B4FC002205213A +:100BC0006048FFF7ADFB002205215E48FFF786FB7A +:100BD000002205215B48FFF7DDFB00220521594873 +:100BE000FFF7F2FB802205215648FFF7B3FB0022F6 +:100BF00005215448FFF7F8FB002205215148FFF773 +:100C0000B9FB102204214F48FFF78AFB0022042180 +:100C10004C48FFF763FB002204214A48FFF7BAFB68 +:100C2000002204214748FFF7CFFB802204214548DA +:100C3000FFF790FB002204214248FFF7D5FB00227A +:100C400004214048FFF796FB25213F4B1B68C3F367 +:100C50000220052400250346C3F1070CBCF1040F54 +:100C600002D94FF0040C01E0C3F1070C674603F111 +:100C7000040CBCF1070F02D24FF0000C01E0A3F10D +:100C8000030C66464FF0010C0CFA07FCACF1010CAA +:100C90000CEA040C0CFA06FC4FF0010808FA06F8FE +:100CA000A8F1010808EA05084CEA080200BF00297B +:100CB00004DB1007030E2548435407E01007040E19 +:100CC00021480C3001F00F031B1FC45400BF252026 +:100CD000002809DB00F01F02012191404209920027 +:100CE00002F1E022C2F8001100BF4FF4E13005909C +:100CF00000200690079008900C20099000200A9090 +:100D00000B9005A91248FFF723FD00BF10480069AA +:100D100020F490400E4908610846406920F02A00FE +:100D2000486100BF00BF0846C06840F40050C8607A +:100D300000BF0CB0BDE8F0810200020400080140D1 +:100D400004000404000002400CED00E000E400E0B8 +:100D50000038014000BFFEE700BFFEE7F0B50346E4 +:100D60000C4603F00701C1F10700042801D9042053 +:100D700001E0C1F107000646081D072801D2002046 +:100D800000E0C81E05460120B040401E2040A8409B +:100D90000127AF407F1E17403843F0BD014600BF1A +:100DA0000448406800F0F0000009034A125C21FA90 +:100DB00002F0704700100240B2260008014600BF52 +:100DC0000548406800F4E060044A02EB1020027815 +:100DD00021FA02F07047000000100240C22600080D +:100DE000014600BF0548406800F46050044A02EB29 +:100DF000D020027821FA02F0704700000010024073 +:100E0000C226000810B5002400BF0B48406800F05F +:100E10000C0020B1042804D0082808D103E0074CB6 +:100E200007E0064C05E000F00BF8044601E0034C37 +:100E300000BF00BF204610BD0010024000127A0023 +:100E40000021002200BF1148406800F480300246B3 +:100E50001AB1B2F5803F0CD101E00D490BE000BFA3 +:100E60000A484068C0F34040401C0A4BB3FBF0F115 +:100E700001E0074900BF00BF00BF0448406800F41C +:100E80007010022303EB904048437047001002406B +:100E900000093D0000127A0010B500BFBF2080F3AA +:100EA0001188BFF34F8FBFF36F8F00BF01F05EFA61 +:100EB00018B14FF080500449086000BF002080F353 +:100EC000118800BF10BD000004ED00E010B5022045 +:100ED0003749096821F007010143354A116000BF15 +:100EE00000BF00BF3248006800F007000228F8D1B8 +:100EF00000BF3048006840F480302E49086000BFD1 +:100F000000BF00BF2B480068C0F340400028F8D065 +:100F10004FF480304FF4E011264A526822F47C12DC +:100F200000F440330B431A43224B5A6000BF00BF0A +:100F30001846006840F080701946086000BF00BF86 +:100F400000BF1C480068C0F340600028F8D00020B3 +:100F50001849496821F0F0010143164A516000BF69 +:100F600010151146496821F4E0610143516000BF4A +:100F700000201146496821F460510143516000BFCF +:100F800002201146496821F003010143516000BF6E +:100F900000BF00BF0748406800F00C000828F8D1E7 +:100FA0000548FFF75BFB0448FFF778FB10BD000026 +:100FB000002002400010024000A24A0470470000D6 +:100FC00010B53448FFF7B2FB012861D100BF00BF64 +:100FD00030480069C0F3400060B100BF2D48C068D0 +:100FE000C0F3400030B100BF6FF002002949086132 +:100FF00000BF00BF00BF27480069C0F3800060B198 +:1010000000BF2448C068C0F3800030B100BF6FF05B +:1010100004002049086100BF00BF00BF1D480069EF +:10102000C0F3C00060B100BF1A48C068C0F3C00080 +:1010300030B100BF6FF008001649086100BF00BF63 +:1010400000BF14480069C0F3001060B100BF114830 +:10105000C068C0F3001030B100BF6FF010000D4940 +:10106000086100BF00BF0B48FFF760FB01280CD1EF +:1010700000BF0848C06800F0010030B100BF6FF049 +:1010800001000449086100BF00BF00BFFFF7DEFA9E +:1010900010BD0000002C014010B50248006800F0AF +:1010A00087FE10BD2000002000BFFEE7002809DBFE +:1010B00000F01F02012191404209920002F1E0225A +:1010C000C2F800117047000002480068C0F3022017 +:1010D000704700000CED00E010B5002804DB0A07A3 +:1010E000130E054A135406E00A07140E034A00F0D3 +:1010F0000F031B1FD45410BD00E400E018ED00E006 +:1011000002E008C8121F08C1002AFAD170477047D0 +:10111000002001E001C1121F002AFBD1704700002E +:10112000014601F1100000E0001D02681AB9024AF0 +:1011300012689042F8D370472800002010B5064886 +:10114000046803E02046FFF7EBFF0446034800680D +:101150008442F7D310BD00002400002028000020A6 +:1011600010B504462146002000F038F910BD10B536 +:1011700001E000F8011B131EA2F10104A2B2F8D194 +:1011800010BD00001CB50548012100238022CDE9D7 +:10119000001003A1064801F0CDF81CBD040000209A +:1011A000627573696E6573735F7461736B000000C1 +:1011B000C511000810B501F041F810BD10B500F0E0 +:1011C000C7FD10BD00BF094A094BD868C2F30F2103 +:1011D00021EA000300EA010443EA0443044C2361CA +:1011E00000BF4FF47A7001F00FF8ECE72000200404 +:1011F0000010014001490860704700000C00002009 +:1012000008B50120244989690143234A91611146A7 +:1012100089690140009100BF00BF00071146C969FC +:101220000143D1611146C9690140009100BF00BF6F +:1012300003200246194B19684FF6FF031940184B5B +:101240000B4343EA0221154B196000BF00BF15484C +:10125000406820F0E06040F000701249486000BF34 +:10126000FFF734FE104800681049B0FBF1F084B27B +:101270002046FFF7BFFFFFF74BFBFFF71BFBFFF716 +:1012800077FCFFF7D5FBFFF799FFFFF77BFFFFF731 +:1012900091FF00BFFEE70000001002400CED00E0EF +:1012A0000000FA05000001400000002040420F004D +:1012B00010B504460C4951F824104A000B4951F866 +:1012C0002400002100F09EF8094951F82420074924 +:1012D000083951F82400002100F094F80121034856 +:1012E0000830015510BD00000C2700084000002008 +:1012F0001C2700082DE9F04704460F460025A946A3 +:101300002348005D20B922481838016820468847E4 +:101310001FB94FF0FF30BDE8F0871E4850F8240099 +:10132000B7FBF0F61B4850F82400B7FBF0F100FBC8 +:10133000117000B1761C184850F82400451E22E0B8 +:101340001348083850F8240030F8150010B909F196 +:10135000010901E04FF00009B14513D14FF0000839 +:1013600009E00B48083850F8240005EB080220F883 +:10137000126008F10108B045F3D3064850F8240084 +:101380006843C8E76D1E002DDADA4FF0FF30C2E780 +:1013900048000020142700080C27000810B501465B +:1013A0000023002207E00B4850F8210030F812001B +:1013B00000B15B1C521C084850F821009042F2D842 +:1013C00064205843044C54F82140B0FBF4F0C0B200 +:1013D00010BD0000400000200C27000870B5044636 +:1013E0000E4631462046FFF785FF0546681C08B9C2 +:1013F000002070BD024850F824002844F9E700009E +:101400003800002030B5034601E003F8011B141E2C +:10141000A2F10102F9D130BD2DE9F04705460E4693 +:10142000294807682948D0F800802948D0F800905A +:1014300028480068001D00F055FE50B92548006896 +:1014400090F82C10012088402349096881432248E4 +:101450000160681CE0B9DEB100BF204948681D4941 +:10146000096888601B4982680968CA601949096867 +:10147000091D8268516017490968091D8160174A72 +:10148000144909684A6111460968491C116018E04D +:101490007C19104800684460BC4206D20D480168BF +:1014A000091D484600F042FE0BE00A480168091D8C +:1014B000404600F03BFE0A480068844201D20848DA +:1014C0000460BDE8F08700006000002050000020AC +:1014D000540000204C0000206400002094290020CB +:1014E0007C00002010B5044600F03AFE3248006847 +:1014F000401C314908603148006840B92F480460F9 +:101500000846006801280DD100F07AF90AE02C485D +:10151000006838B929480068C06AE16A884201D881 +:101520002648046027480068401C2649086000BF20 +:1015300094F82C1001208840234909680843224967 +:10154000086000BFE16A01EB8101204A02EB8101E2 +:101550004868A0608268E260211D826851608160F5 +:10156000E16A01EB8101194A02EB81026261E16AE1 +:1015700001EB8101154A52F82110491CE26A02EB85 +:101580008202124B43F8221000BF00BF00F0FAFDA8 +:101590000B48006878B100BF08480068C06AE16A7B +:1015A000884207D24FF0805009490860BFF34F8F3F +:1015B000BFF36F8F00BF10BD5C0000204C00002007 +:1015C000680000207800002064000020E02800204F +:1015D00004ED00E010B516E000F0C2FD0C48C06854 +:1015E000C468201D00F07EFD0A480068401E0949BD +:1015F000086009480068401E0749086000F0C2FD05 +:10160000204600F06CF8044800680028E4D110BDC2 +:10161000802900205C00002058000020F0B587B031 +:1016200001260027002408E012A0005D03A9085548 +:1016300003A8005D00B902E0641C102CF4DB00BFBD +:10164000002510E00D4F0E4800EB850000210B46F1 +:101650008022CDE9001003A9384600F06BFE064653 +:1016600006B902E06D1C012DECDB00BF304607B06F +:10167000F0BD000049444C45000000005D17000823 +:10168000800000202DE9FF5F0746884616469946F0 +:10169000DDE90EABB00000F03FF9054675B14C2016 +:1016A00000F03AF904462CB14C212046FEF78FFD9C +:1016B000256304E0284600F075FD00E0002454B1E5 +:1016C00000204B4632464146CDE900ABCDE9024011 +:1016D000384600F057F8204604B0BDE8F09F10B53A +:1016E0000446206B00F05EFD204600F05BFD10BD5F +:1016F00030B54FF40053144800F007042CB1C01D5E +:1017000020F00700104C041B1B1B104C2060002411 +:101710000E4D6C60C218083A22F007020C4C226091 +:1017200000240B4D2D686C60094D2D682C6001461E +:10173000541A4C60064C24680C60064D4C682C60B2 +:10174000054D4C682C6030BDA82900208C0000207D +:10175000940000209C0000209800002000BFFFF7AC +:1017600039FF064800680128F9D94FF08050044934 +:101770000860BFF34F8FBFF36F8FF0E7E0280020C2 +:1017800004ED00E02DE9FF5F80460E469146DDE95D +:101790000E7A109CA9F10100216B01EB800B2BF05C +:1017A000070B7EB1002507E0715D04F1340041555F +:1017B000705D00B902E06D1C102DF5D300BF002153 +:1017C00043200155052F00D30427E762201D00F0B8 +:1017D000AAFC04F1180000F0A6FC2461C7F1050082 +:1017E000A061646241465846039A00F015F92060F2 +:1017F000BAF1000F01D0CAF80040BDE8FF9F000019 +:1018000010B5002407E004EB84010F4A02EB8100CD +:1018100000F07CFC641C052CF5D30C4800F076FC31 +:101820000B4800F073FC0B4800F070FC0A4800F015 +:101830006DFC0A4800F06AFC044809490860044845 +:101840000849086010BD0000E0280020442900205D +:10185000582900206C29002080290020942900208C +:10186000500000205400002010B50146164800E04A +:10187000006803688B42FBD30246436813448B42E3 +:1018800004D143684C682344436001460A464B68D0 +:1018900013440468A34211D10C4C03682468A3428A +:1018A00008D04B680468646823444B6003681B6875 +:1018B0000B6005E0054B1B680B6001E003680B60E3 +:1018C000884200D0016010BD8C00002094000020F0 +:1018D00009480068006808B9012000E0002020B134 +:1018E0004FF0FF300549086005E003480068C06814 +:1018F0000068024908607047500000207C0000200A +:1019000000BFBF2080F31188BFF34F8FBFF36F8FED +:1019100000BF00BFFEE700002DE9F04704464FF08E +:101920000009DCB114F1090F01D9012000E0002009 +:1019300098B9083404F0070080B104F00700C0F142 +:101940000808C8F1FF30A04201D2012000E00020C9 +:1019500008B9444402E0002400E0002400F094FCB4 +:101960002848006808B9FFF7C3FE012000EBE470C7 +:10197000002841D0002C3FD02348006884423BD847 +:10198000224E3046056801E02E462D686868A04268 +:1019900002D228680028F7D11A48006885422BD067 +:1019A000306800F10809286830606868001B10285A +:1019B00007D92F196868001B78606C603068386040 +:1019C0003760114968680968081A0F4908600846B5 +:1019D00000680F490968884203D20B4800680C4927 +:1019E0000860686840F0004068600020286009488E +:1019F0000068401C0749086000F088FD4846BDE8C3 +:101A0000F087000094000020980000208C00002047 +:101A10009C000020A0000020001F4FF08073036096 +:101A2000001F21F001030360001F034B0360143803 +:101A300002602038704700000119000800BF00BF95 +:101A400000BF00BF00BFBFF34F8F00BF00BF00BF8C +:101A50000948006800F4E06008490843001D064991 +:101A6000086000BF00BF00BFBFF34F8F00BF00BFC3 +:101A700000BF00BF00BFFDE70CED00E00000FA056D +:101A800010B5044604B910BD00202085A07D0128B2 +:101A900008D1606A30B1218C89040A0C0021606A87 +:101AA000FFF765FB00BFEEE72DE9F05F06468846CD +:101AB00015469946DDE90B7BDDF828A00EB1012122 +:101AC00000E0002108462921FEF7A0FB4420FFF793 +:101AD00047FB04460CB1012100E0002108462C21FF +:101AE000FEF794FB0120E07500202076C4F83C90BE +:101AF0002584C4F840B0A786002D0CDD2846FFF7EA +:101B00002FFBE061E16909B1012100E000210846F5 +:101B10003E21FEF77BFB002F0CDD3846FFF720FB54 +:101B20002063216B09B1012100E000210846452115 +:101B3000FEF76CFB84F8158084F82CA066602046C4 +:101B4000BDE8F09F10B5044604B910BD00206085C3 +:101B50002046FFF795FF00BFF7E710B504460CB12C +:101B6000012100E00021084640F2D711FEF74EFBAC +:101B7000012084F838002169A068FEF785FB206900 +:101B8000082865D2DFE800F06404111E2C3A48569C +:101B900000BFA0680168C1F3400121B1A068022123 +:101BA000416000BF00BF00BF53E000BFA0680168F4 +:101BB000C1F3401121B1A0682021416000BF00BFE6 +:101BC00000BF46E000BFA0680168C1F3402129B111 +:101BD000A0684FF40071416000BF00BF00BF38E053 +:101BE00000BFA0680168C1F3403129B1A0684FF47B +:101BF0000051416000BF00BF00BF2AE000BFA068E5 +:101C00000168C1F3404129B1A0684FF4003141603F +:101C100000BF00BF00BF1CE000BFA0680168C1F3A7 +:101C2000405129B1A0684FF40011416000BF00BFCE +:101C300000BF0EE000BFA0680168C1F3406129B198 +:101C4000A0684FF00071416000BF00BF00BF00E01E +:101C500000BF00BF606800BF00BF00BF00F10C0202 +:101C600052E8002F42F0400100F10C0242E800135C +:101C7000002BF3D100BF00BF2069082865D2DFE840 +:101C800000F06404111E2C3A485600BFA068016899 +:101C9000C1F3C00121B1A0680821416000BF00BFAD +:101CA00000BF53E000BFA0680168C1F3C01121B1BB +:101CB000A0688021416000BF00BF00BF46E000BFB8 +:101CC000A0680168C1F3C02129B1A0684FF4006188 +:101CD000416000BF00BF00BF38E000BFA0680168DE +:101CE000C1F3C03129B1A0684FF40041416000BF89 +:101CF00000BF00BF2AE000BFA0680168C1F3C04177 +:101D000029B1A0684FF40021416000BF00BF00BFAF +:101D10001CE000BFA0680168C1F3C05129B1A068F0 +:101D20004FF40001416000BF00BF00BF0EE000BFE4 +:101D3000A0680168C1F3C06129B1A0684FF00061DB +:101D4000416000BF00BF00BF00E000BF00BF10BD8A +:101D50000EB51348006808BB0020F0210122114B8A +:101D6000CDE9002102900A4601210F48FFF79CFEB1 +:101D70000B4908600020096808700C480849096888 +:101D80008860052006490968C8600420044909687C +:101D9000086100210248006800F0E2F80EBD000072 +:101DA00020000020E320000800380140000002402D +:101DB00038B5044604B938BD6068C168C1F3401144 +:101DC000B9B160680168C1F3401191B1608D218C97 +:101DD000884202DB2046FFF7B5FE61684A68D2B24E +:101DE000608D411C6185E1690A5400202076E07510 +:101DF0003FE06068C168C1F30011002939D0606814 +:101E00000168C1F30011002933D0607D01282BD176 +:101E1000D4E902014A1E514B9A5C02445268208C5C +:101E2000801A6085207DF8B9D4E90201FEF72CFA0A +:101E3000E06B80B1608D00280DDD608D218C8842C3 +:101E400009DC628D2078E36BE1699847228C0021E0 +:101E5000E069FFF78CF9228CD4E90201FEF74EFA13 +:101E6000D4E90201FEF71EFA002060856068FEF7E3 +:101E700062FC6068C168C1F3801151B16068FEF70F +:101E8000C0FC30B1206C08B1206C80476068FEF760 +:101E90005AFCA07D01285ED101256068C168C1F3AC +:101EA000002171B16068016801F0010149B10225AA +:101EB00060680168009100BF4168009100BF00BFE9 +:101EC00000BF6068FEF78EFC68B16068FEF78AFCB0 +:101ED00048B1042560680168009100BF4168009125 +:101EE00000BF00BF00BF6068FEF781FC60B16068A2 +:101EF000FEF77DFC40B160680168009100BF416859 +:101F0000009100BF00BF00BF6068FEF775FC68B1BC +:101F10006068FEF771FC48B11025606801680091A7 +:101F200000BF4168009100BF00BF00BF012D11D06C +:101F3000606A78B1618D491E88B2228D616A01EBB9 +:101F400082014880228D616A01F82250218D491C4E +:101F5000218500BF00BF00BF2DE70000CA26000892 +:101F600070B504460D46607D90B9A575606800BFE8 +:101F700000BF00BF00F10C0252E8002F42F0200128 +:101F800000F10C0242E80013002BF3D100BF70E017 +:101F90000020A0756068FEF7CEFB2169A068FEF7FF +:101FA00073F9D4E90201FEF76FF96068011D0E466E +:101FB0003246D4E90201FEF7FDF9E269D4E90201F3 +:101FC000FEF7BEF9228CD4E90201FEF797F9D4E9B5 +:101FD0000201FEF775F9D4E90201FEF763F96068C2 +:101FE00000BF00BF00BF00F1140252E8002F42F012 +:101FF000400100F1140242E80013002BF3D100BFAE +:1020000000BF606800BF00BF00BF00F10C0252E8D3 +:10201000002F42F0100100F10C0242E80013002BE7 +:10202000F3D100BF00BF6068011D0E463246216932 +:10203000A068FEF7BFF9226B2169A068FEF780F95E +:102040002169A068FEF73CF9606800BF00BF00BFCF +:1020500000F1140252E8002F42F0800100F1140256 +:1020600042E80013002BF3D100BF00BF012084F829 +:102070003800A07D012833D1606A68B9218C8800BE +:10208000FFF76EF86062616A09B1012100E000218A +:1020900008468221FEF7BAF8606800BF00BF00BFA3 +:1020A00000F10C0252E8002F42F4807100F10C02A2 +:1020B00042E80013002BF3D100BF00BF606800BFEF +:1020C00000BF00BF00F1140252E8002F42F00101EE +:1020D00000F1140242E80013002BF3D100BF00BF4F +:1020E00070BD704701460A69D1E901309860D1E9B5 +:1020F000010358605068884201D188685060002010 +:1021000008611068401E10601068704700F10801F7 +:1021100041604FF0FF31816000F10801C160016151 +:1021200000210160704700210161704710B502462F +:102130000B685C1C0CB9106907E002F1080000E0B4 +:102140004068446824689C42FAD944684C604C68F2 +:10215000A160886041600A611468641C146010BD4D +:1021600000BFBF2080F31188BFF34F8FBFF36F8F85 +:1021700000BF03480068401C014908607047000028 +:10218000A800002006480068401E0549086008466F +:10219000006820B9002080F3118800BF00BF70479D +:1021A000A800002070B506463546E6B1083D2C462D +:1021B0006068C00FB8B12068A8B9606820F000401E +:1021C000606000F061F808496068096808440649E1 +:1021D00008602046FFF748FB04480068401C03499C +:1021E000086000F093F970BD98000020A400002062 +:1021F00000204FF0E0210861886102484861072013 +:10220000086170473F19010070B50446002544B1CC +:1022100000F03AF800212046FFF7FEF800F076F9CA +:1022200005463DB94FF0805003490860BFF34F8F1A +:10223000BFF36F8F70BD000004ED00E010B5FFF735 +:10224000EDF90446012C14D100BFBF2080F31188A2 +:10225000BFF34F8FBFF36F8F00BF4FF0FF300649C2 +:10226000086001200549086000200549086000F069 +:1022700047F80448006810BD7C000020680000207A +:10228000600000208400002002480068401C0149D2 +:1022900008607047880000201448006818B10120C9 +:1022A0001349086021E000201149086000BF11486F +:1022B0000068B0FA80F0C0F11F0100BF01EB81029D +:1022C0000D4B03EB820042685268426000F1080245 +:1022D0004368934201D1C26842604268D268074BAA +:1022E0001A6000BF00BF18460068704788000020D1 +:1022F0007000002064000020E02800204C00002036 +:1023000010B50A48006840F47F0008490860084694 +:10231000006840F07F400860FFF76AFF0020044932 +:102320000860FDF701FF002010BD000020ED00E077 +:10233000A80000202DE9FC5F06460F46904699460E +:10234000DDE90CAB4B46424639463046CDE900ABA1 +:10235000FFF798F9054625B12846FFF7C3F8012491 +:1023600001E04FF0FF342046BDE8FC9F2DE9F0412D +:1023700000275B48006800287DD15A480068451C4A +:102380005848056095B900BF5748D0F800805748B5 +:102390000068554908605548C0F8008054480068F6 +:1023A000401C53490860FFF793FA00BF514800688A +:1023B00085427DD300BF4C480068006808B9012001 +:1023C00000E0002020B14FF0FF304A4908606EE085 +:1023D00045480068C068C4686668B54202D245488E +:1023E000066064E000BF6069D4E902128A60D4E943 +:1023F00002214A60211D42688A4201D1E1684160A0 +:10240000002262610168491E016000BFA06AA0B19C +:1024100000BFA06AD4E907128A60D4E907214A60A4 +:1024200004F1180142688A4201D1216A4160002208 +:10243000A2620168491E016000BF00BF94F82C1021 +:10244000012088402C49096808432B49086000BFD7 +:10245000E16A01EB8101294A02EB81014868A06031 +:102460008268E260211D826851608160E16A01EB4F +:102470008101224A00E02BE002EB81026261E16A05 +:1024800001EB81011D4A52F82110491CE26A02EB5E +:1024900082021A4B43F8221000BF00BF1849E06ABD +:1024A0000968C96A884286D9012784E700E000BF2D +:1024B00013480068C06A00EB8000104951F8200002 +:1024C000012800D901270F48006800B1012704E066 +:1024D0000D480068401C0C4908603846BDE8F08192 +:1024E00088000020600000205000002054000020E0 +:1024F000740000207C00002064000020E028002000 +:102500004C000020700000206C0000202DE9F041FC +:1025100000240027FFF724FE002552480068401ED3 +:10252000504908600846006800286ED14E4800688F +:1025300000286AD064E04D48C068C46800BFA06A43 +:10254000D4E907128A60D4E907214A6004F118012E +:1025500042688A4201D1216A41600022A262016878 +:10256000491E016000BF00BF6069D4E902128A60A1 +:10257000D4E902214A60211D42688A4201D1E16802 +:102580004160002262610168491E016000BF00BF16 +:1025900094F82C10012088403549096808433449D3 +:1025A000086000BFE16A01EB8101324A02EB810160 +:1025B0004868A0608268E260211D82685160816085 +:1025C000E16A01EB81012B4A02EB81026261E16A5F +:1025D00001EB8101274A52F82110491CE26A02EB03 +:1025E0008202244B43F8221000BF00BF2249E06A58 +:1025F0000968C96A884203D90120204941F82500A9 +:102600001A48006810B9012001E026E000200028E7 +:1026100091D00CB1FFF75CF9194806686EB100BFA4 +:10262000FFF7A4FE18B10120144941F82500761ED9 +:10263000002EF5D1002012490860104850F82500FE +:1026400058B1012700BF0C48006838070D490860E1 +:10265000BFF34F8FBFF36F8F00BFFFF793FD384677 +:10266000BDE8F081880000205C0000206C2900207B +:1026700064000020E02800204C00002070000020B2 +:102680006C00002004ED00E0081C3044586C800011 +:102690000000000404040000080000000800000816 +:1026A0000000000800020406080A0C0001020304EE +:1026B00005060000000000000000010203040607F8 +:1026C00008090000000001020304081C3044586C93 +:1026D000800000000004040400000800000008005E +:1026E00000080000000800020406080A0C000102AD +:1026F000030405065F6C697374006C697374206170 +:102700006C6C20636F6D6D616E64000000040000EE +:102710000000000008000000080000000020000089 +:10272000000000004427000800000020D400000042 +:102730000011000818280008D4000020D44C000024 +:10274000101100080024F400000000000000000048 +:102750000000000000000000000000000000000079 +:102760000000000000000000000000000000000069 +:1027700000000000B11200089D130008E0000020D6 +:10278000C0000020E02000202C00002000000000FD +:102790000000000000000000000000000000000039 +:1027A0000000000000000000000000000000000029 +:1027B0000000000000000000000000000000000019 +:1027C0000000000000000000040000000000000005 +:1027D00000000000000000000000000000000000F9 +:1027E000000000000000000000000000AAAAAAAA41 +:1027F00000000000000000000000000000000000D9 +:102800000000000000000000F4260008FA2600087E +:08281000C6E533B43D110008D8 +:04000005080000ED02 +:00000001FF diff --git a/MDK-ARM/startup_stm32f103xb.s b/MDK-ARM/startup_stm32f103xb.s new file mode 100644 index 0000000..1e792eb --- /dev/null +++ b/MDK-ARM/startup_stm32f103xb.s @@ -0,0 +1,305 @@ +;******************** (C) COPYRIGHT 2017 STMicroelectronics ******************** +;* File Name : startup_stm32f103xb.s +;* Author : MCD Application Team +;* Description : STM32F103xB Devices vector table for MDK-ARM toolchain. +;* This module performs: +;* - Set the initial SP +;* - Set the initial PC == Reset_Handler +;* - Set the vector table entries with the exceptions ISR address +;* - Configure the clock system +;* - Branches to __main in the C library (which eventually +;* calls main()). +;* After Reset the Cortex-M3 processor is in Thread mode, +;* priority is Privileged, and the Stack is set to Main. +;****************************************************************************** +;* @attention +;* +;* Copyright (c) 2017-2021 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. +;* +;****************************************************************************** + +; Amount of memory (in bytes) allocated for Stack +; Tailor this value to your application needs +; Stack Configuration +; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Stack_Size EQU 0x400 + + AREA STACK, NOINIT, READWRITE, ALIGN=3 +Stack_Mem SPACE Stack_Size +__initial_sp + + +; Heap Configuration +; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8> +; + +Heap_Size EQU 0x200 + + AREA HEAP, NOINIT, READWRITE, ALIGN=3 +__heap_base +Heap_Mem SPACE Heap_Size +__heap_limit + + PRESERVE8 + THUMB + + +; Vector Table Mapped to Address 0 at Reset + AREA RESET, DATA, READONLY + EXPORT __Vectors + EXPORT __Vectors_End + EXPORT __Vectors_Size + +__Vectors DCD __initial_sp ; Top of Stack + DCD Reset_Handler ; Reset Handler + DCD NMI_Handler ; NMI Handler + DCD HardFault_Handler ; Hard Fault Handler + DCD MemManage_Handler ; MPU Fault Handler + DCD BusFault_Handler ; Bus Fault Handler + DCD UsageFault_Handler ; Usage Fault Handler + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD 0 ; Reserved + DCD SVC_Handler ; SVCall Handler + DCD DebugMon_Handler ; Debug Monitor Handler + DCD 0 ; Reserved + DCD PendSV_Handler ; PendSV Handler + DCD SysTick_Handler ; SysTick Handler + + ; External Interrupts + DCD WWDG_IRQHandler ; Window Watchdog + DCD PVD_IRQHandler ; PVD through EXTI Line detect + DCD TAMPER_IRQHandler ; Tamper + DCD RTC_IRQHandler ; RTC + DCD FLASH_IRQHandler ; Flash + DCD RCC_IRQHandler ; RCC + DCD EXTI0_IRQHandler ; EXTI Line 0 + DCD EXTI1_IRQHandler ; EXTI Line 1 + DCD EXTI2_IRQHandler ; EXTI Line 2 + DCD EXTI3_IRQHandler ; EXTI Line 3 + DCD EXTI4_IRQHandler ; EXTI Line 4 + DCD DMA1_Channel1_IRQHandler ; DMA1 Channel 1 + DCD DMA1_Channel2_IRQHandler ; DMA1 Channel 2 + DCD DMA1_Channel3_IRQHandler ; DMA1 Channel 3 + DCD DMA1_Channel4_IRQHandler ; DMA1 Channel 4 + DCD DMA1_Channel5_IRQHandler ; DMA1 Channel 5 + DCD DMA1_Channel6_IRQHandler ; DMA1 Channel 6 + DCD DMA1_Channel7_IRQHandler ; DMA1 Channel 7 + DCD ADC1_2_IRQHandler ; ADC1_2 + DCD USB_HP_CAN1_TX_IRQHandler ; USB High Priority or CAN1 TX + DCD USB_LP_CAN1_RX0_IRQHandler ; USB Low Priority or CAN1 RX0 + DCD CAN1_RX1_IRQHandler ; CAN1 RX1 + DCD CAN1_SCE_IRQHandler ; CAN1 SCE + DCD EXTI9_5_IRQHandler ; EXTI Line 9..5 + DCD TIM1_BRK_IRQHandler ; TIM1 Break + DCD TIM1_UP_IRQHandler ; TIM1 Update + DCD TIM1_TRG_COM_IRQHandler ; TIM1 Trigger and Commutation + DCD TIM1_CC_IRQHandler ; TIM1 Capture Compare + DCD TIM2_IRQHandler ; TIM2 + DCD TIM3_IRQHandler ; TIM3 + DCD TIM4_IRQHandler ; TIM4 + DCD I2C1_EV_IRQHandler ; I2C1 Event + DCD I2C1_ER_IRQHandler ; I2C1 Error + DCD I2C2_EV_IRQHandler ; I2C2 Event + DCD I2C2_ER_IRQHandler ; I2C2 Error + DCD SPI1_IRQHandler ; SPI1 + DCD SPI2_IRQHandler ; SPI2 + DCD USART1_IRQHandler ; USART1 + DCD USART2_IRQHandler ; USART2 + DCD USART3_IRQHandler ; USART3 + DCD EXTI15_10_IRQHandler ; EXTI Line 15..10 + DCD RTC_Alarm_IRQHandler ; RTC Alarm through EXTI Line + DCD USBWakeUp_IRQHandler ; USB Wakeup from suspend +__Vectors_End + +__Vectors_Size EQU __Vectors_End - __Vectors + + AREA |.text|, CODE, READONLY + +; Reset handler +Reset_Handler PROC + EXPORT Reset_Handler [WEAK] + IMPORT __main + IMPORT SystemInit + LDR R0, =SystemInit + BLX R0 + LDR R0, =__main + BX R0 + ENDP + +; Dummy Exception Handlers (infinite loops which can be modified) + +NMI_Handler PROC + EXPORT NMI_Handler [WEAK] + B . + ENDP +HardFault_Handler\ + PROC + EXPORT HardFault_Handler [WEAK] + B . + ENDP +MemManage_Handler\ + PROC + EXPORT MemManage_Handler [WEAK] + B . + ENDP +BusFault_Handler\ + PROC + EXPORT BusFault_Handler [WEAK] + B . + ENDP +UsageFault_Handler\ + PROC + EXPORT UsageFault_Handler [WEAK] + B . + ENDP +SVC_Handler PROC + EXPORT SVC_Handler [WEAK] + B . + ENDP +DebugMon_Handler\ + PROC + EXPORT DebugMon_Handler [WEAK] + B . + ENDP +PendSV_Handler PROC + EXPORT PendSV_Handler [WEAK] + B . + ENDP +SysTick_Handler PROC + EXPORT SysTick_Handler [WEAK] + B . + ENDP + +Default_Handler PROC + + EXPORT WWDG_IRQHandler [WEAK] + EXPORT PVD_IRQHandler [WEAK] + EXPORT TAMPER_IRQHandler [WEAK] + EXPORT RTC_IRQHandler [WEAK] + EXPORT FLASH_IRQHandler [WEAK] + EXPORT RCC_IRQHandler [WEAK] + EXPORT EXTI0_IRQHandler [WEAK] + EXPORT EXTI1_IRQHandler [WEAK] + EXPORT EXTI2_IRQHandler [WEAK] + EXPORT EXTI3_IRQHandler [WEAK] + EXPORT EXTI4_IRQHandler [WEAK] + EXPORT DMA1_Channel1_IRQHandler [WEAK] + EXPORT DMA1_Channel2_IRQHandler [WEAK] + EXPORT DMA1_Channel3_IRQHandler [WEAK] + EXPORT DMA1_Channel4_IRQHandler [WEAK] + EXPORT DMA1_Channel5_IRQHandler [WEAK] + EXPORT DMA1_Channel6_IRQHandler [WEAK] + EXPORT DMA1_Channel7_IRQHandler [WEAK] + EXPORT ADC1_2_IRQHandler [WEAK] + EXPORT USB_HP_CAN1_TX_IRQHandler [WEAK] + EXPORT USB_LP_CAN1_RX0_IRQHandler [WEAK] + EXPORT CAN1_RX1_IRQHandler [WEAK] + EXPORT CAN1_SCE_IRQHandler [WEAK] + EXPORT EXTI9_5_IRQHandler [WEAK] + EXPORT TIM1_BRK_IRQHandler [WEAK] + EXPORT TIM1_UP_IRQHandler [WEAK] + EXPORT TIM1_TRG_COM_IRQHandler [WEAK] + EXPORT TIM1_CC_IRQHandler [WEAK] + EXPORT TIM2_IRQHandler [WEAK] + EXPORT TIM3_IRQHandler [WEAK] + EXPORT TIM4_IRQHandler [WEAK] + EXPORT I2C1_EV_IRQHandler [WEAK] + EXPORT I2C1_ER_IRQHandler [WEAK] + EXPORT I2C2_EV_IRQHandler [WEAK] + EXPORT I2C2_ER_IRQHandler [WEAK] + EXPORT SPI1_IRQHandler [WEAK] + EXPORT SPI2_IRQHandler [WEAK] + EXPORT USART1_IRQHandler [WEAK] + EXPORT USART2_IRQHandler [WEAK] + EXPORT USART3_IRQHandler [WEAK] + EXPORT EXTI15_10_IRQHandler [WEAK] + EXPORT RTC_Alarm_IRQHandler [WEAK] + EXPORT USBWakeUp_IRQHandler [WEAK] + +WWDG_IRQHandler +PVD_IRQHandler +TAMPER_IRQHandler +RTC_IRQHandler +FLASH_IRQHandler +RCC_IRQHandler +EXTI0_IRQHandler +EXTI1_IRQHandler +EXTI2_IRQHandler +EXTI3_IRQHandler +EXTI4_IRQHandler +DMA1_Channel1_IRQHandler +DMA1_Channel2_IRQHandler +DMA1_Channel3_IRQHandler +DMA1_Channel4_IRQHandler +DMA1_Channel5_IRQHandler +DMA1_Channel6_IRQHandler +DMA1_Channel7_IRQHandler +ADC1_2_IRQHandler +USB_HP_CAN1_TX_IRQHandler +USB_LP_CAN1_RX0_IRQHandler +CAN1_RX1_IRQHandler +CAN1_SCE_IRQHandler +EXTI9_5_IRQHandler +TIM1_BRK_IRQHandler +TIM1_UP_IRQHandler +TIM1_TRG_COM_IRQHandler +TIM1_CC_IRQHandler +TIM2_IRQHandler +TIM3_IRQHandler +TIM4_IRQHandler +I2C1_EV_IRQHandler +I2C1_ER_IRQHandler +I2C2_EV_IRQHandler +I2C2_ER_IRQHandler +SPI1_IRQHandler +SPI2_IRQHandler +USART1_IRQHandler +USART2_IRQHandler +USART3_IRQHandler +EXTI15_10_IRQHandler +RTC_Alarm_IRQHandler +USBWakeUp_IRQHandler + + B . + + ENDP + + ALIGN + +;******************************************************************************* +; User Stack and Heap initialization +;******************************************************************************* + IF :DEF:__MICROLIB + + EXPORT __initial_sp + EXPORT __heap_base + EXPORT __heap_limit + + ELSE + + IMPORT __use_two_region_memory + EXPORT __user_initial_stackheap + +__user_initial_stackheap + + LDR R0, = Heap_Mem + LDR R1, =(Stack_Mem + Stack_Size) + LDR R2, = (Heap_Mem + Heap_Size) + LDR R3, = Stack_Mem + BX LR + + ALIGN + + ENDIF + + END + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a585c2f --- /dev/null +++ b/Makefile @@ -0,0 +1,18 @@ +current_time=$(shell date +%Y%m%d%H%M) +# 获得当前git的用户邮箱 +current_user=$(shell git config user.email) + +.PHONY:clean cc + +all: clean + +cc: + git rm -r --cached . + git add . + git commit -m "$(current_user) batch push $(current_time)" + git push origin develop + +clean: + cmd /c keilkill.bat + + diff --git a/Public/ADI-TMC2240-CN.pdf b/Public/ADI-TMC2240-CN.pdf new file mode 100644 index 0000000000000000000000000000000000000000..175fb4d7266d4bfa2f225c788d811dcce34549a8 GIT binary patch literal 3463856 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

U;+FOF$p12Zhnq|g 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�? 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%0A#ndO~;+hN2w+PD^4 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 @`Fu;g**vCqc{;eyX@WR8rc631 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 z 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

lH>YHj5 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 z�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

)xOlMkIctRzBSybHfwonI9*ea zurNH?`)cR9;YB2kn|+Rt$uNf$g5`qo;niS3u&SAg9JlD0HXr5XY94{0s1>Gh2I26)2u-ymNL^rS#B z>bu0jQi_)SU~6xPoa6PiV%p7_{pxN}YS!r~Xtx87pQ~5hh9$VKzR+lsxwr|btM;^M%x#QI9*ULm;1U=;K zWyg3`@u0F0{D+!5Y9PxTRL`TH3w}WiZ6|&x2-OTFL%18)Rc)Z67M;Sg@auJ9*Zg|a zR$GU@Jlle0jjufcdY?;3=%WALR;ewx7&x3(ufCGgoT zOtAIb@7*kas7?JOC5L3yDf9JIQ}@ijVGmjS@nJ-5^k?7N-VuRK;o8pxImAZ9!k^n& zLLyB#Q?DVt>;#pu)SiBu-Ob;y8*;m zKbBZNS+`TdEB#i^|BS+0^rJ$rbKA&;2ZrSr*_-D?f&&W@yu}uIXmMOfyL~|k9t+9`ER@WvAF+c>JCH+o*p>@mPeSXf!?$!6QN)dvfP7U6s~_CAL1#+HPQ7Iu!5OG9)n0>X@gf2n)-FVPHlPW|A* zOgDAS58*5i>>7dHjjoH#3bWx;r6c+t^M($hBhHrsUHEC!LJ&Fl%KdCT=XrK%%Q7y<+YOf-8g;yW zZfFi{DVEpma_^R+jy{4zu77tM_^dp45?+~+qgev|B)eC|G^YE8qTMPBHshiI(Q>hd z`S)F#qK%@#S})S<6YV|RMR;IEgMp&XGrZE_ve0MGB)!Ln%vTjpoV*vk`wT&{6=fMG}COA zZqh3*g`O0fPsA;D@a_6KSz82*iNhPe9Ltt$oIEwU1Kl*68eiF8R^6<7VGTu+E z(fLi<^)$0vSU-WonA~y6!=~X`Gx$d5YWJ@w!_F)}u3r-L*0+UWT|!m*-FD4F1HZ>z z9_LgYc)oM6gYncJqE&H!im7G#JZrRw)~|fG~4{8T-u>0jH8r9ha2x!Wd?4NG|lI|>u=igZXMWN zT2*=07S^Pgcc>eJOeN-2HJ}5m87+!=@c_W}nqX$XGy78nV>TBK=2el|4nN3PcqyE{ zzIwG}_~3J&I#8$ci;Z^30L`R`rafeNXgl*^G}>Y=B1&B6X{-Fzgt2>UTkbHYH zF6+Iu?y3~xo1n3~RKKn#@7wbZ!JQ^p>F^d)NeOlgPxn>Ze`hB@bdF4TiC7$XcWM>s zsHhHU#a6$IX??qhV~F{(!d>;V9~iXcgRTpF*7$jBxQSF6!571O5tfsu6RpBY3CIs- z@!!cZ_rkiQ9qQWNR9`36%WS5r67k-$mW*dV@b{#XOI`WV7-kp}{!dV?*q!+O|e!fxA!V@~NRKFH( zxbov?ci>dMo{S`^-B7vGV9ls;dZDf8sNq^j!e`gG!nFDN)z&SW!0W4?gt(f)y5z!v z{^Qv^)GycY72(%Nqs^Jr8^6o;((QEn?B?MM`?HGqBM6N(CuP&M@mWicLZEF++baYG z@dLSS^PJiSAmOZ5U6TEXeCO6sif{NiIQ?gvmTM1g@EvCNK}e5aSWVnwcrM{Zhzn!_ zdc40t6OhX@0L)~0l=wn;2ejFIRtJ4i2~)TqmVf}M?ps(7$o6cn$?Thho}fHg7Yxw{ zmr;xxB{Hgh(h9U>Z~>KLOqWVIE2r(33HaVKri)&$ZXrEyD>)+heUVYOJs>gNDi{9C zDXA1)xe&-1$|*j}Y~FwHtW9(!+GniceJeEIsEb6-~BOs^!2GocI^-y zP78ANG0*lxOP#EDdSjd|9c<1$@23!SES;S19}Ppo?Db)pl@R@ihX}I%35vW&CCU}u zTI(6xJl7fLi^`F;q|mhGtPcavdc2v=psC(BOQNZ4tqCNQD?$I9J#x{_2|M}0HY$5S z>!ib__1&;7dfh>Ff)-q)=aB@DG!pF~inh+`*L<66jMrI-6F@yg4~V+-{I{*M4Xz~= zj$vBr4F|4X`5ibNt%Po_n4=CHq|BAURHBYpd!_8yX^vv<3ZY6`W!GN9EqTP#Snt!a z7PFVg^y#WKl{2(7+8@WO67z2+8a6UOrB|8HiM>oDo)fV!qK&s&h}huXwsb3z@0FhMFLm$XGlGHJW4um23kdak z93s)aet3uUHR8nwV&h9g%wx|gt@?KJ&4Q}e$e3LfCfZZps{2IZ$dtM=wa3&@_U7eq z>)QHpHt}Y#7CZvwiNE()5*y5O(EcZw>#U(U(Nw2+8%vLoYeJ-8KXAk#vo19Z0K4J% zPwH$DMeG5qMX5&{YlOHj4^)@!LbQx4_>&`R`uzqp_kU$6=>aB#n=oxKY~605)J|OO zmfhqv>RGK8yz*UZkg+IvVd`VP#7;FK+eZ>OjX`vK`p*$8HPAbr+7pCeC9xvr1ALm& z?~OWrgGB4U7VBfw5{1`jxXW=x*5!YuOmbJ};*z$~wXg{5I7N zlaZPmO})&QtFha!R{>4>cpDr2?yBYY*`)@(Dq=0O4j^nps793nkLAWKPC~LzyJYVTf@X;GxIjcj~%lZ!<&Ecayp#%Go3zZ7{U~XX>>YkJC zDS`kF)APL4p>D^J)Kw)&mROV74n$kbqI1QrK--rz?ruM{kz8Jm`xbmHu-&)-6~GPU zQF|PBkPtN#aAe;U7f+Ge6kWnA3PKGD6>V{8HB#Z%w3D1odzR|Irb#=AqBj-yK6UpC zzBuBu_5<>kg+PTG5tNQl@fTM#XTEBG1tSp#F93h}>~ku2BF2GswL92Q=Y(*%cL@qo z;P=MZ7DPWw0c0+{&(TmRDOOj}MIIyT8(NG#GZPjBPk!@F)$9r;|+OHW!)8op)aR`FtFAkf%G z9ds_G@*iJ^t)UkQkY9GJu{h{_22+=cWVlVr|IL>Y3_Rguw#0#)M_aEuZcq5oel&cZ zW)4#^CkLpv5>NbCbK@o_Yi+8+uJQR3y`h^ zXzcozoBPdUL9I2`RRRx0QuAV4lW4CY83%s*Kl6g1VuXa%+=9bp2d*(6_L$QnqES{;?EIisx`&0dB zW?~o8wM4`6>S@uVhjZ`SN|C@<(5t(=^ByOm8jHuym!N)1NID$;OMFM}3|~7Z0(^ef z(@AqU$o5^U6M2Tg;((Sc*y-1d^~l7c1onRo^vig3?_!;_fp;nr@DcZq9a@=Eqp)2@ zX_tDR-_MOrNdnyC7!7h_iB|KzG3i~zk(vkF)_64=Uo8k#8DMT(9)drfifwk@L~SJb z+djsXjiadwDt1AYn&MW6TQf6)D2X%ihlOc>aFP|m3UXht*kL`+RP9RfV0eOG{)Pfg zMS3$6^dir@`;Ubd?qZf9H*2r!04Ax4yt6vAoEa$~rs+n`^w?1F*51Fg*zSip)M`35 z!8yVW&jA|sg39*%^hWD60p|9(-g?1d{YxYxT+IPXxw~IX>nqz!=O{5fm64v1ZV_xF|y)Mehh)>GwlBpejJe=BP}^<5=+C$F6CV^y=mmT*hCt zs=?#>hn%kvIm^F3?>5B1&-%=dMSGx1bDC9=_MfIc>c7>l2mCuGQD)0~J-<$xt-QjM zOLJSKKaIr+JMr06uCaCYXQh`mrh?)LV4&aa( z&RCpri(9UWoX|Y5_8_}0Q&53yRutBe!RU1UI{nYUttt;=qHF)ve_%_RDab|s4W1m= zDSbk6NEl{`)UP@las^P=*Ayj_=W*F?uHvgFtAlG#l;-s*!luRoishEBdLW=_QQyE7 zKJ*BAEFsUc-GPM*R)V2^fSma^JwDm>Q$D3JlbtgwYPfU^BaQQR{h04Aew4ypv1xd5gXnL3VR@fs*Xw z#(uI=?Bt1ip*pDzI@k={e@lwZ-j!a12WN;Qb$+BD}NkwLx#zy%WZT#KG03@9tdia+Rb^h*q)Rk zKpLrq-xr`9$7(>=j^httTn6*q+!C+Ay@RdcD%qXvB$!^!J=yq1Ci6y-w{6f1aj;B* z?~-k^pnP{k4KO7z6w=Pfu5UmUfge%6v>y*KPUZD7Lt4tx zOHy%TXoX>cS#C(jHd0`T0{!!!cJREzAfZ0Dv!flcTVp+)T~h&y#U|FLxhvc& zWK>S6y~c|CP%Q`s$<=~Ec|p&p<#D5hv^o5*L}b)9SF~zjdDpEF9VF~KWAMJ0t8Lv^ znH^ilAH!{z(+Y1*hgm0>~$5D6#o7dJL&x|2sJ>DMY4jHo<;3}?CGnY0BEa8 zd4`P2-l&kTen2GvR;_w!_;NY=IvMKFDjI8X53l$*78kW`k@YPyhN3X!-Xuu#6suU9 z1MTrs0LD4s^GrdMXPcG-28{i0Tf=Rz`n<#XyqEPs)isuZbrvWfYA8X8P<=9NJ|pZn z-Wym78tQ#He+3uaRsYCu^mIdl(oqhnbQr&-%&7wYb9AMBPEwOxWh@AarU>FrzgD*F zes*N(T^YD{$TPpec%$_O)fVIww;SBFU{(1QN3hq9L8(C>agVvRT0JXIXD8^!Dyi2rkiLMI z0)!Q~LXm&fY;hgP4lJb(<=sO*P4#PwvMomGja07%6-^3F_UIY)1Rt1D+cI#)mF1zM zyodEN+d=|=y0wF*XXU^@<39KRB*AJq9!ZxKLwBmWywBx@*?{c+o!4?54AZWetNz5} zv)$~WAC~T|qw)ecBS>qC5kxuHdXQ)M*x^;0)gV>j9@&3LRRaQGzr;2-EpykI$_5R# zYev3sl%ThwHDkqkBWEvS;Fed1`clGvh7$Nexa3=frE@L$=$7zjea(b)t@qFmn=aYK zD0Eoe*$IS>cCPh62JL#&D2$;VDiQI7-m|5;hSzLy&Bd;rvrV+_bk$9?QVe9~si3Q0W9OIkzk)EVl^$T9a44lC~VODE8j(crYF7r23 z&0b6;T4gN*`GdPL)t_2{DUB!ad77|_hGZK5|3T4tN3;F5VZ5rUs;#PDsohpf)vCQ| zDXLaW?NyZ2t{D+Ys#aTDjaor#?-^>u-Xmsgv111bA%ZvWzd7f7PEOAGKDnRk`ds%F z{##k0?(zAaro3JQGl0r@w7W2#st9?lS`3{PBA8p!9js^+VANIju|juxmgVjA%bBec z@45Ze3yJGp#R1-ml?Hvt?q!96rHnUTopV=Eat8pi+G5%<;O%LSm{QmJ;p)HO+KdG- ze;7_g3xgjesyi_>hw2|6$5rJCn+9Ae+`ZT`<9dSu>m%(e@{Z||M;~B1>)-{IA<(pJ zpgfN&_*+oZ>7AmkAya%UzaP|iXY7EH3W2 z)-2lUStCrsg^e)+H3FCH;pE2%pl0VqKYt1&J=29nvDnfNyh%pNmjRw0 z+-CEgj##{Y-8@jH-6boGqajG<`+`9?H!xt%vddl6xy#;@>>0CvL_;ez7w~Nt(IO_L z`1f}b!YLJzZf=9ex(gC^Tn8UV$&{b$8ewSjicighwMH}gEmyzh<*l7IW{VdD)a1;a zDGIsHg~}WE4ZTqo?$;^q4`P$U)SO4tSN2aKqHD67&|NK% z^-N98uGW0v{Gc&xAwg-J@2ZIFUhTT<9S`P6h|mqC1@I^XR`H~S?JTu|7t-;_ke7en zOH89kOt0gWPh^qHRoXK%`zKI^#+HS!XiMkA9}f_4o6UJ3`je6#+D{7mSTP)D;!O!e zO`r$y5v~PT3prqqMOTk$EIef8(w2UNIpYel`N;}Kdw)NF7fEvxd$9k>xC=#IIul15 z(!sjg1yy9lT!71pJ9E= zv-yFGpHP7;=>wujjN^x}Uc%@>ERHI3FtUokIh~@@zy7 zeu_SB55U1|%irf~u&Dg%VlxbTY=974Ht`>Nqx~BJ$hkB?&;5#M-zJVV-osmJ+xx?j z_8we4=@(Y5|3th;67gCKKtY$%(nZ!j{9FG$zO*^Ombuq$1L%wjma5DnfbbVSeT%Y2xQ1MNfRF<$3ht+wf23@woA zZVCxEs|7{2l*I!wF2(H?Xqo+6w)ITN%=7@>7ACv7+VA+kz!AHh&Frc!m=YQ|Ih| z`1E5e%3oIxneye)_5|E<*1##qlO+@>cU3wD(MMf#mSu0e&hl@zOMI~+L-yBP`TBzM zHcWCYf*pMGUo)WMj*0mOcp}ybQ=)0z{vqjnSz)qe{j?XMw5_wE);``$%CA-p70mVQ zDkg8x>24V!0;#QHLWOV}aKZLuhIIN32c;o1ajQRaz=>s!cdj?TR9b^aqZ;x-Ww-AM zD%hWAodwR8pUj({R6nZAik7e3u(51NMU%lI&TV0q$xMqIOo~P1oJ;%Gzh|^0>6{2f zEwZ7HxI!yBM8sc1tY4<#h!hly87_;^A$>(5#0GiFhTbx>}6 ziTO#VI5Y4XCj(GFGs(+OkLB%_`JC5^8zX_zw{17Ci$7-;oA$7%m0>^d{`|wcNvfyrJJQaPmwv$H_-pqd#+&Nzp z0E>_i`GF7hN&f3rxRPeux?DQfv=2U%e_lG4At2H8xgu%t7d{=_2fYp&i$eW#qo|QH zwI}L?Mg?Vq4N$2WY z*@<~-N_jF3&+FYcHp+Kg90f3dyPF3@lOj564*--(x6RYIvw!3X{XN$V!E;5xfpk!M z=(c?t$}~U^(!OlI1$f)=6a~O!Knt3e|OGUrc6p%*hKaK7rfJ9J4t?AXV~6x1tEalJZ=F*w7|8XQx*Txy_8h zEeM`u++`cV$TMS@tSalUUnuuf_HuLKB)|~2b@_=eIc_nt7~oO6G`yVpdXGWDs1JQJ zGF1$o+I?zbh`mhe#QC1d+<5}x#??4jVBcnqdD&+9`%1X$%ztZq%C+wNX>wUtz8sr< z8=zjqEc(VfXhw6Y$Z3*CT-Jb4iTABVe#p>7-K`uPsf_`4^p7Od>r3}Z^&%DmoXRd9 z1zhC@l&c0>#*lWTeS`=hT>=|+R)?j88bSO^?g3c|cax5*BhF3Z8Q3(DZB_|F+04A? z(p(v-{zA!)k!e!go>Qdy&+PAC@D}gl0&a1o9cJ`x2}jt?u~=jl4N|mJDy4$yb34a? zi2>FQCVJi5OJinJ_73q@xy@JL+>{q*Z-wZh^8Vb|vE1=}Y#Q(Wa0!raqHFkM)aBb| z^%F&d5wDl?Fx7^$()Hqf8Y>w=;F`_}if!cI2jq|mp7<1Nutk5%ZrpGEVNL2UC`EIs zsk+Rv1|^(jyBaSfGxVLR+x0JB6pXegw0FxkfGyba*5)3MRnCh^&G3_7e)L9)DRJ^_ z2TT17l5Ax&5y00>h+W^AJRP^%)b}^tmdg!%k|5~@+&DGRSTva|Z2y2L*xSnX&v9%` z0l!|Os-!mkg*8Mq_>>i7O#XuU7u;U4aV^v}1pS(Q)W4~>JKZ}ZI+ip%NOI#pQBtjhXdyJUo-vVC{tEis@$lxDN+Z5lo4 zBgItDRo+H*seE1IrZO2vWj@!5++j!&?uqTa9SmI3{_l)7eL;lBV|njr74iCOvV~wX zp8#XhtD(X@L(?1|CwkRi#|d^qt%Cxy*SF-on4d^o?)j_{@fbY$W>k4 zds1JZY-w=f=fy)Bx_H&qEsnjlRqI{y?|Nl)%B=2NSgjyBCHgE*En>*-mOL}|VO0Ct zR%D!SNdW+@)zqcc*gU9@trIps`B=q#pb#M0P0a4JygKpY1l?03L~lx^>?=qJ8LQ>9 zoAAJP_T#_w9~=w(-y!TEd<0a9FbuTQ0yQk12$! z$vyG3Tao?Kd!>v?zgu3Bx2&C7!_!|D=ZMsO*z-hWq6kIXabjz!r9MZSGhNc<4i;*t z_}H4$(*MqWR0KAN9GwSi;oK_19vG*(OTKZ%s<&*Wm%iH4+7+cZS(-hMn(}A{S#@U} z{AK9-oOMrecIyg?Wwe&muG`Yl2HTko_1=S-smyDf0Y#J$!i{iExBt#G$Bh?QidOTMJg1GZ?@4>QN$Z!+G%sJz{FO>?Hf;;?@Q5Yx8jCB* zw-#1darYRE)^oC}Q2MX7k24Z~Y``hU$XZDHXtXGISnO&z`4_{iuRQRhRF5;S)V))y z(d0adL;On8%wgd zx2hhlL7e-<=J{MDoRv+lpPp%gxU->h=xhxv{P)X5d_Avtbb?Wnd*%y&?$7VP5U$}~ z9Q}nHF>yfAe-?+8@TAFqeE}0n63Do-fkT1zPxUPNuo)$Mi7Sda?9PCnmB6FzD#aWn zr&MjU*y>?ZSK(o%Yk(IWABNw@h46c(Z`LnyazDRfHQTNapS<}k%uC3R*=+wAC%Z3^ zjVt?Nnq`Z9+kdPo;k~EBXW&?_PdoF2d4b_?(V_w`z@xb0Ma$}j&3DPIzz6XqTIqeo zpuo-OmZr3s&E&76&ChT@^>9*~7yI)38}6L6(2RwIA@8*cK{Ik_`r-X^iO-H^U)SCR;>GNBS>DATGT*oSKOPA(C8GlD08DyjmF3Zkd?%%5J&*)} z4)>#5FHz(N&S-JAR5|_^Y_pGbWBRMouIXV?F6fU_aN7pV+iH^$?d$F;OCaf^D#r@$ zYPW}VEHn%xYY2nh3JnH1F5bM&eC(Ad&Bli_#mhgN!ACY6hFm0I8^LG5nfVImol7@1 zcA`n9XurM4Y-M?kPss}-B>pv$QXyevd#9S)#A|2jcp#j#+tP9gYF$B1`PTztB`+?% zhj1L!bG8;$pgFTZ56?HP3_xYaiCqr}jq0ExDK?LFOZs%&+N{dupK4>XarhrxRyB`} zana@EuWUKD&lSuPQCR^~_pI`FuPSaBS{j&@R(O$pHwHwXo_vQd-?Gv3o96clhfY`3 zg@p^QSf2f^DEE-OlUu-3-Xl9CWK6%O=nQ8cQ$80q!%J&^O-%%xG(9}`fWLyV<+TH` z+GeMrje9w(M^LQKn98M(5Hgu?a?I)61&FEIA}YHLR?)8Ut?(X=HsmEF0ylaP%deK0 zjvHqLQuRaO88s)03uzKv1;8asgs#~X^O;yK!s8`%{TJ!T?$I+Iw8HGFsn0eI$Y?$t zWrZ@^2{X(xU6Ba@s%igf%EcZM^w^Ky$BH;LR~X067gC$B6JBwsqh<|-0ZnCKNNdXB zH91*sbIqe32}|kt?fE9%EsZq7fapL_KYka=cnu54t!xgNwx;gvmOfWGzQ zTSYu>&CS47%X4;|*lU_xv=d!>3QPl6VI@Kb9}pUB7bwV2tf)}U;#P0NtVA(R%36MQ zaK>u8D!p_qWiJF6GxNe-PN|0Okd0jpXl`A<=TGN0mZD_CuFbBeK4Fh^nVOfnclMy} zb|9@0PH9#0AfFQ^5Hl&epPXk3Uppw+8}!Pr8;@#NLSb+CBmas4UVW@!ugGc|tS7tz zuP&AD2P)o-%33@Qz}OBV4&=_dECY=p!Fs_9N5ph7U&U0`H}dJ&kl-S~!I_kto)d6u zUcF{hv(Er|WEVNecLJ{-Y4C8WDq@&x9i^AB>c5iMiOKeAys#WI)6`2iWT8LTGbJ|-scKH% zjPgP^W~`PgTYYTY@y|La?8Mo^1<0fWeVEzI!t;HBoKi|kjMI$lD#p!D)R(%6bY_Mz z#mXWr_ZI{u?o!<5E^tG3>QmVGGA{EA@JqvRg)0z4->c-M)NEvlMjIJ4)A;`G6N4t4 zJBhDN)gTPW&ugm(A1=M0A7i%T&cRfMCr=9l_>>#4LJt+qZTL zK~bG!_ro#o)`wF2uOk(YuwGZaJ|7SZYvw5oBp$(6p7fNsdf0xnvXYbbJ6@SbUc_{a zvMJg3+1e~KqBBhrMy&?JQF8|B43W%}(nv?~X#M%Zcm^S4m8te_TBv2Xds%vt-po7< zmMnLo!Aa`GxSNv|T`tilx&>ZyB5x?pRM!}PIHpZW(2j^;5ro#x;=^t(9O)mc1pYHy zq_k7NSVftWh33rT;N>e2V*IdQ-fBSEu4}EJH{*|!as1O}#{=nlT#pHVGyfN9tqg&+ zQ_#}1Z!5~g?M-SP4Kclqo^Z;<48xG4Ix#ltEYFAd?BU)DC%>GTF<-`Tw>K}-A_5T+ zVIY{;U@t{-uE7Wrlw2vhcVkHSwyHe+i|S6yr;zI>f1KU_6Ee1k&MkZ~?RNm zog)yZn=Q4v@7J7jCmGn4Li`$lso%}NKv8l!RS)giH2Sd7iu}g%je`JZt;MHzlI>t) zhovY;FW{Q7^}deTSRQNbck##KfE+kcw@q^{KKM4x?J4lskM6NirEW=0%T2wNKb)Id z+wmI2pQ*>A4VtVTmM%&|x%>AeFX$tSBXzYnJ)nxp58jw6!QPRu2J#D8VZqHxmg^Pn z2d;ug#q*BNq;_%rJcXq>8!J+>*4nVvxk_7D`r8N_iy3iWG(FCrS)Hv`MtlTUAGl(P zGXAZ%P9x)zJ6FnsS{1)ae}}X`cGstBx?)TIIdEQnDp*mtmTIyV-uJ*S={%|tCsFzurs@nY)4M6Sme+?*iDyLZ zn(UmFu3EO10FH`96?xv9G>Nx?;9FNBc>>)NKoDlx4gn}qn^fm&lm7C4;o(^~J6zzV5;?H`Lfmnam6QIXZU5rz z-qb00oX76|`cZ^U?waMKnBBvS*Z@j~#oOh1JHZM;(jsi0yYO8MBU9l%yV$90UXo3Q zK!$`pdC#t{1P8?+)pkaAm%9a_XBoJNIViY#)j4NgP5!t*Aqp${8VVdLSzkZ&S`U3S^j&RqX<=QW>HN8j-|jTShPb7H$9rnK2wAyL)gFY^v6gSKbnY4 zDdOnCKHtA?s;up^F)qa}-(ILYS)H<#Ogrx!G_H>FkPKCJ3TWZyvVD-OJEV@ER)sn! z7Bm`R9*?DA!srmGAMvMYh#)9rQszE3Rl&LOr)Lv;X1z2qWL|woWYPv$)7dGp{)T;7 zc*bhQ-qP`}hxIP3Gi7DM<0xAj#q^*%cfUylbq6^5cxV-8u2MB)n8t9NZ84cc@*56! zF=tjFl?Jfg7Z~#Rw8p*t$)HO~+tssJraL(Smde~*kweCsOD)ItG3_*P)M^N;iaP@_ zDv7RUJKSA=n#*wZrL;pPY0jtQI_-d-6yTG6@H1*@Z)b9b*STxp*x6it>7f-7Ymk$M zXF^E}2HadNT$ufMX_K^CrAg`~8j)0H^Fagn5>bbF45U^1nSvtE(SRfZxxjAu-vh$S z$rM=LD@Xu&yfl9B>6B^sZ&4{Nw4_tC$jv)0PbM^q^rPLyGWIje#;uIOZ%|M07Oo~I z!qO$D#N`ogQ->}1afeb5G1k<)p3kuefaB!HmS*+YO=K~c83>CiP1NAg@jg@413&uq z-L{$mgQpZ#k}Yh+XMp3%tX|!RJYlmPx*@|Xoh2|G3ngDN)<*9lnGjU(Kt3&ARAVWO zVx5}bHaxdZ=!_px-$ct~b&YrndFHuUuD?G2{DtCa)jkQRDkHMR8&B(T->^WY#zL<9 z4bF^Bz3lRuvE@vaB-WSG)@+l$B^@Z(>NIF{S3archx8ajxJ?X{vYL~w>8`NhRce=U zZ`l*L$CaOXZ_ONd52ZMp9)%1w4PhD=-@$Yz<qX+*`}awQBvtIlb6|NJL4O=|ai<>+^w>1G-s1V$m(W?YzxxOVcycD1m66*TG)skO)pxBeG3LA34TM)oi+`op)U8roDd zXrWax`=9+-cj*MjnZ#;=HIeB9%qldRv+Ta#=c~BtI-v__xJ;)%Yje`6S)28-Umt6@ zxXi|au*6wK1!HWyp7bj%{OxppvT^e&q zesQIW>nY&I>2)8g{N`*q8~!E{imFmEu8VSpS+DC&0x-)s3of&%c-3(5%Hq=@=!`AI z=5JxtLQQVTS6GepjIarr^8nt7QL~$8>|YSsRVXFCX_a}#<;nXOl~j(IS05>Z;fq1WoGGU+2Uq!vS^ z8r~pKDB=fGUnIC_K;BJ^3|H6=`b3gvDNK69tnO@uNrMvi&Z`}o1k@HvV0Uut>>FVX zb-66V&3<3NwEV}8xeuqM z-uakrHdU^chJV2#d^>cJ1Q&J$H;4Ni`$iI#cN$lJ_VLw`DT2 z4QXxotb@#lj!xZgeC=SLe1o&va3+gp8haFdqZpen&c`rJqlDXbX!m6JXR$>_v*cX!FZDWHT1CON|T=Y6t%0h-wVdZ4XZOE6S+ z@`9%1NSXxmDYdB%5_{m5mJMHtDS4s0zL8RfxdzH>*)^RSXGbe&dCk7Y-znP(knAb<0G9xH;I1;6~g#P_wSa2;)nzP=i5o56#jPe#1&vaK*1B% z6~mh=D)r$%x~oDzl)k_fJ9klE{#Ob(0G=J^pw`4#(hPhPMy zbDQX$Bu_G*Un|EbLqMl)Ta?BS&a}gBiNEpq(2`!+cXBWBN6$m_O~Uq!2A2vwzT0X_ zfNWY-&iGZPOrZiU9O3vx}mDf~$A7PtzocccGV|YJ$P?_Xm^_ zv!Rlcqbdd1fo|+haL9#el?iRft$i&=%BBXFm$*-sam49l6+VToTotK5=HKlEO{UmW z(R0=tdg%B)8%2z)vc?%nMh804N8 zvL_2dpIo`9jVcq_-=hDUWEwriwx|!G5?NFf1EW#^qEnvq%=O&!p1B0o06R-kcV253 z;I^Q7kNc{iucY%$E|)%;SW`&g(*hj^ZgkFWp(Hl?%($^CG)ZXB9)z@~sPdZOPXQ%W zMh~{@TMBWWDt;>FT35Hd>O~r@1<2QliJibI3LG%4+cTFHzR2i&5ByDbDgk=^ z@QzTi`Oc$b=5rfkyT9+$(~_&a(Kp0ybAGj!pv;yxwxiAqDf=fLS2%nUJOAUXYqBF0 zNj1t>$@tH=Yne!jwJxSX?`tRLF^wwwqACf|7DncAr#V(f3S`xcm+Xh$n6|`44*L{gE=ff0k8N;YY$MHTO|&-V4VS2$xh#XuLon;ELuPa0!Kj{NNI3ZJ2FuW|2mQTq zG2s1l$#(y1w8wV?R547GUmD2{F?}xr!gV%N&wB!1WgOOLe6eXyV}#o_JpQ#fU0B^6 zI$bmDoc@h(*4!zTA{i2Yj`JBd+)WK{`U?38&DHhkcMOMg&$LO^V{Fs^I-9U`XhTxF}?uo6B^Rcd;|Gg4!LQ-^uwWhoJ3Z|7xa{FM!^AzERRHp@(zF z+m-^Z_%cHo5!xCv3^dG~f4ARs4^ob>Gh~QRclyoat1I158^L(${+V330%jt+Bq~8{ zPm-eDM7&&i(BeORdM&RmmM)x!)RFjTucNW#$=qVk0dr?au@Sq|L!W_EB1mjdk|07a z=$w-gH^krgII(#9I)^{DEQ11RXJB>C*m8Yob6mP-Hra0I@f$DP%5K(9UG4|$L-@x| z`@GxeaZJ;~1gmW(f!-%iu#h(d`nY32fq;79VF(NfR=pRKl4=`&tV zB6*jO_q|oO7A?zi()VU9y6a53{~q)B$P3l^SPGO?7QbqCR>7=`DH`*X=3u2Q1G{-Y zMhhaw*REOmt4}gDmdjv~Bt_JKmn>ic2-q}`c$yDf9PQeE4i`PA_| zb6rTHFKZaGEHdAC)~Ne$wb-$Zlh(h{VrN;r0{#~;X$>Gm=+2BFs$`vw#34rO@CuF* z^W7_lJ8=UnM8iBG+gE8tBJlxpDzqOpHi=Vd5Kfc1BjxfbY!nJczq0fVkLWzt;~vXh zoKFO;OZy6&1X%yno@_|k*f3>9IW6-mta2)nGDDQ3L{y?~r{e~f_4b%kri{aw&$Mv` z&Sn+mTJ^rfe-uZHo!R3a;l8NyJ*XrAapIt?#HhKm&hS3lBVd@ZGdk;7FicJSiK3 z&}!A;P($4ajT@sSg;w<>2@MG+Ui1C^1{7&?l-33$(OqCOQLU#1BjvR~vsOgXqh{7zxP((Ty5VhFWx@tyf`J|!B@E0;e` z+b}PY<+Z<+yNb4N!*0Mc;-&ay71BN;gs#5n#hGu9E1iz*9m~Z!Ww8HpF2E~C5fY}|Fw1_ABFx=B7>Ys%>zuw ztXQVMWZg*1BIO^0!A)=WHiH$E`BB-%#q&yAbP-6qXkfO8>t7`iuzMDbG*VUp%b7Y$ zT%|@U7&l|~E+Cnl$?cNin4Xq9nDRPoH|T9yHLbE&1Fx%t;PU-B;}_v3^^-hy`>cR9 zNSE#W=f)68QJxo5)a=Za%$%ZpxN)YkeXL~xpVZC~Z5yCwQ1T94#De%oAx!oDZQoA; z?99F={Naji$eo+TGxzfZ_ki3cQ_frAEA6{UAVP(r+u&L29WR7J#@(4T7*-HH6EaF$ zUM%U?2kj2+49j9TGR+UdN!x1=uWbYLKfh-WJ!1}t{)^x|<|KL8zh>*f>ld;k6jbr= zW<+v;k!rO$S*yfv;F9>2z#h8D?hVmIn{oL2tjX@lOT^-(#zo zl~~zhbj|v2iNt;o>+a%HPjfqFw#kXgS8Zi4dhETgoY|Xxc~~^vAlFq&D5{{3%zJj8 zEc~f<>)Bdr;x>r)h%N8coek31#c@oRHT~%txdu-7BwqK!fBk zPIA-g-c&JeU+=@E57Pi2ld8e#G|L=o#!wb-&4~QrfaQNRH2+EU<2Y0&W%LmC`$;k3 zJze(BeYMcO0_!+no~d#QJO+yG|N9Zqr%cnlTb|kq8hz zYEPnp9m9;w`XqLHy->?;97>YNyWU00FL&;xPbG;dhJTO^R0`AR$$~gWnikWnHcH z*qfq*i*dbPXyazvZr}P^ANKQfUoxkZsPCtoG9dZ+>T^F%wEgza5WR0h^EKs9PZ3vG zvG#Li-f4U6bMBA&&%t(kKljXfD4l_;yij(Dx$-IEupcF5N(*kEwLrvhcBH21g)tv! zKr_Cc%|pV^u1s;VX)Kc?K|u(32u4-};v+bObJJqoPt#Pi^&rNH=Yx71Mw1Txj7Wsz zyyAbflvL+&TxqONGT6_vy^Tv&z)Qy2rs|=Ai20Pv@VCex(M7Tv1}RmO&_;l<6=7gH^dn#pr#Ep_!7%aA=hL|K}5SsTY{+B#!Fu{Z*X!)x>G1)Ow{6%!j-0+{Rq}(mZm)H zRRTp|?O<#brx5f-#~qE5=XlmlS_?U@<%eEUGi8%aNh{}UXSuh|%YYr?7xs>2GF6J1 z;CCMFMV+I>Pi+_`a&d)PxSt>;igg$T3IZmsmr>AI8F6%W?7!a?4J&MB*V7A)y>%Xk zFA4pdLDzHd(~O?>$AY7B3os-*0l>w2G8e5yva@L8#?_ z-P?A^9mkja(EKJn({*o8*QuR^i2phPk>NR#0}hW@)deLI)ih=bic>Vt?~K-&QlH3) z(_MaB{JMZRcnRZzDG3acv$@xN@@S%S#ByGpFWjQ%cKjvr}dQ=v8hXNZ@=t5lJZUW2G#a zYY%3ZQT+Q3Ohw8{2h7|l>5WzhofwBH5r4B-EIKfVhRN0TXijKMsZ$yeb`4JFm>R{= ztIdZu(+a~g?H(PKXzq?jt-f`iWqm+dqw=$g2U3U&wlF$Z`B!?ss~B77lv)_&3yT3; z1dR`ko$boF9qIR$#bXf!m%syZNF0_h#JEO$E0RY{Qg3PMj#@E8Rgc#s3{sN2qwovQ zjEq}IDKm{6VnE!NvV_IXF`hX5*|Fl*Qc|L#fJ}zw7gWUOzpnSg_=vm8E`!Z#164?H zJr7DRuO6_o*X&54@la1r(%fo>zckQbo8r3HOSLf4W*f;t6zy)U0$cGnfATzFt@WwXDI268A~&FYL#?BOM%!~a;#9H_|xhckJ-b<$L9o! z5hGjZUh{ZOpkOdpq3mX{k~1c4%*#65%jra1`y7z^!7HTSm04)-_vXc@-<*CS0Clvx zC%>J-Y<`dUco7#T*(@|23v!h&a&Y~);>p68?9tygl+I6f#{2LGMI(7-%Dgy|gluEz zuNH~gy2$NF=dp91R))AtJm5GM^`O`L#e6t^4TyRS4{pxKIu?!U;;vaU%S6)L1+)TQ zsk@m6NF$sXjejS~^6d4)Wo(wD+o^|`_VpI=fgzX;NJjPkQ)WTvCEaD$cBvUY)q||O zcRy2FLY>CiJ<)eR3IrQiRyzOIX{i^9N~@L$|8#3kZ{or5!y_$t1_+nyyJ2|5>IX+S zXx~?IE`EkDwHx$l`gkDiY|67!!0AlVW~1J`$+h?9v-VGjq`lcBA zM0P?YS;M-__Iu^fs}&^k9mA7}igme>laf8|{ksO~RVU!ys!@krO8a!1_^+<6iwPNh zI3O}eoO?KHWfCv5xFjMoO&?*3s^Nrc?u&;~j04M}ZRQK0!E|wTH*YWlJ$jW6Y`&7% z2PWkTpP?=ybS4nKl6U^Bya#1Fhj?Ay4);+i&%ID8Z#YU?IG0afxX;^O8t<{+2>-ZY zjeE;r0O_jz{l&dH{>Y%2=+yiKl~OHOJ5rzXp*fi}bRuQ8C1o)C$|=cC{x9is&~*6; zdI&Fms1S49!cd}VATlURRx1@hzTL~|Fxi$%T?RKVvZQRi#57-lF0_?e#>?&ap|^jw z*eO>4W|qU*GIsm%w%>AGtiDjDnqwA^cP@vBswEBv?oOwU;SDVRb{*-@0_AFe(t^nTg_`|9U$X_hH?qFS1*-Lh&BTzhE&Mik zVE4$28K|yn7NAvxAii=$S!Py+bPq#6R`4OTIH9K@aZ(hwFE}9I|l?H zX+&_vuZ{)lG2Jz8gC^p~v`527mo-4);rE8vs|#lXJbX5B1KJLUzaPE$)!VQAG4592 zHFfdTr*}K<{&9FI8u*ghi0kp6$2706#XXGtQ1;QCr38)m@90{|b!KC`ni8wGC1o?{ zZNpbN2$hQd%0>h)5p%YaE}MMad9vPhvi=-!n0^jDKf|DspL8{Nfx1`3UcBN|r0wxh zje^KZ8+{L8n`kD>Ke}g^tSbpMiiJEv!8}V7&!4n2t;N+PeJMD=eS3g??|^1Mlp3n- z!nnp@MD{5kvVSW2d!&+RPi_*h1Fy1umhM1FWs8^6bX~lFB4Pn=_$H}jjoFDh>P?k= zzt!ip2vx8s>pz#)cExfJ&NSil5guaQ&t?HP#G%dOCa{0U56<6q=hwbx_LaOKGDLb< z*mX#Tvf>Q8XR7)R#1aFTe8k>gGWC-h31Zq?VG5|;1`E3jE>-xC40<+fM2FN@skIak!;EW`Az`}?A_Pt0l-!l#dN?k1B4E| zV0AuP!M*q5;5$JKZov?F>UZlPZEHi(EalPe2UWId;8Q2^rR0Bw2hAWs;<0^bUFE!V z{(-!*(K^Rc_i}ktOrvl)8)30_+HkcsqD_QX14q!2QvhmJY>MxDxx*5?DC%NQy<)=vB+YXqX3+Bz zp$1R-bms8mxEEz|4=0_|SQI?4{=Ir^;>5D|Kgo-Rbw?*Mu<}!beX2c1@Ph`1*wa7_ z!aO`O+-qi){^?sq>ch?SR3XMb_9?zAiFu#!sIem^BP}|cD=+^*oOc^#sKV>n*x%rv z$JTsiE_fJs1~Nq+l;(Vh#EADQA}!8V{Yng1fEHsRmlInXveJcCeoAg1R=ggJ#j=l& z;KS0kSCgOVbi|&w9Xhg{w`}?3^k~6ta_M1|;`H1u6iu<>AxF*Fu!su>tn(oQs2TTu z<&vm|Fh{EmWkf#y|Bt}=ODq20RLp|RWUqXcz{ClwDir&3;??^VuR@*3OC7Nl)(j8r z31w;%AF9IODAw#y8ujBbS>2>QViqvQn$+OcR{)-_q( zp_B-=Ss`{Y5&JwL_D51f@AbL5Fd{L2w~jmZ#e%G%Dsv>!!#5E;?Oo4}Nz=C-BS`5d z;2wRAHHdyztLq$7eBoc*i(MzOlIeo7WYGc6tp_Y~YI%jQ(4?-XWvaN=q#fR~ za&H87--(QS+;=qnx9f5!p|DGt{*%wlpDv;z*L$E;X#MyJr>Fq#x+L;WzZ|gO;N0XV zn{ozwcWV5R>+_0$Yr$W`1CLtV7JU+aPd74-idNtVl)#$S*TEL4gl7#c7WA%wwOfH8 z#%wU%j{B>WvFDdushte#wJn$Vds3=$o*aIvYnS2EaYYS-E=m|`H={|e7s+W{!3umT zQ_yl8bK18?$!BNR?uLGOllQf86WU63rET*bC!UJ)@W&OjJ}LBLMO51sgDaoNPZ?z@ zbl@fEMp*qA>*5}@G=XV8Ycdc{{gKP)q6}rrvCM;0n1Ed5( zxeP}$K(t;lJR7ThsuDHvkT!-U1?|0^(6M`yKH9%Tnd3HYDKb7iG5B0t(-49DT&3!>+_v>hpze`kW68W4{ zN~?_yuqba*>e1`HFK1oapT2o#{;7A|=C!eQofaV#T&4G^0dII@i@;r96@tcj7SgC3gn08M_UrWY0}+Ew4PObJhIwmH^n9#}bo+V$|S}QAx zz{q%6+!}x$=uS8Vk{aDko80bHNt7$+F%O4zUzy5FZ7G?%Q5`OcZ*D23x?p-iRj#4G z5aM^|g$V6O>%R)O-d$P0#WbbEM38x#j--77;ofP!=9T<_Tg}$xrPY7O;u6=rRbj>oaX;;bp0oKzJB!o=dm%Zd8k@d=g?2hyZ zvR_dQ3_oNpzn-@!dx^9VsU}#gF1yXnrsaAkJ&e#EN8FXZm*SJI!eyl>(;|^-UD$}? zsD@qH+F$emtnc@WZ9po>`fdzobJfNfyCbu|)GfkQB6ajt?hR;S!`A~6sN?D`;w4z< zZuh{R@S1GcQEeliY5?o^( z3r;r=5qy;1TbP$4dsp~y$aU$budH?^!m8Jus{c)y}fM(Ja%(@7`AWXBj->Hdq=(Q338(v#<32gOTXxo4X!-ByL-)qfQ6L|YV13teAu0Zt5x!ygx0^>Q100%VZ$RqeFVw1B(i>M&p~Xy ztUr9xH7O?2LLTv>y0U4&z2|OHuS;o`!a6Z@n8(!pJp&gnY88A-j)(9a%d;X1A(!4z z7CfAOGF8&>Pq&AXRQ`@n+z4|GJv_eQ^~;Lae&xK8%dKw`Tg8}MsQ@3fFI#0jv?@xn zx3RB0-TvL<{*n-+#vSD1-g*|a*>eBof4`qEx6HMoo((tm$v+O@n;Ls9TPy^)?YZ!f zu&nb)z#$39FSzHdg7XX>s_WD0FpBL{v-S9okPPOFN?6W0Gh~o;WM$BQI)Hpcr(B>aAB?dI+5ra_Pje99U#jFp zA=dna$kTZN@1S(~X$zm4!VF0-f~-#RU!3v@^5q@_nKaWe8Pv?;V&!tmvTnSUU!f$% zz01Oz8jaS9+v9C&*~<3G=G(+*dX3ih4r)SHN3wTa(v7(CXg6MYep`>r>4Utzt@t`B zZf&tDjY~gwP_GC4G%{v7Th3Iex*~y<&e`>vX zRPd;%W%o(vzA%rl-+KG3W?_rr^$Ptr{L>ofUyt{X;`l$YCEwu>r{ezi{iL<_d+I<{MpZ_GxR;F%i5oOe}AKN z{u9k_rTkt$DU#3^{E3;Y zxq8?iLiFo#XN&*P;cRq8%81XX$hPNSaKqcIV8?g*LLJX})?$3w#%r&d$+NcE-qnAp zpkU1mjEk`rEpw);J$sa}R~tU3>lT7=|5lk7^L9U(YO~OXrB zj+M4aB1k54)q9zP>l_9RnIQC_ZJjRelN{F7evnC-{s&R6;0Ib9T_ z?~UefGq4Q~=bwq?A8tH0sjMyPig~4q?R%+;y&3Zv0Jg}*djB9n=8=1eQW_768%K3! z@c3C$cg{G?R$|Uq+9j@RWqXd32s^Hr&J?IqL$GJKt@G~%250Z*-%-7Vvn?hCYT%jH zd-=5gUcFIQ`1H}QeDcBThso9U8&Xa8QfhRyMg^A4v()4zMpw2)ICu6q%YQxHePs^F ztXkQU8XTu$B>gDJ%qlWu$BZ}LZOnX@+0@@%-vC!O!Je|!2h1-zc+4)b<^$4|`kJep zP2~-kX1Mah%2(?VoENXk)~{8)^14>@;d`S0c7v4xQ1$pGx0f#vx9>=sSs(gN8T{?u zC)J4t_N(vMKB3Di6MZy4XV2D24ehO_Gwp8fJDMjJkNcGUHQs7&o-LgoI?DoP!X7@= zd-i&I8X0E@vZr-+Xn$)BM2RhoTP;Wo8(X*c`Cr$%F{4-db)0^dt^VrmgR5CfA4Ts! z$vrx&NqeX@H9y}{I5k37Gg)+t>VQ-wx^!DVUoV~6b?v(28sy4Tb@?s3Hm%nt|6}hh zpyFEAb+(HQMZb@)=OK=VD?%qHHuamXb-fQ1?_Bs2! zyYCq9+_7fc)aqZW=KSmXs|FIj#9iNM4^`a=N=_#rxoXoQcrP*a=R*(U)ZAwUeeRSi zP-3=0y)s<(R4TD<1}WCvp!`Tnm1zO;^z5N!ob7X1={~nit+EzR_O7YlhtVe3^LYPa z{X$>G)Jw&`m3{2T^3oFiDYt9An;Qy>oet*d9L&-KkKRpcs4E%SEjBpz+P$`K`IEWb zN$zA$VoDo#9T$+`0`JQ)@Y2O)H&IHd!)WVD@GXb(MMz*TA51httHnn7!Xw4hFg$0% z?Cd~cGSnxWmeke=RE^?692+*YkB%8z==fyFl2^ISocr^NhEhMUtHS5h1KE6}YRbt~227!=P3whM z?>)q-5x5l$7P5IUFXl+tTGifjG7d1 zKL-&uErhrdq|xB|k5qnHfOj~AvdnxPdtwi-jqLZWh>KkVkL&A~&8q|U?VcJg9x`hn z**U`0tlsQ)&>VvFfw%1$H>gS5!n*C+Qv|iAMfxOQt$yKPt_I_u;*pD+j6a_D;@TJPj=gJxKx@Gd|H^2qXX}U6vD7WXI zOXCAp<_o#u%|x2+C$eXE)03VH>A`m&ejfB<)T6=HT_DRA+_{n28-YV!c(YV0{Fbh# zzPk44vqVzU^}M#9NN_#LS?6`={fnVw500={ep###VsyqAu_wZqG^WVt+)n7nh5}-U zHyQ+ZHtf!L-4ogN)_B2$2YL{Mg;Z+B z8n=NPXUZA%oZbXuffXn+io9$qnC4fj9XG6YqV)E@qkeg0i12CO`t*mpUZLBD4L@ru z%5@q~$HpD^Dd^nFUBCXtq}NjEFt59<{)uDk(}cV`lMz&`nE}hm*UBSnVSdP1R~6sS zR-lK{<%xj7pJd~Bo>d!ua_K6^*;X``4$+|+QV90=!e;Tzsfn$uQ?mnQk|9i~vlEIi zTwu4YRsJ*j53g9v7Q9dVDZb$>J7>w0W{djLf{k->$&OA823^B6H9=`4H5qBMNKRka zsxY>vyYwX&@>aOvn%x*6lguZr&J4@jV|^w#6s(_IMO#JtYzNaaxj3h>bSz)*6d@>l zSof+S@%z#YM?J$PZQ@dh6tGunkEXL`;*F;vIkRY-i1FK0ySJWAOU4Sy1Qyk_B|M39 zZ>coDcmQp!TodS~ZARr?QVmKdSec_gNJdbF#DirGd+<`8pGkkEI)2ZYKq?obO;z|T zoGVPPWcwYZQbnyUJe-qw1uhy7>L+hzU8&D<3buw*Gb(!q?5EQoGO{5PQhLx?dNCfR z;j&l}W%Dz+H{U$V`CzGZwBXhs*r{KUI9#shXrc>O?aj>#Z~dm%dzh#gm9}k$rr|yk znW!cq6s@8rr*#=$?1_@WEB?#5zfzPIjE&sov5I-Lm2HX5gr@ey^tMzg9Ux|>lO2b+ zPK=piMwyQUs|P-vbC_WL;64*q^O zz2-3Ub?u=1sGCz-NKYgzFIe@5CVjHMR*-U9^7FU+@ZM46&jNqF&!6xPf>}EVVa1>S z_5OED0EK>&U1G>iZ<&rZK~nxM+{0hlPe?kQ3z2F313vfgSM7x1YT4bWY60ia;6UnT zT5T;-R}cxDZ`c$2MZRd2#)$8BP0Lfsj{hyiz}em!`d&6Sj-w)7XK~t?4y}}&4kkCF zyt>uIgtk@aprn;mAR6Wf+IZZKq6@uuVQzVPDm3lnhmy4j#rp4r1C06T<|G3{nR@(Y z$LZ$-#Mb*+XeoN4t)BabjcXBwwDdc#E~vM>W}I8M)spAV7pTj)Q^rgV|2|ofI#woGPbp&dP)M5*K$(31x0(AbTMH19z{hmpU-GOhs@uaCA;NP+YyMP#T!tM9FFLI zyNp-;gZZQP>%O*6)^9-iT>V?AaeD)ccnT^iPTCiVj^eMcd+A?&O|krhPrP=R`q>t) zwq&9f0fla`)Ex6|;2N~EX~>bq*B4@3(>Y%q6|y<1ia9vHt7&WVo9)+p`z*-$-9USD zz*PRD>DMNM6deM{QwKH!!c4o@N$ZL4<@79irQgQ6i%O;tD3Wdly{=r>4-6Vij5PZ3 zsob=}=Xj(lYsB*!=(6u*BbW7Xu0U7keIZpLlgVEzD%ZKmu3{N)Km(OMlEn+Or-HZA+h(+i0fd|nE;am46dxQ5Trj#z9 zXbV*o(NmEE?@cn_sffqSS~;G?rXK$%|#R$2Wf{Ci|U1p zR(?hwCpp{})-NAyl$9&ziEB6E?%sM_w+I;pRIzHst;v>_GqGfHb@P<4epC~8bV`aS zFDKxs=E!3$G~I;`WH&r2clG~j&(HrO?ptMiQ&$08;-{bk#6%n?%?r>_Y>L?yoR*)V zZ$Yd79x`4c4W~(|iM$$qxx6~98Ww%9U6xNus%=y0f!5acg5l#fOsmXE&PcM~&3!U( z^UrUL2O_ylbjj7OX-X+R<^>iwOH!I?K zA9IgLgZ_zbJjomWQnLRnTm>?gBhOKWJzt4&TOOlvanc12;IXjve z+x%L!duxS?#L2-&&PM)gRY-_c+{whu)|s50jgyB}+|}YW(A3$IoQsd0^`)`BtQpY4 z(wUr>n}=1>?6>onIk>r5rQaD_IFWO5uu9w6I!j2{x$BWLvvc#2|2#;}&cVa~t2l#S zhoy~efbTr$m4GIWc20KY&g44AkYX8rI|h7b#sMjZA3~2h`LA8d#x`cGI!annTAGZ1 zyXMy=zYc3acyTtdWL36vv@w47YuD@Fh~#2pW0i9@eg`xWx3zd@M$X2nWbFPMH|(73 z9IQ$}Cnuoo@BH!b^Rj9zM1EruvRBhiMov=6*q&9+6e4<{vj?l>Yx18Y z{VeS7L_h@dQ&AAXXt=y}{z)X{+MlQVB$(sxWV623Bj?m3=iuiyAm@dwvU8AgadMOM zaPpCJ^YM`L@$r-M@v@O~aPt_D^Ko(Lk@NHML)N(2^~ia+ISdT`fkDonWd30r(!h7l zW{yAA?QAA#W@2Y*#;Ry$YXLD34qk{{{xB@}bc69>t6;Y02&c^|?EOc^?ECXJ;=u;V zfnmO?&FIe)$KkCo-wJ`Qqf^X~QR%^-Zo`Zdc#aCDzrDO$i`pIQ&aQFhOY21pCY32j zWI`wjZfAJx?XgJ+wXYu`Ez&}VFMaWVQajg-<4Ong^!C48l5>`i{oKrBU|+9&AB1Iv zUS27_{=Cv->pEKH8Bp;^kKo(4s{7}+2OwQ$3DS&l`YzdYX1v`7QuY#UK5k9cwJAia z+p0|Vh^rvbHcK5|PR5t?X*C&jX-~?nd<%7Pfp|2?FniS8`7#qB&WoDFb^3;x8yQkM zlH6Q}Hl;R)pY<9}B$-A+TzU}Rd;Q?a=2~7EAVj99^=TJ$e$V(%e2(W&a{Vt1=Qm$7 zHMVvBsck2SN;!U-ojSPztCTH73lKB@o9Qsi{>?gmngtuHrrj%B;7?VNbNt!+ z{;&-mc8KdaJDcf2%7?rR{zjmjjj@H{^tA>)XlQl%pKSlW`KmC^&efsgV3V1FrEhi0tf&u`b zATPkv0^lX!89Y1!Jlrz`1O!CHXGkd6s3^$DCk#OF60=aB=hS z^6?A2l$4T|k(HCz(0rx!T3big#MI2(!V+lZXqn_pYs*xcIQ+1=YeJHNQR zy1oJ3-u>hY3IOvPTafSH82exN!hrAv4GRkci|~^#C}=mx2L=Ncj)EN?Q(O(f*a3@@ zBj6dfM10PdPDCnB^;4X;j^jwU)Ld&cXFpl{#o52cSm6IB&i=;O-}#ycpuj*ulm~+W z5Cz;mM$l)YKh6CU7vcOjx(GYu?&0@#f{T-%|G)NsKEA*E|NjKHs0C>MFAuWy&$Y2S`ZD_~a7vUeT{!tl>Y>9`Gj0yMFS zlkrTbSm9=03S&lC2@FK+cE*Rk`ml+y&oBj0lfnkP7G3v4>Rqp`t8JTNrJST5mBJD7OJ_H!C#_AG*O!pAh z;ed(R_II(tbJA#a%G1ql>@vRNpmSNG?1{_ zidiERR42w_9Ly;3e|C`R!ztmmWv91r_5@%Z4=JD5)jk3XuST*W?N=-1E-fwWRa2}K z)P&07Dh5(3E#}b9(yPr3~AJg#YY$ymE4)WJjXsVj5Hh+LH^ zDi}z#`AybVLGRTY3Iz25f%eq1EQ+`%2x$zfff_LMDq?enUJ)lERJ(3>=~=)jA@g~J z5b^-uX<{;_#6~6p1&2;`02z=kak{ZYU5%=HC5b8VN+G!3%$z0^ zdVruUufAmlJp^o)hvcpeeU|5rz=t3D%nQ!`shb`DYXhjV<{1) zFL)_zhuXsKqD~D-ru^1eKq`gq$dYvpO|2i_G(~rWe{ z*VXsqgHS(9Th)2fRXZ4F(fI_`Qb4#{ALvP&W+KSaO;eF8+3U{t&EKJ8W4@LFN1|A5 z3`KoRUZ}fwj4oV+-QBJ`c~!1pUT3gG&bFI@E9FIVn72uL$yJrgo<3a+n74em94Nwg z+SSYQrQkTa!t71pG5q~t!zsGH#nc_rzPD(pQiY{fQwYS&3Wqtij#!d0AuJ#6f zLVzj20NKp7_dWqWW>I`!Z%^P;A(hM|1qH2cyu4pc8TJqn&LEa=H>D>+c?7PpRWNp-9pUTQzmf?|6( zAQMMyE0HO*TO-@h^3T(Uiw}LZA+N@qBR(6|tymvL+*?6$HUh~DQ816B(BzN%30#%VNOB|CuBK$Ko&6l6#iu9}vi4-h%;v5MyWli3qlktkO!SLte-Pp7xKlpe) z0c2@x^cL>wb1o$^z7gRMj4)UypKgb&w{og^)Q%GPy_^3OQPF;_uXS%kh1!Uw0*Lau zf32nz?vdUfE(Cl6Jlg`hW}Qa6$7-%TPaK(K5(3R8@O)fkTeKhz*5U;-i{8bxI6VOZ z{T@eJp(9=jiS{kCKLLUhbxv*S!BoDK6W~_QWffk{FXtGIeb~p46i%FDoB_~A*X%NF z!|CQn^@TpJVJ*hFmTlukykdQr#H)^*%BGOhh2cm4N5)&3^?o9??!IWMaB)CSD%d{a6M4wvr<<$=AO(dp*T!6TYwfWU+Vc~~^#Xa(4emG;Wg zo=}V9s2<)Gkci*HBjJW8&;82z?ChP)*x(Hwoe-K2a4LvMdeMaV?Z-f^e)e@0kn-aS z8JO}3a2n$i`Hj@#IxB12BZa>|xo^>Ag}>Ym)cgdvqVn5ZVvTvEiACIx+pW`eeyy8- z{RFVoYHp2~Si)k;PL2=NV}t-yPIOpTS@GScg;wxE&4=^e*-wC;YKdDaQ#1Ub=$l3o ze8^bf6R)jyiwd{B+c8^S6}smsjbD*ybn>b%F8A6nx20XDn5j;{+WM}49$b4b@$+>X3K9sZgS~BI&dx|Bbho{3!88#n0EF$K6fwjO_g*>0TzR2+0)Jg6#H4 ziC=N=W^t6fDKb)4%3udU2TZ$utSl(+2|(T5V|2B>GSPCO{RD_(?QFk0v3>$%%SiIp zgI;gXF4<*fap*EW0m2`Vo&bKUUj9&;^tUOB9&qC+z zr8TcK0zL34TkiaVZ<>$?olYS_x|yd+7-6Eb6B++h472raqll?0@o|hDxX*`h>Uf>UU%ks&92uc7}}k_lm>Y^vD4T zn=wU&3{r-pZCQ~<*~`fWwO|$(EmGdI%J8yzpfCGrwmS<8?h>~RbEE_>jucCgpyLq# z+ad&rEAzC7_N}0US=Uf4I_o`gQ?BK%mw2kLD<3Ll}3b#}IAW*-Ivzg=LjpdJ^+F*1i}WS%_o(BVgLL<_Q2;DCmvzLzhEd z`Upv^(?s}w>v3OH`9fwE{CfT5`To37DDBq?=L#MZph%emVy1bzV;B87UJTUIk4;aF zC%_seDC`L!CHe%Q$9)29NP69gHeG`|udj@JDm~$FdfYX7Jr^J8+E1$@Y?yMVD^~Ry zEIu=Djv|tq!f!rT7QS6I$y|6p*R79S3{q=rW9SBz-f zc%V{iKBEi1iqw-%9hGhTxP6v1g{_nqhX@yo5RjVOhxh#8byY52Q*G^M?c*vJL0&}e z6q`<=x<@Sk-n4XDX_0pkHm4OVHt&r{K{K*j%81i9jL@P>o9eH(wD$al+Yeg9ia6Vi zK+i;IbPTN~KrGhCjA_A<`t_McFDM^1eH3^&{e@LR}P<;J@`@;=SI9l zqObJpc_c_S)U%Exd3zx{b@-jgtJx&}!i169Vk;i;6^%;vP6fbGjqZILDJV?8AxOMo z1}s>zRD0_qRA!(z077X~BOgHQR}P|^uY3Y@P11#&;>GZircAJj3SatJf|bWbT^zFa zL};SGUq($luK59Ey)Ookwi@`9p%CU{k5HG5Sod@R`IDf*rpop1%z-jnL>sb67PhwF-HPiwh>+M1H$&TpF)OWJzn z_(*bE@t9Haz1%wWVdhJz96`988fwckSsIh~#L%vl+MDU<-dEUn)GQU5b~)~$lgejB z?^m;&miKknb@h4#l4PkConoLXRW=1@#pyy=x$XmaLu*U88luwjKc_-DS^8eP_Q}_H zP?N<^yWh9WD3W52+tr?6?A~?H8xbwkOj8D!E^v{(s60ukr+`Ia>k}7QPw+$9qsTvl ztBUoO0-C&2;7zXZxE}woR_~E>F~ER&AJ@eON!Ot7U5hI#< zFb$iPv24Nw0W-^>grDO+HR|K>W}lA&(l$bHqU<>LcOObGFIbrd>qxzzx{2+1gCS&x z^XK`+@t*Ix;gJBgc^hT;S3b&H+clF{!n96ScdmJkA5VPVz0%%rvZ13%L34;f<4xU3 z>~#}3jxA*kWj^LsAQ73@#A6AiPo3VN?xgT0(r3^qC z-ve-aRr~}{Rj#blxs4=E^>pR^VIcES>u}ovaM9mQ;DYF6-p@T)gr5!{XZI`&gFGoI zA7E={ke#`Sl8*i^b@h1bOjDrtyXD<yaIAI#i*;%JY?CdQpn?k=w&=wWtxl8lgMBlP-Amhg2e9NL6- z#xVUmz@c0>@lJq226jb3Xhy~er{XDmBH6WT9!^GIn0rFMoAAdB&jVXC#F{elE{qt& zSFm@GS#g}zG?xbDJO39Q{-MkN>=){vhI6?7Pla>Xx&8|0{1xT=|80~L63)q|rl*br zY$l2!OF5(__hvx@Un9efhBK4Qxxu`vvTqn9t}*r(a;D?vi9QqU)VK6+Ux928u-7;<4vDj<=_7>Ku8_Ig={B}}9b<;n*63^~@p`ga$7D%R z_??TqwtPtanX)*np>3@0f;~f@drN!*k7D5JvSFE&#Q;3=m~yM|bn_vV9hZy8kaimI z>*3_n8Cf7xi%xOZ-SF1tohiFNSHl*2H+2eiOPc+V?=id>k&1rm-X8kP5e8vyn82() zU!2qE!#mu79E0U0$%W%`uyA46xg5YY(RO-Nd@7SaccDiF?dbC2q(1p z4OP~6a>yo$Ykyg@R%L?TtF?#w5+?QI= z<&i?SFXgFQuub$x_~}V6yWSy-i^^f{{RTPaqqWFUFyP0kTd$%^v)@eprIavJ@>S6? z?^<2tx|b-1I7^yYrR5`*R+>*?t>;%f{ft09SNPy#!C0Z#b>WB1ub1eUmXGw4p*guL zy&g6VC8h%}WX#o}G!Df!;A>xGy?t$;8^M4=pBu>WEdLs&+a;~c8pNIPvdah^OzZ4J zHhgh~s@(gm(XxN&3njpPC&AvQbSI2R5s#3jKGGX%&7EqN3f;IEcr9zp@{It}54%_u zb4#9yAYnPFYlF2G8wn;T*42OMQ!uymt(wF4c%J|{DPFH#ALD5M8R`TpB7l_-Plz$ zr}+4#2J5v}qKWbL#?U=;lT7z>y65*^pdF#Ok((0;0iSxmZYm-u(`DUyww2Jgu9#__)N+^B2{^;P5 z@R`ixEDky*Kk;A}C^8^4g5FJv_Z5^^IJjjE5Pi#Cya_jB8n`3Mdv|IX`zA zk-_09$kFp=pY;}YT1$&e^AS{^GWpyzVd(l1?*i&!Ka{#GI*(2`Og#N;qPG;J&?Ash z7_d=cqA_KjQrKQS-ols6h@AMHgFvX3`qcFzepn$NIA0Y3HUV<)^q?wt_tX`STAP)- zdr&w_uo?1w|8z^R>Ak`rT&*lv=4bHWS2RX3nUj=2jLZ5y3{j7=oJz|0Ic1LUKkHXggSm; zPk*}zqI6**{WIKvJa=o!G3PI$b3b?>c*znA5sieDt0I33OcQ@N4iHqTxf zq3z=m&b?pQR|T>y=<6&tg-O220~)g7zuBSQ01(DhGGEqj6%`!a0qsAgFS|Vff^LlN zz8ux4Ns;rTI(4^kv`=q0PI$XLKr+<5n^g|qTb!Q)LJ`Gpk1N65iX8Pd`6Kntg0)8EK;ivnZ&2>9c zP~G}IrPD)lq3`yb{bn(BY`RHQ66)i4ACURgOt+`7{4&{@@Hh7x#qljr7TNn$SNrRa zsgeu?&^&JxzuB|LM97Um0nA$+zX*x0Lh62ZUFKBUcpG!qB#zSKqyYYI**SB9L%E|p zJr@;gteIa=D5}!Z^tqvx2nlnRciUmBtT-SR16q&l`kKZ>#TI`%JhcJ+;EqjM#65@> zX;NuEHg7x=qB3^MG2A2M@i)%gHV}u*PRc?lhC>xA7-+iVaBwJ%7Tce7OLIeZb%pR4 zqH4WzZrDQb1b71};Sw(w-6++_S+D(SA8TQAWqHE-?owD8(g}(Z?bkJr7hxmSR$s8N zoDIt;+u%G1d*l$Rzv@iI-NoB2isAm|HWT{HrMDb;Qej%u=N*(!4@2h%TZdQcOvsl?NlL?-^WJ1%#?+Eke zg6X(`60jeLYcv^511twyNEmE+-=^iEys3b^YE22w+eM}-PS|hq24bLPy zV{+0%78aP0rIj|nAo#=v2_9k$>`R#f=SQPO$P1>oL;TFvj^NBKk67ksk6!Zw;mGkZSQdx^}*}0WXX@+*7J(S#EwxHVC2a7R+K{(C!kt0y93fYH)e+P z7x03|cd=hntoq@s9DLoMS8lXGEv(O1q-@f2rDebgpx?_BBX<^^g{jI$=Q*7a@*@VD zPe||5RM%L3FEQB1W?;Uy-YuOr6(>pJk+KMB+(Iyb0s$ z{NB|+(@L>nak_#S=&cSDJ&JDuP1KAUmb1)h@pKL3v;}AuE634 zjCa0JznUEa{M<%AOn3Er%_++18kOe;yYu-D?;~@=vs0j`5h-o)qlbg0Y=zyseBU^F z;`G07!=L+}yX1)W@5nn2sj^wlyyN>%_3tO|Qx6+c3S4-U!(Txb^cV?^|BNYRwly z@;z%})X3{2*j{0OUQNeJ5N->qtMuw7#ZQyCSDJpT_9)v=_VOKfv3IS+{C;4ES8dq#&G1HOALA;eh@RF4J8 zcuS1wguLN;kVmiWN=MD*Sxg|u7s7kP*@0hfgWM$mJA)@+Ucz0wG!t8_;+Tv(%ZyUj zC2c|A{)2-UD?a{4{E|yy?TAr23iQES>I|nc{RzOOLR*@Q+i8@o_JYrNlwk0tM2}VK zmJ$2Lx9Y-781E7Hb4}s^#5Z}r-D}?0N9HcH%&f%x7;!j?nk|aj$gGWBYi04FQ*gJK z&Ywo99<;AVCkCE3qNroVZE8c{{*-4#Kf&z2iO5BTjPO`{oC@SdP!-xB7N zwUUUBms;aT94{q_mBZJA)E@A%D^`&HUk|elVKMkd^V8{>*wu!Ln!!Ab1uoYc0kfe1 zwJkY3lb-$u{mM=vGMDcbTg**mN@p;V2{SudO%1hmSaQsn6?rQ5Uks?NhDykz(o=98 z8dx0pV3PoyMW95@Gq~2)qv)F1J4Zu3T>~q$Oif_!!aAZM0*byx(&6&}$ye9s z;FG&Y5k;DrN54d)qARD|@oXC{t|@O4FRz^Z*Ajw9bgDHXV&vd`D$)Ig?UA={@~<`% z1n*Xvx6Xn+W0Q-lwcO$tRU9P+3hM6)B7B0W<8k)O*$DKK4ubmqWK<3YNFl9)>MvLL z{TG3=c>ch%Kb*94E1_R36g#P)HYvfn5x;)0*GpT+nbKxbP=^%xdh*62w5nSY*d-?};1pFf(jBUL1}On0BqZhqu1zLY)EqY~7#X z_7eZbDuJ8-f455T5BMQQ3y=K<^aL&Yo|&Bh>BZv{1a+#Mg$!2~0Bs}y!qDY<^gF_q z;-NxF`rgrjlmiHvCn)+S)xketZZF1rGnuVYYu&2Y@R{4Ag#&C$qUIE`D2TRjT`dMzqP`U%YR4hLrRcSf}F?s8!JRoRG~w9p!>-{{9z`qY#QXAqgsfoD5;%=fD2k6oD+iB?zcOQU(4Y zU4i3oApW2E5WfKTtPoT z8u%`@zWw3s^n~qtA&n3G{P9)+w3F*7djbd5gsq8&k*)YHx_8dj+cm^jBCC`r6Xz$ER^N3P6hVfrQ$D#}@q4&ETKL|~ zhOh=&d&sgYH}Rx=0Zw~UxG_&we)LJS#n0m&%Vfg$=J9)g-i#dC)~QI3I4(j6cE*(} zA+|ZOY0IRcQjmUZtaUj2u+W=vCIa{;dtb6aBMd8#I0-pg-UAw8ZS}h&npSkof|l3L zNVT^u*yWrN5y~(DV&j97tr}b8f~>5_M$s41RkXE5cH0kUd~H2VTX}Mfp;oF_$(Q5A zddtKEZ>AMHTPw+U4>eJ(TsNmvhfph12R+f@lk&aotjds#qF!`TOD~-Hm&;*D64!(l zm)c-e;N~W3GQyo zBb|@+>ve~48Mmj8c!7`bpWgb zB7U&24v2Q8^2WdM`a;VT*X-yYJFcj!vVC<~AWLh{T+M)0A#EX3yZcqx;5DUUo%oKo3;g@iMDIA-Xad_~~2ihC&n>S#q=NXDI%>O^o3 zU(1**w5c^Nz@!iFRfhPW*xa`5$Q(&G_mN4u3~N?o`>oek=9GQ?!K-)03bZ@+z-PAqa=Bl%U86;^kldyBuLxlK3fnpMgZ036(x<1ix9rWr7 zyp12(PwK1CWY3pvGGH0!k=&{N0e>H*s-+y~Lcthe$)2h`B}HuQ)jn9vol#`X40S<* zOL-=s^ZwprDW6rHrz!WeeNh=ZhCRJ#TFQ&JgL53K!${U8lq+WrkgDu|Ct zf~v5r_PiJYwaGZ4OZU z+#_9NLo8(VUV230ym!avaUdn`-am5WeDV9s*gpTbAEhF0JKwSB1O+U+2Et@Ukh{HZ zExK60!i|1kWzZw%Ml3WsshM`9T;0>wO)5ejdJr2PI^L`eA!N|+LTV0>3tqan7hwOI zHAx%g?QUH5#+|N62_(hmBVy};RP@cw`*nIBRruj6IlIOm2ELXOR_1P_Ab~OZ?SxPm zBTOB0KVD5bW!FF}kmQHN{N`(|A&^&Z8bNy`wrdw_TxU^NmE3eXNzk!>`qt%oQg+(s z_@Kjct`p7xUY&c-)g$`e*v(a)!e;p8;Jyl_lAXlU@T68syJ}os4lFYK2y@Oa?~SY6 ziJz@$^lo$p9P2H(cD@ufl2ov5(`IZO6NF0tw1nLLEgBm)K=z=o_aWSA+f)UluJznk zbgb75Jo5Gja+~b4tkSyexi$ySsd~J0M1siGEnT;eIxJt#YC-8es+R4O=(Y_lW3UKV zIsFi?KtoxC&Kr;65UW6g!28fP$uvQ7lhu@miaRs0`ib|Iy~Ht0Z>?OW7a@!Ur8*95 zPP4{!N+L-#)Y_&--+Bo4H5f!y{(4!8`R%Nc5lnk@SydHUloHrNg3-Ko%Ap*taTvMNDJVR7mFtjZ$V|XRJwLQ0cT$`cB)zyZ4mUX8>MMuHxZJnb> zw41u;`E_Cm!kkpl_r{B(dG#)36-J~nGDgzKq}EZ<8%sw-oi(E3!lqCEKlG6*nN ze-p^01!P0RR(#FWLHEVQ$zN)WclrySSnv3T>cyL?&}@&oLM&f37oal+JN&eyq*TTE zN1E6(WDjh@CB}|-U-UY^pW_6SV1!`gGlWZoBBwSeWwm&6-khP`a)K*{Gv|(P5rCG)zMzzAO0~%?r58mKA zeRE9_-lQ?vAL!jsFXR8PlT-J~jq5_pMzd=&ng#f!WK$tM;8mD1ZlCc{Gs?M8) zMBS%Q#i%>NV;+9ywd_j7HuFkOszXe12J-`pww^_Nu{Ousg>JFOF%sDdMSach))-ah zPEl!cqf5oW#!inLy#hlGI0f%eD8+KCXhw8=c6cuyK?aGhUKx{Y$urc1;eRXp@=Eg7 zzM6mb-DSyDq>&K(S&MTN(LSPF#hrKpKgRx_{e9%70Yx+YQmc8)R z&$&ZMhVOJs$;U~fOM2<#!*~eskg+2DObyBpqRm7od}L;^vgs(8{N%VlNdtoqr_0}m zdSpuiY_@uO6-&Lt6UfnJ_8AL`y=di!_xZ4`r!geU51&N@d8=j@a_=C0HdM6$F!PM3 zXtP?5C0e}8eM?y=+p9N^3U$oDuYEcwR60tLHjo6n#`(?Mk-36_iLe=ohn`iSD3O6R zHG)nG`MRbC`lSg<_poI&p02GWi`-mn?K{oUFdlYGl0~wlz*60hb^wh*HHDfC^f#qW zMs%$T7`IwWD9KB~#n$l?6hX1+vd`XG<vz&6_Ns4Zx%f<3R}(vYT$o2R%#dMkva)}!WA0u?My7(FJgQ7WWJefUu;j`B zM&5txWgz#hf0$ruxRNg^$@r7a^zhI-9u!q4`ZIw1tQ+4#{etZCZh#!!^Bys`$|$QI z2`|&U#$wG#Zd)A7N{y7a9w0P?ef+VmPVV`mU9ss1TdDgP5e>1p3EP{R*vGDZo;oLs z=SdXtA|aY(p^9 zo2vMJ-&u$WB>Uae;Z^m71G3q}d4EL0X35JjDyH4*R*C&0wdR%c!Y`T}4%^G)Idn2qFg_q7bgXrrBVO;G4^^nRpaQ^=aej;pz$8 zyz+EZ`!H&Bb>rvzbnn;p^zdYxv2*iuMdtSq_5|`v-nsF6c=CH#I5~5^z6O`yd0nnJ zfe)2Lp1S?+Mr|G*MIY}^{NjmQM;a`EhE`+aH^ap3ckMOAnH0~y?oRc1x9V3Ng z?YT4-XMQ8Fd#?SpbZdwxflmN|kYV&<^5t`NEu(w59_0HSE|wYYxzD&^YFVA3bNmTA z12h}0VOJg}7NT$6x4FxO$JoAiDBRJH10R5+5yLZCj?yTH+*8NK?NSF0^siW$8P!hG z-nuxd9dN|$haJZ}HG`eY`e~dd_Em#TbgaJ{yndao@

_QIj--9`Ghdb8TK|X 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 z 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ͤ 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%0A0E5wPOMYsT;L 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

R=&7!B^)XL0(5W5tI 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

bSypT%QuCe?H4Qz* zWG`28FLqRiL_e$z5+r%leGKDQ85^ANCApBz=~PuVDh`Qt7#l9D@DPG%dgR`{3rXrr z0nnecU?`n%hE?<`Si1a6JSCXp=N=Rp*BL|`G>UXRB?fyG8ebxU|3S=qB5Qs*tOy6R zDVi>UkYos7hSvPU0S-YU1iT@Hlj8rp%M3GaLJNeH2M8(gmVc14h=MEe2PJfpQu*=R z4sh~Pk`@sTaFSA{>@N)r^EcR#OL#Pn=6n+isIc^?GKSwzz5fKMR1;!39c4o!oA6+Z zxYXYU$%Qz}GD3}0w!-j-ajNyo!G&P!5B#7U4S-YqLl!(4jsKY=|gPe^pG(=m?Etx%T1|w5SAMQB`%8ns z{LOYkYLrQC){cT%lapzb?>zG+l~Ojhda(6KH~24ab& zEC*^v_xmXv7pe@X5=#OUNCPu8Z4xG*svLso7G+*_ZuLwA3u(sm>GvUA#Ee0&vBRR( zX&^e0nM0*&PL(0q3VF0IeU|{ucOoTD3J6p~QH|laDwh6Ri_$V-ToQhr3)p}E<<*NOymVe@B*h;# zsWyjd+J}fguOK&vM2bHzhl-N`(x5`%%83Y#{QgJZFREe=%V561)ABu}dVwy#>5J|J zLCAdrm%XM;pn4V9h{L&<@#H0OxQuo(#!O zB#31rG38Q+iD;{o>P|z!P4JoRf`9@Qlko*2{U0FU+xrpx-{^;!F4f#WOjmsEzcpRf zsv*t?iV$qdK}7fo*AHB$!}uzd;}Zhc_dxZz7u`pN!0~O5ddLhRBhis&$c)Yl3mFh_ zzOXPx*Odl&_B}(-ONGny(h3|2;nHCY`p2(Viy-LDWb6|7Qcg5Z=?2T+OKu`*S9aBC@ip*9=J-x#U%~j{<(?pZE_>wq&?a?#~13qbk-p8MUu8kq-E}o{tUNAq+VpKls@H;RL zM2;8>UtlmtteG6VzZRfNlCHby?Anoq53)LdCW55;5@Ti!D}69HCX41p`P4KRsvKk&PJ1DWqPilesw&p{ z8_Ef1Ab^YIOB2ojW=?ikgx~nLN?Kj-gy=_m@bih0|J`}^>Vtd7_02o4gH{KxreEQ4 z5wx-~&Fw3_U>{_3|KH$e6Y!l_3hUL&JAL=~QEb|Fw)C$WFt zI`3KPeFlTy{mnAim36)oyelT1eDVGGDOHP8kTZ5yR!k+8lkQWF>Osdl*vWf&BQzD;#J4onwd2Ud^Em%B>PW^}DSPt-n$RXtt!2#}#c6-= z*FIA6&f)!T$EDLc_2*khUk)XcpjYmRdTKICCJ#sZ`pVA2m18UTdocu$F2r#>;W%@z ziG1yf**-qR796Pz%>|wM*4>DMCo3OkYF+K01`AxqI-|D(FJ@f*&mQW$xRW;SHN!d{ z#tMTwOsk+=T=pJO#D9WW16-cG0n-;ocEE+|wO-&eo~UtoV@@xNk8nF*wIN^|O?2^C zIn$53Xqx4)j@rX(*J+J}-#j2s)Oa9Dl*XKvBwx+P)Bm{`TMqlXnun)XeQImm>5kJG z_Nat1TWIcw7$^NjShi2@0++Q8pgJVQu;Z((ubq!Wn&o%Gi*s6(xi~XI9tES&O+3j! z*{aa;W}2J1!KwR;DEas+s3{h0U4&RZ8C>|jNUeLjDRkW69(S&$Jg72cN(4wRW}&s8@Y z>J`SRj`@xYo@L7q)Y__uWY|8}3kTx6&lpn9i{xx9fAYEAAhy$r%(Iv-Yl&)mJ{dDG zM82BEuksMqVA#35u8%VJ%ALX{-|o*+Q*Xi`sJhVwd`~Sq^C)=0SZ8ZT<5IobTdQK# z1WD}h`0rKhkQ-etj}R-ddZPdyk1;Xa_N!7A>f#Gu?P~u%-@*LaK9Ia+n3a@<6gAlM z&Z~2O`e+&T!L;Zbky^_SVcREBp+kfAAHpKx@6-lcwGU266Ev}}hoMg36VWWMw{43# zY_1tl(Jj3+j$`!H*cBrij|*^-j=8 zxNVyWWyDvHs@t?X!>E~)ltr5Ti}D`9nLJPe{{U`F?$zKO@=*IQDzt8;-$`GEL+Ld~ zYI~rZ2?OC{%2=u^juG^!;ox{qR_3Qn+C%5&ma8QXYWxXMd-Z*1V}@7#&v$ICAG03Z zob0zf-r*0lgKo?+trpu2y_%n{{T5v(zAged}$caYyv#_0V@n22n( z2D+ILL7DntCGT{i(VmL=YTlO0q>VrBl%aVF|A=B&Fy~G7^oA)>I{eSjfrg-mk_Mc0P62Ez zQbq|>`p&NHrT^;sE2#0jK8p#L6z?wHQet~Q0zAKV-sdl{*5R-<(Q-Hnt}rvoI;!hX z^j+P#47xu_Tze4Qnf}#SwwGajbCYOwXAZ^ha%LL9dS|!i67fBzO<`m7Ii$E*lwGtc z^JtK#BU?BZapG$2vnlJT(`ZNg7HY%$N)mvo@ZD}w5BNHEz;j)Ym#?(SzT^o^2ruGt z97RMj*su6(<7=fkWgzbtc>a@ zDTI!>5<=|m*}7iPw$*pGw5T%p1-ayC|IIAtf(60OJvKfT3whW_D^_o{r)s_u%XU3k zEcXmHkD29}NBYuLn7pfDG@5aUvtl}1DOfwR*J3aGVx*Auq`285H{9U=X>o3EKudg3_j{!g){r|BCgYb z-%c2@|GuIh7BdV5?qKDA9>K_NJ`%#W*!Q@ZytHrKckc)|xZ*y;%HqmGcy9JH2K}%u zyy=Z&Tx6!K5xU)u@GEBXq}sh3X=UY@SPdjHXm;PuK)z^t*P1VQR}STrSJYj4#=un> zb~}F%ufDA(q9dB&I74q&xZ+CR*O~PRRJOLPGbyvJd|&CyIq0y|2X#h%PHxAsevg_V$KWqW$}vz{5+@#^-h zKAW3yx%Ebg#+KiYR^xmRh(;t=9q5QAqV4$i=Ho{*sJ*sLfba>)0R zw)?;L$Q`;v(+rW<&UFjeaA7GuUa&_8TLUGpiIMu(zvbS;I zlJUJG|H{VDE@7atOl?eb=vw8HmLMF89KHXyl4h6|T|#U8H?7iqVb3qlusqIkw0)K%-SQe zi>=b%f!)0@J=Tg*^s@+^kEh7pdA=2?bJMY#l#gQ^cDg^UVx)t^$9`&oPtHZGa)^mc z>`7V~DfMo(ca6ojNm2|pc6U#>GfQsFo?P-5y}d8JsUIqz5*|-N_DZ~1yQ7PnWba&2 zk{&rj_U~N-2_zk%YwsO1-@w&FE%KdKd?1aYO^c01*7nY+WRozd5clbJQp(^>eJgr< zM$%~&8{gU~Vx1S`b*umL0E?h&Qf5`6HXrsqy|W2lTlUINZ6@5$U4BBN8AW>xI~|W> zVS;b@n>x}X@~pt*t5>Z=3-E12jyjPgB{Mk zZzXdrY>?o9g>N36=I-hdcenaa(eDaqXXsh>nD{O(_PpcVvq~w*2wGQ%%6dSGXoXV` zxc8goo^5tlChtN;Omfh*pYq#(+9v#3xW)6SCvqGYSVSE>1~K=0bs zuegrA8Hy!PBi$h~=G<)0BcCUXXN$WxuTZLsoBu$T@d9rNxk6DRuVd%M)OJSnJQIac zTCAw9`;?E1ex+zn z+5?wCHPA4)Yhk_Q$@K=j@~}^*Fb7^<^X=T95xz3$73{2Y z{yi|9>Kuw7TC@Hs<354rGe~p0C(iox>8)~lzdNszNki_F`Sxg)>GQy3HF1%j?Fz1; zU#;UNyiqpLm9H%C_}S;}mav|d@0=E{p8?A`2*~x8XU;Ln+dtG&_yYVBDFZ~ve5W|NKmU5&147Tg-=|^GLT(ukaFuRULgflm# z;mq#60K~oD+-+WdB@@3UQ?ZU2BSl3O&YH&JoNofjK%I|jyqK|_mA z^}mJJ0?3liPE~fc`S$S8X zAR8mt#eHzUu{$n!^ch4E+|eUFU}Bha8)_6B)pDrL_b8LhT$j;&KHNfB~g-vcrNj0xtvZX%rDUr?G6X-D?5|7SUx`++%Vb}TBki&=xh$XJKmbvyAxQgw; zw-y8o651>3b$`2SZbo2if_+3W*urdgVx!mH~u?o)qg%~)!(xETUP&@C%SWntLY%O z<&2T}cP!q&_T2v`lMVi_va0>XR&n!l{wu2*#~)kyDcICpKf1i^rS9U3%lDVv^59?K4FJYFX*p>C6chje1^EMjmjRLh1UNW&I9LRDcz8ra z1SAw3R1{=n6hbU)bR1G5axzjP5)uj;R(c95W@-|W*L)1j>>S+O+~o8EBK(}ftX$lj zFE@cgL_|bEMj=2&CE%naq2&C3{Q-9YFcF}l{?4lQcUHCkjWUS5`kR)&Gur%(fxj{E zHwOO3z~3178v}o1;BO54je);0@HYnj#=zeg_}>Bp|8AB~4(`8Zv;6;gzyTL0@1J1< zUQTw1EABt?z47yliaNVEnHk%nBK@D>dXoldLqkykUSUE(V?u%Z0OSxCAuQA%AHY99 zP_Lk2VBz2q{^_E^0K9^NhJFPD4GRkc1G(B4@_zsfCM*^uhXfq9iZMKuBMxU^LJk7; zo9b>{)v0qDu8&SZh)8(&1cXGibo8$o7`b_P`S=9{CErR(%gD;TQ&ZQ_)Y8_`H8C|a zx3ILbc6M=fbBDa>865ICG%P$KGBN2(a!TsgwDjD({DQ)w;*!#u+PeCN#-`?$p5DIx zfx)5SpVKq5bMp(o7MC`+ws&^-_74t^E-tUGZ*K2^_YW_8K>?uu!4~BEAB_DEd|^WP zdIbXm4Fmte7t||vNP)(Lfu-bt!;(;eH+ICP;tWKntD8f={}j(PEh`6t z;)a?71A2PAd#z+7h2Dk7_hhD`*!Z6iXG_I zf&qh_1ChUrzrTtPkfm`sls7cFpf;LwsR|c`s;TZsUt7ApPu!#7*U|Ek54|BUe>#Ak zDb9@qy#BLvT^~z%#s#>ZXsH78wlhU9AFL`^=p^is8#E~h!+r`mz|RMW2)@|=CLyB|Fbke0shHK?ftt&Z(m7r2i(J!NQ8QA$8%Gi0{ zaWmss_&vdgNWgS%4uQzbg1h%7V(Lx zxqJj2a=WY&|3V!j8J^RuZo6FlJx(ugvdotEaG5wN;;E!_WR)&H8e z>O*;^P_M3ZQrVGUMNE3HcX3VqY|hvF5SNV%w4y>TaiUojDFALCaAe@lknqAj{Pt~Mw zI5*ed(N+JH#7kXC-IK-FaseOfqw;;s3gx{O7NaB;cJqL&Q0<^f76)*_-p~LdE2-Jv zqKqD=x2HW@$a-n<-P{TBi9w@&YEwF#ClQ@{UlO zHHJ`A!<~=2sV}&pj@2P7;QXr?%Aao?Z5c&%Vwfa)lH$4a)MCLA25cYp1H9&51neZr zc+TmO-M24j&rRUoGw+5fSoP~DYVu(F(65S$|IT!v~ zTUpj$)mfepDZ_6})b8b0@Jgo7d3X<7`iDSXgaRp$@O^0ZrFI7;7_i_9223us2bC@# zHt?pp^SRx+ov*B7Sfuj@wdFhTVQ@O0iQ~QK3Dbm+_ZCR6_nGfpGu4>J#-??JVPm%L{*lkbBh{aucv0Ffx@-Q86ZT(k5 zuGV3Jt(x=CRKP*$_C(&A88eM~jp$dw%;+LYj#)O7W#es_n~Fx#z=UlP!-rLqnptzr z`gqxjJ(Ox;=!EFlrtj!dFQ6%=YpZWaN3duPWw7}8BX0;dpE?nTtmsf}A>Kzz?83Q& z2n_fo4h9?ySwb%y{HgJfni0X?){d3FF?5fRJ|K|Wih_lZn%aRRI!-sME%-$t$p5Jj z-_eaA4|>%e!iV?ZTE~}aWYZE$BUdS0O`g61n5c7T7T_o4(ry6*g1IL!kJHJjyzY=4 z^G3}ZF`JP3lKDSK4E+oqV6yH#$zGgaUlNsBZp(j^S-jf4|4Q6ok=Z=XHO`cIAr{N> z#I+@cb}+p-EOe{|2b-V|g@+WKu%1d@0dQ4U(I~Gc7LhXdX8Kx*MW~B!`ON`Muu_JQ zu=`rr6$i>Z(sV}39(jyAf<&dn!uxZka_?u3O9_fid5xf4KEeR)SqgK{*vTUMcWVWlVwnPWsbBpZ-KS>e zXbR5Qz%&pIc?I-WRGHN6g9n{6g-1!wqK6~-_h^)bKDzY!CtGFQBRD_j5sCU9ddo!7FV#l8h-(-@emVINhFml$`MpoZM7U30c~?Ns^??SI6*D z!~Ps^9`F_1|K5f7q_{B#J%G79Sf%}~u7P=qEt|$zZa{gcR|H;n*VYdah(FPK^(6QP zF)ZG1S&X6Dm*)BQwC$N7$G+<32horpZEtBdhYzi15fcfl%{QwIli+FbBL3&Qn@aLc z)c*dnzIC$I6+L86U56U!xIIRGcNqAt3CVFdo5}Satfg^Q7bA>gJT*q!%SyYfTlgLF zOgiS(>Pt=%vih7H?sIXM#|jZ!i$*|70AA1sx%;U&0eS(=`@o4c0&~E^i+)yd028W? zTD1De0gKw}iuShNKEuvfB+O+Uw7p)@Tz;;Hb3MR?ZoW0zi?9$^Z@nmwjj7Y<1!PL0 zG*+jD-equXu~fgWQs+%Vy(#j~Vgl&zxSDKmR(EG! z=|R?_x}z68(s>S{vg!Q2c4qNhJC$gc&W%^&7iP&vf|-8AiZ)WI?_*`(TkXj)Kf+uF zm~du!lJja`)IBu`N+;yA<`ii2#=$Rrp5m~s23ji$D&MGPx%Xgj#^+w8ETesZrF8;3J_kbUdAee9`wr61+S@CFJ=4KgWKpfcPkm?{2^n$hHM4cE z=^AaaF(|7)sCpRnyK6!=9_+D?yq#f$>fxn!*)Tvt-3)6CJ7V~ z?er6#5+*oVZQY*!J9Wl|+q6fx;jd*-a3Ajv?O^u0+VozR$IK2Zg(SS!64Z9^6d5}x z3hvLHRkKCaSyR9UTfun){DB%Box)5jcDYZ}7x`8OfhNr5+Se2MCIAzhY~&kzOno1T z3%{g_$W4?~d?1TpS#)K1?wp`hcLKB9{CRhYoG37Ti3Bx*1B7R4Ab06PX z)#3c@onY^~=sUrfsTj)7oXa?$ZKHnUXO+wCRksP{9iye_7JT7V8+3JOOfr(M)Yq?r zoF2Z#8;J3Ny~`jC37*8nLD!07L`}dRFQnLemsktZ&b~TQlu>Jzv80E$ zLK(E8{6fdizkFuUul2_3>l)2W{g~3v*Dfr+E;{py69P5ziO0d00ew&t0>}Lh)j+;M z4q&>wayVn7sxD>Xp^q4xfh4u#s`iYZHiQ!4^jeeB@w>v7a~>kr5Nm(TSKCm@&Vv|`I= z-t)u83)H))b;B^_WS!sCQ`?_+W5Q*S-tWW{Q+(JduH06*pi3yX#&5vGFJoCvS+DD@ zPtIN8gn~iy^+kt=YgPuz`$6U}Q|w^CPf#aNi}pP7@^pWzDwgQE`*#(cG0hJ|m@;H| z0oCmw&+P^H>9T@|E0KoC*ZJ(_nQD-kZGFjMOKgsLt-)a;p)Cz_?}$mP0~$Iby1=3C z+#;;|z#$nwzUmgh;(8YEjVefIf>h4#C;Vuk7k(fyywFbOHk>GBT{HKc5R zK3jNr8m+>R*^0x_TaofV4_4+=>zY6G6)mx$?n0no7jpN>-w(d7(x~}-@|)#*a;r{>c0&Aq6Y9jV*SduhRD|hk<9W<(a#m(3Q1o;}IqCP%wAH09MP2j9Y|lu*(G%!gu4{l@$;`_C zxbx-?O?P=8FL)jp8;1PEfQNpCAk$rEujJ{r?qvX7`UHTy@H>NXe(CRhIbA4-e`^` z=cx~kpW}WtfrnX8+_F`Dl$x~YoT=NLwKFkA{$zo1w$kl)0fW}O*GvvnZ1cUXwt>vw zChi8rxa@DQ$=&(K-L^~eJF7-Nd9MMVwQtJ2&(IG9PohXJ+MgXB>KTQ zYa4JCX@ucwi#F4nN@QLuQreLRQ(}wS1#9YR&|5_aZznP|$X~kuwteyjr+SiA&2suw zOF8HwEphR#2e3XuFbKl{6ODn!j^_ggR776#P|n+#w#!wvF%>UTw<2Y=(>(Hu7V<&QLyZZq`LztnLr6GlZa+xC zxKYgfs5E$)NkIzq_><8V8^K#P7F!>L1tPC^K|=F$Im+zt`s8dd(OCkb`_m=aIKane zEZn4L+{UwxA+4X!E5WB{%0|N}cuHW3{7G`fLlXt{8+uNV-$kr&j2=`WW z@z%b34CNS~mc1MBUdZuq>#=3)71YdjY@DdCizMVFiTN2oLaq?`^IUPDoi*DPuXS^8 zYDX`EHrlsFD3Bsyae`rnxO&2{qqn$p(YNnZvvcP6jUM5rdSq?83Nr!^bMd2<9aC}# zRL|R@4TkO6PqtvdCd~zGVH8#!UW|$7?ufO1+-hqw^95-sPEs-jbi9P&zRrAwixA{= zhk0|osNxC}OliISgrG|A*TXv*el!7Az(UC3*flk&aw%(K*N-kOoR!*L(~LiqmSe^D z8ytfpH5VS9TjGjtKrS40XJPb8vlVAr10C#5?6Ty;&9i+8a&enx3`0DvCbpo=EhgYL zQp4R();Sp~X)MXuMKYZ`+L%vMQeFS@E&X%FIdGv6gBNs3!^Tz6-^#3#jIyJUf!c?X z?F8R$Vzcy||L{TcJhqIr3gWQtBp(c;4 zqifcW3Ji#cte~pO>_KE-ph4tE>R>=f800I53$o1UoHu$(kO>nuu-X!W4EjP$$HZg2 zD!8Ng3B?o%@e2|fQ`T8DweYzPA;Vbec9~(J3{66^I5l}~84O$<%+FGL$=%t-h?O_WjUkeGaA^{Lr zde~)2;T&h{@S`g6 z%ifXav&@Z@{KGBsr)OfLUOBu2=e#QFMqb25Q_m(e_7#Q%&DVRm{f`;0B;>khmU$Ju zIlB-31ImDI-_l{a_Imne9cnR?j8hdHo9yO6Mwv|m^uRWq9AKfXogxv?fYBg=_|7hb zN%}hpJA7iyy_S&_0)dJY4&dJ@P~gRX=S}1P(({{n`2GxU@Nx6={>R}B4xazR;u}za ztiR(M|92eNeC)rO{e%u0lLP}^`9IA1_lg0@AJfBLLLN6|kVz9d3&g4Ee=c^%gZ_jF z1{|w^0VrU=hX1KGIS?BRn6FaJ4G?a8CWQE3z<`xmv2%LJ&@S`D1qK9y0nNq!8_HmS zZu`4Pz~ws70t|o#1DxMOuFZa~CqJKfhJW76fm|sDvc6$_4L$OI87=>v_50Hb{;MuW z$B?O7Tl=MB>F%K2Lq6W#l7J_<8=JsrA>f?-EgF_zU@L$xIk}s$JAj6SHaK0K<}ikV+t?fnO8e<^u`2WDuH2zi4$E z(`K0%qKDIrboGeTtITQkJsEoD!6Uit#&?UQZXH1qQaGyruA$XJ-x5Rd@Y?UYZ7E-3 z{Z?W$#;w_C>rE}c`?l+Z36qv9nSh^kLU_SZe<8e$I`0@C@6PFf$ZU10Ied)!cB;1S z!&QoLBF9o}u^?A^n8f+%H=gJkpiQq_Q9I~Te^p;snhYa`iEdg8N?bBg8Gt7AIkkU{ zc%l4z&B6@`inK5@(OXdhTDL{))KrEBSBUG%Bs5`y^Bk-v4?7b z)!&GPEj3!OKYnNuJH8Nsm*^CXO+f8#X=vRkZmD;*ECOtMozS3cCuE_?e40V#RBilvPw&-1%pqTQ^bN^3!rl_QnK&Q!J~I)bGlOQed}_UbWG zt(#wH!751_5RVG7O;bgM9rxiPjrN^9$!0wK{w@XlxQKJc0!x9%{FT&sd0roTa#O=h zZu z4lnk4ct9vJs;9M0X0xekFGIe>a=2z)@t3BMr-oDIPtSx5r%G`sZCk+3mlKPss+(Of z0R6{9mC?+N-~^2JQHy;rcdLQjX5p+V=3WZ)&IBd@aoq=t4yNy=y3%DdQ+BaOJ;o8^&Wu(kI)#Zn9rB2U`87ax}aoJ{EB(oIh~*53$v?8uqu zP=6Te;{0(Sai&zoIbANwc1Wbyo@59VJh7emkhQa7&nRfeSjtagLE1dLSMLK~4s7ki zEG#IU*i5VQ%(Z8@&J#=9gM)_m2RJN}I!Bfe+_8W4>$6y+s ze@GZPC$D(pe z-a|>@{M(|x9#J%1x2pDL&XwU)g-=;gxWP(IVZSBqy?dj$tRdI%tHx8?>7#i)Ph^DM zH!;BoHjI>Up&U4@UTyW|}q+-mS{#;}t&mF4NRyW-b; z>f8niijAz~#?3P%s~RgvvXT1esEEOl3Pac}EmD}KlZh&?f`x};kQEq!CV%zZSqTQ5 z51Re24B*S`Qwwq1o^Z)>=`^lzNl*VMed*^+VW#=FjFQN=u-|f7wM{cNOt*1Y7rs7m zMX)~EY@g_UAUk_hUqU1>Ew_rtAy>-28@kT1VS=obtJ=sSArZx!93C(r;>p<2m|Jk6 zr@3H;)NLhSu$+(8M8vHRPX7TauBTBLYD-8A;~@4^4y2{l;Bb)SxRd*Qf zplh5!RyK6?O#KBmM84MvG2-up^=B+2V*ehEcvZG_j%LBe+hBEtlLX$r& z@L40BvT>mPK*8)f%rM=G(dtbPzhKsC$f9eHQ*HL74HeL?FD=EPB4-k2P`P5Kj368r z)tz`=Y;K<831?I56BMpq(`)u+9jjCV1E^6rsT?kzN}U^lNff4$FD^?ch{tmF=LKKH z)&)zJ28-DH<0;l^kE;JTXf9Ck#Q#G=44ul~f*2D}l+Y~i=L3K^Nd2=|Zm zd6UYtZFDo1%(D9oEUh_s7iyd9>KniDPhbvPmpi~I!IK`h1@T5AY!6Z;18z%osl1|?r^EyI5~x*w=41xIMgY*f6UE8)noraur(LUXds-?}&3vkVRZFmuMX(9+helSq-A*=cleHS{@N%H{#i!S5W7Uj=9v^2;hyUu z-=B)=Utw4e+RZ0YP_4+YTWL#_9sEuW9epuFEqY>Tbv_Dzk=ln?33znBZ5UX+3lS%0 zJMYH?J}X~OlK0;E6^h&i_;_yG*g6|cK3UM-mbo`roor8SqB@NX5`PU0kn4%{MeNrB z8ks)qN3gaTyKa@Z>H$w;GaaoQ3u*J``}jYQYJ@*yFK1*qAynyBaZSI`^P5ax;g!%N zy!O~@RX^N^f1m$&B36M3tk`+hG}^%e>RsO-d6~ULb^cOFo(t?NtaX=`SPH+UV?^1G zraGpXH8D%8@@PUy!!s}L6R5)3U@K+aZmZ6IdSdY}@#K9wU^-95r>QE7Mre|pp`^`D zkvUox#4+9Ck8y0Xxr%42_}iXMlj?i71%aoYGwh}u;jzA#k46xkp5+t#wmM^)cB(8i z690z%;Zh^^^Ym3TEa zGP0x7=!~aLd*+*J{!=Ila(xmnEuxmn_N{F6HEToi7E$tW&xl=XU5>|hL)jiXBR_(q zMGpt5i?<8U=dK^JKi7SGOhFYH%TOH>?_wT8+&=o#LyElMuCk~z=K4B*5Q&gL`tvft zbW@xr+gQIc4`SI6pWfEb)VJ#?q#TddO9ziOrErG#I>4%QO$dVlqD&=iZS_Cu68A3m zh;3ZRg=_iW>Sv%Nb?q!fOxT0+oXyOPOMyM4b{-Wf+>Zu|wk)HfvSU5*F^@lRf;?%P z1{9T58?<<<+Mv%(4aEt z;mq1~kEV)ENqzU_rC>=y03mdS1`FOT7@#oOHYTbUW3To++<;j>+hNRE`%^i6n?PfD zSa{QMm|6raFu(p}wJ6e6fW?kSpboedbFyJMP4iLz1a`S{mvG|zajV2~k@>Lfr?7@d zO48PG941f;GT*MBNAk^9o#7$g(LQxEMcEA0!6!I5l@Yk{>TNo=_*{8P)6{%EAH#iF z?Mah3KnL-E(IgMk≪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

f$vnm(-w=zmtw3D!OtxDh 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
RR1 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%0DyJd=gKjOHmGV}P?TY$MbhY<51e zV9Isr>#fQuh%w;b)@F$ByK2{Ns*vZ4`73uPWxT+<;K_)>ZJUh@N!R7fgRzMWiI2&I zuaKZ2;rau?Qb}CU=TQAKARreO;q(s=&C}liE%kS1^=<=5&9Con;F|RKkPJe{ct*&b z-yVp;mKKN8lPo;JIVLv9Th>{xz<40A%ybH@=abCVzo}=*@lM`RHwS!ni}OLhtXL~F zGdf@E16k_&JiFD@JCqu(<=nC-x06i;3K?+t;YGoR3%t>sH-2$kav1VKzTyjAL4_X+O}eacKgCFhem*A!4}c4?Apgn1mP3KbyNQX_KP<3+d2B5@&F^zh+w@ z?T^N6%5+Gh!IyM)#vH>+Wu8EYbR+(Wu9r$mZN6@5u~^@8Mw8S}
hO(C!e4f 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 e1Z_dUe=d)@ime z-HSR5_Hfp+lG)>sQb!IHKMQ`S9cUI@1w6Oma6PitPygV9bj{Rz`h<||J>}ZIVVJ=h z;6j}yodbBlI+c@3(sR-a(z|eaUlRK-%ZBpZqn}YevH8*0-?bl%w65k`o14n?^W&qV zik4$Rn%QRn>!v9AN-BG<2!TaTk_p-~V4 zPJx>Enoq={MVVZ)JOhw1F&NLrO1TY(Oi{AJyAgX|C=~Kf6-C1Fpn|8^cbM%{z;G)T zQ*^=73l>wvK4OlaB-6@sfZ^Vfz7x*)heTffD|=t=eE0p&?tSn(*R!SYzEh(2^^$ad ztW@f}b^m^6L>~_Bgop0&;x}SVl)lH(4$*?=VZ*@FV7fCi}&P$3aR$dgi zK+4_}L{2sCZZ8^+=_2}Ab}A4~A=!Ek%L1(!*d2+Lw3aNeji}S&H%pq@%P<(Ma=M6& zZUR)G7@^$La_p<3&&8POP54`2kaba<@>gW9$W5kKm>hEMA@g5Mg5QOhE21u_xVO1i zQlj>}=XqpZVbowQVu0Qq1sTZUL^lz$HMp#2U&)H9ZqH=H?Q|Z*whLFmTjhY&;YJue zHnDDu6+w*k5N!5$NMDp5ZO&iG1fReEsmy!QM_&E#ZO!u%Zgz;XGH0GT_0;|Qnd))_ zz)t4k^>f#6-_DfdwKXSmsMG3j$o1ryYk2hc2zC9?0BLY+??|6?U}3(3<3oSy{@U^B z?r#?pJ-T@D;yve_;S$-tXv@CXh=ZwJQW$d@vQ0Ii#*{UbGQfUPP$+wzjw=;I)eT=U zh>?~>RV0`4zpBWn)=gXJFaGhMptb)i~F(AtvSowIkhg3YO|QnU>tlf^)Wz>%8SDNKUYsXhJnexL81N z9pLy=q6ZZq^3NqR!I?2zRE@wcP=|qo)<$fdgC#*uYA%f`TZnKItKoP6p$=6|K*S^S zx#H|Os;6_*UaMwpWVq>yrv{DkBKDQydh^*q#dc7Ox{X~QA;#@R&K1pIHt#Wv|3l&% zYLfL!dS0sJyUj8ptz{`)`;Ct|CQg)MtrTNUvu*eD)>c7++9j8tDAH>SkffN9TQ`Ju8cY%8 z#P$q;B}CAc=T%tc7*Ob@O#5wV!wru^yM0339^^%bs&kZ~nU7*3Qi0BuRSb6g4RWZvNYozA7Ol`?h$Vx+h~N^Lyt>bA)m@VkO= zj)Ol%m{15@EeAlh33_7%n)n1HVgJ)NlAWYtB1PnF-UTex*-WD|-|^88zWwOcORt=J z@!X|LXJovHi^c6T+b8vhc9S(C?(Z(v5eP;PgJ^g>3dDe)FgM=8c$gUbK$eMK93(Hh zbIb|4ZU+M_cFga6ASdQ~3%YF}vAA6o@JCnDzM>RlEfBC$)md0j3Y<{I(pA|}w@`{0 zqM6|f0DVkm*UdceQii9DRGRSuCQi=fNG!E-rCx8=-zW1#i_%T$8R=E&9qAL|^j6sWUVrJi zd$;h8%x-R6+t}G*b~gJl_OYYv)NXtD^p25B;(p`R;gdUjiVN|=VE@vfU~tf|h2u!? zwIZH$@rO?Cmz9_%LB?kyktG82W=&7Z^>H?i)PSiXdFkkyXCxJ2W?Cr7Ju8cKOf~MU z1XG??r>a^SQF3_*To~B_v*819VE2$G>L0Q)3Kl$RBl<83RPh!0HxOrShn2J^;-%^bvCr2d@^zE;tKj`fT6rI`I(m6Q2=cLy~Uka++yLI*a-p9N(|Vwq1!!`TWb3mygW>95TOy(>!5orhqELJ+$I@1yx)^Aa|Ty8~2U% ziKjLEX~C)|`Ok(W^G2g_nYNTsO`O49h&NT!iDV8|OkH2uhhTJBmrE z&W0^V21NCMG*$}TeZ;}VqsZ zCfgZiEZboZB?!inytE~q7JTwEP3rr~_PXdo%I66QmGE%lb-)^Mg2U;ehJ+0v@vilu z=KP?S7Z=mW`oSFGDLFL2F`TI;4bU|uqjD^w#$U98Y}qtYaeh>;W_@fcAVXntMwG>jkMxAkyj`Q)gwNYhc{n>!wakG;ti1|P#Uv|{6QdoRx3Kh?9R4}&# z#2VCTrwWq^y7=>?W=xaH*yLug&}=s+C*?wIsWv()$DFt1))AAn)Mti2)b(~KIaaZi zBmF|d6TMwBn#YPylNpVD_R})8HLx7=PeBmkzherrk4ekFxM%yXz@eTO>m}w~8)a$q zHPLP&N*^;R@To|wdgRPY>!}7calr~^tzgR6y?I1tGhAs*CzG|^4DTOHb-)-So6ZiK z+}~VSnDn!1xjZRN9>BrgywuR_S;9kbWHWT4zumCl5Kmz50?a4BJ9zn@j{q88#}3w< zypoqQo~iqE0iu8j61oe@H1m81dEs(VF3GlBRhe7PFbiOH3|22KB1Yy^{@BzUPcWM| zbX@|I~wVDc)c)?;ivs*63EwTNl%gFkV z3G0XGrhHylyBlbFadx6IS{$92K+N-O8(qD(+1~cy53Fy3_yKfaXOKwq^G$7Au(C98D22GmW`tG?tt<3Yf?rUNf2#w z)2nAz7pBX4b~;u9Mc19_;X-mByA3vO_iV;cxH@+z!_~WJ{r>F(1^idEW&3;HqGL=O zx^_xg(o#u?*+^Ll$)5j~+%UK^0g5H>C|M&h@4scN+Tnu?gdDBAuQt)lGl(q49E`Ze zAp-f|<6EP)r`KQL4F71!{qIrG-8-MW&c90L!N(Ktc}v*M#iBbiIX)Rh#Y(P~o0!-v zZXUZgJ&bd_ue>wp+#jUe6MNd|7oi4YB#}NC1wF(BTyK1JLbFg=7i0NI8{5PrRj-In z%?jL^QUc~Ht%_Com5l4Fp5{|mwn8=FhR(2(Zpw9tSfZSg4cx%glYK48Tn#6-7Ru@> zGqRm59dj54bg!?thP^KeOl`}_nkEW){eFc4YJ`7zVLYqWW^6MAa1;f0Z;R1?PWty< zh~lc!W5Kvt+RHo&_ToqG9)E=Qz4+Sm&piL=(f*73CxHBKQscv2@$`3` z93s7&?ev1%g`;$M2U+ul!Ni1^!GrhFNv-}>#j}zEcAifvc2@fZCsZQlOv+U=S-N{R zV+1KvcZ^iZ&gN7@@k~RJWksd2i!XEU5!knLVy8hwDKF6xY8V++EID|f*b2l>d)$44 z{{Vn%9hsP|pbTO$xdJFN44oz-a4#XaJe|^I&TS=z=s?Cyp{8hN5Z!WA^SD1jwM-e2 z62fi?f@(*u5JX%@0Ry08(_;xoq?q^=^R#Wy(fQ4kGPOKMBF%>=Z>lxXY)+*mK(SM$ z!%4`YS-f6{&M<#V=OE6GlMUH(M`xwt14XVk%uUm+L+DYj%9|bwBNe1DVsQ2Y;O+`d zWic&C5ZXdJ@9gL*=YbwPp?h^`K4CDPp!fSD z`vdIV6ndr6I4+jHR36K+wV(7$oEQ8gW6R1y)d?_*by4L2bU)(AKe5i8CWHcwy1dQI z2+TVvgJjy?BcDKM_rSp){rE#_Tw0G&ev4AP%;jv%D~cuizhrtF%-ylnB4Ap5PfW*k zJ>J)QT(=>h{QJ_%X4W%tUXJdZxq0UN`Din}md@v+y`8&vr=#g7WS!exKEjh5{`-~l z#6(qapSZ2JK`a`?%=Ls3;+tHXf2%|!nZSCeq>~^_uSa-{`}^38ut%$L$uiuco&pm! zgB)w2%80S?GJvU^IKab?5SQ9mCo#5+C6u!U7eFeiz)Z zbdKCCd~|5$#5Sto{mscoUSLU?Rcr;=FkQfmZUbz8-MA&o{F(@$cr9@D>~D4kBx!sI~^T%~D<8*eR`+#4P%B$4EVi;Vqzj_PzmYPmawcPqtgTsdJ3Fks(SpLH7iH7!^3n&tytg-ts&hkt*Rl*5fDOtoRUsK2bjsGrkd1Yeh~O zOSb>?q~l#W;{?AWoKGFz?XATga#O#-wbB%XnzMGeZiiqGY*_xc2QySW+HZcJa=93t#4^2vSpIdNHDDP4q_ij8s zVm9A~XS_x&c*g7IDWb?4#^6#ehN}Ru9eLGS{~WyiXgc(TzCP+nwdk`ntZL&dwI} z!b#U=&;@b`pA7As$6X4_g@sAhX!ueYh{$5 zmAA8v+hTNDerb*`d=TDVPS2zShu1_}r>Q_iib?X>$Rc{HM3L2KWlS}i!JkPlK={5G z|9&o)Ea@r~M9w%5i0m&Qdg|sMMc3J?bVE!~pj;}YX^VlAb>eu@XSTg~VeQ&AyojIV zI(xIv$97H)zqrN;0av4&h!P<~`+#6)xKR2>vi)gsx}P+hA6~ImJ`Hc**D$);==`(nM}e);m{)&12c4Q3t6Fg|I|VSg(3=%CP{?C$*GxuJf{ zS_#Zx4&Jr^UbL|V@M7*mWFBr>WM-PS0-!OX8wn`hvgBB9WE>p;1oO2pyR}Fi+x(do zcxMM_y(w40PrYk7r{zhA@*!G^S%xL6;=Es_n42Q<(;)Kebe6Jc z{94+yl+2V)xM^^1{g|p~w`cRHF!e|;ZI!VTK$z)YG}*@mg=2PGb% zbe#jbj6)1_Ju;FC#>ZKO@X#?V^!6Jkf7L*sBfHe5&U9T~PlK%Ps%C6DB=jkZO;>ju z8a6qujhT}R%xQ5}0HuCP*m~>k-55#;e@>4bI$tW8trXlnS#hYOJ8N zlk$8EnWjU1@WzztEYRXKzn<+#)=OzwTL^9C)Zr5jo}~dzCM= zG|nSgRijd?6{US&l18J^Tf2utrJUhrOADkfg_c<nX;D^(vH{Yolp=(Uvn<5p@)T-28;Un_Y;SP+I6@sKUV&tY`;e=VlhWhr?;!TvYWxi zI7b1Ar%d67Ty5GC8xyW%Zw`+XI(BA zOfS#ek{C}ZA(BT#BZdv0Wd*e5Ytp|TNN0L8bSRcR52pd}gsBuZf?tqswM?f7sS#;j~N)HTjNpCH0ou{csHeQy9D$+g1_Gx6u`P)5cl zvNVH|yun{cf0b+*>|(_=VTWv0cHMkRlJWrr)@!BZQmvLZe1A4Sd%RRPcr{1md|1pw zJs-mxHijvmzOpGOMAnmTMiHERU$PRzoe6AJQ8WXBFgYlrQA?!lHWwFfW`8=Sa7sS` zf3Npzv$Kn>R%$dujTZM)x(NXUwb}D&yuLVDRaRCJ8PreySX%7O$pE%P+hC#Ax3((F zYipJHrKQTW*Y<3?(o9dLqX<{<$uZgR3m@_gLpj;OhdxVC(*AYO>Uqe2h_~O8?WX|W z)|J_e(3#7cE_N30YACm``!utt*Aj0FmnM-X8O2AXZ)6*zkr4eJ_a(u8D5+#jWT{Dz$at^5w0w=g)81XU=RH4YN_JZ7Eaw)cE+; z?)>`fx+G<`GACQ=lWx?ptxrdzfnm0!!yk@ewc#uF8BJTT+?zUn!SX(*W9@d*(s9Rv zxHOdWbt}1dIu--bo0_@`AI__`lEQe*K|YP9E${Pp#N%IZCg_5>Zx9tihKsgpQ9Zck zWGM=2Vt0&%z$PLRI0_RqFL`FlSu3~&)+G5~aPNfw^k1ZZ>`fK2-fUD|8k6pcty=#6 zl`F(`JEul#w{Bg(-T~{{Ddp~MHmXl;?(TNL&~`Sm6D!4H2mY>$or{N%!NE;D7}4ok z-*#WTN2WNBM7aI=v_XVBe~9kuXvXU#M_DP0hbi+ihtRBqt!Bndt;5?sW8_pOUtOb? zUzuXgh-*5NhUuKCa`zQca~5P^MNzK#1-N$8)ALhPFMTo4O$U#BG6%P^(S*me$O`IB zM9K<)56kdmt;*b{>CKqlh(I4Bh|GY+qoCp4nSHUbQsB&M()*`DZL_^; z7s)$nQF`aS@BGgAnMb!Dz5RClk&k^We)#HhufF+aymabR{DBXDIBqqY#bW%0ciy=X z-xyZ=qY2}qpY|)z3Gd;tmZHG|tfaf6((mpVv`vdHz~en?y-KxcO6#s;>R$ArH0+=y zr19hGBS zoq%c(IC@=i-~^GX?uDQ2}?|v4{>q*f?`5zc@3~fveMMz5HEy?4)t?LsJG3bxFI&NGS3`n<9hiXqvy6o6nU> zel}iN5ecD|-+FSL?sy(((A3@=eHg;g!zQYiZT)|`A%-<;*k|W{JTwe_+H$8-mb<8o z(ryXTrPWBu6cxc+xe{15vi$G=XjU&~bnkmy%DDROyNgT}gZ+zEK+TM!Yo^Y!PN~6= z-vQ9Lm~)hPCD}s#^@QzS#CZFH0nm%0os8@5EEhV3N@d4Lr+4yu5Rf5^XLn|gzUm`4 zx-}Ee4eg#kw3WWg_tfp||E90Mf3ZI%+h>^baFcMbzFQYe_Z5Q&Ti=mlPFq&WSd_q3 zZffbQoC#1;6bZP6Y*z~nhQVf_pQsS#wg}hl8EkHt9yPyXX{oR%=(%HC*9^=eGd<>^ z)LaE5;yX%eGBh=~Os^?IvyJvPnj=kA`l+iqV6 zp*=SjORBnaedk+9X*lc9Bg8qntbV|$EpiS+`Gm%|A-us&d*wybeV((2vb7;X z)-}p+Y@7}dQ9vJMGIGOILnAJ6(ZrLHl>*kqcsyfjDptZku>{uyw>V;s9ucd?oVshe zzY0;uR5b-^i{mNLK!E1vF8UTS2sN3zGMcCQJeby(OddL*w>k}ZH07dr5iZ?Qo9hjVXoY;4(EK1sC0 zl08I`dZ_L{R66fT>7W_E8}~1CIpN^4_N3h^PRP_&oIuw>7-zUMO^KQjTu!`rQAHua zb4E(iG4XC6QVro|%&CNew zuTy>V9un)l?+~t?^@wUy6(f4a;NYlG!i@cw(%&RmfHL^~S!rE5BWfc{r8aMs#yLo< z4l=3>8SU10k8@)miu=EXT;}`Bqk7Z=Lw7Ci`j>TOt~e=kTd@K|2<1F?W(h?_-2o*n zK29d>+M<^-K&id5+2u0jflJ2LN9A&B{N=M}AEz#*EG3+83SpFUh%#fjgu~2oZKU2X zjLnVbn3hTxmBm_M>#7M_YHbGURLwvvH!USL>l@&$zb5Ki(gl$Xp}AZTj7@hsV~xq; zBq3w_Q&VGScDJ^?G4H5Aj^38;D^Bdx;M4v9VteS*?l!~W9q1>p@ctjkpkb|%e0WN* zJchVl5gF$YS0GONR302$-jcbcl;6{b(OrcHcazj#sIj&3qD}vhupH#1IqAG~Spm%l8{DH4mXdX+6rS*P zfjpj*t&$}ZUnyE*PWK9PS^yRD#9Rd-=9#ltH{I97Dw1B=n~1NCn(lidVInHK>!pXg zfDAHv>a6Rd$R5FE1ZvxyVw3q}v1-Pq)uO!)#k>vel<`$_~|EF8&bPBYa znQ@LGFYSa%K)n>!+_g|IqDzsf%x;RasAi~%FWEZJXxaPMuLH*JZlm}UNgJvsfQ(|91)vTd7RD7}D z2iaM*VpgxnRkQlvf^RV`C1>|s%M@j$MC8Svw=H9&o=hsaautOAo?~!Ll@)z#1#ibS zOYz4pW;j*6=_L`fH!JXP_x9c_ZHAUIu`4=b@&#c&^17W(cF%kxK{BQkORLfY>EqI; zgr_~TaQ@b6$p;ty$@ktv?|kADNS7o^(c6z+fBhkPcrqVNe^RE)?00gd14o^q_Tf$! z&>ii1JZL~23_*1Z#Jy;z(*uIvMC>BtasQSn1E4ON?gu!FVnMH}sHDUSX+mhq*C{g# z1bar+9Rs&&QA1!Kxj`0Mer&GijOHJMNN|fqxjP@v6U=GqU(k^ zV+4bpB{I)uf3#^b)BroOWDAm2=9s^uoWjJFw;9#q*ikaEsb35=@RPQ$=>UUNlLo3s zQRJ$K={o!yo>DAmy5Yzx4%LIu6YV;tetvXz#&OX2WuZFbF@V?o0Nd%eL2-J!7KN?S z0k0PU4OBPnky1X*02C?!Jr9<8_R`uz+k(2NFdER90PgHD#rN3B>W%R)+QFAN8~yio z@P?dK%6a!ZXA2Q6HPP6c^?Wkoj5E={wL`RMhi^uPEBG+Xhsd?nnLKJv=W>n-NHOZM zPyDs?r&2*`CQLiRA6*w6x2S%hG;{Uz&gr$anf;4bE}l9yW1Hs8)ZE#*3l}zLjXrgXtAmW5><{r~XFCH0WFm}aa$gC39Op#CAg4br6fu$*`ifhQBV!};b zm&K0Z5LX4umo*~h1X?3EsvO>4ctrH(Y2QPBD=RWPn(vF1&5YXbQz(SMl-XbQZw4fr zB6^K5{bHb7%PGAzYOXY!lMQ%GHk*TukAEUnq;2VJ!hiEf+TR>`c<<)bOFN5b&k6#T z+8!O z{8D9rjZYZG?d=>LMvd1&MsZ0lc!IfZ9z-W-l*Kk~g!Dc5W8QR^XfZG~ClrjcQBf%g zpMK>tru#|GvSsZu{OJ$4_qt)}DcPg7f;{qI%n_rDIClS8F4nB^kwDGY5%B|pW9BlQ z=^7!tWP_wrrsrfeBvUi(P7^(sDf=j2L*xdi?gb5@IRQcEDbs8`>nM3kO=o=%Bhc5B zDfQ-Z{tj-jBi)i7i>($HAIv^Q-C|MRo4PsGXvn+Ev$L|!Ii*8O*iPsVaSu9I2P9DS z`cb3U?fb6wif`>C6d8h_k?>Oo{%fwsWT$sK%TJgneMJT{bk_2J6NLCaM6+k9sT52Q zo~&wy{3P>wSV%&{}d#?GknjB~{F`>t4n(IB`P*$w)Q4bPfV; zJC@@=LV|h_i%c5fKQD8FxTUMYARl)?%i~4DsloJgl^9deD8+CLjEHUM`bvbw zgr~L{zsQ)SFhX@?U{Dl_IK)#3cXP>qF8#l~YElKP$oyuiAZukUo3*D`CRR2!YzQPh zRju09Z`N^jsGHCp^I&&P<23ua)Dw}K{3 zFE%K|K!o#`oJ1ObCjDcN@udzHwYll7$72rFPD}B^c62h2?JlWEp3lgm$N2yxk z0nJJx1PqA$sA+woAU^BaiY6Km9NC31PeB@Al~WYl+!#n>kI)D{gk==vMMi~mO13@c zaXa=*cN!!jreVHnFbkZgy98K8v>iCDw~Gva3|Y2un&C>@(u~=A5pM0&b08VGWiu*R zVUv5Z1{gkqxJaX7XQP(zp8PG`5-eF#8t%!y=vOFawn7{3+3ec%+SXQGuMZ1mb|{`n z+R?f*8^e>o1Lo}$Wil+1u4I2ns8VXekHqHIu}ZgjJQcaDv^p(MZhip1?G+U(uL)b& z^5dnDn<>k5$2~3!gQ))6yG*YdpY`GmUmY8z$ZmJuU`F+NHILl6 zG$Kg{^_n_m7hliZT&&9Iz}eTVb)?j>1QZF_8e?0A*3hZs&M zEcMq(583u7-j&MHyYewvwog%;%GQ}P%RZ@($mz;hlP0&u3dKB1m{;tqAxf6B89S;u zmKoWmJCR}u0qyDhYQdnkevxb3e0cThYYv+8)nLl0$GT1oUdWBzPm{u(@eB&)!TnAO z!g9_$9V8PnTZL<4C%5D;5_TLn;b(74_e3XeXR0|;zP58|^U}3z22+%bkvSrl1nwqW zyaRaJPNqlkU;{+5O`vfgBmKWxM89Y4d%ofY8o0S-LGhyH zqNgMX*RkIZQu9G-87!K@TTvWOI-KQ*>DFCeG+yBkmC7Eu6s|qH?&{(P>19}i;ZBqILiLB5FdPh{-p0Wo@9}a$@nKd z>?{~IaWeIS;uI_H66W1iu@oS=8|PfpZW*>gD=V$ibi4gZ9X;n_LIe!kezN^R6(j74+ zny=N$<%O|SBbCc7#Qx;u0_gO@?d2QG>+1`k)8`k?pWJzH_$W@+@NZhEd(yQ%Cj5_p zs-I1UsL!2y@nz<$iF8fFbU!4b+{87eI9uU)zYUNgYeQ5OaAS?d44VDSyC2_u@!e;4Z@+te_wl>$&hG8*&R*ExpB=#!%-HP8 zwQH9z&(2Rwq-WE|Nl%WqmmTV_`nGRreAuGsL$U1<@yF2tv-EJF-5vc}7>s_2pBS>x zZZO7eGcrtfgnNmU8A#d9BR@_?Nv5OVEB?6cAQovpVGZIC%Nj`_%?^C~;S#)iN_-~E zDiKsNhBg`M$?5_#46&UfNYJI}-ne_&aP9HC9D*jxwE@d>S&10;6kCy< zG{-hpnPxa#_&o2Q{w_IZu`gmqT9QtSy4{w&T%5O;ikfMvl5Kkv#Uk;@u!77UI=5qY ze;5oLUmq(%q2BQg)+g2*?T>Nq%qctgcY@5m#@STV&4Ihmn?H+eFuZ`7k@nw^&9Ud@G27*O!W~D7@paR?E@)M+qfhGs6B*n-lS|!N>7N?*aY`C1Jx2VYT8<*VXF2-WLT;v>QNEci@%iqNXkpg;NLC? zIi8u{RW|2Wl=10lzdknRkCf-<{gf@14g0gl<#?p#BCgFLK@Q0gW4J?yt?tmwP3O3b ze~&$U8SLWzNp+X4dCg(PWg#yh=M>XKwD*HEkIj;H!^b zc;V*F(yOH-f;%D4;~u$@he`;#Adu`A)$t&K)f+PzZuIGy&!ODpL7E5-Cmf>eZy#=@ zKYY!D?!WLZfU+WY*LDog4iMk=iK?zU{_|+6NFk)r`B-2rHAgz^B3#?Yx^fmiJR|7G zT+dSlD09W&J6vz<{V4reSphA8SQ)P3RfS+BVE6)YUHeUog<)3q8q4Epgb>N5KIw3R zIdfCglT%8X=xNIebkj6#-3*O5M5>kn5O0Vv8D+-f^-rw zgX>6#e;V!pKu!k{YN$9KoUw>A|G$Kfg(entOe$|$>8fWJ>-8$LA=0k)5#GT~KeDm2 z(p#sfC$+;N=Ic)Ua*8F~L-zT9Z3n-=*+|+%VA~mcCk%J(;P*jV@8#9(ADiIS;U#;s zU=h7~fvVhaobe3ZXo<oa!O!~Z2%{y#{bXd(3XnD8AqEh? z;69YeR+-|_QKp)n@il_SxxdIbKFdTzlHLuB*WMCSYkF_%=$}Zjw3Td5zY91Bu;ki< zmv3JW&s^Cys$1>O*2;=e&Sx?P)3h)&E?l`XZj7IRe3qt%y2)pU8F&uf_e!Yok(~V@ z4sG0jJF*?@K+^E%4un*FGnh#GksRQW-kZ#C8s@krI$%D^oPEt)C!iu!4Pq^2Mi5xb zGQS)Esu#>;sb%KOai+T}l{Hx=)rRb3vxLzKM*;r9oJWm9QxNt98H%%9XM}C#MFw6= z5s)b%stHP}>Sy+}^B48&PvhKT&iJS$Ks|G;Ip!iWSJNH8e8W@$KN3%-YZZ!ntP^75 zI1TaUX~3Ybi21tfQu)PaFF$ks?)l4?%b;_(JX*_S7R!rIq&nzw;dIGQ4=!Pk3nv~B z0UZ4S93ES?G-ODJ4y0=&bv^m5jleKxs52*)9|?=0hs1VK5WGwrrur@p2%BSeo9hX! zgswjpN#0P&mZ(oTp)boJj!d^rnU*UXD{w%OZ_8pw9>srTY7TV>QBE}ULiUVcy=8*4NkvKutTAL6LVo6h15NG85neFeYv)b(x5bhq(I5OS znDwmbF6x$%ikwIAl?BfhWd7ERHbzuYG|h1hL>(1i1e#;cpFm({dZM$DfW`&X3OMqc zJD^d5(M&rzleqhG%8s04rA2;R^hdu7n0V z-O_Lh?+8@;;9h3s(S=8^ymIfIh4;ZR+#3h+-}6<&I7r`|qzSYAorFD+>xV7Tq3;~X z4<9CJ>x;eJ^#uh*l$oZK#$i=BJomrr=|r7iPRB51U38)XHXy#OcdTZCY2hY=i3juMS)Dp*3COQkYky;Q3Csd%0- zoHJ|j2vgm$oY&Uf5eEZqNou2imz+jQnogpOr=*vqN8(hZ^o@)AyKl5R_?Z`9eC3Td z(n257y7$A1G=_saHt7>Yji(b z4+tGMon?y%wsIX)Gq8|Vcm;gJ4EL5emkFRvMK=PFm>(4us-p`I_?70E=crCIci!iU zAZj=CnZQs*`dd-xsffDntmFTx#mFb!yXQ^kyutnmVl&etrY=Y&aY&pLSKM}ntKc>a z%QQ5@HEphxT7@E2ow1^&@-&lG#I!KI;CdEOOcqkZ^E8zrZkj%FP$n&+?2>TY$#&E~ z>(!W;6am^59Vxe@x1{~ehP=2UP5aBG{H4v^*Pb%(e^vUQBxO-r&hOs8znfo{7IpmA ztx=p*UVDYtZt1l>Tz>5qp!&mgjUiwh4OLP5Gq}fda}9j#WbtvAKX5(CcV2BilMLda z7^~nY4Dz~X8|T11yhtpfbG5h!*M3ZQsA4yprwj_ZwP0)FM>Vi4gmQ(a^~Z!PF=yLD ziY7z+s2DB)0ozxXi^cZqA)dPD(2@y8#}Ip?$@hu_e;0|g-N!J~Y~3g?10Jx96;r45 zTA}a|nasst{0s%m6xJ!D$f|pm3SWjmMbT8T^T4r?Tcybs(5~-L2YfBpq}Ro^p6e?q zR#HUGz+R!!Vy(6^*XgXZ+U=FG>FJfbw_kW+<-*3!j<@0+Q<_7q_yat9FiX^(ckV9>4y=(VC_$`RcYwxUXzuXaoM&fE$;%v>$7+=Bj@w_xM*ur zWDkszY`>;E_#>~2#|PnR=o6;X4mH7659jGp&r(S0O;4lhf@#mEu{b%Fg1;RjGhB1* zVq|zaEpQ)@Xd#GFDxx98dX{Tw#Vu@rcUL?w<@@O{e3v1Em>#o{H~>4Kh*YYkZ0gK4 zY@LXLt)at3>2gMhoa&!SML3UjX&bE9W8u@E-l=WY>pPu|jh)qng`J6&m7TQfD$34l z_n&`$=f>&%{n4G#NQbb%1uz%qo1J%zz;X`ZY53vt51_v^%8AEz8`1-Je z`d`>r6M(9VJE$w_HE`~7TE9j;M!73n4~37oLq#L{)6Y}>;isQ|_(7l0DQb5Z*d-*^ zit$LX!k0Zl7nrloL4pYBD*Qg;{9){fZC40ss%20BYzlK!GeDT1WwD`gu2yctH@F@U zLt{D0w{p4NV)2)`W>LqWD$?Yu6X}ukiHdS8 z)7|a*8g3ftyOg0oBN?HOPcT_W#6RSV7LIINIyBJcwB(rBracz80`Dp+7PW#ntJJy0 zSu-H!G$`dTdV!q-ZrT-Oh*W6&9@*oXN z7q%AG)?T*@ONIIQ*J*9GJZo96x5l)YhDONi?|t^|w_ktw=+2#Uub(>(joSy)awnwJ z4zTiZCZdxlmX7gL9b)8&ao_tC6ukkst?@+1)PBPG{|JDytnIB%IqqBYNww(1Lc`0DBPmdN9FhzEj?2A=L2qHz{s~p+MXb{6UEqBZ^ z5O@+e8rMSH(LKXxTi$0~okG0nN2cdP?9!wfJk4y~Hhe??lR^BbX*z@fAw04HJTk6K zbg^(Fr4idv0pD2YXH=pp7(ADWbV8_VjhL27;C>KrfM768BcO_tw*{$!-{rgQ_Hq&M zUFA(n%Szl?h}&^C+vEow!vlzL(4o=YpVJjgzl|2EtNfmaISaHouBF>;ZS=DzM)6kMxm z$3?93(YRtFrvw-0lCD`ns-S}0_=Mjmg8?d6!M`S3fN8?__@}+D@|;u$tGu&Wtf=`_ zlFOyjtD0e~F7D0mojbQGtLmyFN#m>IN79l<`flB$bMXCf;eLGEIJiQ`?n%2V_+DM1 zZ@#;N|DvF`Sve~^D})ndx*r9Boc5_Kl4mOGfVE|wi@cOB8Z>6W8b>Msa+5ixI~jL- zB>#uS#q~}{usi%4+oGURzak>mU$;yP1n1m&8bhRX&IO6a6EPxd5lFaGb1mJn7=*W; z>2S?-lGy0aq`&XUZ49jCo^(liTkJ1-@hTg?5T9YYclMaJu>lBQWz&+xQpI8}$KH42 z(TzKI*oa^8f7I8a$b3XU!{4h>2k5xC$mMiawO4#PFD#rcOriN@T?L*xx8zZ~(GvmrSa1 zQ5Dm3tzSnmSMs51TcZ3PJ0(tyT?WBas56V530)(;+Q_3+E3pvWZeKBZLg1e707}0l zJu7`tOenvW@ zW);Lg(JnC)q8z{|l#x8)5PFfU85XS>aDF~>rqay04reo$0gUKqfq@Nhfs@I!EnO_f=}pK<_+nqwNqtzodUSPS;-Mc1UA=kB9S2 za3>XlQ)6Hooq$;oB!a5;CS|`4{%sjB%>^mmB>U>A;-9P_vFRI%q>|hmHOA1zfIm)P53*@4& zsv4)htRo7+kp|e^kqt6xh`qwpb}h#V93Ko;2?L%4fKe54;5}yPn@N5jto#el-o16H zSX??i))?F0UutblZk;-{w6NM<-Q0AS+;3);dL4M(#^Bz)9^U+NNPx$9XHKwI!=gRd zI@_1*l?TLB;z-uSSg|%Er{qGGS3`rc(ORm?C`&WJ>i)VIw?8FD9dF4gvdX=u$1LZ} z1>60sX;`*>nh}=-;iOAbsX&Q}H|tqNlQnEM+88c3a~v^ktIv44E!J3%X}aozX;O6E zQ*4$%F!(nZBlvxj34GJsfg4!x@ScxfHb$ zsml~4?NYmxD49BF+OZ@<;!4&=$dYC2o^&xh|Ku8MBPx zQpbTAmBsfaNET@iwCB_9I-{NJ`yRgZuA4?+SJ>H`H!IsgP@~U4-p~jTolo z-pE0u;(9JuT$0_4$1!@Aa1th>ndLC3xlWPeyf`j|AcZ(d-h+I-&C<0yc0Ixl$TyrM za^K_9Rs)3HE8Q$K)C!Cw`3lc-6fFqyuOP5H@&uG(+tOy3(j}Kh0kzIC?nzz8!U#o5 z|F7)2O&Ab}a2GJ@U`3V3xTQPt&Ok6vso~haDSzAGvmS`JK?+z1E<3?e&&$`(oXNJ9m$MSou4mVeLd*TEu^r7sg_BjtE6E`rmlBk& z%3x0ZvtFB7MKwBNkWwnk+1oI)+`6`ZD*NThR)TX9wggo4=0SJMr17irpQTU`&x@R{ z1r1H*V3=d@}An~s}DdagaB1L(JGNv2IB#|R;OZct7)c%9^wHda| zC$xLocPRF#QvSL7x9`Q$Wyf(In8{P)pWi;$%OdPo{?J)FwOjarw>w|G0|GzuV@Q9L@`Sf-s!P_TR(=78y{&HqBL# zR0=HUI8-#6^BD^}iz0G@psHu<_(C(Qr?#r~YgzdyC-RZ!71yNL%nler&Lvez1BAGa z%C!((22d*9V)i1{r3C@4>r&%%<{QxPBk`I}9R^v!(V39mz)hrd-IR0e>snr`YD2Zf zC>?Unv}()C)lBt}Jxa5S2dx{2)i+(wkc{bA4}<+mpV>a{7B7H&6cK7gc_~&(>UM}S zjqnP1!o2Xn4YwPf{~;ATg^a!h1D~7gSy!sCEmbpW7`EkutsJvjKWrpM1$~8wKc!Zl z{8Y-3?|$pAwLh1y0co`~?y2tZv#0o4Jv6io=aq1O55izSN{RQk?<$vdr~)_UF>D|5 z{^R?3@Omeo_+(v8DoD{bg$d3CAq;acMwskMfCTh_gZeX(gK*HJBp{w&73-i{2@`vWbjRkS^MU!)v1D~0;y%k0eVi4y}hICMP*V?REl z%*o8mshWni(uEwuDQoP^GAQ*8+xlp~OC_DMPJh(PJJca@h7}}yshJTDa*NCgNTIcR zH@`hsw0DMt$Dg-hK4Wff7up<+r3Iw@pbZ~#9&Y^_gB^!vImyK2U$xl>*2 zpFBCgxahU#=DgKbYunpC0y_o=UGm>f&-S%(w#0TM*){C6e875G{*s|cq*j%nk1_GP z#PUobHk?tU^L6x!;z-=NtY#c#BrCk{Q!8G!R5zEfeVD62Y(Nj9N zO*3o%`e?MZzP`P+b*<}R%FtJpu}-&5{)Mzq-_Q!_zJz)0n07)trDBlPdU(%mZpHtD5So2~r1V0M^cIVAPL z3K4aJ9+I#~i1qd|sLa9dX!G{F`Ms3x{=URF?fdQ1rfG1N0KX2A9ZH+v$d_L*ScY3s zbkC9o+PA)PQ9fK5`P)B>u$>94>QAOyC$zK=_&-StqMwuD!m4y+wQRkkw@U)KKJ-H~ zM#vZ-_fiWhDl%Mf2N|e_8rZ}hE*^VrDlxliA&I}=D0lp?m>O2Pp+s#d_}jFDwLOu`shx7; z?8VM<>$u)+we&)#qsx$ib3HLbQ(8(r^Nx(N2RHAX+QS}`46Glr>4PIeQ&Rgp$dIPv z?dBctrb?14dOHsQ_jFp_I(zmDd(MiZR#-SO!6c6&9EBZe&v9Xq@OBqm_{lC~cFpm7 zN-{l&zZ!2U0${5v-EHVz-PoW86xfHnp_`V!QKDw23<8&#&G!U4c8sDn@qYhzTAOcc zx3%w7v0(dQ{cZPQe&Lyi4;Svg_s-jIzklKV2g_^@_i(RGtn#B!@vv1Msn!+cDaU?u z{MnM8es`=~XRWn=zlA>Tw0mU7#et$0GcLA#iwogaGr+A;by-M42u?^y5U!F|6%<I8J`;lWv&e4xt~De3CBO?=!x%z09)?KwW2Kpl|`6#VUJHn?Vjss3sQ?OsTrl_ zrSsiE`?xpPZhOUU*Yo2z>t(e^y3?mRo907mQ`jcOca)KSwswA?v`2Mzpw9D)*l$Vr znype^&*)Jdm$!*~Tw-_`@107i=lAx0ddHh5#P%{Z2jhYj;vni#^vITo zL)m@hQ6BXq2O^qi^;^J6K(FK?--iVrV#_!tooMLhyUb`NQHGpAinQnC$>WYM#OK2{ z$QKbKS;zGyWGmVM4Z;qxJzN~(b_-+|%`h9yTeiga*+SLV=T@2FAmSR;Ft(vi+)##1 zh#8##Ssp*Xy87;t9~2)z%dn^&=;c^9O@B3EcCiS!%gyc$fQTU@45?$zxBlaV9o^QL zwk}c0UB!;Jw|H&+#NzQv-2|XgS!aos7{rA`@q0Uwt$ID9;!`H}uWKL1t zYqfbU-oMuqwH%v_(L3ACPgI<0Gg_3=YhufsCo({yW$Z{|w`Rq&6D~uOOX| zqsQOL5KK1XuLI^8b#e(QnfiJ;rz0!ailr$nK#}9d(quEve@Pi(=OnsORmj(rPTtyk z4qV;4$Ts)(fMVP`Sj+p!*0BkftA&1)xxQIwG8@4I3 z;pfSG3q&iJ(KV3i5D9!75feg7I6#DCavqYG-t+$eI)Y(-4|b%J;-LfMj3Lhl$>_o& zGC+Vf!Z2BuHi75b9ldmd0WWd`z(EiIEF+45TmZHq4=B>>9yDzaE*F?7+_Da+&y6UW zGHLY17FN@2M z^ZSQq$-L<_|4i}Z5EPJ~dF;HH+U{;eQ>N)7t9-_X{O$5BgZ)VG>+C7T+v=vp^ca;K z@7NLwM0j8NHpQ^QS;0^(WtMjg>X8NXF7wanaEYt=TBk``ZO~~NO+}y^5<=XL^q!cp zeAEC@6H^ohp@dwx&Gr}_y?oWW;mKgCd*jAd^J3@X)vH@~&NR+kxUjW%^7if3t<}fG zNk>Mr2JaX>K4Q7|Yxw(Q$ZIomFo%m|ljOJjvr{dAWX|Gt*2A$hAj zhxw)mq#m{g-5%d0i?jN~Xy|^Q!a<(3eDrWzi z@B%15nM^A&Q(0MdG@I}^l5(DMI*iK(={C~U{cWUcW6Ju+9#wi$F9HxD;H!_J6A}y6 zC6Fd=wPYHqyd5+EdxA+&a@7`R6AVRT02XSDgBY_cF-&ONZrlH8IROKQ+7Txii#Qn= z6E|o`!;X@*a2q6D`;FoPL#RivsH_DDZI}B}#N6>cUvv~d1G1^R*>&s_8z^jt2s?~f zaV?7tCo_L+o?ui(AYm?p0z4@(qvHg6z67L`(szVoR;p49sMUL5BnFL<>WW}#SA_B* zo|coSMs@vtr{WM^tiAEpjR!Bo_?!>fISjAexB)M$U0E9r;nwNR)922$VC$VaA!g0k zV8S+_GX2R6b@+Z(Y9IfsPV=2pZ*M|eo4#e~Hggp-0C7DVk?_NL761cc z9As>RW<)77=Nj=!RoXER;%d$@t5_a2p{m-)BTr?FppehS6)26^vBa@DS*U{46IXrR zF`=v2_tkCt>j|P#^_!eT?ibT3rt>?s^T!_yUUIKr8DNvGZL-0@b9n5UN?}AMAV;MUmzaV6Q-NKG-Qak*zy9G9=)skS;E@#$;lv-Y* zn8WfUK;aiEm5bf<@fIPvX(NaJY5CMWq1sCF*g}Jgr33^P zlYE}*GD7w=ZODg@>6|;rI1N**Uw?#aqdr~nWgWy-b}aw3riQ}S)}}Y6^~hh;<(X!B z2j4b@`6K!Q!ja4mBYaYT&__pjK}Yi3<(um~we%qCfEBEVdbmBA(i{$gHl zHDz$?He=v*9m5c@3_5c}M!(7PdEZ zunwUNc%nYih4*AJBe8ySX#J zySjS9*f_Vev{zWUGCzN@|B=@}^lbHG8(?Fl|DkI2L;aNv^TAt{Pripg(Bv5&kQu6x z8t-7HX8)tYaml`#$B%^pX{5KmW&J4E!qE76NN4sc%(R%rQV$YK)wAn0 ztF{J)5@-2A1tD9;e>e(TY7bj!k00%W(5gE$QuLNC0QGmruw%wqDJC@vy_{nLv+SgK}i!+_47VxIK% zpo%PCU(d>hv?x>oULxswnOly5jJ@aeSyDx)v*HV00{*=Hpwn5LpKtoM z9lBQGbj=Qg8b^0xHMR3T0+x;4)n_zIhJfB`M;}vM-fCaQr0}tR-_NPnPNsmqLOn(v599 z{(M_vR1ysf3oA0_?axCj+%JesIVP+l zoSow`Wb*hYqzqPL>6~UqpJKc9EJwPfdbN>=pvN5-dJLI?O-}h(Jt4!jFr#O<>%x!| zBQRy)&cV;ARg9mvJp^L#p3wD7=88&AFLdHa_uMcm(Qg(5!vBKWpI6JA?Js+HQoZ;~?T^#_(_>ce-cC4Y7$q<|79VT1O4?>&ZEd-=Qdzmy7G`tCtGrE}lNSu(frnRjJJFU=zr=0U6pi3P3vx z{@vNXIjd`@z*kNIZ3ld12YhM=XbJdK0ty$;p4v$?E!jDB_F};nt3rutI#t?#@cIM! zrvBS^f!^WV##D+WEe-6S`sX?I#e_uFc6}Sz!!kzYu>hV9N%blv+mNtt8L}eVp z+E?TF4N8!KsZXTA!`~tO8@W$~9l#_E^YTsQfX1x+|2f^bcRXc>Kd)WZ9%#?(EQ4d) z+VaWyMiBJfY`GlQrO-}2`P79oyFXJ0$F!4f{mI?kC+qG>?U-%cyR%^&p3Ut)BD@13 z9@>#1E!d$3+nE&6k)UZR-Lz2Do{|00DEa>VhoD&kjfzO3yVCHyEA6TUu`QUt=r_0^ zp|`}n8=2&6y4~;o{U25^X(=0{id}e?h$HlgT_eBm~Lu5qHOnWUB_}ZHhbz_8Ji9l_sc;hQHH(SLf7qfBP&bJR`YX0n)_E5XBGrx1G@45@&Dy0K)%(B+Ww?fbt;8Wro;#&e<3I!n| zykx-IGf>_ADIfalhZ)f)7k=e2E%T8YGEC>u9vz~ZsT13e7C%&n(D=gv=uG*Q<%cbK z(E}nDm}1B$q91Uz%*-%3aDfwex|_2U^X0PIHqcPHl0QDrDyqN;Y|C`;Tv#y4eBK~k zF9#X}CTN+Lk-xD(zCa^FP=>e#EONvR2@?=fCbmLkXSTzP3!}wsI_y(`_>LGlnJ~*C zHp3Omu*dJ*l?Ur^|BEzS5hUaeZxjDLc|IVGg zu-Wvwxk@Ez+&gyrH}-(&_PhEwy5Pp*Ubk`kcB8wuc*BB4IP1fvhj4HNvuAO1&gR<> zHbj$-htbL*A9wUjrq1x3V*JSKb(YfQDqL7kV=WLPmxwMSq7_oN?|DYb+gu0YOgf5l z&e@?lNE?wEI~}nSD_*`X@6%Eu9f;fGyKX>f3-Kf*6&{% z_Fk1i+y>UP{$S7_9tn%5y?zIs@m9)I)J{8NROMj?Elz0T_vfoeGpXL$R`0sJ$kV4( z{#P-Lj#fs~Ht@4PbzO1^Bi-`>QiPpev4{z&mE~0*B7yW6WCOk`AAOMEvJkkKh#JvT zStfH4l%K78F0ST8n*u3fi4d}j(KiM3By9CCB%ZLL;y{9SF!z5%?~_7h_KN{ltnsvd z{G-`yxma8{BjH5d4Lu-GKtbR-0c7CCD-N|QK_>8>tSiB)BfLQ8KufEnf1X+sh2JXL zoWvFPrT;6K#VdD#arz|Jig%5Zns(B-TQsXThY{LP4a91F!c>h9Wz45QXB#sNya&*G?tn6VYm0GKgO_s2G`0b`jtxM6t`udSyIxBKoU5hBK&_GMnG-Tw!@o2 z29-k3_7bEgg**YufGkRo08t|RPb+eII|*UvLcr*+EG?}qE&X_YzVtFvlj>iLY_(N} zY~`23KQ%GO^5UO!!(xvb04JNhw==eD$$%gIXu6&(nw*2?aqFjNJL1M*bY`q?x|3^C zrjyvUz2B{QBur|*({U(SOVQr@PVRq@(S?|dd9?X;z;D~!))RCmLbpAR?ZDf>U3|?p&$B7^1>C7gDheNv0dB)5psxVN;A9aW5EZ= z)w6G2nYFeFb>n*z zQIt~d5VuQQVwEB@RH;bMP%HSbr}rX=yAan>QGXu<)}>l6fyrF!C82f}|4Rp3jy+~a zR90AR*JIkYc01kub#bSD7DFRyEiXq8PM?nItJ>C9^wj;0jo!X5_GlmF<`w!N<>>0fOjQ+Ehr1 zw7V^4hti*A(uH3F2;YLL&g&LK;6@9e>9Wg025`Xjpd)QAuc|K$GNz0V?hdvYb0~46 z?~R5oE|q1V?-9pxOTu(6IUovy5HJv3?e|<5&docgfU{K^M0&j3yqCdJs$YsMZvJY& zzd9JmI2ot4;NOx~qMG&zZ%YrSIQd@JZtiqm>OX(!)W~dUwfEk>{XBP^=i8&v^ABHp z?fH7E^?a{Zd;ZyXzx(d+di&Wt8x8>2b*PC^Bqd40e%~#1Wo%8^ap@?I1HPD^L_e<= z4QA%3klsszdgiJVgI19Fh)av|q*T(57nI!zL8KRp#a|LGL!2dFb?l3}QrUBghQu(4 zL2V1>ezR8VRIBg$VJ2faE7x%>d&h@4Cd?I^`oh)aB@n{4Nhb58Zk@@F0zJ3+A!+uh z{bglseszCW_li8Fe}<4iIR83r4w~gg z`WkRQD1ES7qDBS>#&r~sPkc~403lZ7n%?JKoK2{iwH=O(g@wUju-@;>sKoi!f0cLh zUrYSi-tn69iAulHXb`nktxJxq+?&isskH&qC`2V~#{-$u8NtVm@XIf2IbP9Om9F#4 zZuD{{lWgy}d3`Z9EU4=e>4Zyec;k#8{C_(C|YTyG$4e z8TyhNkGurp5yX9njG6rEaqX1$lIkKl-r49ZEIfPqg{`e;T?gYQpMCOiY=`po911?B z)4bz+U>r^%-qdnS@vAcY+BnlHze2TU4z1ZC%1Ifkb+{8^hxityIi&dcA29E(|RNE}gN(rZSJ+bM#~0wL0jKo;mR zHth}OpIXpOBhXucTDL?@*JHq7ilom)y5Z;sv5G9{L)+lQHUq<4hWJ`};D&>Id8Od{ z(i2l03NMQxt-86TOd-+p=MrX#ScdS^t!Up&`E{;K37_Ao*_)|k<-JP<@IFR;B4v#Tl#B99nGYefel$~d9IFND;q$~S4~^-kxx zy2N@RsM?NAxq#Ny^1E^p9T~dwoP0v!z6s|0`?R_ionKp{^6t~qo11l7e+O%R(A1FPKPkfc>eQS}Jf*74Or;wEImYqY1M3j0dk;(Zar4e z11eADcbKkY%fQ6-n$Ssf59vTOBuF7Na7qz3i;3TeKv)%lWuvpmyJUwx`Xs}E%5T(N zWDuZ}FPa^E2GBxMk?ei)=^}uh^8f-mNCt@-d2qoA>=NaePM-}(#fuhLjYW#qd%eujWz zu{YAR-k{rETdVbIj~Mo84r?^dx2JwF?ROiFSvsd4b2UAqnG%|^^=Dq;K%92m1z$L& za=4oDVR4~EDr@?Xa8t&Gz}2&c-Lw6Vz4BeHR%3$-6Xm=p2r2W0VK{cSS-zUUBKHmS zBd$Xv;Gz^tD9QC&E#*{Fy@7uqz12v)o|U5MGFBWdSGtSRH{c>Zs4mRf(Q(8(<|sQ% zw|FoHu)o>%Ami|3Wqt;@KoPorjtYdBU2#ALm;FfMt_=ayT*MWSpr(QL9{2($(LKdk zVDHK6QXz>Oig_2|4m;7lODGx?beej1AF=GYO%jDS8Qz9 zMQtOvaQfQT$!i-MrL(2k*EF-UViJK453$&*yE5GGzpB?;@|xTXXb--Mb|)$7+coUBKWw&AK2apK}&viS1QE1e6NV`6cFp1Yin@LwL{ky zTZs>ant{oN++bWpkw@7D;X>>M#14EP+aV7fVimIExtG6^ao{(!M%w3hNqROZhkG~A z*G@gZU0V<0TJ0tbf}3}qc>2YwPe1?s(#@r#a(IL*XM$rV>H0LrI69dj?P3Zfl31$L zXiehX1C^Okq|sv~m8#VHfxCf13Un;x1Ej~+_3gHTUY zJg8cdEUf3Ov^S~HQX@tnvWN1$?S+@v@Le>KR|~arj^!Z30J+XfGAKzxUt;1o4}pJL z-zvl&lSn4EcOiC6NHAN~9S0g}^->vPS0LLJGR9{jN~~f|%9y3upmC>)n&i8qWPEXN zgpWPZsTH$0V@4*%d*^nq+&*#Ti6__|dz`L~XY&taJQ0RZ#vGX+GvdYN@X;?uW$q(tEaOd zY(E`5f$9fEv`3jfzn#oJ2|RE~s?vJ~5{3BhA8u<5i`QR&{aG+pve;f$Cfo}z z0I^)Hdv;DjrMwK9k4K7=bLiV7FQONV#d@KzAh-nmf>_)Y#FjT$UDiy>kn$(#Ruq!< z<*J_Cy`9PnPdAR09>y{PJlR{lcN4LiUMC!53%h2rH!gA}Xs9&Mi_Y=kE9!Epg^wd0 z#C!VbVunj}g+uF2=`l=5iTH$s3THZf$M6;_L(d2oY-Sc52|<0pm`k|5k>#d9pUx@2 zfswSF(tL`@x3gio=kHI`+Og`^RI|C)6yL@iM_ZelX!-bY)UH=5h?-tj_oC=DI{oO4 zJ{T}kG1xmwE16#H^fU20kvGpUy(trLrz<6LLEcFvk-8U3iL6FK5s-h-4Vx0c=Z^y* z%IO4Ft#$^h)pNe?*HDNF`2h(JJ&)S1FZIvmVb&}qpN2YluPU2;KpQe44YCH2~iQuJt9^77Ae4&LaFOk`7px8uiJJa0edKC~~mcC=S#*4mA;wkm3xx}TNVF<=$eJ{FFo(*6l4t&SI-!u70U zB{|!K6dcVrss)FsF2Gv7@#iQU^+D@PIHugzkE^<*elpXzCf_#L}I|C1D}y z%$Xw?%1mHP`hka@m88tP<0@KC`j@q|m*EW=FJ0Yfp4ZXV?nn%F7v5}D#HouH(ff9H z(X(&9iOiJDQi#jw@;g~dZx#q1-NG`}&#^F*)i@oJw)PFj<5p$2lSeSpBh%SO2I|uD zd=exnTWi;kuCWp8NPh!4<7K0+17PVKLXZy}wJBDH>ls@b7u^*1PcXnwaH-c|u_~-E z)Om;kY`_5$n7NIv&>NK~M8|A#0lSX#i$YL~2{phkB5p}6l|cN15;>d$&lEh0DD|JP zi3KHKb$ggX^%wE_+#Kw1lT$NULIxD|$gjG(-^??^Hf7-D`*~^C2+RA_M9xhau|(SB zZv3azdX%)=+I{WzPPZ2FLZiW-%IEow`}g^kGiy(*4Tt>r$&HhHd)%Xmff7w?@zy)w z(8nB}!ldsAztgJR;iEX(A+UO=xxlgxb@Qy&e}Szswa0u{p3JH|p_&MO=)RP>gs_zw zs8s=vliMmukTzAsSVHnSfeSPw8Qyk-Yh`f`iTB^X_9frSgmzxKeg`AUC3JE`^qE|) zu+D6kTH&(Ffd;1hw3pUFYsB^(zhDf$oa5Qw zdv|2<-M*A-mVL7zrKaln$K`v*3%B_3&0D}idT6168+?k<&(iBXX~1n_M!wSr0xSvu z+}N2Hqz+Z?SIj@v;aYZqeMNVhNxMJ@(ys(AdRW)qbVCMhHBpQMa=L`$S!9BDVS z*A+$?W_l0Z41H*2w1>4!X7jm+4>xyj+_-RIbL-^EE1OpyTjn?tfzIx48uPX*`6abU z#mU5}a=4%f#aw=DGkia?EOr4HIjt+_=w%z_%E@hyxynz8M0->7Y?1eyWE_X-B zP-7qxn&k-6rHuS1K$dPg{+(;scSFcOrw1WqLI+}7enXdr=Ts-DZa^vVbH2jM7bsPX zG~5rffttgUGF|fOgi*W3R3{&ebmxrA48tKJesNw#_ssD_5+r(NxU!VdLRd+L`Ou*S3elZg*{CYpb`` zdxryfMD|MfGnZi6eKM)0&d7FnMD7xw>_>q6T`c?ZKN(}BHhI|8J1GUGmY&lDc{r16 zis-*X^q0u0or|a$p$dD2Bp1g&95nQ1grYTQA#`|Zz2Bz!ENs!>osn|12Vn|oA zw=1psjvAiokeqP!*mFe$e<l$Dc}Qd!XHa1& ziTcvE{Fijk>$p?p^iK8uojY4M7gtv9MV#Nh2km-RuiU(6S1R_sn@026xuz=WPb&KR zErC(mZHJ+lY+uhE?p#uj}2EaVYk-T+4>jb zD)kB}5jNJ5mxOt2_;ZQ8{65}Ms9Cq2A9L%f_(~Cx79{Ujb_F^%bX;r@iz3@Jtlj~}T|{{x2;qp#wKx?Wzy>5dWNQoj`tI~`)pGT9Ns>Xgt*n`)PwB$)SOq0uxZ@PP2BiKPN$Uar*{S|$|cg#W?G?x66^5wpqrYP6t zho_{7PV(USA@iTOD8ly=QDh#;g>I+h+Qp&E0}vb18W~PIbPTtXg}4Z@L_mQ{6sXU$ zpeUkToP-{5Sr9=(cj(e`;Eyf)pQX7Fp#{>*-q6nMwA#^yCrX}owH9Vw({b?C5PUiO z^-!<4;6mtPECUeZglgRwo1)j1OeRKXER(5`-(SI`h#aR&PWJEFL9V`bND|Qzc^>4q zUk|Z;(ha_Rac@h*p73BDh#plt$8Zw*^Kqcpmt@dA)E5Oc3q8F&@T9R) zHKw(1Vm0=!c(FpUo6lEsxxQ-BN_ZGk8%2R1NGm1;Fih%n+l(#yM(nz#U5$jn8;OJ| zWr-UnoBRGgowP(UN_rq;(v6+`5P+QV!rj~TZdV%^w+DmU1}r|^x)QoYH6OO$*L|py zd(x9NuIC>io2ozJ1Jx(Sc3uhVA8_GjuG>c%0rNeFi!j?}Rv}yKf>y~R3`9j31rqPo zKxB7_XESa%-8>dQh`7Z}4>?W*6-&6`sio(U9+gQ(4Y3fu8X+5~+01{ox_Yb`M=h(9 zWGxxrJGlZgykc&yvz~$R=w61@JdA3Js@m6ct5~e~NeE+)8IB|4Q_Ds)xRBVHJF$S_ zAg5OMZ75bMf_XZtK_;3?(#?F&Yg;?T=QlQMa(S`7)v4DzTQIqJvmlkZ z|2T2)PvOl(l+mlt4pPj)xthVigcF;oJ9xu|~kzr#VaBmSL#+G!A z4Ib>}xvwY{1`?M?fu6C=(_ZwD##!v4AavS^XBK-A7c2UjC5>Ta4jk)jsa+V9K!e(j zZ@h%FbrxBknHh4{tTAGjcsQr1nC9SB$J5oiYD+|39J?MMj0g!B9jDo5&YTM~%rmWG z=)i0%o&Rya^_SXTX}_aowW7AJDm%uSWrb3S!@QI9R+CaGjB~yaC`5;6VP@mRl+J4iJ(&g3vfB^rjDk%3>5XJvW1eX@<7h6nPY{QZ`SL$Xf zpV4LT-TUnKpf>_ln}|LbqQ3HJecI^vSC3;|IuYQWoS%1LFyDOZtqJel-)UdppN8&A z&3RJ0w9~r2x_V_}j$zX*H6j2U1BI^E{*4ltE1`B9mF5ip#2J4Ea7{O)&6xg~t2;Zs zvR_g^DvD%0yW2jf-<0$NIu3c)rxl)uojY~bVf8P4)eSFK)8+P`l(KQF^MszYSzPCI zJ3^-Qq8FW@Zo4SM2U{%pqYdyxtx>kcq7>m}{6CgTjb{3o6H$pec3C2OWCe8(mEfBs zfF@5`j>KPzQVOfx%&rqy2FoG?Nf(mx<@0nC@9%0{%a1WkX-*o{Ir$%p$7O|$$>loI zc`#;JfQqLxne;aw5NW9k_8UOFAOlSA87gjP39zGuj$UrZxWWgvL<5#>Qgqsvp6{2Q z@$g69#^sxNOhv%#(&~I!7_2n6^*%?`GNDea__*+xJv)6puWf2)wfm~Cb2oo%`P#jE z`8ujdE0*uV7PRgBXn8p=U(;kK^r5`RG+G=pP4C-*@bUa9Qz!ozeu?p`9|x4-Y=N`3 z86%In3#xltuObPKO%&?6Jj}*vKWsm3^Zt3j&#Doc)7agMZGa+q&~YoUn2buKSB56U z$SHb%NbGs)_0-z4fSVR_+%Pj2!DOY8lCm}M^%%YRIx3y3BEmyzcUD^xYvV#^^R?BC zVAfe&W;|oEGz+b|e*Qq7c24VSSG1=ThF+>KE?zsfv2jg?nDMpvNJGTYj+6A2hZAaz z)uY@Rwv^SrbDHv{A4ZS|cKP1|eonpqJtTHB*bX`cy;H+PMRPGWOo&Xs?!5v0f?lXv zU52(LbR;z9rpovWP}U=y?y&yFTONAh*v(fVNOaOE1LPyj!y#TAWZ5c81=biskr%Yi-A@RK8@&C^f*%K|&25FV^ImL_CajcBy z+`fF-8SU&i3(aOGbIv*UXcO9_8Hhu*?s|MEo3kIA><4WJ;aXZ7S(S30T&Za0qSZHj zCw=v7N%y#FNH=afUjfuqgpNcv-yfm~hkT8CmPbD=ZOh#>Tzk5aU?bNrx93>hlTg4J z5(Aiqj9Y(OZ5vbVHwa4M7*Z5xvwlilZVK0_?RdCH!%2^kMmEoe(H>`z)!jern4T2@OX>Ag+ zw4!OdOS^}9ppN`8W=@b2+TZ)7W^~iPq*afD<%kkb9ZC~VS^%S10j~#ynp@uGA>aHk zSmB%PjMxO8z6wiu-A|;0$-&&5sWfnd`iS{!)Wv`jEB`Mzw`v_Vx7G=S{P;8kXfTrK z<#@i$AS-n*dK?DZ5m#%9eI3V?+y97DL*)ZddiVaTv|L$jOMAEWn)ZI}E$u_v$J9oe zXRlR8#nG{2+aG-O&Z|#9y}dA~57ySU-+bTO?|b-g``kz0_~?7zyS@A24{tkh80NNf zk6UK&ZT?6*n4~7Hsk^sdlAAW9?$8jjy}|2>nsj)j3`C~bYODSe}D=;o;5qi}Aq48vx0fnZozexX`zRpg^p ztzK}rQBrfay9R2hUe&*w!_{>K> z6220?bBXrR)aXIu&p0P_D0)t27fp`OaI(>O`W0&{2mPIsft=Q4SNnuVa&q(&3dtiy zvifYyIdSGItM%dIt2`gIb!HmpsQYUYWv;&agYwK@PWgD=?SBZdHxM;Gh}i3hN>oif z;Be?!`WA9*>0Wg=Ko&d+bti+U1)Tgt%W;eo8P72&)746NWSA>Nlq}b8a=qvUg#utX zCyytOa$#smSEhRkD zi!khb+Y5=Kr*q)R!u12U+`{7b+CL*Y>TJCJa-zwW=U!JhCeb~kPA z!>2-trde<=^z5>GXS^ekrLocPr@#B6%Jd~+2s({wbpb5Qx{yP=5GN#d2Q7)o%sS}F zcKWs+_)v{|nQjk?qAf2aOMhFuS|)Q+Yu;l14yLH^+w!)$hQoilX9P_yY;dEMUj6Y{-sZ!~#4xgik!8nZ7v>l!*uF0bX!F1au_y0zjl zc@mBnU8l^xHV0Q-Zs8j+%|ZWJy43?qJF=jikiTiSv9i2elwtMEZ+fuaWK2b@F6`l~ zPkaAs4z+)dyJ9{W5w$;4V!JpfvdE5AJ4vJCTE%K>MIRNabXOO?VXLKXjzy%v8|f>` zQ)+$P1Si5no!UILvH~(u1eSWeHfSFS5Qay$X->J%4_=lkRg7tv({aS4Z01TOWPq#N4~rca>)J2r5}>xr5PJH9L6gV&0zLg?Pm!wsOT#;XpaUYQqSE#-QJC5ZgZ1IQE!caaHS`&4e7Lpq)g6)1kFTj`{<@-8+rc zY7U8J#2InYHl+=qwtqQ$NoN_|F-#ets9lTl3+k|j*`Di@Gb(dt?FgGc;fF<5H2MDy zr9nlUf7Nmxs3+|QRk$FuNzba9^C)Q@88It%XQ$%hyp`89e{DGQbFt$3&?|8SGSH z{#fO^6Oj*q-lViF6+C-O8u#T~QT37Ww5l=oN0pS9TAt~3uu!P3tpR1=&i-yuF-5*MP zo=tZ`_IAROwFr)lTCHP&>mFNOUR>-R>mJpAZ`P_wIUP~$Xf)bySDwaG?L$-(`}?Qc zO{we9fyM@_n9Sf~YlatIHEb!d97trmJ%sfouu#zp^2zUYyn6r)uy`V4Ljn!XS@)THbGY=Cnu^tN%TLX&>ONQ7 zUjd|5=pt-!6JU8;YPN?9Z@Iylk_dL@h4-WKbIlmnC3^UEb@~>jpQ-3ErCgZoPI}kR zi|85;@2kSj%LT`N{TJbWMr-V`R?;0+TRVkCuva|UJziYvwwCM5#UdcN99UZDb}OLr z4wh~fxlR1?j6kj_ML*KCqRAt9NZ-51=cNrm*Dk|AaJ)Dt~*S zCO^EF`={na@MEx=dUL~h$+t5ejDJffzOWs4i#q7pJ`948ag#g;vzM|~|pe+O3Ou~(tuh+)&!+)O6DJY9LC*#s%+9}1MvOeVf`MkwJ-s5~HzcW+p-Je&T zK_%_Ot|}!2nA(GFecCvlOxXdZpO}M=07Ox)Vgn$gC@lo8!kT$6M3td1dU367~uedGQJq%vjmT+aSlC$K~2JGNd7;{-aJl{(XEj?6l`j;^Y%?kctVl3F(s5-owy42uN1KrkGG5Mq!(49y5;cV?GG z>@sLz7!a_(-|qgkCx}7AaO^JpIcw$-kr8>6&_q>c9eGswvuE#p@A{tWs>y0yzT5!S zDzZ|t{SB{JcKK^6@kKae@tVm%lgDz z9psnWi|yIj{AOdVF*%tRYL?$ApAxZRC*L_)%??{2Db2zB=1DO6I7#@)grQ4IBV1Nh zMWCKcMTG@O2^9ud`k)EZHoq&v4$j%Zg#!0BCme5ASf-Zv*iIjt?1xveIS z{eOf8cPO=guBbYWgKeF>MJ^3BUf_C~*(tE#ZrsyGs|AR#%$~bJwmlg~*zPnVDuipWkWjoCIOUMD`EI9mf(Y zhZv=kF_-E=Ik(#vCG`759FSF@izO>CH6^^W&9zH+0N@vs@%c;nSDCj1z#Q|=r{-*Z zn(FpBb(1y-#b?zFp}(zK0=i)KV?{L<5Z=-8?L>>NPEBowHQ&V4DES6P0rP#A`75So za?I>HEC^|1pOz`Y9SX|`K+_=HLwKYYV<8#NV z5u=+r;)XexKOd1k^n;e(0Zmb#^I>>bhokh(ZwCXuXZHqVj+%tn>oKueoUnp<%ul$A zAVy9x2CmwiQELsrB>C2q`y*=Xsj{A9m_qK9B4+e0p@2v~w6wITVuw@9$#N|fQf_oC zWL;n&Nb$64tKpTI84m5~wyE3e47UsoGfyMdPt{?HaS_=P5e!+}ls?fM^cGZSrG@9*J)&*7xs zSnvCBWHd(Bb+}`u&%YB5i8K%V&aupf96Ffb?u9&aR%f~UgAz-`;$2tX*!tzmm+!G% zLm0t0>jvO52bZBorMCfUqb81|26Hyoh)LfJ89_qxLd#1tAL2B`A;kBBAQQ(eN$;@l zi{sD$AgOs&IQKoOWpfBAUlCCJZW)%dj$uB4iNF2UfW4@qoK>zVkK`o5=}PwU!}D3N zvy&C7nO&S&nQ6DPdk-IGjkrL9f^Ao`)uSoYY6 zV7q}#Ke2&`!<`wx=Q(gpnT(9gd9Vunk~-@bF~ysv7MZ%S!rgm@wT0w@osHL2kAfr+ zEZ2lREy4myB)hr1`~ybBdAyL`d-S>|H|g=OvZ+st|vTI$O)cucoAw|Tm z8nSPxu+F@*P|xQyUDXk(WLCjxyDPqYPm5^`^R}(y7i8`S-GMUS#o0xn-$gm7B$S@I zMe2bxg-F~C+173nU6zTc+qRi+5-hVw+^b>Dn-&+NONEw8j;?Pd+0=}3dC19A0oe!l z?t%UL_rdbk*7`aS)&rdFo)*Xw%#|))Y=PD|Vmi@kbe@(m9-_>pg+o+E{i@B0d*a05 z$ga}f@rkd7>dO4Gh?Y$F0d_n(=@__doG#62<)5J zTXnw`$eU2%24kzurjm5<{D-94-e=~PJ*m$qFDaL|TlzB4W+x_;xN`m4lkJzjrh%_1 zU|CZt*Is(*T1C;84ZKu;ehrVefyq9e2kx<;ZfI$TP3V;Yt=uq2Cs%@u=wePZ87CyT zdc(gtxDsz%yLPQER2OG3$BaiLCUV!QiR`imdP0c8BYK9@GlcnI*B(HR3-bYmZxq;! zyU^7slDS;R>`kh)fGu4XLoGgawos^*%b!aT)G|_*E7Uq7p-m!a0q2KO>yeqF7{TOx!7pTS<3lAS}zD3Cog8^4ZH0@h{F~ zy-FpU#a6M{z>RSXHn0<;auhnYe5;p~q!L!>O;vLNlauR9wYeyo&U~!~YMENbJhNsdU2-Ea4IAU)B{?p0@aPdb40?`t z3ZhN8n8bl2rD!y1O$B`Y9Cb^T>I$6uAPCVMbFWS$U2%_O$6#xcQp{r^ugFxV7oM9g z$UCE(xq`cTtrK9~My{kSJ$-rc=N%gxj@&0@p{|FnT`>x?fho+-m&|On$|#zdVoL&z zLmlbZ=Of?xN6M12s%$DRD6c8+S8i-K+k5YMyZ+*$<-8+}X2x-O5^}*V}8& z)Mq-Ky_@&%2YbO&3-_aP{ct9=FOIR_6@g_v%#zu&Bqe&bm zG`vZS`6{xf!0Z&LRWXPiwG_*ZU}o^aGBc>hnF@(+I_7j4P0vr|U~N_e(k*5dga@?= ziY>2zsn!rLZPP}X&20}iwmqUo3n``{i@2a%b(n~l%G=Wxv@5+by`nKrG-^m&r6&3+ zoaO zJOP8_NOJ7s{SD%l%tDoNxleFW*2ShlipXvu-*RU{%bCxeN##5n&R&}JPy}rpJ-?b` z21HPuRF~DZ1T^;qCKOsrb#L0~5t{%>%D4)%km7P zD2~ucmQ84xRLfUOJK}?wNNd9X^IwP)k~*63 zsnnNQU#ky<)*D)c@ajwN6Eb=+acDDL$A6}f4+;S&Y)^%LLG>~)){&OWO#Q~z*1oeP zqEE|Qh;%l`gLPfpXJ%w_?Fa^&8KyF;XucgKb>07<{GEtKB)`ceSp#g(&X!^|Pz|Fr zS>M_!ovqcJl5?CXg>;VghkJnFP_l9dz##Uf_1*lWpI~R7CIb*8U zP4yCqM8LeD2C3>2vF*~QI<8Ck@bs+W${05j8l<>Rc;wNk_YS7whm9V? zD#>9=vc4amo^dBYK9jX+D5c;g;}9YM7IA?`?DiSSKrmrgJk&W(d2xdq>!woy1wtWU zTbSS4`j@@l7nsHf#jbu{M6x@^OQs&ogh&{*DaRmF#5vt)w6;VDk`72~rIS5nKwhi2%ZVzjgr`y^_NKmpj z`kP6Go+z`*mhxD6tE@il&oSeH@}x37&F(&U!0x=|;zf4t$&)3vbdr%7BxVlxkdHH> z4|jg`$JmFh_eQVTZ*gw+*G2Uf(6?3IzG$Tizv9YHdI0G~5E!y5AP`~I5VnV;0CN!3 zHPc{4AJiig)avS*TGp9e`(7$O+jFFV+et#q=9t$jAm1YP)K78|ZBk-~+!ZGGR1~^u zh|{_qo3?$?0U+x-X&nd4e?~&{Q?|kj8&--yaxqs!sgGo;)`sBGwmnOHn z-ASw{Hz#j?+v_iRjt2LCq4#Z-F_CI-lp%{oe0N>>$&F$6X1`?9XV{GUo&T5U$RtQp~kXXe{&MTusjV|9wY+K+M9Cr!(}K^xA9F8#ny9ZJ^Rc>ek4 zJ&K-xJrprcB?kGl4fKmQ!S&VG1nigtw$C)*jLwPZmbmM*P{=SBwDx=?9!dq~ z%4rv77a_h;#3^Qh6qOw$AhD4$>X?z69*bU1fP@*uD$I3f)V9%XwbC=`r$M&^KYP5V zepI&`Xa0Kw@w>MFp?VLb%o*-qyJ!cm0T)~sPw{pER%t}@;7`> zZ->QYM zi2yKPs;R|HfJgz@pruhVT|^u+VR|U8U^SvR_YcWmZ&AmeS&)Mz1<##Ce za@X?K{FtD$z}EyiQ{n%Lgk6|qeg%85=upmdlH$-HT>x1?roRC(0-gj^x#*ye`i~O! zv)i%@sfX8Umu}svP3dVJ<65)aE*A<;&3TGC9$_&YHjf@iw|7+Qj&$>(arbHT2i68l zLwb@!#I)S{1eg@6*VHVxkwup2$vCDi&cMP2=4}O^#3>PfH=Velx;c^)k!Lk3TBbd<8PC*`)DLY4OX+4;rA3RTrgfDJps5&Hi1!ZF86tDBr{z*mHyFjA`{8bHY%Yb+w$+pBJj4 z*DU9BkQ+?%w7`TA?IaXoK-OetziGK;zN?tB)#*j1J0bN!!Dq%3U%;)2{qCBp#tZYW zF&+Dsx9Jv=gmpy(0*wr+6>Kw5X#+WGO9v zD$3URE8Q#m`&)LH2@8d-(`(CX=gv)RoooV6)WD+~)DGq*#^+^*ayxqSlfuJsG5>na z0_=v2h^hjWRt?*Hu4>h8RPO^03Z_A`xx6XFWm1aEn%pjlbC$an<;5p6%Wl=crOnMv ziyE=7m)@Q?r#)d6UdITT0yu8J0Mm`$Tb&IL;Tt#aM&v> zXKU9IKDZm(&DSR@HF|1p{o#{KPhNVdcK7;&>({Q;Y_sck=jLiFa0wz*Q)+|G_mRMk z&Yz9gSPp!kfIY)bsUg9^c#HTjuQ8UW7;C8Ni?wsK)_bz{UJ8+KxpV6RYMNl)_OC-L zAiik_b`EQ*D!Z+m8Y?!`R*Gvc3){DyOz6HG^xLg;@1OGNGNPtu3j5kNp(o&QojGU2 zl0d&Qhav5&4W{*Pm?)rbrj;eA>@vSyD^(dP<#Wyy$YxAk&&4$#=4#cIWbc))n$$K- z>ir@>S%Xy}b}5A#5thTYG2)h&HXu!NqewC8Yj~d(R&q0MDd&Yxe^us{p4G0lFL*oc zZEta7HdSu2X1krrg{9E*QY#x9&!wI_IYmA8qcfcAKiQrh7w(ois`>UY?y&ps5UxGC z>%G^Hk>A@C;%ex`sb@@vU73@s5)hc0Q6ToRmyz`|%u9_12$2aO)H;tW_j!}1T^z(J z_qzpbNCqs6aL&^$rkBHVZ!zZ*ow_E~gEig^%w|eBFIAiuN5bybDK$t)oE1MHD8hD& z{4gX`(?oQUvplHVFm@o%Bby7jfv8Pp+K~vG#YHJpspeJk)1aBQ%PBV40x9=M_jx>T zDR-3z%JcHJoO$-)!|LsO_o{uDR^5N*%B4%yjn&m^v(zpL*g3zx?o^$pWTj8aO^>N_ zcyK(+8c4y$^d3ds4ymWrPUHgQb7by3K@_<0tpI2tm|p& zEJe2fuvZB)fxW)Y#V6jwmh5u+9_rMn<-B8EzMf=+(x!>iqMAMD7_BrzK9x1C1&C|1 zug9V8O3|x&GN4O)LchD^^3Ua&kqLDTs}JNR;XA-`@264)@v{W;{h3*rpXkREkl@;)i;7x{i=b#ZF;z53)N7oi2e^!mMfJgX@D9q)ZFf93JpA3u5&^Z2-1JQ8Wk zrMI2&$m3u+eP4OUR=tkal=b?|Nc{sE?oMcaC%$up{*t!oX8hh_vFMa$RRK2xvoL4F zrVuyJA&zY55UaQafNzAt>VrV8F8fJwDRjc~S&$PaQHMCniikj<6%|ojG<07#jGSe! zgpaz!p34|-$z)2|><4-g3_58`pT}}F@Rx$eq1=G_vaMTC17@vP=9@Or&z+(^MlU*s zT*75OpWy@vustd6#GGeLW(abjJ}ta%PDB`~fI{kvL#-1>6V_?45%EtHDm<{S&{43^_6#g*LS_`gCFc(oSnUQZle3(`R8w4uVj?M zO1DtxuE5}m_0cD5!J&2Q(tmXOWM~6owAoQ9a`1?WqHzq?2L+K|+MgKu%D-}3M@j2x9t{sHNw-UETDLtQt0nbt<-Cdd}Z z2hLIFtbjhMts4k{Nl$=w5$e}fi`We`4Qje<%xD5Ew=U}BiG!guL&Sr~04lP!iM?Uc z97sAd3^^EN0bd+tB$qgfZvlSVG2}PKAHz8rTp9R9iqgg6M%UMz$=-QW1oA|+WY-HI zB(^k993jaOr<;Qnfz_D+2duD(Db+1Xm$;1qrOYD^{BH_vh~*HqO9fgZPFsA9`=^-5 zAxhIuDjt8M{C&c?J)xYFladXuTsXb8RmiF-)$=-qqaCng@i7{orWhSXGd|c=C!*J- zgS|-=W4xUjeI9^W!VyBYZKObfnP?uJQJ0OZkdJWtsqa;N*=M0ao#N8gQaYGjYfx&2 zh}&r?=$1Hw-?DS!TWrpFnr&)GtzNy^gzYO3H$ws-u^F=L&yhgZKXd|Z#zM-leKVP6 zOrHI(g`N6_z@2U7f_(NCsj54tPN`+1U=XsPE}Z!6ONW?Z4jku!1jhO;`;RYcW{t+- zr~ix!VsYXf%iB|puz_{q8d1UZm((po)*qXy>jI<-RkX~~_F~3^GxG5bpD;I&yW$(d z-+jF6QJhXO-}gw48yX?JOlQ)taUM#xK1Ub|=ch=Zis#oXpb7!N&}Gct7ZR|Iq?h1t z60g{wi`JW)gW#F}PEhWUtjitR*krtm-+*$Mlfq=X_pG1=DL4%M!+yd!d<#gPR|L z+~(z)3~Z)+X1E=6y#TfoN=DRFWGUZOoJ52ReT->ygzPg{ zeE0!1sz|2!kcE-BCa%gv#9^37H;rFZ3AYj9pAv>j%AKknkg!%i?&-JT#Jg&}lU6Fd44O>L<>k?@$KU$`IJ$BIcx5zH7M) z!euVPsX3tos@$lmIr4!s;mms3Vgk$aAQ)%>PBk~DeFB;31FX(j-fjkEu5VYrs#2R7 zmi(iZgCMBM;x`$5DSJEaC4fGXkmKmQT97I5lT(+}PVQ`P9@I^UT=U zA83CvNq5kj);-MmHsT^r3M@xdpqo%>qmu-1IWPf_7A!lAQ>9&EW1C7kB4HvtmY)M6 zQs8Qoa?lmfY(hs)Y6lBCc^ZCb}{=SlMUVUTO96D@68 zUJ%Q@;$n?+1K4V&BzNxWDEbN2@<5_29xbgerF_trNo;UO=GSmjXbYR(X%}GYJd>j| zR5Mb@xaB?vS?nQfrQVWEC0q87S&lRq8iQ0QO_nmt-Rmn&-+sz!G*+6*ymD3c;my=1 zz@_u&0VnnPDp);wJ&w+*Rfn@TN0g=V9p06XsS)Xqly82(_S)FZM6&rTjZ1BHHb|w_ zn&;?eOuDIhcHdkCxU{(xg;Ogc8Xzgn_7i!ugt_>Am5K|6t%4KP3PBXA1n10}3k&(! zgCQ^E;Ht0~j<6V?lNLh=+R}u@fU#*ad_!6cGnw7|PYGKU6q+Hqq0erYE_l{Lde&M6 z)0x_2rckiOxIFdZ<>coK&*HySF^XO_ha;%wGJ)m(;} zRm)qpyj6~Zwb?YxO+fsLoTw4X^b^>Hvc5y)v?Opsi#r22l31X>N#Z7Hfo@5;Enc0& zYZJLfu2jNqJQZiNc>n5EY#ELL;VFFT+YKjmhG^y6B=(QjG@f$*j=1W_TyAZ_3&aSC zwQ740@=cJYS>~-y+ul_nzgbN2@hdwna0Do8I+g!dOYB8U9ZB zf0f@8QVay1+Z1?C*ra^4+UsqLFmu~dl*#SMqjm71UX71L%Rqd*(-Do!!8k03k+eRv zy9)$lvjD#+LvFsL#uEZX2~(7NP29JIvg~gYsV|^OHkP#hUQf zmt|fkU~}WJ7AwT6grG zjYbAvZ?cI8;*A0RKo+2zawikvKWCP2_dGDWQfC}_g!=V&_Sgb?*1oy~#oaBA-*2=|!*=u5EOUk;{AXM|L4CiC~fWdR=m zn-^Y-5ogK?f>C9EgmjOy!;D{{u>j!E(s?wtFt+kEt$9;CT~hA-u8SarXSu&utiU7^ zNJYQ_>5keB%A9(*^2|~=BOI7TB3(#_p+3GV!M;(4+HXJ|OQ!$wL`=~P58NP6bwr3= z@^89ket*6S=a=9sW&jP%BpSD9Ko}><{W0#SB2+-k=}#g5b%KGV7Uh&VWmS1bRw1*U zW`09wtaJU^wT`$@owTBy?wmfMDBtNG&dZFi#%&I}YL37p>GBR)9%-?S6E58QFJ8RJ zfqijCok2_oz&>v}faAcgnGirkra}<<`CnFTuWxmHvvjW;g6Wkq<5sNk(6496Gl40fCQG5edSr%k#onpK@1O&U^+EDIZ3Wuxe4I^kSzjJY+7m3@L_2l;*14x z?$bpTNlQi<11V%NCUuaaTdKvSjqfuG4=vfGa!%Qkvb^G7Ak!e9CqcEUDCG3k7MZXc zA~x-i6Gn8$?(SfAa?l-D8C%_Z0wwN0aB2JM`kwu{Qg&vQF`Dz{xw}^~Tw(C{B_(EQ zf>XSE3zzOJ29uk~bv=-l_^hg$tf__i?M~-`DsB`2@1*s_ggRc`4UY21KRW+1N<(iV4y+o3?fp8TDVM*uLUnV`j z(&AlI-lDv&T-vVd%gfIB=O0D@yr%VL8o8X3{$vlFf7nZ>dk@cR6PNejTADaC!t`Ls z8a_6mH!y=pHpUD*LqAJB(6_@oVGd38Cchi<#mNDJ=6B*>zu0_6Zvqfc!D%~Z%5}TE zEc0oTs)f`%G;=oek!hL*ELlaHv%+{8-0&kq>wqV?a=YV!sg)XIC}jxA51nvH#14tx z{?mk>@BO){N({>d%+w$!d=R#L1Rbg(J%s!OAp1McXq!_PF-x;Boa)1vsfW)#J5}r| zT>)bzo6W0JSD#X(IfjXk;F1G!4i6 zWI?=Y^4%q17N?EwoRPgB6UTy(q#(xP8i`;`6K3=k7jf;MsfcrN3ZJxGDR8DS%K|ZB zHoe)WUrHEQ{^J2!lx!OhWxTPat(MLL-Ph;mOZRTyF2yaSrD>&nHB)UiFO@Dmb(s1D z*&Z5`Sv+}2rmyP4qcs~x-G5)vj~L;1)L6X^9JSC;r~LwBwU!XjMPXZ}nY&vRfC%t< zxd4!5{Q?vaAkoq!6-~W(m+Lln(AE5yd7KH%Sv8XW3+`2X<)4v+X)Ju@l9f7{fz%`X}t5v_* z+mCX&>2}Fg>iebAeqC|(^wy35QnO=okO%u?j*LMb;h8*6_c~^kk7Svil7Rm13(p7u zem>~{ySp<=pVcyCN_r725wJTdTwCo#lA5RkhdZg5Hs~uNO^6)g&95vIv9by!j-;&HfE#FatNvfL65g6f9Rx(*EN)Pe6n&L5$G!!mSefcP#AKVsmoxrVY+1EI@qn8j`M0sQKg&-c<^JyS9K941H-bYni7gjZjR*pR|%tnWOjCyQ0XbB zl;)vEJt*s)3|`Se(OS}1 z94)2x%d;a8c7ooX6a&1b+5*5zbPsmrYY|rEwoumykZU!Vx5s7(CxGutM0QWOuB42j zd1i6m&d)pQ>}FZS;VH=6a2SXGJ1DTKKm%K;R3V!!r_*PJRW0}&Iu7$wgrn(P%HY(f zt`*Jm!a_)L%zr`x;n<)MGUFVi4NlmNK_-GpD^iSl;k2bEX1yRXi_ z=<|=_+&lG+4gd1Piw|FT!C%lc|N7l)cON|P|ItT3>Vx@tKUFN|a(+uu-sivXL*^XvO|Q)LDy#f7ENtFc}yB zj6UHZhIOy$qf)U@%0OI)xMoou$JDJ8r^)_n3B5JSf1HGxAz&3yZOekb#fX*Ek4zCe zvt%3FA1Ya;sLTlDvMXX|fz0<;E>GnzU8nkhuR;e^KRo60^`k*Cs>}U^- z6U@!W!;l%tQ|y=3#K|<|s+nf8)}jw0haEkm6OvpdN8HB2RDAPi

MM1p9*Y2&U!g^&ODO2ZplWsVYte+Px=Y8T7vf@6i5GI`Ln&}aUB-4|DGG9qW6mxXS zDQ10*8ye&W%0}n^hnt}n12Lw>pMRE8=;Xw_A9g;9v z^?SCnBBqi1G9L*f-h8-v_rd)A_T|g77q6Gg*KTN;&p&wcfx7zO{>2-a%#DlpAFLXM zbs@*j>;ad+fd?J4N(Zu#`SwJP-H{-NzH|h`4^fajWp!pO_W&e}dGg&C8Phpd{zZ4I$?T+f((@qUrmKx0=nxi#KmBp1FK^F{SH^%Nx_% z=cf1e7JKX6xw%DQ8YdPH5hsrl^+$(FN8RX$NQwr-xxEv(SC6lzi3huBx^kChpO{ci z7c3=K?f(FL$!VGWEeOs+MhJgNZst0N?AQ7WD!3~tX5V5t(+=WW+(M+CzrY>PcHImA zVnG<}`yL2#VWiqX&D@FcX-OqA_1#634)x-@%BBo#yb`vmBIudHy~U76c6TS3d)R0s zSnp30UByZuZhJ#SDfMlqR?0E zSYcO5BIdtMb|k`N2k}MaigIhaHP`EHv{&1+v(b654JId}GrQ-+XGdoFbotVyi05do zR9c7@zJspat~-`P98-(ojAH{GPvaZ`!u|J2KV9Mj#oNa^9~K5|ep|@n`Gt6X&$cbb zOQ&uB$$SEWJ4?*Fwd(}`RxWw(ig!2X#fx>G&1R=lQ?VICoRWhN%=7?IVTK2ix??hp ztSs{jP9zWm#98Bf(z;d3Wcr&1{?nnH{DO$Jq+htMJl>uaD619KqfF)!!y#_BFX_M% zKJSt?uPB!;@9kY$J$?Gp(#p!E3yX`zOT`m%tw#q$PmtdUdHa(^HH5swM#H1)WBOmP zv&g#d6>kji?h@~yr+P~-SH%$5{ z6t8R`UMYcAP2mbsGBglKD>4L(^@SUL;JUHrg>}my*l^|v!t^}zlP+gVAS!v^m@+RU z*xim-s@=GlYBZ`-{)8XLRgcfkR+Z|(l^dm0M>(#s*@AIKzC%89jO%MGN_cOGXU}r| zRIR=X&hqD|v$|%vcf3f8sO_vU@88JXceCQ%p37(eOL|h(`D3o{2ouFpr_biKvL~Q~ z<(-*wY%L5Vb=MhbqnDu1G(@N)XIlF67T-{OVWHQz^QB%dza~o<{!*tpHMizh=jN*Z znn0bc6daEm2ah?HcREheT}6kelNS$77gWbk-LC=%WaRKSNZ~qnci!HH(~{v$BC$!I z5?Hii)6~k$*~WN+yAu(27pY~NoqG_^HYhs7gU4Cev>gL4iP+Dk>f#179Kw9p;X#Y} z;z@DBcKQd(gtD((*sd*IxzgPab-j7{!ip1|K4(*Nzqt~eGtG0sN^{@HZ_da?eY4|{ zhdb`#yJMp!hnz^?NF<$VivzL()I^8anw~C-H-z)f$^_cmsk0?~cehBmDZ(nIr$SRl zI=F}EU3t6t)hOQY= z*JMIF8n&YoDJ{!V+dC8q-{l74twr6W&*0CMZzXe+l5Od-a&fyhf8oN+WuWT;JAY;& zQz|Li#;MC}K|6IyTVR)UcO^gJ9!V`6T5dR&pd1pFEDm-X94qa8r{elpnODTcuLuPy zOIuI|u~`Dc8!`<-5!pw)n&+w788>P>_3#Bge38ob&CBt@9v5+aN9(nwE|W z4h+lbf~E^=8$oRc5lt>HBmW|T1=k+vBULANEX^a-bzGs3#7X*pzLm^3%_jB1H+o45FK=aZsSn-nLBsd4LdD?@hThWQ9{X_;jiq5rJvyK>sWh66s!TJUXdI6p z+%FQ65nAn9?o7no1)=GlIEHQ($z|)Z1K(6bQ`4K4^TUCGRS_ateqdpWbK)LYH7}~! zV55pP&2aR5S*_|!2dbQ<2oO>uJ1|TwvfM?Co0eT=)NX!0lS|pe45`}`aMU;A3dBv5 z>rNTsoNejUw!GN2pdq&{{kIJ5OZq(HGBY(zoITN8TybEU^ZsdKL#=IFnnQTt*?sF` zB-Z6G#c5`gx-zBA36yeQdAQx}1gGxY*}Ok9fBVLcp2r?2dPBmf_o|NQ)$^DwwS zzcanRKfN=5KQPo4E4tXos)JpshiTmoU@v>c;)^UmYl>YY2) z-N#zI-J98?{oSc!^6ks^z^IQ>KjR|oGrpo@3#WvzlNwXfY99}|3BFSqzcWRUOkTQA ze2h#-#hm6*YiGp za{;_L2O0~{&GGX$F}``8&po%$Fw^U`)@3z)Xv$$kV0cK&$KlB_YS~1(LwJ@~j|?dG ziAVlRbpBs~&=Bfa_bm6_QlAOM1@Tvv0{b{lcez=#7g2JUFNQCxaZqFgH%)lKVZG#<-%=O}U;Sgi`k>8GOLhB9Lh7YBwzq6D5*Kr*0g)X*` zA&il0muz)m+KH;5-h%D}iT1Nn&RCDO>Y0 znVi}{!923`C7G!Dg{+kjv}O_p=on(x!G>pAdLUcCo@<4gCJ>T_7I^8*a_wLq%X>D>uZGSee77*1EUlfXanP(w}C{OHVV$Kk|r{;|7K2}riST{ z#4On=zLn(6}4UY%}vQsDTFKmBYE8A-X#l!s|qG z{}ME84}dg&U(Pu%{*N!30x`sZM=!qMc#j$V1Hxo1?YRFt{eokmpYwtK3rV~E7lo%H z`n@C{q$yP)&%Y3uHLo-h_F>uWtLqs&SD(h>M`d-nlH>~x7GWP%y+JW0S{$WWn@RX9 zJ|$j^#&=sJpE`QZPk#*Hjkb1xM&J5+T8Z))7_e_SkpDjs!c;J9ciNs$#~XF-mN%_4jsxubL@fQqx=Z6 zrznjb@V+SOiHEr@R{~@zPXd-eXnUr|f!&j+dI>q^7rF5>sQte0S5^FT332}yGP;L; zpW4FfVLN_yZEcP?hRuw^Y)q(?OvU&0>>CPCwhNcVo!C%jx5IjCE)Zd)eYgX4Tg=7N(}?FI3Ai_k3q#W}&`5b=jf=AL-)*9kW< zH{-ChRg@L0(;}*%FEyLflan8?EzO|R_WwIaJlvOT%lHW$qAw)_GCwa&g_~>-E{o^< zv!t78$Zs(x&hDb@Xk47%1XZm{NTZllvXx4s;AAq5Q=6L?8W)aEnT@4)4|>)QWom|% z^h5h!#{@A@f+K2;8b4Sn0S-!%#bVds2(Zf~t8}?^En_BC1>1^D4t^j{E(u}0EY3Ov z&lijJN!O_7s1fbhl22`(I|kcLR<{<5Z?h~-j`;g6YJA>oedtq?qUjfs4w)|nW`YPy z0;7CW+*~5=?S^texu!fXtE5*hK4YvZ&n&s_W;a~R=Qk&-)z#I_yU#rHX!Fsr3ixQC zrZ15(W$qf1?Wl3WB8&qfy92`5&QkMfk~(a}7Vdk;#VyA8{GY-dQz7pv0XGRhSXe6GtgrDekAn zc!>R~T5?Q774hCJm+G?NhLu@DP#GZB3g_9Tx}n=K$4StiTwaEv0?1&*gVfD?qZC~Uon zb>hG@@FLw@)Mjg-Rz@~UrsZA#Ok#pg?sN>6OVVKl3{#YQ2T#{efQsQmAl`qW+7vv5p zzHFKqBfNWFyOzV7s?0%%A47GMMT8w{N+v~Z$W=z%ctL0 zyI8XH>#qA-Zy;kL_3k$vjJYnNtxPI37&?>m{bj`y{=M?`B)cG^+-0S=oo!4^ELG}- z@^n6Sm+Ixb>*mY#CEcG*`w21oSXO=v8Yic{&~N(f_a+PtykQ)W?8&$8L7E_eR;PuE zJ5J!a5IJsL=HBbbC46aHzTV#ke9LsO&b=RG^t+vG(SuBq=Q)V@;l|g^$$!RWdsx2E z>urdi;`K{eInDP~At3R5g{0Q~hr(iKl?COzvL~5$Ym<{@FtdDdM*N669G!1QNnqIR z4lvh{Z+@)0JsOee+v0fSn2!Ln#;94N{}&7s4whHCoOVzZD;A6lpi^EQb2nV{$=c^1Mak5V!Wx7T%pZYLIsSia2rY;Ddor%#$ zHPv`O#O(q`E5!L8Z0cNxzwXKlu$B%@Gs4{1L4Wf7nprCeUzSVQh<{I^0>{*a<=s-w z$=c*Xmd{U28%pd~tMiuQ%y&+oo|&IHI)2vgP3#;((Fb4|jic1TBEtb&&wV8kk zW@+KSuP_71%rd)jk2-fvn)@EhyS_Ca zIW~1-xq1IFb>V{Ly<0>*TsSF!Ul)-|FM{a>=lz`@i-rChOI{QQh@(rNT>FrrRh2|X z`nzrnfluYmtG9?dkZyK&CUdMyA)|oR^tSHrM_wVmkcaJY49@eb~Y~)M5COXPF z+Z@}F-bX)4wm)&|Cv+D#2k37ksDTE_i}e{*wYVc2NEU=7LO0d6^h#W)tEIfK=8@_J zY6I9{&R`}5E`n%Ql9%^DWTvUJ(4fxO#YYn{nmG~9&_I{_S4g? zC`=3WQ=q;&v`@7paJH_VAOuJoN zsLacqsW6KCqJIL~8F}5&Lmn8Nq18DleVg=v^;LBA(LM=#pCx}&E%gmhj(d>$dcgBR z)j&z|Xow)>q4JY?DhHa}$}m4EEhxDW7*QJb19uM&_ zBx=$9FAE?jbP$&^rph_=DaKd}qvqF*Ou>XIVYN&&++YX$N~G^tWX}j4)cTEqn5AQVfv2hm%;|;k$D+i67)RMV2#z1ffL?Lo>a1 zE;b@HTF5drq5>S}K9;$fMkaLtp0vE_=|uae00Je$wSN0|Q0mugxz2fw`+P(6CLfI{B}8L0HKYA{dg$lN)`D z%s>R*>TChR)tJc?^0XNsbINiq8KyRCI7kfw*X(q@ta^?>H9syp&Q(ec>QG8A2`fmA zbB+Oi2a8C26RmV@A|W1>zJYns0gHPGD+0@C>SH z02MmdWxpB{y8JEWZ-g#u%A~R+{L4+{Ipq!6-S_O-TV(I-WiorVO;*mHEiyuizT*^| zs+vj_D~eKl>l<%8EK>j*Za*uw~_7f(m41wPb#Sol5I6&ezzN6F(=u4ClEk41UNU#fBf&e>t)$lRe8|Nwz)> zAi}2VOcX8Ep)M#>b}#KqVqXKN$|4FiV@R~HY!Otj9BeXfyEF-?Jbl73@?TC7VTl&4 zI2-8#$Ep}<*=R+cUz~JM_va2|mhiN|>aQq|x0g!3pN~C(m^G}Nzj}3RcfQp+v$FW& zqd(OCN>e|%`-i(~T-B7_#Yc}8cNMJ~qs-I`nL`~{$7}hc{Qg)$=Lq-ucymT#qq+w( zkG(N&w|?)dG3vrw8aafer9*)b`oN7FH=gI$lcvqOTskE=YQ+iemN~%7z*61+zq4)W^cKDzt%yU~p|2oL}Xk{}5Z1YaUSNfbqi54|W-(oiFDD9w94Q{K()?Ci{H zW_Rp;I6LL3Eqg0#uV)=6uJRYhm25ubLsEIz>#CH?b|wFUJ#kVMCzVv?V{&f;AOVUq zm0d^>C<;RHo_p^(zjMy-oP*J@?mT2VlT9t2)Hd%BQ6uAg$lrF4y=U8yS-`a%#n8>1 z&~`au(N_|QOc2yK%s^FcWJBgri`i&$GRhYBRpZw7urZKxd;4srd4SE;=V6_n{Opg=biK)eY(oeAbzC)c z(ywP@VFP$+IWbIqYQ1kb`;)qTZ9=!N&Ku5;r#vl=bL;hmg#|JG?uOwUc~b=orfM$Y z`x7+FV7Nh71Q|ID>m!YX3%zE_gpuJ!x|7hI&~S~9#b8H`GJQ0Pa*4z(i-SBa-b4f; z)JQhdFiD{r7MQ{OuAMMm?URxdy%2Z~*@_=VDT6@udCtX%T5qYVju) zudQA$EQBgz=D-=syYTyh(wBfo<7gvrs5?7h!)(({FXpO?OJ5_7p7+y~V;s$CfJ9K+ zW4byy`O@U%@zm5m(r$5CZ_C)`I!jf+wy2N%$aHpY634U`r>Ad1tSMsFY0Fe>kMEeK zCjBTxie7FK&oYUnQ`1*eRDiD_ggg{+ry7N}%>X7iq`rvo_|!=`qIaYfdn11t$F)bh z`9l%YUE^Bk?RI;0X=!7o)mmKHo@>;nrza|-qh%|VLQ*ntKVJFcmA_y4zbne86JWKx zTb4Ig8WUy7ziSJn1mnt!^2ZcKiPc_5G)1-dxi#D;hqfc-w5&gMSV?L z;kUUgcK~*{kyVwQaW2a5neL4{)G>X?{%Cgg$?WXYW|RNkn`aB}^Ctu5`+{rnF1CL% zX`u>N-heCmK-B0mFQT5z@lzs}D?<4p{-}zu`S2RQd^XA~WH??D`Xb_T{U2Pef-iBi z+pG3zdrlu2$)$=^9UUJ(ynFB7t-X!q7Ow7WlOz>Y~soRvqo5nRfXNWSFh_9*p-nf=KMjhJI&wxJ?7omrVg?gGfYU7QIcykK}tBlMeh%!0N64Oys98gcZ-P2s;$l+9$OW*DE zKK)Gk?=d%Jtjh{|A=VzRNN-5rX>TQ)&Fr-A&qfoLHRX+%+W4z)yfI%qe)7sIhmWq@ zyt#D$#@6QFN8r;4Jo7&F;h+@2QWYKpe>uJldmThd4E_FPSVxH2;GaPxyJAAIF24;L?7 zc*qUX!`=7Z+IsKVvxo7N@P~V^++`*D5#`a zl(7sIok!Au6%a#-Nv^m4x#3c5YIcHJp%@n&LYjc|UqYInB}3~uemT(tr1N(l1wlHB zF7cx>3F$DTB}j`22K^c}RFUC^rpu91UbnLj)*9R|G12!+rP1Nxc;4G*v4u}cQ^L2- z289WJP!NQLk@4|@L21FYtU{?;E%cXCo|i8ktYke682VwWmnR=Q7saijmiD0GEYuj8{@sZC42Cc>c<(=LNgE%tL$*QSo(dDH~iuxAUSA|ETC500J>Of_q5~ z=G++9?Tux_d6xsjF~hmKZF)Z!MOIBpp^a@szYfe-1qy$eSnt2Oy<=h1i;q*l#beT| z9>w96NK=vF1{^CI?jLcl2#ds>C?E;Xm$Eno}n@YT})Bx-pSW$ z(*(9Ty!vz7eb3Sia)bpJ>BqwGja?ppsaC5^j*mYIebIn|K!?8t-(SYQiA!(h3Hmku zs8q&BMkH>xv~JICMGCo(E~+>Wx|Zt?q>tO{KmF)seKGj{``>y0!w+?NZ+h?AHT~%R zd-s3v1O4Ws%X;d@1fr{}e= zdCup%pke2WQ{v#yL3jjBXgJ6t8m1U9kOjbqgeu(7ta?BU0*p}R&R;6jksat^5+u2y zg9agT80m?H5d4;}<*26t7jeHY4-D#J9Rb4&_y_P06xr1&pKD&z(+q%gngSkv*>H0a zN`TZ{UQ@F^fv+1`I;<6<$q45}L^4MVH6J-DaT1zlKqyoGGo=Z%l12!8;)Tjqr#Fmc zfo%3tDs?HF-E=Ify3`^mM6y^{IfBPo&E~qPz+qFCAUkj2tcsG{!kVt8#;gn@p64zm zv6xbh<4$2$`AwPAYDxyo&wDG9#6RmB}o6z3!&xYNJ!GN?%6$toz^T zeAILM!&4?pho8>>^Nr&p{!@$oIC||sG3BI!<}B~Gm|pzIR1-SWW}VJW2-VeYTi3ydr3LNS+4Hw(={hp}(1{j8CWO>T9WCudQ0rzxH&ON+DHed)hM zQWr;M!*HsE$?IG_Bve_D`Ce!43Na>h(Ya}-MSwj#48}4laHszMNM#i)VQJXhf#HkF+lPN6QHCu^S@6R(O%~W63-V!4CmRNm87pvE@8sn>X z$?H$Ak-5=~27}>d^=^Vum0=_7RKR=|=W#X3m8QidT<| zCP1S2=q1Bh#KuHCu=?68fkR`Unv#KCWeSiLuC4w|!-Xp=Lvrb;^3mwEA&Oqm5}CR~ ztl>w~riOl$U*)1ALTV_-%}&dSxTv;pG|x|#KfIDV@GYY1NcTOVDa`H+N5aoaDvmMk z2w81jnhV{MNk>#^Zakl#n;WTBN~H@U7rt0lmF^V9-WOqSuHr8tr^gOXXNKj%821-F ze^^cxY=?x=kesPhxU>>#TH~mLpChc##L>eWEozmk@>E)t?a{a~FY$s+2SiB|dSf43 zvLE=+8y>a8$bw$&Xy8m4xO=AXVkNC}K`j;UB}^*jo(C?!QAT{G#O$<9=?=Hf>+Ql~ z;lZ97j#wkAT3DH$zIwIWTC1=;-)!y{cF&7M^(Ec<=Fy)pfqP>upU;5Lc1bh8koI{4 zu+)S+sp?AHip4`o(L|vR0+P|JW=eFc0G6Y4y>oOX&9^o@$;1;I6VJr9ZQGbQnb@{% z+qP}vj-A}GZRgGN{LXj2^S*1HKe|`1>cUmEt9Ex?Rkb&0ES$G;b24JNJ^s%WRb#S0 zg%p^w|1NJ$wa}TE$GUcghqEF;v*g2nL}IB^omQGM;D%+&xT#^bgrNKSH74|;bUQs?MH-99xNv5xn|Ai=%~rTIc^z0_WFECZXQ#w zwC+ywHxorb`_a>ce}XvA^>+tsyNu_~s9{Ac4Y)9CHvi4iqiszQmTIVkhT2w}xY`>~ z1nEvtn--l&?H^)8a`Va7QK|BY?SO&(vbC9$IY2E*jUkOGT}@pB##^O-RghoGxQAVU z)}Pao#bgL@{zG#zx@IGu<=)BNNynVVn8Vq@bl1a7->r~v3jT9R^NseH*QuD8THf43f&2Ob6FW{tqlC5V1BZ^rj5CV7j;y$zkO zeayK(Zn}-jYM={zT<7=qSHI|T8(d8F4w81V3pL@Rwa=VL;M38Bb$EY5UFa}CW|Lq* zq&X^cekbt?O=sj4ICA7;;~OedfS^Ew6Sy4^!8ZS1r5C2&-^8@?V2H6zr1!N8npgpa zY1Xq*qUFYfIDrHTPsRGjTF$rHanYhqp9T%7n(p-+6>><4pXGIRxY4y&Z>etYxd1j9 zVH#(P6bsC{u#!rR&t**l)V4PhXSzEP2WfgJMOYCB(OmR;v^<}%>4d}BD|e-+cvp< zY&t}&{YUma7Oio={ZAQ&s%jHt0}fW_fs&+gwcfuuu$7I$1|$PNC(tc_pSz*^rCAjp zV8}714_^l~0Q580M(3smGgtA&s>RyRZ!Aw|=Eh!DCk6r%$rE9~CBe<)O4Xd3o2k7- z;KVhWlDczD+~1OiR^aLU-+#(@?pCRKuoTV7uM`{g=A9oCFzz>y20YE12&;G?g-jtp zGXzM(LxmYkxJ4g1bUuAcS=-UK)-&fWXyJk$Gc#75qew79HPo#W)rMS!X74cu=M*ti z*-q(GLY(E5xfxE$WPz434Y8d(QG#!IS^Nnhk@h_ZA8orpuiSx~j+u(%cKRa0sMiz?Hi7yWqWf63P#4X;=HX@S^(~mY zqp{xpcy_yylC|2x8sCbhq8guP6Uh5>oC$lf|3LlJ*%-%I=IOR_Ogz%;kVTa<0gq;S zQEHfD%4xOjo&r70rKZAw;0~!<1ppQh-uZrnx#CbMPr5pj_G+Yp4v?*Yc}$*^ld;)T?t_=Cp{NM8+YZ*ucZ`IBG`9I`KQY9&6@4U1Vs+usD87@q z_=>QR+>B*5t~o^?+{{rut96vdxtBubr88zmw;aoKS)rhWlrQ6|CZUewiO*Q@%y~S! z!1=s2{Iv_xwvV~SV4{s`o@p#~O4G2dX3Bzj0$6Rs7gccSG-5AwRp1BtuoCkz@*~00 zYU||LPGs%rQILhjMoTO;n6I88Yn3jbDBtuKryY-G5m3iDk62IY0fV>wX&a!cE2{m> zy=#Na+Mnq^-+Iw9)>mX9J5IhdHxDjfSoUS=#!Nj1u~wRVe?(Du;`9U%3It0?{J z+{diQ1Vf=FMRL!OGXC?bU)d_udx&d{1BHu&3OZ5JTDA=k`yS|2bY5!59-qp#uDcA} z$V^#vuW^370K>*=<+6Qtr8o?IIhDc*vmQA7>8~Rp-Sf`hd6cd9^9SLBu%k&jBTu)F z1|!%wMcaUp2*UE}+1rJ1xU6yZn)Wo<_*4?De^ zoBF4HXMt{>w&vcv-6_1m#GEz);JTf}gLrgUY|-?V#pC*yNu{u`kZ0#2`xf33xqDuu zhb1>lwT1c%#V*0?yO6iIe-$$3*kI|2Qa-lagKo{G@E5eHFs?JWg1{`Tv>>3VFvxaE z)53XMXxiw9s*VT1`0UgQz7C26VMm08M+7_mh%Al~A0$|@9$}!FD)?jdbN1V589&xo zijvXDLmADsjM)r7L?%9NVjFH)psuwYzLJ!*g>CB4=6n9owo@zpULp3jQ|F2W)8b=O z^HOVf1CO^&4UPWa`0sUG{UPpMqAOaoVs0Ftb)pWOf=SqH`<<~7+D;xO?i`J(-Iwtb zDTPWIQqoaj{pLZP6AlpEiTy@f{Rw&B!M|DZ^faY2ZLqffaaQ~^4pdX>A0a9;R_sAY z6Hhdopxds=G;I7iXXy<=Mdoc;Ql5qx!_)o6_Ku-rSdtxDpkehmmfy$)nI0fA>bYv| zSz5ir@SeQ}v`dm}A7qE{HHpI-^)AfZcs`xh6|oh>pFeS0mAd0@+s}eWCFsQIBzqCO z%RQA|zFo2Ea(lh?IrBadlp@FN@hC8KHzauMvU(Ax!V8GE#dk1H~g$gxr?$JpS=PfR0yd7tp| zWF*FGyJ!uYa#pyyVzf5ekD& z$IqnH=CH7*WAhEBC={0!G?A88AHEXxSB9eEcQe}QZOp}37|<{Uwm}E`S;+b;-B+)% z+c-kBeDJvdBE=P7p?Vd>jQqBf^fW6zp@{%;$gV1W0ZRy0T=hVWJ(M5j>M*`Zf2j;- zu7sg-Pxe~yd;hF5r%*;xl(bkC>bUnPdv?y~3EO1ZOy%opwJCX1lo6(*MZd z*gaItsRmv9rZ&;Z^Th$ZxmVrC4_!iUe4tDgh^gAqe*XhR;)b4h_xw0Fy0#8a*iieR z3~9+Ca_gxc#~0vp!rNU}kg=I`X40m=R^&7Zoed5t<-nUX#1q0>(p)CzNMTSnq~VZC z`lNn0p$`^eXz_S!nQ{qrN8_CJe^?&sJ1}-K_u^SQm^NrznP@9wXCI{}n)^wr8LON+ zOZAzve|B?-y>Mth8A%h&YD|3>t$0Lx%~5#eB(#`#cguYqsD+SXy8=u%xV^kNboSjH zD@B?-d~lTi^2v#`HtnqW*(>n|K9gSU8QGprJA9qKr1P3u1#Z^$&L8vel%GLyipoLE z6HmBE6|==+FEorwU*&47P&ztKgv15Fia)(CA1y$2HhsdO5sX#tq>2&!4M+HJn0_lC zpjz>}YUtX?G7`TWy9%yN*Pj-5PhKKJ6pY<*N7KYS?PV3l`QweOmu8hg?5}x|Gm{ZV z`x5nMdr?)TqNd65SY71=1_^7=NrJ&I^BXAwn0sKxmiJi*e6cw1gePaU*{=q_hGSA` zpii4|IX{D6*n|y(ASyS;UY)oaZn*fUnb@GXzHKGYd&kWwAv@Faxb{xSP0~&DrRlEr zPTzg!6`%X{MRn6__ju9L^0B01U+?zs?#Uv$$MN7Z1}jTW0E5`vR`1x1JXF7Z-^%;- z8479Xt)!5_t7}OM@~xaKdCB{La&CruYtcvg^3rpma-^k^;+4L>(dzina1&EeMWak= zS}|O`O!ph)?s_IQqcav7(H}xqKg9X)8#yF9qjj0M7C?6=4}CA14k5|(FJUj|M7q9r z>Y1m)E+aBjz8v`DX+AGw>eM*q$X9sZ?}LvZQ>$W3vq4O|M8AU8j(|F1rY?c5l})|d z+VfdJHTysM`$Qcjr(tD^2OTCU%ZW3H1+IB5)bTbwip|Q@)ts&`X;9K9MNq!j1bvk% zr^QWUwq3AF6hUEE27r6!rMdvjB=OdbLjAM2qna1s4s1<7ch&FMPsVT=VhVK1``;kO z6!|D9ff9N-$e&>S4rLEAU>NwO>zyFDQE)(X4;eV+w@g{Y&^QXYm?YSt9;!`J0wUn9 z>>uxBE5Bcv`WF`>#iJ*vP}ewQ4#d(k)V$nCWQCE=$0`N!@9E;17Pgm)uX_SHxiPLr zGlq>uM=lz11)q@N4M^Z{Fh*8}_6~MNdY1n_TI>IXgJEM~A)q7p_mPW>mfzmM$jX6$ zjhUU6-^oPP%+SG6z$gMJ)78>2(X%wOa3xbTvsC;dJpU79W?{rYz{bM*1wnz} z-yj)1OCwq-8D%jU5z7BW{Wnhf=hqJxp83IQ_Cg%UqOaglLM*mdz{{bo}E~Myc|CPJAm9h0#wdnp+t*>AuYf*6_X+0ZS zal^0nHFNlKj-vW+^ZY->ea#x-D!7`Nae{F3D zCSl427k7`4-^(L&jeSJ4{Fn)Xhz<&nik_Hg>1mMy@Bt>YK<&xJQBeZmkZ@qQiMc6P zQC7_ZDH;ghX6s9gp~%t5J^8-(J%pY6XNdqpyMn&_-Umrlj^z?*EHBks8_e|NMNarm zL?%P%teWD_X3;Q7nTgSasQ9FehaqCC_|=$>=IzDS#qOjY(jeNeq)F-rTR4fq;KV^H zIuJcLhM|=q?k;DOn;}?v^CRhJr8eA*xGo*#S%dyMC5Nvo5o~6iL-!D1Nzg%M|xQHc*VM29C2$N<) zBaHf^f$(^|F;u}HGuU$_j%*yIl^*`}rXsJ1nPNX{WrZ0YM$QL0AqR$g$gxBaB@QmI zmF++wCES2!FeWZmUu;y2e#mHu*;pk--N5)UEOX>7r00{DC^_jk8A~|_G`BscJ-0Ha zl5u>DiqrCbCdd)(G$?d}fa;HT!oKi^;KUcN6c`j0G&sS*xRz|Hg~$SHv5Yf&qAdDl zMpp_Yb{cBJciz4Q30jd=e%Wyg%CeHM>p%8v_wM;RctGLPd4*br@4Y{52 zwZESCZ+x;xY%&GjolDKhB3D2o3LG5V96x-STwsccL6*zr?sHqrD0^d$BUJKYZ=Nx3 zhOwo(f&kq=og(JIEF-D?>w1%TP-gUw)K=8--i?A<%>0bc+d-lLs-sLRjp2 zmV-M~J_rEHQ!lJpY&pK9=Ms_%XWRtIlml%Rxf$L|t~Q>?vA_d|)WQqX=PZLNfT zh0TOfc)DOVH#0%t0)Tvqi-`u?R3FV zvF{)xBPv-(=w`76CM3frX?kTUhSNvn#BYevFg7tFfGtml430yIt9~qU7CMkMR3@ZS zNIJ>kI_XC6o7hOrzrb22%_Iv~BW6fiUyLM3iWcDjm#_d)o&@PPihPmim^}p z6%jy)w_06BUxd(DN=9uvU{XM{Ad*p;O)vvTsFgS+T~% zD02|o0sYeOqUe|V#oh@CiseIMZ8gixTu4@Wrr}wEG#EY6h{}|G2|vzkg|k4IC=BQ5 zvN-2B#1D7@cRtQ6IsdBgV$*2Q>z?GHumZp& z9{fE(F2-Um6k%Yx?U6B8LoPKDGVE~62-`55)lhEwjH`+Tm|IZZi4<+`f6_r~%;%3F} zM*Y_;wJ?V>WO2Hm$K)yH^^09Bjt3eOVz&xE3G2eFv?Ek1c&c`nj&fJjKYBtOAR>E{ zU-&kX>7m9{=$kCLvu{_zf8#ML$!gi@fZ#eJh!gjK5-u!*{@Vh$oHg>j>E_!oCGqu` zO$P&VHLUYgHCeuIh9jkkV`$^XJwH+yq5_2in`pXyLXZV8=v?vPJjm0YU*j<#`JrDj z-8G6A5G%{;fZ$-?Z?Qo~W8ZAOaZXcz$l^|8k8>t1dtNSezH9g>zK5dpPh*CeiI6}@5eYvG8Y&Y{K+2fD)YFM3yw*RT}di2%{=Av&())o zHOMOCF|0o6&jlN$bB`Xev7G;a+xg+-6ha9lqA+1aYeHYMYcyp;71&l`Ntw(|T zX@7kVmA&{)Q)Z{bIvkR_gy7;5hE_!uo1~vPSf10UXyON3t18$;jRp_7$9Xj*u zU>eBbaT!ecZzNTPrb0v3?>PYC)whBp5hE6LM+JZ70t^N5H74VsLP%b)Uup>T1hYph zMzluGMzkV!Auhvh*S9>)gEP!gPGTP3BS4+-w_ykvco&xSio#s>KT; zHs1Z7H+F2XRb{@^>PSUB!)f}Ls041#2ip7`6&)9~luWppazJKKG)LPRU7OQ|(Gx*-GZ{!FC#oRpTeYa4W>%xHF`xB9!TkAV8n zL)4~}H%@e*s{cWxp_+HUv#vBXsUUrh$WU9NKhqZ!1{cn)v$Ff|&0Mf-rbSw-WB{Du zT&n22`d8{CkfGB6;CS9D2=CT_RuU58r!9Xa=L3qG3-y~U6n&mBPhFMiHmhY5ZRu-x zgaO^ymK z{Jd1I9Th~w@y0N*N~RH^%Qr%x?8`SU;46p&ppanbQ5JCEeTW_JV3OJWm$l} zRmz-(G%_Fs@_lEKvVa;>xK&Cz=@-xy#XqG}5AN|wU8Uu5yDQDR$p0&M2vU_L&)n3Z zWN>S1y3R0U+fTh=!&6ETpIpWejNTv=)g+wW_1&=RyGt1`^`u#L!h*5Bf~r7kOn{4B zmGF=wI_(!lnu$sRZE{`*tyNf(O54#Uh0J3T?U-Ab;^J=kX7%7Oq_Ws%9JUKDAG z0!;b(iY3b~R#APE+lL9B&Z+N+u^ot`2>*PG4f_>D)XNwoy6^lr3*Kv|RcD$LKyU?$ zy6_UxW{Q8_#GGm3q>k~wEuO1NHD?3eqA}*&*R3}o2PwFfC8>)v%79}#Q;ALhMSM@| zIOqEr)ji=dOLRp`MlH7mjJfg;LdmbL`k&ZDo_f^W3{|s?Gm6#mv-cd(RpVVc zM%iD-QXM*V{1p>uwdHv-erV4NuhR!|lDH@%jme>H%LNCW=BH9(%>EMr_< z^tAhKa5QTEqoKhmiRp}%oo8<;5co5V=e-PxlNs^LZ)$G{r&EA0lq%Si@YfX^u7X-}6ffAy zl;;kcQmJOcf$au+ z({IZ+pT@utYS9vSm zfICm%s!t}8`KR($M5}t>UhsR|`QB-w$Gco$!=Z|SmR^R}t%AAWfpLb_WQ{tSfpW-A zA{qWe(2ze7YA&qNNY0u`Y>IB^^Yv_U_1~8p#}He$Y7vvXS6lCRef{4gcsDV@UlGBn zO$9XzI*Oe3nS&{mav_+Z$Z^Skd|k_%koLV!W#==N1xMz3cVS$Ols7^Ep3_tQ<>1E6 zTz+S%yR(}rZLbnOaDjdie|_iku#K5|=impcyRx-~+%|34vDOo%DYVeNL@}=tfg7Re zPUYf@O0g{6(OUyKxF(r}KM2fX_Rwz8^QDhsusE~UocbNpRchG8i!v3F8CR{xr5LXJ z$+GlyyvYxT;xEkglUZVCrabw%@$9U2=U!hgdv&L+;H*n$=d$CYe9RnAhXoJD$pWLoG-o!qXdZ zizDP}WJiD9FjjNn9icqkE`IjGQ3;StSOu=6aIdniDr?oAy2bdXgwIOulDY@O3b+?c z&J@LXL&2^3IMssK3;2urXJv}CavCT4pDVDl-6;OtEoQ4dA~#RYs*61xZt)`GEv5HT zKnd?KhrdjcUUO-%6k{m&u!PrT+q@rLB*UomMK2fwj zbD`Vrje}*UmkRb3{~NP(XE|LU9S=@mH@}=J`^w^4n)IQ6I|_ic5e|!Q6KOLu3hZ zLhRoIVyV+)C_|;gg=pL~2-IR98AB}-Y}~^LqmuSS!r)sisH;Xy8*JvTVWM>zqzKB|noNW^++Y)-{d(9;lniZb)Ha&eO*v|`k z`YyOji?5UYaZP#fHMj2M?)I3IExI4ye`Oud*3J67Ey`B!obMF!1`Zo2t5H48!H{t|Kvl?-ktv_ z4Px`c^D=(T!HnyV9i7#Y1q7gCVi2JW$)P*RfAi<%imCF2IgrC(3dx~Tg2IFlU?cbZ z&eI3~p;L|4u8K&h-z)R*#$)fq8lW}){;_%a3V4lsVh3cf+fPk!-OjTIi$#P?G$j18 zn`k*0!)lH^zvGhMMkKo5FCUsnM^dNq^h56ky)c^_j*Kn3#Fw7Gb<1h`4rG^Wx7NY()XPI(o=GQCTox|p zR=q^$@gB=@hbJ@7FSu)@x#gQtiHtx)YfFnsEW}n=55h)vvZX>vka-cbZYLD|KHTS^ z-=h(5NHlmBKM11K>2~3fMJqM`Al^5ez3lb_X=^>C@McR!qbE)McM+7NRO9{HaT6qo zL!R7tVhq1r1ju)kAk{x{QmJGKtA2}bRN}~s$f>kIi+`qB?RP%LDNuS5@k)6!UBh!! z^_kiie#tcT4(AHr_nZ1|{4KF(vd3ymb&Dnk`}{D(eUK5GK75n}Lt0hj=rX4pW*=(d zdvY$91`mJYU!)=10Fe-Pqdc9GZdgE@(1vin953DyzNj|)5ei$ifGhXKoV*vvzE4vU zQr0`_n28(^1Q7ZSueU{2Qa1mb$`cwmSa&rc&qsSl|HA>B4*Yz8izCdVy_3$#P8P*w+YtBJzTFKd|e=rU!J5OAZycbAED5WfZ2V3^*Nl;nGP7%;T; zvD>qD2E_;x@S2?W>FRf=zp)Y$M0=HyYsv_5mE+ast8NHh4X>}=9qfTWT(1(mXLIK& zkuPYs21Or42h0AWck7*o1L7xy4%j9nzzX6ehYPU;#Dk4B_Y!PGK8Ub728%E~$b*k1 z;4Qq7!H|V5*iLW=Hd7DgB6`^V0t`<9zbNoavV;xK0!QI7>hx1r^??@9snCjoUB$Cr zT*Z77iX%$IXlG9z6%>!O)pi8m#DBNZ{tbZ8#*LkOOz95Z47fb#HD z9NY`KHd@?$p&s^uFtN5QF`U=ZEKdUI$kMdhu^UAqFz1?!k6D7WVqeKKGzI4~t%@0! zL{A)Y_pQqKP6p(hnnjph3W)vY5zgW}l>pqK-fK?DJ6r5l3h694JCKaH@t!&O6YReP zhGyz^{@L*H3HP)%W|ii1qdKP97WKSN;UMsu*7$v0FYHC*4|$Byn6YzO5kogi#!reF zb>$vI5~gtjoN=y>F0t_}2h}ynP~B{*07&Rm$_| z7S!f=_TRYXW}HMb#R9Ca-U1HnRx+@=z#q6PiUnBvZZRI@m)Z1)12cDpsTkM0*txxV z$NjU`jh43!m?#R?nn7@UY+I6iZM{G{waF~7UfdLMrFQ2J&EgUS3>M^%E^*2fZppB2 zKbmHWb*j8kZi;dHx|FVC zrl)&Tl_(bZv-oiKHScNZqhAZ&w^&d1V;k06M3ksJi}B-!PjsQO$t>wCrd^($-U}R% z>qsv;wYnu-GcT0er=NxnLs@e2WFmAu<9L$kMfVB&533Q@3~C>WlwVX=AyYo*?o!_{ zR|{qj$0YS>w)jO2WYC5>A5WJ;P0WbzhWBXAGVBl?eQW_l@27~oB24>%g#CUPE=3%x zS1YpQpF@qdcU>yt#ErE_&Lo~ygZVOdjp(O9bcd#oxb5oXzV7{Lmt)A0MJ7S?VzTkO z!{5BEeO_uDpq-kz_^Rl>GGGJia4_u%@ANxxNHjcQPf`OYI9t1#v$!WLY1JR$2jktd z9{XUc&IQQFuwOPmTctjU44Wl?quqB;V-f;;)krV_rk;1ZC&u~R3I?!5GO5Dhg_owk zydxz3NCu@j@vDf;^$WcSZL$0jglcByFNqog2c+UKDcVgx=8(GJQIp2;2t8X?tSH|w zNF<6L6&F0jgp)lzd(S~V;J_sjmCATQH?7K=+jxmZ6$KYy&lY$p8O(o%cbu`ltA4b7 zWO|Uksnvc2b);P+R_Ab;(Q;FCmVQE|#twLnO@?%9oP2@+A-@NMEklnSLbb_ii~C={ zxeIar$!w7Ql;XR{{~T_qhK{HWnz5MZ;B8ENkvE~&Nr2R)(}`%b%_v7A4W<7WeH!S9 zJlx@#5$Ots=`BX^xg&sswG`O>fb^IS2y=Y;X5J?K1nvlJvAI^`i58-sF%nK@lT?z+ zd4;)}=&vY|E2A;;C5t{y?y^ly7~*k zQpDc_3XmU4`>vUdRrCw_gv7`40s=>w>a4CNvJVgEflMfpjldM68<_{p0qtx{T`xS4 zJAm2?ZqL;&=p$ zc0|fEw!uf|7AwgJ=^YhPxmfp1WZKFI!jGQt+U+O7j33#Mzz8)BYmBJy1^g{l5kJ}C zLCm{qxK9SZq}{C8zQew1d|@ejVL*3Q<9-?=|j2N81C$qgNb*N%@>yHjfH^Ae3#i{5^fu*CNs0L1>Fl^CXxRPNimRNn6h@|~iYbcG90Rhkl2l}wvVO@~tU#N9EKNY%> z@}OW!puLr3L2ep-CwCD+cp4awP>Z}{B{;P9@gggpIS=xP0;&1vp=9%hW&=e9)$vz_ zKI#u`vCyYm+}>}Kyd&MPny_V94PCYkWJxSC+wdV~l5YL^R_1GUAtE(Us$k~paYuf% zTI?c18g{Vs<(K$HyE~g(I@6aa2Mq{@k1J?>g|YoOn6=1B#nPdR7}1Vp=hOuG_6Frr zK8m-12cqT9+Va_3_YL96k@Lxc{Rn?+5O&}(dFw42(TU0T`&Q5Uh%~T>H1-o1sOCjW z_QLPcP|H5;WP$h+JI&L#7E;K{A_zF>>GV5bfjj}1wvLkXRIty{nZ}#+eZli)i0c0P zsJi=9{t|J(=Q;ElX#2Kc-#O{)b_tBA_O{RI`uyx=`v?P2r+>ev{xtsSpZ5LUKP~#Z zle-Qb-Vdnm;N?gOzDtluaJ1Stb24IhVkCnhurxO~tc{b;7&+&%l#--BC z@kc39D=lVB%S4C%yR5BepL}Y~bge83r|IHH@f*#xK8mXnv(^FZJf3w%_T=_O+!4br z*7leFqsFuayF4$2J~*+?6WBBGwn5_=9MF#4y8k<2m{(vbl4tLA24e?f+gaFqmO@Kc zSboUsfS-5@iG5pP9CiH_Hd5XIG2J0oM+50zNM=@&e5tt~o;SC2Ua&RDtxS_#SzU}< z`dr>?Da89l!mE>iV=6ADo)>uZsZZv^b@V~U>?ss&j#dJc5=2}pPpI9q z8si?(J4LMLG9HLApI(}l%btr^hT%~#4}Tab7Ur?un;#x29*Cio67E2Xl0?JuG*(Dj zrlh;MCuYkIxs~%+eS)ox_R-Qg17VFe@3U2kPw5L$#xVe1dGG~(T4Z>Ke5iKRCW(Y* z=$^@9*1FnbW5?I>+V*Yf>LPiYrk7N=;oNZ;D=2QAb{Ue~oi0V4>XrkJho!}1hR>Ds z2h6W##vlvQyYjNsx~0`f_q0(_CLYBFHa2r6rw5t$;@hSZv8N&CSwogNO>yq(iQv%O zzGr~`1=&mRjV}@16rXPH;YZR1w~Vb(_JtI9I65I=_s8zD?6Htv`lV71H55N-8sDNb z(T&xaxAGkF$()SBLA8nYzOcFPTE@y}<;~SyT$)@*?3>+pZNV00C9}W9bAT~v8cqNQ zg@yNfuZ7*Ri}q9X_0Ah*I4Rg3)n5lu_mr0@UpVp-=fgK>=Te<;75Yy2N}sgEg_bp6 zeZA|6)_xSJhH(d1Gvwp3>n|CrML}*$$Mb6-9oz*Y0H&*+apzHf=oS8YYTJ7H$?7lr zv+q*+GzzGQ$0w=WoGE*arh7osciF(wTIUy5xuxwc$A-1Nyz?GK=_7N{!^g*upUC<9 zJyy@?tMFV40bRyh03c43Dr+uK`iK?seg97ft$qjX4iD1jCtS~W`r%?J8G|U&0NOWA zs+>|#k{>U%TUoeACc*r?h)}oO6T@`6eYfU6?OQ&l?LT?7MO{fOK7d=8S zgKc)Y_qM+N{d}iguR1|9`MVKHi>F!d2=2U`B1URIB6zW1eBY>N-F#qlLLZTOGc33l zH3yJS10oSty0VOaD4Us+FV*Ce9)Ub}sI+E&FjPt# z55q765o6!5kPQaE{W24i zeH!eAc{Bk-*_|CK2$z{6@`QsSjVRG@_QCkHuUtE_Y@&^6}=XE z&wwr_qhAHvdSUdK`Eudj32zx~u{MMj{58WGLjbirA~vJu&S^QO9B5Vjj`N&eqbECU z+!esF`(i~-55)sk#}-glfZhPQ?ZKfNddlH=V9&>B`;M#eX8MPU2fjQ35CRumv9aH5!rgF?|YAx8FtHAkA-_WYXaH^XZ ziDGF??v6<7Tv#db{p}61fKa7c-m9or0@~0s^7Nz|F&UdAW`EE1ad}8v8a?yo_{4b~r=6bgs)@3sZpHot7@#w7z z*?6ge4Zd>s*;_Nq%aTjglaoPALXI=TgRehu5emp%HrlnCu$7gj6a3_9b%k5-!O*RQ zVY{T@+Tf+YFsJZ=#|V3t#hKj?{AGTwx zT0ka{fi4U%Q!LmN){`trpy=+K`9_B(AS1)q^s=QvT8hY`4?hWNEMVn!JIU13}%stXN&+pPH(m6f`_mKCw$vX`CV>I|v z(cSC^^?-{OCV=Z&2g|4ea*yUtN2d{!e&0~5S+B#jrHlPeTB%lVoG((%JfREp`6}h0 zHhtM1!yE?7`^y|1KBPB=@8q`|mv^Wb@CKNDB-b77)TW@08s^2Ab93Lr=HZksxNB0kyMVEJ2@KS2T2_eCs1a6-2oTi9nlT=HQu}Ms()L5 zu4fEK4j$s=Kuwn~sgJYop|2oOH4?BAx{GP3!eCIN3TEb9sczBMpeoK%Eau%LlfD0rSwu&#Y$16k7J&c0n;eX$+vVt2{dJ!XjQXc6vi| z|5-%G;fLYhNRN*-?(2^|V^?V0B>Q7Ub&vMun6kvfZGX$Vl$$S$ouUNMZ;2PpVjmDoYjXn6Wr&{mj;eYx@K3%7X02SIDrIOj&~x{Z zH%t?~RrpHQGx&k;Y9S^L1Kf2pfWwwU^)bewD-%Qm zga_4wS{JKFO5VJqQ z{4S;SCOBa$1c{9ymIlaTGE|b=%yR;gt?FT z&Yr1(X&}fek-C-Mh18)I!D6-hypu}k%5Z^lZZql9gqgl|o8K^w*^g8KdGPa~a;w-) zg|`roFa7a|l^x!4h!DtY6!DnT5eLB%e#8EP1>eEvzaVOR`T8P1O1a~<>$y$R z1KR*Ak0AF=3Pj_Zc#q1K@t@-9-A^2ht_sriC5N8D#Sj;3hU_ zO*nP-;~1+?ggF%M1Gz?*wC`d3$l&Ig=Lzv$Z%Zchh-0}?Qqbv~t4YrL%9*@|@Q(Y0 zr{9?iyp!Aa3F&a?W5aytBOMa}y@i&LsljbW7w@ID0n>#$+dY3V6K!@JbDP6U!Lku> zN_#XcJ?!^tyVG7Utz+=C)CD(^rQ0~mcy)TV8QK$gTS_q}8FNf8!Ofk| z<>PWq)>+XJc0Ejh;psb6Vjp2Xm%ziMPLoH!YLk{D606(l&%TFYmQnYe#gg-4?Q2o6 zvxF;Z*$V?#VG*lfYA-JX?A#uG0TpBEfdP&_%cr0_va;sW6yU)4_Vre zv=5&dQO$SKXDi~QO7x`#jq6R7Pn9fK^?Nyl-8U9bq%3Bg=U9q_{)UN>!pnk95*bNf zw6LppQd4zBHK!RiE=KhMr7@%pV%d4>B!+hm#UEUUmY$$5B`}wg#MPTQ9!2=c?Su%g zNKd#o^eGg|829prvs${*+x;HDH`>shkG1AYYYe<}f*;Q9)(#p*r~YQHP!M+(HU|!$ zOGrwK%ScFtM2AO)I*G6oog=Z74_eGB2`91TvlMRDQ8-JBC`V>&pU;tsX1EXM=u5?i zm0`1%jnP;r?p86RwbEJ~3ywoiYP|SSdqz^H_G?QGvRkef>Nro<>gY6QM`CM4-K^?t z!Z=Tw<#SDwjbjaogUN8=t#8vvr_7IQ_m`~~G8@^GDkrPl_uW2dP;+;3S2yf6E!N+FDq8ki|XnEG!0p5ViC3Jwwv_D zlUlsAS5r1E{5?F_3Q=nm9EW~~c+qML%wG7BgW{93x%<8LtdY`HzjdvggyE`@RpEoH z2jDSOlY*+5Hg)y`pDq|bMrAA_$@8zf#YD9njti!ksV=N(bg?=%KNYM$bMwbG3Kx_K zHy`kwdeyJoiigZ|6{H;icI2tS5?tyGRRYMOtSsnX-omljaX(9genmf;lZ52S_pci< zN0ssP8UzmRKI2>8oB~7JVeLMers>Q%Omtl~_x)~v1eug4(fwiff5c}gYg@JJZDd%^ zJUL;gZm(!7bBoZ`%Y5(YT}$TJ`6S z1b1&jye<6`v6L`CZ(n-9SFSGX=ZLB^4%}|zPIBl-@8IJNHU&gwsiLCxIiBcx|H!cO zBKrRGn}eV;Y-h$<)D_jrJp1mp>kO7UR-rI_Y-rJ<(qs`uCy$F*C zgI`gte9$(y1o^j?jNYFvYPc2Gj2l0C z;Y89ScO8eWVRqH@f7(YH7#^Ld<~i>^CD?k*vmIa$Bk!^;v&pbViMTsqcLTQ`&ELER zyKdM^;fOKpdvMxPs^M;1m-&s27gs%&sJ)Eu(GJ>I+uYkYzPVm(RwZn^kP)tT{B>b~x%>RSuW*A9Rx zTkg>IjUjTd?8_?0_t;$%;=kJ6?QbM1r!SNHhZ7j*FAI*d_u;3uOR`m7RT%Y7?eKXE z8;vyGbWpQnl{+ZHpWMKV=(Dk?XuJr=j) z^F9Ok775#0)uim&?=;z`BC0x3w&swwry#2COUzYGH2Li;y%!pg!%5^LAgYuOi+x9h z^UPd*KlNy|K7E_KikrNGo4i7sy4st%!kfDIG=cJ(KpD;K@=CzsVzK$DVk2h!+#cPE zG)w%TAwwz2%7C!e({^LS6ZCaV7@VS8bw8(c_>gtt54f#2K)Vukx4`v)1$7mYf5j;JF z`vzX@u578k`(NKO)Ma`u`4f)7(Ya*Pf;A^gt zPKfP)+SypY9yZw?!Ov%x@n&cw5gWok17;(f%&xPU%$l1wHCN56mvFpPI%kS_o+{Gx z^Fzl2N$`?qz{++Q(poTC(-JbR<52$2Hr0x2=97kITJOR%h1vwK358_UeHLd^x*M7# z%b?dW6nIpJx+(RzVlz$A=cm_RAcbx;kuJ@h>JOt_`-6j&EUfuUNFdkY4pON$E|iqa zew%3vC)E?T>y)x6o>>h#37Ia;xM1HH{4G}9Vu%rIaiq`}N0YVZ*2L&A>U%2gNX}8;CE@+%AAwW{D<<+Sv zNhlcf4{_A9&m*q0(Y3(goaqN*3J51yEc|xA%RL5S$P^ zxVtkr0|fWrI=H(Bm*6nCySux)ySux)JG`88?YZ^cx9Yz2Rn4y5)vMR))q8q(&20Jq z9%~@mr9V{2r0%C_&GARGzSbb@_AjEiL561KqDlh}RQ26?7NiLOuCkX@IFdoxLl6Z(zZe8%1W!f-|b z&gDOn@G)lYyCLX%0=AAb#ilhq%y05Ep>mJsCm()t2`b%IzT$98wpYL`TQAMV01gUb zDhNkUnxbn+IO^dUCHM(d=Pw$`dAnI{1aw$Ev5vH$?aDh+<#Hs9+TAd$k|j73O?YpHb*(#MHFTGng;jsS%6}b4Jw;1XDs2J z;^OE>Yk!ssk%UpH3cdqn@GJl?SoMK@Vnv% z`nX!v98JJ()n`^;1cU4aLDu9^qv6F-bMEHg)nQW=T;XdH*R?!axLifRv)t7gGm8m)A zr+lvKLVN6+Ju&?ri#b7fw1>XkqB=MhPuJ*>2KVPrw-ke6#41{Q=p=iT^r8L1Nb{VR zh?Ne*;qqZ*UNNqR`Ye1FVUO>vqkieF;NJo!L>fZ(mp@!ECsz@eqth~<6#!b{zqLd# zTM&QiyZ0_#0B%@nh{3TFs0U(STz@8x)>nOZ{E{&kT=v!_q)ORDaDwY(cU!VdMpC+DmyvgZhcYQ7nynF&A%lvF8OM=PYKJ?38|ky3b7)46|bH`qZ}>?o&K2 zQKvC$hKn}^z;KOG)`MJx*qi7k0T02YV$=c3CkZda1&6yN&GGhp{#Q~HCvBo;;%7_Q>tid~n`dI)3hKIEqAt!cEpo~XgtqcDcOcAVk=Uts8 zfkFwV)F$aPjIU;Al3K~neccPtXlw{k(wlw23U_1GV z27MWebfOksf)mUO52Wd}7Bx0&4uU?5Jy8^lJobv_V<-D$jLmWYOgRnAQbz7oAU4yK zLak4s@L-nx{3KRFC|(3hu~tP6_TV>5&eQo_BdN` z@t|4C;ycG9;X}}pcU>x~;2AYvjX?6<`1jurUKIFYwcCVQU2%e`acLq*eKQ81Wf^I# z=Z}M$+);e#zhW+02y!#{rybPKrwSUVgswSxr1QP=e!FP1dKG%{#D0CjutEC&^|^dE z`u;wUfcg?8h;_R>ytrLLTbOg%r6#A(Yt}4H6if#Dj7gfLAf&!eQknL9Z#YeIz~M!G zMFu!vQ|F{Dz!;lx!X6;-?2twwt-$#$M4xj%?pyjbyReNKY>tedm)3s2uO55;L48D!xgkLUjs!JunbX@E zk^c_2CbtT=84hZzbVaUWjPpX^O~>1LP>rB4lC`|}Noo{~n~(i#AANr-u;}iz3N5Z* z#eXpljcwOTa3@RF^N!=fopeuAI`Hj`zWP_$vfe_~ z-Nw%LV?c32J-Pp2|K1Ru&_>7*vya^x_n1WnT7Y~;U($^~`4)ZM<>Ah{OmHckX4}{k zjpN~PxW=RVomcrAkk)_lJC-1+op7(U)NISwos)xzg}&!95YN@b(xPN4K*E{00#I?; z|8ur-wm-fCW8p1ag_jl5?p+v*oVJ?+`9N)5CV0^>++NV6DE1QKQdx%iLp-_#z(1`Z z^rC^fJ)R}FP{LS6mY5)h&V>k2R{-`BIt{9=VZHK6G)>= zM00*kzPLG;CX(>BFYoW9#6}6Z#Kc#Lm}Kl0$$N7_+GQ-~-`Cd0?=Olo4lUDtXi44*?CZUu$cOA)A%t#n zwv9&iYqTpwnu&aj@&NB|ueu{!TEQBjj1n)&S}(oWaPhYs7x#sgX~0v*(E3#xf^>@Vi-LeGJkxL4t@-F4ov(B zpz7uI%T0`(d>pe}so>I0Y@v11kpxOg>v#c-T{D13wA0G#O%6R{@91~`#G9?6PtoNngRvI(t20(JzY+R7 z;p5<{-&qY!a%bCW-rN|s(HJV@cuL9*e$dxbpcmJsslX?7eR|ofmWY$A)*U5D?$xbR zdkt|zX95_ag9SY_D|x#{a8R`nb4Q6T&u4>G?>_h6(-77p_pZpOq85@gFZ?_^R1{x6 z=?&Y5fMRfzt|>xAuR&D;S59l0!@JGvqD{N#*QMaFlWB3*-`9DIG#R14(!Fi<0f`50FdQR~D8yYC?6A;?k5+utdQrZ8LZ#XfIU9IR`Kw%1Mfp z+j9MRv^#LQrkb=CqHASOxlZxPa?#m1;G8^?!m1Onbw7nAhM{wZ0PFp@rUt!Sv91OAJ(8V88egXJvSrRfo($bORK1SjffAk7PzE5+?G#{v6SKv}h zjLmXe6Gyve@WbzDvbEF21-S?{vli zqs`Nhk(GwA)wZ~J!+s}re`q6lS>5P)^SwLJ^DS`G%P}1HF^D#_`PsiaIIlGJJmS3J zY3QhSSnbSnvvsuk9(A|0+>PhrvVTkZMu}fonCezP6FTnbxM*R)rw)o3uew#6%S>J$ z#EU&XD_*lZbX(_2bSDVJyR`KUvO!s#fga6DXdKK^A!e>xBr-?cG-{&%6{SZaChVtM zITMZ0q!UeKz7_785G$z~HX+_nnAQsJI9lL=WBytfdlZ+HFgU(e$}(J)KFkxWDobPd zqC!K6TeUdCtkLk5r-*e5UOZBBFIe zJ|$~WOrZUj4k=icT}oDne_AOKofj%8!oqt@XiKDIT(T(TFz61o3P>q^EiT8ry$!{7 zG8DnNc6U;orVJHNXYmj?S{iN1!R8{7k<@>AiEs~F*o-OXm|W$*+7q8{n zJcblo9?07y3!xJ{&`&tI(rKetGegC*s)+6>as_uO?xvtFX-<|42vD?LNR_p*IWsnr zw66j13|a>2DWvvmMnTlgaXt$@E&|hOIa$j{$kgUm(gG=TLPmZSl5khX){@MQTNMnW zva-NS71va`A@`~A!1&j{G@K!88@hPlB}W!3#j zc$u2h@}EyiZ>M1$NhvAeX&w~TTV-ZpVIm9?&7F-b6Y~njC#P)-W0bFQPTmuXf;Psn zXgAd94=Z&AZX!cn1&?cH)k+4Gc=G)-Oi7~GxNLpv2eVt-1LdCk67|Bn@-A2gO}XjY z&%Li)gSe$mD{+AjQir5Rc?~(NCZtF~iym#Z=NB2{ELnQp`2rf)V{dLt8)6O<*#R}N zetQ<|8DWop{v!M{dJye$(=rLGTpM8?h;5GVQX+^i>;+Eek-gaIAqytyoYn_*jos&X z)5l|!*kq%wicL8=J3G_uvunL2?QRdFZ{_74FG&5h@^LRy7rR*jWNkbqyGobJP9A=B zJaEq7jL5dS>e6|TbCr6gq&%5QJOvwd(I8HtseZepj<~+Bs_ZJ66d6b`2(BJa*D5;o zw-K(d883*EUlaNdW4U)EN5u+?!d4 zMfq#z*v#3&rIlbi^=C&S-v$X@QmybDOma1K~QQuEhyO4aRURnJ*Amv1_aj zJ$_1tp`VP*7C^e!vnytS%w$()D;E31Sg@$sM~n9)7y!EBvJbp$Vj*3|MM2U+UL2YQ z*I!kyEaf1RaJV0F?#2C_y2i7MSBZk{VifoS@w7k9tH_$PbTTc})i(z3hq$;XDQcqg z@ni{N;!N1%*Gb0x&@vT%;ymcm&Ej}Se8CE- zvZw*6n1p0m}K#&cVr@?T4wmB>B zCRL#_YuUi;xirOg`qfO6^I|oE`mEjKIaS)TZgc3ZUWzh#z0~Qh;m%xirb{fl>^)a` zU)FBz{r7pQ7rrOYwZX>nu6)|Yx}sI`#np_?@$(b91=>rJkB`I{!`0;+G>dp*QOuC= z#V~!jq68YRmWI(0P{Mat7y>&44+#o;V8nxzx&jrcQo-hAp%E&y;m2ZM{uS(_>dtK} zPjF5_R1m!%GU3{Kepz$^^ov=ebg5B%x0S|Oa0aD07_=uw)`*(a+pkNZ7m5S1*j9n7 zZ8g;~{U9c4+wquQrk{yZNE~cHGe_U*Mn_=NW={SgS8<`famYC`JYGk%EgR~L_CNz3 z(jS#{Bg}#i7|)_ppcouMmI@sl`%oikB>D}XXhyh0H2rBOcb`*CSfB>^r65z}z6T7NbCKe-C`@2K+3gr5KeW z+}+oJy{V977(B_0UH`%G?Lh)r=Lro}NPSzzPx!OABdfscx?(iXtQtqcw1@{*uLKfu zP1?jEi-U!}9en4|5o7$}r(RoNjFtj)1F8dGG#mn*i*fGuWA@WP1~@DtmsCjBuBw_f z%2%Qz#6kLXwF*~{h|+hKPB&&F`_)9@g#xj1@2;53NI!a;t1!>koAeQt%DqJo!I+$s zeoTk7TIcXO-}QPk3wn1Jh$%(nb`M5oVn#w1jEkqLYFRh|q%1773Bo;su1o+>EfEJt zZ+8)sL0a6=pnVi2&+yJZwmZ@tjVVWif#Ps3?QR_H>j|xvT9N7tM@o#_$39my`3 zcTRC`Nfa>T?=K(17j_IDRCA+Ro;$fgr-c3-4ndwJ19%JBU;&RHiePbJn6;eC&}hF9~t-Uw$uh z$LZAlk&R^2drhHa=(H&?Cz+T1!zUFn-#XVRbZ}7w6MBE##B~Y zFCnp#YfF=M^;OG8;OIYf{@^htM8fDP-uW#bL)_Fc&ByxrbA6sLrh}}>#}u&$u>OlS9;GVws}A)(S&nxC$=XgstW=nA40R<0Q&#Dz7_QMawJ1+Ka?7~sWZKsud{hOc@Eft-}Tu-nNod9oClP?ZYd zQ5A{ELc=Up9F&vD2=6h2kukHc3Pz?=9 zVMW^98|a9s*E3)=eV){Md-m+aU@OHg1U}Ov(}xe=c}LI71XZ+KKwP9K7&J8dd2Pq=)8t8)_fbld%a@6<5lf zBnuXbB*7G+=55bF?!xDgs_dZv3(3ziS5rbtDGI%W+KB~Ks4{#iCc=hGF_{|3c~H%y zC)!FPbMc5kBT5)9g->#-q*umSvZkT?W_6mZga8lwSTx}fh^&S)s$kwVlmNaj+LAtd zDlzqzI>}oM3E5>y$8{+pV+UN1Zv82eHsurWw5se{7--4cKe%$Y%>xjo8z=|v8dyte z_Ia$fk!uN2Cvw z@61V$d@ZS^R|TNo@bfA8^t}?8Nxf^Y`)!-m97&g94R)qM8s6_2>XW)k#GcI6o69G73cJ0UEYI0oTCa!xU;=9M|Br;JL) z8W1Nim5ff_UC6p3Hr4K#lqgia>?EC-Xa==vG!u-~m{qXpHCjlW)atSr_#+&&k_`QQ zNhrvy6o$2PVip5OpbGqaYU>8?*1?0$-e-~Bk^Hao$k$2?{VE-8 z5O!!e>Dn?PV2D+|mzs{4?T}1S%xyj|%Z+Nx+q}td%;ujTv6tmkZDy0R_9UR7q$wVa z-@3kRE@R~+YvXIZ`0bW1dz3ZbTvP?5r#Y8>p5nxtG7YE^uC{3#tj=v5a%)!5FRzf6 zAzO~;j8UrNUw$ZPjBA`zeCdN8g+MpE6Ad6H8p1ra7UUwz5->ILv8Xa;Y#6~sLNdV; z8S1N?QHLN{q5#?Z>YA4GQB)pHHYwkQ7Eo7%J|~=G9Z|yxr)6?MD#$me1Mw8^I-gg409GL}nXY09+?f zxHU0W9aIqyP#KQW-QMh5v({VsQ5RTDr&5*Cb>`SWTjwUF!Yu;}0(Rf%A@owgD))u# zVvk>?y%-pVhkP3>z2`=Ax=rk`(1RtaKGwNfBBpDXb+&oo2Foon0Qj2}6X$o{szjCTcb^-SDIi#udlnS5WY;Uy%USbl=Fy zKrjgf*&^k7#vm>HQ8&YNJdrleQP7a7$c16Z)hdxFY?}cZj8~vTQd_Fo z3ZZQT)T4BWVa_L7wX3d)vdU^bp8L9t{>AGOa=R*ULeqm7Z&#`bc0+S6W2V!3(g zi^+On2Re^esbTupGnkggJ3Tf$%7g0YU2|0jx6YY-m6xLXM4Set9sb>mq#$R7}jMDT)B7yfEbGkOp?-s)QXQ=|{C5 z!`&j%qwlrishM<&iocnr@)twco`weZad*dKzhM7j3HHS9UhiwYF0lSCNd(KfrnlI8 zmmmVZ^JVJ??$U&ZueUhMwI^1)mT2HN7)%<@UCWHd{6evWDN#ClK5Kod5`b$Ga>2U0 zSoc3GII&Y@^_TNgZTC^_mzUt&2JIntV#ZG}@o*5*EtND(Wp97{ z77Q>vhrmCX`%z;ntd?u<>OXuG!d4z4Q6_$&?OVBHVRAvr!vsK9XR0+f2@6MTmRh)d zJv3B~16kzT)*AU+ryslcYc;;Wdp!gbFzBPvk6`@b8ms=^z()VQT=Uk5V3$MF%X#qhsf}6Iv zR7{;w(`lv9;{>%BejyqbmaxjOwG?)-(L-ZHI5DU8KqXa6BQElA`!Q?V{Pg|V-%Lie z7+_;Q<=V;3{7>;FkPD*9;u96ZP5tWy`^j^(RMnXK{80hJuhgw>n&bKTbU=^ zUk=ge8g28|A6wa(gN;}dGenUmO{0`c%21$Q@iBgI`}W28HzQILoZg;Eq!q+@T};i3 zx~T}umgmEn(KtQ>=H)u)W&R}gdKXkK8|dKCvptaBQgWMK@_~w5vW1%O4EaH#bQL2yM37dBPyFTW{MCO&6Ss<4T*1QOs{LUBW8(iTUG-%NXS9e$6K#4c~pqjk$dAB6C$1o%Pd3!_g z82LIrnEN0)7Lch|F-^`_EpcGa>fN=acqhYbh3H4%&rEQmr00`-XDtzhI|P0R5THt_ z9B69U)6WGX>UDn)WrIxeaBrdq5e8%9t!F1hw0*n)$z0ZBO{e*g6!LS@`@%YN(8zgC zVSKBzOUs?LcNG2U;dN+R$TR4(cm}V0~md9EhZsnA13T1wGUyF zmA0;&tu6n7r)=+NhP!gk}9{{44mrGyg(ME-Rama?{?rrgt-^LR7FW)a$$GfFN&ukxAzRBkZdg zGCeJ?=-?AM6pm#zwq9;;V`H!_(t<+~bgvNJAat;{T~E>v36v1K(7)mV;itTuyDH)n7Cn(t5y~N$T^@N*PL`7ubWlrlb zKcTvkw`Y-*(g)VOxRhtX+?mz^4}V|s=bHht1Z@@LUI@eB)_KykC=+Ja z5A~gi4>BUFc8O9HS|$Q|vxco8M=E1vByj1_UOUsG;=N8KTECt@u>{D(U)8@PIrhLF z9o?@MsoJ|FNKJ>+2q8iz1Pu0FH1zA~5$@9K56c>mbx8jmGfEq}#nY_vh~dV{#uj{W zy4Fyx<-G-uMd5IZye6p|q^m_AM9Th4uT+}c3yTv~-HJVQIWmR|D z&f&orr&kwF&ivtIYhQ9aD7V#+44n;|!=3$zMeb!I%V9s@vtAhQ zBxHuOLrkR~Pi3R8-BhV53`Q9$Wde$Z8cg?0qOgd?id1)_%)={+B&!lSIa#sJaNfF) zDrkL`FRHVlh61MTXhQ$8=ae z+nXDh(~)5sn8cqxU_uCfqBrGBwv2Vk8egUk!Wc)ecYk#{PkW84x+=$V8Qt=m0(Vp- z*Ojad;c+|GUe02D(8VS2x?SU*k+t2i>qCJfnN)b8DKD~xX_O?@;m4?_va{ncYC*?txfAsP2u7PCV`=anb+gtU&%{a2%=E+4L<>xHgtxC9ZHV$;rfc8KJY1ba zCu(QC4jJZkA+p^I8Imt1zOQfO^C90e`(>X5;5(-1Nc-wLp9_$bs7GPs8>*@OmeIF;UD60yhn^XA3b z`n8V7o)KlEzPn?D`CbpsT3Ry~mn;mrTglET8Sz7N`fN?Sx&Bu79) zYK|q^zQke$-*ON1t#tLBzJGmn9&;ZF(0h~k9KEaLRgPpy@@T$QJVxS&yi0%2>}<8% zmO3+u(yZ=5!QlL88#x&=)gA%2V>tunoSJUSjNh%WmuQ+bldzgjywx);D;!|{&}bvx zuOF-$YD~mLk|W8@cLr4F9zaV3Y#`atYFyI1MHwqc#pxVwM3r3bM%uvt z+Emq2D+7&E1ls4zHg`SQY>&iC|n8NIv9F5A-%<%981L5E-__w)KRNbXYwG4HsOHe)qTnvLZ>AoGJc_ z#EIu+vg~flr0%yj=zi|4qfPW2rA_PSe092bRNW2IklVrwK1pJmBa&>ip<^$ zJfEv7+HB|kO6IQBdX9?2Ei18KslUFe!t6GJ@X%mt=-z!iQOM~wA8%_h?pUDiNk7O} z-LS!NN|9uHq!F6hNeCKrEU3Edvu<$WHB&|D6(N^)pkW$!TrrTFNoYuz+e<4+iBFyx zh`W<0EivFC(K!~vq2$s~qMalK6|Rgf5o)}Q;qA{c$q@|?o>kbnzR&!6?Ou1pUPt}f z-o)|#bfJHcth61g69MWQ_FmXv6C}(NO?z#9Td3MkHSMcA=TRFr)bN;%8{UhJw=$s4 z3J1Op28UM=hV!&8erT=DdX2}IYqlasF(XvFO%8-=)Lawf@|Q7k`nO;7KGeAjQF;=K_wkDZ@_3T~wZWi(n!nS&Lcv z%(M05RfB6ly6P)fm*CcwJ23GTc;GM+M6@f)Yv$asZB31N7UDybI_4>*2m{h}Q25F_=TS*5PO;*le$H&$XZbtXRi`-@pEnB;N7Av^Xq|YAq{YB(*aGY)t zzzrWvc$=UTj$hWf>efP|=9OeRQdubx3tTXJrk-2ZL2~{xd+&$GY8lxDQ#Y-*9`?$L zj>?X|9r0Gh$fZQRLrDl>^hGbBzq7RX{s^Is{0kPIU)L$vR}s359U3|?8~ZnIN1~k! z3?}~%at0ApA-}}x<`2Yc_L(K>J;e|^d~>lw^?Pa2uda}0V3DOVo6LRj`|GPGaXF%+ zAEqEra8*~}oo;xN4=nS_=S-Zr3mg@OhhJpW>POB)&!6?JG|8}RE+IuBNo-w5X}GC+ z^f+W^nX`69XJ=TB`v1)2ct4PUfa2zl)|^&>)+(va-&>bcafNTWNCg!-(xZ-YIysP< zXlXdp_j}IS#}5^=_FK@UJzx8p?C#qGC*QQ*1Fl}#Mz%`_Q4T)`4mg&b{OA~N4fkj~ zn!3|-626Z=A5Fr5Ira2FS&KPcYTW;tY?YJmy$hdFKZ3@Hhp{8Rw;{Uu22pu3)?@l@h4K08!qQ+CSSz) z>BV#J&kUF#Nhp0Ym}XuzUY$S;2R>oetT+aCA`EPZRx$kpk>Y9}W|VrQ@CZhcHPchv zv{|Meq+d}4IU^XwG}Tx)@M}y0z{4%cG$5}!*+QuGQRjP_*OM|I z3kkCQ7lDebTKD<;;Xnw*oO4~gFEB$Q2JHK&;AO1eX6f#DBKigB`hks#?XkMvvs>N| zQ%*)-K`Kmj-c&c}PiC@GzFrVbGYlk@3OjVL{``!Cf0pb(+jcY_fN)1r( zp$0dQ(nV!M`sh;3Ks-i$G7jof`XUnIJ87cMoFD`#tiAtS(1oH)BmOx)*pL-%6#?^* zgI1GTM-Y09NFW-%P#sKfOO=}=o@Cyg?#2DCAQ5Z+M3!i7R$r85bb@?9dVG_gdBp~c zTv@|F9_!aBiDg3Cr2&SVOq>0pZDJFoWBsWaqrJ-3S6KPu5nqGgQfao5ET8$w6BzQs zmoAV|D-a;N<6iaLi|Bc|8@FDEhVvG$^6Yn-nx91fY^N*@dRQvrrp^bpR8{o?Orppu zGF&oj?qd;Mtq(Kn!`vOWW7+T$s(xz*HrXi}bg$4RfZh+JjZP}byz{&g(?qMRN|KL_ z7}&?Q1F5(21l1{Kwhy~B?Bg%I0@~BpNzAWWwm4{0?yN&bC}QZ2we3O(guePPa=9UE zlqG(O zb9;jc#$7xwy~&q~zvZOm;H@gk@a(>&)lVxDwD5i=rL16A#v_+JgnmVLPke(L4a|A6 z70D`ct6QMdL_Q2m_}<*B-23U$e}FJfhXFx`-&jrX(k-NuvvEqiVwXUSN|)qk=sv!_ z;3z-B3G^eJ&jp49Q~VDwqd{$oszeb-$d{BaYGT-%`uS_qGs6i8^)qUok|m+@OnW)} z$BN^pHqS*&9EfE{Le>|3C-t^{OZz9j?yM={V9rP5F^c2aOBu~msrT8{u6AePuuP&4 zed;0+AXgV>Y>lc$P#Y80d~6DZnDleOJ@MYq^SS4~-q!l7*T98S2Wx*9s|B60&ZT)> zbZgJl=dcQxx@7m*kK3pfK%wbMLRi#Ef<*MwM{VJa7URD(1Qp1ed_~WJJ#L5#k`CKh znXo@H<}7{uM>6Ws4SothFdxT8X~2~KMU#wKZ)zTUhxwBqGvfQF!6sM&LMRJc9*)Eo z%wYVkznD&p*nGN$MX5f7GRVbf6OQICY^QW=265t#;1iL#Aq_F1!?3p z2=rwxRCZLpd??RhtEWy;(8!!!(aG1v*%FOmT*bm>N+!}-=kD|wHP_m@*fR>DVW5!M zC={O&un?p~Cu4trDk&Pj_eP2;e7u~?qcK1D75CZAMaLITNS$t&%DOjF9lt|sDZtaH z>9^ty>mk;a3D3}cfO68AXjt4b#2#msPyuu!GGC0+if^rs>x9Z@M6x0w`%w|!r8&pv z`qilD!vV3S!o!IpsS?#SBoF-*65sQP7;gh5oVT~V-3loRLg7pZbpuSRM2KxDgzkac znQ#}lcn5M&{qz1^jpe%K$=T|0vK-*vnCWhN?aR{6mA|sm4!zMdI@i0@$UUN6wPY<2JWuN9D-WDGu^!DMfE|y|>`A4vFmbRHCwd)a_N!|Db` zP$k;)#o%@s8Nx5J1Ph>fm9#vFKq<%i-6k96e$!)`ZEF!CAhd?tY)e5+-iOoy1czfP zZfYhYiVd%ZzQC8Vpp9)4jOPH3H2!g!TmgywGC7>Bbhln_q18})FXrjKih>`vI^H8) zs#axo+EZFcI};p?f+j!q&T;zHPxCX<8StkxpKQ%0>eWx6EqM>I>Rd#8An0m-M;<46 zci!&M?`id|Z>4X*)KkJYd1&jKMQR&I3*|k;sG-OYyeKTyP$E0YES%nJe%T(g7p$~B z{Go7q+{jUQ6weJ|(P#XVk$lCl6o|?^uR)dg?fv)^;6pq>3z+)$w9$>BbjMTc!vDO* z>8U^N1LshyxZ&P#)tarm&XvgHXy0pfhx1^PWpEubx0m0v&*O+RvK~rLke&wfe4PQj zDNWSEFws9#JijYfScG{4i{ega%snsi@1fWBXbsL3lnCeX>{0o``E_?~K(;VGu=51I zafQQu-7cd7qO6y5f8X&1p4`gVhw(WB!yadtN&D~4Q;=l!rIF-%jDPrH_!U~?#~Ps% zYz=YaS?_Yu4vRN=Pv8;_(G%^V?n+>gg+kX>;EI#J&q)~>#+0$QEpg@nBQOyhSC_8Y zl=Qy_$wl=EWbvz>-q)Z=8t78;(s3b+oh9FoJVI$XHQH!D`pE1H$mKT-S;GiabPADK+3Z^+K#NMOKr@riN zB>Zt<;b9JaW0m8MT#`vt8~GW-Bf@B=TE-k$d&R&k{?Z7l7OaY<1z6$u>_6xkJTMy_ ziy*A=C8|}WDQnt9EXl5_SJ;H=x=c<#mON2#s)GsCA|H>#LATCbMF$yT0C~nslN6TP z=;mYg7Mx4JrP)eFW(LEnm5_XXDzD93{m8N8{*o*HkLc#zsfWJjwX>t;I)w5VBX0Iq z1KX?yCp+Vtqr~tO_TLk;Re3fm4NguktGkY6>93M@cGZggkKmW+7kAstSF)#E4pDH<6TPz&M&W3{R!uQ+S7Aa`T7Vm5FvkK_$pljVQ4C{07 z7h{h!Py+Y5-#Gco<```*_)Y9AM4^M8ceSqCW9XiF5w5Zbz~PM!5ck*5xmpwD)?E~Z zObuaL#mv1~ehCgAyE%x6STH29KoP;oSv5$YsjNaZC@2OVD)`YD zGIh(T0S!XFA*8IkF|=3TldnBtI-aPeVGNiYz8(xDuJbmUAMwgb$ircfnC7kBiR$gH zZ^L~T)w@9!{DJ*R9){a$?F?5)L}QwCnx+4iysYVOa~MbQ3u1M^M6yEl?Or61E!< z({=DgqD(Yc7X#!FI3rBKn@sB{HR6wR+^JP#QKSchpycQoE@uYg5SQ=dK&7wt0yiL- zXPEAG{C8&G*^}_LnDs0HS}FjsU7tSTqe*)OMHXC1%rXy-|%g@?xX3$?Pq|JeF`&dAgdn zz3Jhgb)AlHt5lkY8|>grR2l#|?&+csuL#CxTzyL5N#yB5RbHV}$G_@Bx^uR38LO<` zJukP6d^+>EQ^8nib;>0DD|XGX)+Z&Um2!zT>jpK|n{U&}73b_96 zd)zNcv)}UvI>Sagj3R6w=Dz<@NsAt#Yex=MF^*C;22~LaHL^Q|>H;Vwp8}zi0L$+H zMP55Z;(->+Rj~y2RccEg62T$8kC04EU<$d_L@4!VsKD0}#LCk;uWaIjERSU5=}ONz zIcKl@V^3k*Ei6}&*o^gjBI688<1~tQD^{m!soY@m>cr=_&p< z%RzB#{JI4<>V|OIMcGCpT-jcgRfkMpG?1yA^c{aP=jb*Ljly^zD52u%@LuV7DY2A> zDBGtguYh~ZYCwMl#gRm!kZ>OP3<$_GyvXH{A>GTnM&fsT+MI?&QAXZ4qT%m0!Ms?Y z5zcEem`5(9#=6dv(JL&>pDHw0rGiZ+X_G1|Dj1=sO}}`$NxV z_XNlepyNxC&O;Qiy%$hQY=xAxKrq>TJ6;sH`YPxYm}(>Z{jmky5|GL$$V4IP?uyFm zO5{%GUbinT@^-|N&ftFM9@WT)2~SKfC}ka*nin#dLV!z}?VDd{6baMiWJQllisE-? z#w2+VKGnjUK7vf9ZA7k*>ackKqUv*}Dp&0FOvaW9>t9Y%+V|}lo@=5kV9>bZVpY$m zErLuw4B&4Fe~P={ z@%ZTzA%pMd)BNK@B^T~iA0EMLW^s~X8p~pu;Sh-gh3p?m=uQ*A#)@2tRljqf^J_;M zVtxy{=2Px&J#kY@7>`6_!S_=i6`k$@4v!cOoJ z?Z46X_-svd%>Nr~?;oM`e}(M{2`b14C{h2@lJ?(7dQuAi^zgrj?$I(b{R?&v008`V z>>e8n1O5Msy2rxE{@+#I|3>Kj2b}Of_2vKPjQ=0$dw=Kjw;=t0vHu9z|M`CYH}E|I z_753*b`A{!Mn(cgCW4Ove;j@g0f3!@fQ21Ez{JM(Pu<`9zc&^Z*8kP^(N=>1!1&?& zPZ$6z0f3Ew^#chAU?%`@5U?>Z5im1={;6SQWFTPs2>o~6KW@yd|7Q5RFZPcBe;Ym; zXb`Y4{$uzkd}R1{?cV`E+&?NlT>hhigBkE|23A%L0#+u_zXfGw{-;2|%=$4fmcK0@ z1OKPM_L0X28S+1e^{>NZVq(%DVB`33{pjuQT>fSJ8XrK&j|260<%jowdVQ4t&g7qn z3?Hd6GP8edADw>enE-!x$_~)@@5n69Nu2FQ6C*#C-}0f-Ngl-#i{n-H57zBrmsM8Msj4(p>4%HIanAM( z6dn5?diB=>IKN4`veLKD1@r`f*58BT7sAN2=%jF^53SnbUhA)rrC3v4R_70G0Bc&) zk)Bp=E6>I!JzuF5mHW-Klx!%L?NVs3Zd8+c>D=S07v|o%5xXk43!gN;O&?nw-U92J zQVwukeC8%_mVQzj!?g-<8FR}<3Sbxfsf+M)h)5pTjrjTX0|Erx$@mLK&?h@HK>$yU z?^D+Jr1Hf60ri314H_y3m_{g!NFp+OK$lhpRPxmu(+c}xR%#IZUDdID=VJw4%gCOpc&1YiG zOo8xWO>nL5=(``*DL- zT{Sdmpv_9wDN8^)S78%^fSSnk=ajn%y)P^lFDsGm^U3x{m#=V%I;<`K^IH8e7OJgfnmP5HV}f58l7KlNRObQsieGr zptI0zbHbh-gbY!fF>!*iBii0Uv-JXj6oB>n*YS7Yd$e!8v_*cLeEzT0B3G{O#6(=Q z#D40tc6mzF0?pjw%*ME~GvS^|4F#N+knT9*FQ1*t5?GwGn6CC=v&8xXpKcN^^PPj` z@KaPIdXSOmQyBG*dJag%vSsgRGjOxyd0cB=w4m1!?2|ou6{p_}TiT-!I#~t%(oANj z-)nfOO{rzqgM)6?qA^CU6UKRL2`3wlgF>i~-KTkz>rTcW(GnEbSvLz6~vXB7@tQKEVCK@2+8gwKLdDS2dOFp?)j`Hskj60Us(&1w{v6 zL36VWJpgi$=4sJ2^>v_Tsmo<*IpeduJ_%DPn$l0G+;M1lw+#Ou*1oE(j;;w7m*5cG zLV)1z?(Xg$oQ=B%ch>~jxVyUscemi~zVXfBJ>U5W=XqwTy4S_r%*CwfUR@Q~Elb;^ zLRzdsEkt_LmfLduy#eDu3i=V+;8&mU4`x(6GZPr)FFEPIh)d0aN~PwMtcq`F4SqEv ztiZ^_*e^=X14cRwnDS-569cNmhz&!ogkJ<+P}d@^E%vpd>XW{JXI(LF`M!S|7p$?z zKK%R^i*7IO&A-;8bC1uCbuq1R^k*33@>e@NSpelR^-Q8>0G9a^Rv-B=?NF<32pN!4 zdJ6#=ehF&t8)+X9O^|E%3NfZ=|Gj&uRVI#b&x!!+h3VDR zJ_hsM7WG~x=1gu|W81NzyXo&s19SQdjlup~Bnw}l;hV-ObQ{dy)<&gCAZ+e$DduYE zU&V@fQ=F_Gxj@P_lC>C5NM(AK^o-9LdsRhaRM3p6AJ#^=>uz=+kUBU(Y}6ahE&PpE z`2)|G_S9GNbl~eO{2ifk%L@%BFZh?y9QG|GTEDofP(mT8Eskt022*+gWU^B=qs(C4Vi0Qnb)~R3e3m+AzTlqPy5&r{FOME5E z_eLArwB+XVjdVne7@mR8S-6Z#$vDxd^wGi82>VRAjqnWh zR@`rV@xnFqg#{qIMV@NV=jsN7g2Aa`@QZoQWM0BQqh90?O)DT5*2X8KC3sUprCkK+ z-V!GMxm^C0B79p_Az;>BEi{9U1$A@LS7$%`efFwCJ@QO zWgNpK?VY|r)u(5f^L3BSTP3L2*f$^fn`fiXh}o!Fa*9N7$}B)NoD4~&1e|uyCCwLf zt9MM08GPAj-Y57jJql+RX=lq7TlZY}PovG~gYaz6_IQO_w`lNBkL-KE3VUj@wwRHb zA0qSqph^;mVD%sNFx}=)&r$ z+PwZDnGr})`k0M>c1&R9&N#F!-6NQ}^rh{JFmw$0t&MalrtRaQQdS>JbjtpOW;E-Z zBSn`=Hq)`U!uGXY^6z3?N)=HF>j7@tN96+1fwWd)%GFcWghvY02WS%Y#y!+5(cG&f%5%7oK1D3rHuXm_A_5$Q(*VeXUI#tObS46 zW`*%^M$xTl3M~~4%I@4WM`!b-kV4s+qqEDtF?r7ru^(vH@fHi@)Js~`E5Hw~_g5gq z9U<(#-1D+BRhgJk!W7CKI-hiUeZis3ii^QFypo?Z(>{HclUQ?FqxU#>@CGM8er~dM znRgy^<}k&1Gug%^kc1e2O;8ekM?VNmb2^6?gfuwT9^M+tTzeOYDHI*C{>6*w_x#l2 zL~LmTX&C!tu^%9*1Ep}2xL_!pg8j>`3o7Bk9}>(`gh)M*$fcil#V{jZjV)R&8@!$R z=Ik%(z3J@Vd!`B`Pj^NZypxu-m&vSIO*?Bg*BwdAs*sOvntgseefz+wbvJ}Fgvj{_ zXd*u5AwQ!jlKWkNcf>w+r(8wZsR?2>h) zJ-;pXBW~-tHLW55=MwzceRWP;kUnPf=eGRyUXmx;)l$@-ruqZ0yBn^JM6S|~I>nBs z_1m?x?#z2cUnSYr$N1*dzimRDlRQZL=9&Rs8T)*%>j5KdIS2pxXBx?f((eoFqeWqN zsdk?GOnzJuQDVx}5Dscg0KCV>3QXsK0*F5x9!EaTffjk@{yCwpfoVQB z0nv9C8y|aJZyuoI!`J%{PLj1FvD(LCD9C|u|5yLB^yYi$DO@2S@O5iQ?}d1Bw*waZ z&FC|v%=46c`|;7zj(cyJRJSQ=Rd)&2GtLI7SpL2WU9v4jV_0^Y_iosIQ9XsfM^kCe zt~ZfdgFb`E(okTc1_`^=t!&wql=XrTu)oEH=03_VI> z#z!SP^89k|e|@zD2V^MhClCds5FmIPi&UpPxk_!5w^AO!gy z{Ysw8-LBdu*7i!cE}j{#POgd+ZG2V@uN858nsMU1`^~qCV)Q_i3po38Pd?qsBV2Wt zrGH(T50=Cd*5P!x#Vod4s_s_tmf;!MAvBb7X1?n7_v-R3qg`t^7W!k{50vmqK|bipsvjA^ zGQQcgU%r=?f|fgsZW#;H6mnc@3r3~#8;ov0*1UhW=yDMCrWX&PTTJg!*!5azi9_R{zh0ZQ`xK4vjA^Bf(_jdZTs9|)ACvVA&veDt$97dCI2_fzV36y)C#OO#?jxC+Hll5 zt#xix+uZ&o*-Rh&LC*CG9Npr*MCPT=7O9rmcr$>-=jXTnp@TC%JW+2YB{KQW38mhYc*_-0N z;^a32OXoacPnMIli&;VdFK8$M-vrM0WCP;I-<$zV9Q zh3bOVnN@=TQs;N9!SQ_O zt@OvoP&>Jm%>Y4suIZH>r@u_*GhrWJ=mxtaKOxriP2tvTP}mDa&fcfbS?Q7LNx(y~ zTw zGGCs%rUcTBB;Dy(2Sn97+h~8|S*?(2M57u?z%zL4s%!f8)xWZ7O7#Bx(NK48toYG+ zN^H^MYBVbvT;kzz>m_im9svfuL!T*DN9y`}jXye0&1CMB_*p&IVf6V(=rV0hK0~v2 z4Lk%tcY(!Rz7Qftcz932b}@`KQL>V7^l*^~h#m03eR}BqxZVhP9|ZV2xNwzxrTZo5 zfYARBi67np( zE4`O$)A|Xz*OCf)y%vx}w1;NO^d{CB=Dy9aVlT|c_3MaYjfdt04T`KSd>=0fX$aJo zRig|PyU=?8I~-xSRlkzIfjcvV5Z;VpU*lh@yNtV0eZTc<%YD>NQGOtFcZBm!UEamk zZvi8h-DamUzU_Cg^G#eayg{`2e|a-lp+=h4zM}UdbCnB3MaU&avMMPec{A>dg5T<4 zA$*vgARm%Agf}IQ@CbkjVRB=9##5VI&I=~R%M><(o|gBL#OzM@1k+#I|K)4OVpvbN z2*7?__V%LM!|>^vMBDhW0xYp!TNMQI^w;<83TWRbsx%r(k*7k$_IY^~5TIt>$36ds zSZm+xm&4(N^AozO>1|lzOZxtvcc{#(q6Zn`1NSI%m&5kxbeQ!G3J51edyg|-rOt;|7&6 z`imPa@(xuqE^^TZ74{N)+SmWiQ23aqO`-|6OuFOumwQj$YDyLSDX1cE3ee7%v9NcH zE2DTD@L`fCP`gvEvXi*;vH5b?Tw6#!`}}%3QE7>9IO#U~m*={5%0Iq?j(g-1hBf?3 zwQixr3Cq8DZH52)By5a2ADr2&MMu;LCa zkwHFyXbZiO@>2#H-OX+`-Mu;6z9VE)lP5e>@Gr_VWG2zBM@}Dbqt^Dv*^wRtQ0aa1 zF8{78)2Z8o!yoH|30T(X>#^s1<($O?&a`Ac@-i&;Hx*>?wK9>4Rmb4mf&-U-qlYly zOnek{r9nBU-rF*n1Vg_L&^YUPE5hbt}NeFka+9+J#_2b?|MEEG}5?CSmu@c-_tr`j^zcwpWimlKM!s|ypY2g?L zKd~qad$F#dfkQntv08Z$yg1jtgML`^dDR+vp+(j{_5~3n-?%A}qgA-kr(ew85x~@VnT2%V zTUAWGl9IBOh4l3ghG$F z)U{5C8we@;V3%QIY-okkgjAn$^R5N-8ocWj9omC1;vsFA-*M0}!4!FA1{;^J-@RDV z5(u}=?6_~oF6fZGH^h-04#IHX?=|rLGPgy(!HIf8n#Aaqj}nXdxC^!G0}Hk5rNTzN z)SHMs&w6a{>DynxYqc_X4e69r-A=S)c$yZA5e>1_c?eS+oxj z>`CXyjxXBiPT`JOGLU<njFgHK3%Vaf_L65i|)ae!D8>&Bg-)MW?2 zU0ED3H)$z->mmm%H6-Gq>WAE(2}}I~hjdmrkTsJfFO;B$s2 zSh_S4CBu@P9VVEeK-N1z4KW;wj0v${A^t*uKiXgz=8j;*FiSGivCH`~*|wI_Uqa^8x}s-TMC|>8>YmW;#H0696Q6WGscGLUCgVJyk@8V_ zYw#_)yFl^6u;L1C4wz5FZ3I}_5_yJuN@$YigXk0uz7H7ls;5(%875w6diH4iW%X@C z_6jQEHItu?u}r_?gXS;6htf?>BlKk5r7t>XuV|tKAD3LRGJIx5=5W!ZcEk-~qyFeu zle^`+Me=jiR9I2x@enUu{Cp zNrh@b)5a45yU!EPzT0Wth9mHHI&sA8A808k)zUjpWd@M(2%RIif z4O_MZcHQ}cR$zq-l&yRJI}J0^siG~_z#UkH+-eh2xHvQ51;X#Fp>9teX04gD_cx`j z*AJy(hE1##L5XbN^rC_n>cO$Am%lJQxS@@|@SSLn%F zBIrpf53tTjGRK{XZ4O8nZcR-(CjhWY_9|galLk$5U!rcNj(MnK4*IaH94(cNUdNi% zk@hH&*XA@dktl2psP4G@E7(9J)$P>#c1ezhk~DqXlLF3qvUllx>dtgR^22fuY#RW< zsjP%9KzlDK`BD`kN<}tYT&K6pL*Q>Ij{4#~zyP-B0l5 zdtB;ui*2!1e^p5mx60O6^n#knYhL=@Ugbv0vEV&*t9|WN=9{+8FaP=X7c|yU>E4Tn z#ML5fc>SE9gW!t#{CI1(b^fZl+ab2}yGQK!RpeA-1%4Wyj5I~7-WdLlCXJz3vD7TE zb#F#+faHea8d^cbvl6){*sU(ZMtr3;!9LmRY-Y*5oJCV5b~CZqmQVRdd{o}+IOUdQ zqoxx4RZT>|myHeC=${52bEz+M>eZIBKYlaKi9g#cwDD^jGDu__nbatR)o_2gM<^MpTi@R>7$kj(ugvW=dRRTm@e|l?Q(w|5+O z>y?}@pUIXU_ka&@;krStUhkwjC%G$pSG>~_K)K6@UhLA=37j~+*#j0Ynhid0;-VvQFbv=UoJM3NZ^8t|5JWM507#jonbq;{#zm{Zw?Q zgM8+@l-T~}rbSldwD1?8J1Tm?G|wMVV+F68m3BFq`IRR?&)-tw%auAOH(baSRymnJ z1nKBh;61&DewA}T&)oAO)Y*l=SKVNzV*58kDR}>t{#zQfmw9@@q*`v_{pRjKdKJUL zR>90MYWv3iR^GU_|8q<5j+*lEu@YZrN8v8L(36e|WZS@(wuIbM&NzA`!^=n2vS+WQ zu3Xze{=G`LwZY5SMlA<~&gRd80o2>5aQ@%@f4|iPcXTU^ed;oj1~- zN+^fvvDaxRgnBzCJ;h^5fYp%()4n$n1uxAJ()kuqnH|lD5^7dlSuYti6O1y1#|r$X z61k$BU9H>{)<7?~Cj$-WU|?!oW8>CA8JFE;#_8l0Oge?-N~Ph8&tVqvm7C^UQt?*gZP#fT8(p`JdTJXV-G1+ zGtmO6m;otms#$hDVGon%b;lfYbYeT6nZQp8>W@ zRS|P4gkpGIIVKYeQEHHQH`QvftkM;dewf# zpu&;6X*w*cX&-hp997+K({1F*NG>96ON5)VW=Sk9lfolR`A zs)qy05BdF~?rCQHVW=Kp0Qi}*-_g$5!;DwzLWz?i_9Z%kMlF?YG@8Z$Y7NJgwKU^Y zX6&o;nE%V^cLUh*8AHUVbZVyslGP$ve(YZ$wImt|oJ=D^3_DAIfO|MpOlwUNb+kCG zA}vf4jU*s&-9`9DW~ZjSAv_XXRqi&3&7W7Pj2tCVW=@^D9p@|RWNbm~OhJBjJ{5#g zv@<4+>_YK(SCSOJ(6^}acuZGaouKGmYfYK|mQhQU2G#Y~oaP*0%#VAnBh}}Wb-k4k zmAXZ`I#Z&^s@p@k$$OcH{0o8Xg{;H=ODZ7?B-hvw*Md2SI(JTM^6`x7Ms!aWb z1EH#~vZ_!1ze}WKDdMV*rXsO{!2C94P`!%25TzF(pit=p;E3UU7uG>qBmm6XvYy&Da@xC(e5@j($*r{&m z8J4W5qfIX!Q}I4x5ef_$OmcZ+RjkXa+(rbFgge$A)7^lm^qT^>Im6x`!AZoZ?zjTS zk3o78&Y!!L`iU@zgaI%hBw>#A1m6ftHidR=NkfW!b>}^c1SZ*%qRf>-2ST-@H6k5@ z*BWs*9y+^GVf=b3mhhS2#(`CnqYY4($aDz_rm*>YNV05CY;V>!!L*yO0QeVnhg{d0 z5@9S6!Y6)jjC&UCD#KhK`WGT0YV|CksYg|`nf5h=S=fLovXN?Cg9IsC8a%pb7t;Os z+idQkwrBFD-=oqShUu$Q#9j~&EZ}cIt<2LnMz`x%ZCJ$>dqXiPm?A6x0DyASpVL#&#)`6gGD`#edMN0vks= zO7^1nAE}_mIXk8V7w9{G0uj-{Hg)=c058?He;qggk4nnzoAf{0zLxnf`=mHu$NgY( zQljUi|6qFrUaEWl69l<$DZ}B3NE|(TcM|_ckl|9!pV@!Z+Pec4jzq*b`ag1Pr3jas zn)VfTB!V4Q`M)sg^p!}e??0gYe=FUNpMop*HO4&1X#>VQ^g5`)2h7@^Q2XyKoN)n^&` z`L;zH^$_^hv3o*0XK>yA-2pz&VMF_rL$5CeZY%_*u04m!r>0GbZR}jO>4Y-zH?+JW z%m}bmaM91l`t-;+E?c;}EH?y;%x$Jazo66-u6&_~Z-<5zW=w!=HP?ktsktuF(;$JV z|Ha-*{wMdzlSm=Iz^>cx-)QsF`=X5dtfD686Y7G+LGZ$|1q!TJC#P*v$HEjyHSIcT z#Vn&OJGaATV>sbmI)PvROc0{JYsmnCwVSg7Yov9pQfs3~ku&OFxiPWzECyan?ttw^ zfr_1WRfmAIB0#g4dIJ*0{9B7aMXp&cK8{w0vD~Jv2UEhmu16v@pn#s`M!rOURR9HD zy-X~;dt;bZ{Se88)MING40moMR;wKU$p1h)k{9F6xpw48I?;t2D!0*8gsMXFI$$6D z0_!)?#bMU;%D6Dd3TnS{^l;wF&~p&G^}hFMvddrUA{w5|?#6p$_2~97ykvRQf0Ve4 zyxh6G!I!RaGujoTZkI`|47&Pv#wZmU%p4V?`xuJ@+5ZPQKp`Q=50%iIZv`I%LS3 zC-Z}WlAdS3p-Xrs*TbI+#!Kyfk_Nz zsZmr(V=VvZz^~E<*2m+?>DG1ECt>d4rck7bKgQ7#%v=$XYAjh!{RaL$>{I_JuE)Rz z6PKlep)i=$=*HicqvTTk_>=fvAJ>P;Vah63N;L0AzylKPx*Ii^gK?v#GlvLY3+P3Z zCzitb^YPAQNL7$szS5^7x~Irt!5k1Nj-?#15-aK`n&LOS$p{Qg~^vOGX5PNTW=FcR04j@`CFophEaf%nF%lbAU=^yXz5^;27-ofG?n zc3pMlH|wSG@0D}q-z#=0qt8ZQ`HSR%Q{HK#+sf9G@>>w_i~932V@Be!5$EXMYS+(h zx4={#4(nTF5h}%p=|{zjBct7mqt%V)RhOSaboG2bub&;7*Z9hn_euwwp0%m&srN3d zSB<6AuUaWNi%X})&9qU|Dmrzgm7?;rkWK% zfne&VY|N*+-r+A)t)fB=P^5>(BhHtu8ZF)3q?C8sx{I%AYA0xqpc_8O#8kaMdbIVm zQ{tK-tuc-DnCbVjpT~Wh^>i31q`Y30r5h=}q&|0`(%qHB;^~p84_;+@Uh-tp`TunP z{?JoN3MLa&g6f%+oBQVip5R-aetW(v;#g`6To#siG|brHmrldlON zhhOk6)a?X+_l>oNvBoxGx0Tik;H(Sz`B6vJ6k!Wmz)g+r4U0i(BWz#(xv;jzb*`kr>#p5CtBs%pd8d8vh8YnntUeY{~d}=sWtgk^;~6h5L@pp}SOeM6DCL1Gpw_SHNlW zV@mfY2@;v(Z!h_M#Ic?r2_=;Nm$IVp6N9u#e)VBRRjBv=ByCFq7>0Lz#(#`9h3k$J zq%xV>>{IqP>``zm*yhew#2w@M#{M$6Gn1}8&)j*-CxBd_PM=fIliACeQBvg!LuK%{=%y*rs)L-4{4C zE9i}}huwp6%I%iP$*63)X(kw~_Ov(Ahgx6K1a&bqWIOpfAw@&=))o?+}oi)-k3;F8_gaG8~TXx)B z34K~oZS)F7bE4n$!1Gss={C95g3cn=2eOfMIsAlKe(wa(+}5!M?_c%>;Plw4JZJRA z)TN138!%uXKofB4c1qKvGLB4ylEoUHA+&p*Esr~Is{3VCP}r?8+_0eK#OEc@-;{AF zc+&WhMTl>#d&fOzD*V=_8?oeADurxJ^1!;OVoj<`-%rEOs6#~0R-PTIqy^3%kss4@ z!}p&raXVJv3!60rg*QXvu84QkrufCxEc|`l4C%sFbgX%LerlT?c1Nl}KX}a0(#Rx* zB4FN&X%nq#YS-mk$-x_rKb@`+g+2e%>l-wf<3nXO#kDAtRj*CyhVEg^0tRT)mLCEcu%TX65A-gR54m+Tmpw|y*8CJ!dgtEgRo^7c)r_hp8}a6;;?1KSj6>hbpVr8~mjJiVcV3nhiPfyn2 z#?u_8BPVL|wQcO&4*fN52D)7{`}@bz0_j`r_ZN6S{8lZu@_;bE@)CuN+3*u`5PJ5{ zKhG$YnNYUu7@8Ku_kOU56P1@nO;2Z9MD=Owtf@8Y05ms%;r2!{E zV6(`2-o9Bi(d_g@Ses0K+<(nz;Vru3FNS6OB7Qoo z8fKFg196XalB~E*^x^lHL*D*SwtIXlk#ff}y#3sAy%9eO{0L8Jg0rY{?=>g3-6~OO z)Qp?>W|r|hV9o-Ay`*mQiWO>gQI6+@j@hKwQ{GQMEz9F$B@Kk;@%{wiw5#x7Z4GY9 zNz_)pr}T(yUSveS)VhLjuQg0UC6#Hht%1yn#L!|BByX$-i03Rn=4@+yie_N#IK43< zo!C{02xSeR2WG>$e&@fe64v8-T$dfnnwxBY@eU>F&w5&bl@xM|YZnzTM|_I zYpDML=W{C33v9RF?F5&t`>o~?f8XQ#>AxMjullZ>Uj(YGB8 zL#DJMD{cg&*?05#bNQ^-ebPnqBt<)oN(E~BDujQ5rycyvG1D`f6u2nY57;i~7SbquNB_iJzCi5@WKivKeE zY;yN;q!Q?70uxKLB~S6)N!7$Q>;BMl zudaa)YhLd}cO;eZX4a_=PU|K9c)4M+aZzcbyGm(wAkd^q34HshJ5U#{z1b1i+|vmL zY>RKF9FHQVI^lUdEhySX#hw$4lX(3^Oi};x`#X}SA`5Qv^dRl~L_e7+ z?Fwa?SQI?-T!lJOFASuAxk1^Lr9ay3S?&E-SL0P*>>I0V-zK`m`t*dptQ0(Zw41b> zs#}s}t3T~F#ifl~TsyvnY$re0&4W(|W?P>?lV(6}yh|`Dz*oD^(bTjNa zy+*sQAD50jjqT4~o~W?xT2d%^tVek!Zcc7a@SaxRO>Ir_kejWH`h6XQ$Qr&LKVQyyFR@B;c^su zu{+W)`Q^v@8fCMbO?u^D%kqLnjYyA@e;bFF3&a5T!nJ&w#ne-oi>&r<4=)QSWmko3 zs)L<>hlj9>owYoFmLuIwg~Gk$O71c(o5YpoY-tVacosg97aDqa8girIy5M$mNH&m0 z##@Tb9{lv!$5R+3q}oTu!9~NND`K$(v1CML-84iOC{nXD+&GL*@9}nZ-YA^I zI{0mx24_}PXq>h-@6#QW>clj7Q?XtN7-*qIvtBoSqaElqyT;^JwWAKg8}f0Sr9yEXNUL3fx~`Wh>;AK#X%H6w&j z0x^2JL|-D*3F(4Pa>ZM};Fs(Z?UVjW({d^qbUYxe@OP;7NyWkJ8Y6cpC0w3RGJfAy8*xjCImfahX&3pIY z-{U-%D;c3KVIFiY(>m%bR@;rW!e(Q@oUYRuj`=NpXP@l`E<=Q@pLBB;`d)qy6GFp& z<@%h5`B5|)#9DUv9`D!{IXRimj)U`oSAv7yL5_?52^GOv_lY&s|MuwX!>K}#LgEp6 z_}}&%-&>PUY&!qsS@6O04)e6|ka`GSHL}?kIBr;5#W9zN?CdC73ivFfSC-aA<4OKOml?5tR3O4qQQCTo%8O@?^Qu6Rd6DfUZj`(Rz zg*q}&QYv0n?CfNM>zW7q8T&L>xVyC@nA@etKJN@|Y);P4!Pdg|wjJCMG}Hi&w_wNE zAX%iFL*t(Fv37B{$UDh8>Y;RY`=bD`#noo7N1y@y8P!4Hd^(uOGrq-K2(CZZX)o8w zpsA`BiP6YMFNCVo$Mxe_M8<>rDz;VNPVZ7XhtdnU4;h9T2u@~wkderd>0bL3cJ!kg}Rwn6L zw1(-~s-lsdddhn0(XLlD=CX47E~bP*epSZE2m;3(tQ&t;uP-7!*($Nh^qlYPROtD( ziK*b4Xos<(F&(H5iGhtKB2My(WIzjkzYPqX-Xz5?4YyuA~A1=o}Y*OM%q=i1Lt)=GB;6x zg#@b6T|O`2XO(#=!9451T&Q~fLDC?cY;7ogvy6Q^0shkzOTELvV)gjtXC33s`FNmr zxN@MU`Mv9=n{ps*qLhTEQkQtv{im109uWFd3&nDqPjghWL2o4mx}-ShUCF5E{4`Mgfjd=-G>{_reMH5L;xRTv*KeC*T{@hjJJP(sRsw1B_sy2Mszdu!)U;-b-a&o z$HpOo_38yeCLZguzaoe zau?{CJ&JKpD@0Q`Itk)4D5N<1^BUo2GL@K@NYC2#?Ifa}c~9C`^=Ru7Zmx^KXpUQO znDQ|&Yj4k`a0RCDQkxHQk_4DMz{=KvagbCSzSzC-DKjpR`w{QbcaQQ#XG5)85|darcXL(!)B`O=+v%u zTg&a&7h2Xf$FH3sI>Ok-eRpA3`cD4pv9w!>$T(%e=Pc{!$BPw@9BVN%8gfD3uP0Eiu&~@b9w~h4sI|Tx6zZfRm_d_3ZFLh;} z~*wD%YM>THc&-j}O`PdsEJT^4CJR?vy^K``l?pxV>hg*{r+IR=@OR=@} z7k?eyn0zZG*c|<(*2nVRyG~rX)9c$iJI7qb^#E^_M|KkIqjQCXHwtM%I74?S-d#GK zmB7ge?S&n-2P%!GlEKx7^Ehk#o7v0OJSTo3do7~)=;()HOYz|q{yO{^Pg%{TZuui` z9rqv{&kjW$p9ziiEt2uJvBL2Lma8i+x70lF>@)b84!_ zFZjQ^(p!hv3i^YTctl#1bM|2i$r7f#vf3&+o2V7Jk4A&&*NMsBZe+jO6nBW|NJI(M zTwDt?_FK!-S&fTHiiTHI74;o39d9bEgjUMeV5V9~uy$oWNyK03^SCdC5OT)!IP^&b zDnTozy-$!6Gm@yes|+uD)E@uI5+wK4>Z-g@>e`P(oF|_)t zLq-ZPktp4SjZRm!jYLhWZKAIw#Bn846e521pTF#4A~_k3fr_M#cvD6k$R+1nC@N&9 z!fE2i%UQGwcQ|i%OiV$is%bG+x4~hp#*~!|?=bH5W;{Vry`E0qKX*+JiU^qKE$ki@sey?!)8qUyns|Ah}@aaanpVf+R;AJZ8W)x+3CG|2L&{DU9IM1cRr)`V6FuSI z=&Fdeq@>b#SY`IJd!#6jXB@{!r!&ylrmy4&^U_EjMC+st@moJLm#NIoh-!65cZA@0 zPnCr#&{9kCWFm6NMx<-ewm&_>sUzYclWChq!b=@Bx>C zj-pOC*yP?q#TO3A&+^-M%OoAu7S1~GEiV%%)flq{AMIwto1ZNtQ7QZ2^jl&{0!cz& z+!gj#e0=XlJ+tRE##q}w1}bdad#FB=c&o@=@;lJPFdmevdlMcnj=stlBtKBclo4a7 zJD(%=VfsmF1XX2K5Ac!uIIGSGUSx?=I?RrWX>X6tXc`I@%NI0jc?53)H;jeXs z_HJab)aQl?$~tmyNps^J0_`H^S#{v-g2GHZFU22cJpb}cAPaAGt-XI2C$emxkXIJ zsw2Eg&cRSvO2i-9$4m7k%-`*hQJODuYZne&jCfF^)}79!+40yeM)q|m5&;<=qqk27 zcCn-mcZXJa2Isa%VMp4FB}`z8TY_07J+77p3v_Lnr?447*VVF!My!Ih2X)g>d?fZO zEnpO)%XU}f&a2I~^WRE6+}vPcqnuk8v-g!nrG^s+|FL3uy!(^!jhfcOk}K#Es1i8r z%VF+8!&#BjqyIzQTZhHbwE4dwKp_>*o+Wc{_iEPkeBx#Z4!r36XSHkPJWro|EH}!up(8Q0X=lG2xl3h>{9NSeoU2tw3Rn^*I#D|s*Z3MhumGZaBI70+ zd?9I~n;dI1h^3)9^oF2$bfv&5r)#oCC#P*iNZ(3r)nvh4oJqvJW%w-YfdtJDDU>Fp zLCwgcp=(gEgxojNOdu;qxo*_`-DboTWX_Y1yynF7-duF=+v*R;N+%Z~Ct&{>tLTq* zGvMeMKV1A_>M^0KX{`O13zUcU|FQA>a$5c@q<^&!l>~!kr{~@ z*qJCSy7im*iUvz9%r#z;XnjDkVUf&5NKdJfWQIG0YU@2SSuj?4}G zm|fkWq!yCNHDlWmznHM_C}f)#cU}dur%|UnI`aLZe_f7($@H^%4I$zb-LfLU`pQ}T zcxzCKnS9!^fe?kw*(GrkX^v!f5@>K4(1Ycy>03icf(Vz;;%g@RVh{t*iyHVo{sX6@R z#5~%$DeJOlvPt_ty5zf?Uw08q%_7mLV_+GSna;f?*$Md++DgeRg-@g1^KJU+!}r!< z;{%2B;Dk`E;J4GJgPmSVx)MaV$1iwVw2F<4hoXtptl9Vm!}(J6Uh>UW(oji!Nj3y_ zs=TBAXudyL$(nI-H=sUv6#}SZ!8~9>^AK|_ z6kkO5vzBjF&%S;Q_+0%o%_ypT#zS#DO9N+qrQt0(-KciaWi@u)a+!VAG-Hc>z}8y> z-Batyd^;)_AVwxFSH#L#j0*M*m!_Us-4QlFDS&?-bNxLZtrkidf=j|1DOo{FMCP41 z9^v^Op~>X(oWfzw%sc#jGK}|_%Yztv3cDt}ciYe*Pwc6QiinizW!f;Uz$D??83H=u zsRzr)rc&CYM=T5pwSMVAS#emxM*XF=BEW(6w4bReD6`A$HUST`0Fww9BG`SF1#hgAd`Dd6I(4?z<%{qs^)Ustr3$7z+(CZo=X1t zRyw%Uu4Z$-fJMW{apS9sjePVV^YHxXBj(y-gz)>_%vTXnj?FKN4h>F!T}}fKl5#I~ zUwKhivQ-8F9_?YrDk5I@XSw&~xoM?#Za(WBK32aoJKpgXa|U217kJ+$X^7)=n%$w6 ze)wgY!zM9%)pM+%$vQRXenb`}gCM%oP&4+>`5|cJJ@8(VD9^%egN;dbqnP1xzqA^% z33}j^Yrx2LUNSr1(o9wFfzmorDxjn(>LEi4%cR{qpjmh2XNy{o^dL1JG{) ztwnprgaCi`y5d$byJRwN;{1&=8Zm*OkcVt|F4t{OLo1`J>L!ty<=l|-S#5c53-9{3 z<(x%#nJ+9W<1C*(bbprZ+OC%Ak?xl6ZEluwk7#9g4d~XY;3YGSIE;uT$g8LZ%QsVL zHT3l@bkWdAOAdh=Mb>A&p;6bOgE)m|_OL)$AUFDMtM0~6dRq2M??6#>Dyc6BQ3z$~ z(Oq7QQWp;PXE^1XPwxh_iHVk#-VWHZU3guzEu|668rtqQJgr?7TTtIhn$ zaQNfZ(0UH?;?a%aqUhz;7H<1uK_9jtGDS^nMuJV0C$q$Y)@75mVI#fAM#RwQ)Jc_x zKy_C;=9ScR;qh=ldv5rKF=@1~OBlaKUGelK`KSX>Ew21zYO0`~mdI5RZbbodDi!5$TItNU}?OPSBQSRWb z;_9IBuy$INwK7Q_W)}r&m8H=_b&N7qKGN0KiLoT5V;|^;CbG>{avHnYthDTrOHBi2 zI_wWkO4yoy<#TX1d=)-3;0&a@{`3k1Zy>U4XjA#Pj5vv+5X^Dqpy~WH&ULlYz1?22 z$MGCm6c2lH{{Ad1oqzq5UvQ`UI^9f6fMJKoqa}MU*3nd8GbVO{!O>{P4X({l_dfN=ifUapc2}r|d4ZK-!{$ zM|VjXH4L6gY)nJH(yj^_W>|0fwj!S+dezcuRaWwc&%7@VZ*1GO9l`Z%HBOZz0+U`L zCC*>%uMiK8fZ{nPy^7Hs67ocqb%;N~I3wMUbe#(eKV%*6*zz+|JM9py!|mjR_1|vv zewSGbC&?CZ;rVxO$;rbsi0&BKb&V*9eu!KQvK4j%1^h8RB0YAsUX`Cg+3iD?oqv9t zW2-f?=Ix!6Y2j&d1TBzy>fH0pZk(O;`j^1-LixM8T)xAB`-uLhqJek*qd@pw`$PM( zzmuncyTqiNHC>=1Iue&okD?bJQt*ddy>(=wnU^+JmVMQlW9m8|WW-QWEMwoiF%2iq zk9{6An@nsa>1nAjtETfhXu0!wb6o7ag?HrTa3&3fge%A`>`O1yf$ZC&H*a-#eRn zG2(Z;4Qnij5*a7TrQEnid}wzTa&on&J_GWZL1;faiUwE-7BOU$tH>G!pexgl- zGm_@|uU%fhSbNbF*XEyATrX|PVkDz7J{dm|FlG;6fkcb;WJ!;K>K8&)C=Z2Dh-K!Y zEs&q+P85+T)K*4ckdf)R?J|{+-qIJ`lYAoHg(g+0Q*`D9qZbGoW^X=gZhA*qEsG?P z_@Q>fyAi1!joH*^4;Un20+9nttba|Va!Id^slp?w|Eed#OkbBS?Lx^-f~MU4@=&TD z6e~RQx*PblzSF~=MQE4Cic}D9&PVqf?KxK%+VkgMi~1TX)%&7!^4O-t9)7s$wH0CZ z1$j=H-7+kp{ZbK`fNYBB#J64In}ToM9@vlYaZ3Gf7d2C4`!Jxk>Z@WVFFcCa_FOHT zw4Z@P+nB(!X-pD^sF<>B>Sg_czJo(%g=CgOo8%q^VM1uH0G^_TX>WSC4Lx7Or=7T% zXzxNve5CS-AG+d>1ih41q9>l<%Uzi(adRnYNy^C&gi{S-OuM&<%U8ZK-a%K*Ak|F4&i z<7ST6QilIH09y39M@b!6vy>Kdd{fT0`r6{%kvd`+FtA!8rdS?bi*B<7>z!x7Gbn?Y z4CpBw2`@ck#9-w44z0fFXZSwGgxw}hxe2T$sp7}ca_<%0$B>7~CsC!CyXpzY_{IrW zOf9u4Yshkb>Wk0V&KHBrCp@;K9B>cU6NrNH^?%8tS|??0@}iTxro-i={ZuTc4<7k( zF||0&u*TRzVc6EP&%jbmEyUQ^_MPW`*YBD*u% z0>z(Eso^ua$F}I;yBjR$e%CkbG(Tz8iGvn%o-}m+nAkDLhh)144K<$+P7D^gq-C`9 z<5hq%oKy%%Pz)%=Y5I64dE~8WuA3-TB)>esXnu>b9scIC)Hy-I%{U(j9mKxE#RgRJ ztfQqFbYfl$76(d&^r5=04WF)l{W`Kdu^tC(yQ4K=;M6VLo8ceK9D7&Wq{XAUSpNRk z4V@aT*;w@G*AJe~h0d=86LcPn4R!h-cD7P0XQ&9orBpI7Bh$nc`vkugK_}RhF^sa- zBXRg)6EYzhvK61|aYFfD;qgTnCwbN=-UHY7^|mQM#v+ngp2y3Oth4O-E~`CBA7S3; zG%Tq*L3PE7SFd8`(!K1a56`l0RZ!!LwIk~IYC82(yqRj|eW3nSGHU$z@LfpC82_%jLGmH$-bGX{k3j{)a6@i!KJ2DexSjx4n;Hnbl~2txSUN0w z24({qJ=GVm>V5gVfzd(-HC4l7353R(r~-{UfvL&Cie@XPNluzx zIkmjXYJ8Se=^#;>86R^HudiYnxso6EemBc~%)yBk+_!N4{iK`!=A~O^Q}a|cV|uu_ zfxF)2BO^tfYpEmAJWN7^1qV=>v1EU97#Sfpc0Gm~ugWfTP#tSOZ|S>_r}_>ns&Ve} zv?I`q8p7_clIm`b`K~h*W7zk>qC@NO<1<6fgq{u>)0J#TWXg^(z zBx`K6)r2NlsqGK-$}kISt$uu&s)I6HLEeIr)y!g1t= z`#cM;0ivr5?AQZt_j_waB`!@&TwG3A?Py1-XtOkWhg<|WSL<=QN#AWMn)x)5;E5{O zsght-U>NiNx(Q{QXVIS=9Pk(=fRmdx_~`NK1D2OxAoPSEKvv+w3h?( z0?JHcS$%}G+Dj^aj)NpKWs2TiN002V22_3wt6bQVN3;~cle?&l6Iep33HuugxWpZr`)@A9??w{YQw zckg~_lGdupvX)Y*|J(Vi>+|Y_q9NBSlCvtRt9IkATDvIA$%?BrB&|Vnf!&J6VY;Le zl&Y84lHa+XQDA6me(%qWkr~xl%DqD)T|wuml7>m9%*~b-&9)Ts=A{~;>GO4Q<#v^? z*ljR+>*X73x6StcWCCA1j=gz~CvcP=5%{ty@bhh~c zs#)obr8y0%VI8$0Cb(Bg4$r4gpFDpP`0*Pr`t=+Z zt(Tmd7EPHnpRxvL^(ThOn^}A!?GIs1^DQw|d-oTX4RSNdJBsHC&*`nqsZBj?&*qQW z(=jFH!g)sBtuRtP(Ip4vVoi4`P>qUv9m@iEU_IM5b2GD>liSuG-@f%f& z*Ux%t$l;DRuua_cv~z>zQ)KV9>!2aDxxrj5mI2G|?AUSI9)S(Jb=qSkswHFBuIW7R zdT{BYqhS@Y)9AA++=*XtMY z3WN0}Xp?u+gp_jp{0KxBIR&|x1NbXyBaUpT=E!Y$F|`Qu23_71Yequlzhljmek-`~ zU$K^tE-wz*|Bx|zFnIkih6|{#4>7xWtNo*CX>^@MVprbkb~Mu6lm5W@;#>PikT7#M z{yx*;1%{he!Y=_b`QZ6m!~Tro=XugQ4Gt*pVGE+s&jhjt8RxhYU^<8E+RF>P$ zZBpm?;p97?#H`EYfpER_!G(ZpI1sKtW}8SK3uw*Uin9y zEE*eW>`(hdmxfw6%G1}`DT&}=vtsa)81)`JTeT_U%;a6+9C`E9>KZ#SNDiC%>Lcvi zYFZ2UtiI{avhjwg_w>mkSEKq0=V?~Mh%-G27s31?W2WibIR0n)%WP_t*YD?^P7&cV zo0E#kI}Thw@wWa@T3nK1wgNqE4Nc|Rs_LVZ<}Azz23eJ^XDR+dc(@6L)8jqSW7nCD z>)pm<_X#Z5FAi6|`g;!Y^>S!yD1M9?7wFZma|?8td0ZzqwS&BHyKrf_k@akt6qEEn zM%OB}&>F|apK;MBsb07@``|s)-_j@S6l2Q$>w=j~ZHp(Tol0RPEqh3LScFB?P~5Bo>{P4>;1Wr6^V|~7L7 zobN^ifu2{hMrjlt$bdoz6WWX&PM{eOxx|V@J zfW%Kge%kLmfdQ$O%xnKO2%4AYZ`kF3Li^vdb94WV+Rw}PUsC&d5wL!HQ!6)0PL97* z`*}G2Q2P;CbFd@O=YO*M@38%U;Lm@@_Dkp}Dr$=V6WcHDWN-f8Li>5y+1dW$`-?eR z*;`Pu|2wk(PbvN@WIqo(o2Iw3#eah3v+2rO*jQP+Bk=P73E9v6x6}1+$o_v-+W#+r z{eSA_e+2CR8>pX`@;w47k6`D&=cnZ0`v;u<4{86uX8e}MV_TdY2U ze2<{$Be42^tsn^e|G?@0J69ip-v7rQUIZrpAC&%ofb{=>{Q3UC^#3XYqAdUTK0ku( z|L5rcM8@a)TNV7*pl~h@{=b94jpCNW_t{@dpZJFxjx>F*?^iCR41PoQGvcC)ZwJYi zB%?DqQJ2l{4zI=>M^Vf)=FpEh?a;n$@z77S_)vvtp)GBy3TEV-v_`C7h;ux3r*(S90)D6CN+}~>=!8r~c2nZbsUdfu8T!o69KMF)= z9UtE3og)U33-+1?@N9s$4>c1@wp&@|V+#ID@=^DS!Uv>p=%*N4qAqo~U<)nh}@g6iye9UK>Hh;C^c`Rdb{^{htf%zvR{P{Ri<5 z8+SKV3s(sz2WKZo3rBZKgv)fYcXHKmHZ`+AsGNA%m|4iUntHSSi|h5Do`&O}PT?L#Cr1z5BD`0F$FmpF)1k}Eh_^h^*b6;Qbyjl@7UjSadA;F@C);C2(fZG|{LSeRHu*w{oIRHRghv5x=C3EuJKCHj-6PqUGcsGmH2iG=(T3EusL0#Qy>q<>6L z{y8B%MMgn=hKBwe0~2vT-HRtrk&uy}q9CK9qM#s-_D7^YL3xS#it4@CGdwj@G-{XE z9Dy-8=rrP0Kk?PaPiZ+nxqf+$K|o0KhM10?f$=R97dHbwT-QtJHW%!%iHH`P;f}-x3KWoxcG#`q~w&;AGvw?1%*Y$CDk>xb@dI6 zP0gKM-95d1zxoFzCa0!nX6NP?*48&Rx3+h7_x8`uFD{{1uxuWxc_p02$$sOj@aRb5UKfRWT9kXZeuF$uR;rUafKM|cK2O{ksawC6jA<}sNN<(DuPd|ppLr#egk?_YKsZ)v|CN>FI zC+GiL$^L_U5+Y*wpD2cKbFp*%JrYfkGnRTh6D%D9bS=$mci94UZ1NVRpyx$_PGqU&G{Rp{iNq zH+;zb?4All01g7*Ey|?>PvGzjI2`;kBm;ibP)HGQCo?hvyn#%PS`BONM;Vpz*#UTN z*9~_sLV*u$f})SG`_M@Wo?G}0VhCkk%eC}A^~i+W5q$ml2lPEo1KZ6ii~1d zYVG=FP=&$6v^jedp6@@qZ+{fbvctBj3^7$)pn%*%hge#E(T)8cq|vNaeVf-f*OMr3 z`iX9Xu&qeFA7EcWSHe}-NzJ&&4Bxt;qgEN;^lL(wIo&KcaYOPSuxL@SV2d8{@6aeZ z+U^bJrpufBO!?iNgX%=npg;5Aqv`NaZ|d_Is*#gfJJRlEz<3@$C`WzS#Ack-K<3K2 z5=s433N(z}f}N0RbTh`_hRge*`tB)H!r^vXPw51kZXZf;^i}6WJyRs5cs_TK&Jn3Y z{*JFy^14rp%8wl#jr}bm(YHU>BRB>kKU5AFMOIM%bei@ILvgH>6BPEi~n!WQXcg&A2l4J(M|4j)=LA8mea$IRIC zW9oEp{n6MBkKlzdKYI)#&5`);V|P`_*Khb0&bnZYF<5h z3x5^nWgcXU;0FrY9LcZQy^{r|G7(~g-?uz{XkZIoP+fy#7|lfxR9K`FNdt~*36Rkl!x(Iluk+zPjj*skUpE7nEy@d*+L zCt`XrrWLpqPX)(Sw>A=pB-sH2hLdu1bC6}qGTs8EIg|!lBONU&UeXUM%O~08RaQy& zPssBy*1hQ6tsp#r7trwIDmc5KYVp5*Xf@}2X~M;luuwgL?ZrB~B9uVKsB_(lkq>F@ zcBl#*>6y^`jf*;fFLa@DR9_*@*Clj8NiXsjnZ(&Zw=VIHr;T1S}s?%@^gU zB?VQfXTs$ygq0&o-caK|-&x3XqdVc(In8vtXIFEU8_`O#>2C^X&DnHI45s+;~f^gnPyj>MkH4m zu5n^cKVqQqNa@ih1;vA32KM`7D~K~qq0qzpSqo}k4HIF1PDpkC!Ac)iEbyH|G_2Tz z4P}|KzkG;t_538kWFq-s<{F1F=*ODy=dB+H-Ot9wpSixqn=O;c)YRClu;`^8*9l=! z2U_eqGnR3JMU#}OJk)qb1Qh2DgBo)UW7XU=7Y4h%7?V4ysxG+`-;F{rQtS-p%yW91 z)bV(JfMfLhp83Cx2f$j^nh$8cCr9JS-q-!iRb--h6JfgXi$G{9=mu;QlFAMT%<1Mb z8?$`qY&oJGE+=Cg&O)HmE9r|41`HAecKg*V^Kt6l)?ipj4L%nst@HILy|NnQCsDzgKtYVuo_-b^sv;L6{okv}Zy z+xn%<`b!~WaD?^5oO;dO`Km4|K~CheBa?D8m&R<&W=W&+-u;|xrZ;^oaap;Se8=H8 z?rrZE95Ky-fqW2&?@yLYH*+!P2S{h7Ft2t6U8+wV;-~N7i-dJL- zAW-W!q;GaeGxq_D9w~OCef_jijY)O7k_|ZdKPm!sw6rO>fFiK8GplIRDU2>2i-4W5 zS3-?IgLgHe_Ee_9n?)M2UZNYu@5?%AD?WB?$O=xPvo~S!=SpB1A4b`rK=3l8W5N>X zEoihjQd{Q@K7pB46D8%Et%vlLneJ~dm5j~$mJS$=M0LV(C(9&MJ&AN~#MxQT^Tp|+ z?O(jJhiIE8n!F!5Y+sMn%ZSWd&JgDp6SN$Rcok9Vh))@+Q*4wIK3AOg`*wv5F|O(d zXTX=Ogm~n^Q4IWi-P3@2hlFEmRjy2ZwOTUqL5FZ~ym}m-zTr2U31QL{rHJwQin-nR z6WAfXeNSu5u(6XK^*5ea{k*5kv%ar>s|GOgHt6fK1Tn2w0GIHlXGk#V(CGs+H?IMj zV7Da@Ifg9kOY>og43~dED*5=8US8+jWrh~E&8^>8;xAm9;7C>);g~n7;w|pkf@7-F zG=stQDn%F)U+fvh{0=8MxA}%)*1<=_XN2s5jndM;?50%WjgL2osV3x%7*#GgkO-8K ze8l5trfG+{cis9FgYDzKe3W_r$L}gGir13^8VG zP|S@&eX5+4Y>rtv>Bu_ji-GO+D#P zl8VHP#$g?CdR6&s*3FPoXtgw2X=^Djcw89S1)G-3H}Jw#cxgdT2P9|U&D+s+#qr^x z80Smkwv+*|OHMrci^Hr2!y7DQHyPsjlCiq)VU(OqJiLT6vOv{3Y$d@W{QqSyNuM|8JF-Z_X2(y%atXQr151AMkrXF?1P1< zJ4)#5a;dnVGX*$jfqiqy9#Ct=M0K3M2%UU>xokE;x9t$0_?jQ)ByFhw=G|<4xqp=3 zX3teYi4e_#_+ebMx(bW!jFNyykm&o)UONG^z~w;Y;Ook|7F%XDcL=p!=j|aI;;uz`a*`+ z!O?xE!0)w+mf(@h&YLxmR2;@|^BO+zOzx43`qz3Q)}+hx8bhx>X}5~Z6+Atb{5rjQ z@8X821HFp3@vk~W8MD|HK#b9e3yOm-ULz(M@Y*@DmZ1~u_C7&xO}Up{q2_>Elul$H zP_`!~Q+b>pxc0~k)m++%i+g*$9WHsfDM_&6@L2v?3=-H9)t7|k(3_6rxSqM1(#|dL zz?eR)=QY{ZU1`$rzA=bf=V)`um2Xt{3)Z>Z;QIw(&U3CjBUSf;Hxa(Vnr)`^Q|kBj zz3bs>_LVhzH&5hspWBk5eK?VQFO5~DPb5RmNQE7)@D$TbZ5dqL(dEpFiyojJ)EGOce4< zdq9bJw0nv}1N6f2@c87Ez2nDs>ZMytELe*tE$wfe=(Xap@8yfU7EqEU_oGcHJO=wr zF>iIPd2!7ftO_~gIm$b|y2jZ!BFF9w;R7(E+TB-aVP9R8(;MmGaY!$G2QI}(DAzFP zFAM4#(MG;l+Wv%7_Q0R%H(}NOV;-79nLx#xJG^AeENq_!4Kf!aeK@+@x%Rx?SoLp# z3sqg5+_n%gohixj;(9X2W8R#br~nT+^4wy9fg}8n24mXY%*dz$_zl?-%8;Ut;@amV zj+|wcRkhF49Eo4gxnrAR@+_?~e_wFu(i>kVRzSHL4VyD_^`?_n&ZLiO&bLK#FUW9y zH(oD9B(w%{F^2#aV>DdcY}YVW1k~R-{M@z^dBc-{e&`~}|G9-&jeuA(o|DDu>0shv zEanBETeLX!GA=Y*ryKQTk?^DuJ=JHCYjv;iOBnLe7f|yueK=3=!h&fyNsB*^7(U3= zK##6rFQ3QTC5JC=Vc@4{t=zL?!a|A4ZmO2=xz7?l3@+!P=%{&H%P<*#;K*8kPJ8+G z%7F@Xwycp|gi2i0(~gqvIyC)#t{dN$MDdW5a;#ILo3LPq5{eV3*80{${#h`k6Xr*q zNaXKZL0l5(KCBSQ(8UlXpRhYwpXcq~Yjre7dKv>TmZ5a!Ax;y{U&(W!b!4x*1E2fK z<^)ku#=p}|)FrzsT50bNT`42laIi5Wk`**iRgadI+jRT|dlWPx{&+P_7uUYITcs*a z2}BxrDsg7ykwCewPiidj=sxSN_@d*vHyiu6M)}{9O~QM>_{+}bJMmBSfsdDcNExSB zbY-l;az1+#9=u07^$O^dbxJq>Gh)ZkbjL9{Pm|XC=I`|vBlZM!7#zo~U12i$#Ws-{ zqtej<(%zmQ!zSupCogb&ZT8+H|C&%Y{E6fHB@s#ltVL`)$%mk&BIBCbH9cWr{W?zO`nfdaHg==-hYOZ#cd0h+S^UyxFXH z)j%KQ(WITokaQVKqz6CiAb+$(Z}t05NMd;J7d5%&)zX@AaNVu5o08Bqh%&j@6 z_@w(8=%L+5JMBCK}iy?In--1T{} zQ$4lgF4AlSo#oKMNi`*1RwGf;%dkXjr{x+=($6XP4eF;11jfx>VH7`K@g3(%>N;j) zM*}?$=xbY;RP@YK1&8)*gY)0SJ!nTJj`my_I_obu?=Won_8rEWO%+yjk z1mxRWWd(P8#mmCoW;<(fT{;-AjN~Sov0X>bV#)uN3*kiGudzG9+v|M>Rrj`%Cc-C_ zFiKRP;itkv$q! z+bswH7L&dp+Aodn7|{7`FJnW#L>JvskHu7XLa}cazps1hP#&H>dHI|B^OE*4+INs+ zZw<4m&jn5jhTu2nv^>34pooOT`FHTVvdcHuSAxZ01DXL(hg%7U_jbvo{FCR?;GCDV^5UJY(0(`S3y6HOI@G2&MzqW2y^r`XKJ4pBbS~^d=@$l?< zaz9SZ_n}eE13BSG;+fIHFvmV!_3*Cc{5gYau^rOy`IClf?r zln(cq65rF;a?z@;xe2tG_6w3l9A0Gl=EEyK^7xHW!D1je6Y=Z3+TwcOK}|u#G9ugS zcIOP#6McrR@S~F(yq8K8h{Z4;Vu6pFOEh*;a>A~5X( zTH3lcekOFZ-^PyabSibYu1FeBR|Kzflp3t7HDUt(&Vrrk$|Qc7~b?=3{w7RmPlAqQkixDIs= z2bjq$F@+Q&<)bglz&+W8u`c^n&j{HZam~w@$9p0kja+x9KdgoqIW@$I{gw)2MmB~O z^8;rtKRz+{*TnF8Ruz1Ok|ePo@nMl*!BNw=2c)2`J=E*71NvrZ?TJK2?`IgeV>j#h|HC{9iu zKE8hwX6E4H<#^BY_h#4bHf(1LIqg+%=scR!>NB5#tsjh=u4)>!gThkdj;RGU0wG}@5<|+h^UpmzER)|@E_!_-BeBQz ziu~Do^$|pt+=JQDkqR^X!KIg+iAN$jzPsT6FhXM8KtEK zeLH<*`(vNf*mq;C7{Uu3Ev?FG(bL+1oIy?eFHVQ8M4^=-*IpR}V85=}0O&RN`tT=psI9#dQ*}baJar^@^}kPdOY^wz5*YJSQbF8dZ9gT9yeBqfTx1k@tN=fTJbuM}*jdfgtE-X8B@(n% zyMbR7!0#2fM;3vnIUtC)WnDaQeHBV^8tZhwTs2xDQg~Z!+e{1=nBLI=O&taN20i4a z5^iWXl|RnXi~$YZ*2e{wD+0XE(Ml-FC)4h|*R`SJ#k`t>(7Tpn5^WQa2f^v`GnMkk z!ZVoWs!`!+vX=}rUjt(N@Hhw7w!`BsX_&rAqi;W+hPQ>l!v*}O&ZhPR4=(orK28~q zQ+p))m)roKrM0%BDKLmdkbIQk(I3itlzl6x0c^RAEH2)s(ZJOKslZA=ipFJ=Vh@jL z&^t?L%voqDNYT%6I&FVu%c)4jbrn)1!tpQ+xJ{ehh=cFAh(N6lnj3T)7);7UJoiPX z`QY;0PJ`1V1tNv}Dgm_xd!8kuC4FZn^sKG75rD@YZfuC~*{9)9nG!Sxu%-z=chL$j zzgnA%t!|sk`TTy=hN$)txiH)o+I}`#_BeB$6#%e1XO7NX^<7P~n=>h0;jL5cLbO6V zeyZ?U?Pi`fA%nNs=2qMt_p_C47eH!n@#5S7@Vn_k<$E7!;X%ME-{br=?(B_8*&V#8 zKdbCfemHH?nCDDk+EcOBaJlK^uGCY-u!KCdRa&Din^|jYOOkQPB-`(U)&0Uu9squTQr9G zPC(bJ#oKq;%1-3K>uJ#Jp3Z)gH?rSoapvfn+Hq@=d-t7BG`*<$McKBSLG#JQf!})a zNvf@}K?XS)d`Jhbm+|;>69OJw^HpvyASgMaS+Ohe268oI&YB6Q9{eJVcBN<;efYLC zyE%nRw&j$3JCyotXS9aq+$qA-1k%o??I5MKDO_ z=U_VUqiZJ}<_)+EbjQde(xfcF^4_WSHdh4Lju-{DF%43Jhw6y(xExJ`mU-1g;Z*`z zK&aV<$<4lC%-c9%b!H31=piMSzxd80Q*hO=piwBr$8B07Q}MBGf0V3zC*yX0_OLv1GSdQ)T=EkgZHnak3ZHwEv;9(yNx);`z6O0jh0kwmGB}jj z3hXnxsSB0G2D+THX=ZKl9n`^k`#rU^Ct>IQX47#{BH(QixH)RaSQ~cJUYt=Pcyqwr z#taS^x+vZ$0~9GBiao;5E^KyR<7eI7*+FLvG3O=qRtmgoST z&e_^-0kDU-{jR#myT@X9#X?G}(a~&kZt8uO$-|b9A^c&}9Z=1BqLf*F_xO<|w-vrx zW=U@>a%{FgSpx5YMGg+q+z1)Wj?Qcp-FVY79|!|ht!D18ZooU{x7gf3|LFGCkn-8w z(TIzgtu}u^}x!ZZC$+SuCj zS?>}#Afg7t6vIv_p4(T}PIpTJBjED(D{IHBvO!>(55!*%`qH;O#H3in^Hy}qViItx zFs*f`n*sEw1JZJqHFMv%vRqJ<^_}4X;Lw1qfQr=g>zn`T-z^5rQ!lz7R zRHhZyx|^zBz;-K=l38I>4DFr@FnXjYO)7+IARejeZ5v062?`;Ntar=+VsQI@yK#m| z2~M>6p#Ss^DfGz8@T4*N7I91My<7!0-Co}L88s>1gj3($Kd4MyJOHNe<_h_(R+~ps z{IcuGR@4sC^-mNZGxkMwxgYB4>dp)LOKwZfQudX!mHe4b@PIi2Zt)E&GKPy!a+uJ?=T90>Qp0~eING@#yi5Iz6n z!uz;=O!|P*+s@+r{TjP_t78)Iit&!9z@tj3%3VA~=}vyh&gNYynjfyR|6@$F?*P;w z!?GsUcOO8ighmS@2MwvQ?w=r2T4$exU;0LtVe8&W_Q@)M&=u37@`+iMu&l z+a0b5*Erb2*8jl)&qURz=z=YSugqfB6xzLs_&W&{Ae%ae)MqVKB>ObomZ{vF`LF=( z+8!&k-Qrf&{FkS!rY{~uwO9RC4WVBFK1Bs zQgjEeAl?C~1egFSLT>Cb3xF=4TyF{cSZCQG+)((8N8iS@mC{4${;ch70Jz|8QCQTc zVvt+Oq^!NTSLed!(5=w8IGwi;KiHghVv-c+z~ERy~>v%hp10ch6s-*MM^ z(9UQ#U3V~Z!&A|O7=TB4XR9sSMV+ z%nk2s(_nTM_(B8lXaF$wjWVmde*<^g*PI@Oco~XZ+4Y^uIEbDQfp(@5b@s`~_$2I% zt>~g*dT;A?-lc`K6gD&$k*~xu*(+M8d{Vr4uNvb3px9tgctqX0kvY&D+^R|q+5ag3 z(Jgc;pKO>lE8g0>&MF^-D?L2kLEV%_C6{4yCy6k&iVGjM=m+J8dl)FI&#pZZxbuGK z+N^JM+BbTzZw0V4vPLhmk-Y6fG1_-^{xkS7PEYg-$URf0afB2G6USY!p!ViU~Mutr7}04 zi~=@In*7x^9zA91wXUq9Cu7*Q0@Ci3dvND^Gd=GvelaYUlNayZqXEwAph|t06#bJA z0uHk_dYQsaD~2VL+8H5$g|}PGsE+MZYAehq57i^}(L1@#Muk0Jx}YbP8Qc3@MU&#i z2d`TdP#wk2#R6SgXAdrAV>U9i4{EgweWFWhP#tr}8uYCNbuxJ|9;ah@Fb%=KSJ;Gf znf>OO90)M6zjAD+#9pkh)OyH^7$AVqA8((wsH%hW#5&RL(}g_caoFN{IZ^9P25#RD z%Zr$(o18-PS930H!jym8h_W5sp;{VSTO3^m9al^tfg5*F2)UpbaNpo|=mgq0o4&LL4AXt4EQZqs0N`-y@* z6BFPgli@e&U)0gAdwYQ1ZoD?>+V4cSLWT|uL5=2LdIyL;k@u!RZyT%D+8;^uHm;d7 zc@)v;ZPwj2GjbrztVp^lMRjb8_bhJ;vAfZGknPW6e#oq;?D`E=T}e_91PEonx?`zzPV_euX+lg(n@!VkDHisl-_h93b_lf@Q20o^@r_pwuRTaDnvw5pY z!x{F@TYsstT~Ix zD_|tre*`qWmxZ5sl*FSlwda&r&x^6bOlQR8tx%G zen0y9@#Z3r`v}zwG~9V>x{SqgSPXd60)mzYOFMbC3ki~;5!||##zS()KuWoHAmIU@ z-sthRJP#Zn71*~zyqP7>-LA~w^y8%Wmw6ON$Qhq2)ZTQHe>zTjH*=m^Yw`|Y7i=|O zpZ3K${#<9xgopG(^=#$p_8@2d$A%$f4~EMXMgLJuxVw^o-%)PV z5rMvtvcVlp#&rR9m+@uLp)d)fb@EX$=O`uC57!?5o-N+ntKhfGyjO1P>e~ln)=RHr zj`L!1@Ck*V5g69EWxz5st%vDftA5(-r>}C6bMZO7!*U9c^BA#!-)vmdN|JZg+<+5pL~`wq|Ru zs9L2~tXN6RXswtDF=EFKf`mwXegA;-!~49?Dwp)FNP!8VmuN15*ZTIv;EIr3>#bdZ z&~K~c7u@tV8`-#jh4VurKk!@U)K);UYD?tLJL*agNkTsD5rG6*MVrvKit6?OXLa^& z!}?8DNK_8Wq|W5q{EpH>U1HC9bXi$atK5Fn&^b&AWzwiE2b8|V3qrj`6^@GID+aN@ zv&Hw%D)*ObgpI{*kmJdy3sZ9Jz|hXN{!Vk}jh_{5*Bm`dXLdDh&uMv~bWyK<54J)~ zbP$HrF`X3ywqI=GBRjuNMoN{m3%0_l<8eZ*q5`F)sHwoSaiPUfFinp)^Fn$@sE}2n zV8`!Ia(&P3$N4g=3)!uW@7OnullC2iRn}@Dvsw;dkli#R{{p8KoP1`c51!_q?=m%# zqM9onRD2i>UY~VWzs&m@(ZZRMTjWn}*!Az^{F5@z+Q<)jgGGK*+vnSL6+I=E=yGxY zW!=HgE*+EcPwelovm2B*-Pw@>5imb|c|>2`>%)C;2y~&N+GrmzKQ0 zT$^p8EBZg=J5Z;lLw0+VJL5P(EE_EvOK=N%=9-1tiXGezvTt_GRk0*>tY=3WLdvtT z&(;%Rzf+(94!}>50#OimA6Wbl-68&86lRuu?x=vo3DgEJ*c zDyTC1-{Vv#;--xdLA7Nt1N%(kWE6r|>+QWQ^#VT2;Uy?oA`IAv5ubdFOz*e$D#jI{_#b^Iw zk0RJ5gh1EZDYg_ZrXwvu?>+cuc8`tgg_qQ5hArffs>c8OqYJM{B(*MyS_dqa8C2L} zTo!G-&d4Kd84-wwLvaXJipgd$d%$r+&Z1-Bv*1;c1p(+&o2dW#3O;kvx-{Mqr4BEN zSn@74NMRBL{YD)uU2vzQ@ep#yPjh}P4ZGyEqOi%RfqH(&TU642( zd?0x)gwPe3H!>JkW53MQlzO^Z9hTrA7Cq+GrCs=w^G)wCC?UjJ+UBCon0i-$$oae4Xv&qPP|e_hRYnC-H)ii zr2_l8<*rO(qsEMHZ(`jG7#^+ZJp=8>19Q`#spB&aw#HbY)?`j>?Lq z#8y_*qv>G)m}l9w_DtnA3gcg~+bv{K#Pn_y2gt0CHKVi4Q)PDV`Wz1{yvw2XaP8~2 zR=do?SIIZasg3O}IV=H*`zvfI%=N{|r`nX`-tFvxJnFG7UN>6 zwfR%pwBZ6aP%r8<`sH$i3yR98*;JTDV#hU!?p2G@D-;ME)o^gur z=9S6&i<39%-;kM2tnP{=?ACB4@X?vTA2IVUnM(xfd2#QPU0hR&JxHx=v8k;z|2N9m z7!cBIFGCM|<^A=Zy4$SoOLW>HHj#{!QLXz2j~Fva88+dSp?2qyZS)>Y!xRS*_dY9I zo9JBFEHJ*gVz-9YV3@WA%*UPLh*1ZZktYY@FdX!|-}AnGLREN@v{+UE7|xaci}74J z-*Ye{G?#p7ZAkpM#LMC1jm(CwZ-_XXx-=x}>5btz_*rp9&d)?tcO1ak7wCW%Q3%Y3=6ye+?{d@v8r&ei^wOTols8 z^=@cRREXkixka#IYT4?QO0BCpeuJ8zZ!HdRODvTYd$H5u?oi@L*O{Pm5=VP`YinsN z!`oB8N{h=!X6;pDv3KQ?RAE81?VRe2PBk0(LiF7B)WBKX<8a_nszWu9N92V(v-bA zZ3`r%o;RZKMlXtCaCc}Y6pc2HES+kCy-nEaqj&L&#T!gTK0C7ZU-Gi(AfbS=SH~a< zFg!6?!QL91GVO*kv+MD^>C$9CF}LGJX7$J4quf)4AGQ;lhmV4Xe}Xjc`)_{z6ooOf za+PwbfKo&-$1q-X<_mr59WA*-hIgj;*Yprd0E`zdtS_ z2T_qk^$7jPvMZyxktFJO`9&yR+*zX|Lr`Y(QJKLwQiHni2z5%W0HM38^zPv;#6s=k zgKtT>!y}>ibDI_&{GS9I;ZD56k%~96`PW}`8iqhYdp*@f0>yk;!TSXd>|obJ%(K|9 zQ|A2|r&G9e2rM__5Z-H_po?&|ju)zw5yc0G)FXqSX#-k*a*9GMJ4=7ws`^vY%epr+ zb(h!Y{yv&YsfvrbKc}mM&uYr&9fFQ_vMR40IJ$s;9nILkX8-$2eV*69% zssRi^DiCX~?s4hY{82P!DbQwmn|)4!J4ckQaPKIs_EYP3s+hR?=!#DRMe5*7M8z-p zw@1!LO;7+lz54dtKoh{1f7&}Lpdlu9?B6xINSg>K?7x7L>eu|ihxO0g#jQQw-e3Uq zL3Ix~|KUePaT84v(pzIfW8>-oA5u?2MRkGP5qE7aDi4(_#7YF92CM-nv#yQM3)rh0 z%`tF4gMul~Rv&x@3JcyC3-Gq+_vPnhUlX*EeK2OM(xd3Dk}tO&ROE!|rR|wS#((G+ zLR*M*oT`)`%zYn#eLKs`$QOghsw1mEwC8-rdpOKh8t-%E?1)(HVI*Dj30W-=4gZA0{^lWPZMgYK zODc!$8T5bPWr+1FnAE9x1}HWxr_0NE9G;|eQLVk#?~cXoM!5GpEP1hJIoXwCT-jhB zs5kCjLfBY==W>>Iu#qea&Zl zWbJ7DPxQWAB_h}BULb0ss%#ovh{;MM`@h?$bJ;&*#)T#lcqZ?${H~P0fNHY3PW-iT zeMGYp?$pT(5*=Gmf5>PlT6=MjjTr2eOTN^RouD_?kKi3Ir+fh0Erhy}1jpX22w0Zv z_DPCvY13p^8onNK|90I!v*z0BnC*BbVBM3gDd|!YpB#F*>LuwbnWuUMwB|+rh3(z> ziV7&e;1j=dSr*Z5~a%j_Az9#6cfUbMtf|mDnWJ@Ml`u?WLXU-0Bnb$vJd%bKdTu zLKX_j7j2gV^gC%DGuAxGZRgA4Tx<40#hQsvGS1G#p}}4s?lT z{7b6+uIg`>Veeveg2I)FXk!OkiCk! zyMFX%XnG>M^3&oWXX2`+=6eVAO{?GiNG05wb551!J@`)zi6jn9?xE_sU2dv>`;>_D zqFL^&EdUn*#pENR$0D`DTH@yK*#-1yHqf6qx~KM7$XYKKX?+=C%atBGe_IW#r5#s> z4y+k^_>60S(dd}~2CM

N_j!wpJ-paAf5Mb@kEO`!Zsi0z(&oR?JqY zNfAduZFAFZU320;Q^UT`z_HB~RKhl$c+?+(n*7F4Cm!)F@q`bLUPGq=IoGkEhN_CvMcyH&RZ;KrV%~PSf<*rAi)N({O;Yf_JqEB^kTrU(DFa z9??l8mx6e;6mz^FHkaV$?BLqP%2RuMxAr|aFyoDT3x93g<&y2%)>%>QKc9qasSXP+ z4t<5Rto{x2yS?2ctT(3Baa*kz3F{@qD0%1+{U$hRU+b2U>^7)l4p?7;MLgPcp|qhv zZy0&F?Msp5%IRjl^6u0?1z}JE>CQyP)mSoN)f!_9E{shT6-B>DN+@9F4 z#*6J`of{9sJ5nxj|53AH1NIeI|2UPGhF=Ua1Lbk9s_9anINdz3IgdH`ne=p`WcO*4 zE>}GA&m{q?s~U&4?&fa?pS+iQPfq!8d>_s-s^l^T<5{h zO_kb$E3k>p!ZSHYYf8(B;arlB86Pk-Gp zjHcY2sAGz)ctDT>r zw?4++!*e1gGh4^Xr9rw^wBV+J`D$K0a}49HGilsJa%1OoKgE)1*IkPF;iu_mU3vIv$EQfgD|h! zzwqF9ml$NhP`RRohuH=$)11=gc?#0YjglA~ak74HY4mO=me=j@?v&z=|3d`bNOtS} ztUPtP2$g}<_!ag^cDIUUdf*#Oa6=WW$3$pF%0(OJJ$%;~X%dM5>8HMpe+zjpdNHTC z4<_a^!6y?U8>XWp-s!Bo+$5ep53_r5E->W zseUI@1kRNVqFIJe`h|!d*Z zWu=a|ASv_a(LUP{ys~|**-yj4HGNFGFv=&{YOHYFeW}7Pnm7w-|=;}BxT5_ zdm02y1d+7wKjqYRrnbtP9~Sn`qMePF&hn$4lM>&d(4W~Amh=mMH7Vy@l({Q}RE7Tm zYhGsb!GRe&y>h_P8 zs#*R6t0>t)_49eIE0UtBKugp9U(EzsZ#dp$kUEb2KGi%T_qPpF#Dns+?#pmjZ0X5L zfAd=T+b?$1k$r6;B7*kGF!Gp;9?MxieRS6s8w*u!aB)bzk!p5_1Qj@n${mq9Y8;p} zD_ZMV#OFsCcVt1i^Cb^3?uGD9!74+%U6Ww%&yjaekyT6&Z%4b(t`6G6$tnw4^$-pF z%tlDKH`^SImP_i$R&=!NDE-4WG+R)4yPTEl!P?k>c^fd!mnf zsy0f!7shG^#*^z*Ipbf!u_!;Q9ps29Q7@3}T{F8D|8p2jB!;ZoZ^YLH%(djr%@H`} zFXU2>JaW#K(hiDDcd9aB>og7XX)pBcw|pB+yQ_;TIxX-<#UDp{LD-a4WK})E-}tcpx zzvYqb#K)mXi>dGk3EdaR-&$;|66`zdws~IT94BbW*ybr=USYJOVMG1Pw}${+_WZmW z@X=sAKjqd`So}zxE;+Q_@%8(Uoke%>F&7KB@2lRMVvYVRnF`z+;9+?O5VYMA}l zs5uXOL*TRe_nsnNQItv1Y{;Jz9phZQRR}E(`_U{mc^miu-YMf)*WyrpgN6pKr>hoQ z*EWSsTofiiiwZ7eH{D#kZBVZ^6v=4#uc*&!?m!;0y4AVMcRUEbOJnFmiCIlHMjtqJ ztf-R~NM`q5b7bM9t_aq1wK{gX0bt<~Hadr13Ncqq=tazi4eZ9E$4X31UtMBhZ_mlsJTWX+_Z7XQp30bdjW+ep_SEZe z`|Jks&1qjGwgbYV&1u;On$)a0?Vzxhxy^+Y1qr6yra7{<-hPD#RQK)epnS(hf0A#= z`J#jGEg;t}N}o4z=W$RM0A3R_8t5Ne%_ZQzIrtx(2m61<1f~$~@YXNjBdCl5BN0)scXn8BkIo~f z3C+|>?i$u3ELS(vp11rura`{|)ohtGmK$p3Ch`|bY~g<}u3#>SNmlE-$40#tSrdm= zC&ecE%Rmty+IkCQ?d{m^yT6k*aGdZ=G`qI{pokIR>SLY_B}kt}J3E+W%LJP9PD2#} zPG$$0{GV|U{HO;a_xl2zt`yeJbNo&Z2|xYOHX^$hblUOi@(z6CppID`2PzWn(w4j^gC#hM z5v;R%G~9Ddsk#d>0=OrHUa@ywH#c=R5w$CY!^CE^aql(ZpD=Qy5}~PbYOj}>G*y

DlEj_u9Ia|V8DTrdAI(Osl$X7gz_BtnPF?n_SfLyht@;4)u(e89ja@t|Eek}uB zdX42;%(|mK9ZgdUmH4$CFZNH4la^B#gfkD2C)4j7uzCu#`k`C%Vw(qzxE$3@+Va$1 z9ZOpBJV#K*(PO&nj{?&Cyk`+*Z|h5^SA%UG6QR>@R7^{T!2!W*mA!CK;pepoz9SP? zBAB|}FcjKzGsSS-J1^#=&~9YJ)JIYO>FT0}oGRO;UAS|)CJT$>+i5imY;1G+qqjkhI$*L!`7uW40cS>nu5OPgAGJIxGlWH{+ zzQ((0>Gn(hkIaN$>H98zlN>~Al;>$3|6tFjL6WV@NB3w6;rbs}8(tU_pL$e*(5>d{ z1y!%GQ9CLuf`_~n{;&AKaW&<=t~bWAw}nEiYtbW|)!TufqHvrC^}$mqQs6~qYkMF! zkFojc8{Lvk(usLuV?`3_4ElY?B{1G8EB0KHWFKMNOe1f(pxdL8+K#Y_jo|fROS2DU{kT}neqSfB)6(p zvVElN$;1l0hu_qSr8;5DLvwT`P)WR)^_ZHf^mDE5B#Y7dx5e`C-YyfcMgwuRef$Psh-p;+2Jb!T#c#vEn6H7?VXdYGIDg)-i>gm!m~j#P{>N_{V`Ayj>tb_MML?MG zN@Yt-YK?Trb1+Mwe~UzIg^$?V)ozi3UE)IIyyFz45&xQ!nk#zP3Se`Y{j>EbDe=0>&h6oC zLt~3!9WxOCV(hDLJb#l0`RjohJWfa)QVlkQyS+7>_zafbT9AruARNAKWvBxvPKbM; zFxP($pcR8lK%PP%$YO`V%Qv^w3&d7-E6m9tN!K?JHze07s%|jb(d-gt? zuWlblid956wB>Qj%>9EoZS2m@t>PmBL&KsQbP2h1)G1%bjeh;O(0n`ga7@^A21{=b zd+0VM|2t0_0Q<|wZ0;;}nqa-`v^na-NUQ%$W)18SPa993NndvwlO~iuwO!JBHG>Hw zaS6IyY%b`<4F{FYG@5l+BnSCf+1_oonF(!;3yWU>)UBy&4O$BnMsmVJb zQ*&PCQ*}(_Dwk9Mx#E29)o7@MtB+-~{q&%LWDm1EW%olT1-&Y0W4HhMkNv$Z8qj;P zNA-$m)E&^B2j;*~WATh|5|w4pBr=3&v{!3SjP8VX&M`=Q2B3q;f!v3-(lmrHVR46V z8ge>JeHIIR6wpHtN-rwPm)Mf~o4=K-0&!u|!&ze>z}6e%yghNqJ{$IH#?G*2xC1AzN9wGia6W!#pj$8ZYXZw^=HbU4_P_YX@X-HTdZA?r6aFTz= z9u=mxQ=}?I6y&~;NCO63DVivWz@j*4-kJhKMP@w{tpCFc-);e-T*)%#W$$(}bEGt| z_ZIu-Gd~E3Yq)J^Le><#H21I0wnB+VpvIFD{A`Hvd94P6fU;ev!BCxsmigOUFM~jM z&m7H!Qp02`<9ozG2^>#Bp}7+?@kkK>4$gRyn~W`g&Yo{OQEVVfMt^2!fh)AgEdk*k zD8Ug|2|g)Dfo)Ht5xf6&l5sMN>*Ga0Ke4KM$c>N4gitxl-#*@J;s~8?^OLD%K4Lge zs>t|}_q2QNv>Mp|9+oV#<-3trC&N)*xR}dun>~0IO%ZYCw?Qp&boVD^=KorX>-3@z zQgb8h=52ctC@KaM0&ea`J)WzXe&ddapb4&MifOZ3u8N%Cw0$izyCoB#ux(ZhZ_7CB za7iGa>b+A1FiK{3zTG^HuP*OMUVaUAXqo0UYC?XxjCoURIc&*BZNMyslWbH(F5)^0M>3vefyN- z>1#!!oR(+S*npeLwX*ccuxzK!Aj27Z-!Sp%RaFCQ&qdpgn%u7qB)afP^uw{R1S;+7 zN-7+vCb!o1l&Kfz)f>bp8sX0D@2h5Fu zD%q{{@0@KDKpr1nW1j>I4sAWmM%Uwt5!&=G%@um8 zF3~%D@#<}fHs@@R)`unyxq1iR7VYF(Z`u=0GWSL}c2#CBONw{e1*H* zqtrk-SfjynV5n$Lviv*->|Blp_JfpV=A>hW2?_%Olf0pAn^=K4dRY5S&A@5Lz7=$C zM_X&fPK`A=yQUHxNo;N>8GMHO+!y&HXi`qEz0Usdu^NB?%he*lKLT|2%43EK8B^5! zcx=QbcjTkO^3FR!y4alL!@h@}uC{dvz%5&+w1F0()PnvVhRi;Mq;2NHSyoX=y415^ zC$s;hLRG8FB2fWkU{TAIJ$LPs)(MRxe+X3B9TN04^hassR6ja1AXHAcu^r}!5sS8X zKvjGiO^MjF$ol#rimuTAz7fFi5U*UC0`Fd;YndVu7gzwCM+?Z2h#=kERCnvEzTmh# z?P<-dy3RJT&I0>K^v5Z!RG)@VXTUE`e1MgL`~SR{7N$gYqP3wz=j!8>j*+y|0qTY_ zmkOf&Sh#gcN@Kgq6abE-11RTSDO=)ojxD`Vu-&7J(`$zgAO~DafOE`FVB?GxDk1FP z!jr_5y?o-RTor&p>xaYcbTd2GghPdsYUsEGra0Y|b zO991Wf@56?kSFC3-(x=dXh|Vdk&tgfiosh| zonGgEz-_>Gm#0CleQ?d1sp?M`eKwmQhVXPRT@`)%2>_!p3V?H|g=|mob3&>#s=<#$ zx@1q$s(J+w(D)WNkh$vws$QMrnvo|G0q|0^K3uR~L+*z6-tlZxn~U4eP(nNok#bj< zJKvl~Xb#coZdyqP{Tudi{atnmjsUOY8LiOO%(d>#VBBaN$~jaEmJI*rpljpN5>=zw zHJ7w>-ZtL4!&NWdN)g7&RYQ!$ktUo@(|@*vlrHoXa~xM_ucDznPl7m=NeA^|bpvHJ z%|%J7;@HJ;X(+U~263(J&t{S;1fD$;qwo6+@5jzpZyP9fK`?}zf3{MB9!Z}jj0FQwjA#YH8Ji@k03cvT^Zg}y6t{Uk z1>{C`BhAUYH9WLPR(Ly_`mY&YttO$fW-qO>>kFY~PUhfS z(vsuLbz%DB42!HN)guA7@-&edOG!=)?(eJ6?EpD-0R^WDr z)6X|%NiVyn?R@t~?nKjaxZCV)d(N!Djl0n@`y-*PXyj_epAdreZ&f*UNpEnzhp~61 z3dLb`?Bq~a<|5GUH^cvA`0%Xf*`q2MmWj*Wv}jC|S0C%qx`%Pa711nA8Ngtr~m$M2p0c+-zTwadt^Nq+AF_2nGPLE6I*m0^( z3sZGtSixvYWchQ?Epqj_hFgp9#h@njbFnfnB|29K+uH8o!cxNl)VnU^M8 z-b()uoCe%Ya0>Vz_aJ#KheXU}&Ti=AnS%rvf?0$AV+!B^-*W*)m5QHqD8lMYcz6F{q81L)Fr`jMFp`F-cOx)>Mx4d=cM+AIE$qrRIZ?|NZ0$a^BgM{e&| z@ad+TA=X-v5>0Ps=M$V1E3D`NLDPeukHX@bs0>n~LjRLsQuRxuD&=9jSpv=xp8lt!W4=5@sIMmZx_IgmR#Q~eSY+_ z+$Y&^=B@p&n2z`;!7


cqnOQae#m2E*#l=%xO-Mp&}R2XBi-_e+GU@;RBQ9P$h5k!RK^(c>%}mz{3BxzOpN$ugc&Yio zeCmUsx_(f9nx%oI&ZVwJ87t~rVg@C0a4AWNYT$GuD8BspF>K)r6&KMrdR60TkewcZ{a+&M1p-p;&~0qJtTCe$7auxOJrTb3jKEi;W!SrS z0{m1pt(am;<}H#AZWuKjUPHJdD04Cn6WUlhh#yx3eNZkty>7v+hFU8t$Y53(07~})v>;AN42~evZrd!#& zg?FfOQEV#FdTOe-%MyY&cug(0$~seGc*0)NJpct%Q&HEunl zJ%1A5 z4yttBW(fQX29;a>KEHo!{;BaVxkyaUVK1kK+`|4xngJnMk!$WGOTJHiCzRb@0MKYC zy{KbaM}Gsje=(R4ZR65Ss+sx2tRX1le#T1Pk5;~{L1^DCh1o4Vv1Wz7hst3ozt-*a z*sHztI(YH&=!>F5-Bp82xRz9xi-&fP!;s%NkDmI#-%@Vkdo>72RsOuVK>S?X_xV|) z^Si!$v=wbVL^RxU68J%LbKA9a!VOE&zN;R$1_0ke@&TQJurlgo>J9PDN5&Q%Ya?E> z$p5B;T9-zfEaTQ%w4-t*zZ0A_KdsHH+|)W(kj1WfyRA}ytgLTJp~Zh)y5lolDGMDj z^v^Ptv6xJ55)3sC)$Q~@ghmt!0{1V6_+p{PozdAVM=9DVoZh-84wNi0b-I$HUf)g~8^R9B(8xuoUjiwcQS%es{ zU$~)f69{*02$rVGo`PeNG8|Z^DS%S%k(vdqK}37W=L(LA6u5WJq3>7lXi#IL0F0}A z2APPH_NiXhd+LKz(}=3qC#}PJY6RBcWSj|J^#q*)S>gkx=2%miT*m_1w+`W5bMQ6; z07JCg>L~OKtY>kj_h6nEK#8-zESj_@v#Bg<6_WUy9p0rsZk6j}iigr4N&H$pI<8_) zc}jGJ-=@uDh%sw6QhvckGOr17CzPCZ0=lC;BzE0u(v5pRt7f*>b@b-B&z>*UdEjq0 zf}QVzzu3X1H;JjMiYvm}b*hJeowz_%HRzL7o$zS>11q*i}>NS#%fB$4JhbCiS~ntT*-~3RuQ*F1WCC zKEljT1Ue*;7N@l5gpZnPYYe};VeFtbq*BwOf*;jUgq`+C`zQ=q4Oy4N|LeK=TpiRk zi#(-#VJl7qUVcke`P>mV5>B@3!p>z4pA~Q1+sr2mU9-k<~g>!rIy-F5{7WF3nBW5aEF*{1krpLbcoR0iGl5F?Mhep=G1I-tJ9yT zQe53FC$-*OO9L|>fdk?V=4-O7ovrGu@jB`e5`V|^o8ya|oU;dXd@Ao+oPoGt>#Xqq zvek0P(zg0?5ZkVY3Hep{4L(rV>ffSkR{m+-%A>Z~uPYt`Euir~H6FvRLw1^1gV38w zd-UKTW4T%fjZ(wW;`?5{>dvZcHxS(U$<}-8-Lylmj=ZZ{^0B!}i^he6rGG>=r0LOh zy{Fi6Nt{MtU~Ru!dQBnrbkXYbQLYl}7DA{~{7cQGy0Odmf9>^JEK0LJO}ce>A>G1r zzQWl5S^Mkgu9^Xf2ALYV@iSU&wDgfUMA4dh#ewRIN>T32N+A|(8aMeL>G!$Ol@i8P z$qj0L8Tm@1*IxENFFvp*stes;XS&@;mN#;a+I;1zlX_j(-}u+bI~=XwmZO;aziNy; z99)O6zAqlLbnZTgLKNpfT8ro3d6n39)~_g1{``A9Bi~w7*`0Zi(m4K~=|-X52U9kW zVKonWQ!;i@rcl*1M}KkQaX0i@A*Ti*(u{uwzcs@RWG0Y4rYH;BtLzm)&P#ZC{zDnp z`ppbn%6h_1DOVyr-hTz1&|9IUbXw7U?5jQv2E{mZ&53sS)Z1WQ4V5eH^#&J{0zWg* zmaC#97hVZ>;!R{!#S#-)Q*ZEH?Goi$L!HYF>6xy$2(0(vzH{kGiZob#wd=78^~L~l zzW4Y0TI-Q0=VS0xo?2ZZ@~YX!vsxuXWHmzTe(gA;SFU-R!(R}W##L89=)-m%G=`DI-a z!k8ENj+5}}GX48P0->cGqnM$J{eP!V4bo{O{r26M4Zj})d5k`V<9hH%nQkimTD(K~ z*I5H#AWGmulI*A@uk6hzz~*?b zOab@*H~*eqcCL71^6y8OVWsDYVo)SVQIbbBpHcH&wcTyv1wZ&nP@mK>qBpCEy7wLO z-Gja4^ImNCNou*U-|&y-k6v$1YW%x|=UFNa@ziR`~Bpg-Wcq|*;(+%iou{P~==Z!*_$ctXEXC#m6ENBm93hCIUOJA*+|Hkkxl9f`J};>Fi_&Kz_5Ap=BW}Kla^* zWY6_5Eh*Z^5#z3m-Q`IEf#1G%B zSj{}Wf*gf6_sy{kbxC`{&|Wp30Ap)6f@TK7g$a;5&WO6A5nYeOKUR@8SdzsX@tRmK z+1Um4g1A_5Q|q9U2;ytvN-0@>FM>1`ZMVG3xd__4;ss9an|AFVN3>Yl2q#;w;5r5U z{tFwPC^$R{5VGY)Wzu*q7>4P1QjHFAoJ5 zZMRpZ?oLUBN^-Hw=38jPO+)GB8Yw5jUZpAaN6tCmMkQAzA^Dtb(KTFFH502#0tLTj zi`8nqW?UZbM_G+78hkKydR0Oir@vpT=`_yOoxk5AprS43GM?Y49&br~eUOK65Fm_A zQ2_5Iu6Lc)xWxU+mcJC~a+99!weCKrX8_p0baa;ThPR=@H-cG)JhhxI;nWwb<76ty zrQ>AX!Q&g0k~p(sJsj3*M@JyK9Wl!pK4V9Q_cUmQp~}GhkHm{-89!#89RH%tx;4*C zqy{eqOtppf@94}gfFPmV&)`@ebL;?aCo90~*r-Vz7R#m>I?apoK77}(?qUt7t1G{X z?+!rz7My|%==X;2pMk`QO(26_;lzZPT5^F$!q&zNnJPR*0+n#f4t*<7iP(7SA%DKs z6y!c_bb3hWBa(E_YgFe}e={VPjtQ||wolsEk0zV$f|6jj*Wd3Q2Y-9rbrDGXfR|6= zKZ$v(wf)YGDS_zsD8b?=eA%jnXC($rvu>>O$f>({4$8p+4DYWl%@7GifO0v$^`ZY+ zfNEF6;`>$%xDV=dSVVaS;oRl%9^Sct6U^7@S6nup_hW8m=}A)(NSLJNX-`JJI^*$_U~6&`~L;`sQIaVIjE_7v6SIoA!lKVd@M^2^xQYUzKRpE;NW@<}oFMd{$X zDl}(f#^J*ok-}8+FC*<#RK>(x&&Lr#|FvS{SjnFjY$+RwsQ3V#eW?^SntBB@YV0I&fC1!P9tXj8P9npAZ6GFUkBZ1G}YMgSJf7bdA@TysBBL+bVx$5=pZz z9apvkQ|hI+O5(RZ4>WPGrucHO;u*IhdUJyJo=hl3hpM+>gqirM4AKkgMu(Q74$e{% zm4j7`JYaj_hrqq95c?Uw*q=1CbD!e%gd@zp^o!RlnbuK&u*}{rJSHjj11+PI@{eTER=Di2nv5(Tc!L#o22h?!n&1MElN#0!~{O&g(?&^)A#q*UP(kf$^!>%B(KL5}sd|wEX>I~ST}*^ADE5VXoL5ny+l&c782i&VQX06`a#{K-yr$7rI`$q!>SEA)`}eau@#eP)pM3J8<4%I_Cv+r@1p=LxmS( zY@Jvrna^q7S}#u0^4M0f%squ&CW}1ld6O=IR+%L3AU=uK-+bV)@+DuO_@b)Dv{&)d zrEJs^=sE@Msa|rd2$?;Wd7h5{x^v)U+&#+YMIR?$4*dLdX^c|Syau)35pEq73`r#J zy5WIyF~55)i>a7I@5?H89G*Tovp?-Ow_Q_1@G&$oKOC-i)jb?iTO7p96=HThO>}Go zGvlkJLY~DQYu|$84V&m@*%SEBnWPX-`00a@xPavwCuR_-LF?8bA_gEx06BxR6*D4b z{3swTHFU{Db=L%!u;oy6*-0pMKPG#xtqB?N6%XuxvD@T16G)<8T}li(#g{3CUi+Szb|CfK)~nQtG(X<$KiDGA>*-a3g7W}vEwOW zOiyR+uK$%n`r;=y#_os%GW=2$t!I9u3sL496KlYxfa4+^Oj3d7H+ae+eR&D`h4@$?8`z1Dk}_Ldcq)IuN{Qi#LmWFlkol$C8SfBSUniBpO9l|e7|B8{re%6;qYPO z?pTOs(Z+Xsijq<1!Ck_&iXS$#b3Zrx5Dw@|tRDX{TMr-kSkh|oKPl^Yulz~#%Rq98O6v@9>Q+)U4L<(0tRys$g^9xke z@}Ns?JPE~bnkg#X@AGbvQrPL`E_Hm65*wJmbCxCBwehuQpqD&_PH@Qtu%b}Qv^9A8 zTDT&BYNe?qD>e?~YCd~TeaWcC6S2Kxy@LGy`)Iq<$J7u;`eglFiq*e!H5#4b1+8mn`3hqd6$}3 zjY>v8eID9IPZnFJs=m^?W>Zvl0OX;puVKzDzS$q902okiEX zK1})AlZ{5~jEhFR#qj1JN`}WnUt;GCg`1dUyiB_jK3tD)9w=ir4e2a$@A03{ZiH!M zpVa6iHz17fNx5seiOTC&r92xW(-xnNVaQb9;x{M-e;Ml^4%`kk=MP6~ot zw?!pf!5*_e^!T`29%YLXZ0oY57p(zd$7h6&%$GjpqR6XzD|J94D<`<)pM<_*>skULy~)fBJ~|q2hr5 z$KE?f$JxD&!m-gdjqS#m*bN)EO=Dv+@x-><*k)tfPGj4)ZJp`!ocBGycYW)u@1O6_ zZ)Vo4eQ#X%rM++L3w^S5V>Xa@`B&c~1o@e-%qR2JufU-u?visq!t?d`vyPf@_9*(j zvwBvrXK-7DDXm@WehU>Gn(V7p?lwujo_u-8Td~YPQ7h5Tz`P~9^&JG=?8V(49e8|x zyxjA0NsS2m700Od%#1q*KqkHJSn|0peEhi58fmQ?QwN!Zt1oeUFUjlUmHSEk1y|!Y zI89H!!bgrqL679x=8Mh@IBRXDM1F$p2J$2;ECN}I*Z!B_o@9ZZ@LT_p4z+Q^Uzo&2 z?y7v#XNF9R#>{g%<<5ZydIm-l4pQm)N( z@oGiJvDza^=TS-+oZ;5uKaiT7{REWB zcUIC`MlSFdmg}1iH5m)D?;T^cBAz}A05|e2=U3W)R~d}dcDbk41!r}7-L9thkaXPz zs4A@a^k|&FR!H5-^1foV=wTcnwi(ds_fhWMF>Y3#f7Ee%fLPZyn>!7O8@)4!e{?vZ z#LNnKFl0H#el1a-N9usUOTbE*kE=v4rAvqeY6jr+RvTS}B|`k@ZG&#yN0Z%<+99SD zI9+KdyQE8&-O1*rS<`mATXv3JqHiVYC9nnv_qjEY@ZDUQPF2hUPseguSR{r@?^1U}m_oXM=N#Of7{jBOarcH`_t582d5iJBY3zlcG8{A6j zAC6hwmFAUC_N4nd;-f76SGGfdJGJ@heac$O8z;YY-V0EV#Gz)t-RbT(M2t-{LL4sG zCd1~A&iX0QyHo*lcc?ebzBydyn}CU-5-AIG>%ul~+;fs7$kT5%o<$=(>PmzauhJuV zTP5?$)|B2>H9|boHn%NKb22A9CKoWZzoe}rdO9x%^Jvm>Ci$xGg<(~_dkE*QN?@(( zekm@eC%Sr8ogvggTW`jRms}u=$ulbMk=o~mcLjH~9NW_mVqMj|U>WjcL2Gn6E^!{r z`BSiy=vYP=)+GpM7V^r>E#$SLxboX4%F$tUK6ALFK#UHSChb`>3+fc(PVu=UsyM!wyd+C<~%x{fG#O~ z1ZN5Arcx;EQ_8%v0>)6|ZFnqsGl=Px2L8eyG8YZT=Y8s3rZ+JrzPr-YRgs;nW3|CI zS*<2l%4}me^09Thpz@=(BWdPQo&>>!giko+Y#BqAFpssa_$>u^H=hf`c2=B0AE2d@ zV)~icq)ML*{$282iHl^W4Vqr-vAeI*a=(Aidk=%5cTNVYDj%$@x1B>aMOBK?IV1UY zN1g7R)I>2JIUd<_v3Hpp(<$0hhHT!+9Gd!_J_s@@I03%H5 z=E+~|0Pfpj58Q!#8v%Dej}b^;G2NUJ&zYsY%$_&q?<-M5Ti{r^D z+fAtpsn*6Wlf{!2>awV8bEw$boaA(|W%1TG4g4q8+FUKu+1gZ>^oN1wq04HVN5ikZ zZdv0mCeoUw%P#30y{B6?E{@W>Ax}k9IF)3hGq^HBR#~tWzpvdaM%yqLPajFuj_vyP z+5;}EJ6)DGU-KhOmCmh(1g;4AaT(iKB=U|{WbLm@LP4AtA4x95Nj%28Nc(Wf`vOPr zj4x=NQ00${AqJ6ochj7uYV*|E%}>h_fO+%~9^}VgiKNKw$pB6F`g|sfmCr?*SOWZo zt?6su6w%DMYj?Caex6x;X-s!|&%aG1IrgG5T90oEI@ZonD1Z+aN;eZGZpG+Iu zGiriMq5S0g)wuWsXMnQtRdfpQOwjF z>+nGPQ?efSh&`VqJ1Ml3yG|3H4T2LJIDqx&R^J}N0pZHR@XPVUO36CjH8>4ErLXI) z?Js(R4;A-ne|uIe9v{+Lzal*s)!x)+{r1Ow15BnnuQ^P*HFFav3^%4IlM*v|m(2O%FL7XKGIGx&>lz<-UqogHc9fW<%wz?}8muTThW*O3DR& zB)AT{>pP=g+O z`sIv}oTK1VCNUa=b<0571kHFz?s>micrKl5gnO!E*SSj{oXlI%2*WrS3YBa#hVac7 zm)8x~-idu9eQn`<(cMLU3cdRI%`?BZY$oH6ahDF&oxNy!Ml5KOVb+TD22OIVvX6f< zq3&BoLTmlFFX0+d`c?SIiQ6T#d3y00*y&AZJbZW~xd&{d7X(&YzSX$vE7GOUkVvkT5+s)B`3beJN7|GRSyYIjBz^rsd|4^HjPDi`v|*H zy|_yd1SffhUl9-1xJTe;Z$n4re~#@T(bsi^S2_8mgmc%7$#~3p({r(LJ0$QpPXh7L z)C=O(Ojks*9BsG5F+UMKfK{6%5CFCtc5il%2R$-QciyG2)9hc~0O)E8(7QcQ+xosO zVLV~HG_X^kZ@bXVplhaQxqLcFm~8INUYh)R>DJk*GI$}f?cZy7O$6;yYL4~r`=V0L zTzF%=;k|h^t+TSugkm_>dzSu-ej>Lc4Ldo4p`Dgc$MX-3rEI8SM`jCT8>)EQ?0nuY zRg655GsoJ*hN_P<^8vj|v9EHtkoUi_m-0h50x_;(Q)GztFQ#7m%7+O#!rR0iM-9eC zjDLL8=jgGX3UzaV|gY2&PqDhbQb zRnv8G-BD4^jXw*5B?Ar@fl$KZ#*nY@lQ07lF!^@75oE)SkwKt~)HFj%=J-?LST-qL zq9|1)qnmPjyp7W#ZjC0O*s7yQvvpMw{=QRr`mKBgaA9UVA z%<10x&qG(AQeWPCEEkWxMc0+*hpkG9&fabF9u@0W81kY&hdL< z+hVt19922=bkTm^JJpzvcGvU{y<$IA^arv zqB)P|kW@Cf4d73=Y-=CLx(G0MxIQV(F2maSBDzV>^*0R*3N-5LN2JE_rq))dM;0b9 zSrD0Y_WtRc;rE&!=t!-uaH{iHF({)Qe707IwxpO%ofD+m!Nk!yA9WdS<7|(k$ZMu+ z=*NUuo~O>H)$k0FqcfcfoXNac$u7n>oxnNO`&G_mRUWoYSaj8L`is`&x` zRGxjYyf8zBKyd^n#_{hu&uPrD6YM}fkGXkM-NR{JmBwtL;K%Uv;pCmp%ehM=TO*BzG=kZ#W<|~-@{^{jvSKK_1D~JFfklOs! z1F5&$wZCReW+l6WRkh!2@j92-qrPVskMP9=E$p@lydkY)IJiXZBcU*c>bV=OR(hGt zOXVYV_rcs&#k#n);2HzIyq6#==^-Pg%_mLzrvpIg@L~23RVSgPA+i%~t-gn*Ovj;6 zYLsglzsaHc^5>zaY|4`#DkC|bh^EUW(C%qT{$8K0MZinWnZgmm8F9v*lM$CqQ@(xQ zlO{7g!GQr0HQ$oN@V5+0tLiS6BBKcQ#;Z|l->O<>a(0^9BhSKNN%JW^sxnNApG3y6 zxdJ?Qcq^IX(6yW0gnc5K+B&QT-E<#+w1mo9HtTnxr>1`^XoY$i9|c$j&2CGPbekOt zXSfZcGFw*%C5okKZs#0QTKvYx&$umgKSf@}H^0<%fmfK37_W?coXv4Gld{dNKS4ti zVt4FWh!UD{5@jy-%+i`eF`Tv2s+CukY8LJnEccktp!RPS22tvYC@=~~y}{3<$N z=eies>6V)?^(0HVzG~QKQwq{JTpZk$edRJ$^lBVaM9?KH{XOX>B;7D4bG~`-e&E65 ziR9*7b|@V?b&RS3Bv~_2_p3YR>6R4Y-%YWrz9zU5wU@870)T8xa0tcTfj+n^K!U|K ztoUB(3>ezY<(?5TvCe%LqW|_L*X31ShkvJ3c&xFR6~1!tO5j5*(Y)DUap6=**Uo&; zKKAIVIVKVHR@SG5QL4U=Q7c@j`IE3XV=XU&H)fiLjXm7$h9BnwDMA^n4v^d)`|EJP zY3|wXP}jn*?U}##9kSmx|_j1U6a0vfU$oFzk_k+8}NrR<}PL$^(lk^zTOua_bW!y9*R-r1qN=7Ys z^q{f4hnMpiKkv0#zNoQlhbsifY1rP&RKSXErh4zu@h;6lK7{F~+xv5;f#kLL1s*iI>3tkgN)@F5(wet4f5JT@-k+mxxWaQ6k#Ix{qk zr^JSUd}&k{Gv8*=d&Mr@>8l!L(|jji7Sz;UnBeO5YBEYlzz4#m+F%B`q15+xK*iLG z^OOzfJ>+}Z^M{Tu@O7J_#{CCW97u2juPq1F(uWbASJFF_aYBOMzUADq{LXzX!p1fk zo}HUz`Mn?ojZ_JCgwuR8G?U0j>anpFCnf&tqDM3VMNL2+N(QG&tjiqa309}#KBczg z{q1x(rw2`#k3Br56BP$dPa6RhPnh|LbOwQ4iY)LLaR=A2J2_O$km=rt*!)uMh3S_5 z`B2R+&E#3-4%0cfa8&)dbz9vOFf|F{-bj)*G<-87q8qF3?M%YlAHO(qAv!I#B4zw~b{wUONs^iWE80eSW2nQ1l?AWmEq z2u#*?HNFM*@R6!1d6CYqJj$NErYW4E#OSLI@;K`#vR;=vPCa)HR6{{R=yXl$$5a>37H&H3Qx#thbq&)dDL`TsJWZ(J>a{Ld~sV3n$0Op*d=(4RE5IYJSIY_KmX3PUDFC@aoZg*VRI=^$V zG_VZtKZWpo;&NG9untG1Tw_MEYTNmq;*bT8_z<2W7_xRi4cV0*U9PEsBoL_SSqWLb ztqFJ$Nn30t#90HLY21tOGo8`q5b^7tLD`+z4|S>DJlqKG-ahh%@Ke$f1-v&OzoYiU!uEqK86zf zwbJ1MEBJQKKI(X5;eCZXdzCyMu<}QzzfgWGY|@W`a*$IGk}PRAGqiyiI*-f(1s$UCv%Wau7bI06Is z_wV89$S5M=Ot%lQk595^7UQ#1GiN$B>2)lN6TTl6*WI{!Waie1Rt{CQ)Y06nJsqd< zCLw6fHCfJSzkn{&UOZo(*2a>ks&san?Ogg|^bK0LY%wB_0*Rh%txDcKaF}_$I*C&4 zvTJKRmry*3roU}#F+E8K(hgGFuta6`w4)lNOC_m;2bToalD+Cbd$xBJ_q2l}OT(s7 z)#D%T%7#y(%rm<`3NOWuw%{Z_bw4jiw$Y_&A#Q6~u5u^c3`XfCJFrZQUGRGTeD(S{ zaj17n>%z?1H$aqYQBF7f{PNxIWoOawmVq#L)mWXU=6+3>qi+C@x{P<&y_|0`T{%2q zVmqZE=I3LE+U#C#g8p~mZ5M^ro#d-A&Yh(D#!Q#dFBVFhdqKO6N{3l3ZfsuQ?q$g< zd~;XP7o+4*|La{F#xV(I%WeEGfdkJ}TXK1+)kaz_dC|64$(LM)ZRPqd!?T-rUzwRa zaoFaj+;2IWDJiT1a7ee>XE#Cc@*xqRt9iYRW9G!t{406jVBG*9uH`9ek7+@;k)kz} zc23Mrs4>qOasm>jnOMgny0GKs?@X_61iv7p2*kTR*(zx*oTk*=r;#$)m7N>f%|%$O8p{r66py>PsSm)17m6* z&bV`1iv5QnJN8qx_u2y=nO>WB3pJjds*IX}DZn+xNy*i_{$^O0HL@G!({_CB5Xb7r z!L!Bw>bfDLLBX%3k>BFzTBc(&QX_Im@=Y!PG)H5~qBOQGL(Q%UIPFiG6qnIYF6wO$ zWw~-8Yk&d4Hm#>^=hB%?C#|V~H_pX=UhZsdcOk3kO*_1)sFa$htDw}Q?W9l2f1+Nx zE`R>?)Vpbt*`^+2oeF4o(UG6o+=H1VaS2~EJ;db-Z#RezYFQhb*?hZ`sMDO47|jTy zkV}`?Ayx|fWcQP<)uk-P$yn9&0ucB-ie2oN-Lv^tl1W2=vT@|^9`0$|6$aN{y+wz8CPATjZZ5i#sJoe@H3OdmIVvGu?Tgek5XR4*~ z3^v_1r@T=NXL?BTe~|0kMdcbz)TwNSam4V{3^{Tsjx2Av(}G~hd@Bg$l0fdIsFLos z)2N%CJJQaQWPZuLCg1O-Om~N^@$9wePI4uGyYSmTsP=yEK|e;f6-RgK!;{)+z{nb* z;xfa~P29|qfRwaLqF1{}w0RY6U_#0>%7@L_h-fJTB7825#>p{#8N=DLKWk#~eDr5A zzvQg0(lg}D7JF1M5B_@b8C3L*v ze6s2^ z?bi&dQiLW)3bIG(PdUXUf+9<0=ByxMCCfn4W6A|1#p8V{c^!AW%nrVy)ML8W^|mhH zPlG-cvKAAbAeJQFcY)f~hu>BpMM#HIyMK}7Q3s1u!{NduAmJeYg5N{CcY13x?vJ~w zSm*RHK}-W(L+{-o)Qorwz|tJi7C_SU8olKG43eu!)_ZAEwuW>50hnD(2)(_!AFuy- z?al6?Nx!XzZVRRUHL?6t|F;Wo-i2}eRYw}(SwxV38xLAqW@hon!LKODm1R&Oq_GiM zXP>Qpjd>%eHB5|ctFvmN3uc}XI7ueR$ajs_ZekgzZ1_h8Cp0 z^trV% z*3IElKq2r6NQr4-7X!YLth6w!H1})a<{vHnE(*{H41*%ReKJH^7V{!FP|1oIK-Kd^ zgcAJrS?b3KD|SIKimkH#%GWG3>_Js>FL--hXhD^5B>qsRxSNY=Nf&n#1eZ_aRsl1x zmvt3&Wp(eW=3w~XcWu_cRh+@ZOh8Y=YWh%jpy|<75Ie)~!<0cA!^U;EuG4Q|z)Xoh z%0%JXal`V8WSyHsi*^W5rmm7LGj*{@ZR2ws4!j(TAdDlFz|z2kQ7DKcntPM1qm!ZH zy|ehZ5hKwytj(}&F7BbOvn2kS67Ytyk|;u2e&~w!`$qd(@jSS(Qjq|k|42&8>*gX z6X#0X0mJ0+2)BFFD39lOP*3*Q%Y!2#awSP`@W$xp8Qv%zB+@RJo4lPZFy0;zhg%Wo zM8J=V;;k?qnY2p8ukDDp8Gemgp%DgbTx2XLPxu7zd}KtU=hxDPZQqz-uUw&SUp`)D zp?9!!wrdP$0ef3`TO4&+!|WQ%T5xn_?^E9>4PW!;x+@>0dWkyrf`TMc+q*s2NgHw3 zpS%x4%HMvMzF4GfAMr38<=i@{H@`(4aV4nk?Ul^nYUaN!3QkJ>F5jV?z3}Q!tiS`M zJa|!)@q22LSiF8`{dQ;RA5Bn1ehcz1!wI=3MfEZUx#cDJr-boF z0&ehJsyyIHLzY4>?_W)8@en<_jJ9B&A9Sz}$L=gsB$`N=gcO{RSNK^btpK-F?&bBe ze}FC7=x1Xe>*n0m8tOxwizRdlvn~3A5G3%-n@gr#zhOouuz#z`lIjn>QOY;D!jHN& zr?80l6jG^5C^U81dZ{&`_=~RGk3v4;y{hTQlcV>q2BYg%G*d5uEzT>B$P4|ohACed zmWG}Y-vzr^1d8^XoRy6JIPevS@1a}MTWfZN?^*7|1$So zFb^1Fqh(AFj$q}+2Y%;TWx?Ap^I^+CABx?%h$VNUUW>gW_|3?`5Hq6NC*cX3OOvrrI!}?N(B@!$NjcHj!+K8KE)BZ1`|;-bb#OmbL4*0#!?v5 zx=GU=P%QOh4vW_HG>cS?gBZl%v52^CU^=oj*VorkIhtbk`3XKmTW6~scc zcI|D9D(J;F@Z7WE* zs($4GJfYn8d}LfPQcTmkC`hFNcPZoG>iZ=aK2Zu(9F|{oby`B@rl+Y337oStqraxL z_y7Wit`0Lbg>g!v*fB$XF*Nb;GAwj-%=C=sdrvJ`y?bF-+q*^}U=v_cTR}?WQ0*x( z)`)4qxV8X=8pxqJR%UL#KWTSp(6pj^=H%?~^n8_o=&*Tt|EvK1gqQZo;9%BUVKU`9 zbhpm)L*cK(IuV1|hbE2v`&P^kx~CUh`|+ap7h{%Zj<#5Ln+W)^6p3;{5LP^P^I) z_ZZ$TwEFVA;z`1Ht8d5XQ&0L~B&eHqm4{rcP1j!((HLJ{BMJR;`os_d6|R&0kf>tn z?7NMBh(fY-NlQ|3OWU*DzjpLX=?Uwc(jDXT@b{A1yTnt%BDk6pQ?u1x!dOF&IEAVH z?1XS#`Ofk<@J_(YN$ggJ#m>>`?EDZhvnlT@shjTyBe9ug!so99MziC}LrqjX%a&S% zd-ms}Kd)=tZkS}7(N@gQ;vUbA9QSWgh4zW}NxuwWp?q`v)1(&Hyr>Q!Y-(8%9CA@| zbD0v+ZAI6e(orS)H|2lJD+NX868U zl0>Y|6V4D9HN9OM*eoZ0ghZ9?B#c0QxNsT}HJ~z_|0c8`o$P zF{$XvF)O7@OPGZ#zPEbkZ~mfr)_`QK1%xd<{5kbk?~BTJ>~|GW*^;P)D$E~YU@SkP zbnmvpcj2;MJj~-A;s;0Ou8-FDJRn)?L?<gq*A)uhVZZKs(w2>wS)rDY;!mJ?0&y zretM!pYFje%l&ZV6LxM{MkwO6-}UI5JkR3-5%1RyAZ7!viHfEMdCV3@h67swgW<5l zLJOf;CE;z%g7W;b5!7nT&{_E9P0Mq~s?pijN>?FtaY5rVpR9Vr8;eCh`sz<4S+nOH z;{4y|UR}}GUSzFBGMlccze5&&9J5Eh|Cm@B;eOxh6?Nj;zrS#-(Dh>6K(tfW?!m`3@ zhQ#6B=E}mNqj;8#b_v&_F4TslRBJ`+MjOf%FnxFfh%qTn-beYXcgrnY5^14JjA_}g zIRX7^*9*si)Ib$<&$%5QJobezg>{EEmmZra1$!O*GeB;{i|wDX zP-TIaSQldG48zz+BN>wFsmkdo%tDQZJE)b(45AA>wmOl};BVb&s=Xm?w%?Wv9bpFU zu~3SDERkC{kw$>fcb^Q|mRJr}mvIGFFu2|hC!kV(uV(b$`hZ*0k~mLi=GH4OZso>$ zm+W+0@sI0Eg8I<8yS9dkH*8*t7_xz=LcuA0#98dw}U4SQsq8PA5#8PAs6Xt+U^ zyMawaYnB})g*8!uKV@KQJ}2IEm0%f{vVxES6vG7iI`qRyU8&^52VEryO3(oDe4=l# zvkOn^gcp*XRR{pLVB}QkJL@ReY&3$?Cf|?){POhdq;rwbleG(j#hP3c--Y! zyC3v*7>3RL8xwme*1o~6G{<(7oyh1N8BeTGP(gL#Lab9v50UrIqMF})%`_FcsoTf)p%H9!vC$OHb&~2-Rdw_|tUruT%RDKq z0Bh7VSbFbPte>R+_Wz#E-BWiKjsWB0ikPBazb$ctV*FsH^KrK07kpEnF5wsVQiu^o z!bi^iT=WxHb+M9FB9S*nI=85aOKr+MJFf*${%SleP$=cl>*D_L~F+W3k zp5s>yQ43;gJ{m6m)Z#x=&s8-YrYJgMp!+KiQ_>nV4~uY!L`I|d)m(uu%14}%&djI$|$&_nm>ygHR!a8nz0H-H_y=aGvOAVtzFK1Nf!B_+V%65&tyiX zU`L~1hNfT(qd=E*`VQJ;qdv1XXkcsmlM9N`t3dyz>iF!{ct%Dvxmni08|dMAs@+1D zn81*Mv}qNGFq!Rm;gXk#(!VQDwDDsNf&F4t?7JhIb;Ip9)Ve|>U$TFG?)nD*Rs6T& z|NsC0gahuMKVIUI$Jdv(Q_xFO-Ycyo>LExweBb~Yv zYM=}`RuO~OV^lO_>MjwunK4VhCuFDYbz^!8J=7h!H6=zmiB(q_X-I%9zU)7$f=vxH z{geGk+Atyc1d+V_Jc zm&&kR=Px~UAbf*d&pp(m_Zc&b$4GNGNS2UDaSbR^26<;TgviBz5sAEg(T|c+UMy>L;FA7(Qo9z_dTO1I;i^WXz;s}2p<(5B7yrq)RX8`qnQ%irWSYnc|( z)lJt-$4p$9X{2w;IHiTUR!x?FapRM3q)5xl&ChM-G|0atst=p?_niyWnwjZbubtx) zBd1A;WkvCB6K`HFqM-{3muggueHEEMX<7){#U^8bN=TIC)IfTU`? z*+FY-EC5fe!{72Ghyjez+mggyCfYv9`}B2oqE?&yqOLPNUkLO2_GsBF$!CWp$T2?% z*rj zO`#Wa>#&Y0F{2@;!DAKysr1`$6~l-t5i@33+^Fv2su~;fhWw(>mrGN@w*?tDhWtuP zk{gKrk-|?2VDK>8i8a{iXu3OXK5LC=dwlG40Bcp=4me@H9{+Tp)lezrcez|~N@%HI zQyZ8+`#^Fi7mp(@h!qKG+*=i z$Sp-RM3~TyBX*7VaCV(7irl<@$Ww4yEYJ9xsreNbSNnAy#cL5FiFDhI5xBm$Pc?Y# zNbx9gw{0>dlOO6wQx+i%d48x9J=CHGqg5r!b#05})cR5>M-R4ax7dTEU8P-4jqCZ{ z>{J$aCmEe}&6w6wQ?+V&4My(nB(8`b9#%!cx;3mTNk7!pzq8u}dKl<(wEAxE&|#~q z1CDWklDa>nx#8dpTNag1;D8&pwpHYD+LR6fvZyp{v~yTA47&xp7fGamAzIu;_Xqg6 zaM3&#ExFm@>%vjG9`Xu$=_Il;Q!61sY`pJwpz-W%1H!4C$T{2R7f31##I>xnh<5(- z{v*G3_oIhy{Ju#?OSJ}Lg@#;*iD<8v^ z3Q+9$6UM*ns0)`@U0&uDncBq$(WmSxq_KlZwnc{YZ+NUud>+_uY^>?2@JbK{X`ep9 z(F_0ZG&y;&Cw|a1>GCZ{M*&(H+1c9y^)3G?f(^{jQFwSb$ymw$DGCU%e6}+LTG^Aa zu>!bQK0AU`O^xhL$T)b|Sj6KOv2${=NLuKF?8pG@ERtX= zdr?uavnCl68z&Fh-$pVvb}rt3z-j-}EU9m4YT@!p-qg?*YzH>BCsWslfTjDl&C~+O zPR7H-1;OV#**{eZ`j$Wzb$JyDl^+cMJ?5Vw|1>K>Xt6gmVNn3vTIyT;Q>FSZk{qn8 zEYkM+7N&-utw0t)GFBFOedm9vVFR$Sv&fs;*_m4XZ~C}+xmlF#ftD&{5Ym3QSOfoo z^p{3kQ)_#$EsNU!CY_UmRY>SRS;z4otP|C@1ODZ}{{>$$X>lbNJIGn2t&G8BJY1~* zQVFU40hW>$m)Eyukv4+x-qhZOMO>BaFHV1<{U0nKocSv$2xpWW4DA162^ssh%U_Jy z{}0|Qs+wc~O)_>~PHi%7NRf@5j03<)#s%OZMCMb9k$cC0KgMS&^Jz2F z8?Y5l`QxU5j#CZJ&JlwX%y1Kd^K7U950k6K#d=3^y-G9P;&-#2D?!oiq2)6a!TYh2 zQ88T$bsx0N5#(%16rdkuc_e%#UqbRz2b**}>zVUF~gmZeDh6mhV72u!F53&p?`E7QZ4y|jSW)G^Dj)u5kyhB{v{LA#tvzNEF=G506BuRasPK4fCGZdUv_>c zgMd?0G%y1i+Cv~p%kx0G{X0kq@?jCP1zZ0=@cf@V_}lxxR>J?gvU38sc>Yt{cLX(u zsG4oge9nZ2?K(ViCW%A!%V?m5Q=Q3$$*2%wRr!^Lymw~qz(A!;kB_{vN z5NW&T<5mVQ|I3b7n6{z-0O9&S{QW#5; zSJgSQh|-gE$M$%BRxV{D!`7F5(;+pTU|cf3)vG9@wa$OsNY-wW>=|u&qN(Oyx-n9f z;*gnGZ|y6cEXOnUjSDs2(5X<7^d2|iFi-|aX~0(?4S(Dla=;LvzJ|Hwbr*eSj(J1{ zpzr+BY*I@H&r-xf2VW-5&d_KQ5%fI-3;#X#Lx`O+CHq=GrQa9jp#ZdOhpM_f-%Ss~ z8ATz{lurgl-urf^OJ8_43Dl{or|&+Rs|V9$Toxc6EcYYgvy_=<*&Rp4$}{Ocd!D&g z1+g+Ap2{(WabuRLH}QlS1!II~hNZ8ISau0$b#^IEzIkIMgebv9LIj;H1V}0?J4fK8%iKxv^t-F$3Ffc}39^@vl^PW}l&X*6xKS z!Ey?mqP6~|L0Nh*F4zy#2e|7|Keim=@sv6ul~VHw?*#cewfl(1i`Akl;R@hm9LaRT z$S#YI-9+Q>vtgL`qzA5bRIE?m6MVZG&eV4o@HQ%j^36;^>>b#Vh?eQq;H}@~;x09^ zvRUSAXJ|E>vBJ*as+|5a)Pu7@XPXGQ zB-rL-av(pilp8pRiJ%GEZ=ul%)}(bvF4W>3M{!&?%wTv!S}NjQc0-zH7SX~`05!IZ z6m8rQF6Asb_rTK)T>Y2maqTxehLbxmuH>)9xyXr(A}NqmW^yUXdaaMGvxwsdM}&Jw zW^Ms8{&#M$7Kq=AGs+sRUL`(MA?N0=+57&Q{ z#tS{?Q!T)Vm>|-LZ^1CRz#GYm%lJ*m)+IpYD$Z>H7Z-8uAl!u}>941FfMdr+up#C) z5pL2#D9{z)Ez3zc4dm!D=b8$~8{5F?j0lC=#b4_eqjYy3Y<>@Gioo(V8w@*%CS+io zO~~f^3$Yssu>e(PJI+iBZ4c_GF^v?T+;^9stIIr44Aw|*1$qzThU5!zwdPeXY)d0{ zm>G#C=6FT_Y&Lbin`EQ!g{MhzEOYfQ;!w3reU&A8OpcCX7?aSg@s-|=#mGntJ#9AP zhgO!x&;F{#_g(NOa9Od)vO_u!Aa{1w@oYj=b0p<_PFXk=&QV$(twHu_sH#|GL(LC1 zlWDtX1lBV-Yr`(vByc?r2}P+xWlycL8)x!y%ah?n06o#>STj<|EW_BaroBX+OtjM9 z1hg*x3@VD`+kSfQWU0IJ=V$;e5s9CP(aP;7Kh2EWbiIQXl)=m1w@BqE@f%!YG~GAF zu`mj7)|iMyYDIL?iIc9)~U5bYe zX`K>3EGo4JQKau9IB0Bo&9|fN_oo$*- zn9v;cSyS6y4%?wr=(ofYSEW$1V4S%%njC~F7o7LFfdf4$X1@~2TyY|`Q-hmCvmn;u+-gFZzFCvC#d@2;;iEV(xhV2 zZq`FEFr#Ae_>Aw8iVr+SYe2jfobw2AAY}q)y4y1llYHbkwEYagW$pwtL-KJxk6QS8 znUb$0^U9R26SRsmkbnD46Dvl)Z0?FtQ)C#Dj~MuiBjfg`{0W6a zNPE$TCyN^=_EY1n&A2~;Y7WIn;l?}MU+KBfw+lwD{bN58&>tDX{c;`U%~(e!-SbBL zR`2j@?05By-q)TW4#oAVMvwFgF6RRdwTvs`E}b9N`x64jGbj!}(uS}z`mR&L0cjc; z(?d3UMoQ4nahG|Wwo;Ubt;(AI@@GtUa*wbd;EOTa5>zXQ#1KP+1*H{%K!I(psKJ7p zz`&-Hhdmy-suUy)$AA?qP318;W9x$New%oi;Mwp_Xzi*mV?VRnv@GRRYOz^5P`~bU zAn!cHU#|J)RhH;^l{;m>1ZBDh+tRvElP>?Xbe}-#A`jC;Ql6^5LhHxrPEkdrs?;cW ze^x2n6Do#QPWu(hEiC98s#`~Ja%!K9QRtVlm2^q*{L+17ImX&A+U^1YKNGM*SijY~ zwJVr+@|q1}P+1L==oOTUt&$$rx_TF|xp_mwA7&!VMTVO(>fC%W?TWD161zNU2}DUH z6J01a;8R&hY|5s~$ujuHn7~IDhdZPzFRu~ldzUja0I)MdhVQKHnzU@fC*D_!n^`RW zM86`*lKe|6U8%EADgZ4Wr1%gN1+CUkJ!9mo#e+bKW^Xi48*f$XYN}=ldPy5}937Wb z8v_RL(HsxFem(TJQ2u&M=t4Ed&jD)0CY9c=B|daR{qsU}V9Wn%9IYBC@Ewa{N!@7&=)Ug*O-&IAAhxTzQ?{m5QQpnuW8DI`y-#~ z;QX1Lz*JBuq}TNjost4s9L*<~Vlmi|+Nhn<((Or&{*QJSf00|9tg{%(X7tR8Qh>7` zU2SM})oyUz6_p+B;DUaJ)1n>-=-3am7i0LvfB-_dI&_{3+c@uEumV}7FBAYDwAu}a zpB9Ox+53r^*os%zCRhjHK*TYO=jMEpXZwjYVpQ(S9r9(F*xbj`sSmK6C5T+I-G}F3 zF}b6#l7VA`zBzHn1L%Y$=q9+Qjf8=cTd_bft&BQS{jKspB(dXd%}o=YR2v z7og_)i8;lbKc^YXiW=vM%*tm*Ifw}8|0!zCE)L_DxM(@tD@*2`I8|3thH~UvxRGd} z`~xXHR`k_qw!og(;5Mmz9&j0A0H?QoOH@sH)VamGf|(m!a2yF&8$4pvYHo(f^hNX( zkvcRwXdzSTVyT4Rg|{S+-B&`s)puP@aljg5?3MVC&crsK^y4lgZWmK1DK;uSn?2Rj z|6=bggCmK~B~dZ6G@=nRGjmHCF*7qWGcz+YGxLaX#LUdhEX@d>?6voL_g(M$?vH)( zB3u<+(NNLRUw8J2I{9Vh!5jj~5Iz(Ari>07w8^cYk4Tpl69tnq1_f5bU`WgtNfb7(y75_i{*xKm9sr}5RhEverQ&ch zsPrhEAQ1q)M_0NV4aV{L&E`jWO2B274be2JoM=wQ+T&&-4N(qfg=vXRE@7;UAlKGX zc5i(mhiB~2UitFfaCJ)pjic0K+)K`|)@95YIP*T+V}KHJevt*^Xb#aMT&P3^6}<&f zLy-JMsZ_9(b5IyTU{<+Y{)61*Az{B8~?E)lk`&CP*ofE;Y!Fz+YKPSR)MEu@5 zQB@0GL_n9oQ8%tA#;2vKw8_2;`m|cjV4XD@dl}FTI8%{vFs=C{)C7~nn`NWtmTZn@ z{@7hvq5?n_4*Daklx5^vO1fbwd4@{w=#Kdbc_0zUL(z&S!38@jd^BNleV?V>x3(sIu6SSPNJt7Sp1kXc-aY2c{h&t=cPz_(C@mO%5KgLs(;vm9S&X7^VZ*#h$H_!?rxCUdI9&lj@r9m&WxI1DX2 zTe01}ddTGaWw(BSE2)=_G>5m{u$QxFy+~$ao#mlh%ae_l3&BxYHgWc}<+OzGOjm~| zPbvhevPr_5z*$1sUX%S^9W~_X^19?g(}wXuKJk33py=Y4yshuYMghJ;`$GwX>N%upk#d$& zn$;0F`VIevcz@wSS~@6JO9u+O#()Pb!{|jpSBu?4b|zrU` z!fiqzzHVE#h0_gFTV5zN`u&R3l4fmQabB8}`3=<%KJ*9?n+%^oa5W6d`q`Z-IL<*ur0CG>j_c`notG}hyn>oR7hxB(oq-bRhb)KbKe zpLs^q|IMAh1DZ_+?{q?2e;3Vk_!n_BQSRMSmB^?H$;sHAA5`JSIrY*~1ZtO<>x?E! zm5G>dkt6nTwHt6TTyZZZr0CERDDo=9kCj^ST6GizrQ2kf-VnLYHwVio+SBS4ZhOu) z^f%5QA|~!4uXk?WNDZq8vd|^yKH7J&P6X!A%T_uLr-+jLuJ+a}8 zT%e#kOHj_Bic5HF9g9)^gtLKAfJxn&M3Q3n$Lo=~vKLRM%NqvE-7HI(`=w;Z`$AY2 z6lTFY8_y*geHfCxmy_UH&oag8sRc!9*Wr`oCJ|hSUmH(%?s=S@^4RTKtK>OoW5K@6 zh1@^)eA{I&o9Lf-RIma4o502>Ap|v*{*V^wiYmO2URQ$?N88uQG0SXXxjXOI9hGeM zfGqIp1}!d^5^EX0mp96byFg0TeBg+&`}W-uJum5JFjt#=G~0r-X!exUJtrm9GNxwK zlnh_$LTnKkDSHg~B1gLSu|_DjH1cG4CywVyH-umgeGu`H&7d7qVO{w8LSwX^(4&NY z&&xHWZ8)di@cl> z>@IuE!xxdBL{3O7J<_RD!0-D<#Pi^--le}5C(@L_@!Nc$)^DOkvL6#dO4XF)9wFO5 zxDA8~i*T>)ahKZ`b5hUqx>XvjX@M@ST59T>MCo8I7J%P$mL6g1>SEd%!BRiEWn99R zpf8A(g<=k(&b|#5oukP+<)NM63#&JyN&ld8*AX@y3J(e|d~zSbB^&W<5|f!i97`vh zD+FRE0+wehiH{Ua7KuZ}J@EPV@y@t0-F1FqdSk(*8W8G`RCzHAiqf9?5qL|#`*xkPU0tJZe4vjI_iI4bPCo&kN zKKrkewOZt#pfV*7qeciF>05Dj&_ReC+664-&E81ld(rc|77$olt%$c9khxGY*H}TK z9Sy^R%41!xT%iX+i>PlBxM&10{$2vYHaE{l$uvp6&yP_zD%?b~brq?hs*vkfxxT!C z#oT9=>Sn5+)ukZh$N{vQ z(p@e*xp2UXKqDun%n+eQzeN#D-oE?*xBm4ON3R&alzEN<^7wSPnCjh~+BSeUizV7a zR!P{6>ld`g{vfJdlm*GbY%3UlSVwM{Apw)&i$Fg+g|e4cl!w}WHb>MR_9F79@ojUQ z8+JTEY(PAe;aFKUgDdbdR2x8WTApf?y5{kIDl_bt&NS5t-eHOC? zG5k6FB!>LIz98ybr`=)2SZCtT~_Ixb9%9DnaIu(ES}HF2Dr zj5WVl+OJ*vzf;}f)_=6ScBX$MYA@#iz`X=Wy$nqgv??wLb^+h5 z9^%bLutvB(1FCKl8Tcvh6Pf;f`1g144>-u|AUyX$dID-~%*XpDkpBxB|K2tDS0Jw- zD)@KA3kxazt&#Ts#yb-yJ14!Ow7#Py0moneR{zlX`_~Zvx$?OKgd`y%E&>D$3p{S&+qN=8@VQ6G*Vrph?;ppV-;_Bw^5f~I45*ijBk&u{_oRXTB zo>5R(R9sS8R$kH2*woz8+V-=(e_(Lv*YL>b*xdZW;?nZU>e}w!{=wnV@yY4g?cM#u z+iqR1q=lG-^%(r{H+}+0|kTpOI^Squ3tA$WH4|-MhFyuJfyxo zDiM=E6q;asetjP_F|)$WHv@-R7<3YrUDDgXl=j!k{VFbkv3$w2IR7#m`kJZyAIPsb|4|h8pHKpS(;Bj{v$Fi- ztbS5^wSuG-s~a)P_2gV&Yz+enR9kzK5JHy(Zv-@mL~jp_8^irwOgTZK=RrAn>Q)LR zYO+ad?ZbPX|Ls>lf6wkN|5D_7uCLdhQ`#6zx+VYI&%38m-R%$LUmx#eHrv6zJ@B6& zbv^?&zHgiB>^*;S8rQc!9-ro=nVYMBkx|=dY)0i|MOymY|GD0&7%ZG_a+_K zsm;k<9+)@$5+&@8aQ-x3e$bOXja^o9ad^1eOIemqrnk~@tj?~2r_fxoovj(PUJ&DZ)P@|S$iY?uvqQM0z_wMII9=Zjp4@z5 z9{Fb(Gr$Zu^irW}XAW;sfP%?;M&$AP!;j|^B&lcJ5LVqTyGfK&Ly+iH;zdh~S>41< zQUbLRupbdhmgtm%CB)(d=&PW@-A5l;HyK_&PxI3x{b5dbK1}eW@R8)BAnLGOKaXO7 zKjdzEbi?^e>S&kwKHPExcp#nPiQ~@j!g>j4&Fw`&kVdC4Hr3TY*%;wA1|@r~)rpn@ zSMLff$;NF}<4(w=wsiv+$ebdR7~HkxP*7#7vucg3ElwA4W(S{CGQAAiTjqknsmX?x z;cUo)3COZh%%mZ^rRuDg4g%YGZ#szb+_3yAS3&%G5=W!522~9kcG&H|H)){*Nr1Qq z8Q~m=PWr3+u`U^SY@(xW!KTrT6Ua6MKetz>(H)445?cm~_jvAX0n{h5)4lAtpg7d$ z@;mS=hf0b0RTvntmg#_AM98sA;YuJWQ^(DcmohipeQ$Avg@G&a(l)q(T89EyH|M^? z_$PYE28X-5BgTTs+OjV=J^b!&syw2S$pz0lhO}cwVkdRiJOw>S27ssvKIAEc0RK3` z*y-UMfG}5o#l)?o_r~s-wP}cd7=4Bq(TXl|l>T`+wj|Z5i8cCO)K<Lh%)0cCKl@S2f%T0Vnb8hMjtueIHnHA8^U-riM4|5{Mxb{P zduNV4vOqwpezE}YKEPtodOQgRO=55yk$@?*R-k^pYHR?6PphQqAqNnF!c51M(RdsQ z+Eyh&Q4fQy@?Q}G$aG((_837AnTUBEV8R;iA;7Bq3n}6O^J|9mJPdlV-XCDVW}{$* zBrXwXcBjbuKL+b8z0FEU zy1{lpL)Z}3lg!SwXLm$TVgu7pPolX3ij?!Ck$x=FVbCPWEBQh2M?R*J3aSDIkRP2W zKL;WoKtc0DRhYhnqrG+SDqw5}A24#A_an`AzqSvv7G^9)zGY2;4>UqS9N)2cQOnB; z(`%jpBOL@CK63pF-PU;? z?cRw!a!;di^AVP&&wEA`YXgb30*sI`(MxgOe zK~K1dc)db+75K|nUZQ0HQT!$V$5GZ0rT;;|*Z~qHd|v|yq8n)|Snm2hFlJ)EJ@3bD zUzBmxUesuEhLO4inZ1HjXCLp$lZVv|OI(OGQNh|_)-WwpT~8pw8SBuTX^nl`0XS7z znx`LFBv5hDehsHd3lX&V5q28mOnm6Xuj5k4sCOjqv*#&T!_liqprIoM z7Y3Y{O=^0mE#!#nog0keC42?PFHC%ksjCeV_KZXD-aG=(uKz*Q9dO)m2Q)PeLzzj> zrz4A9QmFBAlub4>Sbh^E1^nWLr**G#C_l^^3z^VdEKZ}qXY!J(%KJuH_*OQ*i zD@&)%6TGKE;M-FY=bxo+cs(djLSe)c;X5XuP7B~H(Q0hR9>8B_bW)V=id(>E(xw9` zW+f(kdI^hmI;6cS@Yg|w^MH*w&DVuKH<%(F4+Z1(#a4QSuycyr4K!hZa-<~obgMYV z#W4o}an?%LEGt!+st3og=%8`sP;`ndBfAw?@YWx!Na$6GkM`;%!td1$0#($bz#@Ga z^<@+^;mTL~zSFk@p4K8vgV50woh%&GM)II?hD$3s%olie+f1rcTr%@=-a?7ETOgw45maJ z>>05oI(J?eh*6>+C-BbNf_|>-7xrLf6xC0lVFUrW#Dj;5>1l7@`ITyKa3o1x;Qe|_ zP4u+-BG0H=q}=i*RVf$+p%Rb}0l^AN+tAXP7C=(zYGf|DyFHv`1r`YTtm~_+l_yAQ}OhDwxpCj#2 zc)ho`SSj%Vr2Q?cK(l@s*528p^#|SXypVZ=&eOq2>Pf;7&?I-M*~=}db{@A5m1kG+ zUKv`<_1)+cd@{Qp?eUs?HcbiB4$iP(?auowO-9wqyyZ;-6u@ybUNFwtTRa9NukFTG+lN6&FLaA~t{;ocg0B7yU zjt%92vv!pQc+?^X9u#K(BMJbO>BwLVc5Vp<(+0bdGTs>~VWY8ceO)XX5*9-Uzj{qz zd^DyoTVMT=M=m(a2y`W&T8V+*`PKCS{P5tRkf%h!wJTchvJ?`Q`0~5yLnop9h@?xyi24N6@PwY;Ij*TGEr$S8}Mt5utV6RwR1dluXfbLSO&+#LU#F zbIpB7rxA4KVA8}mui4PuIy*~jttLx-2z%^bb_Kn7~<)Vd&U z@G)zfI5$kJgh67`#kamS6de}<)x!1c)Z$jw=Up5nkzvDo7D^@V&vX>*f*gZlM5^G* zjLgmG8kJ8ls!m{+7%{0^4Jba|(vZZ;IipT`<@M``%uYGub?mFV{%(aJ*r-ztR9hzw zf#a`ev%2)Ev~X#&$6UIbHuy1HCh_Qg`V-22#51yepsEQa29G0%x=xUb(mY}sR_U?M3ogdrQib{y zVGq8S#w4>a=z$koIL_kR;-Y-Sx8MGer>t23dWdkV2e%MuG`X&b3#bbLlb9@iiRYu2 zQUp9W8)pPOcq@4E>_>gVpX}~)vDFN?f!nKF4AK@3JY+-ea6QYB#lsBvgZX0CgU^p4 zIcdV;3EEZoTm9w({C!=&&99Ye4i7dnP?nya_A?Q##3v@KdpABZAf8Xhn2oH%#+^=<$ zD(n^Uu>Ok3XMI(R@$qsf?V8cc?tG6*>=RM`@P6lbuj$$1*|YTrr2(srG;7mGLH}r5 zVb!_rT2e4jwo|3{pA01peEk-Vq|AK%u$SbMzMaB0&(0nPNA=PE+%Y{qS3j$6n{URO zRwu|&@D+INYj{oS zl)48?)}FP+7^HB7)}U8U;=g;7p5DF0EzsuVv*w%_ax#FuZEJG5nXg-|*RUBZPcix| zosY@kVIEgDWl==$M#r*}Flq2;t;x)~*v(k&XGLz$ej;^P%Gp-4ROIXS8cM4HUF&)m ziobe1LZ=sE^s>(I&8e$uKS@t$Z<};q_N7|r>Hg0b_K9*3aAH$8Fnn5eryy` zlD40LOsb|AKL4&$=DFAKPOr@8%Ciy;#tz{`PS+pNjo=X=8j(E{03WEo?Fqa^!~}^~ zc0ua^U9M(90#yvS{BSEYTCidi`+kFBSf-BPLkqGUv2Th7*F>XC|JcX9-U1+6Y^LOe)1S zwL1Tq?7|N`UMZ+$5rkcuA4Z(vXsyf_5J*`-aQv(uhbF;I24z2+;1Zr)gD)!gU3nA`1b-i}&* z-}*Lx`)>Mpz25Hp(befDEYw2P*%R4HQrvj?{!`@qoVBTTyvO(b^l*JQ`GgF2Q|I%R z2s?k7G}!m_#=Kj79m?19{qPV`kmAqg`80b&fxJ&qpCvy+guNWqs+#RGz`O(ih<@rs zNXXGyhJnwp?ky-)!hGA@ch>M~mm=C0ORY+j`jAHKE`PgaUuC1)^sJW|9j^V(o?|Y^ z1rG%xUV1dd9RoRJm}|wu>}Y4AU<6xw<&#TRZ^O@GY^)3Cz&;UrG|1|XHk2J<3$xs@CqC=WK+)k4rxxh^bZeet-`voycOJagl271AJw9STlMz&Dy-7*I zA7R2W)OC5LGEDNFv{tngO%LU#j6xv?O~D3{o*02)~UA*N3FRcuV8i!`Og4G<| zuG+@(T4s~q%|)*WnYM-ZomQ$$L>NeqaZI>@v7y#4k%7^DHg6Y|*VWgblECFA-j2ld zb&GHnxka`cM158!IWBxekgdgP^V(s1;<#>km`V~Yhk58ix6-T4T2nry`IrY=sf~%V zElT{2T;n-b*Lp;kN{kemg^{*QfuzvHza5B{1H(-u{;A5de*{2uW~pFvqY-dfM>Po z4!xa%Ls3i-8{({a*K2WA`x>EYOSf5)*KXTz)q5ecb>0>nXrY3&8JwX+RWH7wr|X(f zRR*2&1-YT|QIb%Jg2e0bedH-15O^(whT;T)K1zrQ{c8c6cq;wHl=C1iOVdKPg7oM* z8N><}GgE`bvLBWF?T{P zt;w*IT#h90E5npShh*uv;2Op|JH6y_lvHj422>MSNx^hVWub1PU=F$R^N@xxW0oBW zP~{9OB$7oHWCBnoiMV?K>k!s}?I`6_;5Jh^QqqBi?zbbhGzxY^Bi9n6VD#jTi6Uj;CR%vV z7OZ#)aimj)vMV+u^89d_ zs(h$j*rdO*ZQW>+J!khVu^cIiNhH|7}yO;=nhh9$nL$P(tHik^0% zJD-rfnWO_-hGxC1$*0XlcNz~pLJJ5J-^Ff>Nb62zqSn;L0$Z0yCEwxyg-B(NNIlJ`J!WQ$G| z?#ucZpA4+#!$X7uJB@q=T4NL29%JC3XrP>laFt<6Vv^SHE7o%nkhRiqS7gkQVD+wv zPXrVtPdi_lNEi&=rkDTPiHwG>PIeAKXE5AO1_*Xt`{;)lgkbxL=tfyYQ&2E+)!n-A z5mzh_5w8VvhOvjCupWG?8_5t@*c@d#hAqtFEq6%HMBSCYk@jTse49+fqy4J6#ffz$#~l!Xjs1}XwUpjZ9J6M(p$nWSVrM+N!Rlj+*TZ1Pec@Dj7JXI%=f zGNz)SClY=Odf8bGD0o9Cm87{5nB3W8`bvF7oQ-Ks`4$hzYS9Fag$jhJ;$y8Z2+|*$-&@v)$cJOo8MEoF~+|1=(<&;t#H7_cDCz&Nfr)Oe5Rnu z2dO-noq{(OY-q00K+mzViCyAxbF305~IF!p;1{FL8?bCehTsV{at#gm>#{2 zV+wHQ27wp1L_88cXzOB#X~}#DzA0%zCz$M-s@_f0kMk2?ik4 zy*Ssx+X1=K2t2Eke2l^vP`pBkkGhUO1tY_zK`ZkUH%xW`v>?Le=1|<2Oz-~NF z2RpkX8i_TWig*vh07mtLE7_#xj4X7D

5M2A}Oot16(pbZ^~PvGQ`|L+UKyBFTH! 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%0A|1)R&s7{#B>dS)A{*Nj%PwJo>L$4*i!#iUg>sP> z3Qq?e%w&?~pI9fvvMvd;F$kBv{hXv59_DD9LDZ>0IR)J(ze)DAQ7r$9%x!}&I~I_R za_>bSlMGIbI)EZ&-+$tsOQ_PEOcQd53so2*-J`e?T7vsdzw@D~S2TCtgSBGK8>8#TLy5%wp49O&SQcYFLUucrJi~#GflvHy*|6KhZNIDOIDaE z@xc`y7S&>n`@m8;0HtS6db)HD8;bS* z10Aob4|%4D9Mnjl^>M0063AtzN~g9Tu6b zUh;F1NN&=455g?xbF|IcKCL|Gi@GLO2B%P=E!#*Jsg0$!{>UIPZZjamGR4FE+Wwu_ z%>%;Dd{ItNa%8e}_I!p7RomVyk}RQK(x4kEJ&Rik#GQPG8<;uXL!s!MnR-mTP4t5= zGd6d0AqpAr1G@YyVymtUhpu&uT3_MJ3?6W_abj^we%P|H>cyb0i$Uvl8EVQU`{yt`Ok>9jQ<_o|xjsgbfnx)K zHHJxBP*~*@Jen;9w?S_i7_pxqLib)IIRg?Q%-+a$!4E!7Ac`Q1tSa%U0dbnY>GkB1 z4>YsaV;-{~>xm16zQ0@MZ-CIN`p7-=Ye#foN?ZO>?hB%_*lQ3SnGksq+E%E1Iy=no zSBf%8(ozslj{HKTv8UWY8~56U)uPeh6q^-8ud8#md*honb>>6{Rw3^rUF6}8y6Qb#4jL#uBMT4Sv8p{tko*&~H6d1flc zu}fg7nu<}tJ=+XS|6Jtw@QsOZm}uog%>y%wn=4SV&QXcV4n7q~WvR1w$})0q?!gGX zx6HZfUh&2!%&~a+mO{#AGWYzz8hf+vL;B|7sbNXksybx+wUe$j<#FxyYhOpxwj-Tz zLP)Wm$ChH4GeVCTRPR?wB1`&2JH*RY~HFsrgM&+8KK z#KV2UM-KByiq&S^l=3+oh*>Ioo%~@Vrw{e>K-SQ{G?H>yL>Hl)sY4NM$s3`UJic4m zdg=>tqfvXkatHc-@ zv*kUU`OHclS_i*`DC?A)%`>Am#KNUqxo9x&T*mIr_^PYOe+qX@n7nIGaR@@mO~+cn zFjOB8dzr9(^OLQb3sTTa34BrbUPX;y<7@&d<_*;(^$I3`?J>T$GY`sVzak}e<=wiV zr0A^o%6a18U$64|4NLIf!98Y%JmVg7H{QnD)nj^^Ia)^A6U-M}{1&dDS+f2gSK;*! zD@X&I3r5(V*HM0~3bw)VJT_sxkbBJaL%#PC3(J3nd;Gm~)Oi|M#PqaF)mg#D_eMjE ziiWz6ACdeZYVc1`$OCha;lag<;6kziJc2O*#sC-tU<`mU0LB0q z17Hk*G4OvA0~eEz&ia7=8?(|}Ea%)~cBX%sdn^D6L4pWDdU!9IFQSoTunbOj3Q4z` zE7<1vA4xmDY?gOr?e?HcPvZ{nMXwTmsG0m1Gk(9$7&AMdVJiDT%i0(q<$P}t|DTue zgHQ#tlfel;aKaCq@B?GuABTaT9AwTpGp7W(OYDh%A)>+zIzP#)`jNgmVfM)%jyV#n0`B-f0VTNZ~pRgfr?A`3B+_R zA#nQm_Ip2pzG*0toYSg*r@p~_rY8hC^%5)SR88oc&n`!;1~Hu%P+rQ?-x9I^#M19@ zyFlrN>1;+h&V)Cmmz~kS6QdxepT;PN>HE{$PiGXwekMTx2<-smeh?cQ!zFqB zAm(%6Uj}^4KaJ>bgI&Cwe7Ekqtz4i}v6{bS>pAo_-gjHMPDNDymaQ!3lX^)J3J~)- zzW>zTvjKm#7sUL1i#r#gU}xiE0QNr68Ct*TO$jR218QTLfM$j>%8F~$g4f+eRCJFv2~KL1gJZd+95cg*e5}`bqI8Jc1}3t^WHJ;oD!dcmkG7G#Tn#%U zTo0do+4AJ`V;S1qS(m(ZviX^D@o*i3=NQ7Z#^=^sZak|m%XX3+_Ol%6Rypm))$*^dw@?{qC~ehbi48Cq4rhpK6(S6Pn}< z?zJ9#Y1@#}BPIg20X#Ma(_`H)R{WJdk3!)BjCU)RFd5ffx)IwXui)yEx21=VbznJ6 zJ{Gk~jdeobHewH%Yhvey)u^^JFG0Y~cSOI#_Q|Wh-4ElbR+_?q+<;DIxIcYW0_MU( zB(r@8T@hjBKBu`q-*c3uG0$cr4H!5WO?6%M9pRT6$Kvtn#q_l^cevDikseLx-jbGn zpz%>LQ!0gPgYKmt1!dfO+Ux-Dw_yW}pY$Q-->4JI4SX@oY)p^c+(w^3UNr{IPOw2*)%Zq3|-M%vKnZdZP3$W&7HlY`HFUINE6449fl6furS zighK{!?kpvVa~>t&zo39%`j=c`3l50d9Fx?YHPW8v)sLt;;jGP){e}@AxZA0=-qLd z87FnvILfI;=v<#ze1qM}wR zNUevvS4kR>HTCJDF=~{UdJcnM!jV`95_Lajn~mU0n%{=k6+>G#X@wdrQi(^U|grReF`T_f*}X@;8q{>*u5+EJT*Imr17&31S-SS zYnhb;M5OV`w*ouO;fU~{-$qUF5)bJQv^L3fUoUfwa5C|$8f17^n7@;p%(!kGRO9Rf zxkgnb@31$8KT2PnJuJN7avN`g1cyU6*9cIq3CtaQlmPd#v)VvLRZQbv1l1@;)De3$ z2HQvsZbkak*tKJI6w1Z5RW~lnvOd2usQqAONFswdwq}aDN<6ieFoL_-;%$UGgCGhY z%V`SF=k*C!NLH)(-rcM<%8*A(dS$*I>lS67Xui{_yP!?E#wSp}$drVG7csNE?VEKy zt+>yVIDt-{nI#vmY$Q&DH5a31Y`U0w*Yc5;_6J$(>}Y3LCJeE;~5%nAyA zUu?y~q-7@9ia3&NU}jlM1n!AJn-TKw`>zH*ZW_NOR7kBN^RcUYrFBqshqbucqZljK ze#XGauF=?UH+qzCGlsx9)t1(!Cy8}f<#U6(y8koWh-&6VEDK3QN5h2$Qf;djD4CY8 zRoxP>_O+pX=ku}?vgc9vMtykE)ey66a{_h7jfuDJKV}{d95HGx8?t3_LJ-dKJ-+{h zSt)Pi6>NCy$hbT2Oc5*{H(>$Q*wT1CFS;gTDz8og&fciRBK9KMvOf<(-#l}>Zfbkk zvlbeT=4vQ2NEO<*5mu{F$V>G}@X?MZa#eh}>~+fx6mf@ncP$UKQ&;a$aYjnVetvY{ z)1%o_i7yg`A7^}ItA5%79s`qp;dOnMcyH4P?*$mQ5kwVqdas(DtH|M= zYsGi=Gh*06tiUfLEk8~&<3clgJ?6zD=Ea%Cr^kiEgQMvF`{HFNN=TYScQQGdX`Qz2%FJta@gL7(4n8foC-}8z zgZfEm;7N`fw#gA8+YmQp`IV^B1!N^riZXJhPI6Sv!&>?PTI3|lZpO#2yD0ag7~_Wl4Yd|T_1E)*#PFx~ce=;( z;BdG+7NmyB)3qHZA)4oM+I?st-is1&2GWbKRes9hsth7$b&==PWtD~Fbm`piy&Zwp zn)7@r*qCGX{@|;LuB4g?bm7Wmgr06QKliVX(6$j)Q`0GS)SN5vTUp5N_&} zdJdqyljHTyb##ArrKMZ`ULMISE|dAHY_tCM=iYZ!ib&MBR0pu>aix&uv63RQt4>}~ zR^Z#3<@wPmS=BjLGe5*~OH ziq7_*1=+vgUtMczVwZQ0OXnoMW>219l~-@D97N~$Fnu$?bKPAzIzUn?U}=KRjU2L4 zvojUCzcZyY7c~%O(H-d>`~apWuKdG9{HraAJqoG3cLzdg$%f5rBFkiI<58A#Z@csa zHMbU6y2+-S3DP7beZi?m+i9r$ zSmO1GXX=waJudwWy!<|RnqzqDTo+8scex&CGHZ3y`}hxT8MhO8>aS6i+qyFBbz&+eT}Rd zhR?B)5xe|TsN<@yCUA+}D;pkh(5EMy)()MIE)A=9>2>+=hV3<1 z);72|nHm%c8cGB0q zP&+HK*IL65s;hB@^GV@c%l+yvep1yVPP?j~1(#+FI9e!2EXK!kK zp;(&%d#yuGb~*L9NG~{??lpyHpqUUO>*gZNjaSQAi5h-1?l0#%p&6rvvaSe>&6Yp8 zZ@m~`naq@@({~@zx>`GPXL1mW5tXT7ZhhNgrL~CWbMksNwNXIFqa3+`cL>URI|S3O z*{Q1%OSy)sH5n;7HH)FNAx}tqI=drFz2P$EQ$w#R8{o=rW|oY>I-!k8WZPQig*79?-0m^BB|SF}5i%+DC2~>J}GfC)NX~tjq=Yy+w|!RA?x++G85CpMleZc$CRKr99OyyY%kdB1ijCgr8zdZs@yo?7d8E9Jj8ons=~Y(i0cH#`}T<4Urq?HE&8^r>RY9=2B5aIGcZ%j=2a1e@ZPr7qP&2xj_sY7PpB z&lx4Sjterql8%G4=8$&_{FV#z*r=bej!4=Nh>;7p=H1N18O`=YdCb)@9t^C&N%Hi< z&Xtsz-B)Sv2vtVjor%(rE){?zU0HacYepvZTk=OcY*(I;Y< z0m*^-;|q3Z0$Co8kz|i-o_spt@Y{7m!N$aSL`3{}}$Tk->ANmW2E+f!fkr&T?<%^#z!wdJ+MZ;eeP0iVjX!OAv zB7O)h;5piM;T@#=k2r+$5$~X(!vkB{M|s+o?zIuI`c$h}2%a&*XH<&|U3JmY-r z-U|1MERHa&&7Ug}*^#XQr;>pOMb+f04$;qw>^$jC7^HV)%HAf;1RWV=)aEo2AEdM% z<>aSi9%N~w?kqaOE;1$D|8eYb%pzU*~Xky2-Ru9xT?vVrlsNYUFR zxzB`5?K}pLDcU}=;3lVjp{U~iI&7vud~IF+K&T(xJVo!oy8QF1=`vUKwyCJeVUHk> zm>NpFlRwE=fN4r>NbC^`FS$6upVwG`0CnNtBrPvdWARs|Ih>$hii|;Apnpec4ijoE zllZ&qNw#FSp>bmZ_|cJ+uT|9G7kqUV7~B_$dKq@`-&39v4IcS_z_IUGgLjCYGg|Lo zgwG$cf0w}LPiugF1t$wTi1n8mpl?9{qn+7l`G&xa0IS?IjMufAx^Ybl!!Qm5KRZen^vsbR)rpU{;YD$E=}v?8Y!y z7DV5$dwcLJQS0?vSGPl1ZqfeV{fONb98^Qyg_aXRx`5{Z0;=Tx-ZS`5pK*SjTV_tC z-#p`duj%>Ed&V&aKjVO(alrf9|F`=ZxUL;s*Zxn(z)#L*Ka~6Z>t{1S=0RM~%m7ep zWoBVw|GQ^1<{vvutwuOW$=P7GbWNx!z4rB4)5J#B>2^axYGZmq0!1}w5*TzhS{(Jo zmxh+)`?@-8u!iJhh<=oJI(zq(e6{{+aK;DohbGmuO>*q8`u?5KXLXinjo zI5LkNza1JzL+=Nx>smX3qer(5Q6mi5UPwK++fi+`Qi+kpWo#p0Sb>OdHs<%dFQHz+ zB8k$tHtt76uD%?Zf#TTWTrJ5|c8xC-l>xMvSGBi|jg5;RtC^bau*yv2`6)u( zw^@O=bKT?|LwZFlpta+?BJ5=1L%Z4~^cko1OE6KD836*+Mp^x1wrIx)D1xMQ_CORE z@w;!0M$O0T8cbUrJSyc!B|QOQ`=sUiyNppec|A2wu4o&TQDZDe#&7d>L9}}o+cYcQ z`?zGj`MMiyc&Y`w=zN!4RCe75b(gNr0%DwE!ubSHwy3S2MtTX&VvknjvHr+HSQugz^6s}8e%NDXTdEcxa6b*G6H-2|v1)J|GAkLP6M zknFe~uolFd2iTihbzehidD&iz-Fat6p(<@Q)<}T=2@!(K_-IaGhgfTn(~?fTHw2Az zd?9syretg;dP+&1kRa~y2K;TqEFL%xB{{j|?mU|(>|(0Ncf6^M7wrVb2i@r!`wYvL z{Gaj9nj-lpZIP3c@AdJ(T5!#6C#7moV^5-u7vGmiBp|T-h|`84q)div z_W9#Gd?URZ#Kebqxw^(sAF|}AV!~CfBbG)?Htk(GN)68@7ju4QpFKK(u59GMPz;eH zx(?~b+@XI>?IXNddjd2U9{RnzzAzo1ZVSZEIi-_+a@uGfX*4PMOwFv4SzNZL&i!=# zMSy}8K3PkZHk3qa7TFY`5%hv@4&O#JR@}m|e-(de^t9mm(uXPk+><(rrH@#iM-T}O zFpdTt{cYo7n_(UPUJ9I>9CEy)g&wBr!((@_#&qo<;IKZe2}Ys4uT;c&ukx(l@$-s} zD}$TWV=BnN81fq8CX5$PmvvAdFcQG215%Zp{?AGw~Lzk}&%{m=&kbuW7vHgc%=PH~pxA*&`RB z*Uj!287JTrbX{7RKh1dbg{1t!SZXO>wh1iC!XBzKtbu2xHlAl-W4lX43f8_}sa}-c zJA|Tkl@o2{yTy&08xDNz;Yve6^!q4TU*_J426!m2b(+=AcE?VZTPq@em0MtAj6F$Q zdV4QNZfaQx&R=D(8XD3hE%~U8krE^l}JhvJD?2fVLn&}EjVuK2K(TkuThya&ZXMgsP^y?xE zbVdL5HPCl5!CyWi{jkdZ19Y?@$RXmPA;}=1&>*4FAWs@0h#?>#VIj}{Kz#oL2?Y%U zdj;+ny=hbkC`f2%C>Us1SQr@Kx1E8XL%^WHqLVTUT)~jmf+MrUWO@1`5uRKyzYa^L zXM=)O+sgea0yYjV-gQbUY8u)bAU1XmPA+btJHmJG-4_v+m6KOc1h`l_x_bHsj|`2h zAKTd4**iFTczSvJ_&)Os2@MO6h>VJkNqU`}lA4yDky%h!R9sS8R$fux(Ad=6(%RPE z+t)uZI5a#mIz2NxH~(>Aap}|M*7oO}-M#&TFQ@kf2?71>wt&xXH}<>xLIds#3I+xm z2JZB}AffDlztCtfu%yga&;_L7v@9{mSf0XT3cg6pue(alDzky5ZPkN-O#zyw+&sOt zvpc)ojk*7q?(F==e!Z_z2t;T|VDg~RAZ|e%eEnZ~)VcTwbVgzLMW^gSYT`FygbWEl zZ8)PH{76y+v3#eT{Ev_nFQz2|%ok=B(Dz))DJ>D8DS}wOQ@4O?pw%>R{VPoo=;aJt zf9G(BJh&815yX6+&jYwR-x(mk&=miy!#IffhYZml_*!S<{mRo|{T&1E8?TKCXf=P% zR0Mcc3|yCFYOtP@L@sG9>p5rUPgx~ruM%jSdf7I&Al7qU$z`oQ zXU+V%wU?kmu>wtl0b(OFi1n1U#R@cOX1gpG3gFKC%7wZN6j*;Ki1-5(&c^#I=duAr zN5EWmHU=&dR(1~H;<8Y<7`Ufgpi}zKj~rVN>(7z<3sNs4nw`=wNmv0=+$k8i&bVBx z0M+P{J&!@G=MQIp0K-N0{&39rqkF#}5q@qjK!!Vo!*_cDCf8;C3%WSeF0dE$^H@6@ z@F#Hi=3i!DF#x(AbDlXH=;wZEJb*3^wu|ijd9>_k!3?u?}4SLX`v-8(=H_ z#knjbz`lIxO^xjwxxiOnOg{v6Ue4dr4_DR30?AM5hp$|_tszPs-aKPk(f9xo2rSvy?I;}>!epSGCtUB7>SECiBB7~XO6%S(-_*8i%OwxxjeMaBiXNq;J6$vLa z;$AZ~St;bp53?U!kC!&)$9PiiT`8M%$GUS^3n@<}Djllz&fb%`@5x$8tvkV2VxEET4c zjSk9$`Rh#&<7Fx*(& z)ZO}U`V&v1nNh6s5~B0?+~iR-nUM600=b^<Non+Q=qQU z?YHHXNK)lE;n-wGAf%J>Uu+F0H22OKhm!fUxUbie6K~(tm=|puzy(>qLB* zC_H;2{*FH0)cnmJ^tHSE5IR%%`P9&}q6hiZ=r@-pZmHzMFJ*YO>1mgV+eda=t{r}^97D!u3Y~CO;B9ngW6T%$RF46=oo0<=o=+)yn-jIU*fxF=tjweasm!j{b%)9q*@eiz?tWpCQ&HTy3xD*Dn{|R^ zo*Usfm2t25{97LIb_c_6BY$ZOjJ0cantPc174`FuDOMpmZ(PnkZ1(|GfC?#}bg+s4muXw(#{c0F!e~$`c`Dllv zt~#G3+?DIex`yhrD=6mJNP2Sp%5u`a-Yhqa{8fw%dZg5!4b~+YGvFhsl||$vfreC@ zQ?mA3*|6{n^d8N`_?4LuVw8QfvTzuh!NPm{(MqW5W8ILdneR~Y=a`O^{Z(Ozsl}Bi zBl*+9R~C~_4j$R}G`wGHa2dyc!7Y#q!STRCP?BfG<}L>e!LZ3YUTzk+tBzqf3$;oU z%pw!28nw%tA~Qw!nYwB-k6rEa()sV8IgJoZ7jg7^;SMO;T!gR|;p}Q81$| z7^yjJL^neXYUNoBRbMnjCMkrPy*XqKHSdjyU|4bM$L35A^yT#Ywv_A{r?B09yp|Z| zII4~H-BCJdo-FRAOWDc!R^qi86=%B(!t;V4JcEZPAy8kJ_^T|}LC20@mbx%~#jxxm zKSZA6fMYkPXZ*Z&v&oh3;naH}rRWA&ZIdFmx(z>UE4d=KrvV(hfsX|G@2u>>**x8? z{Ggy+FMhP09GQ1#G-SeyB^9Xt}$_PGB zzalxle~&)YBqOds$Q2B!gxM#;!~ZhTdSX#j+;HkHY6nkmeO!?XRgGD3M?;NV{rgVrVB$5kya!YT%Tz;jCoORi*Jx#ccA~>$sGr zNFQn8Wu2HS8Hm(a89X@(aa)MgELTTd#$VzjC-E<~GPfxy6H_3-{)^E>X)gjM{YOmzIvb{64|4D3pNR+r7pUzT1SM)wud!HnmCup`Rw& zP$%eTzhWRN;K7gIAFF)3hwD8&qlvp_Y(cm29&;xjzd=?>Vxv%XL~ny|sQIB(7WUU* zeo`|^4r89&{*KI$UXG`7*XK6vRZBJo7>tOPI7)A8jyFK)Vn;o1n^o6j7t+CyBMo1q zxZUCuH(9{lFnihwCgLNPVfzGgo+}4Q?P#Ev^8{lsXGjk;zvH_*AC99+s znV~iD_cO&5cSAIk3zn|D#qE?DP+CRmUaXK`v{ot=xoOgKAbm5Y5Qa=;y@Ib7&&%-T zU2Z?P=TMrs`390v^6&xD9L3^jdIy`0SsDKA@imz@)ve9L_XFx>pu?JEcT%M1b0fD$ z9n*NIU>8geF(pPAOj^t1Ofj4?2u}#eGWm(>@7O6nwrJC`m;101v~*v${h%;wI6s@n zw6GX~bKtp>2j|;ew!li(gRJHqBD%_a-}_fEU%6zLQ!+TarMb9eNW|CXN$GRl_(T|J z>M|{-W#Cd*W_^8WYc zNz_*1IYbs8`8A28YsxpIy;KD>20;R%1@MEt9S@C;bJpa&V;@0^5qcL}#^UW}D%6@N zyHMOo==spSMyT;5OhZ9Le|4$!9|Bwc+w@+EO)l zy2J+l&oD(4mT|L*W?* z2m2tq89D)o%aF=IMX~=~?7@bW?$uotYgG@%h?0+F%yO*den(>p665&I-tK&;Vs`_j z?L-GTvIe0&+!GbqYAi66mIfx?P{t$HEF`f^4ywy(2ZcV4^>c@thpKqBZFHjF3n5-s zExTwfacp`ZHOZY9ku%I=sXm@>utvD|#sJ$USMWo<_zO#&xOTCP{RcgfOZ7H36OnJ5 zA4$@RFh=AMzwIu5DzJH5L*Y@u7+1L2$&a2YvALY^$B|;* zNjW}*>q5OUd_dFdG9Jqj#;2rZPH)b4Bar6>>m;cKB<{ZAn6FbHo!4=99fB?Xoajwd zoeqPp)%SVyJPJ*57VDo)$k(_6P&s_y=tk5Yto2xSEe)3m@!{sbntWm|w8o5O`SJ-! zH!?caSo1OA;MK7myu$15$`!OVMHaYo35CUZzVHio=7jGc@=q?730XxE^GxDebotb- z3Ah|$;#$^}+!J50c3h`=Bbt>v8aESf2&kyRJSw%i1HmIA`IemNDjpLyeTD z#l0F$ZhPIQV(q;>#VyFVcc-?89lvxZne|}AEyNxj=RbOkvsEVwstJIB>#0!ZX|Ulp zMW8ZK5{$P9l!lMZp$Oz|p;4{L*KOa8)A5gq>SE?ky7t7r+}a;%_@0FRrURkw;}R9@ z1$Z4i9xIxtbhDx+mKz9;;VF-3UMIB&>ssnn zUYfVFc^TYusJStO&fwfXlcOqIWr6y<(u#hwmy2$#y|_{AZF(7<;U`OhQS=b4B=3`sY`{3k zNiaM^)JL=qlDDP1+If3dI=aG>C-@{xTn*CJGTa<>0Jiq1RLDk!P7P(iG`^xb^3y|( z{aZJ}Lp;|UC2pj+RgzTbMCCw>e>IQFp%~5BevN)~-{>Co{)@OdI?Kv*Gr1;l8{!VQ zzPXBCy~D5KeM`7S!tx9_59Bvx&|881{jW)ZZTDI?4~wjU+bp^)W33HUYD9=Q zapaWz4Q}%={$@MqjTc2QPe`DQU?+H^*F#jFsZA4k)lZ#E9bBOl!i z?J1M*Qc#sH4(Z{v&JpX8x+|aD&HXO|^?xmBH+DUAYh zZ;^j`w9^!q&Q?W8EA6w)NFkiPx!U@Sn?R$}?;-T~3rri{+9>SeyJh5bpZui)1Qv(& z0&-aCGqrUKh$FD&Eo1mrTgvom`IzW4#j0l*_UI(65*o(l3M$Zwo~!Z~ym%Pefq|ZE zxPYHM=h&7!L#E_~a-D@Cd|q}~7lz-e)1EuSGYVVr-B+KbWOSRs9_7iY z2OO2QmTj+mdki0h&qRN6Q5Tm%Q`5r=&+Aa<5gk3km2AQ zzL-vQv8B~(tq;Gf_CAJ;u9!{Ui_-S`x|aXBLWp!}iyNv6 zt)*5VhpMEwYWa2=s`<=FEf2sry}T*YD6Hd=DOut9F-ea2`D#+;k)@HC`*HaEx?bPV zP&kFd?DLnQW;=0X#Fp%3YuqPz(g*iRjr#;S#!9$RUN$*9?x{SVik0Pv6K495xQp}B zQ%f4MSvU>uW5FR39_y{Cz)tB^V$`exC)o(bwu`|^RBzW~h|@x8AP2ApuIV^j z!Bv4sO^1*RbC@7eFJ8Ep+jRorOXY)p!7EN6OZ4~ZK>wo5_rIYFIYe!q@?88KCP?a> zydLtNU_d4PYp~4%oN@=a4|(!sTgZTa58P1v&l`&W7yUAr5Nt#AxJym`qJ`y$H1@w* zJHgKUONAN;#KnAGJ#n^r0omEVteyaOAqQ7a{B>E#e^~XzKfM4JY(Kb&8;k)k2EZ5q zV*rc+Fb2RF0Am1*0Wb!@82Hb?z{S=5Z09wKg#pL5pE1_TVafcC@80+6X#fJTRau>e&GAP}-}0xj|`%c%nT zc>ab{bs2L{`*4!{LKpsHlg6_FFE*DIAp8L4a-1^OKrCl0vs2#MB^h8qm(jmzE&Fd# z`A2Kd2E5qXZ_WjXmH-j#7w-aO(MvPd*w1N7rxdWuc$fX0h4rVLs$N*1P8gOqaIyhsuOM&@BP4oyE=t&}HH}<=e8b0UR~Jy#SFF_|FaFmrzL;Of%Et0Td%t*KbXVW9$o$V#Ql~=6(ZNyqs@)!S;jB|*W@^nK7UCKTEMWCx7+ze6Bt0@h+*k=uqI}~%9JC6Gp zq^c+TUtqt&MVHxJcd9OvnBm4V2rc2ZVVUQ-8lQ}n5h{98Hm8)lR^~WSVCAE9TqBD#-)W3D)iJ^N#IQk zoRNn5jX6Q)UQ>QmcQ5K~W`6hyG+Qz&^x&c8TJB1%PVta5n<+jttYSE%=N^OkEkT`w zHIq*0pCa_p$_0~2Q|!pxvtPdNNo%=oFuw>#V_^7n3eTw8Q>nCec_=C+Tx>hy#@xGE zzvk=S;r=`CEi;g6ZE{5YTH0>FA zJ8yW*QA+Yv+1AJ$ktl^~)tl)T7#fH(1T5(fZ(M0~)CJ|tJ(S%lT5Fv0jY6Dbv=%}2 zF~Qy9-}Kb%C*@H>%WJms0tqe*}4v?==@*ONT*7BU=|z!&*9&ZO#Bh zWd}HoYInG6vf&)N0*2EQ_myDk!`va=1in-VaD6DLy>q;fnD(SWVFpDMnu_|qEs^P) zYpPI|v%VdHsVSLurmuS3;?3Rbv|-<3bOsucXs~VRGwm7OHH#v~jb_!N^D8%leOGc- zC{w+fEGF*__ScB3LoaaIJ_u{z+85uQsjWOsj^=S3iuiRdj#k)9gV&&wbO z`;iepFd0$liO>h1dI25PuibHjzB`d4tZB>lXhUuZcHZ&c+j56c%%nOrp$isFHgJDH zmD?1xOaK4adke5Cx3z1S25IRQlPUgK-t$^Gs72`-7bvLtJ^Z?klQp@td;3W*G)$+HXb@8!*i~6=9rE^^ zuO0WT*i-9!?4Ha;T>(fms2HAh^80Jz3Xp3JNdlCt%QP}~pU_!uH0Z*2JSSEq=&Ohk zJUW`g!p-fD11Df?9Q1dBi&(bOH^xgHMDeeD>JkE4zh)|ywoBPt@)3vK^wT6j)Byg? zOs%!h!No+$YCM}*-ds0z5AJ&tZa{`gEw}p4E~&&(muTEYy|b=CJ6*Ky8O6g-DY)IF z`v!-2ILM~wgHPVJRmc(bPlW4LVO&E>wQV9&h^58Dx~cBJpplrs-RzAA(W`&$Zkg9R zNvAV@3X2$5VI-GCz6s!&V|sny2~o=&=lq}L(3^X+*wbnGGxlFTT*>X~E zZoIu-Xs~bhAhR>dPS}V_`eO9W3wr?d=5n>dyEclQ{0_M?W5qSN0GOPqUWA+p+xTaF z+78`kPeP@A9b#S<%ZrFAtLBa2fsDmgs_wE<>oH1>+$B9C8`xsx-Cy)%3w3?TR<6VT z_@G1c`DcbMt~aQJ6R-WZApviUv`-{DS@z0;h`2ALytCO2 z1;8HaDRgknR?B_32O-yxrFuvIoS-`QQO$??3e%K4$0|MNrQ{H?UjI2$^+o8^f!9zo zqq*}gRrWLW_4ZAnDqA6vf?N>vgnrLPee2CJ)7TTU;`;qv=s#rg!DbkJi z0VK3kB5!w$Y#~uzj`{(WcWoEzd1lC_RVcMkTrFPHOc>?LGP(ig6^I^Nh_Znb=7jw- z;441rFo#G&3jrQy*;r)lhKGnJ+=f>@kI)4u#aG5hH7FL?DyrZ5PBUeaP#kg&K!?cF zMoI>f2&>0Wm=@M{#ktc^fn?C^5p2)B5z6N!X)UIF&nwEuMDY2wyZ!S+{#Q9RMVk`^ zejh#jKV~cHAb`QALh6Gc83oQfxBZ|D(p@)3yM5+1#Gh)a$+=QQZFlI&*FGM6obqD% zUAo(8kclSW!;!khJlOdfwnljnc9}WMYYTJU6zTkp2#0Grj3=4vXk7Lsg8^-(d_OQ$2v&28*(3Fr*0Gc zq}_TWew6!j9hGW*$5e7_==Jnbeg}NNiTzY?z5Z#{y7XCo2OU2?IPFh|KJ&3Sf@B;x zc5I&)eCuq8h4_hI9_d#;2laBVOZU&?AIlONmmX*=Gw#AqH@ z<-gg)pVnzGpC-;S3p&y4I}^K}yR;hal5|@}tK zoUMQ)PVa*s6PFv4ktO98JCTVD>pt7$Sx@&&trLebPx2j`?wOOfc_HCg6sRdqmFW;h7>OJvO}wK#jnQ9kKEv9Ah^Aikq5xqt3F%Hy~!^E zZY9}_nGmP(cE=keA-r|Tx1Xbb|Dw$>hj8phR&{4k0`X0S9J=u{tJf8L=p9K#5Tprt z=g!>*MB6(d_}47L#A&Pv0VWn%nUXS9Xb6@H;|ns+q86uxh0uvDa!gEElZuLKU2~pa zSu(1sADwnjPpnqd%x+l1CWzT)R?@6+JR0z?q0lmXo-|t1xkpVMI~(tkhH9v$9&F8t z?L5sUlB!!9C!}UBDh{$JY7V}in!Om|9`qRYqC*avbxC)mnmIO%Aqy95P~5vM?`zNX{Ol@4@-RbWY{jA15GWmLRIPMDO_e>$5R}#t8Z2FU zN6EdPgfb865u~8zt?lFg@}^{u^Ny1EephN)PC>r)%lPi4ahq_RP zPI8nT!q6q?UC zflPBc(*MAAgpxBATUVe?a?*(B1)OsJSU;5Q3T0$cy$(_1XL$n}RkmY%uTaTPGk)%k zW&EXP33o-YO3S2n?;)s*%{gY@=~%a0&pq$DFB}OQl=FI z)iL&Y_{E6Xw%RZ=ok7~s^P&SXT`##!GQ<0a`yAZk;D31-xD&if#%=dLUZZfYQMf-v;~oR|7`Vs4JqGSEaF2m|4BTVj z9s~CnxW~Xf2L1~$@MG=iSK-s&HHkmgo_>{6{e$-OtI`Qb3H`5VPXUB%z!OQnY2p-s z$B?jnWxeDGd3fklWc17o^&NoB`WNNt7j@*{Ui)R`>DQLO?>GNV3-&wZDGQKb)BMWp ze|-;tiRI@)&hLQ|GSNK)3dsI`*26b(8GwoXtNe|Di55tzebGh&fMPhH$_(&}VnfzH zi1+?HTGpRS_r5mwn-uOJqx~j~WcV88-*l(IC#=63>mNk2zYy!sGt2sS2>dj&0AMbE z%PerCe5PO3MFMrqzf;NndAMvp*T{Zt?$1&S)N%rY{if&z(Elj!j_{#!L;BWnN(f)zc{y*fVUz_{WXxYB#jsGq;1+f2m zZrQ(otiLKZ1(u!PRGoE3a#N;19Otm1xe!8K z`>+|QpR?bw)$&szWE(warMcd5z*+#;Q&D)*6q{7I7BBIZ;$2!tb0g(YRQTq@4Un7)7H_!{$QrxgbhMjM*iaRXs86^scdv$IP!U=y=nby<9hLsg1n6KJ^4&^`Mep zCg?y3I~$vm<;DPrpCvJ*v)fIbu1t#b z0IdfjX^QokaEvDYNdCInB8|CXncg%^1KPM`rxp%dFAolk2?tACTABP~@X|F0j9E}! z=n(_^EE6MkOhR$vKG+FdmE{sreDn{HQV{;eLT;rua?^AYjIEW#ik0^dvz8Cv! zcBXA|aim#>LFL`1hWeg1T5kY!pcJsvxpJuMJZ(H5scWr>8eHcotn`HA`zI7Fb4p~) z4xXEm$MoXBpv$Qv%|1X==1o};2p23!py6_gE)>(yH}cQvbX*(^%S{Vo&Y_!=hK&#> zYHn0D6J}diMPAD%1Ir2rcr!O~(9MlCqZlQlYk_X^_ z>%<4S*gNlc4oO6Lo}6QQ%n!C^)!HU&GsnSa&$Ej_GH@ctSZDD+ASd@*Nrox7B1!BK zDrsqSjTe0Xw2Re_3k4B-?R{u`m9XU!bvnrs&->uphkB%drUXo|IzZxnXwy^JXf1NU zfFa$RDr+GH(Q}kotTsF7E)Ay;8J+#uWaUz2e|+=i1NnHDDQJPIrG4x02Tn4G3vyEM zLjfI!oi)Z*bNfm8a;9u5G}-`lx=H-hm*WW9`FvL5lAQACtS*xiFg~~Qtn6JLhTt+* zX-G%Dvdx)_yaS~bX9FIEO6c>Ug0e3e_~piu#@CqSWMh)mVn5UsHE|lIe_+tArR6OG zicE`DO2G^8Q6dF*sjE^g-k;Gbz`v*-Cn#MHjdW>Us2?2XVl6RZCTuy(r4H&w+FLU( z`uJ+Z@&>fE_!?*W>g`y<#yrU$MXGOO8u1nnrqqFVx);}{sP|Y)A1^K6-TKQm$6*ob z61}$!=Yy7_l>{hS=V^d_EKjJh`@|HeOB7S&W2h;%8hLThFLgST0M29NmiFL)0FQ+1 zOqNQfZHJoA1vjz6n)Kx1&mKMVFH<(5bD;#)JWl%$%ZfB$&K$GQ zisL+qHQ8HW zHw7CC0GJ*lnv^qKYY6e@03Z9YK7iB&W~4bp*e0H%WO1YV%Zif45^;ETV>CqDh6ENN zjSyW5=pH!$^cK9eHixu*nX%tV7r%e`+e^V!KrP)vzDqKFUmso=9Y`}17&Jc1SyLZn0lU|3On zM8|s=MoEi0z#H>6RD6Jt25u#u%RcFy7?pV8x}mfmbM#OeIc!w zeQprf&8BUymTA-SLwE(*nKbW+tjZphqRfa)bgL6JDwlMipkdX%2n1O)CoqDp%x#7} z*X1x&zIAoidR>AyC6%2AmnvdCj0{k?eJ$XiC&OJYP*Ifk!a(InL8!09XxN8V1oM2i zEOLN#TwJ92O1VIozeswLt{+bt5Qk&;FpxG3BBR)@ynSbWF`gy!!lv59LOxTguq)~*#PcT2Z3yZFBZk$Vk}+Ywo6q&MCp1xIn~Tj$yaEOJQAKJv2J>F@o=Gf zB_t`vis6Q0`J|cVr86iuMCBQ1DR}weQ@o2l9U8LcInest5@hEC6@24{FFzMWY4qqY zyKgD9M4`Vouy0)EgBm@2D$@-GKV!slmFd zNA&h+v>S0QO?P{Vc<$qh>{KIDjhNPMwL)k&3k7V-9v^9BcWIjnR}KeC_UEvE43R_^ zsY}_K3@UwKsoj9ZbUlID0)6KFG1UouH14jzeR`-uwzFmZVeXB<{W>VW2(C*kJDGZ- zw?iXQ#W1D_Pz!O3Bnbz{SBE{Zi`CZKz4cYjvqU4;#CC-N8g|zg<#P}o#7)(A-KjxE zN*|OsJ{+XryMQSpP>hX&IN0Y2gJ}gGS6{^^&#T`WBPk(TIS~;WzKHFSZ*{q%7qW zrh})xB=g!DRiTp=m`!jobsC&GDVDusKq*UEvnB8c3hNMU8lJsj3Tyc~=`h9|%Li+z zRZ+8V*xp0I6=iE;|B|3-;|vCjv{e?5NsP8V-IJLhgh1%^QN9oDmu@ibPRZCA z*w5)~B>anmlH4)5`*wZIr;%h(9@!KaOdT1-gP!w46M%R!n8F`eDi*KSsRL!|vpn>ugAn|%01XiM)U9>*;wd4*me*tw zUqLy<=nFeVZ!~Wvx%f!3#jZ!Oq!?gV1e#S>Sr6YF&n;nikMjVE*;OrKKOo#Xd3Gkv zW|Lc}$OAD^Uo zEdG0fmMhPz=*3eoNJZhY@QhY`qa9|gD;%p=c=XVDCFqgZ&zwiI@lWc?MyKG&C~G^Z z>{%dw)`lsn_%Kqqfq9liMn?VGl^K=Mb`Co?(hIu?9Z#dTTvDD2r-BoPjY`1Gdr_pL z!Gb0d701l0gz;wiGgt=pMCK0^s9$HCf6nuLoyYzI&-ZnT37o9{=kt7Qe_+nOO~QZ1 z^RfM$Is4k&Z?pP;WX`@?paHD(UypG8W-te^viv$3#r_9|=g*^M|2f0+wYeWh`<3Sd z9{TvjSp1ER0fLEmRX>inC_Iu z`qqEK^L=aZw|JT9zrY;${4eu-%=F(O`zJgfGt=*nZQamRFC?yg=!Mkpow()W?%48_ zzCVfGxcB*^NuK3L$S55#V$%bDpS{GV;u|Cul9RGJNR3YPdM6e##B&O+#c`4d9^78} zwrkH;tSyxUl|oNtk)Po&-FaPp9P07rTRQq`E5CyH>~X@detFi@5fs_-%gxZ zOwa{)%;5P}4jZKrnbEvC@9jr2%l(tnqqQx$my#SX?|X^aQL}kiUwLrfK1F8*(tH`w zB35;YRa^`_59^UGcbM;PYL^fnX=zb#GYCYMerEf6YU^j=>LfM~RT+K)?b4tYWb)0i!(wXD9Qhw2B_bRP=3fIS5YxQfygqK5r%E0N z2g8yn_BpGqr_I+a-Fv!Fid7BnK7K87^KsE51%yh?8!Uv7+I>RNUGDS-Iwcv%16YTdP*_t7SYm9 z!WFRP%GWzYLFihnu8jdztBNFSQCe+-%+u50ima*HI@1o@y6v)j3 zc@t?-k4Qo4mL1lB^o*a>Jsaz{==q#z~etn_+>A@Mu=r@cspSpUdTHfV*#7`twY?;;~8bimiK`bzPs zo|i$*`NzfBXTo+OFBq~vND7vHj9omrP+Kj+`UDlCs`khwK#h!OkmmUMqoL`>U}GF? zu<$sd078d&pxaiRg1!cP1y-395vgcoqosJq6fNKJmLl0(dU;gSCT-BWQYy>4CP7~^h zUof)3yJooX)9*%MQwJ(VC57OAj)1?{)4UjCCLwL<#OL` z<=wxxmG7&#ZfX79Ru1|TTlpx^R*v!KwsPek*vgZCWGk-++REX7ZYyWmuebo($}RtH zD|h`LZRL2h3J||+E5H7Ot-Su4PgaXjC0An@JFMP9DbL3(xoZnjuP3JD#$UMkWB2ez z^CAG|Eeq5RGdp9KN>iI%a6x2aRoq@603I&Jz?HgB9HptnTHhiS zM;Xy2WyO)SO5Fy+IfY|w*&&`V6|!9({vE!I#IAy}m{al8JFz{H9>QoqqR~<_di9d> zTj2R~#ILR3D)Fqzvp#lu=q*fI2M>Id9=Ou!tZ)(`?Q6NcU-~($!Ke-)& zHyDdgRV}QpbM@!A2PZR|&#yBTv1G z$g6yC#;y09vuz=WB<+a(+*;rsFTdH#H~wxffAz&)zWK#o&iK_{KKDC&xe)(Xd-)R3 zL@qM8W+5DBg90ZP;qe%dIzTnr6uQgK9-k@RN&|60mUGD8?CKDPx-#k-beXR9se1-c zrPS!{1^)nfg*=vCouTP%h}07`hK=Sm&sS_4F?|LqdR2z1Y3JVR5DilmV8=5RhrZ30 zYR7Um2}#$~X4L&*#J} zbA4|1SmYP6KOpx{LN+3Haz7*~N@!Dy@Tdj1lhGt9nl0y$cKGtMDp5m3o0-!fD8Ojn zMg#Z~M_Jpe0J(?07Iot@Dau@abIoN&@tp1)*3>Pz^ntZ+*a$Fb6<| z!bynR@u^0v`5b}X^2jgV@|~~V@|`c<^0BVE=%$RFhDY|>_0Jg+w}IaB@hid+gt}1J z_gLvvXfAadkz9AY!L%+j3KD07=JXTH7BRA4h`)_1l~0x$tlN5|Z;?#({SI(kK05b0 zX}Y{5p+m5InZQ94_tjILSq-#61J9a=3l(!sz7hK^A~Sfa9ZsT^Hm*rh#ue`Pww?Wp@OOc6hJ zd23oo1&4A$k*%g-I=HgH^4KnUAXHdPj&rP zK=Z4Ro6J181-aP={ACc@w%82=ii4s#F)dxn%bE9~$)b@|qAT~Hv2%jB$9y?`j*!Lo z=n$i#G@TdM0H<2LTH>z!;*7;Nc$jtzXrtORN#@9Y*x6uu){B9BZu3G9^x%CRe7YX_ zKBW|2$V2r*(|?eyclF|q{4S4eh?Qco^HCP55!lrW+SyxKK-|^AMc1Po2}ucQj9GF| z@D@!gOJD_ng;V+h+~5Xm9mt8W0}KlIayEPZu8GO$C2IT>o>L}r-I(y=K$GZDprt%i zDQTr23b)-blf|A-qfR`KK(>t7mV|#F5U}o6Jd5r0%k)*#a=nu6Utq*M38jPWKTmL4n#pdXEP!NajIRF_dqk z48{}}wWHDPXOT=L)kaYByQ|ynHbA(E7M20A6ZfhMcw#}d9JKNW%>zzQVgqMn8;rp5 z<~@=2#v+=?$2j~)JJb}N-k_p~OXdGF+xKnW`KN5(x7q9;*}iWRP2iOEKc4MlrvE*E z_P43{PuM?ekM*WX`&DZAsEJy6XT>!u69tihgZZqXE7&_h(sR1rD&kvwmMP_N!U?H71Rj znThrHOxgkWT*-W0^buUD_x2WK=E^592++YUL=-}#Nb3q&=`3gmxp+a7|$6Ks;cja0dcQ<=|wU~{1b+6!BZio7`@6JxWZ4NT% zR!_+;Z$vI{oS*9^e7^qFC)4to(Kw;y)7r+I5F>heHxw1Enr0Y5YKQUNhaleizMjw8 zUS3!Ar?=L0Ei1wepjLX|Q3?*lmJg;s7)LBF$9WGCOF|oDKGs-rk-$2`a2I$yKZRwz5s$h_Rc~w?Xb2%M z++5%4T8D-vH=TAdCf(S;iJl+AVa7FHAL7(fCYGl@5N4S5^)m<$BRtMz#x9&?88st< zN@DEVn{&r?Q%mNno4XWKO>_q|XA6v)OPw^>7^s@kdFI(C)q=AGf zahqL6t=QQ1;Y^UThDN1Mzq&5N*{ly-10_lIk~|0*5pH^<884Q)q$uywJrT|5;vDXF z#=v4c1*L21N!c;WmuWLJ;9Hy>Gd)v*oY?ArCt<1*6N zBq&YKYn&+%Dp3~_HUpgCJIhVXK`st8jU>={pU^mPE?0VoGi_x>qJC&>vgO3k1Wevb zE5;*e9YrQTJ2aD%hE(~Srut;p6^v)M9gVcKAs17%`%1&$`=pw|pV8e+bs&~&{T4g! z_EMo0lnC1qv7SXV@?9sw#jCp35z0-)HI8ejvqa&{Llg3yat!hok|6j}*o#9WZDG`B zL$%zrH-R!*4O^`uL2@F2fQ5xZcpqiT*6ss}9h1cqSz4uh9Hhjr!^tkETAsFI)~=Q^ z+jTZwYP%i<8t5YJ!WJRC8VzX*815hlZ?+?#86fyTlE*z6(R{wFj~CtyA%!4pi}?{7 zvTC65i1<1ITK>^vCV2OYcmo{_#k8mJ%25&)gZ>6qL6cEJ9sbEf$Wy`t zTd+{iPLt2yHs`&||Dc+U2VXq&WT}hFq75gq^xaxgZM!?gF!Z1oh{^(1bQ%B>7y+z}O7cR$Y%xum=_m8n@Nvn2|UT{7&OArONJo5FBsa9(2MBI@5@@XiZP~ zk#L%jX?`08-9Zi7RyaO4b<}JORU3<|k0McuAe~+lDjS2=r>a35Zt~aATi8d zir4u;GUSlVMw;OjZSk*ZD`btD|0zG-LjYGP&_^5VIGLrFP1h> zEg7gGGP8}yDCOyEqvX9nPIg{s!jN7(ftfGlSjFrpUbqy)9%b}@)#_N71yJB3CLwtO zXVW-2TSO8cQ@~{C%!ro41>%_qJ*;C+ELtfVF6FKMr2bLkr-^Y324=bCkPjwi?Rj0} zK1gKCcT`Xs$pH=3d{S{dkBj_SkBxgNuee8;J^TzR^L;Z|agyJy%Y|Z)F6B{IKYoKz zS2xq)tG4pEa`_eif=|{<{)nZ({&$nF8ilq*lY`_PBfw&>3f<=n>O{LVqKi!GC~G;< z*7py?`3^{pU%t$eYr_n9_N;3}3H_mqokMQKxe&8VwsjEW?8Bz*u*06H#t|==h{bIy zh%8PVK*6!fN$NpCSF1|wsUD)xf0|XCOll{it`+S5y8KrfX0yP=`2EMR*obz(0F%h~Wo^IBacoHHUgx;kV9(2#tg%5G87m415s8TAY zLL^-vsiW8WVOffn!&|7oKFbVwkPsM~0Fz@sxNMgE+UPLCA4h7BBdO+w6c&C};j*cN zc_&!wSn6C~v_wn>9Ut@i&?Ztp;Py;Bq2%|_zaB9gcNjXDiHFkAJgBur% zX^(knubnXGOh{!85K zMQ+5Dwg{_%*$KoYjq-e$8quc&DXRxv#X}Vk*mRrjDB{4|AM%2H4b8kb<3Wz>I_x#i ze8TrWD_!lzl&i=z&hGl7YfZ*c;I0LbV@}7LK`gp5QA2Pq&tH2mCe!0sG3#~`IB%R4 zxFMQfTUT_Hx*Y}$+viTYQFh2on8cG!obzV#?^PSyNV%#$REiNG^P`_HX!JpHb6rwe zsvgP3G#j~C4A(qvx*=qBTXc`c<+g4u30(>gXrxRqT6k8X&_5fsJLy_lvd54s7p;p^NFBTJ9!kx0jHOty-6a7KCMH#bry6CQ!EiC8AbneRiX3X z21DLW?X4{`UP%AdvuP3(ebkL77I+G}B>u{%7FY_p)ne(mP;k>Km+ZWZ@C8F3#>WZU z1NjgzrdT&%aG@1dG$inM(4k2*0H~X!b@X{WsBo8L)AV`mI1$wv4_V*~%3k5$Lf}FP zX|$y{j9moroh0cC_?Ko~wK5=T-R zR3Gyy(NI+3WgL>2^$!qguRGQyWPA)M4b-Pvq!nY(Io3HtjgDbSPLunv8~H;U5%s`I zpFQad7-}_iBR;%=Pku&B=}Mhc$=7E;7%LpRq}A94>(WM(4_-vvn@kOdsddLn+q)^dHI%qTF z>J6TiVR(%$)B^K|upjXOf@A$GE6H&B8MTfkn$;e0}Wj@ZHCIpL4`k!|@s z37gbf40uO4R$4I#PB-LjM{IFhYBxMVx1x>AtOXR(8V+0an0V`2oquhsTt6C9Sm>+i zEKW#-wepkBxOQ3(|MRwL?_{RQy^*(g;v zs@*>`=V>L|q?_NHF}LVY)dXJVK(duL9e9?GH$6c5LH2nV9L{T6{%&V-H;$kSehtVBY=YtVz1RV@&=-D~Zr+dFMerM^=#h}QIcH)yduz-VhSg?J#!}zp z)`5$-THn^Z$vcJSO?oqnGPPh4jNf#0nc?&9g~v-T#w{#a=h@Gdqwpp3=~)}1&z;zJ zUC7&b_(BdtvjkU?Kcf&zJL(+Ay}iYxwqhi^rbBM|_zZ5wK0}hqBLA+w7`9Y)| zJ$R{Z3zzK?5_Kuq(d32iCUS>bjGsT1+_tu7xt)Sm%{Y}yK&dXDt3huA#bwo9D;!!cuqhWD;)HwxsGYi!t$52LX0vc^PoG z!XPo{JMwiki_|+_kkUB{dOTxvWBsgIpGc3g_eLf;Aw)xcI2lDXdrf7QU-xvH0`wA6 z4H5{%%O>@u`~u3jT2z|?U`%#R3sN-R0m#PUtqxP7X5?*rh2SjfE{as9eO;?grutSr=d#he5*(Am593Ph-AH6=rI=AcCKre4fP=D>^;R<&6 zzBb^l=j1FbGmy=c3UhA-sk8TDe4WC_kn|x2cn+>=mFZ5%;EUK*RA&f6;as8vTMIBCC=mi z#Ui5q6CALx{q;zmrod?ynLW4`=OI~S`d1l9rz8>LT7c$E;$=^zO>w=Mr}}%WE)EgT zW1@_y>rA_h6l>o*CV|a&I_3lt-_(^T#O%OMA?^_eK!oIC;f7MEcO_^ZMA zC10Ye#1HetI_KSR8drMDlp$0=vFvKdj`b4Z%g~vXhU-uzPyMYF!N4^o9jV{;9Wzz0<*dV~LG2R|}igag7&@wsS~F3AtuAD3a4g znYQC$3lGL}!-;$wR(H2#(q3&ip6nF0D-)lP4V?!|)LPK3D=aOGE2% zGkf#g+L7A(^b8992$~8b8Df230!_pIlYkgkEo}F8derUQ!IuCX73HEOi!S8>(;fR; zjnWvU^vKf$HTM07L^+WY+eFzP+-6eh_!RwJ4{+sJh769PDtJ<4(B<5m-@L-!+?=?` z#jF|x&3SzW^2UV$zE%RgUuR0E!gDa4FB|corGY>aN7{TEkjUl4&LbQv9Bklz!9B9R znq8VwK;*UP+Q$n;m6TF}(WKY~@q8e`4k88I#WaK?v+U>Vlnt zm9xmYxj&CH`?P3cdk-!27CDotKbac>^NGt{({f| zF}k4)FJF^@W0szn5Hd23RRUFVhisA6z^YO?Y}<9qLeat-?>SQn71_er^l@7aD-FpB zN6LWBjV!6hRR*tvPGRu7nN5zlEk}_!A|#5l9`e6Inyf~Z?yfGZI&i|9dUbM~gvJqO zKD=o7sRVdcWrE73b+y4$CJ2i#7vEtk;giUa<%lpJR=JBO#P1Qxj?R%Arnj;fmHJr! zdgojvt$x(uCNluPPW)9z9h9Ypi5?GskgcPd>tz%L)levR{}!Pl*|4ofPIK>Z#M;eU zSE_JOI8)9x?(^4(2aPnHRozmbau$m3Mo~Mp^V6RV z_lvFw7K_pjrN0WyjMFgg3Ma9P-m+NH_qeDMjZG^ZEBcJ19L%#0rfPMh(mxQ1&-I+^ z3iXJW%EkRrk1cL>zmAX;&9!kB8mlZS?iqko;2vY7b-xp zO8FJ)M4@+<4>)C4Y_R)Zc;6ooq?oG-) ziKBQhV2_8I-1{eIP8hJ)_`0q;)hLnWc&qVcIi7jfXpDYcNC;EUzesgJV%7 zDiLWHaP2|SM6=0G>S?m@z?~iGOm0Y{hptRNJIPo^u5psTf)SIWkhnwV1+Pc0g!%ro zIreL5f|6MKnDlfWkqy7kkc7|j3V*O92Kd9u#V_oV`eveQW#S{XZ-5Hiry|K%N+ zUn8{ZfC#Q=Kc=UC)(1lV3}S{tR8$nEL=&_ZgDtr#`Dxip2MVkeyUqTaTl-QpCMR~@ z*&Q?U+^wXv8mD@;=^Z!y+{?FfhK|)^o|d_+pN9r%6EJ~iKJ23f@RHnOcVvLwg{{bd zdUqe^`ta&s%C}|!ZYh?Bu*^a$PWS!ZWqq?4D@wKoT@TYdd(fy)K|b(_0zO0 zq98yjp0xV>pmZ{PU!DK5==}@*_*v=v-U(KA=I@pBYo`7yD<{}}<-D()|I3y0Cl%?t zisTnZ@}E>BHhREsx1Wqmf3YeZjPikkAcKGa&^?8Sg9)DJ*+$ZIECv?ULL1=oJ~)eI z;H9{KxX-~o4(^A+eJQxFg!h&3Kd=&VI`d7YA)kX1AmonzXu9zS>FQscZv5^Jg&nwW z$nsH8 zzkq?CD5(FiW85!@lm0|O%|QR%5CQn7_0xdg?+iz!#>~|!=mY{q8UXl_vg!{z^Zi2b zKQ(gv7C8$m`)|UkFA4e;E64AG|2+M983b8eSWFlM6chvm6!;DDc@9JX1O^HU8VV8y z8XEe+0~lC%Gz54!ICyLnR3tQfoJR!sICyx3#I$6DkEx&F;gPdaP}2jLn3x`sv2(LA zaM3a{F??wR^udD%@Nn>02nbjVM0i9D|Mb`AR*;7Ny(X6**R}=^YRNSDyyn% zYU}D7+B-VCx_jRBz8@VMpO~DQo|#=)U0dJS+}hsRJvlx5@bUcO^6L6azd%92zjX`v z_^o6A(65KUet|(ifI~ok=@%%NGw>hyLkLJB02B(JEVQmI>SG397&QLq*X3;wo-oQC zqwCp?z+wDt$x{aVMK|6ld&d&hq3*DMG;I4JPL1Ahp@3vzY$e^DBKQWAc@ zljE=0qyD5MurmMMQvqQAXB`y`zpn`T>kp2_u@r`fLVa;Tq*Lf^e^eH}@0$6Gu8^OV zh2NrQVPgHQDtyV&uT+KKb>KgtDoB8U-B$%TVA-ht@2m^XvF_3&G5fP{)Z9&B|pD1;(r(Xf5wQvzYl=@e{#e#{)_G0 zzl|G)e|qPR-(4nMQuUYP@|CTzC7->C0AA?j`{>{PVAwPMD~;U0h5!3u|20X!GVFiX zga3?Se}AF>e{|UYi#^l7jhnxEp-*c{=FlN!1>tI>Z}`!O|5tjcevAAMBmP&NRQDJ9 z`w9P_F&Y1h6aF9H+B5!(IlkY<&0n0*uj!@tm%BV`3&u7U#U{QHQ$zg8CX*MlA2<0;V32S?+A7)Ag1Zs6Zf_A&k{*>`_8 zaDO-OA8|Lp^#5P7@1bSf9+2#-3ILLQoWeg`)noeilYL*4bWipHSHJGp`u~&G`hR?} zXZjbDeGKeOe_zaJ2QG(8={h(Vssk6sfZxBJ6Dek?YivlT;A&$?ry`?gW~lE#r)+8f z+|rwcp85Cd`3DoP&Ejpbf^=I5sZHo%aNwc*+KejP@FpR3$(V<#S)3BYqp*JlD|XEQ$q77ACR_w_EFETk!}Sj0ZNi&YoZ0q^O2L zr;zad!+j3^uW(=#vNy8U+OeSg!aVLxo!2b_-a#|JM&UY5%tOqiSX_zYtHo_d2ro~y z=ap+CaEVLJwW2=<8?eFs$2JW&u(ri9ecwKm&7mn0w$D6npl9wIcF_+pv2B0+khIEi z$6jchph;Asn7rzC>Y#K%_x5{0OGgRIOFduWIJ2%zSl({ihU~WEfjGYkt8({FirmowR~T$}$e z$@~W_#X(cRs9fjV{4ZXCzZU+w7XG@%z%>T0F>sB6YYbdt;2*<)lL=`sP{54Wv-IVW zY*0n}ITR1L;qV;l9O}-~P{$G_Lv4$UJEoh(=TN-?g=f6yP_0s5#?GOZ+eXi!0OwG1 z*}LsW4L9iZT^Z(l!(|)((175i<~dXnzS^nlIh1c&ByZ0l<5JY_8D+MB(utAl-n`*C zRM0up&Qs?K-lLuJb0|pXhdJz;r_(P{|2yr;A`jBG+B9LwpF<_uFYi%=3Det68i^$(0QGPCkx9ddfr^Ncsg|7*oDDf$Ymdr=IJT$v47Ttb3g>B>g>wGjHg&&T zZ5{8Ki;3&@J=eoGT)#VZ3VL(Wx{0HEa7Qm!RW<1xikFr55Vhe{h4A+U0?4PDC+K@W z{Y6Xc0PBNSWhzNivZ?v@4z8!CQ|C}K9FWnl`eVt0XMGDzuZFiOS3q(1^EuSfQS~`g zqcvpY*Qg@lNjpLX_os1{UBvX+##Pt1?#7yoxSHR=l9GNRC4dF>Z~Ku91V=vb321*U z1jx<>j92o6xK1yeL*30lEIA6~scQQAY$5cn| zy@LRGV=_soVQbel;CHpT<4+LEUtOFJC*b7)hLh8zdBHEnz3FNPN4#x8x;#yr8dE=M zIc>bR$Wh*wT1uu%mj$uzt?_D$uWLvawW8r;>Cnh5%2Z!IB+68`>z_aR06-9g?9R`o z(Kj5l$=Q3fc@7mAw4Lgk!A=)Lj}e)V@FijS^b2I-5ImInnrVLy#oe&ee}*L`IU!kt zQ}Rj+FkzdtH+c?q4=^kEyN?PG4mgiFQrbNHT^(2bkFLF@r&g|>SW=t!KfL;5ZJ~*P z!ECuGB7Z>mw+~ElhjWtTV@W-c|F>cM+xZ23KK|!n6Xwg*1JmaQC`b^R(q**t$wl1s ziH3!?i4_qW=zB)eLlYBID@!FJAT#sD!lyJ5GjP!uX>G z3**JA)P+?njNh^@FOI%_?~9`!by*m%>H@Fo0)O@-xeoCt0pM$#UgM zmMc%PTzQh^%9AYYSKo;Jst@)n``CY21-kMxi19}a(3K}ajNjI{FZOx-F$$n7pMtJ@ z3Icu`4;2PJQxhu)GA%D^e9xK@*VfY4cw}n#Z3zGjsm{vIq{1MrZE0$4p{Z>N0k(jh zm7t83hLtwtSWpHsd~Bd^m3ep=9z$A$y#4qo!~(YO-n=M*iP*k-4^m=+l)fVnQsw)C z0;HC(I5Q*5g)QH{?`0VbDPQjH1_=~i{GIKh{O!A6lp(!C%HMo;S!TK@fAidB`Jz3h z-`ay10t9_W(&gVT+WU^Di!!7uNcp$+AYDPqzqJSH3R3>9JxEtT(080&*1u@)JK7*+ zHpmzKHYhxhe++yUre=TRTOOXv+2nHCfYiOp5O07((1yP?}-nOiC7q(T$H~Lv@~Q9N9m$jR!Fn#^vpy+ zCMJ4FUMU#NMh^!4w)7*WZ({guF1wtz{%9@eY7P2Vtp#12?LW8nvO&mD|An za|sJQh=_@um7e{VjlF=)kFFo<8(C>vFg!Mb;Fw=q(^O0Q$0`^L8yoodYg#=jAAC2e zFzV5|IX_#g*BwV8YozEp=yX1!553m`>!GF5NfzHDpvrqpqfnAjv0wwzVDAc%EdN?f z>zt7jD)RZ!hU>J{2`_hP*L1yVeO(oeFO%zRWkbX1{y~)MxZ%08MilQjFXVrN1D?fE zR}jPW`5`lTl-k+e?k0)POHJv3;imkZ>2=AWVL-DkqW$F?Yo-j-Qms8&u37+6hAA_kzP*MMiN*N`Ro?k&*OSG? zlORbEhVH(uWnNY96MH!A^T*{eRn8@e9<@#`b*C@T3tSIRhtFVR4mZM2>@9J8YC72B zKIhGn$efX+gvG-vrw^Pf?@kCr(67W|RpPiFoUQgpvBk__V!})0j2y(%94uI#B*sd- zu3fxKfw`&HYb3qcTb;L(mcve1gwHKCNjxX8ThG<)%shOk6CYKzI=R1=G+R&Z#8fbD zY$;Xi>>;Vs;qG+8eq+E^u@Sz2DNrUHEVDg8|=TW`Wd2O`3(yvOMCft*WWXXo_dL*go z?>*NHv`nz&9IC_-X-y}ai5#d~CZ3^%z7K7uA5gV(YP{q=zdRt~P1wjWWd`l`?+h0hGqQwB1J;gjT$*JH*_F1Yc$a>nv^s>VAVzx~@IZ zbi|MeGag{FnM)446%iC_5AI;&|>r5q=I(ecee0YYX1`Dkk zooJx|?Umqr1Cm7T#R8n>IiKXfj~o;Mg4o^Ai34m>?-vOLZ{!7Ku@tP3wO|;9e8eb5 z%u$}vAi(cqqW~KVM-k%Pd@za_&v7qaYoa%@tr!vTFb0!`MoSuOCEfq<_VK)2QORP= z0kqtgs=-Pgs9L|Ud?mvL3<-&C!pEcP3mRG>A(BH%5kc+d@H}nOxJ5gR^y-={p3pc! zq<+f&UdYjQxOj{}LZ+En4ZX%@DDeao6nQ%Wg+r-${7ET}`JRA)E%Q zfcmJR?t+=}iRDk+4;3Ar^Gk-duO1i%b=|7{1j2ap{-Nw=bk5RG9Ls{<+_R1ZstM!m zDFQmYGL|3%UZ`$2;YKNig)ipnjhlAVehV&8ie$E2dLbX$Q=n@|ANhUe2}D`BSClEo7lJ!F2GAi-W=_=F#VD$#v30~ia_0EX16yOr+yPE;cJa>RR;B44?G5%(#<|lANR%vt#87xmaxkL6w&;R&{H%WZ4#3W zC?ZU&Il)jSJf8HMGi+sgQ%l*zP>3GuLM`^y_HbBruA zru=#{_fa)r6D7uq=G+jHJpuj8+h{)2b(VvV=Eh+8@hzvO zsNAvUc|?DALRKobioLhj!$x)}&>#^q#3_KWy zQnX<$8!r{%v6g%h+gNNc)jnDJi16{vRF{}&&c-if9qQh5tC5(qJ$v+1i5v1Hi2RGM z(|hRW5*Or2sQFufnx%e~_n9NJZetcEICcbhIZCVh#KP-5*Xe=dmWU{YEv-;b40oMv zN#CqRTT<^8wjc(Qb7YC$$ zBm!v<{Y++{^%~m<@0K^*UtU(zSvE9(eh<0BTu6F6nf@z}X4r^=x2)1YerreqCsKk= z%b*2$e6i0ivotw0tHWy#r3wu}Ch}W6dHkJhWe*ZE4GP{R%r_#N(FeYB<9zi(V2%GN zp4sxnpS=4ZZ=?vUA@^agaovf#2iKMzz`^7lCQz>uiv7+Vm!np!M~W2l6DTpFXh!*E zV)1QkWqBD(G7Svb7m39)?tn?^Xy_IZ1%FLHC&!#mIUbyWwCMDS18(N8LZIhKs8J|w z36#>6`HdQ@o5$QNVJn2*1eJ{3ji1HF6RrvBjEMYLsBV<>l*1DKaTS{mw(G&BL6!^H z#H89Aa-I*xkVW{kK|nwqq@(XSR^Tfl{Sj0aR}DiN$^RlO--kYAG@M+|oBpAs5JnlC zOe4lFEJ_pYP*f-^T|aqSBoi!3KW%Nq01V`1q-+7MmUJWpb0*~mb`=Y=iJ}_~=S-^Z zk-91ojHG3?`2uH(&20E4RIc{0WpByG(D`j1EW45S1{H0iX}l}@Rcn^(ryY-7x%IJd zjk4A(v7?M<_W7X)Znh66G1uq>6yBE#)q}@LN}iBZ5OL$q4&m47fC9zo7`n^dbd)9z z;luGjf=}_AF6`SsR(!W$XalmqeP>b0LGBJPzs0FGze}`R6NpiHfJOd1tD~Aa7Z1s- zU`?e>I)O~s(>J~#U0-g8_2~+EdY009f;e$5XhXVls112Cc0VF^Ts)$|`2G7d*7ydq zo>Clcwa$Io_0u>bQ&bxdOP!+9qyC$^Q1w>%qFGTa zK%oKmwL=C*9LMsUwoFMPs<|DfQk2m`H`n=gp!lumasr0nfP62#Sm@o>qZ~h-Qea}W z8p^D;K?^fN9(}yHjNOv^uxBYAtXh1LGMm*zQcn5)=KW$zsmeDJDjrJRtfG%EkY^Vli;nZf?B3{Iht7j@r70;uljMC>|-m-2&zLx=Y}-!#BHZvO(=}UH-xr1 zlN)^1e#S6d7v;S`Z>=93?T~ab?IsMOvV)Zvlj4272VZ3q)H^eHG@q8v+$zNDG@7!Z zK9J3as5bRkIV{IX4Tt`1Rcw9))raEo35$nlwpEJ}`-p|L7Ct^`R(A^5aWM05!A?K!>NyBU`lA(3E`7KkO^BN%wLrS~q>RMw^z1M@)Nk?t$Y;Ai6^$}%ii33(Z-TXS@ z^4I9$_Lpd~E>Z0~a&`)e@$z#uV-D<{4v4vD^~Qo%2Jg_UPdxuzN3wvYC4EKa@GMUlqvciC z9$FD59yOZP@z|G-98pGroeHy^9G)|8(GqH9a8o$cIyl<+Pm}6`Iav)nsR+(WkBw{{ zr4n9#LZ;>$6bV++`kE6$omi1Lb$@RVceG}&Ao0P2Xqk3#mA2j-KF4*%<+ENK7L|li z-)@n_~t1dt|Jl*r&x7|qfp zH%}}wqS8*h+AEV&vT%fwD}okU^IbP?*MRQT%%-8Q;D(|tVaG128n7Y2eFDB)Bu}VC zfVXY&!0XAW&wv{(%>xHsYT*I+>NjQ#cNGW)Rg_-szWHjt<$#_!vOH`M5!z(3gb?+T ze`+kwGsE!#5<8lLJ3P^V$t>(xDv(XaR@TxCDh8UU}sWO*km1LMa`jNp)p^kgBkD4_ccBx%0V$| zg*NM#BXWn;1frt)!&9&oVb8BLDw0{X)1ZK#L67Ozmy8K<;NhE>=UDqpv2f902W(Ef zk>0Y=7JZ^wL%qhMba^Yn>SfvAXOb_spHiL|pN#peXEDdm%4jsBwDCw0kC(VS==p`|g0rO*9+qcd{4G_xttI48}$ ziek)l2#Z#H0ZCOk<<&{Ww)w|RcBQFSu}P7(Pvtm+ZJiir2;3MFWbf+SzwCZ& z$i|JuAl+>_T{bxT1fV6wPHL#Ngk}c_D6FQFQea&})Ye>BD^eZj$r}w( zsecKqFigc3Ev5rjU?ZTkLfu&S7* zo3rr%t(PE+F-hYwEmH$pbwdYNMWjl?k#p@=>!lD7foRVbDIp~&DF3+`!ofqdr*Z8! z?wvL{cfi6g_Y=3r?vby&h~2yOptfX>yy|_)o=A)n9pdrA$4zgZ3?p&4!1}x=cs3gg z)5t_4@7|glg&au^tI!GBK`G4Gab>h(&9X7gSny}GBF{n_g_K|vx5CY`foF8YjDWms zsHk@AFPfDMvo=1-3=u5 ztC;1llcj5Bqld+Y7tm10@iKp*@<0Yx-qT#GpE{WsHjdFB*$9S^spw{NUn2<=i^s4h z7aK<8LW^EmRi#{l1*jzv8)u}&EwXs-ZEUROeJlj=!8W?1Jdjaffthb?yg8FitM~%8FZE92OYELTHWo%$@4nP~xa~J=po%o|@rOPc z#oS*AQ(n=hw_r)N)+*lf+I0^vhTNkQK1-BD+RVus)^gD@HyY&!rM0SP)7_K-VKno_1xI3VY%c6bpBF2;vVX^vU z`!JB&B>r){bG=!!04=P2rH8QPHnk#t?FgrhhH-ug(mN)9bj9%4wFaTp5e96Y4I?or z4u6xv;RTPRO|uA>c50^4&2nl~0A}B!kA1{RXI{~OqV{74>h~aQoDeMm>EP*rRo^+j zgz{m(?nxYM(?z~{j2Er6RSpcpPkogRH^g-N19(1pcNtfv-TCSve6psPh;j%hk-4Y; z=j$J!%cYAS5w?GV&K%Qk%x>0yT!9A6`a3R{UHs+%5W0~F9SRsfjQ;NUxjec@0RC;1 zYFLE>wP29T?WOzLF4EV(u6^+TE)KxDd?QCh8_?C$o7z7+1OHKW$X^L1{_gZ+27`cC zQij3O?Mw}gdA&3B|7ni(KbFXKo%nX`uWJlkW8fMC*BH3Qz%>T0F>sB6YYhCW zFz|Cp1kgo(-aj$y#LD_37mSJNA67d5Nz|$MO|#JO4*dk;v#~1T{$S={>o2eh^Y=CW z6XPv=bREZPH)}E(7E6B?hPcQu{YOURufh<&4F`|~{M&{Nm!tkm^zq-v0sjN&<51$) zQHbj(#Q%>CVE$Dz?{&M^SM`5427Z3^zf5TVajp3&)dqA$@&H|?pi2||f&KvcPAT{w zp+7*V5#S$L`F}x%U)Df>{9J8UaC|@5<&EW%i5mH)h8r+2D$Q^v9I_ zOWMn&yC4Ll?`(h{3yq^Hb9+HQ2L1;fkrFie}n9Qb?;Z_)vvqj;`{%6e8Jz&|DU-F2!`-{n7|-<2m=fV23`~{ zT=%Qa`om+^-#Y7G+V>U7>CasCjRy2zW-ahvPaNNgdp~p4w^@sc83Z9iUCvspL`)FM z(JwQjE?JkC1NG|$UrjcDdMbS9asC~HAw$f1WiS(DqN^oBp-E zKz8s2nG14NfcTdY;_P2F_v$?OW%siF^|}6?kob4ZWxcrS0xvFTK(=4D^=e#yl_Ymb zApQAS{+&{IWh%s|3(hTsr1_oF2Qd!>{C2&CU>0)Og-{@W*|nFP)gPVzoF)fi0{s`7 z+;|Rcb%e7i+j(%Wm+t_V8*stOAH}7}xe1{D2BmHFbq?V8KuJkPultFX*L!_~na9f7 zEfY#gj`Gq%haTO$yc&DF*`2FfK|yLfGl7jQ9}o9=dC$JY4L0=Doqr|DpuK zG=3@Jdi1rux8a=Tai;5OZ#%>Nz-Y(2Ar4X-EjlVwaRCPB1J1i(JPLBEbb9q-0*xDI0x$4uij@uL(U)2mt zyib?ISwHs=5m=8!C>H^5x?+A9je3~mBatK(JKr|CH(n2W%w&ZZu^{(BYgBSn8!2C} z=y{fbaM99!FZ`RQtn3`~YcWC}o(|tuv7V=>2AjMq%`^WvQ17HOB(|PWv>I6td=V$D zMM2ko?1owLq+l>Ao?#Sd7w_wtW$YCGCXN;sS9QSlUQK+ox$sS=u~bjzh`qozUPR(& zXxdIVZ3g{IwsTr%&-bOL4$<>^rg2%xC8J|`H*F+fYEdYC<6TY-%Cv8Af*a_DC{kpA z0)7uBastp>^1M8r;YsNx=x3tgYu0;1C0MTbL=}a3-(%mXw$&a}L`tH$r0i^a7;l2 zskokcB=?d~Lt>)RZj%5!I--?7J9&rRIUFP63CuEwqu~L<1Ma_(BfjT(GdK&6wkf1b zA&}svQdZVJ2|<$-=B1(2+jgf`P))cX$ApS4|^k?g|QUnMw2GJ4iO_k1>O6h*T+AZSY`N zHJ>S#GacD?AveMGo=ET&jXmSDga2wNnp_bJJ4B43Zx}zRtT3zN$vkiihEJ>L!vi8K z@iq7YVpghKG*g$!M=ud+y=i^wIpj+{^ z_y_CK?0&3aVHsN$P>=MCVC_>Fcjpfr;*SA418+X$n8)Jqyp_$=4^8HND_f%&&cdf(vZIQrW-3D-u_nlE&6zG=`W_h zM-u7w`!P)YFi56nWo$Iwn^iZxW1`^^yvBpRXvP=>Be7M5RlJ3{a z1}H^27*@uF+TCQcQcm@rrHsIZ8VA7ap9o-!=X+sfRu` zzS6XNJ8X0ewXLlQ{>8m#NO{5{$-a*b#CQxbCdX|BR;;%vQMiP>UhOC?7Iz42uTjw7 z!nGh>vxUbSb725E+{x?X6XE2A6&G(3MCx03XTVBxPcTl@9n|vxpBcxRW=(J4)P6yc z=7loDejKp=BYt)ILTj9ftsP-N`-2gassT9i9_+` zJ)ibYLD(+nDZxDZsKm!v5MEa@qeG|4EaofrIRLO!TY2ud0yGZu()%w|KD;zZm@e3vom3`vfPp0Y_UOeYA8JcFGIj5v z#^>{yr7M~bN}evW!mc4>B9&%VRDsJwrCbf@kS&x+0)P(>VEHx+6AxaO>!*rQ;3&v| zjPE{edUP|D)Ulo$Wx~sd1NtTaf%ARLMtdEwK`20W&4bOh3+$WK^>|wZU;*=y$_#~3 z^Jvn073%qO{db*66k_Au6nsE7iNqEtQkWW?sbD_HlFgRt<8U3iD*^ze!n)mhM z#5>fV56~T1%9vscu5~-1!t+L?_3*I9UJu7NMAtxen)1n^ z)udEto_jN_M4wOR!hAO=mHOide+pcyG5Kd}19j3*-3Zl{D9K9CAKlPx1qXf%Qx?O* zv|N!1L}mnh)Y(VxM;htP5Yp6bQI47Ss_Trko+;DGw|{A%k;Ivr9ubdTn|08xKU?eL z5zfIX(JS&K0kJ=IMG0~#N@k`HyDQeDv8!)*r?#CX2h+(c|E)|AV%EHwJ^UBTSHhb{ zFpcD<1yXiv8}3+Jx1?Ur;(Bk|A0~`)6k&>F!ar@~KO70^8Q>|3T#;SJqgt%xggMP+ z=8%SIb32U7bT#AjfL8s z!)K~iX&1?DN9K!xWV(N}?#`YT6eA$W+0uGr^~kt|)V>suD+3}}xj6Q*FvGQsK>qAx z+>uA|#Ear#?PRQfjE1U$#jPEoyPuqwjaqIGzlI?15xxT&A#rcovZ1Dl2I0;-bRiEh z3j54Kar7ss#4GnqgfNZ>+I)ykq%3{eHptWoM83*e7E=ndD&9WWd(N%69+!olSRqFv z#kp|XdqM8BOmgMHT!=91cEqq{l3tA#(pUbNwDWZNtn=`U*g^GxVN>#FJ$C_dAlLg9 zNj(@(AZzOQO6r94d1{cb#K6*UMBB}Cl0p#$*qsGO|Wb`OjRH4 z7Ukc@ZfFfjb^7ibC*`TeykgVUY>s7CtfF03O{C8N++9GY89IiZ#t~aGP&xwuL9=Fs zO>--&%Ih}&Yu9n4iv>QW zGB>WIJf;?jC$1Jd(HfSTL*_w>C}fj|;{X2RMtmfPWCyRB0uMb^L>z}!X=I-Ssl_w07(R@u&A5wZ-Mx9gpg z9!jO5ZB!M>mstormc|Ybx(}Hx^t9@-D|_MgXwN1oE%A5zEZ8{3bPQvn39Rt94z)gM zp~$otSycPjY55X6_*YY-o*sZ#Qij=^EPLQLZ*CiRkhThbP6{IyoqOkw{JA6k(dTjK z8QS`q&nTpzTP-)KUvM9i6u1NL&h1E93+2kcsd*_?Q6p~iKG<^f|SWexr z)&17RGdiRk5igT+$qC; z%UX}C_vId5+zrh(#4rNC;G@U~EKW4>JNmnp3reuw6gn)xGws22vEco|;DajDAg85w zPV$X!J(KW#dcxgD(<-y$EtonCO4my_ZP1SH$&VImB zIY6D5|3INXmCtof==sWjtEzY)@$`srwpJ9UKM7FxIuTQzX8+zmKo2*R_(Nu%X;s#2 zR~g%xvg{fYNDj61x7)BTvJnVq#)qCJkwE4jM@uv!B#9-$vV`+hah{fuvywpva%uB; z=aq^8GK#=Kw7LpJXYa71SE}m~mCc=S{F&B|VrI2&yd8Q#$6fgOj)V?TXj^aCE#r;l zTM{>mt#|~vuzj{99>`B&1|hsC#A1JL=*(MY16I_0z`CrCZX%igt}kGPKKlIWFvdLR zlkA!h{aD5sog7p!6cKq<2x1IdW9C{Q(wG*fVC8-K_W}r_CT9A!qyl2w>S43O&vBkD z9zK38>pqBlsFMIKZL>KuM;GXS@R@wZQ0eQZ6eBhxN5}4u%&1k8eD^o_jYYtQ!SW38 zCNj3{tUfng54n%1G#Fs>ZXUo4?PrnybyYn$9WWOxp;HF`aQ-W1YSp+ico$7Sv zj`kVSc%qNOwRFPOH{ic$+KYRI zo%*8s36OT<`HKV!lFI!=*7fa1<>ZcKS9Y`wIAr1@6-2-OrOMMoLg;4sGMIw6=LGn{ z(X54qIA+03%(6Fn<$;bLNcxB@O4G9&AhuKjk`&_?u&G^Wu9&kI5w{L4Y^YlwYFU?=Sx&1qUah)UR<=OH z8wIj`eBQpKAX9_^hxkfd*q=ynCsW)!J^|dCfyiq!X)`t)^m-Q7gSB(tDOR!y?S56N z(xegAs``9Uc0Jb_R~hBt!pqm{jtn%?ht$>!(b@M`GJt|;gw1!)vsVzy$q#*9R{XPh z91NUppuBmtH?({=yf;tokk*I?5aF6>N5F#&PyUt%I!vP79f}71?7W!tQ=bqLHT&5H zZ5SrAte&QN(oqOT`V<}-qdRJW0Z{B5uaB}og~V1Fz}AXeAfuTMN4+*}Sf_rgbYvC) zGtAJmHo|seac_VPwDvZ)w6YSR#A4ZJmeh++Tt|sVZcpn~P@Q%E2s_ijr`?45=1qbS z2X9?x92#5!-)CPAsQS#%A5ui}re`D<-C%7fn$}umf)n*_Z!F7$iemwpwtlUskC9C{ zT8>svX@;9)$kVyYjoV`_e;hc<(T!HNgWA=?k=h)J(6;A6@+MQ$K4MnU5uIAN|45s6 z@Fd@cs{ejoJLl#OLXifwjqnt4O7Xorh?36`T|eAdC6zL}n%*P@y!9UStsUAaOnsI?C&CqAul*X%pJ={re zpPLy}fs{9rT_{`(a&8aK{Wu?!65Q*-HX?!B-4?QeqG>aCdgOi69~v>Kv(M^z04z+b zW$P{osvW4*{~$A6`JM(Xi+{zXgn2Y?1cf9d+YCJEPaVlA$>9N z+{XM^p6-OPj(R-vG(rH&MA21sPrhR-pp?S=VI=bli<7hxbAIwrTc&~(bYQ-(awAuT zS{k1wOHU&OeD`Pa2);?m4}#pKz`j+G;%=ZcvX!AcRug=sH!g33x|BFydi))PmK!vt zdQAPc>sBN6D20~%2TQXP@Nj|nXbsq>jB~s7)b(pmPVmCrw1C&3eTIFCv+>pqo_LLX&Cf*Y&BRw_@&U)o0{+_;xqB`Y?u=^#zTA;`7muOqib zAA8S`7I-uI%-OlMQypFCqtp#(r&iGP81oD6Ch=_RTVo1MboPSe&)9C(nyr)SdfQ4O zs2Sc-EPSPTD(8_O$$TK_6%@`sWgHlyU*de**-$ux*Y~S{%~N1ajq>Z+xzl}$mw2}8 z-d~eV1Ii*$08dPx4c;>LMF)1-x`7mMqHD>>xD7uz=k{b*_ysF3I7X;{1osR-`4j-O zOFJUN($Q61z9H0S>{oyq*S?r)7M3`KzM_H}C8R0X)%-MKT2%6t-$?duW6cr6kX4ml z1@o{Ma_=5akIf@by3dd|Xd{J3$hh8Sv{db(Ouo4>Gh66jT#9!fSkOZBO(CMY@8w%rxb10a_xEgcauV^$f7Wo4iq04Po(YD|-H8wLfxm1LOC~z8?TF97bXlg_B8g2A7 zwf`y+@^`Zi3q-T=ijVnSTl9Y+AJgVK6Y@F}@;VbT`QM#=cisPW2Iw^gt}$?pfolw0 zW8fMC*BH3Qz%>T0F>sB6|2r7?IRoo*N1K0Qbe)aqihs?__TLV!KZJH8f`S4*icUb^ zcE_4{clTh7X+tG=KOb6QQu6I-dbi}e|KMLnNeCsMJcp{~PXG z{KtEJ=L;gbo>!u;EP+jsi>|GxXS z>g)Tq>-)CrYxaNKHTycG^nWL$bUoJBV||T*YYhDSIqg!~;zwxt=i*-9cU=F2q}TVo z*BSmtB)xvRqd6ENLjwdd|EAM*wIle2h!;fM3kYJn$PvBV-kc4xSvREo+lL|BVMEH_ zgmwN()a!EZ`Aaul$f11G1NkB9bs+|FA^-7TF@L2b^nEw`D~%DB?*ZQ5M7=K5 zyueJCqFyYQI#obcAf)t*0xoQS5cK&ai`o8K(C4zn-)|lMrxvp?L6l~I-wnQyo%uz3 z*{}93|78!eUFp93sh-bei+|T%h*BB^1K;gsX8L74AND^;as85i+5eEM{5Seemo5H1 zd)dFK&M-ril8AtetiSHwi^2L1VD?K9GwI*q7s$p!55dbHw!LTn!>Y#LTKj$Ue=bS~ z!7oJYj*SS&%u3Hh#K!#V*k!*89zg_se$CjwKG`lC{JCo{4g6;7H|?%}$k^YVXuoLe zU!P~}7Y+X0*l!kovzCqNLe1_Uvi9$sGylTA!HmDhAj_p7H}OhBg?7bjS!LDk6>ZqWj@@ZL3LGNc<<`S>CEm)*etMdxVV+s zaJF;GuyV3b_I|oKX=|ppSIR5le0Oto-PCnq<8;tfLhXHQ_GhrhI9#uxHTbRMThCFK zughEcd&`pzy}V_qMkT^eBnvvK$@ZIXgfnCoR)v_jznWn_rcHPnHmpm0|8)>FZ{3pX z`R?HAdepP`y>EB+)_Empxe^~XHB?D$BO2b%=q)tOt!Sml z2muvLMKc+T!*+xnWjU$?gADDbVtCTUH-r0jUM-K_By7e?)}TU{Fo_IuoFg4DZIGE{ z#9v8p*pW!7092wbHEVv*e?*%8N$b(p)5*@nZmeU=E%Y2K$>Op3vg|M0cRiO%C&Kw%@Ss7ylu7oGSv$*aS3GBLsMpbdMhdkN#@DP*s7apui+V9wi{K2-N@0`%LO{SSwv#rOoU!1Z*7GCSk=ZQNKdDjGaw}K1>f+l9B_oQ zT^rm+PSgZ_^3=e+n`$D{#$ppY+)35iH_oghwE9g>`Ov;FoeCq00Mj^33d!!sOBbiH8_Odv3nkfZO5O=T|SI z(w0Xq>{6ija8GxH1h?d!LBJVxnv0wDa&c<3rAdLM493^a6qKoDB zP925vq%5&AcdTsJhHiV`_r+&<^a^Wc=XsnEf4A6|YLs`q-=%TAe>`WD`ckkkxbrRY zZX1x2t`=X^??JU3BeWU68f(_fBzCmjDc9#R)3I6DWN}nD$>KGxieh>*s<#1{^qg^W zI2uTLwCYhc>RIx{TX2@icRQXXxUfb$g3@feg9JXd)fp@~(CC@OF{ZDr+!^-(DIPjf z_>%(l>;39k%qmj-Md3H&;I(Fx4AM_*h^vrtve^PbFVwwwX z%3MTdak`gzBrDVT;C+JVQ=(E>;v){~Avbp>+yb9uMILv1W$HWKYBr%lcv**!>w`S_ z+NzFI*z={<8T@oRM}sU#Ts@+Nk+&8-p-hk|PM$LaKT5|D5i2NYjsHUDjnt_seVbH% zH95LVbq9%7zPfe!jz)WI;Ym1o{l5CjaopDoVAC2^ic*fxY_XYq!q}H?;{Kdt$SrV4qv)>4N`3#R zt8rt!QQ|rwgk(5JkwJJ_I!2rue18jzc(XZi)eTNz@j{?e_^(`i6;b-LdP&Q6K ztajBJ%6!JMeezKvbT8O%=?kwUZ=y?ww*QvHDOk(pZC2kq)hVrdjJCuA$)9h=(ozj^uzGK{AT4y}ANo_XR+ z|6FaWfkjOpqOq5a__fB?U;L=^13L@Rz+9N%7t}6l&!Q)+@A?(TahTxaILma{=wweT z#xRs3b8Ne1XrUJ@_zor*!`d0pr$pgi83x2WCHJ-V@2wYG`NH#PEH91ed+_TKs;VdZ*Ef)Pxlx)s zH+QZ0#Yl|7Qq$5jPPmcVcXik_(6z;nf}7uRQpTaYKeRG=)!uq6vsdsOOQJ`vVu7{k zW;mQC)bi_P#-lgw;tqzuD1qVeQg$t?sufgo%E(>pY>^`DY`TGp zIbFs~MY=C{G9GypuP=C6T6L2T@8TpJDR-t0-cHEVTIWI^kj1{sg3!2uWfa+t;x{EG zW95WJDb#gD8C+!xcrQapE=emNNPS{fxzM1@9JDBZlOsI14k|KFi7qQ_!hm=d!c$lG zRmuc&vXe6Tzz57rPGXZj+5|YSmyn`h;;gj`CAQ6Gy{~_Hw|F7hn(g#XFKA4v9d=+9 zO5bVRe1apxybAvPu$EQRz3{XxSo)R>|pl6h!k_iI6VpcXOi{+Cgdd=J(oy5T?s-Nmen78s&exq^9k_?GN z3X1b?=^WJ)f|sAn@kL^yNBnOXTh_byAG0OFBlPfdVaQ0u5ocM;Z_>C{3aSLA`bKC} z=JQ7c#m|igP_H86kWuf`YH|#ZlKHR>S}x`BM|dbv;q^ZI;OTVG7o$ZT?B;fuh;%+L znSkL)y9za=Z1sWtt92DlwLZV7%LiLVbS&LRB8teO0Tr~ST?ISXo1e<_;G8P*9Fw== zu$K`_^pS-5^+5o#MPQ)2U6)s@iktVw4(RKsE&6rHBNj___ktbQZs`vP4x6W39KX9YZjCHwX@=?nlo4Ea zSi3d;0_8^jb6_2;g``1n!irwUDw{pRQsVBTFAH}{@!Z*;sJ>06>Z|ji)KaazfyEpd zon=PZ%HzIEF~-bL4Qq!skK)#Pjy(Ut*OuEq>UrClOB=om((`4Jcj|9*#l9-6ARwB) z{qR)!#*T`1V=J92>8`7|UDIUbgre2+msEwAVegOcwb|F@z1o{@w-2M&88{&}-Y8N< zC_ED{`G`(o-6bg#w~+ZzG+)mkEVananI?83ol@+fXpLnY);`C^Sx;(qoj|b64aPl9 zfaME17v&5~X0LJ-8)Yp^L%uTM+*_cJ=mM)oHcZSQAc438dV^wdi$`P$hp^ zPTQzYFuzH~v5>(b*G!x*%l)`t#)=YEv&i=rfak^s85_z#L&lYsS3$%F;rDz`2vEj- zqes;HR1hpmy1v*o9PBLEuHrjb(BF%<5i8^ISuh}89y-&cWrYO@TN<MY4Cwz)t zVBn@y*s(H^L-kmp9|d~Zx^{#`89{DuxB!29fCM*}BSog@@rnZywEZxOtjghLguMHD z%Bglp&~O3^S1n=6I`Ls^roTXDRlva~5<70A`op58Z8t3kZ&h41G;;=t(ivvHZGk|a zqJ75CGpPwi;99S*MC5xgg$AKtA9~?w^p?$_&LF@Iwy)o033huw`LHjj?Td}H!lqp# zJ@sqvC<$ueQ|Y=mk+xejhT_i|!&n}C{-7DH)$$>n>;^`soBY>6?{viG#F+HEqGSPC zf=7ZoLZsStnL8?6Ooq=XLIM4);2@T_PZLij=R!EhvglYvjYHdBoSRf~L7?jCX{gvg z^qRjJ+1txv=?gZy7_i!ckF@7w$P9Ht91zC%Ni#{D5`L<(?z|Bu zmv*`kbk64bdB%gBrH}x4yMfTWUaea_e+E~yzRSo!fG-jOT3178k`+-uI;wop{1M** zT{7M95d(ne0Q=AL3BEmj{@qaOw`bZv?vC*7aTD?&`#%y&{ngzOAmKG2%MaD&-|vp_ z7lBeR<5i3c62|-fK>p()AM!K~hJ*lqA7uhFUWNVsEQa^3x!<1fL4O-1g+vY@63iER z>#WQd0R%AUmt%Nf#;ZWgFB*Flm-=&KFPi&HV=wH3L?SMYg&bXM-0-UbiL1EHFPeH4 zmHKm2FPi(irUF^%As7I&UPMs95Uq2zU$qwa52670*C@Db?(bU5c&WtweNP845E426 zMc)FihV>Wq!@&@^{T3ejn@ttKmks`AFBteeR{GzMO98JC3mMkGic5i*{%c%{{30$D ze{PltYqIY00-eqBefRB`03);o1do;?t=l$xGYv@t<+2}!Kg2SpX<(Mx6)&uPlFX2n zbtb<=H<3@!46DHIyZklyMv5$7NEo` zd{~kY&coXff7TLR=IU~WeEvdw03m>T`qBMc36Fd`9h5jceG>d7Cvpcmt(}xba|VY{ zMTLb|PMhZ~`Gd@n$nU3I1g5q=w{T`myJRkgH5V$s#WFb2XP|fqh>Gn)$Yzfz;^Z`E z^q%S@Tn_SNXU4arAaCm_j1oP49NopFJ>WZ;BcqZu5Y7%xo0TYzNS{$H1h8&s3}=sf z7JlrU>d7Y?AI40W6S11`Q<<+Vx2)D3de`jG!pyfC=hvr?!lXaRilFE%Y%uMzuxqyY zGBX45(;RwIc(x3&+ajrB0bj09QuWL%YLy6c3|0ef?)3DI7j$lLbE)4B z8}o~_dG*<;ww;?zPd!X_|v8p`oko9qyoqzTSrXiKDJQ6~|R_$(YC9)D6>+Dc?6gc_<&4$z?u8ek_ z$bqDw2tnNMWttn=TnE>e{r)hsCIdlVro4SIF`xagsrt9Kbz8@5pL7o#H`1slq_b5v z;*UlxcO(eV$j16--Sdj|l11KsZypn1j@a?M5gZXq#O+&=ouFI;M-F(FFh@a9^1PtH zfX>?aiRghSUx--6gRH8W{p5rP=9{IhpfaI!2gPPhoNC+_khY{eH3AdLg}4wUgj-~H)4luj-kTohyLa4s zKJp_e2JcwRS~cGa>#1kX8QWgUNzO(=3UWOn%h-*{$=fQ$jfi0}42#xdX4k-dLa9Si zaQ@;TupJ7h0Yd20R1f)KJFS34x2rM%S4(qw_E4%vN_8&tA|v!$gG%sN59Ntv1#?xG z7PLFpzPHd+kju?U?H8egY;VW9Xi?wx5qwlSj6*241yGu0^* zf!MMuu;tG!V8prJJBK+M zVr?uA7)yTx{|A#2{s)sv{2P<1-i&GkFe!7l?@X#926*TiRS;}2XMw}D5a|a{emCdDX$y{Drkp(n4Gk`N&gzoN_jn_gLWa&g5sMjt zrv+-jf>z$gm(<#8i_0!(oVc)!P7Ty&X!z#xu=`oAod0ohyMe#~S;${8-`dZgtb+v{ zmziCzP5pgVH1NzodVL&r06i?s2Vz005n05J4l5(`=$6j?btC6A%ujeY#69JsY;0-F ze%jvWu|SR_Bhk$p3Q#hG2(gzs?SUq?;pH8ek6V*Ak4OSzd-vx<41ABI$&+xe$_n|B z#|$YtqPwfB0v0}gs#_XM6BC%1sz>sOQYR=`N*~`!_8gXfY)ad9*f< zwGe;XO?IIgV4V#1IR>lLU!~+to6&@Vg4nA9lUw1aQyapJXiv|y;ZzvYHiz~sktmG+ zNN1A;6t-i6qf{)1+dNV!fhPv98c3*mA?<@(*N{loRs;vC|7STNYxk9M>U>lv#axw@4+n1veBT9Ma&LK>pm z^}+-inj+`0NT;eF(iX6odLlcHZn=7FGQ5US@O!nmrNH^Tw(?jage|r2hfiNcovjjM z%b0AwiN1ta$xD($K5hlZGyA{fDOhYU3OVH(# zvW@gdDZ@8#T$&AWH{+Rs+ThyR5LKsdQ|Csssg1^$ftw2IqZCh+anXmrKdz0^7|>>h z*nf+`=s;5r_$%B6?MVu>kDRY=bHNvbBLY&#eVnvU$*J|FH0e_a5tvgRae5awi&^9eq4{%IIqpiM+5xR%}2etHI{)F8nj165AzqRxuHqt z?IPHmVe?%j9U}eMe7TlQCZ;hfOvXj15*D&3Xywl=#h=`m+zGJ3nt>V}Dok|^gEk>g zjI1~G2n$>N3LLC@@0PXu1z8$c1X5y~C%52aVuuxFTZvclqvDXPAai!gkhb7-Vwn{< zR-n%~(IV@;Af|Q3R7AknL<70kMqE63Qh^w?Jb==OZjN_Qu09((*}lL9H^AdR4Q6+V zgPp4eDzFJ_DA{$QQC4%~tYgz2BPg`~%8-0KYSEwX0Uh zh^g?|gumm#3B5#KMCUr%%-!aDiV{I}AN)Rpx>}uwb?*_wjqM?GFRJ&X>WY*s9yoEc zSm11l!=}@zye@EY62%zf`pk4qe03f4Brv=auN^U#Q9i(~sk3G`NrXUiUH}lP$dt7b zFTX2*n=nUJ)&U6LkUsa?-Yoc@Q_7HQ>qv^;JX*rFae|XvqeKWy+A322y)kiZ$`%=N zX{@6dj*(8>jAih4YT-v!qV_ZWZk=r`n}Ai-c#|?cVqj;&GKosF=m*yo2oxFr^+NE* zYo5^ZvLxMD)Kx@l&4Ey%o>dKI;gjZK8fu@aVq^|5Q@`@S$9)A>d529WMO~a#5O>e@ z4Eu&URxfT~-E7BS128s+0o1kOGY0i%PXSM3JlZ5hSw$m3qn=Nlf6b$w&$9o*qn?kMfCKFR`#cIT;`4|1 z1enP8d=URL9!38{>-x9c(6vscUj2ka+jhO#jHj_>?+s0@G3cb=E~%TNKsI-ixuXB@@+-G%%~ zzQgbz<^aQ==fLxFe;F+k`*%a{w*jNf%&dTMqdyz%kC*jlX%xdhL!tjlqZqy~_>Xv5 z7{22!z@Pv7G>YLz#{LD3Vq*Ol8dXB{!;*4y=zga`F_@7=AnRK2}k9#{b}pF?(qyZ-e4?kFSj zn@{^X!tovB;}z7?{g%PtMM7jC0={S7&fT&nyjEm%&^b%~(2EH%8~IVm(Z>1rcOw%^ z3){Qv0~2{sEu-n-s;Q&^HXL-G(tu2|EXxahmTw#7f6Hha9a>cHh` zZIyM^55UvrqY9)Vs^YrY;GC4paqfi{m3SExp4MvobCMm=^@XaF@t1=@EXw zFPf34WNMxCxuRhHiK74%{s#IE8g^qGqtG0ZR&832M*9@e&Q)R314G(B&~ z&WRjWyCaOxn+lFae@y)$`P4qu!$+ccnnrkkWKEEwzO^}DSCGEA36fjs*PB}aK`Ql5 z7jZv|SEmRAAV?Xj0|cqd+SAgmm-Lu}T6@v*IMq6Fx4{L_Lb%nwedoiE7Ghs~iiRM$ zfG>-zKsv9zWmG>~2en$k$WS!kDMCh)R8U$m2&?5&>qy*$fk=~=0%v8+T{#*`P}0tW zXjEXl^Hu4qrzy629Ib(uuDOB{0o8P2j+`EhigP+YK;=?S4uZf zq72+liO?D>07nhN0dSNZiMb&Cd|Boqi_W{*DavdpvD)(naSY+D;(MBh?#?N!V9>L@ z5g@qgb0_AH7A@NHjk#NGVfH;VI2iq;9z}={ggi&ilweN$&}hza^Ngd!_IdGC_BBD4kv7jpRh=J2FZ= z5?Wf+Nl~5p@%q;Uex@V~`j@&PF3Ub9@}GnU`7lIqnGdT}3_+fZ(K66c`D5)@N$q#l ztY9@x7j9ncWxy!uzILWUiAQHqb5JSh5ZICJ8aKCj6*n@}>@Bb8z>jXaQGzwqA2kL& zQJo4DmGK3fG>B4Sql+4OiJGoEE_b-#QWmW)Od0b$%M-R0c+6_!pcGFEcu*?|B0QfG3)3hhx#A_Ftzf(me#{2oHJ-o`s z6eq(oWz)ehSIzo`6DQ;LhW#93Dp;k5g*rDGDPRpFxPVRM%UQ`@?qTzZwYTbIE zMjy3Jv~&Z4N(Adnm#Z#Mm8B=@r$Z8e8}%;k7T`wdchdsgD00dNR@N|yg`pL8ChhLy zG+{?ygFMlA%Ew+~>d#`#05>X^h>aTcbM?YU)wyKW(HLsrURU1RCFz(xTJ4!juq&wM z)C=PLgn>KrTUNG}HCdV~Pxj8JjR{)(5lFbI6|9ajVrBtja(-T}T7ExG5m0uA5>BxJ z$FTi~^+z5n(pag`VEPV9;2s329&24r?vs~FAJAGd=O=CP1BhD#pse71Wk2zQ!&qff zIg)*yt~$XpI+7Y&_R(Zx5?hR2XCp+!2?I_|NxfAGX|G)G-msXPyGio53r$VfRT`bK z8y}?FvZu8OVNcIQD}+yj#h3|kE7dL z5>ag@AP9C5|#cM~aRh%fw`sAE7@olq+I*l*9cv4J~rq0vZQU}Hu8X)A! zjh>?7oGov$SKDphd6mbRzl%U}AoJymj#~z0N`08>0F~oyWl>_Rcw?IFjz{MrP94Sa zmsspbM;cyMrz)qHN9rrVL4iQv`iOBHbWSIQjO@XiqK4g#hdUs4)CPy_tUKdsNmHhd z3cwlT$9nG%J4c%?PhBdr`E{y5?Iw~)f&}1?jYoX~-c}(r4_H8ExvMf_)kfSu@EoRt zaz@j6<`U;9@=J>~EGa!%hBhAyqK>UPs)SHP;`A(rQEVcj5mDUJ>9WNu5e1{q+8I*` z#(Akho+7*h$Wd1_7^K}FfC9hEQOo$)HF2yw+u29`7iFtsz4N? zfrO=i@dKS11T1>nP^orugmIqw@KiML^d@Z~!5SHucHDwNz2x^>7kWW@GZVupFajMC z6mXqMq3USx7L?)4=b)yKhlRd!<%1;f9tet_l=7Cq4U}l9YObqfTmP0v{W}K)N;x+T zVyLyA`0OkVWCvCM;EC)i4O9bLnpU={NzGv0J=?LX0e6OKG~wFKf6VRkcSmJPi!uFhj80c?_^9<1R-hjkgEoH?!bfC%N@L?5l831TH$-EL2Z<2ed}=UEg^Q&oB5RM z^c+$TzCW(!v&Z$FJx=BCOEfduay^8e0;o~c?k}I!D8%n-)FzHIK#i*A`@Dl$g9Z52 zuo}WU|Mr$7JIZAWM|wt?@AZlf%2zab*3R_%LEKKa#B$KlC!<75%C&2{RV>1C_nL%H z&Fj_&O+E~X2hec<1odhPt}zsP7$cn$#kq0Uiu37BFpcw~yx7&a8QmL^7=WC}SM-As#Vp_Np3R(wM3PJuB3h2KFmCv`imJoJd+9pG%h=9Rlf?&>P!^uYT2*~?d-I_adxW;zdYqcM z7U33%2YuTj55c;wGgU_%6ULB(4Kgn3*;Uw5LAhU`p)}(!NT=u^E}NnB%AULTO?h)x zv0X=*u9!79${Xs-s^;xsjqBj4Ys7~gx&CZq`7hYkFI(|$(%l!do!?SW3($sD1QwDO zB%K!#+;J5MEVyDc*-ZtYW2^PNw??}6LS=7xA0^|uz=+!jdIz6X`_v2!wdk;af`1^a z!zwc@>?lT`$E6_3SZ0QUZo7)|ah)v54AB=e7ev=;Er8c`MG#6C*4y5z58wMOh3IM_ zvM-7rRIcuQ&=c8HA=?Bx*;+4t4v8VieGtvkqYQoA{mE?~ex8`Pm?YYg!UOpGmX)Qj zlVUO|WrdIcM~Rs+Aj(2R^M-diL48Tc6y^01kA|NXK7T0Sg^DpZXBG%mXS(WYCL4w| zVp%|>L9R=Jne&%fVq)xSrW@8V#8ZYm`xc@ih6e8vm_aY+xwnCbP+B}+%ecp?R15Ov z!?r`~bbR&^+ZRr=1b4rqkLS3doB0$gN-@Z5Ru}FGT8&G(1a_*o3O0A8{Ax@=!(a4m z*n4G-`oGZ#3L`{(3fc273hONw#yNwNQ>J8VR9w$XR{apQ%G;@eA^RoZ z71ULAJ(uc~^tJ1FH2xDhlJ%i+;lF*5(4JAewupQSsDzoR>U9V+9W)1Bw#{xVdC-zr_d zgD6J2pGG^+b-#ZrYXlU_K9h|<+f~LtM>~HnBmU!}#_xEK?t8KC-?S)ZdX}F@JBaSR~yU34#0XpKolLr&r4iPKVH_K1yPLu%!B?bhC25%vLBW2)^g86`L(f%0aQ8~1!-H#kv*Z>Brcq5jhXcbd zCsbM40-E^4LB* zVGUByaQJzYxXfwzMOh`cQ$5qE2ef- zI8lzGCBD**&NTT@l4U>9o+(T8j_wD^E~P6=l@c%1lJHkWG7~6{iVQFIIO>YU6>f_Z z8Cb5C$i@*8c$}k4l9Ke?Qwhx`K8oGA`=BtUk>#9%#YQbk#`b7cI6@3tSh0e#aC`ci z&~=e>wIoN%Fgnvg2Z+^WAm|A=A5e_@C)KQSgqCnPjrw=%mr@z!1da!&DyP}92ppPm zV_zF{dNGn4#aY{R8{qHN*TK*5a4QV@>*g-IH@<+8+S7BlZz4z+*dcmVaqI2i z*prw?cE~VzYGpZER=r>vzuZv!j zh8fP;G#ATd#YxZhI^gcnkOpci3XZ=Y839rVSNF-()j+epz@ux%T%Zl;GRq3M^ZH)A z)}2jY?be?xZW#gFFJ|b=aLTCu2rTjOP`Zk726Fs1%-2ed1{gC{mnQTB$AP!+M-Z2r zi`(xRrAXh7jnfjrIq&M=6?|Z$JliNCaIU0NaM8n$Ra^`AlXxXgjsb*`TY(*WWkD%E z(}CwY{Br4@3)Dh3)7VFUf2zN^n;4NbqVd>RwHV6`A{_kK9UT^p@-AE(ULN$m_(KJ_ zU5VjN#Qn>OcdPmuJ;No&){ zAnHZQ$2Dzlp+BTUv81%3>n%0BrXX{J5`iTw0@b78>?5VSQAwOV0@EFcw*2BJw01o{ zxf}SkjK1eoBr7E}X~r(AlGAKiZrAKu?+nPH5FwRPNT@%3Q(RW$AZmu z^u0XqI3@K}d9{p`Wg5bn_sjBZ1s)07)~hl562;9`n2KyNL%+g&8CiV0-MHM|x$g|> zEFy`teKetL^plfNSS!6P9^8wo(mN zl;(|GJpXp!wGH!}?c_%ND$s_a2AuhW{X;WOGXOy`MkOE@%;KX5SH%PDquj?=F%8zKbd4yo4SG8qv_D@?0E|tK0hc3LA4d&Nkk%AB7KUTBtY(@Qspdliq}d>fE#!3~rXuVh^q%N#Q- zKtFLYl@Df-LD-m6rEfDz!zS9u$1bHlnk9EhfUJ)K0$%h zFK(R*EJ51cvcixzk=!ji;X6XH4UF`A2bwdR?P`wBQ>#q)%uZLFK3Q#{Rj-&UUQ#P{ za2$&^ruds?$lhYbL$qVeQBU4dhngyd+C`zNXap8TPIVI#xYiOKG_jBbQrnbN=mmrM zDG>Hx`N~yq&n>WBQWg#?AU`y6S0SRSDoL_Y%6-mZeHR4!#Gqm;g}^=ZmMOU~#F*Ji z0o;!flyb$F9) zh}4&B2{YY-C4N`Ltk~TK<+sr(jn;7nZ9611>UpfRO)8LQZZP9UuC(=sEZHvj^;p&j z`Xx*2RCYmqmOM_aGK_i}bdkEHrJ&YQ7*KBdl@WwG+(IjID3EFZLW2C;;~+rsSTwHA zDi(v|RapTQ;@3It(eC-?$d|YJAX6?8LO3*T`243uFaqf51d)WLYI^;2x6TIWBB}Xj zeac`&$Xgm1W?tN>RUDn419eKv-p=^Yiw;8O7uvVupzur7_Se!bEVCK z^y-LRGk8x$8&A-ZH)$ZsEkdcA2D8in{QeXDTKXmLLa{IN@umEf9tt-vH%HhMh2+i+ zKy88|;3%KU1a094s7?Gqr*>@mWA3VQzNZi3BG!vAoih54C*Mo%&|kj_%)ituRbXh# zJ+#UxdwKV6?T}WCeelu4g>neDtz&9&vvgnuxy9+d#>Hyj@_o_HDeIsUVIfj1?V5jv z(8e}Yv9I`hV;>6tcLjS+8wDRd5_Qi%6wCL8N6sV80Kn2C3f*1`=sG5^LzOsME^R&i z`-4;_T0wqnRR2|Dv8hQRK^>@JyQKvo!MHL>PrVjFX}!d8*x6u0;RuJ}3`|p45x9`# zJiQuX^}Xicyn4SQCdR9oeCN0ggZw3=ikOm71+^`Q;+REK;`TFx6^%8VcL5#(RMiTE zvg)3cYS)!^r}qH0X;i9l-A%Ly-E-0@EV`7T2is>{^qb%WmgaoJb~g(~2^UF`6qczo zcP)=)Yu2#c8#P^Qdu~`Bi_cX{+aVmdGv}_5ZnjiJGzi8ZG9h+af7B9)|V}tKXnB5&1*q< z`Pc@_KIM=?<@RqpAp{gopb_hxh&d!^A$MpRwV2r;KE3TyK9DjavALABGVj5k8oA=b zEW~F{1Z0BxStvve95`9)Q%Wa<7sVe?h*mh2ENkq|AA&w^xy!KBV`U5GCqd!UsOEXV zteQb4h%E5kSZ`7gsutqWs2h;NOi}tpdOnp9+bM-^Pk0u6o1LUiSIE*5HllK$(5%|p z&c84kpB1M2!dYdd=T{LntHlC~?_B(aj(xKYZ9;1jM$1omD7C?Z3_e5LSWN;1QwnWe zUb$rS?i(S0Ue#S)(Qd(E&VD~rwzE!D@WP4T_I$m3SuBTcwq8-btb3J8>1g3s6x(YE(5I!iOM(Eq)&G&>{H{|D1BfDi%G zFl2U6{RPsK3vD8)d)5L<8zA&?-#}f(FuWoE_3hUl{K|v>!?yva6YpFa;tg;qi)#HJ zy|4TZ4gSRY%Ad6Z|ED(}{{a^P1E{K|n}Iq)k7{s-j1ACA%ZO=bFP#qn8?`WMCV*dhqVc`C8q06}+F$)y?>ELDb%@`4l>KIR{i%%iqwm(gRUDs}`-d*}?-fTT zw(pJIzt^uav9SZ%!2M*AB|zi*CmZvxLw)W$_xIQL-0fA{IrzfQ$qd0y}zi2!Iu_*?w{PH|)h^a1?&i3EVm`A5sS zKkNL)#PrXKcEvYNcW%@CEo1Y_t-{%+B-+?c3M+o?EN4RDA#Kfm=`9g--ka7vGRaVb#Cn)PY_N z+#YROg^7IW`C=t(x%i4ZdGo7J8Z4(jitjax6ErdhCVs6_Q_RtMW4wF;CMOj!an==W z#ToDuY~il9KN1P+6#+MW?&l+ZR|K>&2dxbh(`y&<1#Ni?4halDrnInwGz!keqt6Vf z%ry*VvR@v?9^Esc03!&h59Ie7*i0fMtN^INkw#5XZX4^N>qnwuI*yUj| zY2C=!9>RUuX_Tsar7tvS@@rP&EZKpPN}qod25i(Y#0DD5p4D-C*c`edIjtPSdZx^N)Vk?0^;d& zER;)S%377rW=2X6h+#q78fAUO$a5TRKcVSTC_06NTF;8^9hSz+?kBufSYxQtuYSRo z*Jg&W1PrUhld{SmEKuA)%;gx(NId?bZANzMI6nEJHpWaWkE!4gFcKj)Akr#6`6c`! zlrGmbpLQ)hZAOujZ2|QWr4D$(A=D(T1u{@MZDrr(W+Ltzv}~3}d^E^N%M~S^AsmmP z*IVi4Q{CWeiV+pZBerYfx(;y(Zr-#`u-4MNrDdTe)A+Zhbc_%FACiVqBWw69C9Kb9 z5gE$qsyP!;yGj%GEOm19}b<<3w<_ylGb7rg;Wez5A-D5xa_zCQX>+BQcBvdu9RE?&hUCHL=Es zUTT5Y6ysy|+crvk;QCWUm^PBU9Fni9Rq$Uxed4&qBBmlvB-# zw?eCkrp4bC0N9o>(q|{(K$hYfQOIiED6iY3b*;BG#ZA`33ZssRN$7oc;X|6tQG#@; z5QfJzD}o$wVE7#}s(V}TU^Tu~wlRY*aI@QsF;}Xh!?)CEy6shurYB)h!g1F4E1cZx zuXc)vET1P~?qtKZW>u?gBqNXdcNIBR=`#Y0+oiaWifSfpE6FD~W$0g} zJJmW9n^jS%!Z#L`K4~D zywb0VxJ+5TYA4HDf=Ao4U!PxE=&asN>UVEDTOS3CfZkuAE`3|%m;vJuhLTq+t8EEjkA%np4d{gOwdDfmN+rcmJ4PjY_wo+IcggpF zWSg>FtP;ECK_O2Kzyi%Q7>hoTMR2q~aAjc+q&Ne`NkP5m^b$SaFOV|u3s64QU_+fo zdtEzMm5#Se&qtf<9lCXjmnX;BXSc)ZDPHh$ciI&3HIAv*!-a`7Y2DQ{Fnw?>n?PGX zT02JlITA@2P8`F%U^&{_TNNDZfC4#eeDo0|iGmPbHWsnP)b)+m(nx5aY^>b4(d*j(kBU+f*kfr0XI#-C2M->hA3M|;7QRT>(xD)g%qbKq8)siOjNz-E54a7 zGFIHPqEX1r;KcMgF?PF{bdcM;BS(P&4C8_F)R^<0O`3O? z52?1Uy#dq)ip@pF%DrGSvQ5XjrT235SQ4sbGxYv97^!)k8m$CCEDQ| zg{PJpJvL2JR^Mx2+82oQH?hwy;b=%GrMEOt3h8GdhYpBqM+^tFg7VwvW2!^XR)~H- zCJ{TA97Q9ybF{#OB0_CDZD#qwM^Myxj9RpExVKy{28CKK^JpPgpk!v7gN1yGVoPfv z-z3{Agma}*YRd}xfYB4yQ>>E{i4FVofNXP^UxZ>{aXpPNlv4UO+a?>V+R_V$RoIG? z6mQn@oxH8}rVUXh*TW7ZkY^?Txe44^&BPjFP*V#LgNpljzdO{ zJ!v!pySn6SDQZQ)Nqnc11oTo+6gKx`VvNmWvM*R~pMOfu=k(uTfr;B#ZFxBdd&YrC zek{V(xQB+r$&<5_XcVVlL{~>HuW9;#P#&UWGBXG@-+KgWxZ`iO<#0-8+av0}JkWS9 z_h2-|e+F^?$`!-=mTP?^Xwk8LMz(gM!~tYA6xW9to326rWIFwmxe;)C5wJB3nADg0 zig4nm>O2#TTIus+E)Hy$+<-5IYVVwHbkbx1T^%8W2y9TZH}E zoHx4pYxQ*zDG@VW@z$r$;cpPz6TF=E-LMAJ7WdqGJvJh@+>%p_s<`2BhI#x>2oBQK zCj!jA1vx#2Yf{dKqSu@jB5bKcW=tq#yuCgjVJfGcoo;6H>+nAm6tgdIy{p5$-_Ld3 z_@*(muA8E(dN41lm9uJ9R4CNqhTVkJhUouvWB(lm<7WFCslt(9G><^(kM)jNC((&xsqcv|$>?@XA=< zYOAMzVedx6OG!HjnzZK)3Ns5RXQr;bBOfLgI~!|E#p#H-2oIwKL3k6~h<kHr7;ywxilTZAm(YQwS(2>^%fvSS+k7>%jGC^7|J%eN>u{mNU_`9&`YiK`{cm`an ziJ<}CG;W`Dww*wQhlODS9i<=?F4JfT&R@UfHjEgdc(jofhO5p=lAlDF1Gak4I4>7? zj1~>QNXaD)vD<^X!RcT;1a;xt9R}x46hqM_sv#6~!5Z2y+ni0l74aaX zHaR-?+JQ+uQp?Umv54|Zn6N3^ej5CU34V^cEvdibL)W3m4$PtNj95BJ$v{pUeo?yZ zF~7YTWtXWq@Nl!Kc?_zwen#H+TW6zjgp#R9A~<{3fFOCv%wbkQd!V`4dq}mS^!v?o zH5xa3NS4OJ#BHxIf(cVX2|6DaS5?`}V6U;Ccvwv7JFgH}Ro=|ttO1-jT)exX1^*3V z_m!^AA1F-BKTyH{1~roXzpX~n1AEZ{b<)9Zyap?6hp)0Iq)k7e&xWg9Qc(3zjEML4*bf2UpeqA2mXJb1ApvCK6_Aq_vfT_ zYz-{!U$H$aO#s-#YiVg^Z};67d$z0o#gF{^RsZ+;k$~|PfY6_N5B{ki$^4^B-ScyO zR>S_xk7WMQfbZYBanH;B!!`Q@KN2vu72q5))6)Q^?=mv|v~|e*JCE--jqOik{d14+ zdAYxgm7b1=zliWAO7Ia z`mP6O;kjHYdk%yPB*N7 z^_$vF_{QbYWZnBXA0!ZS&uz5FXv{bK{${!3F*B%r<;ml|ibyc#v!A7neNdB#~)<|=Y+{DI6uptpjFJw`1uMbcu zwX)||5>J??4w#3T%`rRFE6QIM*%ru%ScWDX@1Al>WUW+td!xm^Fl&EodOH!CfTMA- zmGW+N#s{hGU|3AZ$i1O9E(y<96tRzt)SQZv0;GyI52%>pi@*p}5}AC+(UllJmt>#7 z3=5AarH7O*p&5^N4U`sLS3PjpWG-!Da))CJsLt53?OPhF4onuvoP|fn{z#;l3+)9m zn)nEOK191o!43by5>1ZKlt#yMA2`P3gq6Xp6>SUGf*o)h7vGg2rB&cmYo6esl-CR| zc~IDx`}y9!(e~&7-4REeDdUO7hC?_cT+D@sBL!x=?99SUlo{z{&WLA7?wak%>l9yv zryk1O-Ok(((P=I6@%p-vy?L-x>wnSLI9EiM?w?5q;erT<7Zi*XHi}t;5CP`s2}a=) z+(;viikuA;XTxuPdW=PFx>s9mj3mR#q75s=F}j!D@WdOEIGwWPyW`Jq&wANx&$=2# zKE?8M=ru~&b|&<0I))i;O*dSGQ?sJF|IVTd3t7HLaz@$dvN+5w`9kzmtiJHflk*U@ zYfZP(oGE)(Kx7fJzhbgL*Ae*yaKWF${=%ng7MiKWivCaI?8K~7r1={mL>Y)5 zf#EJy`)Bw>?I?3RAcLW*qkPIf6UwjQ01M#f>4Eb*RnTJO@|hX>Ii?`)8M;pc!M2;g zg2rHL3Jiu%EK=#+G&Sc=wPowAK7}p5Z7|Q>EgsIwYw#?b9CzZy!@KApL8r4eJiN?y z)gX7$gg33l4zf?`FU_x5BQqBmb6OT4O_(AH5pqlsfI6?Ceyzve^GbAFXp!Gi&yO8w zcTu{-!A#l?_>3O>Q(%Au(@D1o9XK+VIV|Gw1#q^pegl0h(3@ophIq!XtR3@M`W+S_ z3{dHGxa%W^09hGF>>d)Vb{*IkLuDVb3}L?r1yp}%>jwgQUrmpqEJ+96x%f(tYzadf zR@#MSreXlYEBlx^z=G*R%a|-G{jh*;UdVFwkcl9^R_<$YE7T%mhz04~Ve8#R>)`vs z*&HORb4ZNNve`mc<#T3=30^80Ts@sO0l~_(YCpUJB8|peX1~c^=Xtr6K7jC8YhLGp&W|68-S?%bH?@i1n&!Ho2_Ox1Cv&_cU);BgZs{-wwPy5qSr^}3{TZBylxar)? z)!C2SN~ptHDUw8%_hFk8-xkoFha_BH~Olj&kPyApo-F zut*V2&#{O>aHammibQqffoTwp#K)H8dyeQ0QOt8@nBt||;@I8_o?NWb{GB?X!&5wD z!#d#eee_!BroxA@Hu76RoY*3Jf9MW*&FscT$CF7ps+LlZt~ zcKcNcl{1ZEAg=H4>Uxs+cmmPhYtU#Wd*>K&GqIY}>tnvu>1xHPJ6)mWEWqijs;+zV zv~z{UmbnO8enA_C4=QPUpswN+QDkdOuA$buT6drx@R(z6zwb=7tI~xkDJVm@vg#{if%bLK|fU7yikuZ-=5sncic~lZc z&iTlKf=D%Hveq3C+uFka*<3dyCwO2?JWAr8cc)}IG3W*r6^4C+%cdHI+0NyaT#XS1 zBqAhZUXFZT z?ZCrLDdvlhH_q}?zP#!k5y_pT@i4m{?Lh>B``jFd-bT3GARY=LC-Eeluf&pIu$X1O zEcti0Y(rDNzhXSjvvQBbB5`kc9g4L=B#(JsLQCOIEklcOYL>I}kgDKZ0%i%DycqRL z^yp@V@pRzHJ{ofMK9j1r%|yNzBNeTl9zv>pw0K%};wHRLfY}0!ILkbmth}&b=SVcJ zYDbN>=OK=~YN5!*y?jPH?XV>DNI|G=wXy57dU*Kg>H+^a% zW)HeupRU2zjo)2hn0p@?Nxj7|>=79Wr;DN0UI1v28g#NYZRd*BVo)cQI=)e7;}nU+#T+G4A+|z_P>zM>ayj&cO&ItQtk} zO?(;n3On-uV(&ZPn##7lgQy6Ch%}L=AiZ~x5)}~@0YNEJ1x0!hq)CaQprV3^6lqba zbOGrl2m&GsB1ngbl+arsl(cUL9mlzM^v>Kn^Pca!;4d*JIcM*6)?Rz9|6b*6`K!Ll zbO)XEd%1WO&c^cuf7o1*pI_G^|7hoA#jv!tPa%EVK*8guVO+83HI~}~NqZ$muG62c ze;+VMLEi?c;7^EyN0(jMdtP+PnJ?8})Mb>~Xe5h!NxN6GuUWr-vwr9#Pt*&^L({t9 zPgt^~_pLmk?zqEc{fw3}DZWN>-_*RUxdm0z>%c=6?H89S+SeR(AFQDS1p>RBymB7I zaGX;sVok_Qet#@)|58h~gB?Q>w1x3-i&q2x{g29bom3z$a`WY!XXh|{uN|wjTFX%6B^Ab;JmPk= zVJh##TYYHhcQcBXs9Y6Z8MAn`o5{n~51K!Ar(vIzQ}ie93C@0(8@$ay^|yOz+#!$f zVU15zvd+}zHMXk;5zb}TlWQycT}k0xvp|$zKyWs%aNO*4d0GC%TirKfI3vLeDn6pT z!XKt)P{C^GQb(@Fs%1=nbaIc_)V#tb7iiE<3cc&)yt`F)-)B z4(ddn-Xjqr_}aDJvftBOQ}$L(X3L?om%Y7$KE2O~=TIT{Wizj>o2_Ru!KLSCuC3r- zond3$N-1(+wf|LOI4A$}v61ET+s*v<7LAR1p1SnIzgSoV>G#VP~5O`0pY5 z{Tb@VW}zZ?ha$a2FLu=l`-=v#hBl0|oR%Q-4CY=YM@Dx)6H;I|i(|gyY5IX)T5^bW zQ_IUum;`AT{WG0`N&{QBYJ|E>N%}x?tvdvx`wa)Xqp!YcU3zm$O_5VrnU(n|OGN@p z`k3L?+Vh5G_o+TkKDrv5;~=d<&(S5dxVJioruKyo?^Vlf2Ne}+nA0kj_6Gz+*gp-L zzPQ6(!RM*S0jn$fAuaY#Ij#-F@E6*~R(f*nt#b96H7L1|i}Kw|-_E~P#lt4u%>9vR z%iz&=_Q*3uNZ7mgQ#Wa|yN56nFD$o=j~#xdd+EST>w#w!X2Sc}pFetY_+nk@C=H?O6y9ol}^j!(X?I(sM-Mui}YTV%(?Spx0CP%{r zqU?9pJ{IM36LH;nVZ>6{KXpmS$mB-j3RFD?W}e7f-~(``IqhwozDF`R01F&h%lmQw-!!t{bH0xL(&}NZTGXY#1~( z&5Mb?5s*2ZdD?(wZ(q*ICF-uGtvfCr>0eIkX^W>??Cnf*5~NR=x1>TL=Epssmc6liKIo9L@6|M=$cyAQax%}s z1-F%j5tcRAV4;9R23%2MfhP6v@f)fKZhMsK84L@^*?##N? zU00&KUWr#Us>F>_>`=_A*+#KUSG0+_H<*Q-k$9$6Rl3T+CxzG>)k%L7S7^6Cd#DJ{C{vT* zRfZ%~GzmyOs2q|t7@u*I3wSJL-H3}8xnu0b$|_!vV4!~irWY%Qy*Vm;*1PP&beBW) zrbI`Ms8gJe26y3?R2#1xwQ6zN6G`i$(POYul35<8EWs1M>K}sY$FLsC9BsJCv0R3o z35`CSa<@y>^_9 zMn3V1*;Df@;r3{)I+OL-l45bufk+m0ffI8AIRV$VXWY7V|1678f*4KmWUgJTUv3Yr zP_220WD-)Yoy&plEkL93w8&9$~lr#J6`kQVt?N6lcxBn075c_(ISLZDOob|uBuA;K-h z#PhansgEdhtaXgCRolf)igr<~`GKBYt)69UP8|);_urOJcwuzN@nr8{$Cc4@zBE#7 zM?Quer)`Pw(K30?%B!y=;CwR6%USS*F0mp`P{6KhcD^yb#HgIGKk5#0==Aa41jjq- zFEp-iMTLKKJU)Gkp1y?X9vv(qjN!47Pd4>KyqJB|{WS-jYj@Ipk5V8%jCJ|R?zm6& z)_pZ6xb{)O=H<=pRSkFSH;qc3?lYoeI6D`x8W7R?Cah;6!y{Ts5uW&eU~@anxg zA$ccMY2UAGq0BDmDcRS0zw*hX>HVd6iu`)*8eH-l?bjP`8$8&Mga6@aFuLPHKj)da z@1}yw{U(6&H>HBFt1l3S*+>Q7NCgjjlJ|m=TS|A1(bBb*ifO;}AkRE0%Y8k`{g36i z2mD(}?q742qZ33+j; zuX|>#3(WtIjzGwTjXkqAo(b_^Y$P@uXB&>Q4H@`*W#IcjY`ysAU)SWVm-PHYO`a^N z+6I{9pSUJ({qgmrI3*zSxTd@msYXw3z2xqPHF}`*=$nlJKG!FGQ}?C-9vE-B4u;kl zCm}2Q^$GI7Tcfw$9H8LG^;zHn`=pX5IntBs_ez1i0p$MZ<^Xbkl3ckTle^yB_sRW2 z;1_b`!FC3JlG@)qLhPTa!~X8xzo}*e1Gip!_M@Sd`*AIs+;3~y{;~X0QchG7ut)my zo)4g?O=>UL6c&v0AFRET`?jF%pLd-2n|qi4nma@)Q~cMwlK)Lcz(0-bdUM~GD+yUp zpC~0IBPvcR{F4OY|AldXkXQ2GEO5*SIRt|9CfthU|2hwNgRB!Ar+PbuQdad=<)Y+}1s5 z48bXlALW*Y5%F`=)gn*#$@mf*2AyFJ1T{yZ@#|Ggkz}zN_2>~*CIMqbu2CxBxEdAv$q!RTf`skoSfYB7P$jz zBYlnc;0L?T=yMK}rsS!5GYhZH2G*c3u$RKnWNZh`=Kcyi`tb@nfqyOhsK#k8q)}%D z-hU-rw;px{o84+w$SY}$)arX$LPz~vW$g)_xQt+bna$0k)9+EuCQehlu3k>!?Q=K9 zoNuo@IC-^e5C2%ZJYI<^Ji0_F6hW8t=o}W>w6jTgT+g)8si8MVf?}37v-jiN&WIHpT~Y|@j@Dvd zs<4(19BH|8bVZ5twDHY?gtdpW^D$YyyL)wmf=uVKdHr{|Ztfe)+v#pzEVbjYOv))X zbCu386m`)~(KhS5dk=`8%)iTDXh`;|M{MV|n89PL{g!OoPP!&(3U8Zw+OZ|zs&U8u z00rui>baQuQzuTvj9gR1yl!VzCvq=j+usvwEKaGy6g)JH8oSL?w4d_B<7OK6M1gR( z+8SKbjy2w-yal-g#?gbTQDwN9O+o_KH)b;Bs?{(&)#%=d&gvv+xkzSS6Gp9i~6 zb8DsqJBOuil5l#EswH^Yf;Hfs$F3^B?xzls%178=ZF(76lW?9#=uHLEs*jB8j9%WS zgc5ocs*~4cBOaisr><~BZ*`bmH*KlAmcJ(? zGSJRc{KhOs)o!oZn5W!@!Zi=`WZsaIE##p$ISv^oFr>GJI`y^{Oy0h~XLZhB`{o{{ zcQwSMWCA2Lif2OE;=p^B^kC)X8{9CN(8M`xBdSw)39{oad?S=M9ayV9f7CfLJb3Ug*EE@>y{d?-@fClho- z$!2wTPr)a(om9sQtd04ztODyNrYCHL^BK7AZQ|+=tfxA%@T89IJ_b6(+FZY)ymNen z>{k2iKFZX4nLhm0)z^oqZ3+S$vs|+|w4-cAdp;bVcgeY+=Orr>$jW$)e%^hvsC@u~ z^Fa8qOxruEjA4hLVaZH}A3Cu6ZF;C;871<}J^#R6)HXiD9jr~ZYY1j+??_JV%Dr=^ z;^8p9vl-onaRi<^6=FG);rv+}W6@G^ox*cXDY?6A{YqyZbj3`$D4JesNe>&U87)ut zZXP*|KFPM@NqpAAp|Kug5&KUzWKQ`;;k$08P;J62T#dXtF*V3$8a3Wv@z(VAG0nrA ze%tE|4IE=$EyNVwXg+L(uB8+@&bR9^&cko}cw5Hau?_~Z)x`>i+yzBqhOWvz%r&Z(f@)6V_??{53>*yO-lF>i!&?`#Eydb!t_} zTZ#J>I231?cp6RhmTPvfti?4YFLSbtKR3`^h{1U!^@@+x$dBY-I2g6^%%&?{Zm0aa z-3<2ACce624>)cKP;Z*HJDJ~CH`Ni`8YFR`wK+9myC>V~zMScq+GH&Mr4rls$D4T% zc=N+j!;7a69N6d0e_Km6{~mjM2lbIej@u@d&-AZdZ|E_C9xz9~6EADh0Csx8@ z(u8F@jv0CXW{G;tm3Pi{vulzVvfzz@wKn|8!=+0RRpc;&`MA%;EjO>i50~2s(iDH- zF==jfriNY?9^?9wm!XGVc2a}o1X^R zpQD|H7Jxs2%nn|C`Dk)^nUm85Zb)|>Wmz|P06%HZvJKi$88~)@DHy-2>dh6~XOr^^ z2|W#H_AGU6O`nfQ>ks;Y9i~Q0`*Zi6^dTfi=kq4*kQEBdIPspB{Z+7dOHsL<#g6d$jq(jmU1=CE;DS;khRvMY(8`GQK&imQCA6oPndDI&dw!)&w$IO)U z%{Lp?7#CP&M~a&|9MYZkGD1eUmCW`koYxl~V!F0p{6o5^kg=}2qd!gIKuU0dJth-r zPtommytj#gmwT$*oF$6s^_Hf5gb2^|$w$S`6!s!~?4}u!cgL5{c~)vQ-yNbzyRX%2 zZSeAh@!om$r@jTdybi|izoZkHu=9GA@Q4(Z;1*>4!+Jq|-oux+ScRB}JgYPOaCk<( z_Kd&KgmHHGury_yXeq;-D_8O1xcrmScyd=>BR7#kt;Rh3jgT`zZsWY=N-JEibnT3v z&U?H%W*#EZHg8L|lFeU>lh4#w+zXR? z=Gt!N%z#4D9MzXz+uDfZdF0q)JJapy2r*cQ^Zic?DROy9S9j=zQ+3#+n3ZED z-e^YMudpgOGdC-oJ6TB8+;;T+VDJ;JRps#!Erg$QOX`-G;#rES2Nu$PiZaqqeCXdC z%*48lQ+}AbnyzJLqZHGY73Q#<+Jn}mR@Aj7oWC*irqDU#9FuzKh;nJn!Bhr=Qo`0X z!H|+Oao1xeoy05oqdFg1sT`cJ5RVVeshO%%=QO?I%{YjA5TNEKe14l)TIT^GRhPZ+ z)^HYHvMZsqR?qBM)L;9*_p(TQ#T@OYxCcA@#PE%))q|IqrBM1Uw+?HMslZ>RMmbru z_t_54YwVeveSRNxyT}9?k#H-o5vH0S7xwHPeCO3OR;5EJxGr|{=PW#z_-}}H3)B*3NJ&aTJ|}v z-BIRQg$|b&0?w;;`0h#=cM5wb+gkei*_e2s=h+8Nb{eu}><9WQUf%DoFi}876`S5* z73bm#m=no*@Y3M&eJy<_-{fKn9-e)AbxoCrY_bs6mVy`VIzKoNnYa1GG2;&|(+@8k zD&1~=4;B3>LiRG9<2HIzs>qW0z1&C5_xC^4ey#P)d&Ka)Y5JCjAFb)AdIVAOy%Fx# z(ITAb@>^ApX`zgD4GPmt>k_-n-7V5sE^7Fv2s`d7Gf<4OY`B6J8JG?ak=vAd#wxNH zk(-xjc7)qC-WMg~LpfWioO=BKUc!jd|* z5^3D3ceV>wD#py*PcG?qav0j~?yC@-rJhP>pYzu1s%vY%5{+=S9id364n-8Q|UoMSa+`;bYC-pQ`z1|`iZO$@gpAvv?sWyLV^5DHlqVaW^I};V^7Yy>R4J(PTU~{_ayxNv}I{S>zpS^qEJa0Go zz|t#5(K^{W=O{C_^jmrKfFq4!7w>mS zD#-O^#P&4=T+5ny5Y98lDyr~E1B#~DX(;Xk)5Bii&}Y|2tqArHa8cVl*u<>$<=0JmFDnU<-V%3 zW-+W?rf(M*A{5}FTTC^SEW(kon1@-2pvy^Z+-Ghz-pzV9u)O!O=CugF@mXgnZu={J zudrIK?_%^O#^JMqveD4<2lnA%mQ$^9---Ij|Hg^%2ckaet`^?E_fVE&R<_nQm-osk z$o>++lM$Exk3)F<#&4{w{2DIhb?mm!ZrILB?)5k+MK?Hwe={w&&Az=H_Rly@ZPuu6 zd#rOl&o1owmh??}O-}?3)kj~R+#RACrmAq)C_}o(u0}e7x6<~#*W_ZqG@W?X^ z42nIAh+0OM5@(l?-c@I{j}2HrXD(^3bWj5URdh88`u>PRCZnkM}^5Y^Y1Bhl1G}54=)LVKCIUEnc8P}%N z{<62Y;l6AQAFtI=n{&vVg|X$=;fgb2p#!cy-j`=X){i^;4LJJUjJ==NA>JCIXSF%n z7LQB%Jva&9-^SPY`yYc;#E^xX%%iIURaoQ}y>S9UbFasZ$HFhocs>{pzpzX=8^CEM zxxDqc=h5pb#Za*q#k6oA@*W?%>ni=T-*0xkGlwzso6ziP#Wd$9+VwPk{tGpXEAJLX z78~W46#+T<2yedt;{g@Wc;}}msFSaHz-$FW;IQKewIHuNhx925us5orB#os=G|Ey>8A2eZ*|up*%&8 z&0UAC3y10-5DqX#tZTSIn6#^*BWS)E`+2C(KGHOf#LO*lwpLfglbVj*vwsHvucUaL z55}m#R(m(Qf0X%FXz{)Q2!t1D4lHif$)#bZtF)qkG0qJ(vLJI>zdNktD^}fz2Mea*ZP(! zkIJ?e{W6n<(Cs6pogbwlmzS=C78&J-GE(qpk|=9eDSTF;2G9PO@`2)K^~!KMBqdSt zi-z$j-v3qasQfX#vzpy&Fn&IiBwccgs|)us7ZcTg)sf}1LX`eE1CktA%Z<797VI*? z*ObaVuH=&$Yx^QG-&gTLDsuRFJEb*qUfRXRk|!;+am9OBd7Xg1{4z=ALpCG5iEP^O zBTuX=>_gI;7xc94-l1kr@9JB_N+~V&_gZ_63CJPbgKk#M_ONhVdEHK2>w>%cA~?NT zscHTCWJCxbY7=GSptY*8@2suYOm3+twxJF$c0W>KPHbsjEZynnk=hbCRv_gkdITOn z?zV4j>Lh%7>pz?-xwsnKSylfuh7(-mSg61X(&NrjW+f{7;*{b}((e)mpy>ewZ zly6;+ApE_wwS8WGqw?(Ol`fllFBUBfN3M-E$G%STDT+{^#5!e%&XnaT^?aH|6|1Pc zU~CZ%1sLXqIe%!?a`M8M9NdJXUq8Wj9@Ug&&1t}4IwjXrpS_B$By5RX!6&t835SZ# zW7UnD!ZmP&*0ZclNg`tfhvAif{*Af;TZ$MPVum#{t;Jd5F{{l5Sg)Fv?!)lYSxC~z z2rMcv`)TEIU@IoCQ_kRzct0m>QSmsc> z#S&kndT1upJ+k#)ZrtD#^j($WLvVY7KT1OL2QX+|CxvU9<{8YwJ{!9SZ-p@FcoK41 z7iay^XWWrR)+Fg@$Rw$Y9f|~c4IdZq#m91ZJWx)GIWL5|{=lq(EmdFSFb8)D6i5Zi z`mIuS{#WG>AkTDv41jl}S*S^~wn+F6`uQwLpY0d|&i4ogJ0kfRR8<=9n(8HK8`Lby zJL?C?;j@|pG+aP0sFafg2Vj%NG||}-p066Mac1>o00P@aBByQ7qIdrj$|81U5>mPQ z#~@mH^VxbjjW75QlW)a_So}poFIa^rIN5rNg6Y&ZS5NBUe8>SeTckO_S0z|(l2%fe z@!C@UuYlmUtoQ{f0<$_$B$l^k9Rvo~>G(5e zR3GcR0rfqLl3brI zM}Pa{78xQT3wDiMOfWRT!_s>(1}rd&Bl+aw%sG_p&wD@L;-^1W!2EZ-MGbn%Ra|i2 z5%VliCCw1wH-MwfbQ`}RvZzqEHtpuL7Izr#){0_Si@T$e_6}vTs1T@vO8hbxpR|;Y zxl#EwtHDo?xru^VtBmn(LG4m@~ z76Eqg%v37tVC(+KSTQ=g?7lcV)WQAlF&wazR@rg{gO$1oW|2!pIj3Q1%d|5I*5b{c zw3scP1#ccW-GE%>VkINuCb2bL??t?`V5pP-Mejv{k;X?ySr@%$JLz$k-Mkmq7KY^} zl8`+*9DZXl3uELXjc=C$wPoo_YZNqVCg^3X(a^FL)1R<_|K6$8ehF2!BmSN+<1x43 zrCt=LS%qub47e+;Jb!Fl?7xz%dOzxh@>Z|04sVn>gCA>Urh>$;Tyg8OuD0JWy zYyv&HyV9wanl`>c3_vD!WXoJvApG!58svFsZvoX6qY8~;j*Q0Lz_nHN4+j3nOL>H$zfWfGyivst1nP31sS zmB!twspx_zOf?DaDsu{vFhzs2aH#)C(@5*Ae~Ho+1Mh{?oj^ZSBr9FHeBHpMerasE zFzqR^3KN6|P{UC;wCHgQl^-VYPrpgB&F;II)8}9O4#hB8+yd5tt`t-MD5rH-rrdhz zcbTkCE!g0_Nt;_8)kctmFqWJ#w2lHM>Y=GQ@M}c&6Jh zumiw7;}fXj(`pUg(uvPhH8``E6`Gj6>Ly<&p~l_lLg7Bwh;9e{?s-=o#HUkCEpr+{ zi*RD1vHY~(b29$fG67xn!@u|#kEotGVs+m6f|b}mdl)5T6(oPnEnjzKg2a^n?;bKi z&bEaHs8$VTy>IOUxBSH`jIDYgL5rTR} zgdm3qjJmhUM_ zK*dTa3d~?WBC8k}dKfl4PlQm}zqNby!jUSEO)f?Y47nR(d@shnW!6HC;S3XljvC}= zc`;gvOm{OBPMtV5astYkqMsOJ>y#tFi}4V_NA?n6pNNnuP8>g0q!>qp)Da=RP!e-X zlW>SfO8ErmSH&1(=T#!)4q*j0mo!y`L=z#*_&Fkk#FrRo)9OuOMC`&3n&KY~T_9LA ziH+j!z^sbE0IncrZvytIG&us{o`)f6N#mpd`ipjLT19XnyB!fIf*5v?2&u`qPqvpW z)ZFNVfNa9++F*N6m&9Pf6IA?(SAUvUevJF#t(-_t>MThXOUrGzj6#MFWw+6n!3?yT z;6x9(6CwV_IDSG?I}}wvNx&7ai*5_F8b07@9=aMygyb*LuFjVM;T0h;z`nUg5X|QU z*j0aY84mWQ7$5Z%)^e{Czv?`fgcUml_{f@zT|kmXp%0BCUykn_B3L1&Dpd)-PKeni zSRiNjm7BPgei#yTL6xq?fr5YJte8P?qB(_i5A6#v9FSwzYY%`@Suvb}a&<=Qs4+l( zuGd+O&Les|d+%?Re3uSQ5J*m#(sgtQZr4LhQxG8uOo-({FiXGroY6YFLjM*zf`ffz zfvu_i&@SYdu>q+xoc%{3Z|rE zvy3B;@k8t?WY9Tf_>*y3``MJ~ry&o8`o4=X1`P3Kj88LR^J0r-xQ@`3s5Mi6d%ecd z+o%PYCvF#D8G(loWggQ?gzO?hG;-hC45JUV3=?Kocuoi+aT<70giO+xQyNFF!yEC) zxf6ghpBqyDazgl93TQYM@i797)aRaJh!Bge-YxZ0m&%=_)cIm|zusrtBhTUNw&<@!I8U5f~Tb0>a*r+xM#g)Rs?6F!z2mzJ@o1KK+127PX3f>Kf ziZRYEn*`Zl0Og6V<3X_n5tuC!4E|CJ9`8I4kln8r>XD!ysacNKoUf}!2x__C_A34D zbs5h|AQC@|tL;`@HRwaU^389Q4my6pmTk#ef%lObBMs8^ebFuc#9+wJ^b&k+QvEce zLqdXl%bhCi;SVGX=pdk`;fm}5`ge?z7LOr9aC)3}#YD(sU+8i#5i+l*3%D&dF1Ene z-LU42Yl40I;~BpUB;gvsDoAGlZS+p?V;&G55FvXpmk6;$h~$r(RZd1EBVH-T!BUBk zH^rDt*cwGG5#om+LKxM5Lk|g)lPI9I<{U?$MeyJDdD?7r>ruVD+mvkLp098{nL6sv zqZXr9DGEXtk*ffG|6G|hO9c)cdAwaALtF77X{0d|?hbSn?~Gl5)rWGm z5Magx9DF|Gp`Kgr2tY950Bb)Ya1I+U2m?#HgqUq4LiQ+qy&^+L{QyC4g$Rjug^t2* zu70O6on}OYKXjBWbQL~GP(ys}Cg~Lk^LK!m#fP&?VfftTO>Tnq3M|a|o8N46X&xUH z@OV@0qLe7L_Q8&S)HG^{VDW`E0L2dhTz-n|XL;$L)-DfY?AR(;yB82Ekm=5l`>q)O z2q*%TS#^xnEDl?FCNX1f3aoopHuv~-_7fqS|LONTwFOur@fu31} zT{Hvwqx{1O{t87Xf&el46BjR?2}r*Ff^E+U0Tr|Bp>n5wI3DF8dbm3Yf#>(+CJ zVUhyLWqGn|T!jF|9UXd4i=zl7LT)F0^Euw~3p!&BJqDfQfD(8^r@wx@ zqly4)jm=^z$S;WS_uEQ*H@gCRvAv~u2mroxHDf|+$>Mb)gbW;hviZ%ydZ&lc(?IB} z1$DF|^obDUisL2MY{17N1tH0++IY04(9&lV=(7k6 z+cIf!GD(EI)In&2$>@`dB_MEW23#|U+%TotRr4h@z&Fd|z^u)J)efwa2)UKy4+o;W zY`%<#tpqDDyW@SY#}gq!get2Of&+Lc!EXjJy9U%ZgL4~D8UvF+&U1+nI(1T;_uUX9 zu+BGt#mF=u%9WjXBE+1)b#D!Z!-D0^65u!guxaPg!VXVd?%FCqkiVt!wCU6d*;k_E zLji395WH+_<0z@ksupnS)5PF_nxD$2CHUG%D6zO_x|3V}q5@}%3=@VSIjPhrxER9& zSlw%m9Y@rJ=8545J-~`-5*W>z%|9UCz->7vh>&5hF2Uc1p)j3qNrZ&yey=eG9|f2`33`MPatUexymv(rV2-d^VDP9^ULw#~fM@;WR&=ID z@W!~>9`!ZEDrsS5X}*dF3!$o5oItM4)4NFfVh8F$!(qb1-!x~(pZNG$VlY4C=Xu>X zep5}yaD(H9Kx()TtbxUG?jCp@n^5#=b->cR#gBiZQMI>wbN*Km38K zO=7s?jP!$U;IcgSQz=n>-DyTf&G_=25+ySL{xkq5Peaf?()37Xg3^kZ30CzK=W+q6wgu^E7aD zw%p4dUdO@?p#)z?7$4Ay86@{Fsl~7GwwIgaB{ByDtz@WlbK+Kd2ta>-!NJ*tLsLU| zIl}poOZx+F*zShbJgUaMl?)bSEwwd1`14HK&k7`yKaz)`vaZ^}bu-mLsOgeXux;<- z7zBW(l~96z4s4Dcwo<0_&F6GAg9B5D+($|PP%bTqtX_fP@FoB(9RTBS+56igci?>N zw8Hz=0=7yKs?-o-BqNsz$5EIQL_@zlAVFEs<~oq=d{sO`vUp2iK3tsyTy6dBA;4cK z)2Jo%4s{$bJU<|lZ8D!wwT@GPmE&p+sik0++mCq*Ozyn9ez2f1;!uiHF;Ej>hkhFD zs#`PIYI?-WBJ9x_7>FpyI3+&tV{yjHqTY*PaquB^jAKi(`SL2XK0`;(%LBOM=xvvA z(2tQsNP&|d7r+vY1ZmjCzBM%f7Q#uW-i#f=xkC28a#BdVE7^YaYhY>tO0pTw6qW6( z)5!d(_^rlhCA0l$tBzI8(`r@{w z+mcUO8m#+4fA2gU8&BZO+gX7XLlDRSK)|N}uY@vUz7;q(ZB2oGamHPS1v1_ATqZ%@ zzoD%(#pfZWA!kF5r?&r8!4d`?eO+VmV2+NX=M=acF5o3TLt&F_HDh!Z4Ara+*h++S zwW16Glj7jZq@%oyVe>Z#&ILXa#Kl2L$o2c@CWXNyaj;hk$OS|#?ltg>9%vx=0$mRL z3ix{*?xDC2zHMGGg_K^kYfkG%1*Ea<2Q?2?Smmns}5)Z zh=w;05%8o{2dW$YMmbqAw-WZq==<$~MGOY!Mr*rca@KrQKQW64u^s?ZGrj>&S`%Sa zmI=Ny(Ao7h5$LzJN3{&w2^NBx(C%df8g&Uo=VC#0uB8&#e8o`gB63i@0B*f3{%7fX z<{-wXA(Q-Z$8m`S=!sn2PaR_^`!N8d>hAs-JnyHkm+YoS#>)mnJflhO(B@DHu!19f z;c1!AJ_>xP=%hEW*Msok%R#ls;85Hr&9Ul z1Bkc22WB+4MEQTHh2ZJR?q^%IT(&}zeC5$+_*t_n=td z8v>Epd%J=E2LZfBzG5pMK-K{cKxV%1w`fDolfHMhLfV`v!2q_IsY zqt~2jf^{zd#b|7fqtphGB^C44N#NhPCO`lT$*f)XYQ}1>dqRuxa53BxaPd?>1g?B& z!3YSq7a>-5!2$mh=hoet+yA~ZBket}JE3kDfav|O0pVz3VsMoGm~Lg^Pvj7#)ACz`!AA5qIX*_r9SW}r_#)h zc-^jtcn*A^EdelOJ&;P3HXytzlmIHT;_ONd(Eb6Tl zk=@f!)GBPYO$Xzny-G00E`BfrdRCKuni<|lT89+$z*>NUK&B>5VL+ZYVtM>2#(B*~ zIT4M0L~NS9MQH-otWp5Ci`s;f4}*Vg1@m#uNfI7CwWTw<^Q z!_Sff_kWEJkh90wYCP>R85SqS7WzI@M^n1^@B?RS%kTK;zhvy);fpkXyTbL|lh$+b zgcYoC$N&-i??w)Q<+C9|#6H#jeGLV9ZC1P_4W97h{ovASaB#3@ea~K<2Ukc&R0Ama zpCq*}Q@~2-@j1*2H@6(!^;M?S#DN-DoxW@}BSK3o7K2=&=OiTpV0@9tB48*1s9wp) zwN`nFJ?1Ics*flbCE$w*n;U>*PzMi}Tb@SD@j`)P*IMPp^uE5#AGPv1<;OLf(H^Vf zJlhNVcoGJ39=g#mf8g!ebRKwmpMtz1j`!@ZpX=pLts)R$v3m`m`S~+2>$iBUGmbJ8 z_?N$A7X1S)XHFYeuzEhX_SAfk35>#}<24%kL1|1=j~F*ngnmB-=tqk;y@zeN`_(QN zMnnW1qVi@0=_>tdLW?3G@e>JaNk%TeNWzL@34Xj_rA4zI%?DO{fwzs6gZaIaKu8}4 zeI=qY32e3`5@WiIThj#Kcn>sx7J+*2jQ#jIu3w7__$!+c);RCJ`QmZM;Uny4A70ZN zOHAo~asq!im_J$k=W!9;KO_Y?qPz3T&eRyqDc<*eA;D2o0KB)bKxf0%yVC$hm4qRA zLkzkUlKO)G=HHGvj*|1T0N3B;RuB@DoKgQ-*7?7P>zPb@jhHP^?-hliJ~?Bj+NDpUqAt0r=gIx@O)I7ezPb`iz{=1txHXmh=Rdu3 znmM+&@5G@AxtO3}g_J%8?k<2;9{e2ct1pjE&r0dD3r=nBzqPxsHy<`X@r`dF4~SS` zE&)o?uW%M1JL~--o|M59t7iG!N25v6+u@?3Bo|{inbnup;p7 z<~SHI6i-v*txhow?0$A7bp|GBw?{ysF%#N`yLMQh-ybmwaMSUhC(_Dj#ap=TN%nSe zHn{X%!o&C4Pm_DP*Io0!)_gE{|5~Auqla5x{CIzLwtp?^P={NC^~0CCl8AqB$^S2& zrK7oj$7408^9sYWA~9M5A}@{?7Z0m~l9I^(YY_H-n_fmMnvlAIs4aQTohH@`8SSUF zY92Zn_X9)GqL_=FhSl8bf#J{~&RW%p6HH+=A!y9-b*~~SipxR#H^I|<8LTz~S)YSN zItuuw{Bl9v2FbJJ;scdij$F0{vESxN0v1#ac))?H0^~D+xew|r*g!k9)}w@lfoUkg z8~Cs62@FoaPNCvE@fZZDTm#w$%E(ll2Y?ioq4K7@@=sL zom%KBDgoGcK>>v#5F^uG*s?9neGOz~gECN_pGKXWJ(ADAz0YK8!`_3*HB#ld+y>!x#2BdnZ@4mf-L7B_F7qc6Aj%-fEz~ zKTTvaxaBmht&(!bf#2WE^d=4mlGVN>1by572czGl?o@o+%Gkmb6g7$hX}sjj{*zhANlj1!{K?zPYbaL3}H;p_^HFobE)(~2oy(Na z!)ghXAUS9f3jivzeLbMyged34+AN1w&q;FeIS7Ro1 z2=d**Dtmi~NpT^xY0D%UlK%u4o%{asN z_ga$w&CWM}=_7L`#U&;Ff?Y2mJ0TDWwIljBjt&Goy%Z`^I}nsrOmTr7N{J4a{4d-0 za^rqC#(YEMH>SP7#x&TN2LE@bLB1RFg?>s4PBe9b+V`Ha^>zP1()NXa0GIs1r)(*R zOUixSzLZJMkr?a3^FF89Di;&E#9QY~Bokkol2qB8P0I+p=q)#G$S9Iu;aM zml!0kg+1BEeK_w0qi*Zmekn`W07@z*=G`oNczF5v1q7vKWaZ=)4yYbcJF0%{_=(eJ z^z;o3&l;V-V0F>j#@5d5vb%?;m-m(HHv)rh-nt$9ApBuOWK{H{n8c*yl+?7R=^6P2 z&kKu+OG?XXYG2mXH@s?m{l2aJLq}&m7BlxNP;?-Srft#7iEpT3&W$Jwh&r_Isukpp%DH(M5rDHF_$Z&Ke11M65Q1+)!jJ+p9WQ@q-z1 zxu|DyJJC3pVzYq|$9??_uY;qKb>yGy8})qfTB(+K3Uq~?%(XfE9OC28Kar`K3vryP zFrUA=vNw{-vT<)D{mTc3g!yjqTsPF;sj(&R!p(`7gbq@)% zymbBbYbwk1y^++G3WtQx<_EKzao8K@Vi0%sb$oz?7#fhvTbj~*yyY%)m0Q;7AQt(O zZqg2-?$CGju$2A<8?0FMPSSB!CK+2^&Q_O~WqYdWSmhq$oj)?x?P$Ics5XFwm5Y1@oEmAGYvi6n=O^%T78=KC) zyauFUYa|VfgDZ*LSd-s=?X5i(_n@?ytFmPH(qy-s#d)g_+ zyBlVNMR!V_uw)D_Hxm>X7lI}fpF67G7pN{A-PUj=GOhVCzWbnX#PZ9I7$c~UgsGg+ z$mt%w`la&?6EyZBTN5Pxp{_>G(W0F%jFS3PB;+cL*{bmH3kbUF(rvy*mzC|JFAgPk zS)E>PiV7>-m9MlU)Cs3~sq1}eipKGFW!KqU;}ght22Bm`E+(BMTr$sz6*RwF)g}FM zm;F)RvwTLDcmV-{g16oatzvafnsnF1mI~t)qtp@{DyIa`t9pczm*FNRW-o8I{4jDT zk2$30v96fG^J96}Vh&(k#%g#5d)b={%un8)DR?XB!0h1TQU-ANhDQb3w0Vj*KkN4xQLVW}z{VDpV@eibN)Es7sQg1>yLM*EiUrerIAg@&>0Vgp z(Z?inug7(=Ve6fHESLCBj#KA=f z9sM02)(n=9**>gB$Md)gA6YKln~FB>rCOWyk&X2d491x zA!F1e@0huBwqNGmdtAJ-(+_QVcgA|xt{rzkj!rl0H5|P%vl{Is$$h#ivOAzsxK`Swn7h4}b+v;>Ed3N0HIt}XOv;UK@!WJ%`{?G_ zA1$G{n7zsJ!>DFnVvPwMy->n|^UK(Nqw0PsKHNJqMQ@FCqRJ;G)O&DGosHd>JUTmrfNs*vAt}Rf zlIrdnCMjpx(w;O!hmZFy^U@nWn3-Q-*HwCqJyb_N)1B#64Kotgo4@+}@h7ri;?Z+g z^9h><(Y;#Mp_>_@I>^yPw_)!QM8OT)y z{~*L(h$>{;)~ysNos_Ql9G~oJN0fFn%$E7*!D^O=|5sMgl-$ebW=V# z85d*|9T_bgj8Pu(g z9#LyxQ6;NmKFK)ZB{1<^%{bN}zoo3j>HS5yUZwtMzSMzPthz@*zh8pKs8sxZ&4gV6 zI}dN$cVqp{zcb>BQ=4a5lsDl`QAhw^W(GVai}Ny5cJ7tc7gaq@wr7hxveeJgJsQ6) z9UF&c4n-Zl6Q+(-aK2xrqaDwKOFMY1Dec(x!uaug-4v&?nPlW_uYq>AN+a}0Xr-H> zQ*_RZ^~%`A>6h28F*kDXy!W|KlFTnRz+9!_ye%}g@Va1dMTq=|(?|l1zvv?D(d^yl zhP~cZW*2X8MjB)kKbjohb9h0k!!&n*#iwFixBe`pmIa?=vsQ7hvUaIzrF%x4Tv=ng zh!I?lAfPmJ!rKu}rnhkKWp_49oKElpyPrW@q`PaZ`N&j8dfN_b4&_5^Vq1A_Jae{B zpNoSzV3zhDuvNWGIkUJs?L%I<^fjpyI#oSb7~y)E$bF~x z@|-K_a1UQs%JE)YkblTzZuo9gZshx={TwK_kgBW!6&>i^`w}l2y29Asc7MF98y#%!(=K|e`FqT;rlxv#Jni+oc1 zNaowDbW1~XdGn#Z6v^aM$cq@RhQkM>CXPh7)z@jl>jstdjasjGuvlqx9xpZ7*39po ze#}7TVt7+>H_A4Svec%If-KNq@}ZZJdFr|JILcK;zY5dlkcl-n;})~Sceq(yjtXdu zC>@Pa(@$u;?V_*f(<6H2#+#Jlqw!BKHRE1EbCjD^$s-)C#U4v_T})Tn5~nkvs{mhG z+CD>G&b9~j1ikRQHe}j$kmrT_V7OChQhD>EyG{xZkvmWkPlS4d;*X;WG}T=8gL|pF zuX0-MaM}N3?=8dgNU}9SFMs`)X`_69l zt=_$No}Hc24`o0GopU0-$T!}T8D^R;xzBsObqKr{J|1=Wlu`%N)|EbJ{%A88TQlrI zV7}m4gn|WD{jDfTvAqS%RcJF$fJWfU@vbWo{rf{kvoFrX zY&kMY9_fTWZz_XH@?7q(e^TzRPV!w3=aBZ}xpuEGyDN#5sBlq)`uhI2SqNXf7VYq` z_gpOEg2L6Q?AzZDvVzt1(Kqt;tB-#F+0=sIF^Jb#Fm~2E4iZ;id0gns&$bookh`q} zuD-B)Xd_K&1j!ECa>w_E+vJ@{QtVW&zOik-q-4N*hM;3B9qeX4jI6dY+Uq0G=}kTk zQ$Qxx>*=)}Deu`xX>E7k?x125rS4T%FUHlUtU@#)*9df)EF{3?Tvy<7{J`ij11@E|Cn68K_(?LZj`Yx;JmZ@tgPLsX|qF0F1;eREEMXNfG;FCZuBT6cIJ1#5`CyMhO6vwW2p}zN zU@`Oe(^hx0XG03vW_}y1IKBT*Zabfx&kX>7zrwNO7tsS`@@Al;sC$zxiPf@lF)29X zrMVwTe|F}rnj0u(-2PIMo+eTG*jL(^pO#kB=?1EmHhrf2;d|Th@!Y#H`ZuXDZ5}U; zubMNdEs69zzY6~}H%nU{SM|2<2J6Z|V~IcSk-~wZwr`vtA_hsP1~#!i=vl0jGQY1f z<5>nZ3F}DF;IN}9f4Y6Jf(Z&ju&sYnY#zeiN?()`9I%YHNXH_B?QWt-y3KSFl^PNz z-0yW_Y2y}Y(g2wZzm>s z_{aW+X@3QV_zyd%{~cfmd7$yXVThj&&IoS~&Ojg_z#!m19Gn4xTz=p$ z2q2*N^k9hm^5A-QNCXT%5Xb^C*?+?j|NnV3`};BbZ(aVMZUg@Uo?!Sle_Q_(c!J>% zbb^un-^C`F{v$R~vjhTUfj$7BA}Dnv=RhlEasCnhUM3P!Q2J+-5&+pnnfy<74D9s( z=BWPFj^WpkSQ(jry*PyZhur?ke&Iii>VJp*0uW%%-}{BX_Y40v>FH0`7-lA>f0~U- zZnj3Wa(X5|{@EK@JL0i1|9H{Q+f?GWwzhF}(7>Z-X8JAVEyVoe1X2O-N9eb6!nY91 z53uuR8q1Gq{#%IgSLjD$zoq?nvEgr_U$wCOc$D~=#`>!)>#wq`zuIN{RpRHv$IlW! z7nR>aze=$GD#8A%1p6Otu+aU{Qx>{E`oco@$2eH%f92BuwwU12v(W#_W%!lL@GF<$ zkFl{Z{>o+imCN{#++VHz6#b7rvoQT5?N=MjziRmUIk5<~q&`eLj#`QPUn&oZqtn3V0vZtxN|`5~6Ri?_ zSG6}P$N8!W8`)x|%qP=g5KzPk?>LXSoN7 z3358U`?ek7%dcsO@)OXp~? zJ5(I^>r3)Ju*q=(m-JKEf(IPAf6mRfPf93QmF~?pZ}e=e51j~rHW;IN#C*8&0+cW< zg!{7%!Vi7_A@e_9lK#nhe`@J%mHKbD-v7y7|D}EYWfS``S^pUBpPLvn12gkK+t`kl zM#XWnl{anWOE(ud8&9(aP$+=I2P7swoGHuCyr0E@K|WBA9SFX9JLOOfUWad2&8_3H zEj(Gi$9h5%k3kk6ycRnC$SeOeZ@F;5`<2K0!PW)Y=%ugXi7U819UzGYj5>BA&#WDfToyAHRF zP{apThuV~DCEvGR!Fnq)vPjA#12Zr_uPcEF&W45rW9ns!l zCweunbWPI!;c!pl6csh@|+lpnKwKye|g>gN(qQ-E~~ zkXW3USO$%8DQ*NEc&EmAe3=tDr$DuK7hYuTqvS{KH1s0NLLQFk`T<>IZ*aDyZ`J7U znz3(P0q;55VfJE-mqpm`BHDV8xT`aT$)+*qRm$WM$vQ4~;?U)M0r9>1ehds;QI zi5^ojOHoj6kQ}~5J8s<*n#jy3HD$O;<+y9@9wGIt=w7b8{5J6=fj8EnFy;(Azmq*& z4`bopT32_gzv`WoCvUCkW~ za;!e85W0d2IC2xUrG=x9p3l9!jd(D2uL79m@(O!lLLxt|Wm+BW(Sb)OW+@J@67%l$ zj9$`O+bv(Gm}RsKQ@^g;`>~9ldv_AcXc((}ow@;YikW_vm}hfJk^1e@^CU5kakItN zsh{$-M4+3BO%Jwc!gT={nyH4ifum#FZc4$)^%2BfDI%~AFYyGhLye{%N*Z`OQ9>=f zQqb)kXe!tMbpRdRdxOQ}L&ji+rvsCbVci8^Z@rQ$8ainN_>5`c5S4IGHepGg6kaPR5_OB>E&x~Ux>&=T3{|*lwfDduP?JJ9KZCaLz^iML+zN)>dJxq%N*(v3o;Y^Z z^THI?Cx#f-H-eNREJh^6Ffy|?4K;q?s?CjkUN!Bch8t*@o!6={Dy{gcHWAV&IzO*v zlb3R*b`HAs`O*DNL!D9ESmvEiK4z8A25Mlat?$v*&h4mxp;zIk)z9rFI(%IOfuVWe zG1bnkEpH%+@PA$;etFS5`Q1t7}WyKOIH===)}^9Dd%0nCSy}`97@sB4De!c+(x&*9Kvyx_B(- z;NKQHaKn4RV6)$2vH62oe>~XZmpXfl(gKSQvL<2Bkxpq(?oLeJ5n0KLwT9@UA?{7# zk`-l5j4HiMZgod0uM&vTcpSknYZVdizBI>&nI|jSX&)2sW|lDj4mu9#e>5r)CtH*! z5SNp`96*8>8Tg)bY0*)cA%f!?uB{^!sjhkGJl9nA8qF;C zsQ$=gzF>YJJ$9+Bpk)|^CZ4mzSvXo(n$=e!I*4$b6l( zgU^_m7|u2jB4bxKWtWAN$X(wNw^z zMw_g_>z}(8lFb1oV6ywdJ4eL%K#L5BG5Z!8eTLUx==uirQMJhwkA;7cNujs1AqvZP zs$7B1`rSI;G`h$!CCmu~FgOA-Jj>@u3;e4xh!ypEbg(FMVOu2Cj>EPRH2iaXu+$1V zpc{|yg~>GHy<08eo^6DrjW)Jsr~CoQTWSO7@=LbCS#i`&#@#c_^t&&9+q){c$6AD8 zt2fF`+*hUPd8uAWCfIqhH1Bm+3uGq`A~7>Gq+1&Ax&6Xc*x|b~D;sPzgy zUfqpl{{@(n%AB?{mdzv$@s813)Jl6~^erlHqCE36SG!~6Eh@J++hf^pC-a?+4*9LT zW#6rz?O^u9QLlG20B0HbqaCkVIlLj1ZPKOLFbn@gpT9K(8(~`t#RM~ogzsaNQHI4i zA@iBKLZ@99j8VoBl@W7eqB^eBc~z?eeMI>LbAbBf=Wt=t{bRIc(ALB`v`SsSjZsU6 zIgG@6^=8cuV;~-8kgTHtvZ}iBZ+Vj2{DNQ@8K(7?L_z75n6?F9#&Fi7rbnoHzMNvM z>KQf6bsf8?;C2iXy|j<5y0=vTnUsCN(7K}GXicR|RW3s)3u|CI-baj@nQ?*(dc=|8 zq2<>%68f52B{-h@X|+3d!qHjW_K5cA&^WR?S)5^9Z~sH%w>0>tspq748zEOMwBbD!MbpQ2ThKCggUf^{qQmIL~<9`f)z{XrfMuHuU-j zyVvbA>tCiiKJjI(EG78xd=(b5qeOPmW+@M(y+hT2@}U?I!=}k`g~&|HEuw6Ah*z|h zZX1fEK*ughbyQdj!$v^3uSRfJ67{bt#i-sw7w9s=tB3+V3r1)0M-RoOfT|_bUx5%P zWRwA$K%ln-fk%Qt21=?qOI%?Mj+CY(1V_*y4IBhazZk&pnG4Y~05D1D`wWW<>`F

n()iYK@+`#NA37xf~=PlvQ_n$mX^u*ec?Id@RAiJ4f(l>2p{+qP9I2@iPoEyRtCz z8X0iyr}0ia5Qn$6HuXGI+YaHvc9*3~E!RAjh_t=)c@KJFY_x&K-{8`=KR7X1d|V(H zFA4bY+KuX_-8zhk2X*hLb`c=!XM~Rr?2-hNl@;LfBxU!ye7! z#BuZ|fn83zKo^BV(|gy)ccUtl!gVn0$XAJwx2{6*k8WSX%}u0h?UdqMxDyvY2d58* z!zyOwgTGojA+ERBaGYn~r*QHS^~;X7t=v!}6Jp4lhpk7o$XFHiwa_qCs)epw>k-9|LFn%*W!Kh*sc)u5&3I}A9 ziVWzSj!Zk8*LAY;B`HJK)-NHYrNyz9p%)W!#* zJO;l^E>E_W!n(_eX38#}lJJ(;6AHYJnyK-7DS8Np2dXk9H$UxOSWZMkoRfjh=EJ2# z&AkZt#ogmm&8eEQ0|z#7`j3z;39WiFN<(-`D2S8-bkxHDT-bRL2;z4<*poaG@3(f( z)L^Q`$(#79rMCN+UrK`{#K)2@(~;a;@QO>eTMZ%?nZ=ns!sVcAq6w;>_Umo+qTPeM zsxTcte5c~JDB^{z%O_}6kMgmEhPc*lqO&+1&eD>0TY&T^uBpj{h~O9oau^a|y1Gvi zph`lQ@6c1Vs!5ra4v@P%hwX|v&77(2sM=(OQ>eyg=fVwmI<7_I)CA3j*($$Jy!xai z{2o|~uV-kDC-sV=KiDfckh=t7uhD4c28fN}4o0V>#mR3c_p<;2rg%)+_Q>40hoLOy zJy}_hegbBFs?Zwp5fFZ%7^`|2-nONT!lL#O%d@ZcP0rM&XEdug$?=E=p zUhS%>P{M5zMo5C`o;FcLpa|PJF=aanO5{1x_6#8 zssNEECZ@ZB{l^rSWy2^jGs?IVyOwT$qxpHSA2;`i@K0UntWD- z{>TE-XWY^X;daLZh*Yq7Pi%wqh~$=tpF@%RL2@+M;j)FsXEpu%5D7Z z)DWNKVIYB!V~}#9d_Oe-Gu+d_xqUvXrnH;3nd3}PVmx|~gx|Zt)0KfezG~Lipm!*$ zK6bj%85nl&tyEW~6OZ1185!<1cGpM{=Y4G-jT?FK6GG{(G7QbSI)O}r8Kfv-q&8bp zeRg_@{Ak~lcx;VOB49ccAuBstYu~?<_w5`!HORE^WXbh`Z`S6r(&_jE%wySrIApuh zthJPr7)f&)5w=^UW5661 z3Fr-sE&g{TJ9c&CDgp>Mp^}7VY7}lwV4^ic*9td{!AEW8?ml($+4jzOF|80PAYYf>Nfm+;X?JW6 zCJb;iEqoBDLwlwTh73mO_Cl{o%ie@~WYYOg;v02aO#xH~rmWs_Ccm__-pI}L&dQT? zpbhmCTn71hmaN0_>pRWThOz)mt7nAS=5Ab!?F9mGs?f|JN`Hf7q|Lx8vgST>i2_6T2(W{w^vrMurmDPH0FN;>Ik3- z(C5FYBY#sz{%z{W|LOF+zsLVKMfGnR_}d2lwt>HG;BOoF+Xnu&fxm6wZyWgA2L85z z|L@trpSn4){PYF*13da`oZ{a&^#A>w;vbCoH@5um-VgthAJ0Pn#%HJd-Amz(&(88j zm4D;6|Kh*@+x&LcpI#7u$mP$;#|+H>k>4IOE&)RSuJ24>4c|o1V2b2BFv0O=IG(E< z6i>&Ot}dEmZBMV|Q?^sO8gO#zjsB$Ehc3RI(nc=)4-2QGlS-S5EVhqyXAQPwj=ihG z$m{;%ox-H($jNjO1im%~8+j{x_AX`coy&2H+xR?QDJ?vVz#f6mW)R}zyrwaQpQChv z-2+-#?}VDY2RLGe*m-vsK}X%kP+vFF zB54;DxbwQKn>DRUPah~x%`m24IQNe^r(96uV{wl za>&esA-^d+zrWRxJ0tu};cYe8qwa&vujkVJd!?$fMU^G^s_#oYUVJ^&Megi(Gr1#s zGhYtvzOVpW2qoPE1O(}2=S~K=?MZqlLKdd(hFNI&8`D^FjHSDCC0#+Ug|AqSgi!Lnx=@bvEJp4JupWgJ{Mbn6;vsTX;$vJY&FClqOPbBcSiE?cl6H|w7fK-qTXu75##2PKs(g3#Geb*_1;*wmsDynZve zvV+g#otpOB6xV|gm;L7{Zb9&EWfz-{(mq@`8TSP=g%Vj<`f^x^A`C$g%79^fF;?br zC>{6e*w>iRB1;~)Vo*7>=s0cO8zJpYHr zNoZDR*>VJu`1m)h{j zD;bI3#!tQXK5>~RdP<4&kP;>8v8)Qsah+3TN`Oc7W4EMx8urb%znk#q|r{LZ_ z74|eAOyr^z7|LPOc4xD*n1P{FrI0tyAJ})p4t_TF$Q&>{-HuH;-e>fa7(3R!Q~@Ow z$yjfWsNaMCpehQlH-WiXTyJSn2j7+}Q^kulyl!UZzA<+pp2F^7r)*D4YC3xr35|nn z+vmP!2l=X00F2bdsfO2_RG}Lv7u&s*!aa5!-O0vA(=dsHpBy?dY8qzikwp>~w}`gT z)rnqF#q6wT(HJz{IY(zDJA>(P3)&Gd*VeR|D0MAh1EncY31JVrqC*4H#Ndn45;e2F zp?W7D-HlUBN@&l5S6~NVB*~BJ*w!%57W~1_Ar{yGjMga*vd-$0`zdB>7q)p=K`(i8 z`ySD>5V!&dwNp)9{YnLxV1@VWf&$<-kVZs2=Xqpe8ggxn8YZ-3mgwAZ(1&OzPvmi)tVM@@1WRc z-g8`WIU^cQoQw~C=7J-Rc_+Z%mg~nssEFlg+=LlX;OCwN>z)*I@Ia5vg`>p5b_+2h z<;|1l_hP7cGM4)^XemNs8BBFW0BSZBlLK;w{f-r}znmw&DG{guQ7AJGV`j+E`Hsm^ z@@S7vWYCg?H(!Hhmfb1h*gkKZXN#7_p&q<@*jbelbt~=Inx!ELjHb34^N|`>Yg(Cr z7d5kvuG}QDREsYMdeUD(64bc)YaX)UBLP)DJTw*mRD4V(5!0z#{vD>KG5av+5!VbQ zM!;(N!5mP6$q@j|@R#|9r@_?zFf{E_nn7$`GmTvlC9>P>B)rgsTTyk=bUh<6qP-0c z*=VZ%u2#ZeNK6WzQxYfxkxgOs7AY}kxuF- zkx5JqzG*0tkp*M+p`{2doO|f`Gwtvm=y&!Nv5?@)-OWf%*6U?ZUx(FZDm4KZU+q>t zYse#{6be04iW`_l)&X|V_D~ju#sy@p9PUsRUcp(hBmSyq&od3_jjW}FBR}@p><_$obM?{Gt$9W*H zy?65t#dDMPhN7flcWz8|T@1_;s6KokZ*6>BsM-X3MvlE>daJ~W&>PBv<^p7YylpW( ztIOQ{fxNmtG3!g{k7f*!yo*7$Se}t5H8-i{4ENl&_`jmt_Y+loLFZ_$q_80?zA7r_ zx|9)HuQ>&1>TX&ruO+EAB;u@$1fr4TSk`!wF=_)#Aa2WA>gzA0BKSg_pp18qPf@~W zO`nk02st8`V^VH!nFtkJ~>l;pM#>#Vw8M6!TCVt zQJ^?g9JZ*f4-nw(29Wro9Lr0q4A$*eFTKvZ)W7RM1V4=f`5#v5=?8ui@znm-7N*x7hJDe2Q~Y|$G^G!Y9>N<#Na7k zThM`-Y;0Qyry_3KE{0wMcXi2TPN&_6ps_S&H`FMpdnYXtZ)rQRg6A5f1Qpx(=3Z>% zAkX-koOVYq0Kz!M=TL$Gui`4;U2G?xaKA7_x99*N8FbP;Po`YzlI6(<>f))J=lBSC zZrOI|V)g*nS>=4{kYEW8PJu3S-S{4DJ4iC$;~$Zb4KV&)gSZjvE?cJ+4Y^4}LMxy{ zqSyck*z+hlxw1AG!g5gskp5tS04MmWv{6T%O;@xiGEkYxof_R=hZ>>Dw2%rxP11=C zKG+5u4nivI6JEU)3WC@mDn7rKX)kn`zHg(XlU(T*If>J|^te+ySu0K}14DO#q}(ugoXKQ6CJx z$@O;YG1=^7WvFpPNww`m)6Ic~yt10O6&?I18?1K_l76~)iB`z(#QMQH`7#Os#f7o* zSkUJtOBIzafZEld|Z(7t}sT0Xs^;i3Zu>YIOE{*GugZma>; zPL;p7b)?4vt?@7~)V4lr8%*F$&bq)_8rY4gQ_#G5eBr0w@ODSQ;s&D`&M1x!?a15( z6o0jvtyb^m`{!Fp4f>; zO0(C!Pj;8*h~rwX^e833dv4$9QD8Gh1U0`5zHkJf*Ffdo9OPVW6~wSL^~A&N-UFZ< z`4BP-Tscy)%Jznn*nGA5B5XXygFU<%Y_{gEFC>yF0w+FtH`1HcldVA#*e{skLA~Wa zdfaM{A?aye#i5YbUCyR}S5uuhNDs54T+~EJ&3jk0p{X#wm4b~Kx?=h6RlR?$x$2JV z&z?qpya?fsC;7kj0Q$cQ)cT(s<^LZ5Q~yjM{d1IpiJtABcv!CKy;>SkRICWzqD!xI z<6;N*-ZAhB9y6XMU0@!(s1gSpjUWs5S@4L?&IU6X5vR3Z}+Dn#@B|1v%*bdd)ki2Mfw0+V2U0yai2#$aK>$x*0gT2SmrZAx5nFB9S5C;=R3#r>&S zi7h8s0$zx`>`X>!F2o4$3{+t;4pNz+<)$3@?vYhE*Whf=2)$Q2p~v_Xfd>nJXoxmh zjyIqQ+I7I?U}gi@P?q&LKuhcEVWY0E;+=J`Or^@q0re~;XE;KYLOB8D$Vh!1N?0nm zTDD`I$$Q4rtgJzpohgkCUu=RKphbBXPJyPxRRYnWqKm)-MsgF)me+#Z^re1aIT~a_ z;CP23l1zv@6$vkj4c}#PfG%OWi-3W%bl9V|W&X@-Z{ioXX7SJOadbG@gQO#_pnTNF zcE!q8j@gX_YT+t|xBSOUL|R|C`XNWtXUu8xJN)rb*_ffVPQtk~qWl()$!;@w>;!$FnHkSo$W;^b2@Q$S7m65N5r!IiraZaAZi78(;GA(A@-XNS-vo}LC@?g_|HU_sZ*HA1zGQTO_?qwVWQ+hsYxWnj=Fg{g^Boexx& zm_pi{1A5UIl?K44(*f;aDx~*ibK=dLHwvnsN6VYBb@6zw!!e~pKt_Fue(S90KDLQT zj#<;0#M*{bgH;?eMAVP%k@d|DC$B3Ya26D_K8j>XC*<0wVBxDt{E z7*gRp;!(DvKBc_t0ym&RT?a7X0U$Kc7qxR0ZcAU*bhv^c3x9b!23G<nrN| zo_ZAL+RD^~a18_2D`f$fOSi;-^O^86_uBVTUp*u@?^IYozKm86x`(&z75ka*mJ78s$sAtr0ZZoSYFEQcq**aX$k;w+rbg5jUHIhe)xnSlv9h)*HO4Q#kXC!f4LE2pNZ=>92VCCydw4j zygJz*VLZ=V0wv$ne=mSaCFm#$1l_E;0miu>OvQji#A+0<^bPy~c`P}8keE?aEfrGG z{{u1hxxfArb@KYdL}XP!CzXN>kB>YVdtyWLFtL>mE+es*pUpr35<``xh%;iY%(GC( zhTR1)n?wJz?!d5Rp4+>k3eG(juNrMm^c4EDHUKYs6DA#ttLP_FA;^KH<0iYQ5^s$^HQzw#0iqL$m zXG_hs%CpdRla=F1#FJDsRg~a1vIp$=J5d$*LK<|&B~C2jKB@dy$qHzy@@-$Z^L!x{ z2%$^SJ7ib&l_phpMDma3x>r8ysze_ta8cAxQHebBflA?*M=_;vCW6kWC_G1szX~LB zpba;|dMDXLCVR?|qGcqEun4Cq-4=(kRG#{ON%jViQ>xJ*6Du>CB@^xw8V^yPtl$)tKpg*cqL`kt{ z)s(QBz%z$3q=d3QS_{=c)H|k#QYl1T=m!l3IqD1?Fdac(G!$Z51)PnAYIKAOlS^y& zv4(n4fiml~+tPy9&`F5r%L5K;NGvf8WJT_P%Mv_=saq{!6lE=nV-r3xN9TGW7EHI? zkP2o{5hMMV;=MCNBDkZnl{?g~@AK!Ck}UN>`jvd>PBQSRwu+~rgGD|q)F1s@J3^PdUeRfS@&K$e@{5(6(+ZHzBvHI5lw*y_9)AtiYn1P(_$o`sl^DnkPZw| zTnpW5S%J2!xi3W*iZL~D+oDmkJ*)^_eH`77rBIXg%9ok4E1pMq2-c-N>rOe6xZ57s zmd2L6ZjX@bW&)BF^pR(>*>5-a+XNwu z{Z%%fdIwXG67E18Aeb3$26(1EdfR*wgcy;pP?+>AXoIqW z1%Nm_aCGpe@R?u0J;$mDLU9&9NW|?=v+9yB4;2(G&mqfy3J<41+cXT^v35=?`IIfQ zvQt?A>7IsoZu@N+gZco5kE_){cxU$!cXc_lE163*$*6W_u@WZY!6|ojd4zebSZX$$ zEda}r$Br;}<%&#a@AM1)XU3v(MlR&d-XjWZH{F|?pkzCO2D0}@W3nHTtyJ0U14y*^ z2Ytg-gDGz1`ga`YgSMRXYlwfPox8{b*&Uc zo6;nt)AM3htx4iEbZ|P4ULzRJGMxp}mG>a+dyiNIM}cuH-@g1-ALEq6M_co~YwqK& zW&qluh*KIvdrGknWnHi3LDwT*sAvL)cJXw4S|V6n2zK1Dr%sOw+tWUPRL?#!TRC&h2g@9N%TvqbRjMG+0yT`=EQx9mV%Hh46erkmS9P8=5Imw3HEvUQ|ElQ1D1kWCZ$RhI2Wzez*=#Ta;9{- zh*+XJB>)-38#JhLZWKk=Z*+|~@4YZ@ox>xhZvS=#c?XdKXi+&iT)a{#o)XG)%(ARo zH%{JdSVT>FY<2|UB<~)YH#B)PY8|Ux)n|49_?X%GT6bL!se{Ko8fLmalF)@TMLEYt z&CR#QI4MEhX4QozHXeNNoYBeOlai}iYNzi0iRbus?ZdZal9jksJt#%?5=(u`d_x}E z`=QH{CbB(LR*-LI%|My^QU%*0ZP67ZYx9!aH&2iwNNW`#J%Lo)aXqKXQd$EAAd)bL z2Hero?$oTpD!sXn!18V5AF%f7`5JuCY$YIa)n@{csveIODm-Vujg@Dg$Cvw3?spu$ zs@cHUNBUhChvK82=(Cvj2?)IN&t}w@Cs`u#k9QUd$ba%7y_=N9r*V(VNdah?i}NWA zVx(7bJ69{$C|GtrZ0!<_*426j!+OMyY_q6&*YX62Gld|D1z=qZ2e{F`kSxqv#P+25 z2|CHN{A9H%%I8qjDZ_98q)DvqlrCC~aKBYa?^>>SRhkAoff7n3d?TvBw!-&{F_&~! zK2po1Wa#^*^QFoHUqSziRbyGl%VSGe%V_}RnNdPKM)t>Zo>Mg^v*C42%ge(}IyAW2 zl+Qy+{3nFL`S392+!MUy_i7u+u!6T!#g|)q5x;Ip6I| zVe6RfNS%iI1aQ{T26RMAQOg?_^1o3L=AYcl`%S}mctqaf`#eG)N+uS)Ipp&^~O=Wl$-6g(GDs=7V5ZOj;l+A*-n7Sc=VJ(gHJKUhLZem;)tug2V0?FLwK9SfLfF zlCZ#?m{H6=WxblvhpN#b)ilYudQLLh6<gHIug#we z@^o{2#uhqhkT4uEUuxg(pVggfiMj^7ChRtiW)n@}|ba?m)^H$$w?- zc1dG4XMN@mLqvK(1DD%~|16UYYP7(rRe`P7W4CEsDI#0{{oAl zWBd=t$vavf-oEpK;0>4lhQ$Cj*eL*c4w3)26^QTiMhC)#)W(BGkNv!>%O~x zs5}8+FYv|g;BWBW zMZp!>RzS~rkWB;6#_8Xm!_B({wf8`#OLsu0E6uGjW!Ny(JWC6cYI#=&LV7+}0mo74 zn0(2JD&I}+FP{~f#Oo5Y&!DXFB0+l$uR>(y#*He6T~4YRPWF|&iq5iWA7)CKlp7T% zgq#V!brP2u737bseIS`c`z97!bHL^Au$RqIjJijBHq4x}+b5MEeRnP0$)i+FXU04S z4y3E!wVi+^yGQTpI|zC06*QKOSw_&3(*K}2>sSg1D)OL6RenOP-Q;GtQID#Ft-m51B8_{|XFfBHY;=TyX zON3u=vi^G7)cZk%nW2wPB5ly7LSTf^y#R&)LG~ux!1Hn2gvk#O#*QHFHq?w=B#g$G zmH>?1dNOycrq=@8e$ECH6J2W&jj-39aSOQ21z+m+adxKxjK_$bS6-6sN*hSN0efLx zO!kc7VVE{SoBHIm8O(6c5Na=tQN3%i&it^g%?Q23+&3O?FoKmo7{-Ol2+f1{-WWBC zGo>H65JHBQJhA@l-ioK8qI$NlZu`>Gqqu3kOQ zNb&M=DkvLM4xG!W7=tn_+yg!fN4AXp#r+;&@(GfX?yn#Y?wg0sp(%*LpuISEe_#SdcxBE@SuX zoXI>XS(;(Pgkux%dyJ8sS&Y95xD-Em#v{r)00d`CKoqs-g~3DO7=YmQdokLL=xPmV zzuS@yrkl}x(6QldhC}<}4VxnD)kJCD&pj^mb}g>Ev8pMgW&L7AavL+WVAV{hWyptH zw30*<8x^H?&8S0}F8Up}su52!a2dC#l}Nj%>Ft829hm&{0_K8Slpa>`#N?mDL+Jr7 zg!aYPq{ao@qko%wgZQYbbag!*akovuWo8G!kQsnIJjtu>ohdZ1tLT0VouSJt9pTE@ zFmSNwLd-tPt+Jie5;$Mf1mUFH3G~w5F>ti#X8k^&OJHe-uoB8XJ}h(NF@$Z!b?XHT z;YDWUZRFr=0kIID5!8B?WHs?|*swot^zbY8v@fWJWHC5JcK%Df7cL$+?$l(ci7QqBp9VV>!~({Us1O8VyU zlti<)dq}}wS`Wp9Y?fozO}!ZnDB}FITg(J*JRLHYj$xL7Ud()cqd>Q7;i7UTbEk^Vu6c*7kFfZM$~9dzbhq&I32w(mj&TI2R|YGvpt_i0Gvm!1oF7sCIl}VR|8k zHd<4Ot|$etjS8fg!qGh;dJE2zS+#~L$~_I?;W-|kZaUO{;s$eTB8?vg2&L0{kt4kdrO`s5i#z5>+iu=IO62V3 ziA|l1rcee&KgRwj4on9cI&D1v8pZqdb0Y--?ou|wDSh@bXd0q}?GIsaCUC}_R-LEk zqwy!ZZc`_s6Pr&KEtC^qxPNA05yWf*tSh@pEv1*BwnkHMHOIMcT9>S}YHnfa2IrzL zW8eWX&CCFZe%d_XAo|<{{dqtuVMBxo+JERY?fQI7%Op7_k8Dvg&~^OLQB4=ze9xUz zU1@=*og>kcr>V$4Je>7Hw(VOw_pNDkXtAJnSw#}6+1cmpcAjGbM$08qHN^$N7|jn? zg)qUSiKi|A6=7fvYU2X$Jiy$7uUrdCpTh8ZHmTc@wiAutjd$+@AB@@p5pko&{MMmS z@gCbNvL6}R;fbY~3zyxRBpWDH&HP|?%gJ5Fd@yfzGl~@XCWHi?gL`eo73vXVyzQYw znb)Xs!4`d-`n5;Z2{eB;i0zJbuXUogr;*(+Dh&!>QZJ6z3()cp*{+*W?Zh}`1RJRn zKws7!8swaHmLfi1ySzEEZX1)mB2_4-N8C~D4yI)Z%_WJ7`*zJO-0Fim+Xj6#RDrtU z6q47|p7i@j5LrXzpf@xwgW+IlP(REh4kHGX(%HiEUiMwIQQpAb*Vh8rCumMl^e`ks z_HS_Yyc=3<12E;TfW@P4w2AP~wV*t-=Hk;aE7XS;1% zs+09TW33goA`I&NgGD%3i9v{rA*xlhf5btZV^d&ryc_~Vnm`DYlFJ6E0ZQD#T^&;# z-u|}(y8@&5xW?LbAlnj{Z8yroZ=)7mkof4R+f+mOpe1yz3fFDraW-29ws2!?w}x7x ztI5V`D4ZesyF=r|4H5Z%lgtG}8X@%vgNVc9dFbTYxrJ1RDiWyOQK22Nd2uGq8j5R# zYnF2Ddv!lM&Pg0vriOT~)#HUPE9<}Nam2s&m$#MdR-GWSi_0Ds-dh`v=c5!73FX4m z!HmBXl#t%!rz*P}bbm^x?v6TU~n5gIiT90(`uO9ubfY0s0UdsPbS#& zuxE1b?KC zm5KH;F#aYhfVBk`Atq;eQ-&O({_^ZWdBs>yrP@r=mv5XXBd1yx(e>rYc_?)SPX~t! zb2H?~u{RD|yCuWZ$-0JblC*6Pkr~GsM++?93Qd&IOJ?PB9is+JNO_7`CGuJ$;`!@k zC4mV*+Dhk$j8jC89Il{iS@|b&LdMyTYp+R%0YX+Dth4Y2wxDpsXaEfd<_dKxWkEj+ zByNh$8|Pb&4O*suqD}c6b2W^0!LD=;v~q_L&*(Xin|-FGF{J^}@HH^o;%xNjr!mnG zPvm#ykP*k%T~BcNG|JwrQ`Q7;dH^dHw?U2D?czB^n?D2M_!po9 z1GoJMdsV2!(s0G_Wt=b+cIyUP1NLs%(#QC3xad(gozHfzz-A8oj5wxEni+vP0_@*x z6-8xw;eZkZ#EJwB?SCL~(NcztRxWK%+f*9~CDdT_Rn27<%H4bU@Z&HY@|>*%6m9FN z8n|&Ux zg?6MGy%*(q6Gjhorz6wA9q^w))=z%oI=3|_6%3PbCD0^TGnAI`6$J8|HhAmGR$$2^ zdTga$LM`~Ad?s2nRi*;=gncm-DyU%W*v)GdE_&!$FO*R%93kgv9D8Df@a_iM=b?j4+Gj;_<_<$@l^ zD~y4w4wO04AB4=M&R=oNsn?p?34rWzvUtur9*NbZExtAjw{`gL^0_h?FCGQ7gq40W zG@3Zf(hOwKMK9|GYcXOa zmiC&5wNRQAVH=(FSA^S=tHv?LernCHH^ZHPE-hVLT!TK^1KP9vXsj6F>w&>VPH{qg zHm*?J;*!OrKs9#cu7_4mr1@BV$?=dUU*1mW!}O|FI5xNP!s}@=^WB~Kmtsb#pB>2Q z#P#obt1Sa<%mSx1mA@?-N5E@WQ)cm~JQzOfL#j9^4O*Z~^eHnZz^VJq3#v+R*sI0E zu?rb%Yehu_LitqE?NyH~etSvwfI9Uq$UGE1U2rCzO<2wJ0NYq8kD*@mlM%?02?gYP z`)Rpx@<<)FX}d16{Eeq+ZxF!FAmX%!7H*$jp$cODIb%?1AFE(C{e^-VEkP&v?MJ;o z>aE;m#(puT-VzwwH%4x41>EU#cS%}GVXFoa`IJc;Qu0b=%$i)BSG&yJnXz|3YAzK0 ze@A-!*EKGGIjQ_73Gn|fI*YI}e>j8C|L@Kr|9wKrKYU>RuSpO_)_>tZ+G55egcxA_ z?>{P~Om+39Q)?-L=-)K>t+G+v0AzJ_K)!7sr#ke9&Z~p6$*Bzw3>n*ydpFb(a>>D6 zG}>F1$B1Qnug1Ev2Po%Kh4>Nz8;%0`!i9-@aqo%mY_5Vf*17AuPKR-?Xt!M3G@fg% z45C7rLAk$ivTRLU)l8^+Yb~)cEaGcWmHvgT#-saos zXmsNBRo}~`JE=rXnv2%ufRrC(@_y#`7h#%EKGAf$W@;R>b2E2`!+%yU!}L*%_pikh%Mrv4u6EB&Tjqd~ORqxBk zA9--K-)Z*(=see7Zw6jF+?G8Z_1@dwpV8m%6Pw_d-)~!13(q}v%-*j(9Ww7j_+L_N z%otrNbSxW_c3u``Jm1zZYxv$>-vw7^9Z|A#m166fv`=n(peQmO*R5zyceM48m0gWV zq(n~r(~?|LH?}389!DlxWaiPw@4K&FNBA75TQh>L_#g{j=U3N~AZOlo?eEF@^B(VZ z6M5LoVrYX-cCj&4zoW=W^(U{8->eKiQ=V96#(<{&&V!c~ACl6Udu(%-w zNtG|laBjs;m3dBa(8-RviWYj!-skJYf>Cn{L-?Vjhs~%LVJ#YBP>-f)C9@P`<0faq z1v(?>CyK|4q_v2!Yi{SM)`y)8>1fJyr5|a}pDeIYI&7@6CG#wolW}q6AR6@Cr_}po zGW-Bh4Kv#EFfF-!YIyWNQtMC@$cym7KUbzarNNXbu!UcL+&s~cCtl5G5mz7uSp z-dM3JCu0OEaqU823{HM8Y;h8uO`u5@dBV?jgzQmc*q`~$(`2}*MGJ8^3lu9$gYp!W zD;8I3CiWIQFBKpfZn9HZphJwe=+*;_fU*s#3w~`A5P6asDO|Zc{Rf$(f97_#;&pdj zUr_0yws#3E*Wx#YdnUo7R~VLIxVKy&TV(hAo^iDPTX#~{lIQf9BNmhJ)Z*J1!%<-t z4)wrUKd#AS%rm4f6m8`-r^YaHcI>sl6Z)n}d0|QsTnD1f2th%n0fC8$2TNb+QVM*D z!8kM~++_@9UfGhjz8ge3mA{taN4}O8>ho2zo6N@A7C_7gr;P<8-sM1A$H%wx!msI* zq3XQMARkqMZ(75_ND5+mNA;`T#`a7gCfCK@KU4J!$YVdNlV9JzyZIxfaRBjLQ__o3vs_+=`s$(Aziv zM2hKhIynP;x@ETQuYwOC?-R8s)kb{nu#z`V78155+9ak^j97qg9 z;YE?STOGwHtqu*9;4d;Rs_)gxU@WcxBlGnOsmH6GX0gZoy{Zj++IP0VORNuZx7XBk z1Z{imG;n2>>qZAt>BF# zlI%*YBX9Fn_I_vvWWhOgC?wwuXUnXS*IoC&X7D6?0cS%p3z_tFY&|=_Q}R(D!6KHg zF$sJ7fVts99()EWHcu0K=t;oxMu*d8off(fpWqiJQ0*_z5akxWa@pbG5wP1x@lx9h zf&CGv>Lf4)WT7I)kf|i87JZ@5)C6KcWuz~=eYed(Ki$e&>wJ+i-I$C*Rf=)uuUu)E z{Q}XZ=99$N&T8qVhZ_hmA?fB07)vQ%+k@bSDqgMz?y+eS%U&UGV(ofd;_SEUl1g687T4^ z|A~6kPg?%tX9Qhq;Rb?kY?ppKZR-jm1leNo`4fdEA3(n(VoiiC;Mp7}EgDi+CcS1@ zyg7Y0YVMnx74HDc&Oq;Fmnc-f1*b6E?HTzEXD=oQas+7;R+p>A*iSqTJF~8Rc8u;CPu3bg2rhefj2?a?aKvKsItTN2IO%^AHEGLfU1nwJ;!^4sw z%-7k1AV+bdr6{JrfPaV3^%*U7obTZaYKI2v2AwQ@JlWZ1-yhv)zt;$j4krRTZosb4s zN?OxWwNP}V0Gx0F0_?ZTWFnFs=?%#tCzy%!fu%!Kj+B}p=;f{!{6T13+c^if9Nj=D zEd?*Ku)$QM5Qh}rFJ=9!a7{t|i-nS)Ig*9?zU9bX?T}g1HCyj>5rAUXO@_1#ab>0O zTAMIppxu}|D2G52PZSeT zu(D!jbzzEd5C0~FdSQwe=H7K2;>32>Mo`{-k&8Pj)7u_Ifbd5kd0YScv25x9HZKm51+OHBw1FZ^Hif_%rh9+EjN+kVFA{L zyEX5V&!Ws0AbRZBL8}syMJV^d%s+rg%Sa}WF? zKS*)m-V2LFN$hSg3 z{IyPOd<88v|l@C~)v+2H2P()~wH-q>k#tTJly9dfrFKi<| zuE~8Yj@e?7WaFV(GbeD zC`}^E1@95NQH0#;jDDZ?O8|}1hOLr^Q7MC(5eG!h+h{Lk9XD=^} zfv7Ahupf~A+K8vr>3i-RNu;&P(o5ZhnvY!@3SI zB34wp(IY{U&1K7_M$8q$Ym}Eq_L;V@UBbfVC}S-~Rnk#q!%M=HcyAO|lO?iSNI@Na zLqP~F6;o&2%vDd8PY|Mk=Z2F0@*Nx-PQKF)Jbravq>R6TL{s5>^}N0t zIkCJ)jKx4^1AnzkSi2Nvkd#hCEVxM0@yT{`NLar|6q_jFFFW6Zgq^92(cou3Zo!`vFLMbdF;1k>HW9 zp$I#9Z0Dlc8m2HpbYZqWLs(bb(E|{(=lWOS7pZvcnQu2}xgCmNUjiWXzZK45BdHzE zDtu;Eoi2OAlhOfNBcfLfQJtmQn}Q8oz}|CbTvYiH+;sQF#*0H>qx-B*lw@laNQQ_- zWH3FL60FoURMlczkY_d;fLYU>62roW$eLg>nX^SGn{>RQ_mTQswhA;KN+hWXfx88` zYpqjJ3p0yzu)t+ED{{qf^(ewR++@@%OpNBlDDWmyUA~?cF7jLL0E@Ax;1|+jtEnrn zm6+Mdo~fvikTRUxBUqK&!Cpf-V;d1{>xDfL(G&MBeH?4@de$(S)F~&QimRkDGTi&- zk8(T3SM)qdrI$#T6>5ZA9dD}*EzDbU@gd6`lL)LUrRb>xwsRu;5zB6Fdk&(>oC%w% zWtHSlT3>zV5nuw8az5!9>{c-)5VX~QZQ9=lQ95F1zKP^S4#;X#qtoW%W+q`1QnPDZ zI~p3Qa0yFzK9wZ0EFGX0){`_k6$1gcX*Ng1R5ahvSS}rBM4X!O5T_Y%Z*#3`%4$oXR+0N??H%?^=X! zIdGWOP3x>mM)}Ca?X6jUcrVcN%pML_$DMBFdyZ|#&F9-#pTK1*{g10V zCL6{_*F*0kbjl%xvqaoMkF|>tZVQ*JCx5H@v2{s!g^tQP-K&qqQvs;##ibLx%ruN527QWmw%XdtmTmyETBoA0Xc=&sEBI&hbTA|ip?fGv( zTP9m2R1i2OJ87MA*VWgQ8lrg4>ms+NL=g=EOKP>0RhGa_jQPtmr2%EyPj1 za`pf<9cY%_2tJXbU$I0qCaj>%kUxo(C%hzRp-QNfd7$dCs73Zr@lmBOSqtzQsKai* zfm6Inbp5;kfd9El|NjA%bT)SOUn=Pg931Tbt;P4hC>lGZolfxs0?S)WK9^ z-h08Ue4ZQg{c#&h&qr|`%lP}x?=|?1gWr$A?^nU^H{tI$;s1a4%_W8gOieq-P_27Y7UHwJ!V;5P<-W8gOieq-P_27Y7UHwJ!V;5P<- zW8gOieq-P_27Y7UHwJ!V;5P<-W8gOieq-Q&1q}RKCrq{v3(5bs?)E>oF#Eq(!ToQA z>OQP4+1c3e8Q4DjF8@d-`j1O_|3ec2#((ue8~YHhBl$zPZspx71K7e;8~@X|gEWwb zl^X#cJ~3Eqs?I)vCtrS9UHsDlHIIIPYF=>yZ@fgEansG`jd?bdx1R|(Z*Pxx$El^V zagQPE9|Cp_e7JA0_V2Fxfp{DD+8g(D83EXDPp``j>+eECoBQwWuP#wSesiDlLlwX& z;L>d8_ZmFk_!(RqU-mEb#YNG^u;XJw8KTEQO7OthJ=~uIC@s()f~Xa68#nbPuR0$D zcFb!FBOlJ!Jv^T8UVW#4nQksFC)l=lBeOQN6;k~LCtMJ(E-oMM$UdwD&bHAX;H#~U z7jCVs<9ihu$I;B~OALmUk#u}ei(@3-n|4(4)u@<7`m(R!=iwvU`-ecZlZve5X6uck zS(|VgiVyXUNY#_1!aC~BWN-I12wy&P3;;XiqC){8QVp>B+ zME7)Rkh$M-SR-F4UhKGuBPxtWW2riJ`;Z%4#-@(m77K4bTTTH$o=m+2SOL~>h6R3D z5RV+(xk=rSybu`M&EeqzwjV$;s=HxKM`uY#Qx3th0<_neO$7QjA;LEI^D@Z)!4prajrS(Ql-q zIlVAO489mB-ixUtX%~It!C;x4qq@n{ub`N<2&6wfVAa$PTQFt;Ih~@PbI}y;kivC& zrFGB*x_VC|G3H$8ram2PheeQ%`=Dga(q@tTa1bhDm|;>|QbmK4N2h_dr81(M2J(T0 zV~+nROHZ?t6A^Fh4P_H(4B6@H#vPPqQDQ6trx4^%!Ya9T42KcWIjFYTMn_3mAzSI; z<9DWxY$1*Ja8xOAE|xUrkT?ImGoad>$<8i)$E!skUquKriJkCkWjQAM6g>Z62*IbZ zAFE^XPcLEh(a~zeMdaD(CnpS<(NW75glgl2rHUn&e#VD{$PoIBHtX+REA)InV_K1k z!h`fD4eE-x_Ca&BWa~WR&g(**VvO{ra`%z;(&YA$xJ$h_D}+IRl#Xu(;9~s11 zItF>zfooNOWGM$2Oq))!Krj#iuVU<7k5QMxK1M^V5=Q5m!_AS(!yYcRb@E{^b3qd% zHkuK;a=1%FF+EF-1BdBx5->?;;2_AiSX86&nX0YcHbES?4nvQ|uCI+L)^@GfZMmK+ zvUSs;sqjG(G*Khd-vT02Bq>Ql+^dPQC%m1nPL?#Pj1bHkHH)WfzKiv1HbwV?L!@HZ zCg5oJ(wrwgj6T@b#%YL-Whm02P3b?pk79Cl#C2-I2n?0c#DG?SF= zI1oG(uR3t~Lazpljor8^f^b@m_nCf#4i|8`+pzc^i=T14A})W<#5j}Q%?yT#BgSCl z4$Bwd_O=LnEDS%{pInTYx?>)$>#Q{;opg5ebjA-r^|U~Aj4+FiDDglM!Ua~#zR8wo z{6>vR*+Gf|_26C!eoCCW(hRm!hUqaWFBupwNBI_pD4?qzFbFY)cbStds|QY`JctW+ z(fZqof;{#R563!pE1BqgprwaVNB=?&CA?rL!5s8Jf7(n+1#^Agjy73>`@=5KVFgoT z(W@g?nj%5ugQ7?xwP4H$0)4BMQ@0zAxxk8z*aGxQ$KEvIwCL``TOxH z*}9c5rMWcbFnRIbIO;@Rc36x6f_fe1FphCs@O@K)H#SgPM(YyKv&IPUmC61Q6RK$M zZo=d@%7CC6qVjta-ubJnQKn_%~8K-~+#S2^{LQ4aq} zP-mNSwv9FGV@J?588@BiTPa$`5R-t``F6U>E7q-K4P_NtuInUkrAAoCVdP6_2kkc- z!n9KR4+pt+ml+H$CU*1twSG6z(MG1d%0*YKODQ*0`~9_`uE{8z#KMR*5W}{uWmDyb zStus!WF}a8R0kH=XV604p@Af|+>`x!3t%$>Cwjj~fOV;>rd+(??fh18)cFDYZG0#D zFQ%M|ZoOA+nk6duI85Ou3t7cm+nU8&E_k|(ilZwK?J6ZnkTK&4Jjs-BjWsB3+{&Zb zz`G7P=FW3leTO8DC<%EtF)PRR|(NUv`3Xi3ktGb&j7g>R>Hohe}ii4sm zeUtwhjaoC@l9c<48q=nH%f@w=hQIk7GII%gb@ts|Pnp_`X%0tZOVFOySs-#7!ZzYH zYliFQB;I(G6C59WUgdZu{5me@VGp$*8HdO8a|o=X_laqDgBRDx81SH_pXIQ>B^*N& zpPL}uW)%kXmPKTM4zs_V-g;1kAiBxEAn-VKNT6QxU?}!9PfxhD*g_)iZ@g7gud zgf3E?;bsxXN=sHRkpIBw_rjQAfa6>0nIB9N0y&2Zj_hw5X%{V2?;$2UwD|2bLRR+a*Jy6~sap zm`wt(9VJWkz{e`2OUJ@i|HhLSmFa5NQ6{H+d#95v_re_=|PO%8SP*xkcyfvaUu!sozZ@Zm_jLiU}apS|o0^ zEIq@|%0UaTqPuk|VJlQQ(&)D{Bq?~^6@M!8k^A`DSg*X2YDwQl_(3f6A^gy;6}G4} z@1pPVbF4ZF<8F?fBtc$$RG6q{$C{E1lT}AYDoeCZtuPC|H>IPHyFCL2p>nZ!!ic6l zpmT*}%PmmSWmlASliJ-~sNi%x>><%>v``8?RfcYgJ8!|q_8F8%NJm0TBVV%(%5arh z(MVa26Pc(UwaiCvLvwCX$Ii8=iqD*?Id~K{*A|cCoPX&K5cU&E6SqEM86AEPQN*&f z64Wn)YCHpx?UrS$i(89c$@sp3D|5CC>TE?pT^NvjDzT&BATw_E#qO+bp*|_;yV0;^ zlkRKLc_&ag+c(&xv&HnuR}DG$BsYgR>AH=JrJ^l0m{?t#yup;jTDDXlE!Q$MTMd6m zG$_Q1P$4t!8yoqUBu!)*g)3Z&Mu0(1&KS;YembBLU1mlo+ zrl~yVixMWRv#)w;bOmp$Vx0#C++vyd$1UnNy{XB&w+rN-Hd3|-$95XKL&n;?8Lr(X zEP3oK`LbxGB>h$Z*S3{TVnx&I4Yj5|PJEX1L^2v?xCcwRaq%+s&PAcj?pYq%u&yKL zr2~wo_mCYC5_6QATxe;`sxsNBGlFey7Q)Ko+ejfacIhJ*?HW9mJc&`Ir`>mY;k>Ed z?#n-@%z`VeRnEs1f{d_x1bd}%l3mBlv%xpl0!AR=ue-UT2^I;wkBtUguX?C1Z(|yX zlpCvw_c*kMkP{ESJNfW}1aNC2PGg_8&NJIut~{WKelq%E&CNKvsVVqv@`O{Yvbj!p zdyjcj7~0!O>}JW2L_wooP$&xZa6GS15e3hm0+Sx<@>>2RDx4mP&90oOO{mKpiAes< zRD}+7MiWV}l3H;rnngL*F&&{HbW({zJzS`oo7+=$Co-Z()EP*jK7V9Y9xLW>H=FFs z*VE|NwCA3Q8#0{xr*l0KV93r4nmRxr4j<046&Q7{M#Z zNRoTa(5&4b{DqB0en2pH{DSawRnKxpQT6ha0|795PkPu&L=n zq~^qs9Rq$4snKC-!7clc7MVfH%Sl9Swu8iF+AV9e`(+=Tg^OtAlu=chw?YZpIU61+$vk)zU__bl#4p92+Y}v7{ zD+_NZt-pMk)EXB=m+Si?;SkT9Zc0lP%((w%n^K=BAwkfqAsS}7q!?nmG)BH0_q4RF z(NHEaJWHGyM{N$Nz%JvS%4U_IcN{tKsIK9X~1-=S(xNp>Y&;@D2HKWsX%M*1R#^Bwts- zlx^gF7H2zu=iGn$c%P-d%*m|PX<=9bZhQ%zX~}yL-gTXtfGjfuMNAN}r)CsxlHx+3 z&2v9lfcbtl6Cj;#eH$Zv``uUE9pO|-Nx2D638Bz2ym?M>PDH~xS|+1fSMk_)N4dt6 zi&qQ(#oxO`*dckWk8w|%r1Vm%kR&YO_d!@EhkE%+EqWrSYcYELT4F@J~~eJ+N` zz%Vpwm(Ux{{scY%E<8{+sFDR>+=T-^bz=n0^xs70Ws456W#Sc@Gf9rq5l^( zH|)g_nubdrtG7*V@Rhmt&-9~-ksjaYF}ND_Rlx>xgH)l?sWG%++3fY zmhsrR-fzyQ6Kjkp$NEXB#?{ipGt!`KJzn?ES0C>xt_!CN`(L!bXj>Dlg80r5k57rS zsJic2Ou2X>C(b{fYkP3IzdG%{P-F9TyuJ3479{d?Y5ODxn|jte=)Ju>J>GoCw!QA% z?lU!*#qefr-lF{}+cvkHFPpURA=}obhS?O+QX|w+1Z2a5Bs5ZxWH{BQ2skV+=$tXy&WP1A5<#Yq5}TGIQduY|H3qt0?1eE0h}px3R@YCLE1LizQLt@|{iraut3d*ZeQ-hl8hZy?QQtj#tXUZzfmDr&Vl<)5 z#OCl7QR0|e2napiv6Sl1P2`J+{W%8!OO5YnX5C0Z$`Js)^8lq(TFeA}1mYs&hACo` zAue0?p)>)d@MYBy{bXu(=}M4 zj8^m1&r@f1TqDMuh4Wz9i7tEbo$NT6PGlaLj3z4Gt^_@Z6-oHM1W{_K8PVX77LE~oC}^eTQ%5K}U2+QbCHWW*JES>z$HNS1|kMv@2e-MKM# zreZ~~YLJM%!Kg$WifUiYvoR1Zk5|;z`tgZ0ned-Mf{MCXU?E+>N{?Rw3s~K0#j*5x z)}iTi&@1}jOWD_*bmz+hYZ%6i+5o`&cqi^=EPQtJ?2oizS_eL_sMR7Jj6DY_b}_v;nj&4*FSHifIG-#|#ARmhBMWgP(iw z#W!3m3cG2sPu8pl(^|1S?&z9&nh$LOW4TdL4n z+n0_tnb6WV3o)40RowM}K`v65To@Qgc4h(_lQ{Qd&2WSRp#ffr5i60R>I)9Re%{;cW?CD%^TetITKc zO(Kqv5%A+6yvxL?} zB}h%A-WI8fO*h5f*-2-F@V(C*g`eXm1?l#69^GMT4qGlBwfs1xH-S2mFlS4#xQqsV&e7|7)#s=g>t=nXzxah0 zuw>adX_i2M%QP~TRKZKvkN;~j;gf9Qs5mL4ZZ30nctG8ioO_*r;#tB^kvzoOAPz$Q zugq$aFb%>Fq3doqZ$8^BN60BEn1o%h`s$ZBsAW430G?je#C3@2O{~3Jfw$Wws;b3r}7&P{==E~AbUt@;^bv2kB z@Dd60Jh8%gdt72i_DhhH6%m2WUoZGm01ExKqsktlgmt>u2@BhZ!I^%{0+}Wt5qbIE zg8U#SsoYVs#D7S-%z&~9#+Dl@irdVUZ&EdewUBWB6id*V0GxG3mt@}5jKJ_Hr^sTR zmlw>5NfgW(-LfWS)C9I0KQVX?AK*ZfM{+ZypFkiSkiUWCI6!))u|W^?V;(fC=d-hV zb<9q^73HmP3>PJM+|QA*OtC%-9BE;@A|ZHx9Sj0)R(jrEYYiVj(h z99i9b;>as*@OY>Yif-;VFLE=@#!D3Gkde*^=M>=D8R|K_T`}U}cJ)?cGHyGH3?6F8 z+OG_p$Q+%-;HCqqT5IwiHEg3} zNJ8=m3NT`g5gd6v{uTlIr88Q_?)v8d1X}#AaLx*z6Z;G=KRQ^RJYZDDOzW@f#^d{ z?TxDA&Wpv8S5u6^EzJ^9*6-R0{)-0PhOO6*g>=jMaEJ|+p8~I6AM;QUzP~*U90pDo zHU*uxytaxaX^O{d#<)iGJ)OMp9jRuN?C-oYDdv-x31MRlW2E9V(I~7;ZfC0rp+4Y+ z-_yw9P_VMB?JVr1Ho8}Qd)Rg zkNm7f3zt8&T{~DEWTS%*?N_0+P>u-3JkipTX zX5a!VR>lY&;)IfgBV1iO`L@wZ z17n+?V&+W6-;^{~TO6uxn_+Ol^3C(i;dmbf0OO4*C7_3RMY~yvg6xpY9h^1veAC1x z6qQf!D5rXe9E`+rJe-P};uq*+JC|3+34owU4_UbcO0RWmI9d@JZ)P=z=JX$ zPz(V;l9ao8PtH<$$d^-#meqh7!mXM^9;(t9-lRov?*qRhPKOBlCpTnkI z{F!$Xdx?S@?Q4jbGZ+MEP2l43^NVs}F}CZ*$8$4-V(!dXM6jgynu@XYxzbSG5SH9> zwoiz@$%QY>^-C)r>q~FX)k7qhzz@{VZTGb>PqWX5O2tkb6MZ*KNh)H5(dR z?a+%+G!0R(fk_ncGHdR0plDmF^FOMWB&2rNcd><$_wOBqS$^OZOMud ztBziT^*wjxh_PpS}P%cqkz^2MA7@*AeU>$3rhHCBY4+?7(mhik|kh8N&% zx>73u)5(?x?8f@+et~7kC|=J(fxwam$P#6q!$NLd=P!iQF!# zw2tFCz4ME$q%oI?_3$+UmV((i*EfqBIHQ`;j}~ZbL`UNBYV-%b!U``SQ5q1YmYXlF zs##u^Gi|ypPl^=3jjI%kBdL4 zCwz7e#=lxPe#LP7b?ZY@=+9dmf2|Ha2jkx@e+6@V5J~^&kc08prQ`W3_U zD~9>67zPH`znT~r*#4l6K8D7?#PkP|_Qw?q^Iu&suyXv7L-ox%xL z+Ww@f{$Q~FnkfVQU-Z>S8^^DX+30`WW%!3F!XID8!1(Jf1M{z57(P;<{u~M;{jYCh zWc)QK#t(;!zwZ7$4L16}2Fk$5{wt2@*FrKd{XKCej$hMd{)+{~XJBUeyY27AVE(mH zA8gsL{#gI+kM$qU34e^9_18u)u>M+Q23D3|%gpxo=vi6++Ki9I{WUk1zh}ut|5qCa z>#w1((f_p=9L&GAitX<;`!luek8NT5)h!#tuWs2Getq&6#u(`Tnu8|YS6v&!4~YIb zKwjQ|JjnmB`e0yV`R8=G{{er<&iF5G5UZNY5j*vW?(p<~xIs`~djR?X@JurWz&;RM z0z3i`Ip{R%|G17?hqn}tMw*o_QB22IIXRJ&kBJD`DW*iDyAfK+tSEZUrr~;Za(}$q zsvsZk_FsR0yK3OecsneAefCdpcl7MA_4I^f+_{;z)M|g*1DE*1_kO%PB94TZ*Gl0SQ@j1`A@8LZhR6NwM&RWXGX5EF)@bW&%mwM{#@YQ5nLy+H@f!Ue zn$h|g_0IVcJ-B0#J+*e$D!SMz`lq-WAbK%OgXCIs(G}=w%+}c!-Wnh96DAq5n_f=0 z`0Q13{iT#eLuT=z!I3DfE@PE@gJEom<$iT`WWkg!W~dnY(DMtU_BW&4arO%9 z>4s~L)}DD11&sNV>SppaUcGn>#@uX?sCeRBrE*K<9eaD(7$!}gk90Cs@ffz{#=*5Y z^x`Pkw8Uy!OO}s(vfA&{H16_ybS8={#;eNUF;&5m>g_u(Pjep$Wh@M~czFAlIYj{7 zk`}Uo+nB>eo~=ai?l~)UiMqq|8Nl3b4o@$u?!L!9Gpj8RpOnqZwdLkpi{bEkJ|O}& zNZ@skE;{HGC`d^FSx~%AXm(HQ;C7aPSLy@$mg#@#C2n5wKk*vXL@#^@Uu1~7hHOTmarxTfO3Z7r z*-A3!o9y_JN+x{=nZ#mSqH5e68Wzlk3M%05^R*gPu+g-6L6%}ekp|SsnTkqR4 zS?tN0a5|OzCT$d;JfihJ=Q`j^L~&)TD;+8v+rdpdoQgljde21y7(dv#KDHX+I}uC6 zhC9Zf3$_ZeGjqK4)+c8fL!kKW;xH;qsR{Pl-g&2=Ad0*OIDufbVGv^sjD@aG00=hy z1rhzE$r&>ln73xsVf&&w`b|U&cscs_kvo97Kk*VnB5?Xz;eT3#WE{J|U(xa^jdoao z<4pkI4K(l%_ADR~;FYwH5=9b)hJ_U}XYJ@3d>#st0RDnIkid?Ch!u53&x&s-W!5>| zv*8ub#BR^dp0#Ujc1en;x_GM+IxtLH%S8i_lXd>TvG$HZz68y?;MhE4>kQA>wyiU^ zZSyytGq!Epwr$(CvGcyW|Bc-nalhS&j?U_=uKv*dbXL_Y}rZ-QU zp4Xj3!i=Ivx5eX@awS0A1kA{q)3Se^W;=4XxUX|wBd+b;aH#pPgu4+Y6can@oyR{ce2OmT zA}hT*2WGjk*+SL_hfnmUm7b+!!e8WQJwqYh4x3ltv>n$EsDHL&qa?bO;}?s}@AZN-|`ur5~wmbrEHs zUGPsi6Y(rhJ(Ks$nTj4oPIfPKNthC|9kGQe!_j0kX;zuK8H7%*r3gvpu&BiH&NwDz zOh#dfTqA7g&V(If!Yt}2rCdf8HhmXYeAs{)OLJB$F0znjwl6VI%|@u4t?9IyV&l_^xrikZ z#)cR^2}`PhOU5Tn50HyR(Q4DvnqzQI2{);&`P`@z6~P4lC{|!<#x`+(t4=6nUaDy8 zTs1xaBy?5U8rxPIILCJBE^Q&AVKn;GD`qO?r9yvEJWSwSjUV+mUc@e$Odsyxzv|U2 zoVh>Viv<)$WwBXm5|mq82!%WG9S7l%=&P9~hrK9edyFhwyHJ$(!uv{w5KC5bCA_yR zJ4fX5EyZbfR!rYNY5i@T_gK$lg>_wP*gTyZZ!P*ozR^l-Db{31T~(?aHgxtm6_6e1 zi21oj!=Y+xZ;hW>*E9%Cd=SR5Uv7+_A>e6L`=oN7XV&;a^|UuQ*dSew?=7*Yjv}d* zBs}N^JjAywgrA^B5Ta7DpGQ!r>R6u~W029=lCt)+XK>C0-9XQYyd4!<9$d!b2AS1P z5fmtl#wLGacg&GoCBtpb0_W=Yk2vJOnAm1wksjDuHks8sF>7`U)qKjW7QL@!%8|ex zV=}}IL%r9BS?C}5UQ+bRe*ZuXj_P0*Y~^ufd#Gn{l;TZvg;6(Lk=QT~up_n~zbLiV z_0o9ohW~~TnmH~QPTkXaj3>6JoCPENu+fB?r9pwK#Ffz1sH(>wVyoBqVC#J%DW%7uTwpFx<_d5|u9(5}m-(e(yUUNgZjKYt3r* z{eBI6CIlMf+aFWOc>7~2;iB>xbN2N0_y^snKxy$ql3Fkkv14w3MpcHwW<5jwD}YE~ zoVC6byqOOfs%llQzA;Q2>L)nptKsD5i5T%ReqHQ-YX%bY&|Oo2nx)}TEom5^va3uK zffzamzMMJ#UH=H+067tYnlFl`mYbM0=T+Z||2|~}a2(PLJZ)-c_Qy!H_L0=Zt3@x| zN`|WW7gz5s-G5DP#4nmTk$s9;P?qK22Y5Yj^c+V`aa;gkqWn_06F10)fnl>5 zK;&>PFy6iZC?ozbgcaOMP2G`a&S3k={2X(i+^Eph{L4zn#pt~7-<)Fez%!fPtU5yfAfQ%V1l12d_-*ek01QF{ov>32R}Q&I2t}C zs2aLHL(%7Ahgts z8qIGLDsrjw4ML5%djNAf6NhG<`|p&=)C~Al1E{2*J7`YbFXDeB{Hei8?Efu$qJN~~ zTa#SwA_`(EvS>f^m6#F-GTRdoQ(uXJ@lAl~1ZqkxBZqA2Gtn~vLqMgm@4$q2$0zv& zp(T4Jy(7VG4=~dT)s%Tgdk*AOaxX;Y9J?zKA}(D30tX(QQUE@?wh2V2YnwED)x8~- zzQk5X*ei5INdO>jgj@Pm&xCAG7XO5Hhle5WH(7Qt6FSM%3x4o&6!LH`=^CG+V8qe=ryXXR|~Vw zl>t7+xJ`#o{bNj2Q(afjmb5d`C8oA`hQxFz zJtn+L!5hK{t3<>0_i^{Fb!Mwz)DHmXx#<{V zN;gmwovY{**&KuHOPI-FJ6|e|^wH%|yNPrTxe2vfD7DCN33XdYwW1%719ywuSjMuL zf;IOZpsUM1OCj?PFx=aQ-&b;=48V0G#bATpKBdn> zPX6$opHu1IPf={enLf~TkP-3cY}ce&F0Yl(pf(^9rkJCPTPY*Qm=Yve&Y`hFt}~@i z_{?w6qWH9b(JgmIELIwSeS?u4*3-eb?ll`2#aT>GT$jL1kVJeez#jU{eUH{mX=45j zl1$gnG@Wt?k5aY?!&aC?|IY}l9B{W%sJs=n7$-7On`R(epPsu$ojDf!!6w*9of)Rt zSLm7|)Cj-3rkXC)NOL>poc42dyB3@JUs3*3r-<9sKF#LMAwg^q?t;Lg>O zIcDyXE|1abx2_lJTdXAKMZ1>I>ZekojW5{!Ca>=R)0Ao*N_p4L*Q?|+4*D}!?_n@n zGzj|=ckybpWSzvU;gMej(?|3qcpW z2J@7mf#^B*w#ik05UJH|Yu)uc`}|^La5eew)-a>5=FyTluATwM8*z zA*Lx!0o5>r@~^?skF&$|k5_&?x&ZbXgm+fM-Yf~dsrIUMvc}}bsZ5XM5c|XYkh*IN zH=(eu@yGiq7w;Y9&d?zSJ=+R-@BZSHl_EKhK&98~`!dPH{4g zdiTMN?_Q&BS|$w&6@n@?`uw#|(5`8NIp1U~8A4NXl->x7XA@(@y8M9!MDFo5CFAP3 zheuZv^k{4>%nOFds<1P*-@+sd00bFooa zH)1KCHT0O9RL5n0*LsyWSP*SbWu4XE4-v-$n4!g_jbs;oNwgJ^pv1_IN-)Jgtslk+ zpJ9xx$>zo`mUj=(#u8tiW;Rrn?QJm{35xC34vA~A)`wAf6)o9Ws8^sX7r3Rfsksvu z6;d`aD6NGRa@Qg$H8mpc&MawK6DjrKQ}5q2P{hpcXfJf|h}(LaF8yFoe&HkzsaY)! zaG$TI*ii7UO%H~wJVI7mIX}Rj&8uimukjKngwg*iw-F^^8#ruRoelQc^T`Ugd{zo+ zy<9&2{kBi}Ih(Zb?2J6zw!f$=w5_W(6TfKJuT?Zb9(WJWo0h}5L8xN%q5ZpID=gTRdR<&>FT+)11_Pse+zJXanA6on05ZwRebN?qZ zu7HFRp^3hgqcNSJ44tg4gSEaD-G8~@|95NX|H7~RhoJkP#&Qlu#t!B-rW6uJKYX0I zlRG7yqOqyDqmzR>g@BQ*fidMz7+nb@u|{J&ScWRl7Rfc0{MUUqZ@4t`3v(u z$t3M`iNp>9!ZaxJL^hBM5s3KJG)nSRXe`d>$|@DZEu|XKD`5}5x{o(J`+r;1etvEp z-gl+$dS*LL@w~fF-E*6!@<)VfDT~3pCRe7^Uwj2e^Ace@ri~~y7#*RFE2^|+2}e`| zX7&o}P1+QfzGKafI)ww?rgZD>!bGnFfQgeJe5+sYk0;;~3RH=&Ecx*}>iJT%S;1@u zitmqTx*V=Zy5DcG@*r=&mLeUKCpG7ucM}Bjdh0yuGC`$|5t3te~*cMQEZ#_ zaYV(ZzDq;!O+!533%f03`~boc8lO$v5G*dW_$7*MzbV-#rHORdT^zokAqf%8Rd?!8 z8CSNVkv8T!!vZ47DzZRs2EKO%@FhF}jzzyE2fYR{<|mEO4~m2^0YM2OuzwD37%@y8 z5u4LUJA<23tej&HxMMY+p4HO(vw>LRn|tX&N#plTRKQj7>k-*L#w5NgfR*G!rz1P4 zrZVU6%{JmQbHTZOt9Fzog|n zF9Aqk%T>pQC>~R8z;jLm%waX!ZVytp4!}!g-{F(C@( zboA^mXHo$;;NEU&FPl`;uypQY5uSf4uAxi)}#ko>@w(xe3 zFX)gn$QUP$3EZ3(Z^coZqC>-F^Bc6jYMwU=6?gKsz zwUzJzyfu?0M383_XFADhmAG#{mHJ-UAvb*{jKlc8}nUey@*`Eq(sm+g}Ab3+=JK^aP{VvQCbk zoLU2YehJ?p3P2^SAHJ-*x^NYa&Y6ubn8oxEPNdW{3w|cq#^0JrtHPI0Bx!n9^~jI8 z7SN*brJA8Ek`Y*D-}|AvQBLJeyrTKRr`CzPRiT`RH6^9*sj_IgquC zf4nU5>}sZ2Lvq9=0B*4TS-krV|AMo&ACnr5lWkUw1F_~9l7bS|U5C#vLF{OPw)seM2_Wv?+Cmb-^e$we~2FOcs`U~5p~9XXZL$v zx(k{S-uRZyED5Pkoz>*Enk2ai@@g}!l;B*y=|e;i6oJC1 zIKn|>dhudyF8$`w1?ok8aKn&hF?o)FE}9c{t?o$RfVs~zNdEw{uh2QWQUw-q>A|q! z3&gyy@Gyu*!`V1y*7RU*s+pX&i)wnVP#Kt{c6UKUY0F!jEzYAsd44>XU2xuL%WxIr zSJ$;(!4di;+=)@jG;^$J2D%noRWax#%uX-!@DCR@k2x13P*(X$kPlYd3AR#kE4Y(z zE=k^h0ppMv+}T$rSfCh&s;`0a0q~_tr9v*WgrB==P$A4E>^-o;MMqlAgypd3d{)XE z%szS`+F@OXNc>Q802}LqY(@AGWQfkuQ*VeQcHr7AjgkvkBtRVPiaFH}hr&nq_Tzpu zN+Z1d*FERGW|Zd7;nbZUb+t@xI7K?|a&SvO7m4I7&<0mpeVqr((7hzUS{X1wH2SR+ zX`47aoArlq8MqL^`+>dC-1($mr0!BkS!t*W?OtqE0Nh{fp`9=!h{qmdu{?-bSy#B3 z@B$s);n!i6*osU_cTh?@8;SQ!+huXnbkl@=Kbbj6ZO z=1Wyp!M8jkH_o&oSmw-|{pIdrz8nuM{XT<=s1j2&EqA`KJ&;3r2&k zzi2Y6Vacf0T@C>|If&qBA)Tvw)>{IuENs^xH-KDKXLLd2(tK8II!~?jSnha1+B7R* z!CnYC<>Ujc!C67+)~*eR#$LN_)XY+c{8YYpW>|o@jB%07a0ouV@W;61c(&OIfpl<* za&+Y+qQ)sCPD5{S3oQ4S85y#lpcPrJ63MGte(fc53jBe$C9V*@s0{ObWpj>`63`6g_j@_{C4?|*2 z=1s2$H$OJxEjzxx+N9ybrXy;+>>^+j<|L8u&MaMfWkEolOz&(mZ9kSrXMrk}hS!NK zKy$C$w)=QfJEQKnmskdi2XH_(yyyl;010cQZb|in4Q!z8M5@wAq*=*f!rGDpazcvw>#g}mWoeXHb z2f4w$x%gf*W&o)M@!|g_xrlLCiLLJEZH-Yu&h(?^&<5iM;b4Y-c!mmivblnD+m+>C z;hxDx_I?N7_=EJ-1|3kI+Avx7XCAp}S@OK$F5Rr?`)OHtI|C$(dEU1jR1NBx59s9H z_8aW&&&*`#H}u>l*jvKu*M!px9VkNYx9ST9=wCZqFd2wTnBO441>3&~FJiANgua(g zpR4(NsDmaMVISebc<5#<*Q$tom>Y-haT_i*`tiRVXH$3rSQjoJD^j-tHZdZ#-#^+} zqGTAdCTr!%aZL4;JOc4(tkm`Sq~2%q96re|)e@uGoJnjbshmw~9z?SvyhL98$5u2+DMZ?eayKIJ~GFQdL!wufkIKdo;wpRL`e zn@kxg^1-c-Hhp1go8+G}8b2>N8#0G!?kDf^ql1S)9CG3dg$RJYpi^Vv`NgnYdwetR znbEjh6&XIxflfs7aZ_lv{IZ5^kl)vbuwHBfx2y5v?aQercro~z4>k3(rQVUe$qsi! z6?~~c-avu%Flq+yEo*~?SBE(os??6llp^UCk^!u&I~?Y=8VDDG+mPLeb?g#yfQ_h` zd;>oG1^BaIF9Khe=xO$RUDExC7|-!PrywJ*QVYw2TgmpySEnrT)4Q?96y-TW0Z+Vm zAEO4gBgntrNkxA;G&Z4cTn{^#hg_)>gal2>=|J>S1A=GAw|~FHgerIretXiXU&ujw z7rK&nZw!ZSihaRa?VB@$QK(KjmW>*Gi@57%EmoktUyWgM8fDswY;u{EpL498WyqjS zogcc-lO5`41l4%rHP3Z=!Zmb)-EX}B=gu(q*88F`b*S1{lsYtrJ% ztOsd(aBM|1zB0_}Z}N+(hBQe(MjJ}r?%p>47+QPIuswYl*KqP#_kJ^H)@emJ=k=6( zLY`qeA$Eq>d$eC~TQSbno%)EOFe=v2ICeC!#Z2kj7XGMA$xqg+0zfWu9b#?Cpd&522^VQv zWu>2@_&F?C(#~BXnf~};KB{AqFN`YF5j`(PK)S`%5;%eTDr7OdRn+%5IfKf?d8V08 zgUv6KQURljY)+nz1(Lb&Y!2bulhjk6SeV3hc zA;6r@mK$MR0z0Pgk>YC&V8+lq`QfXiGyOT1umjdX%)x0aU;|;(w$WAGL^TPuW(2JL zZUnZKq6xyDg&tpWZ~UA1-Fm+Td3-3g?KBCwKWxv~>S&O7@AyiF5g#3OepJ`n3x?8~ zgkI9?9{jxeckuim+5f`BLx@MjhRwD*-Bt?_TjKU;FZ6~2+}z!iy+0_cSI zaJ3LRuy1TY=N5(^>dbtIX~tKv>xY=GAld-Qdg|Dw*Btexz`rKGcz=V@|X6^r(6ubC3e$St9rNC`0o(e2@cO zCypwefn399h_grD#MSivABOHFU+R%XNtkZ?}6d1^7$!0VitH(=w| zrM@c9prPF9w-w{&j7=^I=-ud)_djvpfcc;v3U$*3440I!M&~$hTmEu^?1`jDERyLA zd=fNEr#arBD}32ZT-p^Kk%p;6(e($qSp+;6i(KyHY|BS)MEkFU6fvI0MrFO~%}11z zV~K;NQugTjXHdQN&FZP-Cj8o@@L^S#d6s@+-oSe(K=JS5c5DGVDG@AGfT5PR_xC> zaTGi`r5=Wexj^qDJMng#e>1ad%QYh8ioioA^Z=Hi+8J&Prm{*7+NTX4MCpE`ju99X zPc%$N5`^9O$_6)EEsH89BV2nQ728%w%@pe)Wb^5d(XehNljhHLc*nbI4JX}A=9ivztUO{xU^T7|GXjRT;yI+?`|pOoS30>Y zr)m0&wjIBFHsZOY9xsLe52R_$`%TLf^r*A@S0L zdum%)sJXr&bGL(?08A_BLww-!$2iiM&uTB_L6Bgm!Hvv0TU$SB(ynixO{7m#3Jg0J zrd_wKz=rQ{_!-Cp0GTty@5Lb6k7ht3(ay_4p9fAbk=}FrX0%Ipjx|Bf=Dp^bRkH2j zJ0ITg_i4+AZR7j)A`ki!9#48$yXV{U63#x!tsKf7?IeO^Lr%UfB1kkSomz_$kRz$k z#$UxFK=#qddl-#*S3hL4o;8);Yvnsz8^ZWhtjQFp{qr!`UtisC_M?=K;}f%|_>N}7 zHJ$5xJe~8XOD(CV!`7kM&n2GKoEVy!c7v>Ed0!Dn&2_IKVMiWoZXljgA|L;zII5TM zp@6l&G0@pq-Ah#=G(b5O>D1h|`swEHSaKTAgwE~+Zje0auoc#hV8Xaca@dHPPfaz3 zswrk)GjM#Gbed08y197UiftXb*sb1`|2qn;TZ^jvQJSINj?<{*d@PyX~q4pl=ocsg6Dn-r9&zT2bbHpRJ&6E_^ zUptu{^8wrg+T{8elxhlQhP@d3$gUl?n#N2g;OJc-v;y9L%z?ZAwNX0O;`@L<$ujmO zgG%knf<6K-_H_0bFDM23!t%aC+yaXPeY53YFFj%Rbv4!W2D;HLuX~!aTJ5clOh-Jo zNgE0luU=59FIgEQ-3f6=CB}h-3raL?aBfwLw)G#qXiHy-#(f+)H*ia z`KwQ&%3qDU4Ilpv`d*D;Hl8)k18b{^}8LR(UC2+vkx7MB5oo=>Td?^wiRDs6$ z_YBUy8RwjNBz;w|>E^gJFq_pF$y3`ukUH)?EGxzj@A!t;^X3R6CBs`Oa}cedE$v z-4!`;qsvGO5?5wS@g(Vkr5>|KcA zd_4s0059(NRNp-r3srv@=^8}IRvhmR?gr*YbLYAT=ZJSPm2J>AM7X=5BIF9?88YqJ z(pT7*M~e2CLUI`~2?9V_~3*bfD5AboB5Q(>^6WIZ~xZNg3vGgcJ4U;O>Uzkyy zc#Jcj0CW*xzY`C`N${0rmtCy`tJ#^)U0kMIozVR+wW1)OVCt)@Of9fT$`V5va1JJT_Xm-*thx-uT$Jph$U1~=NQL4; zl}zfNQK?eNd}WTOU-Lyfh96wcZ1K;=NfI|Hm(a4*v{Ix-T3I5OwEe0IZ^C2jdDVJ0(KHDbo zRG7OX-jL#q?Cn+JjQad0rH3C9oD#jaEcmcyiR1xa^h{Y0hX{o zCYcxdI$-ASHHkFgpcnbMZDV=imBEL|W^C~h%Q=Fk1Jlt7MJLMLn81gno+=D}Djc^I z+FQIs1&Cw{s}R0Z=w~N-j78AD?O=GwHXza@-5CT2{BO0;*Du4{#02QtmS-)byBzqi z_25#^r2b(1laIvEfSVV6kNpaG7|zf<4U z=RMj6k2oK)oZ;Rg_e>Q_-`vFxAcsz%S9Ez*LdX>G2Ovg2E7;6RSMa25Xs0`?yfC-u z8Q>wmmu(3uE87VQ&~wcFEXUOzYipi$2rC>!m%aH5ctg&U;hb{cld5sV*Y&MJb5HUk zt;e@0nYAY!rF?rWlKqyp(HC(ZeXoNQi1Zs8Dwlx(GDY(ZUU&3GG;as&C=ve39P9H} z!|TuQ6_;>N|G6S|ld9GMPMs_)Zv9n)MrO2g#oDcIgfFY%Y04aOr8M5)CX4QZ#;DB_Z`#qexo=8v2imj??6uwf_7uN_*YLp>#4lvl3DH{|1)+;YIOL{y_IwPN^2c?PTbv_s53I}3a^@_DD0&ckd@6`+ zc=JXR?*R67+Uq;j6#azWVMDy8OwQpzZN1qk^u~U=*axm>n#gK**EW%@_6{7&pneBD zIxA!Xs}o`1#{644;MwDE1Pi=FXo_n?IKz!&ExM-GeBUXqm*W;k-zkndL`S)vEb{OY zK_Kn~!?k4pvCop)9NmB`hH0rted`UQtaWIr=ej!pCHj?F0P(%o$O-sE!=-0!Q}pL$ z?8{|LOeK4a~0t~bcnJG>o$s^=VS z?i1`HL^q%d=u1Zeanx1lRKGC+-(?~CI~>yc^$yP4k}b40jVbxHqK zv>Dk-dbcKR`A8Z1jJ##4X)K^)(XV$-?dOS1BQG?<6ggzRtf-4;$;*THcq!p|h?f8x z`DYb<-v_^d&~w~Ox!x@13v&~y-J$Z0@Zw~cKN;x$1msXjKG0IB!qv`DrbT5N`Wy8n zIptcvT3P%V&FRkvTU~JkO>a5w^ls$o}6n?vQp zG*g#iaxTxeFb>Y)#`ZLu5+r%?AjsMudgQo(Da7>}`_g zb1lpIu$=L*t5T4|&?iF6z;|J3Psl!YQ=w9@Q0Pgp1?5G~*=J|quxJ)IO~4qAoBm-j z7>a5bF#486jI}w#!^4N<4F?Ab$ylAeP_@`%{i;F`k&}EjJKdt#)M;^aj3s1dw*HEd zPnd*)k5tiO?e;l|AR4hz&G58yyTNsBu4)*^gEYm}nq9c5)24O?ibu%eY}lrim8GLX zn}kBd!j?fqL}m%4dKEIAii*O~WpNTWv9WP(u2NuiQ+e5=2!a&x4q}9XPZ|_{>{SS% zCTrkt2wnv!H zl=zlw4lCHFsoTwpy2;u_^<-V;rlLxMSaA4?#&q^a{sF>iZ{#0Q!jP(}s>rGZD%LL= z6{S$U;!GD23EYh|jX^{a!0vj*q@Zgk^?Ii4%XD z#;Y$zJpHk{yxtz$F7wFp07p}SeHoEZIzQj6-11wT0143q!$lqH$&6_2+7Lt_0+iS64%YP@S1BOj|LY(ISL=?7n?| zP<|e;wi<7gdh7-55 zg+2qPDlMSt;!G@SLxKsSf6#oUie8h=M>ViAoxRbbJDZ}xM)5DGsn<<}z+(H|O_haj zCnFynlc?3h|@_*_2KJ_^u>hgi? zTO~*7p?I1iDf4jUOopy?23)s8bX&Lpd+Fc0Y1!I0(q&;S@4{~)Z(BstJPj~+~h@9so z?*4H^#*7LktVA})fFCcbsz%(!5v`smt69FSJfn?={FaczeP*SdG0ACbeVr4c$@HT^yr!?reE)6W?nz@X8x$u8{Il9P%1jVmZ_s;I_OT(n;jIPI7_sY(D%?>n>8il*|bOR9USS41rHhQME zmbMzwG3nVOkBLhk1OMmve<9ElfHf@i%5)Z#zkyv?yniA9$WTy!wXL3V>AwRHt-A6&ZTM&J`x~6=3MDpHTcXC^hTGs$aGMi%Bu-uJL8(WDBO1NU3OuE>pJ< zoa)meo@S1ik_tz(*aQO9eLZG+J~SxVXFl6A0*zskXV`w3*5IL+G56QY9dfKFN3p~y zmvM#`-ovFv;)D}c`+AWGzNfjZA6M_{539&UN z=HB9hxnck?MTseuq)cILkJAq84ljT5t?-EAj>iuDO{y1)f+Efpg}_f(!X>FX&)q$P z(@b-Z;zjZ6E6PPOJf5urq2Tn{x71mWC&qwwL`L)BDl+&3jAiJvCv*a=l)QqRSjv(Y zMs6%VN!}p}@%03wFc7WT%9zk!E19bDUfcR2q(yc?vsN(JVyH_yG8FhHM-bl$AgBkv z$K;c29|u=2fqU-|Q9IYO@jd$dyVtw#reCIQSp*o~QKlSr1a_EiSTCqEul8QsgU@(h z2(K^MB~TQQMWD~XA%1eekl!d-K3`(`2cyMy$)FkE$Z~wXIFlYYasgta5gwA0o|esfPAv*+=FEbun15Spm89)Dz+VufHOd34=W)IVEpC*l;{iO24@HU z3|JUo4~Xxc0~n;ejKhNm_=76FNPTcfibNCacPBltsU5<;5&MeH9Sb<}>+Vdm9)Owa z;clVKy$sp_nIUgkeyFzJg9sSvf$&9i!S1PpC4d_Go%UD*rV#HD;Ohf`jT~ZhdKmde za83**2y!7aP}MObP~jjzg9q|+wqNab?R8JOK=3J7oY*?{6ztCN?EZ=M%HZt$iuNzJ z0Z4JfpzA^;yP;0#K>eJhGZB8y5t(2Z_%dGST^&)qyoMOHGyDYIxSdWM9;XfubB6_Y zJUwSeHEri=oA4D?5sTUbXE5s8=;h=3 z&d4gRF^?ju3$@~ge{9WvM=o~uoVnDsX{f07oZYEwh`f=7VVvnnijSez^j(u3=C?a_ZxyApi(_xh;rizv zXmbnzSr9lpk+qndp-M*?m;(aBWci!!^$cuw*OsT5@t!=56n~$<^Jk3 z`MKQJeUxQp(DtwydUldcmQY<$F~iRgy5nse zFJ21qC`2JJX_zB^F%fNi<+gUmu#9K$ZncF(ZkdFh0m~-vu(V@wbVn(4v}Hkbd$6(; zDcBuAukfR7?3kq@S)Kuh>KNeT6Kb6zX`Q|JC4#x97ye@|Q*lATj!1Ku7d-9`*<`GI zbBnd33Wu2I?9&PtCubwhV0f!h(qeH;I}cp@nfS%)r%q?Gi=&wb(iV(SVlaaQVls1w z+u~@=c$lSgm&bdQ)i(M%OytGLs4~i;cd;mtwXw4#^=1cyxhKge{W24gLD}f|13BvE z2L%GNT|p%2xI=+v*?qAJ!!5AoE(|V~EQ0x7cuBPJWoaoy{wk(nG)bQWYJF##jNq3I zZ%Jnsl2WY|+?Cw)gt-j{BhTC>YSVr7*$paJ7Xq^~B;+bA4_mb)p7PEOYHjeKSFy8P zgDMj~PaN-7Co!KF1pdmZm#Ppo(;>1*yJG;N#YK{IwZaH7q9?=w(DM(WAxA-}a5q$k zqm%u48=3yj1wR%(m${Y4s}MTNdoGOlIY_x3RKggly!L<8@~=s)Z_Z5hDI6p z-J;j+JBE>qZ-#x2;HapL+TT^D)5w}?O#(xvfK7y#by@jj)DCjB>&q%XEB&!Brqk#s ztme*cGKgl?cZqVfKa0Jm&&~Iozi(o+nXOL>%CzT+9fO%4q8|vbvp5Poo@?wo-x{dS zkCN&{HqIoe9c<+9yr&}tKj|bp&zSXM;%weTV;_P5Ahc<%VchodkVfO z6PU|KKFoI&Xte*+alUGt8))8`YY zG12kbm(4>vLZ@Ie#fEG=bPTqJQFa3e7co6P zJGStHnnY#IN?}J)*}WL3_zIa^Q2L6%s**}kP)l{9^2Ym`GHo^SqHN)G>xzyA2X*h- zxjYle-=&T11&1V@@7ah)CPiE(t2hii}J$1M9-?^68(7lAz6g&Llq1GYn)3 zF3$o>>YEP@JMmPi=!ldp9uy*&O|WZ7HrFT&6*5O|{Z&;Uz!piKVN@|y#%jiP#YCL# zZ_s^hv=82+2r$|8oOo$}g4~Zj0hl{sY|32MacOx{_$!_v-J3S}H&L)qF&$xT=RmYN zah&DMnQ;z9-3T7=hVUAhUtk;4JGjq;Vv8aF3AZrgwax{tV8a=5Y&0J-+s7=-iTD$9 zzPZ5fd25}gJEJ*~?`^_uO(f0A;XkV0Dv;c6Gn>|~dfP{X?~X7qgpY*e+W@R>i)hZ) zeLgUD{=05}z@Jyc4IgG3a9A~RVd+|~)m#C!;_{4O$xBdO@w_mkXrfzb#aKlXbQF9fx<8!|!4Qbhhg}8NnEmfsFyfia zZX^DI>OSY1Q4NC?5GgnvJ>uFx3#7f%WXnQknv!Gg(b__^hxrzH7J4S$Z>K4E z76cDPJfz%{ITqeetrsU1S0%nm7!kB?V4VRfBCTVc501th?MY8Jxx!brnK(VehARjo zK@t@y-i4TINYTI;j|yLchtPd{%wiKnM~h< zTkyykMGh zu+idIwNSROUF%*@BRQrTE!3u+k6PZEvn*659U#3PzUmF+pqImlO=P~4p|BG^8iS;H zvkAwM>mPuw7bWM1>iG}*QKIADk@+p0Vu-kRtviSe3w~~Uq`T8Udr0R1ZZ%7-0Nm#J zcPAWc)AID{B4f48u79mOlI1&emT01EI@8++D6d6J`{7$trsfaOU3?*?0GF7v#qD`v zDmGTk>VS4GfxaynjQ%&CA742Y9Y_$*Gtj++=zcWYgqncj&VV=ECzc zUEx`TX?}Nf!Ms_KPWN5J8UV&5>fah|sb;U+|5T1rTTsob`#kO}7B1J=LeFNRE%Axk zIQj?PLW3&5uls_#zS~zU) zvP!~6#70DbC`y%yKq)3G#{8Bfc!sPnaX19~=Dqf_v8FUZ08ISz%|9G#X3w{{=-ry1zMj>ZJcmJgEHS znUnr9e_1);hnpn?N=pUSb}zivf3#EP zsXzPUGlvg6|15iE+659TerR~UOdN+uDoZ%O7TMc-M$)qfeEcEc2fzE2E-QV4hPw zdt~kt%;b;K&F`>Pbd20IThwHa8;t$9-o(a53Yb#HIdiiza&rY9()&94jiu?dl&+_3 zD0y4l{hPrcr)o}}@S|p6?30o){3d6hetR4`6My|Ytvusc(J@r2q<0BA+R^d6^ZM*P zHf~CB>3PbrW6ReUj830_LJ9Xy{tBQK3FE*EBAgRAx5h zNm92V&NfxH<;$8H!RDy??v{#M)jn|S*fIGx8;uWnDQ2Z&_Sk+>jCUH6N_msimamIj=X*Y0b2;MD_|U{r$s^JSXHH6-mOL$e zLgpgJqPSU!i<1|n&&a%zU#?#kca?9gzS*(K|9sk8{0;q$xVL>7Ema!mH%^gKoPxEQ(oF76uWMj|_+%lOEQxUbT+F__@-c$!$G zu`(e(F3xl~ya_lW`>CK~5nOf9TqdN=_>(nNjyv(#D+U)(ieY(`yP(;whXp z%caxm3Rbh6YNC8_G%~KLQ4gj2vzm<08h9w~m&S2Q0Rn&z=qo-9sIIQg+~rMbQi>WE zd%bD~91V+A4V+O}UMSey9}uD|C6MgrkX{`N68%DUCHM=%9US`PMXzqVtYPJ#g|FWK z+LgEOf9#rT9((M%Yev-YSDDJre`5OXX5+2q=H{n&Zr;a!*8I~?KV$RR!oM$A10H{u zh<^(nbF+BCVY}TeEw>$RySK=8xXr$3>6A!rr4sQb^jf4|&u`;*JJlyt<|19=ic4c2 z&R%fK-gS#{A|@10lX1M!?+0Tx8J|QFB)euwc8!Nty?l9sGCcVXqt<8T%xbb z1Er8E5NPP}+;D=fJ9|MmPF;T?D>V^6VhLfkNbGeIuTPJ>`5lU&^oN zDnG#UVEo*+OHR@nVbBx``7389lqoEmniB~D!4G(>jqhF<4{>a2F>A_3T$%nXf3`oz zum95cj2xJ#PEZ$M&)2@yRKsdkVAhJE^=3L8UY-Nh+_;!~lDu;ECRwvLp){ccT`Kf+ za&AE%Fw}X%<_LF?%F(n(bO-*aj?;a3YW{;;KHYxz)i>VD_9uSz+gHE5;L)cZn3l71 z=fJXAN3J{i{@g`(-dmse@|&ORtlDwtp>;ERf)gu^57ZQJVj=r7MoYw{r$xm0rezTm zQ>M@Z59=Iudwm{Xj@#WiIVVfa>71o?_J+Nlv~)&+kY7x~kfT6wiHKfMBxF1kI=&Pr zEiZ@4KZ(YieAfSLpwxe~uvkFwM-R=L;vMQ;<5hyvKIeAw%b^LXP`2Sa&GFoO7RR}M1qhbq0SccaIXtfn2{4^cXwA90~}8mi|FwBn0E z3||Cd)IgwidT42ghtkA63e`DUC33_ha>OKZ)D}qHQNXCcU%=7oQ~N~vf{oqMnpoe4 z^jFyd))!{Lkw{#NX4u%ZiQQo_SE00*ZQ*~au%<-^oH-$;5$q$uYbL9;uvdc?QZPHg zM%6+bvE_n^h%q(n@%r50ojr?vzO2qFT>BPx_NJ$$WhG0F%90#aTvQ^MO4xs;ASFUO z^hvQSS!jbkEl!)k1cy1qlVJB&HU{rnbp4YLTw5|KDG*oNv}WOg4M~l;pZxra7Z%N( zedEUFkKXu|!B(Z+y*7H|HTNfN&BaI3hjArUc>C^_jb?u#jQu0zxV)ZgEAli z{n`OolwO`CIPVa7jBm_tZ>;p{mIBdiO`_WlSBq}39h$9Mblc%-(Kfcj;j|(kH*d3430x#JWE zw4vAgf}$oVimG^td%UVcImi#faO7-T#7(M-DD;9`ZQ^tHX_`Bd9qi?{)tuY3sifoY z(ztRru|5&6Bhn$<%Tbrx+p*Ed#TaSkvV_u7X06mzNH(9(2el{vxUd)IYoHW*;?}y~R>&zku z1Yz~&YL7s#I;2ICX!A(Gb|iYN(GJ*-M2|J30XX)HiEawP{lw6#UeS##E8d-xoSYR9 zN;b}?sySKSct(yim>|-GmJTT}h58c$PfTPq+$7E3@mfHzhur z__XH@&)b=MG{5Pk@#)#JU-qRNoH0x_W4xy zs*r(DhLHqOp@ixFrT**vxA|57kCtI+Qii2r72!|gX|@bY+ZYNQV!g@7?n2DI4e@)v zPnHE+%d%F|tVXQzAircE)IieIK=_|n>+D{rfvqT3VK%yYXg%T%Ku;=Ct_jJuyhi-N zXWP&s%JL@0!`@JnO$nEr?8{Q6xtrzn1)w<_7W-6NVHOF1UlL5c87tl((-N`HRUp?W zImsbb@{@m&eD~rT8+UG)vZ2#sxAHg7>>GR2?MIk%(?KBU`xZ;@)Z7$ zCz>yt*8JsfpS!)`IGR5ioR$o|nN3~T$1$2S=wm@PohdA{Q%=Ooyk3}7nOcXOB(FP% zQNCXoT5_%B&q?(Q)=8CmGgYp&Qmuv2vDc3IpRrk}=A{2 zvBhu>q~<}HPYx@Mc*|3#r!GysK2=TiTM^J3Qmn>TrlyFjQd2~oQ=53+?!uO(lc_6X z`R$~sIHkfwhqW-*eqn$$b_|6>xlJ~A$sHnytm@1?jA?FfC&^P@Z)Q>l$x}(*OiilH zOzkXB6`S0|90eWas!4YU?HCZ|SGWTu`1=T5$&zAtP5E|rTG!!=DhE!!m=8QOukp;~ zuiW(K<`X}=`JZYxmpL`OdG!yzVMSB!|zh3T6#2@uC75}(XbwQ~J!PJ8@)#dTlDhe0F zGFDo(3eWI4Yh8b(vEa(-Tqy@x%C5)SE&JA}p2b#Za zdV44PggtjJDKrtYCLOaTmBQ46KYMoGGXXHx3=>;;K%$d|q}MZ6SxQ?X+yEmKa(OZJH9$uh@eIpvbi?nSiT=ny*S zWNB&3e#bsp5#6qcZdT-k-1qR=YSt=Wgu!t-(m@1@VnxbiDf^RUOV75?E(~R{BC7&6 z#H=6PJB4*l8J;q{-~-RcJv3Jjb}e1Yu2EMym&dK}T%?DZR^frI6g+iCq{Y1qy3@ zkr1SSkCD&sfZQ-RQaQQY>U<>VZyDECjrIt`rM;j94fY778mU=xuKf+om!hBrz#Q z8pMhQws6_v4-OysWYLnfw={qG=9|r5-hT0#Me|qRJa^u@e#19TykYy!8?S#<$?Uv& z;kLKl-8T29ox2`gcgTR5f8@4bu}Sl9S~Y#v+M7-rqc@Iyr0&KY+sWGR6EiD^y6~xI z_Z0TU1)<&Z6QJ9_lx!)KywnS6Vxy#!;LEfG$(RXpza$|op=)7WryO5=Fn(;j5+9#L z;~0~RK(9YRpUi}*(LpS}MQ%&80{eX)h(n zx%dO6wl1qpQAM!@MTYgu7?lzUUzjo_JXcwqvLs_(_^OO+b2enG&)JglSjM4@Pf|Vz zeHltTKV@sm&J?9z=h-^%lruJdy0ELVL?P_eai%tG6vYMyc8uZuU<~gEZQd7dR!VU( z@#2gxTjIsV#EWBnBMGgIt&LrUuH6G&YtMpwdlux|vmn1Vp=A~%L=t$y#==&!04mU$ z0T%zam|SO7;6dsL+bV1v-<=!ML-zi|a#m9<6`&dyZz@3ad5cjcHDT;7M2iA6&8Y#r zcdw2@^MMi=Kae1I77LhUZ}Vtm+0K+}W=_0z+ zue_q+v1_iqpH1{%b;+pf|FF!HR=J2d|L`vJZ)yHZ^XJVUHt+uVVWrnSdyn3`0qPI@ zy`PA!Q48dW+8C(;Ls%>54j0$URHcmRs+*U=>?SVu2=8}VXAaASE<5Qr&!D78$lRl; zPWup`+&l&-NmhXU$BrFSs*fEz{phh{C~*b5U+t&rvc&na#EzQIRELZ56_&4XN4~1+ z`B1v|@s~O0hc(J@v2>?-4s*ghbU^vyq@zsMpcD$#)F+zU?a_74nRpEYqo|K8gm~i_#_J|u7$KxC+2l)jwm`3u0jf49s?x0wF^kbpI zWre)(02@sm`N6$K7v%XI%+bVGMST8o11K-B&6n51zYIp<0rnVW@~w^KeY@l#zKgi(G zJXdcXc>nn7?F%0Ke8rTlr5$!}%;}unyK=?q$D4N^`=t5W*I#FMe!+Bhan+uZubOxK zE4&)v?kev_)6+MF3iDdX~{{eOq0(de-HmW=X}=; z|2k!(|9S0M{fPfFf1FdRW|e%Le|}ul|4+|9z5k4NsUFp<#w&4dm!_&7Z@g1?I6QDW zb&rD)p_qtI9!G>6o+P~DiXy_2MVJy&JxNIA%F#4uj;`oUd|AXrPS3{?&Nx57;-KT> zA^}f`<~WoI4-DwT=D*OTH1Q5?dr?Vcv7c{X2Ky4HX6X#CNmYc-R?<{uf2 zn>aF>Gk&V6N2XRasy@Z(IADB6WPD}XODn`e{f9r9yPSHH(lg>&>~s=?)OC6oH&5N= zK>?;@n3b@wlB*=_? zN$c1pCnehjJNTm*e*fsZ$9|EtN|!4!kkh40=gyRsor3`i=Hw)hGYx5*ThgY*SO#g( z{vMguU71#(d&DwCZ!$iJJVe`S7w zCrjk(af{qMf|)%cFHc5S)bTs(ZMVIg&I!rGvygRi_NBDLq{BKj`=(KHt?AIsb2PU+ zJF6+|KP|20T&$+-jMz3DBmJYzy=(Jx_Lu~~_?G#xh7|T-g1G&`hoVz@W)g6%KX&YidV zwkdVL+R%I_JO75hBSu!-xV8Chw&bFM!BhK9x@$x8PVGST{y7&tQqu8I-Mn2hdMXnV zQs#~xzO?hV+Z>+0iz+5uDNaS^8XszxX|GZ?E0XseX7PpDP}Xv}Df{N5$aLWfQL%Rx zEu)p$b#znqM%to1t~~7BuQYm}^S(kSvj3T#5Ff}+$j(-}=$#U}WQBsmyp>5)k}K2a zYm2h44y+GsQSOf4lC_;Z#J4BB9-l}_l;KbEXQ<+$KtrceX?TY^mHK^{K$(d-9wjqJ zb@>Z?Bd8z*3ppd0Y7cs{pt~zm3qno?xh%cjN~h!$XL`=8X;SZEFy#PZEa9*= zQ4-`Z;gvXtE-Yj#G9zxtHPz?$d(_M(rMPji>hdJQ(XiN~m}4b0t#zEhQl;X=m;~}l zpfw!@!Xy-WRTzb8<5TB1KmGp6=HK7*BpdwHA6eJ_hfAKi^Rd57Tk^r02jAno=cnKP zie2)%_u1rK$6xHW?T!bUKfV26^T+jvgblbAI&3QDy$|DJ+JJ#jkPUX4vopb;<0EHk zt69|g`C>NJ*jfOXHr?-npQKZXOF>GM$S_*9Zub;IaQ~sr>AA4aXror8Q_KqlaiE@n4;*J zN@^|(#N(0X%*tgc?u1;DccHrABX2^H|NEz!HOo>{Qd0uSNgQ)5KeyOAYV3%awUvGS z_|)sFSJsZX>h@!+n|HC&+aK;Zbo5UbkJ;J$8|^@H_Na@SUq1S1bMs>}i+7&abLhv9 zeDJR>IpP+~17IBS|MJDrNjYB0x|ZW~Ivk{^V#wUCoH%ki1dk{A1HBxRlo26!$jjXs zUe(20bi944(<01V|A8=bxqd*ZdHP>y%>ru(M%#j|X7s5O-;rd(aMzqtYH1oHm)(`> zcchltoyoZt9#Hd6Z&eCUzpmV*9oX4i{zS8Pr|26j+ttFk^~65e6K%R6(6$G*D}Oru zK98OmCtBZc=b5>v=@Q7-{gAKu>`~eFjLf9WWIm%KyU3Zy0!m&Uu@kaqq)})ckG&;1MH+?i zq7=TOt|RN1ZFhFI-PzeKLN&V}Pl@E^<;Kfx+&zmKix)du#rqcP zu0Ud9e5w@b@k*<6;sklCMacEu`3bEgdrGRKJBMi39lBgJL0}{(qxh2BnqS%Whvxel zce8PC-^bV;1yAN)ym#s9r!LR!yO#0WulsBOFMooaIliKHKfCA;Z?M|Nc}+j*v8-|2saGBa5Q2qa+{jOL;OBC?5$Y*Vp_3ZfD~TyP0>!Ckb^t<{Q4U0Pd~gh0{O z)LL7&N?VsFt(E?Z)(y+El)nO*ymQXIcXFfl{ri&4z2D5-+_`hkcfRHKEm!gQK=JrM zarj_oQAxYmNd2~qFX}&7e4@Mfe7YdwilVdz)7orpiMC2(k6RGSm%1uxNEO}SuoEWe zQ<@N1D78=p0kNsg$aq$5Z6(71h|O)0Lv%rQ4%ylyC`M8}>+$xn=h2bppC914-2;!K zg-52Ko`D(o+dPK_(*``|44h5lr^x&Mj7K2B9S8;!lQh?j`?50Nz@zb@oa!h{1{0M- zk2>=~4|VCjB9V27Bxm(ZIG!eH^|ZA+`;nuaePffeug^OBs%mE+OE^hg&6?Ss<~DI# zIK1Amy>bWG47LKc1=wIVcn=%|Tp*2K+yofT36_(&iMez3sW)ezd2@EyHXSF9&e%naVaOu|G`@5DT+CT zV6o)uD_-bYanu4O96Oi1V$(33Qc4G5I%o%H2bTodAj|=p<>Tnsk3D|=v#U&|2l~9> zI$)N%4p+Pb?0`Br<$-)B0dtZ&@F+?KOLZy!j&!W@!xK}+jl}~;!)&?Zwg{`1PFvCV z{DNP8=a;X+&9Nu1JZa6<%;(4AyIx-L7ot;%XV{F#l>?8_amD^7mKGck)5M2HPwWs- zg_9X?Ni!8a%KXQ6#o@2nbNn~ib03r(GlHm0z<4Hu^EJH{8NTOv^asor|D;yIeE{$V z{st!FtU$3@aTXE6#IWoHJe`hU5p~U?DhzWkCODEa*hnZfK;GsIm5~5MqNM0Rl#s0O zbly#O(vS4fNjCvWG;zQA7v48N);lZ*n8e09`}@s3d-_RQQa>j{OZC4vb4SH(d!EeF~Sy5X?r0d;IU;=!bO zG30ENpeK0-6+r-)sAy}h$-{foMNbPzq%D7_ClD~>i-T_gH24;Uj;3!_@q3L!@DkDQUu@H5@}`?{^hRH8K_5{| zvyS@47xdQgl-w~Azv^ZdVkNE80^EcnJIZrW8cG)gfC8LS39zQ}o3#+3Jww)q1DKLa8qZdI&#) z)7LVmF=>~fKp)=gKv!$>M40w`c+V*Q4cgGjYOVn#vhf!{D__iv7s zG1qKhufZJCeY6`OuoQbY?{aSd9VFoyR1Zy07%*gpLdj?{$+9LJQld(deJa|gzo;|O zXe^1+Rkk%NI4f!==5zCnaNwC_aif2%`ky#MG6no?_nR4ggyP< zR}AOU*pK{$ube@^yhx^3@QfURBr1?e6^I5W^D20uVS!9I70N=Qy9!nrp2{>l7BVW{ zkdY&tQ>k=t-J)O-@IJX4Pc0qtEr6p4vb&xB!o6%8aJ zL$C_!k&HJ%TPv{IQLerYEQL41aj(EBKkhB}J@i_HJAl`^24Zj&oxSR1)&(In-JBj; zWG)J^idu~YIf%v_A3ZQ^LcTG{xThG%iO=Baagb%bC{pxRG+m{5$PSQk5)Vn-(nY%COO<|cA1Vj_)<(3p!wIKbC3!32lM6ToGvs|^N;nQB2w z3}c#vk7*LVAVMM+jFH(5dW$ybncYFMddd6-y+s?Wuu2iSkBw?QHma>G z+}a#g5K3jeDluyD)Ag#vn}*iw&~lyOfs`s?46pWU(*PJW5Vfr|z{c=Ey@q3E-M=jVaPN-td$+Ze9)N}IQ2uWD?J_>N{JVzZ;)EX`#@hcU zSR%wg9lD0{V{JguVPITpVa>VXg*B{1i;P6N73elY95^yjw3LSssz)du5!f~OUp;|D zJKi7cscUGr$n&a(cGKM(?jFDYzk8~3&inXy)7_Kz?P-|E>ZhhoP0v*pr!GvbmM+sT zH?Eg&H15@&GIkjs>VG#(EX&iD5wa}9GE^y$M74>C%m+yI4;Pc9NHh_zj{ah>--ng= zJ7`EW3To@9oQq*j)Wzyyd^L;uLJ*X~e6P&aBFGXP8V~ z41FzItRn7W|Eaj+|E+COf83Mbgl)PSD84`D;_Xh+GL?Gy`~ZGZXrZ+}PN@%9sl4?4 z02dFiWzjYYhB?s+Oe7`*?4mZTjxCWyykKElC4e8gohq1hA^fPpkBafJAh}(N6Zp+m zR>tE18rbT9b#!64^3}m`z7h_LMxw!bW)#8_ww_8`nqF4>FuM7LSFd>ak24zQoi=#r z`FR(eIkI;8U*W^o-!t>xN6VwR-Lrms`2%lNWivA`DR;p!*WEfn5e6<{+Qwf#^?Xv* zw|MaH>?hnG!Dwa@%@eRdgD;aQ=c6mRz<9n)cLw7gk-)^H8hV`Oi?6CaTJg~-AD#4Q z?3>42hCm(x9l~xbE@hUoYnZhxn{61&6jCQK(}dHiCfA&tnbI(qSs*N~IhECZ5~;h3nX(1 zDc1yZ05l~6Z0ndDScXN9HuCc1O-Yo@MzoRD4Oy7wB3var#Z`}#s;eUmHJu1lTXHaE zvMbTLp_T*AZ_*x_&FGrK)uyVdlcK=04B}xnQ-@#Ux$5M|giY4a9oY6b5CJ18=uRC9 z6Q<#8xCE|(n;;K&!L7DBvN|0Mo;Z(uFh`cOMxK#N!QbFiX;^~kaG0u+U@GN66Ko=8 zr>>)UP2~H~CES!~tyRCKvAn!dJVr1VAf6BTuYe~30+o!5z!^kP#K*Wmd}+ph3P8CL zPEV83FefQaGzUs~l5LbfL`DiPa$??-DD?sYO?3^eap-?SSA23OOu~`L$VexVYorpX zrq)n|@uEO@xjN}`)u^r24WwlnXrd^ss&eC^;ZQWfM(KJc>Mgf;r*_tFue$h0b7wC; zuDo*2^7F3#{C_?AUjZyuN1bM+8?Ijjh_x9SsRzq@B3JMT z-a~eU{}I{cJ!Dt-ACO%vzd2NmnGIl`<5+1ITGNwu(ph%$X^2`#CNP9Mpo^t{Xe(6C zi>{FW+{4@c%aiuUJn3F`kQ{PGvG0CA^oFM%JDmGVADFb;K&K0lSALScK;&sN1ng8$ z`P$m)78=nm2*Gj{dviI-X+QbNk$;l0dl>t3BoYyV$2pxfa>jgizW9>JMs~R|iFWol zaSD5?xXyT-`_K?nfGkop%S)kQ3Nz$e5TPMBHk3o2M~^BVJu= zXh~#Mq&vby{;ikLSJY^b%EKe%v|CB$XiwQ&J90&P%B+i^IoeaMXivEmCZ7F}_H?4t zGt80;>{gsN>L%ogpTJvqZ2MO75LZ~U%&WYzOi ze{$7ZecbM2+uki7d-QgweZyq6J9l={gfINxvLvNNE+mQ^z>5!YA%r*y zf7C~58Hmy{5iUa_4U{w%W{a>}+$7@X5ZW5D8w+P4cn5k2Aw*uW(%ftgjpmkco49`N zAjfgL(2YIHk|!M~v5QpIlSj;S`dB352Vzby3pWpqq@g)bVQ2^r+zt%Pg#Tx|6o6zW zh6ujx<>^n~+K7)HH;15xV6cC}f&~;fAVoc2uQa3ryN?5+=m9yzr>KQ(4j9-5(WHUj z{sCS!s-|uvy!FL_=egZS-|k*@*=1}Kjn!ZmKv+ktfArr@ovPvS7M?r20$mo-eOzV? z4pfd{h8^MYn=zF6$nupqgpctYhW4}};}Q7tJgZ8_r|@{v@bRbNQ^4xr8~9^1H!ahp z?Y3eQ$XQK+T&w`bVO=#YHVsU*rUj`GGTI=6&LQ2C`zY*opH@x^*p;HWMb| z`EWbeuAa=DtWFP~!JVNl3ZKKBqh1hR%dJ({hYc=F(D?v1Vhu#cywd^CqSPoM+*i%8 z9EW%TbDxaGkEH2_p@xEiKsXYO#js!9(ZhjQn(WnpMfUc>uqdSghfo?~ISfIJ6UFLq zEEEpM0;(ichXa@lSgK*9O)F%YRzOn4SeP>`6ANQ}NgNY14MUPJ8{lh-1p<}@#6&cj zFegcH4oKq>n*+l5VFM1%=}VLBs(5@Cyk(o?Jd_gg83T#fz(68C5Sux9*~uSNJO&R0 zC(eS~>c~s0oZ*MWhwm_3Zq&^eUcj4<7d*A|R7O4rd8u@q5jF{G6@? z7j)N$-sn+n&L&+#APv{7E&*SMq>4_oH8p@`0iH65!lIj{NuYCQtpuI55)9y7unpEj zlC25h56bI*^Ij$~L59(f|1hgQHS&XBl`ndx{7Qom4V7QQvb^)&yFbY=e;G)WKmF$| zz06OKOkqp6rk71U`Y2vmx0IKo7|lsOkLuMt%j6+4IX(}B0E3Xg|CHsj5b#d;oMiG4 zGvR6R!SkIW2$Du|sDow(u?Rws+nsFBj(A z{pCA%<5M=2m&0CqB}?d)L|HB`@Fs)un2~u7%iy1~OjaPFVq2zH^R)DR()Q}mH(vro z^b(-XJEesD&?Ugyv29lU*jm_IUh~d7@V4^uyZHuu4TFCzFUMxbCx8J>ZtSv?^fCf* z_M}O^k^=e-N%aDm83tP{HSAO6<=^=Zb{0+@{E$ttCxAvUo~fhf7$Ip=b6iU_H)+ky z1#Mh-d~#y*wC0jlYF?o&Z(cI`X6=Ti??t|!cuEU5dSTxN+7F0OkH>%1*cX4M@rC&7 zjeiKg+bEtKfz`xZw}_Dt2n^*pYhw8k&FuxYFk%{e%7~)4Ab+m7Jikue zsJ^6rsePHZ#<%0CFzwVb?za3i~bLt(Vy`I=FXx{ z`x5D1&{`)K5h8t2bXvQl^Q5*(&$$X$k5O^Cqp0gCCb|p#s3+za3j|LXAsAM#C(xhSvELO@vh(|V_{*G;LaEioFK-5Kxgu|go zv_8l1f{vV`CVUXnan8?HYYHCt;?O-)^@Ep=jQRn4Xv zeqyjA(vdhVa$2G!mbCdsDe|qv3UQ@&zHw3HqC|hqJL=x(-uQn7KaGAG|6A3*n!%cQ znrksyLZi7(!{$yiW^?Cqd#nD%9x+ujtg}1<$rKjvayX?cB;9=o@`?G3i%ROdT~~}{ z_9)O)Y-Nekt*}mJtwPtV5_9tm4twb5K`*()X&R=GN_7f5Qy_q_lClw9?$Yc@fhj0_z47b9Akgb88a28}BaUjW}g``Zk ziYzZkxf@ci3kC>xL(1KdWDSsIMGuXTONKF;kVq5vVZ3_k_+btbVcgYD)*pRsKW6@c z;S0in&pT;iyi?WGwHh;YFO*F^?3CjvET5!GgclH?2_ps1QNjwa>eA-P1q3WZl!;?ty>ZG3$<(*OdQJe(OPa&vWx` zdF_=wFTRF#$?U-onFCmFB+%K8g&Q3_=-IEbSLh>ogy9jUN02G2uu?p0~f=I?%pkpo2+E2kGV=d5C|JoZbQZUPWq0~wqw6arDVNL3!;7QTB z!MV{T!6nh}qwh1{(;hP)OQ@n2msge9{mjpDs z;*d`_d{#LOWR!djHd3((Y3q3hwzOS-hPFFuaGWEB)A%LIXEtTBQz&aCC~Hkig+1XN z_Ec$KYHxC6}Q9dqdQ-RRZxB! zq77RfPF}F`SATr#d1CQQ!JPY^QwfBER8n3kBUa05?b^v2H#RgjbtXDPK0P!ybsjp0 zTP7_HElKs)yurO0d^i4n@cqy~qMyXyrxGzzQWV5e!FCcD4ly)Yz^aJFMap%T4Gn%Ac_8g=^ltWW^iTF1e?rXCVFb zCF_3pUi7QF-lx55X+{Mx|MGO<`j}A2^?9&NVm7<+l0`G7~LWdLVn83vNnAD`ejKrkW zoWSDv>8Y~=7beb5UB+J)K8y~>Ob~&F7LCr15WtU#q>N4GW)qnvn@q_9*o}Tf)~ct) z`fWPZCYCvO2eBL@g)j&I-z_kEicwp`CMm@NHLtyt=4EthZJW)t zll@L&cGkd}$TOZn+*gdWRrJA7$&BdfX)`0(ndWwnUpzK*#gv^dlElFZ3#BLvIYKQ( znTIAy6BZh-YD;+<%G-}$!|Zgp%MVDB#9X%;zGI-P!>s^!OVEfBxjJcA0ji?9u{PjF zyF@?O19;M%EJAopTWJDww26X@DYHRWyva!_-ekcme>&@1rIx(a)>7*7i8v=KB_z~R zs1w%G)-gQut=%I&``Jh3f56b6--J3m_MyD}`lYuH>_v0b3B{YPd;Sq$3jPzjkQ5Tb6alY(6d z7BJ{8NK?jo#!P6Zsbl$6P5UMQ<2DgNaa+S82!tqv-$)_+IwF+72p7En+zr)++)(Yu z)UKk5r?g||uE8U;fe?5!7JnA*2DRWYltCQXmN|-blhc%r|e?0P|RctWNF#awJHC03&->GQ4ciXsZm}G=x?s zU$A~`+t~K;Bw~XV712{+(uQpNLk|TL*RDHladJZI=_kMbI`h3-yDn&-a%SK`dCHP+ z-+Js^A}3BP&tX2sa)R{ZaQyitio%6PDA~|y%H$9)RmH1DD7nyx`hqepbgD8XR21eb z=PO6#e}(l?^&=Wis6V0Mw1!P1Hjfa-)sAcG95F?iQaicnjM_7rmJ3U3mo_aK(LG{s z!-ut>)&HZxibnYGF0`$;F%=Z3rDLYSXlmzlQ-;Q_F1pG#xm3!KC)cG^ITCKmwvoP> z{$81%`^v$+1}~YSoQ=iyM4=hAqf4UQQFa8LMKo^&)k0CKg`yQL6s1~-bZw%qe(Y!= zaun&}s9B{g`|&unnIYY@E^9qT2)`#Z{z@u@^!wYMz2fm@ zf7<+ukMDo{swzDnQY5slxbFcpD z#a|J5vJn90LmJ(B$*Hr6;PoAjwv#@SHudbY>{wc+&!|4GQa#(oZYZi*$!;6hJ}AL{2}YL!X*S9_aU4T{sQ5zE9i17TIy>gK zvAgnKDNk4a&~UEuil-f?kif`Pj_JHEWOZImLQTXH3=rUU1IUv$#K}HI1~S88$u+un zB_}}7N%V?MobH`gy+zrD4_h01ukK&>)9JmJTrm5#4(twoepl(S2L{eU4{uyQ_x7s> zp21S;Rs2muq7 zlMeX2t09{6(X21h!n(7|cm(ee0w#P{s#U_&Lp0~3*$T`zz9@|&^E^x1ByEXsgIU)m=PN^*^a9X^3YjKnj~4EDQcXf85WL%?%9EAv8@1MEZWW_Byv z&+cRSe)b@X0Gnp_;AbrB;0$OUTVXYpvKlLsOJJ$eWId(HdJ%Azpb|1+J9eh{Rfb#L zL3?{*w#rxT!ayX|YJWz<@So&PR_1upAcwZK@9gwCP;}NPyXs&sgEwWseJC1GR zZs546$Z-P8B9;pRs40jEsjS5*f^Sah>6|FMkg|+T*anJ5u^!N}vb;%wHA<&4OJPV| zj6I&rfmvuT(M(ib#*-*i(Pzl^9wW1!Qu|Dd*%yLYsmzh`UVpE z4t_0%$6rmx4*9bcbH37~*KONtr;5De0`f(Ep~M*4Ke@v^BYB-MoIFU`BP5R?l@m72 zqnyWFDx(0O4%W7dBuz5V&@K@K5$^*WeW8}VU|)w{;aQer`SH?J%ntlWdA@upbBVl{ z`5P}h&ck{>CuGF}KSAo$W@!u91^j$rfpisnId{MGBL4^WEq*`$k?`OAmtr^|%N)b7 zi01`K67dsB6te;!5(J)M*(@iAI8K)FGG|Flo#jX%Q&E7-?t+FbaV!ms)QRL-I8E^x z(@Cb^gdM4&N>Y!F71eE7qhvv4`Bc~*Rk{tJEQHwB?gX>2q$Z_#W2ic!{0W?LMJg!> zOp4VH#eo2Yt3X`U{#rZrTt8=0#&k_+k|5P}m?TIY${(nNHL=?rEs!`pX$6e;G1~21 zz?>>}Fm&q%g|+DttdXu`kQCEM`9`U0fzvkFmZcF@1xc)`>flK~i>d-oa;DRCx2@J~ z4ovHJx>l3H3(gVJh)5i(M>4%>o z-9C#nuk6g#{GdO>YC2{Vr~+^DT69!c2*7pQ^QT?#`HR~u@^&v@DD_(3=$MOmMATF` zGJM@*s=Ins9^@I~8EtC5@<%MHXhq9mae)%DN)`KNjZk)7VM6Dn>A@z|lbcSlp%_5; zRyb975!9TWe`xE{=hx1qyRLpffPq0$$xw%aO9KbZTm-sT27})9u2oYBM*r}7Bz4k*;Q4i63V-QW(~vqZrv$q|b%4ND4lbYxI<3lx$cY08tmJ4K zLVs-JI8)eMZvKP;IlY}ar1by-o17zeeI9?w&yJXwk`-M~24^2^U@EoeOwCz~tasek zKB=B@g6W@B*@3LRKP*Fyw@cK$lHGKkt?%GEs4vBRPpeL=p$|_e&0I7S3(sqyEwie$ z=!suVq?$wjv9#=88Ty^xL)N)e$}}%gyPqS_c;7!SGZ{kwD=(_Kld6nx&{nSN{avmZ zBJRg&+>czDDeA2FTsp5GCP-Oo%_8+!jRAAI)=TTRz8VywHfKx06P~M$OYdOWCf@k_ zPh$e#sbEoxr)G;cZCi<_62GBb^}vP*y;_eU`^6I2ecwb=&p8V`tj??;ey8*;^g6q( zQhfj(5h_IS(~<#L^3+ed@*Q7*nUSulFYE;n3(b*gQm*S8{yFI@9IBgox?jv`;Ai1- z{fx%eA*W>;sG%z*?2X>E2Yhv9@2wW~f{jy8iSvZjiX_B4@!GA9?RVA~rxx`b&jv*< zRh92nakcI$madTLb;i_b&7K>&@XU5kdAKNwhdn|U_rS+`*`W5Wdhm zOF7LUN?0{2e-O^E4}X9g@Z@$39FE`sA^F_^fuZ`Ov_pWSvbCW#TVH-}40#x8<;BaZ z5IU=-VjM?fXE=14k;S^W(A;FgG*b0IGux*`{7x%xwVpv^>7(=MbK;3ybec20qZ8Ie z%7WcbA~=E|!I#dF??N8pQ`o5uaeIOz$s)2ftNv7#RoxSkn5yXUtsWWlto4PMyGj)X z0v4=vZ5yw7o63*1^|c3)P1WT>`}HV>&fm>HSvHSCqt}MWf9>y9@*W%f7Ad>j6=GY5 zeR7lkA*CBbv^1pKk{K98YCjvr^>K^3Phu>Qi{C#beC1hu9v=>4QDq!S*2U3SpEQfR z>*MdK6&vfX{MDy~Iyd$gIou~Brb^JKev+^>*^dD$u!X`CCI$j1sJrv;It>&b#)BpV3Q8 zzc&n9@89!Xk|)MBK4j3 z=N-+rNRd<-Db$vZ^%0wD4c-aVzW2{t4wlFUVX|Me+XDZLkJ;ZJGklVj3DNmBrf*w* zYO_E8R(?o`p|I{_A}*2IOrfJ5Q>V71z*6IzCsI3iBXa}Mi>Esxo&DF!w(b>P%jWaE zOO>t2>&SW4*E|bt<+sy*(|{}N(xADLik9me!}ep2dpVN9!P(D4nom`*;JIoRWnZJX zqInC_tj#^Fh$nN?Ca#O8?5!q4HA}|Q##Vbad)A9a)#EUGq_$T#SJz)2J#%h!H$L?@ z^SzGFb~QbqyVq$IscrW#^k5?^GC%nO5K7FjP%>8LCP+PC%+g3u>>W#y3Cp!SjEygU zA`FPgUIhe&X%jMNMwp-XkHp)!hb}PJSVFZd=M~W(I6LQhlcqdrdZ7|Vo%O>a;81@Ue$F@IKO|1hI`2t;WkiuM z^+DK3DAL@fuXy)$9R@si2$tBP9$t$e5g(JiR2u|h0cMxUiJa=ZA!nv&Mbw6(NT)yy zJXaEU4c)J7n6xV}p0tKE_W7S0(4IRmi&<1xX4;r5n;@%^)mFL&)snLDwLfVszrD#8 zFCghxTcdju=DbDu>Q__6QYh z?2i0pmtnse3h`#t__IO2F92G_#ZnhcDkXOduy`1L{DjZO?Ui)RD3CGS8dzxi%cE*RE9cWiC`W#(sk7SDb`+ zMEAQ%=AhIzKwke^qTwJ{m1?3#Eyl#`4Ju`*33Xx_V#q0e`@TVgfI|M*1krl;@=>b^-fWK}l?0*(6-teZS|TxMSqf!r3x{k-)U3 zN$i!vUQNal6-@@FN+sxfGzpQzCor5{$`vUdZn+}a4oNy&4AZ@`b-148CHsbTC|BsX zpibZTy2zU4v7tj)XOAUiN{gT@*o@{gm&Wrkbv%wgmtKNu--Z8Frg(AjE7oWa&h5q< zo&;VdN12^)F6Ca}rQx1_{z{TMpHzEZ|7&<^Uu#0{*)h>;$6enhud!h+qel7X;O~Jm zvMd~X+cPrk8SI7hT$=>!V_Z&B5x-xzo}ldwFQZqbpZC{ka&0f2EN5R5@~RnZr>-2p z!nkGcJGN5{IKBYjQmY6+!O9ca%YnG&3+GVZVN0$bQ`~ z9j{Vf85ZQliGIcV5knHnJ4tn0t5u=w-{hhAE^Yn2wRMac07fSksVlV$C{QL_RB_GW zZ#V7^f<}6sydMqWaw}?iLUw^7s*|@4*33yK$%s^24V7#N`+9k(()6Lxb4mLEJQZU_ z_`R<#n&jcPfY7b{XMzz?J*3N8{+YG`56{ga!9fe$3} zXV{{i{{5Trs?Uw-}`;LoR<+9Ih#>x7wxif@GCP*bV7NpSvL$cAY3 z9GhQq+E0|>#DY9)Exb8!UUB_7!qUX!t)u_9_HwlC4K_$0w599|43}qS zH#p8C3t4{Hzsk$%cur^yx17NwxY>6ogx^m&tbgYvs7!ImC(#zSfHIeU=KucP%Y9a@ z`T;8h^|b8h)WD?n{#8ooxIkMgxW{?=Y~!e24s6%d@v_=gfPD;AHu8n^ys7{p)%Qz`JvYjUOq{L=!iYjPLe3k4ULdl;odFp!n;A(I;5>+GEfh4QXjcauC;g(Bz_wMZ7=0>ZFW ziAARjQ&Nr_3qJY>D6Iwhd{(=}PSc_=8`J#Z6i-NGp}iC9hCga(yeUh}sM-hRDQ)ge zMtoGbK2r$wyGs1aQgjFU=|l~$>l2Hd^yg-=!CrZ<*(A~czt`{1zSWZ2BXzL-1xhG! z%gS`oKE9Rt9c~s-S-jopxw#MWUzMHwz4!BtT_G*&Bxqg?)$XvS^?WiiXHJaR?$z%X zTyp%4Px_z*--^I*@JF9Hv^lW|5ik=Z$tU^AujFllk2to}+-VjjN++Tz(IlA~V8 zx4p{@op6XFR=$`4yR*HDXDq=(}fH&(X4e>cSUnEx~&)X z7crAG#EyGrXm@Q#)HFoT$cQlKb^`t5+%z^zLe@0Cu$QQ zdrRL3zn4XSC9Yc#5fKNnRvJ%bGl-!@7cH0i{x!p5zHWk<%921~zp~L5+ab9+kE_}^ z1(spLBDRjA}@YIpKH z_x)^e6@E9Hs&hY{mB4D^h%%kwdPKA{5*g3v{-hxznGt270A?~=Z2$gf+IL01b7aBd z$9&IRIF)^Z1%L732TrDBl@+7$<~JyoCWb{3!mAR+jJ$_jL64;^qh1F`QGV`hZZR(D zZxpJa|6%Se)c^?+1Mfc&eno_Qt7y_D6%Z#B5I=vXSWO;DmL~vzLvd}Ap704zYtFHJ z`;d2hQQ~1$Ub1k+AfWGwY}ha8=*M@fz=~@u4^RC>t!7-PT*)xWU27BW{XxCnbI|N* zqc!{M!Wjzx7QaSKbxYy&uVOvWQrhN@#++bg@Os{AVliB0WB$jq2v3NuUwu z{QDgBGO4LOeAB#)o3N((S7yRp)M1LnMK-+Zno7%)OS*BE=I)v=k7YlSFY9z1hvjaX zbfAjSz0d8*Rm(FM)v~}p@em|rRKSZKSN@WJT*oGnUY>5I@LLIsi9-oTpE8{$lb|8J zU0jFpJ_2rYigw>ikwE;ex|I(Y`d%VyhN-`oYO> z^k?d%3sxH_`omX+?y>9?>es}t(A;&az~Ci;0AZkkby;nBt!3wfEe2#aLhc8(zg9$(1FxdZK3J)uW=7WqeO+0Wgp3S^T{*uK=;&H8=NSTku z_`2UwJY)@(4CbgcE|Hoao@l%dVh?=C!0T!H@rsfjRcEwP1DKOU(82R$>$j4mUI!)F z;QENMdO+@geSM#itxs3tc#WA`l~-iMI?y7M`A_w7?-Vz_r2!jEO97iD`>7~8X8Q-1 zj_%HGq*?(rU`?e6uUqNqJ&kxJ-pz)IjyA(*ryGiiu9r=-V&s8z(OY^}8(Ov^zw#!z zJY4K4T<9-W&e{tIB6!B09@ItEvUy!koi|FHRjw{)+H_gS7*=EmdRwKn>u8ZK)GNve z+Mx%*Hv?<;X2*kpEVq6-C7G#aX{4kK+DitC628 z2GIL3vQ6}9#Pg9T<9Yx0)U6#7WyeYx0ybv+3-ed5B9g)?d#@wL!u0d~{Kf}iyFSHn zHlEw&IFZ6_cJhrEDFvxZecP)yH)TnqQYaU#$HW2`n+8sZDANkulBtgKp@+`YZb^4Y z=4jCSD&0}?vE|CC=RPR3)}r6dV|!=}y5&26VmFNbC@Aq;lA&%Ke=eHCq9k#7zUyY3 z?SSJM?bd!ToRhVKy!o#EYM_$lJ1TB`*XJ%$%nuAC%X?unZ~5YYluRlcI~QFy>o@Tk z7D?B72+*CTBkM{2spp>Z#tpbbZ!+xVv&1*!mD~!~O0xplugEE}`Z-oD;j&%fS1o$q zd{|(d{`9gjNZKe+Wty20iF!a#cFIgahf7IUVg3+Ff6O0(&hWP!HKH${QnJfN^%~+n)T-kb*WW`wv|Iv@!{<4yt z^#yq4?-}j>RmzB_%L^{#^o{2g`DdA)5c8C!m&~%9VKGu+1o-m-tBLkJp@!RX06Rx#IQp#n8;48p+1iXNoy*$Bko3)`V z8CZ#0(-}pVjQaw*5s@j=_g2Ky=L3-xNBnTvvnKqGw+YJBUtR~i@^8MeH?O7)ja@&I zJg|$#FC6?J{gOVABDDYYPRy%Ra-uZ)nUlGyA39aGqs?nUxNb?6e{}k%V_Z!&wcViZq75xoT!1yPWdax=EJLWQO@+Hi)eH@edr;6S@5+d#sMx z{am=m+W2)1_LH&f730K(&FE!))C*SUc7PEDJwXS)Fi{w~+HhSc>9 zS5D<$6l*n%lrO*VBY8(`1izu?S#>v$*vu1!5FOT$p=<3<7bkbQh-?YI_B;ePeZh&* zn~0sTI~HpV!uzsmgEXKt?6 zeYFC2E1A6#9(v{U3XR5M`YOZio7wj_;?2oZZ3+HwkY;6Ci1O7Ao$=Jry+MQkuY-w!$@n1cb z)*uebM;QE%Fw`jj=~FVc0kLW+ic6?!G5*7$O{{qFu z#>Oh^WNd9|DrReL4WeXYRWx?{7y7>lSQRZD9W8DDZ4WOu8>_k#$VQ8jn}=1y-5&Ih zroT3UEg#G3fLV3^Z7MfA9{})w`HJU%_)6T^5%kyO{}-u*tfacT{-Wjh zZ_KRPdX#*RFFt-CB|DcMB{v@@B?m7rB`4><+P^e6H_!jq@yH8&yo&!Qc_g^?9xod^ zHzf}b&p!t*2M6WfFh4Tc|`v&g6AJKk3)QvJpBJ?rj z?njE7_fZWy@4szie~c+0@c)ht9=87x8=ow#oj~BfOT!5y2{N@a1FzzU8zk)eIN2*+iK@E)&gD) zh7h;e`hsC5{8`x6oHObE21wHta@lJJ4;H{y^yFb}=LrtQsc(D0WvwDpY|~E_$jq;} z`g{(D%5&)ooHbPx4E}NR&4{{fURzs|HpL|<)BuuIc|LX7aMKUm^2ldYnC1i;H)U?UoVvIC zQz~4eMJ$8`{o95KNkL0d9@}S9a;iUNKE8aM(2qKgUL_X~EiC?*XzbW)3zbroDZ7SJ zhm?~RZe<-2;@vgnlz#CaQ{9d@LioM4e}<6w#kSpS%s*?7$2Qz|)AJ*<^r{X#I5Rw2 z9-jH8bN>0?@-+AVh_C-G_xvj{n;F|W{mmARk87CsaiRRpBtTXv+s8P3OoIQFe3)ha zE4}>9D{QP9cAB=9e}nZ=?4NLcOhEsYAOD|d=lUOL{`Y8qTqx|E-2aY!c1lhz9!`$O zociDKzuWpE9VqSo!J|0I^FVihspPYoVNqV)ZX$EVu|InxfqVC-I*^Lz(}C(pD)gbZ zHK-w7m3(AI&%4ds%;2P5W-^#>D`m+|pBpD)ykHfK8J_#I@sYklFT*hKg`w~+PTZD=-nC$p z5_+6<@`@bxd8W4KQe;kSECq(+}I3?O4ya-xOXv zta)E7I@*i2)|QO}%BvJbmhO~&?fVS3ZnDN_?!s>1;Dc!vkAsI-=m*z#qTZfstvD^K zlfG^j2e+m_@7)=nZ~MA#cJiJF0ZQ6_4N{D4iI5P^1+iWRv^VaYvbMIkZ;7B*y?E{q z^IAWC-0b~1#DW9wSB`N7PG8(5qoRnVcHDZKT!k8?y>z-2DeCxs@zA<{MYrw;E6RF4 zT=f)1jB)0jP_A8@>VqJj@dMfZ8fj!y(2CYPm`O@vO+0d@x0j`KV=Sdo(lqW9FlVbP zm8Au7OqgEgkclbb6Zc_^aD))N(oL)x8P=S7_(I#ZH;>4ExiYl`!#zl!I36^XSu*PE zZ0BM_;e5pqwV$6;wPJLvY#GrYKu2cxwLDUDIx3a1MC$D0YFd$FeP3QwkjzDQU|%@5 z?bOV#Dv33g$eIv4W^qX8MAD|yJZbwkom@1-w_yh(HGzBPz@@9ft%-V83*SPn`NH!s$FL^?%sa(w~1KbCFiNNChvbAd!#aoJ8@zKPu7 zDxYf5TJw;eHc0AQZ@u(~qA!iR?yL34X2U&~*OsOAm_>6NH;B-kaFkDx z#)Zuo2&rJlq8ZE~##lH*5St77q;Fidj3z8P8guU7n*@`PmYMS}9F+Ihhwk$>-QKqR zITCW(17eOk^gV^Rju%Wf*6lj(aWqUGc?q+5P}#ewtob<$iO5`#!nUI548-$ACM*AR z_UFZJeGDegUa^nb!HvVIHoM;bPTaoVLHRJ$_9O$r}&vEefQL}yT>cGsW@Y8r^ImjHq5XGaAN=DhMt3idXM z9r*&Dq|74RETGLDXZ4oBRd33j@2oa{?dStp?N8fBzQY=>S?xhKPIpeBRyXO4zG>kk zG@0qjcfO4!c5`RbSNj47mv9HJOvLv5?i{Zy$i@K_;5xqV(Y}^8P{TroNiv#1Riz19 z`^sq?9?p4p37$S5Boij&6xnn0^&1pXykcWr+}^Kn^a?U)pF5k4WEkg6)2Fa@(C&^K z2U6_0Xd4xTH!mLTSWi#Ke9Ud`2eLX&kCX8_&A_2+~vf+!v@VYl!G?ZC4caw$UR zX%Wq$SGGb|m`AjlKa^J1FHM1_f$FoYOZNUz>@qxWJCh z^1;sju`6kd?_gi_33Xcrj&|gd9!wHuBar+aKMf^# zF?7Frc#ArKe#ie)b!vuOPEIM@7t2r~v4U9uc0_po6i0 zmyU1WUyWhScA`%@@e7jCPw|O}9oL}ykS=l_|4wzWA9j%}-QYDGT$SiXIZsjIC5TmA z9+eM0i93-?y=wEz^#W(<5RTf z>ie|`AVMYYs>y9}r&9_OPGwTc!Z|v3@}c#igX{Npg+f5*Fw=gvL-J~>t&RJQW8DMj zv5pIFY%nNrClPVI{lhe19(LEgl1*PD^Fe0L8_WtxBNePZFawlNCuQ9T;h#CqmYUM~ z<_fetDXrY$xmUE^gCuT0ClfV}}Mqs&^r_zI?+?>W(pjRMMRgkk40ELTjs{(-p36W#eCRd-0e znj`&bYJmK#IG{Wn^h*L^YOr$d=Nl5x9)hIrXT45D@&w2~Ry)j_UBCW12857C_t6h+ z=3@1DUj9b>-Z>`niGJ%#!qM4WuANICf9CAgDW1-Y*_*eMQEnGeN^fo%hA@Oj`EMI&P%?dr?Va6$O=UxTR2$O{B`W{WbX$L z_byRCdVR_~)*Ywp-bVFI6rVK0S!3`wiaEM{-4oOI4tFB5wK;nv`aUx#m4E2;4R-VD zG&U6o51Z?QFLw5qQw=_27^ ztY5s&Oq`Oe%V}V6K9&Y{2C;AXpz0@gQ~5~zJP^6RIWB`+plUJJ-R|;2 z6fhcjgbJwzVS&&xV?D;HBZVk=2j&vN>hBlVI96?Rh+uE%4s8U+P%v3BruU44vx}xr zmTe%^QiZJ2yOZ;c_eFQwF}YQh}SK za}^2gV)#qPU}f4V+@*!O4v|b?8i1GB6UyGOw@0WN^po|yJvJ6HUW5tRy`)?!;AA@= z`P5HsM&$9vk+zRzhj}(p_2t?TM4&$BSO6FNTzA#HU*tyEO?Utiz>6h^KY?@&x|_ax0&vW(QcG=QomCqBrzb;2+?XUI7Kx3VL zTtEIPgzk{%6Znws6D;`#*{<-%BHkKfy$rCHCGXrf7eR$c6hx0XO01g-2CVJi1>2K1 zE53p7JSj-|d2ROaOX0kvQmH#r=q5yz(+ry<%*TkVvo2=hqcsMEp+Z{h!)B-?-ww-= zb`AraC$qx6toIuAINF&E7EV&+lZhEiaq_fc)JQ%ev}Hs!nZh`rmq7$lO^zP@Vas6K zBHcA8N=m4Lx3Vu-IP5;gIkmQrrB7Eby`+a<&J=f5;ZTds)*ZIg=56Dw3>{ldr<;E2am3Uv!iLzVtxU{%Yy5Yk^d2BSY-G2b z;{9GnIVXBnIXQ&y{HR(aWc=u}(moMhuPhuhSbnkd22N<+=FOKM?Tz*WKMN;fOLDeF zE6J0iq!Y=D_|1I%DSz!Z*M?eS*2+9QMrhr+?v!1Q0;L{;G)H*-Kqqh3>6XhPnGUs5 z4`e@RsA!BFqX@eN=&lJ>d(A?sKF=y`v95ENDrZyzDFc$jXX?kZPu2F_g{mo1uOLp9 z(RyPLkeqvrsUIlrj!Vt3-(d(K$4_T=#}NgZFJMij78y*5zEHrqu#|Xrf+-~CacN+j z<4*u+7rF^DQPx%K%Psd`GWFIXFy5s(*&<&OG)`d}Q+3;L^y`P2_dNl`Q4XF&)&$AW zcxT%v>$bRdntr=c$xo>6MHmayKwhFauSAed$&$j(dCl;wY%c``8RmJPDaZQeK&Rf7 zqRa$`*ZpjxZVV!u&K085FZYCK7#N6-KR=4Pv)l9>>Akl;Ujg$~RC#;EA!5C+nZ`HM z^68VD$#$svQFlBWKhQz) z9>ddy)gs<5Xgj1t!S=EROv+Jc!xTjc98vdc4U$4R3jJlZ31)g)Y37&uq3cPojl%(< zi*RKFFUwJuM*L7o4@1F*R}rq8BAW`f;V{7QSz~nHud429LoR~LYt++zZ+FA1wnoy^ zXcfZf8fsxQC(TSBLxDuoL!Cs})>nqdUAc`oP{CC-&8zTTpaXe-)hS_57rfVH!GgJ=723f ztXwKhXzl8kA5@58`qVV-YU{+elEsLOa!?G|))-^Myms^JruW64UBD=ZrDI7cZNB`3xP| zFyI&~7UMQSBJva&+Jif93FCHQj9%@tC?BY;8zx)UKb=5(#CBY|@ovt7~M| z1U*%XS_RlPOi&jcIV#&)XdnT0;|@3eS*Ms0z=UI9E; z^^(API>;Wp{T$h;@Fra7w3_>z`@`E76AFM?;N1o|i}kHTD3bh&s+~0YoMaI_?PVQ` z6KB@6)cohuAs)63>ZNeM-I~2`{6rv!E1_VT%;_%DXn`4WNE142*VX)L{%1A&Z$Id_ z@^9oTzfm?JCtRalE7eMgcIOn7cY)AxVpX5S_L#B2%qHC5)qlX=J=*8omtE_had+gE zy4UKI+;dr0&OT>!SkYuYsAy&Er--CydSeS=)Z7L6NVzAU=+sd{ViacxcNr0!AS?#l z+NyNu5yV&rGl!*g+FeP)VDo7|&F_E5Ne-n=n(6_Z#%H#l(~n$`GWtT@~-c?T<*-|Zs>&6VkgXVY5ob0o52RhNS2op`pK(t zDx|@>)Z$MH@aXF;gwU`+)*ZDq>-1LU-aOA__|f}mP%?#^k3VT88HT{mXi;FZB0f*m9e@fO z&1X0wS|f=;M!A(5k*}Pg_kE8Sv~=`;5Y(VET_)RbiJ!-F_u?4z{^Q+SC$RH63rMO; z1Qs4Xc#Va5EJbYqa3q}WMI7mO^VF|1AHe&Yu2KfqoA@J6`n}EJvy?A}F!j-Qp0$BR z7p4xUG)c zjM1GR)yTNKw+lCGF5LaqcCuxYFEOmunJdN`UL&W*;oQniW|5u)B{L{dai-F9J!(8&Yg%Kg<0a|v>2qo_Vs|KW zDy!R)RamXmwd5F;jYn3wkwG_{1`-g>3*fH^Z4n~)MovKy*5@C=NLkm)F`>lnL#q4+Hu;M$0Hq`A$< z?^}a4U?WX@3DErn64=+9_~V&sk#t(+*cuC+9|hk{{4&3EOo0LVTRGsD>&^l@_zSLu z%`zuXEA=reqcJ@nt7R`n(K&wES4g;e;jk2VRmE_ zlx5s^a0!IdJTqj@y0IJ=9tMbJ>Y*;Jt#H0=L55rqfHMwjXvmJUA1;T`=0>swcwZk} zl1k)qwDUoURNdz;_2&vd%etx~w)}>u4f16-GY3O8GL;GElTq>|1?PWZJ4U;{cb3v0 z>~)qRJxHpZkZV#Q7{p%>ZSU?x@>43uybBzx@!Qyi5iy*}8>b)hzuPrkv5s$q=Z&>` zq$AfkpWXtSRS*}M>-yjMlg}7nxNe3_S*B)W1Lu^m8X<@u?+8ghh9L>;s&vr%9Q}rM z#_ppHnF_9dD_V-!vR!62$)UPcEol3f zLSy~9Rr_v^4&p}lSas>9FAl~doZ9j{06P}W`s3ErK5d(t?51UXCgzwhti&!t*0-!Q z`exCbL{6k)VLFN)7~9HtMs;BtTOqe^cgQ(MIgJWlkma{g<1ab;xIt7jXtub(GNt|l z_Ja*$YYYfTa802ssNFQ3GP%rZU`)MW3L-nGQByd=2?-fLwS#H zELf!+Q%E79^oG#q)9=Ery*wHeVfsm48-Q2=-LalyOxR4pD0>2n;zWEXv!&m2J60vH;t&)1H^rHcneQwzFDKhLzH9az<8c3+ zWfF6Ke0}9YnByTb%UBI@MG)HbHGUd-(R=kCzMy(C@#4xRq*m?TEUS7+g8XU`6+lBf zUHqo^#))nIF*7Ew^NukH54xg zUU^c1@6a+GeG(;h9V-vsf}pMaL4_4Xx2I`Bmr)GE89bQVhmkZa!C5J`Q1VF|ysbCy~43ptgSD*ZqmTz&UK`wuecV|!h!WI6 zq6^mX9^;m&^DE~-4Xoo2BB^4>S~m%jj0SU z<#K|xz`>O|_KI0Mm}N;kx_e6fak|J3l`L*OQSD8K%bTP>Tr!JH5b&a-VQw0YDtYvz zN?E)fOA-X-vI`u@&NBV{2TTXXy-9vY58`=isVgF_VXhAHc~j)-zAGz$(1$uw?Q9fV zq>7TNB5_3#%W~LY`}B_*jb-fN#S!W%oqU!DrGH}e;rRcd>RGmUEPC{ZBILc>`6z!IhtdeM; z4+=+Dyd3Q`#l89|LY+`hkY8OBM2aI=^a+u2$X<-=weE`T$D6}&GVa(s8)fR-_~Ibc zeBJLL2If=4Bm;cnzTrUf)&{(^%GU3w7$0t)Nuh)9MqZ>!T&Ek81Xmxt(QomIgNq~_ z>@Hv6S4VMM9^H!)6 z&{)y6T?%wh)Hq$}o*V0kIeQ z^}F38>b$|x?ocD)4o^!p90$IOvI&|tpYupscnkf`86vb-)BmQbM5}HP!kSCOSm?>! zH0@u(nsRWwi(0QZECoo3X^B}=J`Oq~xEaaa>p%M~NmRNPb`627Q7;Yfi$=M^$+y0G zceW${w7E|`9Vuy9GH%D;Hp`-(m$n`c)WDu+E_DRK+1qiChIVKTcErpdBO1T+olEKj zduffAi#9O6d*}5?k15{P`kd-qsTwl)m+i;kmZ_Dt74O&kB1487`Iqc%AKmE&X^q(knxWDK6H!oyz6-Uu7*DeQ!d zyJVGF56{n_19p-;k0Z~~OIsGVkOP%xm%`zy432R*LA4B&3J93_j}ZhCQssX%QOXI?c!@68CfiJN!9=2$(pPBwuW}xake5o%5kt;j~}3A-Z)~cvrW_| z-!%~W#Fq^c{a6wk!k&Pnf~MnvI@^o{NP5)0M4kdlRiE`KCT*j#73ApG+NEww5Vj|o z1U`N%@hJ6b=rRB&7{YbFOUd{g!?(#FLuMS`>9|>iPU@<#MydAbU^+6iy4eZMaFpfr zh;T87$>-tuZSU-pe&2uP)D$?C8TN)=W%MoUF#vvj4-| zd%rc+bYY{9j|wUvFQ6h_ML_A&Yf$N3>Agsk-b;W40Ra&qw9p|^BfWPBy;o_Whu#8& zPy!(V4)6P&@4C)kaDJP;XJ7kTGjq>9Yi6xk>m@$$&iud4a+i93yynhe+(?^8H2XF~ zR&L-)3g58Zq>`jcSwx`cSM90RG>SLd59~FS(`);2Uz#;11_L+GGMzZKLUZtD^UYhF zS7+o~p^zDaJR87(u*`NcxVHA9tL{sV-URC;e&#Tqd3hZN<=Ffe zH85x3HHA8uWi@fIy!_(4q7tBJs6+~TF{4i$mA!DTENd5!dI*Kz_2&P?GShSHt2h_F zg(3^X+{N&!?W7)@xvNa(RNY>?iPIlt9SN~p#(WgRl>6u+G;LT|nJzfmV9&Ll4}DKG z1o8@HyNy3w8V2V|Y+BA!*B+n4V_nqpP7b68&)Hv@-MY~)G69cYQWB@VHJ9T2T#BKA zTPLmTfpUpmC&3$$n1Huhj~g=NHXLtH;WzKrha!Wkm^Hdk#_^Xy>SJtE{>!q!F}qB|Htcjn!wW_Ms-HC_EY^~rM9WIJZ17I9 z_=(q9QtHrww-C#^+;^@*JIts35*NNTDVn7rN7Fl2sq5DX{vikCZ#5bDoI5_*te5t0 z#nE-x?L>@YCk{l z<9(-Jo%OA?dtGOc8vW>yqhH{-Qp38@Qu2w7vLrwY54LWWo!1+?gv4y40ut*) zhnU88_qVZFeMZdK_Lj?$2YxVlgXbl zC$87PNp(6(K);d!pz$cvgXESZ08`1+aduqpyCnb&a*B6v`@piAynFmRKdKBzKT+-!Yp1zGU0E;8v{P?PE*))_0IjdC zWUJJe`M$zSNQo|yZn!%Yzf_mk%)sXlniR9BESpl3sEQKstlm*Itebvabgzend9dWB zotTO95vGaqAs=3ulPrn8>X_mve*;PpDereiI^iZu?x#{a zpPu&(p?GcQPPdh9s^6kid(xLvy~)>f-qvQv!e z{Aw2Xg$YpEM82wEu+{N7{CG+Ei5C{P^NH>&!^zKuLEOLlf%{>q4C==jga;rFWWn#` z?Ukm6DvBTHs#VeLK&-Urj3)&Yuhz&tgZ%x_j^jUL;8(+%u- z@`h^q>NeXf2Cy6^Dc5(JK&OgpyQ>c32eER{TyHG+{(!Ij`a2#0ZfZ-DQ3pqsf(U2R z{y!%5RZK&c-khP6{C>R2?mGdzkllDd$=liqJCl2LL7>a1vl70nvv(VDZL$N7Ok2{{ zHsPJKxCEd9UzRd(G*99}5?YeG9%A>Fl$$ccPA)I*Pa!c&6LR=@S)AT3QoFx_H*9#`b3tOr))L-fgn4MxnuXO3WAYf zgm75mLwoa+z*j?9tXwaCe#{#}W>)S4Z5r3_bBNv5H@3StG~6B(h%Hlg2QU*h?7Oug z5Hl8t{(9@aq`2nAR_d$Pif5W}F=Gk?jWoM?2mcxYZ=&&=#_KaWW}}vrX-Dduk}?nJ zf7^}er$$>Is}~Xd6-Gm~ZbC^s%hC@Hou5!PQ=-*ySgdcyoXfu$u?%POVKRz1$hm8S z`QE>AN_WAXhexHWApajj@wljRK;4pCX=F_$2VXsGQ)ylV(O7ngd*oAaQDnN#nvtZaj?^RC9_Ii=<(oH7a;jnfc9WZ z2~A)xkh%^IJh*kB8KfLyy$nC!oHg%2FcxTEKg&H$uE@yFDtH6y1HhqG!=T5&BoAIp z{#e-A9pdG0mg_s$kJ;L7e|&HQUo~gfkXHot5OoGkOyrwmsh3 zYx+YemGQf!!V(y`cJBESvWSXDNonYz+j8vY*k=VUG(xBNil=FwPOayf&J3X{Rpfw? z{pe;*xmGPb5NL2WAw;Zf=-XJ;E&aF_V)C>2$5;nZ;dSukPo<1^5tZ6geCnEW*&Lw1 zv$k_*SdQcF0U;-C_aNG{%|CEP)bmaEhlZ;t=>d_jM7C4=*K2wS zEOYwByHl^av-~$&xRG{J^@I49vSYj4K#vY!+N;tUmJJh1|IL(lE9W7VfGu}!XJXwS zN`Ofn+iP_b#p>TCS&sR?XwM2Ub8u7xU!auTlU-Bud5sSyajo5fxXrlBpZNYd!3F(; zkfz^!$ehy6LhWV3%oD~@e}%zU?bqfrri++GMC}V_VamtDULpd+fBRCm(N*pAMG2+ zaqb@UsS!gV+`{r^FwKf0y{x}Q#ewOdQ$k>(Iy4CNYI_qnn#>{*Y+s^HkAvNM8lcF& zTyX>6o__(Nm@UVHV#VK5X6RiOfLd%N^EB`cB}$v;5}y>*6UPEtvVX@N&=y3T<++yh zgBW3B%o6N6;Kpt2dIH(+535pqayc3-ZP{&e=ZBM@ZurEGjhonCtzx4?67g4;2ta%w>D6ztZFHVV8L7NPNLMyTipyJ; zh8%S<$4;;HE4|}ZxV(_&1ZXlL98@i}WfAc^Fu^6(k4_uBFRI+y4T?IxHRdjNeDk8< zOxOlzg{InhIN^J9_Fd_CZ5GZ!PM!zAWBkRa57OV7gKD!>0nQi&xT5jzv?2QM#7V^W z3Dz5q_EqsRha%2(`s)U9DyFRXtUu6$!#_~38Tr-;-q^FJXR@DR_{)VpR+jR)x;T*u zqvQ4BdW1@gD{s;jm$&3e@~-1g0S1TsUrMQD(}UOXK9A112BF(rdI`HZ@62A?#lsNq z))KVM=@1P$*!`#kyQT}mi?|2tAdxy&Yo`6?e`SEnc0lVnJ4wA!o2pR~>0Gmm!q0%^ zo+m}n6WT4vr_u~cgJm_TW!J~_hz@{H_+WAx-ZqA}6~5$D;sFKKRGg-F=$Y#g@z zK<6j=+R2L<;!$$(;!IgzD)-lJ2oV5!9@${9i5%CWJr+w^m3Mv*JCW41`b_E-&aFK` zLT52AX0Dz`8i?t%Xw^#`>q|JpO*(Ai=Led+O9Ri~&-G_8trbq0TiM z)J#76a_@1abv5vqlrt_kMl1f3!9~}|FB(;~%s0G=pU$cDtU2R9(4w8%rL(wUI9_S~ zkJ{bkk)4FO+W9-?oI`iK{=Bs^I8Ap7cr)1TTQN)e;y~&!Xy)&}Y_C*=z${C*r|g2+6=Y+TN6$AIX2S)d-u^h zMhowu@l9j9u6kJ^vt>r@jm&vH5g_FC5OVh@$tJe%hii+9IBxEm8-oD-C;ab+Edu3M zfHs5f7A3=HJjOT8ON@c6ZT-jKsDiGp2(9`b;<@)nXr}j_F%Ef|BgtRbO!}ldEi6B_ zOFpl)W^}dd;|T^ASsYGB{eL@s+7+NT;3qrnX8+Ff*gUGSXw}Z=Y71qtOyRSrUL*fc z5N$TAA6J`XaMgeGeOs(EM}5dn?m6E_)fcISV-ak>Bug3%5VL?a_Xu&wnaqVq_VKkv z##??H?78rGTjcRV@q==0qr9&SFd;>zr3oiy|A&KRjm5j_~0rv{gLW zMspD!!voS<%2uYEo8Nb#p4>zH8%Z{Ha+|xPuAH2F#ahdo#KFsWXUbi>2htX%JO^5h zGHir5*u0L#s7nJtgL#8g()}!%RQ>U6C&emmWl-=Hy?J^nhrGnkt|%~9!ikR5RVc9F zEAe>oO%P?ygE#O(y|Olt$J%6&A{k1e?akrWJ?=I44P{pJI)5G1FPa*7{B%I}v!ns! zDRy3zMR#ftH-Iv*Bt)$n_)h6wU$GB!O$|7bo0(ThZ%C&1;_eV?srb&Irwne-F=y3f zcB$o&QmhVaV{tKU+wGqJoa8Fid)(B@Nd+=_TyffnW)l(D+dj`)Z{)TjGxtpq_rHU863+^a3YY|Nri(>fNuuh##0p_;eAnF=5fm_m0jzmGtFt& zk&gy(yMlGFO}|Z%{&TUHi=w0h=Ons+hKt~8hOWBb4qPMYp?t`DS~r#Ea(lHu`+b`R zd#eq*R+nBmQMLo@0-zwYlV=4&juFD9jbTq_#t4OHS-@U{UGH535?D|?tH7|ndwX35 zR;}-pEoa9Bk zkJR0gU9GDgi|k__n{)~YZX;$%WqH!)FfNO3xmQQ}y;HHNmv2fNBuE;Nsw{DN7hi<(nY!-QWA_eQ@2*<4k zkUQ05(-KZR12%}e=~4OtW@Pdwk|$Qe=~lwm_^p*!Px39BKV(fC7Y9Muod5cJwt6d> zeGtV;pDfoOuGBczF44BlXB}$WGhBo;=Dwj=ySPgE8UZOUhSnMx&7`Wwv2#8s2M(?Y zY^HLIw=plRp*@u`MlH!Lrs_cg&c(Z=TQmz#;u?}YX-+=ZDQ|5`#oq=!ECU6KL_ugL z$_0yv>ug%!IXkmK?3OVpe`b}lT0or4kCO``Gm-n8wXr-8wC|VzLAA_SOZdsy2siSk z(fo80v3GP2q>47l()0E-ql zRKxL7x#HLpY=dEPD? zP!$tkzEKL6#pjT_5nYlnc}&my1Zd5|mUWTiQ$;=qd`V?Pi_KPoNk8QWc|3koMHaXV zI_|`LJwMClUf`gV_wMH(zkl<6aotKrR?}jNrg!$Ez6Dp9>(gB^=g)MG)Af33uf98W zYtq)Je>suhH+5?>d$K7$Vp{)c_7|CG%ksv+(AWy{ob+!QpD~7|la%6x3q6iS@7yjDtdz31iwBnGu&E==S#Qqu11sfry3c9` zNt>>8S(Tvux(*;q@lTBV&-54HVkllQy8FR#&+}7#YO=2qc){_5ilB=n_r#92+Q(_B zd*$a6 z=|`#R->X^vo-disKqpA|(=oF*V`zIE5TXVA9g1r1ta~|ndnDLt1r35|M`h7K4GGxrTP|!;LV| z)-ksP;XfPrUW21dlz5MbDBLc9kIEt-1H{y#IC>69SD1H*C9MfX-E9XCPw#UA`r5aL z_H=CbgNd!&Fw>FK@c3;5bT{FT_nHHV=q7@^%1O)HNLxIO>{AKJqSu!u79C!{S zjr>@9iqYKpb6>z*yrb`cF_=XRBKeDK*D)d1(Qc|QV9+Dx&X~32J3SGy>mgs-3*6R5 zBNeJCWiu|QJPJ5!<+4aa;-6RYv24?jxe?HvVwH8VVOeX(@-y%iKzcW-OLxyPHKJ|o za~|w%O4%oR&tlumUCCC zmQI~lEdf$_*R0}N%AX<9xJ&igN|M{)FuyhA0<9LpjX8YmAA#Ftj{(uDhmT=|ndkSr zqS2msmluHTu9~OQ9hhn?7XE7R{D4MR=ep(CXkBw=eZljQd|=pK(Ps&krFhb+lC(dv zSs#jvpaio9Oi>`}>0H*WMG|!oFR+ymR=`=nwE7e~te*i2QPYvyeb12ma_mX&jXE8% z_2tfkYw*7i%NZzRj4!umvx0nMNdzABwPZc->NR1Y8&WLAL~1dXP{2Zes|Nye-U@gXpRj5W|*P#zsH0ebYcVw z{coz$8$cd^3C%3(pT@3$b37ws8>v2k6%xq87bp^bJsnteWJeF1^C|KT&80%zz0Q;# ze>2vv46@)q+(qU92jQxLCwyR3%x0m+m=>J&z}X$V^C2d=$$U?<&=qL5DmWB}rkok@ za4~cSV|T^y!zT|TAjMD=^b7rFARi%k`{|)$VKu&4T;5Z9n+`7ZRI_F5nT>f?xrvLh zZX(+dZkN4K6omT^lFP=duJLPGLRE)8%%r53_U%Hv0xILv>9CDOne9Ttd1Cut7W`<=P1-fL7EDEC!H*dlE zE9W69PhbIlP$*bH+^76ElbF6dVNRoE1cr(4-%DiCZaG!0Qtxf6eKD5&P2^&i9LCNB zs(3qB50Dr7&A7#~kP%3dj*=uLywL-uQ;Uf9K3cG?9Bf;E46NknbTr4&`TlXKBi(En zwTc^CtkTrI%=oJ?^^mF0Dh+k^Ol!#-T6({o1;#Xj_;_8q)&$om31Zi=O%E2q^S(`@ zsG+&GAODW}5O;kTJ5gD-?kmC1a^Z`xjPf9)$RK=kJ%e(b_Ioys*#Yiyb!hUY+$O5DGeERNGLBN9-L3+7 z5G?dN6E)BgAcw%-!OM!xFa18wU%Cr^!Q}OvAZl3F81xEy;OZ7s0k8w$PdU-c1#cLd zplvKqKLd_pHs6oBO6uT7ty=2I&>sWq$t1Y+fHw(?)f?b%8M&s%lG;2}?66I<0#|06 zCHC!m;t~DWu`wxqVI4E`%Pn9QpWk6bbbnPB=ss|>6}UsaoGWWg RZC_{5xZFY?P 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ð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

=0`hn_j*i&W@-dVB=p{z3bmHzDD$ zu_M#d-MBDdnKTkeNtuPSj@(PVQlvRH-&AUw4lxfnSbT5TYTds>orE-4l?8 zoZfcRVDqZ%*+i>fd0~W4p&$Z@y38ou&P-mu!Fqu-X?+j)iWN8htS_^X3K#nz8V<@O zD20Ek{a)1sLpge4y2FIi^1Osp9O87RvZ&;P$?XX7Xhq*<^khT#5q__Mgp_7fqjB*r ze;-Jj0b=-VZ%ROf>;)M_?S)L+v!9Zo?9%M}P8VH6?9Uo)=CA zx5z9Tdu0H1cG)!MO4N*QL(dGW5n26+^8ZjqE)2WU zjt(pSGNGB@dWa^3UyuK-=hUmQ?k>2)jBOO6gif&67gMQ~Uen)V%O|+ssrmI3%zb~> z0mY6%F@a&q57oJMvcAw7OO6X7;UA+&f#Sm=KBxWPQKuJ8Q0^O8gg!By%2rt0Tx^Qp z{6v1o2&0LfpF1@hbKJs+Y&Nx0JB&}KRmm>91LU`5ioZQG(Ax3tNmNn##-{pP3t^fo zE6K2!VOY08F<^rNPaz;M<>rR&=z-?Qn1Kn*Z&tx6dYPH2d9RKyjw$tyu`O8mKK5qU zGrRlw>E`bFj8d;+INo_2hV+7(pkcd z&X1S9p0X34`27``8s2bE6HV8IBD^n_I5}&2R8>46Ul#&I zsX!C7&v0gOJ@l|>yUDkMDU=>v?-c9a+<8hTQGDb_BB?Fz>vGIpBJP!%KK)3fQqU_a zCWZjYNB?r6SpTO-t+A=U9nu5s{ z#urs8V=NRv9pia^ScP|=(L0mtm7Q#0DXL2N?x=YyBbII~TiW9g7$_VOM==yvagVL8 z3QPYc?gN~cf1WCtE=vo#CI+^PN{0v8eHacckbzJo1sjEzNmD4Pa`5yJOQXtu!7m-W zX`dZiHsi(%mLYx_2v_G}mq2B!fw=WHC=d~e5EV`iNuNu#YLs!t&f}-@<1>f)6VT(I>@>ZBMnb@B( zwGqhh5l-pK%^7dX>^i0~wl1QukGN~slaLv|BEx?^&F*PMOjt+vQ2TvozJMBq_n{F~ z@iKDuib;j%a8`hxeK=-An%V!;u9k=YryH$yP`Cp-IV^bk(dkvnbW6PxRWd`u1DO+# zZ?($;?1=X#NhSM9bCnIwm$fduf)y(~HVvo>(ZFXN{>;SAm&MU2p(L$z?s>-$*9W0= z!keK7-8e~0O{ayCVS$Aj*7sPL;8oh&+H+0%&9VPiew9CAf6X7Ok%0$HBCL4y*j*L;INq#S9W-GL5ZW7l;M#+Up~kR0RiF+hL!qA z+-y_A@UDEjo=km)rPxZ(lOhb&)~L}Ra>><-)VfO$;y%uUlgb;FtiU4lx-7JE3lAOY zK^fF+!Y9d#u418{$-XTFZ;ucc2RjvV1DmO{2DM~10(r%D1PG`DZ$);}^ypsEF`XG} zFL3vjYu~+H$i3>oh&9VF7LBfNVyb#oMVNN(igoI>JAKw#IzJ5E(`YzP*$epn`A816 z!@1JB^?8>FbE8E$`86I6Z)TQ4%>Zi1l^5r40R(qlI@uB03&Yn^bF@+CGIeEx%>kfU z{*uAryZ~MLC?Yinzwx{q5((d$1QE;cY)hraVxO-EoI&VA5b7@ zNr|OMZNn65e8ltUgUbl#)R_M4f?^;}<}2LULvjMaFhcfaFBN^Hk3bR-Qk-#okXJzw zL{waX_Z^6s{H4-+GD)W6lai>(Qje7wJMxh7YL*q&Zo|4LsDtAB8_)5AH1m}QL2v*0 zq*7W`szozPEUTs+C_;*XLQ580gityyF16l_g-0hHD6%Na4$4@KMvlZ%*}%^zaS;p- zlkq=@!MQ#M@{jUtfAlg1ZQU$5 zuWQR=`V6;+_cMB^qn{ogAN{DzWuk3Bz|FyyFn?mL-x#-io=E53Vci*3~2jn7aIMzzXJSIgXTYWQUC$*2*NF)Gu~K zwpHFx^a58#e%X0z<+w6SjOLnEt>K)wRmS1YqtF11?tGXp?mpBDlU*ex4p9!?1H3$w zLFUbUSoM4*=23d2w;%dXs_+vw%%i^6=n5Q%lCLYX^k8w2JuCO=#gMO?TFueVCL`SX ze7#Mlz@_Yd7t4KSR^o?2mm2K0Te%@lz7dLU@Qz*7c5r4RO|d4W5R5e8j&uLBLi|_$ zjHneU)nYaHRk1Mx50Y1SRYtJ_hg7A=L~jH?h&J~etnE!4ncywYbUdu2PyO8;!Q)ed zWh_7pPxZVdhKD-l1^aYeLcFY7$ePI&-;wlpyg}={Ad_7_(MWA8c_7u z^&QE+0UWuqq9G~(YitCp03D81j@FU*1Ul1z>001wh^|_(5{#Ho%0OMD#`K>9cLEt5 zzD$G|lLgXJIUv<%UQO5G{csRSDD5~ZOGO34F+|IU^+{IXXJO0>)sjelFpM2NEqRrK z(k5NTjqj*wxlCTG-z59#E$a|T^2JI`L;Y(S>aK|XFa@ym5rSk&-2zUB5~?IiDmVh= z#$nCtS1s(fRvD|9-*(bdF{!^$LdV7-TEHe|0_@dFD?HqDXc-?Vj7F}OQl&Z2p=uA6V7!5Pf%mK{H=o{#mR{F#E$KL6LR)#4v{(!Pk44;~Sky5P2?&`9qb z`bx*)p0t)wLlLkqiK!su1rcj`FyIe1v9#9qDu~}w`08Dpxyy*!62C-`dN36g_9p<) zn=Rv9%J4-^drY*WxUlS{GTSv}zKlWxX9O%EcBOPf6uw;vA%ev%0;}phver^Uvk17v z=~}4TgBF9i+}V~bj_mj*F;OznhqifDHdfJoKN5K8l?2zyjQJSvqQ}WzK>#tBqY4=w zIX-q7JC0zw!-KM$X2=%J+sJHwWITI`*A7vWE|@zUkFLwX!k#x`CRH9GS`J9+cnU-Z zz;bG}cu_K= zmbHUO;k-8AGvoF*Tc|KQfB%SyLZ@wip%X#ikgK+-!N3Bok+8{)3D6{mjW907q6Ru= zZ`oxP9}{TD^L#qml?jPo9KN6^gf~>Zr?eFFP#0W8vnS!o+kb<5r_E0KnzCfKDxf+z z(?~FnzB(fuP{ly2HcRKp^06{8pJahGR#yQwJRkBTTToc! z2uK+|JQBE0jr6WBAgMA!DEraCD3|4o?>$kX5Lt=5Hi2QSRHjc$olVByAXgG!Tq!&? z6KSD2$DTtqCYTHLrLqFVsAQlqn4_@{D#)4W#1HYT`8l`uev0B5)RUtnNhm6E`PRkf zsiri72(n32*@e(apWUDG&QHR#eH^1#sZanH#GCLJsF0?Vdwit2?suG3NMp@u%{Hf+ zN=&i=O?aue987EpKdFv>z{9K3%4YTs=mk>8843-XZBFR zpGm&M(AS}IUf0Gx8-e7nXn$~S)R}2L`gC+Ckx}_2V^pHy1GvUnk1qY#m~$r1JLD_Z zU|3IdBz@}2yhh^6Al7mY?8nhXiVAPbv3_b!HQd5MhSDh0Uk08muns?7wXvt&lgMj= zEuwL0I1&bWsk>2=mLW9b?hWK~h@DCepOm6Mw@aXqbJEZuOY_99I^%(1W7>x$is@9~ zca>6l6*5u5Nef5dd583hQH6$TpqOorigc<6E?l}XuM{UgHyVu(v3poeb%1ROK!{8- zTIQ?u?{o$Qq-P;+>{5{ZmuiT>d{&;T&aqLBuVJc&h3q6`xs3DabVV?|kWT?%GThX0v zsGXU$Z1a|E7g})Q3XT6joTt}B^7IBCbwQLoA04`-oHXsx4AVZw@s?vKt9A_np_3q2Q`Ci+|n#|W5sACfs-RitZVsjM9Q{!M9bU2_*gm22TP)n zH;DO5R#lvm7leY_C=_%K+{U5$#%=qPZ)6svxURIr!s$n}lHe?Wk;r46)+KRz5HC`1 z?h!ltxh2L@St%q>HB4g5ksS5Zv{WIFJ?JqK2Ad=>0dtqGiYcos*}4zKk3MW3>wKnH zLGFF2lneR4b8!cyuP;5wfe8p{H5yL#nBD6f+&{937BxpPz@s zW1FV@#ksr~TVY{^<**o-HO`?V-K8yub~qw?sBwWjWkSPLB_&?L+@>fi2tr|xj3pRgnCIQm)pk#n7@yJv&6ER zbWo^4RcY1=TvHmel%#Fo%M&a0E1KW~>g!=Z=7B^BQkLZ{*ZWfKXJ=h2l{u~)gE$8+ zN3e1kISVpw-X!PFJ2EKf>mephS#=QiF-djX?kr`TPnN2*t=J%Qo0HVK10}a4_rGa2D24zGi2Rkv@tyC>rrifp&wkkI_OCTjd<11n0+;FH- z345i*%TQqp-5)Bs`sv8GVzPStY>FcRZh>FDu2jaAxp1Hf!0A zrSO7(nLXb(tMvT+TlXIm<29Jl{PVKo#zZ)>=Nw6dueAaK2$P=3dyL*A-k-U zO9r9+{4$eY-{$?b++d8eO^1c&mG$KB(8VDNYrDGTTl$Dhf#>~??a9P%w~@UaZ0cLp z3A+4~FNt$b+dq-{ccq4Zb!3r`>$q&|%q$)o+Q<%lyQ#-}(?cb;GV) ztjiF*2dHFyVJtxJBEsjCo=s5P^!_GyRU|*-lj8QB(CgMdqq>NM;2G@l%!jX#2YzI8 zmvF4}x^;clt;l!X$3mH(2@6Hyr>?`LGy04ltMhQ)sTLTB<{jY%a83)yJa?_!Z>;T| z=w=(Voc^pqEfg2~bzO1i=ltY>c!i)J4HAIEIr|wEba!+3LnTTupzkfpjTi^{eo<%% zavTF?D^Rp1JoVz5Mg2B6!RQ{(iswPo&b`Soh4gnWL11e`cU1;o3qkYQ{l1NG8F z1REl=l%w;@lT@>=)TCho9tqhlP}Wl0Kt-B^!B1=~eIm6f_d19o&sJ4Uv0z-Np2 z<$=jiP?TQ{JZFoxbz>0g_A-Ore(z=g^PF_jaf3=?^jv)4NNNIA1jgAulX;%8qpQKX zYUPq<*l5fb#~)Ko!aEqlz#`}$@BmM zY~zyctgTjW&kD5Hryg*_X(d|w)#?BS1A z^%|I_RMIk->pEl^MPeLjnfqD1tzm9asw8A&Vz$wZN|ZBv(96{EcAq+@HN_9J#X-xV zyGM_?eKEN*K$vWi;4eW&sE&1yHim38LnP91OxXElq3&5L)S5Z5EtQ-!^*Nv#+24CX zz%9tI&(XpsJ)#kuZxCYEXs2!kN)#Mk8Yyc+1Zul73QH%IR`c2p(rsNys+WenZ?4V|F>@c+Vx{M6-2M--qzaTp)hYxBM&P;S+a*79!;+&mFd~6Z| zrf^z84yVOo8a^$o{h_F*q`Jq1rm&`Vdf?o*mt~2jyFxkA&zlq{V4!d#%|RNE$x;1p zc;7PH4mS-Ppg5iu08E$3idUOm$=g)=lv3D9wB91x%Z;yiPOCa=pP5*pnIOU_ELhlt z(3GL~<=MbcXO^IlGJmDWg6B=w*0JGEqJbCF=WO#y51Q*UX+h|cp2tR*U?b>zSrBmL zzFI||rrAUD=T|OzatWfT+vG;ltE*{dmIxk9VpVtTED63`hB;B&gsQjIwpDZck7?G1 z5ME+;3&g>+_~7i&xg}>Zp$?LZ5}>r`?)c|X$Sx-&H_Xmyi26X2C}t!;c9y5K;)6?e zU=3M53!i?y5lq>St^+xJ7luS{W()g(q!rucE1 zhv zWQ$klx?}qRg1%^*$ooFyHm{A83a&lKD}>FLlo zFKQDn47-aY@})cFI_Ugx=5i4dNwQ9>lOEm=;*E@3OCVuhtXkm_kHyk!5_D1s$G_39 z!gxE6#ez@`n=z_OIoaN3AdoURJciT|wCg!#7S1j?*RM4LFs1eq?E_lqAs!Lo#&Wyw6(n0PX6u<^AvB;I}Xu&?aQP3 z1c|}|)tS$SvK-zB!2=7FMyWyVKXCk`Vvz=(1?AuEriRBP%2Os>WU?oJTqu9%?kr9y z(I7HYU7sfY#Z#$ANYOCoaP(4%B+!I$QIXQC?bgmG_EcV(7DUqiK25DtyZf`v=_V{WKcLoW1bFYy?G=O*BID69g)%YdCJwrKINlluZOs0VmZs4-jL>a2mqYg3H4@pG8euUZV-ju)-k=jlJZJ36T>kxuDUSo=eBjC-8lmP~_bFm~E0 z=4m+waUys;(Q0|u6-4*WR%{z8m=b8`{v^xP!u3mMc=&#ar+VY3su+;E+o2~)q?#|P zFW|D+%7+lZb)zYH5MpMWNx@L?*)17uhT>sAGv=s~%4i*ohsm}Grw9sQ|J<~us4#80 z>2c2BP9#7q&q*iSvyD+im7oucQ!((&d}=_wIAQ25z$Y63kkQSScU`F7(4dW{MtrbK zWhu8C?lRFz&cat#(WPSwD*E(2=iEsj2B_1?;@cHA54S z-@r%pbkNhG3efIki2%`7>I4yoC1>fdq5%kIuJr^Z{WH{W&Ty+_XUn!xn8>29=`s@5 zm>GHtvY>?0e7*6ac($cNh3I=ej2N83cm@99 z=K42}IjeE2@Z2ZyP*Ja@NQum?{Fa&$Em&E#W*1%!fybjn>2y5N!aV({a!5W5rqkfCA3`-ymaJz&o}lZ_mBRvg z;z9C??fXK0lLuVzSH9Pc;gwb(m#9v|B^hN}2?>FXdRu@*SN1`qDqX2f(v|zXT{<_R ztK=)dmozpZbWK%|gFTQa_69&+kM@%+A|EIp#U^07q!Rc;ac0b_0+(VTvirN z`GToq0C67JboJyw~t@U&cLScc?P6Xw=%v0l4G*&(qQxPqnM?nbRg$KKu({PNtdWLN;U z9BYYo>{oXz9tbD+(-l0=s8hZo9!ZgQQHtKMa*R0B4nAj zR4KJUqO3AiMDh@?{p^Zz$2RF5=hJri@dUB9VW6`_j$rObTt$jZ9&;}K;1$rlHS=1N z_PJkylk4ZbPr}fuB7X14QKyn0KbN=@BJHr=YR-PA{AQ>}`ff^~i6-f);F-tCBXSGS zOj=arO)_|!C_1MbRA)0abZZVx7$B+tdkkWWi?eOS+yb_qmy~|8J-6SOk+_t zqtW;;>v3avWN>!sca2kOTJ2kES1Jcvs1gHZJ7bBTcINioNbjK) z#MupVKrAd7TcHb+-MJQ=84UbBD5lYG~YAN#=z9bUmd*^`uRBUM5 zic|(gzyvdnzM>DVS|Lrskz((jRTUHWER+^%7kI7WHd9gRTN-N`nTp5|cdxMEM=Kw` z2YRzrh!Jkl#5zHzLr{^$fe7lg5hB+y?*rFpx_kg-P%c-33h8;co1vDmqgT#cI_%w^ zOVgzoZ71xvZ#c8t8D%ZB^LIxV4x2zcnq_&joL$3s1d~~jwV<|xj7%Lel7pT>tvIev zO+I+dAAm5Q$-C0Q0{X!MvN&uLZkjtfm>FrHIV+$RjPuVtIz^imrEVHYj?^QPA4=Ms zM0hbY#l_#iWsmMzhC9%WlWJUtfa0;lJ7nz=Ad5`6wc$vxOg=e9qKRDrq%TIp`?ww$Gx(d z;RTmGHMjLO8N+4euW8=5KP`JlsO9FZ8PPd-r=$0l{IUTgV}8uZ1|>Tv;p2<@ABA~C zW6heqam+B@H#X~7Nqlfd95T_N;A6SetR@IL*SYbY!?r?~qyONoR4QbbWtNQPK4LeR zH$3I9ZE(-R#e46}S5{qT2Q(;q=a~2&+naa$0(IB1z~)q{jqO%xt$%T|$aP?Ug-ZIs zse(<|pd!w5e;2=R5k;Ih#2+hR$2ob8MaA{zyugv+>Coh}7#mIzk{x%O#@jxd6{g+9 z4}{s8bJRhy=X#S6Z}M&#jlp=NwsVK}tlcz{t(_&eQVyAh zza9&Rk%`vG$UYr~7Pe9ICAUe7qgPt3Xgh^F?ynM`s-wc~u5ykkvT`$}Jw_GdiBnvW zO4|4s0;g7^IbEqQ*U}V|4p^wGVRC9CoXs)9$8Q2sza;y1^Q3!x?g2J|X3u%wSwWaz zJaHf2xWz$_Rtq_If__vZ&EQj}4i%@G`#{TzviKP5%FTzf0$Xg@qi50*b|l{-^Mw|A z9(d|%FMS5-qwE~1$KwysP-33aK2p5t{qP9t_wcBW7W!E|vPBaBZZNx@)*y!1x)a#= zqr@T{EDTE+WA@+ENaX*MJj}m9zLSST+1ka{%Z`eRheO5O%gfs6rT&+j35S-qg_pmZ zH3!Jq+}4`oFG@7}Y8DRGmR=ls_Es;S;Q6!OisflH!BN26uc*Db&#y4DNu6M&&XF(v z9tggF5`?C_6vw}bzsN{y%UD~wT3K@_Slip$c~Sj40zPg|4lNaPPscx0X8thKKce#Z zClJp|&zmp+MLCch3@j`R4D8Dd=J^|pGzDk=&Z1|B8`Iywe14(=;F zauP}kauPB!Dmr#XDjHT=GBO}P6YFbE9v&V_MnO>lE)jNa9RXFYgX|ISzw>jfg|dDT#!uVUA4Wj>i?6T#Q01)zFKtIrE*4+rlFZ z6^($9h?s<)ff2~W%)`saFCZu+Eh8%@uK-fi($>+{(>E}*w6eCbwX=8d^z!!c_45x1 z2S-FkMaRUZq^6~3WM*aOl$4g0Ln|t)svDb{TRygaYHRQ79~d0^GCVRmJ2$_u_;qP{ zWovt9cW?jT@aXvR>iXvP$KCzI;~%(SVc`D?>*evU!2Tb&uwQV&At1mbApe027S8vj zz+)pIQgb5VNNOOPyW`Sug`(g|B^NjJqSA6}e#f`)m_Z|;D+&&`rAuf*x$bfkQceBLcd|iglm+8)4QH95ue{cc=Z=xVIY!Hf7g5cS={O$ z@m~KK@&5x6AGhFtF#iv`{X@+E6R7_R)JKD1`5)?|zxalh{~px;n>700bpZmeIsdgT zfbZWu!0Uh3191L{EPi=4xk$*V{(ViGRN48Vc5bJ)CtvGVC0Su4Y571{*NlS{|Ul>1)gKT!2J); z|Np`BKZ~0FBi-Qt3(xugMsq%{f12h3f984IJ9I=da|i$l<2$YvN=2TA2n)O5!&h5| z?G(@UJU5A99JJtmqSZHoixU_5@CnkryhQzkb%Zb>t?USY&mr*qlRoV~>+=5xP(I$j z_4ox||6$F4B=B?n3G06ahky)2_CF5czl%d?zCC(h$4gYui)~Jz8{Mn*=9*xgH)&`7 zlZTq;Q~X7 z+8*yi(^TJKf}N=uH=c41es%Wq<6SP~T_UUa?#?!(pcEOzxI|>esWd4SK zl3oMhFQ~)H;{Bb1zxND-8|eGa@vZCT6lyqs3@-)?kL_+Pr5Nl!Mt2(o6L1 z)d2iQKhJ*mFYmUAclD7JuFlpHU@Y?pMvn5Zen(PbJduOy;8fbY1*v8n&@El&Ci_P?{@>vuDy@*rUduNMDe+MEsMyHZSoTOH?+U% zP<~U-e=R#{FJFf&-jyI`Dr?G~FEA*i?clu9G4;i;MW%(Ki-5LjDTi|4?H?f^(dMx( zCiVDX_x{p=-%+b1FyD0b)JG*Xxllx~l}tG{>j4ghSb^#Vu$RXBMyP5}io8f$im4&s zAIMN~@a1%v=>Pe*EqFnCU%k;=fZMrfi#A1a7Dn@KQPEH5=|QaLE9LiheS`!)xcA-0 z<10T}vg3xu>`E+?MC07lidF;$t^D@X5`#JIx-gN0v&-whc_Wge_6UfF%09z*Ze^B`*$2MY+GNw82Q%e=iKR=D}A!1@=h7QPCs5we=V7jAmi^>i^lf* zrr=jMZRD6?*3sEQYd^f>huk14Z}|oKHs^{XCivC7mx+lO^}VEzgHIvvuf|sy`{LV9 zSf7KoRy_pC?g}t2BlCA$UrARl@y!Nsnq*pCMgh*akO`GHAT*{@!EE8TM zj7XVX&v#$AO-bk%z+wjQb9rl&PeZ@#jS3M%6%nM(??fgSf0<@)r@Mj6ORi>k$@Z=X2c*czZki zqX@<8877t=WRCZn`uoBvUn-F0t>y1zc=*+wWL**d?K7;=TQ;v>rYk4X9jOFMNyv@q z-FvA_yR^7h&oEy3ohU;{>6IM)K{iAwd;g2Qw+xG8+tx-K2~Lm@2ol`g-3hM2-61pt z2@u>pxVzK11$PU<9fG?DcemSFYwdM%?!9ZDy`Ho8_v~}N^`oAyQB^%^&e=WQIp#Y? zjk0z_D{i%bX}!u!{H#!XL+t?GtX0kb_Lr#wv~->KyWspZT3a9g-M5P(lrP zz!ObfL|{2}D`=D-g)&w=Vi0ga%_F}8Yn!f6OL2p*(em`?cFWXX7~;)e_=MoO@6$s5 zD^8!FyaZw`!}F@Uy<45Zkw;nL)KTo<-*@H{+-G*;`_v;6e0dwZJB2u}VQG~unVEzj zi5pr>^@=b;3Q(G3fywM+lG}@or_h-4-Wo~pbO3s>?1WdzT^B37rG?-iPdlTZ}3efXVDXSRJXljVtUTYrcTFk@2C#w zmE2xrg^La|gY<*XMy{1=IbGkb@j0_5tnBoC3_3|y+X)SI9esupc#D}-3go97ld-T{ z%_(SRH*(Sk;KdTALv+AC0m^k_vUeEGG}+3MEJ?>j-h02?azAwME3`jgACQ<>{XB7y zQ(NQj(1T&&m2-b}q*?$d=e}OfLDpIgyU(&?^UYoGnBla(|Cn-GE?N@tQZwWT&O$Ym znY!j(NY01jqHbopOXsancaHcc zz-;k&0U$e=^7pOGv*$yS2Z2)**3oPFZGx+v;>@C3|Lo{76PT7XH#zSco3RYOq$Dm8- zlZaJoL%7SvEndf!6qMIa4zld~aNF7~rM=i@#urzxS+9FqkpcGSYO!uiC#Cl|eyva^ zADAp^3CNl&39fHLpK~34=oR?Nwfo#%_t*bqR%tKM=tpd=!`zY*4{uq$GWj(tP@{aO zJgRnlhXsef{GFo5zDKDb-pKwF09!r)t>XJt4C4drdAVX4#VTg1{fK`u5-sDnuoX&M zVpq@iFHPpZckypsJt=?AaZlt)aM6MzA3gAu>7i^U9U>2(x{u8+X^Vm29_Er@~*JEEX{JA4}t?OtR7 z$;+kX<)G7x?pl2A<9(O7EVSWz>0(3M(Y~ES6b07^x8R-cfO3NCRY&@AhQMYN!zaLw zX3bh3y+8n?gO7WqBp4=eE{X@5ToI{`=yTOeSHeK?V!YJe(ekUh0>}MJ>pl4VlaIv9 zUkA)XEm`ZAua%L|`9pg0bXq8(X6P)lE315_p3NgMm3%1A_VyAWQu=Lb|JxM*4->!Drbx<_S=GTVAMnC6!fb*60~z9}>o(RHt!3 zp;H!ii~8dq=tVcbAmV8Kx~myn*}cGNL#)3tT?n?mkmgG%!^IQ8`!;gof-OVkSo_p7 zXOVDVF51PFK;^qjC|>ZTJBh|b%>g@|h*Wd%;rQFrKJ4CG{FOU=QGo7GwguJ2YmvE2 zfYhw?1b{#CUuDRXnVGDLPZO(G0pw2rp|H-~>ArsI!cCz=i2He{Ot!s7_NaH6-!GF@ zGf;!arqjrTf-?!^t#$?+M_>{>nq8+}Q|NFwa(VQG%twu@vmoS$ON)W#dxUK>)d1GTf*&E3v3KY$^o4 zI0ow8PHJI2G1m``xkt0}N5BF-`3yv}E9&!^_WauXwnpHk!$ z@n#IQwy;=3W4-#U=*2no#&o&`!E1ZgjD3FW&n?pzuxqS7q-#vrHNLEpK>d|{(NJGHfM)3f1xtZt+F?#-b3Vmk1-uVc8iuh$j0 z#UkpNcT@wBI%^Lz-PJ4beOio!k00Y!OX>M|B&x!vX1V5k;vzRnIBah;cZ6%B5x1yq~#y8>hTh+mKNr0UDrY z1sDED?BkzJsQP<>h~K;MGx_+-Sp6e`h@X1$KY?R;_E*y3|0U!j)1Qsr{}fjEO#pCZ2*N)wZl*t*D)sk_`}bD=C*%GxH2;Wk|J3mR3C0Z%fcT3* z{og^L{{4(%PNqK_iT^K*`}bfx>z__2=J?sTjo=#Zu0G)TKGi)vJ$Xtuo)AFmK0+%! zS$p@Xc@s921Cg>&9tETg0f3Hj@~A%ofIpi$_4fea_nxt{v;LlD@XPT1BLMJI=l&-E z04xCZF97)80RZbY?nbK{ZE&!10arn0EFueG#G-#+ zw>Z=fhR5@d*?>QrobZ1NAS7I_&zfJ0tWN)MA*ycA380^QKq)=7`Siue>T_Xr7ezeb z!!UyZ;sv?K9|6Rl&9M6O0P$n={sM@<0OH^Gp~Ur?1HILaWqAAf*X->SpHRiO>b(M= z3rw*Hh$)@v8?Tdi2mjqPMdp7pUHH2v&idcuWGTxcv$cN_6^M z9Nmp0p6Spm06>Egx&0pj#6Ocj{Jmp8FEM@@y}tnBFM#;B1_-TR0fO#t0O9Q$NU(>U zkwbO!nfbq5Vle-c8OGo3=)VgPaBYt}pRq-{e_3L%IX@9VU;gGn*rgHPrf?|DPwO#| zU;`>aW5X}Ef67u(s{U?C>Z~pUFS`5k&lpXiApfY06*5?=K(XFCXIH*oU}q zS6W@j0MnHFw6)hsZY@U}pKWd))>+O?NE~3~m^oj8Q){697$N>;EaiU}A$X5(>sfpc zenE&cfh#aV{9q{wy!#laejtQ-!1#z>TP-6bAfJld>W>iOU&K@Xgb;u6lz-Jm`uDDl z1m-E_{}VzS{5gd9m(i5}%}D1l*MoTqzR3MA2r=e)M*!{M2CMW$^es*j3=nmMTU5(! z?h-}-K>iiE`X2$rzlf*&j|Zxm|KchC0*HTefT%eD14J8`r{rTEvHr2j`25={W7x@r zcLnml-P zFXQ=-EIWSc?f(R30uBK8S9Zkzj_ioFrK{D|Yi2q{R9=lp$5#t|ZJrd4i}O{X?~X@U z|6bUWgX?Eb;+IOO3O{P1Dj3+BSlNTCjk5hl%ZXT9*@KVR{U|{CTTv2O6Jwx(u(i{# zWmVb136>mO%sLE;CU({zZH-LqczGE_o$SSx?7;;a!TaJ$;3Q(O!XGzOB;@C35Cf|O z9~V<*V)=3WH?3fi6D+d-ARNI)C#KB&<1G7cj=h*N3maJE__Y!uSjlg7TfurHWx<(} z;8VYSQBs!e$L+X&`yyCm{vrN0|AR$VLZ)9!w}I~h7TJG@zjYQYg4@8!_-j+aXW7B3 zI2nIe#ST`*$@se}c5n+h8GmikkBh-A#U?KxVd2Q zx6%$^@rNp=-&Jw^Q1uJ<`im-#AF9CP@yp17FaDv5`FB;EKU6XQu8Q-AD(1fp6nLma zY^`nnKR*{g|1Y@uOJy$b6Y@V(*uPb!{kh=gZv}OkIG8xuf6jAjai0&jY>1xZ8Gj6P z6C-xLwURE#br&T(0l1U$XNpb;HworDuUwr3rI1V|C-D@^u~Dn2xX{Y;;5`rQtP47~ zJ@9y(GzR8_TSkm2oljM0t@MI^&u>5#6;CXYdw^XoFp7E%& zYtnjHzH8w@RrPIpOn2PP@?cuo?Iz^@f#GR=V)@}(nwr5mFQM&zB7g6~TK!;{^UO-uYU_WMoTc0_&pn~x<~`iIcEJ2j<6`sU}(G>-Zl z`U{)Xxc3~(Pr~2Cx$Wr68(_GVJZbF~V>PDcO~TK)jiMrqw{9<|Y1%HYoq-(p^_$uT zbK6d`T7=Netr`8J@6N*bX~@RYT0I_RK4vo14D|Odr?=l;z&g%0KW76@?NPmxE9UcD zDrb<_ZvsCq%3OY9$-mj$T87K$*#gnCeIm2Xv7B%O|50b}LMZR(I*qw~%vT~J;zDTP zrlxw6=H`BLucy}{w{7dj;#SJwGYn)+bc9*>+ieSLamRh4hd_Jr-MaTnysuV-EXs=| zq;WnON)6R*tm_kN6b(gW1`Ay?=f4w?9+}Z;y@gV*fLJ`0O&=MVp?m#J(#T(IA$Gcq zBTg)h6$&~$Dty+R<;k;#E&{iE+Ib@KVqxW$O|@SpNoaF1esbAZs(1(d=rYsoiQMHS zt;0@$K*lt zRTlR(0<;@YnfC~d56f|ga@a*Ri9y@By=73nW%2_+ZMnrwNu96(suuXld`>Y3=g?RU zY@+0WnwR^-P|4+6m6=&N@@hy#77aykNkdU068Pc9ge}U`w1jjN)Aodu=CH0_vBjL2 z)a#xew-mdadr8s#dkc+pM;>BrW{n2Bf=SR`wa6vJ?THppK$;aYiHx*JnHETpxB6Nh zabkv-@)~($Dh`Qs@tl~T;Axqge>uCz6atxbz&VcjGSUu}LOph6?hKnDR7DaJBf&71 zgdSIe;#s;$-k49acW5!^u2;2&HlmmEI;N(ighluZG>E!2wUq*fq=rL_?er52+wB|G z>qigtK+WS0Y2dWQ{J4U&>rnE&q$JXFsfo`Jims-{azb#5zFi*UA#&9_WB$GK3Poi52(pt$BPrX&CYEYFv%gN+5;{B&HvaVv`1^6N z9ta_iH-ORP^uX9l%lY;onT4XdH~5wp+K?}%Ei6&EG_6r`&(jIa4cQLNu!mk8jW0Bx z`B$#Q7QN?YOMsn|d!G9kn@z{dMuo+@%u8Xh_+a-6+!St54kP5JFZEF`{XXEnq%t-G zjk^&wT~me%`Y>8$a`)>*CvTlfpXnrhAyxzT2N)poAN^TGvQlpI9PWHIH?hJxi!G=c zk2gN=dQv$6Q`wIWvfQiL-?=Xmjby?knoIEALL$7=6FM#Mt1d=V#3Jd8Y(*fVp<(Vh zL`r-{Y>|i!L&QcQq-X>xr6}zC(acjh9 z5u|`4WDPL6)o8ERzO;v(qs5||W@5&Ur_YpO#G>al;(+B&Ozzh#rtnhm;1_%JZRw!V zy(5e~CVHLELHNO?lNC3gWAtwudOpW{qOKj}d8`jE#RuT+;e*S3Z|8Y!RN#&!3Ce`l z>j>}$KDNWyGP$FSnoyx4j_kv#_pVe7p>jV;J)7|0ZG1FaA*$^gALSDc5Iy`Cp3MPil#SW7B9@Bh=6Bs5|hljRVBmWNditSnj!r*#lhdjV<7ec zjEwQIu7z-Vmhhe*)ph;P-fw0NrVOsQ1(X!5gHLWM$)tR(IpI3EA zl##_`mtJlWj96fS0WGcQ+}dj8_}fHY-EYb>aD}bFs^u9(x?v@T2lH>kL6ZCqqF$hQ zj`G&g?E$iVvRjq67=*xv*SUDXLA-Ubg6X5;B+c?!fhDb?hVS7fS4)-K01YCEZeT)KNa!bRg7 zI+QfX+YKsx{6!L_sp=D@+(e@W+nmhf&g(3@XSjyEG3U~SSq2hk0m&+gQdN>6Vk~(L zMeDAo2sP{~VxSjZiAy9cLU1t&dJU#guyU%35w}9b#;I|(FWb*$)*=Fc`Ap8W1VeKZ zUx^j)kC7l&7`-W0Yh}(@`|Mupo>pt;ZxtGvf6EQU!SYnmtne_3mY!}*TzT(e^Zb!~ zn}ksNP(|iK;zgOMp(+fvxcRrB?2avCW!5fa4^>uNCcCtkL$#f|Ov6>`rtE7HV;IpN z%gut{V-bkPSjtU&(5xM2dp62B^10Ee-ui3FD^+-Br4NzAm$?;zr32cUGFJs=wSC-M zB8Agz!b5%Raj}hIoGN{J)@gLr%(JI&xhfJiN};VRjo;|_7Vj#KX*i>= zvIluyZKPSCdJoXytIJ%HY7J52`J7W)%{Yv%e&)3751dC)XQeP(Pj zknFWgVxo{i1%A;)xB02vs%TU4fVJCC z&pE%`QkC~yya*Rvy9JV<>`^Qn!|hRMLw?$$NUig`c;Qv=kv)&+u?B@YEsyK0E&%aq zFF%a8B;z|TWl4sODaMriHDy`GclEyV48Yfm39+?XctPzSS5XMtCj@nKph`|`A&1uo zc!(H1?=_JyB&GQR`>ytDwk#=LSsF7Y$;2>D4DrtUq&+75*RfVwu1e!oshmocI!W;U zM6DshjTQD#vx|rzJC07bo<&STZOg7)B@mlG$;mZO_*WzBnShgv_g}}nV^N(ep(5#Q zsVeQ?d&;ZPMfO#ZMTzcgeZR!6w`@hVYAf%p*xQL^jR?J)b{=W1*Nd$?m)NDqC9lBW z+am6jiq3$+CnANBZEVoDaLqsMEGMf`fQ;Ye`ZjK6dks`(Z8XZnNdLy>Zl!In%lcUT zM)*61ng!X{g3~sZp?oCE=|b`OL$2KIi?B_ev6D*Dlyu$Rs7n~dW=t>h^%?*MPT4cS zsI^VV;C6xW!Hr@qe3WV=S1_nz4)c}iG9zl5DDeM*~x+c#uwg1 zl*N0<}=Y3D$DRNj5kdFVxxk5(uT?J1s~Wt|6dEkp=YOfbZ~{keK^RQ752PqkxFH zpnj^*QRnEKyZdjIhc$?j2A6aGks^sB3ZXq!uFveK6`w2%a9zlO#jATL2zg=Y`aofX8jV zC$3hczQ`)V9Y`q7hC8<}BNi{2yqkhMxi?g12&z@Jac2&rL)^{QotYNxP^mW>!iHLt zSt2xAG^h7FucSoe07J2e8oBDM7P?N0Af7>d2W6db$w$?w5AAmQlEgv#w?3PyJ`(#X zOIEMc3X!{x8hTi_pKcZe5U103Js>C5sEbD;LEcAMleYDYHsAa)qfgc;7CRHW~uP;Uo@-0`dIRseHx!%Ymc4 zH_m3*ZuQpHjrI(Wh=i6C_EOIj#XqpUSTj50O1xDHu08$+(hhQS1s6{krEMi(D}4x{ zAaVpA^c+9%JOqj8PDkXH3KER7oRdVpysbD7p`YNCv-eOmZnov}OHmE}uwY)P`&P4h zIaW16u7bcKKlc+&oLq{C0OUz^1DS911nXL4B$8(Uz z9;z=6$wXo!T(6RIA}A7vg|)|+-nS0HjjuUvh3aiUmvZvZHY`mhlYEk(?a9TIN04nB z!fY8dFsWEn^Qhh*i0Nw_Z*ZSOv_uQF2haoTz)QraK!T(vs(_?71^mWl;8fn~a=N?q(WAd^dYh ziq_YTNXT^zDS^-ou;tQix2I(4WXG36P45m|YbBo25`(93<(J%82Cn+Yf6^h_@}ENV zb0+eGIF1cO`o^smWYey)!Rb(?xDHgjp^~(G79Ev=NYl|iqGDFHSYa`Svv}QbO-W`- z8I_UPLLy+o?-*;`BR}MsTxf!?YSt2{Bb<1uM1_Jawvlg3sLV+Ss9<9$mgn%)o9po8)-(m9d+|uzxAL2$?!B{%!L)l({^{gg z=MEMhhcCYJVQ)s(Uq6+HkO9j@d@TGtp!n~soN_Stjkgq}H_=YpQx>c>-6kM*E!K~@ zx8K#qJNI-DY?i5Yv((St-jofZJ3q86E1z24UvCQDL6Lk19-k+$Qm1`9ozWQ4E;zWm z!Y$i+2QRmLyUpovxY2xRvDmjMI~{hkiCv;+)eAgrm|PgQleQ8s{Un_E;l3WbW@m3G zGb2N-#JToepN!tTtn>2rnYxT#E5DuiV*S@-mZn5bwkm;`z*BQq)BU5-C^CU*?YWm1 zqEgElpOzL}4qGB3s?ImhE@akq<@nC+8pc)~AGF(s-r-oQT;4TynYYFSoR==3KCGXG z+1BTr?4D^DZP?cI9%vaf;+oF~xE$WI_OOJl6>Zm6E!pmRyRY~?gD&2<+pz|vBps^C zTR_P$?e+!>-;Rxalnw_Lz}1##ZE3dgsa5u@R4qyF&4=9&9^UsgbGUwSS6InvKy^u^ zNYWwW<~R3zs^~l0ovC-MSx|Z?T@JFM8@YGcEo9vbOPu7fq$1xd|M=yhS2+yGwroDI z%wWg#t}$x;k*lcLVqx%lN7^$!Dq=73++<-xna^mQxRj@OBM;FkrS9VsOBil*RjTR! zHXpRr%*S_ni>EdtC+nphr=$+kozQ0&-LZ}R33`S3{#u>1=NI#KFP2BYOv_FWTU)!v zufNohtDmGV>sn%|@_aJ3(SZBgY4+uMj(T7xVNONRIiPn+><`TpXr9KOAb8+ zx>=ViU7o=|vN#sdH=1&$DC7{ky;BWF{)#ff*k*Ky8sU0!c7(#dRXS5^&%%8aH_{l> zz_T~j?^ZX|5Q=LTeKDm4wMDkR)gIZkkT$8@wV3Kyp*EhtlVjsy2YY6ar${=WF&&xgaS4M;Ygw7}KcVV^{JrueTNk7_g-?^%qD9EjoZ>OOT z?O0iC%FX68EL*AW`-``CE_^KR{keWcg6C^-#FH=s9|-a2^qdhML| zuFrO*1)nSdb|GuIZRvgbkTplwR!R#8$;EpI_m)}hgNyFrHj7aL^);;_0_#4yiM?r* zEmotQhp>!!*|>7Yfer!=m^IwJNc=0Z!z-@C{-(J_q@K+d3aXZ7)3fmVrB>%i75ps% z1s9fy!EFmPfzK#0YSc$wWc6n)14#r6a%~OV4G!}w)DueQCyOb538e(U=XbD=Id9g+ zFGbisF1%N8Z%Mh~U#6R#UNr4UQ=cx`yEa>C;YfJ0Wix7m)15wRKCkAmsd99$8=Q5y z5euA3iAm=3TwpX_&}hEsxk};MF;(L}pdBGyJQNKiF3Kizv~_0Cx3VwmSEk98xG#y+k(y%?w8 zV!%zgi)@xLFLgvsr=BqihSkL9lF?u)2KUmedhdRYZ~iY~d(Yn-x-`gSS!`jsn02eqi=^;?a8pIkv&RckNysPNz~-&{W(xb_*nT=O4&Eo zSG+8twLYiuSQiRz8Hs`+M{+zLi0eGElQ+hHi~=}dfhZu@{9I#spO z5o5APguLfa#MDjiK(ccgOM)Nd?o4qB&+(#ZJdD_Ov`OA0@8fFLIMCkQ$v~03turem z9}z|DsoEj``Sf57D%yLstrXL2cHBevSGBXnhz=EPLR)g4(g=?#i4BQ+IKQC z9#>bNA-*gBe*Ljh`j)(@l78$A8x)yf-)^*|qs-+@_41TC<7pyrHW*7|dTY;T8|Bb* zUU#3UMA~C1vYsJI8>&nJBno8AsY$=nBZ%k{l=ry7J~6u`>>R&mggkf)XnM(Vtb+L7aMq9Y_v;bu&-}T1nT_Ci8bF4*t>e@T^v-=s!C^zB( zBR;v40pXhhTVW{>hQJ=pwm3OR{YyctqdNiKnrG8E-OT)Z*DO_n8Y{c8knE|&jHw&m zDb3nr0p@Q@gKfP~#dj+Y2Cv$-4h)`{dPJRz+0jcApHRXS7aRhvRW4<3Qy{jQ`~jhi zyb5Gkn)V?$BuJsAO|e#QIfT2vrA$eCmDS~y<5yvvLLG#7dvgh^xGm4T?erSmYb|tY zTX1i%8R85s$K_WXu-}0Atg478jA@=rBgVN}gs{-mK#tOueco$+%6F5tRj0FGXHT)R z4Fyjgq~vO5keNzw!ac>m4vj}mNRW?kv^ycbzd!HdrPwPuxf3BHQQ`OYW*bQrOE+Tc zJ-W_QxM8W9q=Gcf;9T*HT1MFU3`M`GxV1C`3yZ^=}Tm z>`hj%&txyGjWdF{P7?(s>PS4Xy6S3>oy;b{p+|5$WEP>V4TO*Z8FEHz>fcM zX|S=l9;S7aMmi(^1w$^1Q* z*4B<}9~IlG_NZEFZ}~CN5HsZgcyYR1DDG^-*^Lr@IsJx*FCXd!EEfvq3I#+O=cq(J zBcuwv@n;y#ml{h8ny8Oft&iF<^)ZIA=y zoAyEs%_#dFh69;3x`kJ(5G7_K6wM)3+7*oxc12T*nIh?juhPhm%c8BfgkoQA)0j+C zaW$D~Yd2LsC=}?}X=W{6jjo^GpHEwK1P}_t9l>$vwz+?akqJ(Yn<<^{bP2Pon{^_i zY#?(_&>|P_m!aBd(Spw|SY@_j-f*xGVzLrXykiIQ@p}S`Gc1>^xpeoa4=MmR^>&QC z#}!}AbeQ`08awb0otnkTbYJ1o_W+-BuK(r|OA#7#H z;5J28@)Mq6K+!pA<$P|`<4xgL4t)K6xf!E8w+)#ew9`nRs z9xXrTdAH}t(Rmmy{#X(cq8pL?kL?#?|ba+!`56+9eO!dyuID`)Y=12rM@Qd z%r;)Fr+b?UCU69IMVD5PsRF;}Z9=bmg zO`siV!`<`c5El6oaF|f9vMX9!pDu-eYqBbMIGh}ja%31aZ+38(UOuq&eb|vru~w0J zyzStL#U@%Os>@ee#ub%UW8mkkwh_9hNZzP>T*^fYq`p9jxgMM5v*4RLH9#16#vw+K z_4xr=#`ws}GqipDiSZ*rOUI~L$jtPYhy{Wpxt0g=jj$B`9;7C0qRN@9HC22_jM zS9Hss%{TW)Sjl%N+Jd2M%R3|U(=IzXQYv9*yC?wbF5#Kk+nCh*IjT3}oTck8hz(r7 zkGPL5)%jl>T7p=uOhL`93o>SzhLdAq7ndeVaWA+am`R z4cME@Jwtbc){f5sRt%+!t=%5er%v_ecQhPujugW|tdh^OY3?QtHy(7oGN3bYAU8hO z#GJVju04kF%Fzjb6~&9RaKf6Q2yw}qG7P^mFWq&jS2Z7muZ`Rr$B-FuhrG%n!)T&h zNGx|DS$yGWOZlML56qdezh2Q0Z*{sVFn8xZ+JKRubcI~Wbcbr8^r4gzyhcTayO}yl zz{`e6Qk0pDm`qm_x@tfCvHcy>nr>!t|a#8H(Et~=9U zppw$c>k7LUQd!JlX)tDpfNz_)4NugCE@EEdRL;7q98`I`;`M}BRiVrT!AWY)1?K#U zEL90Kcio!6O&p36tM&M(1Qh25$P9n2oe%@L>!Qkh7^E(8g$pE=_T*7rtg!hBsrsz} z?-!g+>fTz%Qzo)Sf9*;Ja* z$TRhSQc_vLXTlgr-|R$tl_^UoU@%!1?e>Xo1l|c3x6{soG&tP-6++;-8j6NPoEoY< zAs-S9VHD1@*sRO2n(=-%IrYVEIudzobGl=V`ndd8n_mm5Z6b1bR!ox=w4H>LF&x7+ zhfmB<1DMYwWboo(eIgdKa}qXNbk{lYM;9^lUvg_t@)*Xv7bJH4;);dApUMM{r@&BK z)$`@{X7?5Z0lTF3vb{P4NdX_$CHe&E!vO&)kQjp>&3I+MYCfCz0P09b=MbJijs!W| zR6@O3>tKE3sxLU<|D^@;l@DPu5|K0-v}%?u7mW0}9dWiPoFI`U=cx1x>m4%%r4~1x zakJ;|eC$#lu$ThYtF1to!=2)Kpc6FR9!1|Twe-R0q!SWr_`oi5MrgAv4;gM;ow<>K zYT8QupkbhxPRv`z_W_ngX~Dz!Eu>VlTeP8+5c*0^-RxfZYXA&xeJpfD}L&$D2~b1 zE;zdxWh&t(6^1to?l~?*KD#f3UJ&i#8&lJJl?x zdSOf<0xE4GhICKBA{rl@pvexSeJ#z5NFFS{f$_Gd!~P=JjN}1F7p;RBGa!W6C%Keb zIM{~rozff5U1k3c;%^^9wOfeiB(N7hjl#T1`viSK$k)<}$-vWMyN?^4MhXXXAMLO3 zz0^*Lt`3Bi6yN81Nhmt^idaxOlBk!n%E^e21g%>iskeT(N56o1Ja@R2cvRWyZ>R)7wMj^Lg z2$?_&8G262#deDtT!-V}d``!05GJT3!bxtZl4lN=hdAI1 z%A3K;4nh^A{7#f8qmmy(3MabA)Rehf?E0JI}!K#v0GO~MXm~Bm@VTee+ zK1@a}+$EM5M28;ISpZS!gCy$m644gerxRM}T-ZF-57+jI7*rK>S+<$z9EXhdBKy0z z%nH7#21F98as_P#_ja*aI$dxAq%`U-&ES>N8EX9)YZR%RMt0C>Lbnx)mN~C*q;rlbUuY}3#%VYya4M_% zDWRnqntTeP3{Mp&mH<$Vzm@i)jz6JAfTJ)~B(35er)&}2J-3A-ThI_AGbD*DJf%oZ z5pEMQYZ_K44$@aka}Pjx8oM%lUtLu7X1h@I%M+w}s>zH?Bi)o#(IJm0b^dB&wf=W5 zoN;!4Lvv!#_j9G(R0qH!`ltpHPR+S(vh&#ZgcnTB;W;w+?GEAe3ns%uvy}xf=E)}K zM7LsefkYNkHI2#G;W^mE<{i5M3FcEA+|G4r#yA4ts-_e`v~M{i0aHdnuH4W1YC>8IgY73d zAW5TU^Y+4&?WaX?1<{0n&_Kj*wXbU}8>Hf*3W}RmLJDxTGWs${YSB|gCc_|2f^2t_(jN=M-{e?!08<;;28)tn+Mp!BR7kta55?)>wQ?Z5El#=^Tuw&MXjj z-`#kUP6e$>XE;F8vHzLZ>>Ehsa*IfM-ARSSluUE4Aol3j@p42_X+Wqq38u;Z`2|#0 zUx2U@NT}hPaw%^naoGix6SVMkj?RHW7z<4vA0<=rZ4l6mzfO&XaYznOc9E+lX0kKB z$s~JZK}~v125?&Epf54A$NfC8PubC(;p=_EHw(mh&$)Z}U;=B&;#%YFE~Gh9VA|n9(hY+B41Ki>z}B4vNOl$D2&)p7 zC$|t4!34#U6v3!1H%+qwj30871FY6uMU^BITe1r=mKSJ}%@Ooo$~x=39l>~BvUe`C z`hqFn3_-N!EZB79y7H@nXcZdvLXmmDDl%6=a#+x~f(q0Xg3tuUbI2oBSxiXT35>?h zLpIsGI%>Iz_xdnRFdY|funY70NR#9yj19hzu{s@Rx#S|+>X_eAMkc`OLll@71_xc_ z^}`hJVaCd4CteMIo|TCA>G}+j-DHu?Wv}r*06Cnlvd-eWac2q}03>S&wZi!Z={1vu z*P#A%b;x={iVl>Zi|BrG80lDp;q=OeD6M#f1*(YXbJVY&A&B$*Ua`k%b8(!)nfWr*~4or(OO|Dj9>~zuKrjlRm#L4PZY5@CTg79Vs%wUL9cr=cfl`Gia%%Y-W z1TLA>+dmUe!2TllT&~IGvWbrqb8|TMYkbu+HeEPtYAx7Q<8)e>%+DRd$M(FEzEDhFQrD=5 ze>^N+3aaL=38bC#G7r3%lPKIdCOQtEm0acZW@Ncp#LV|pY(&^5wLKT>k8M&wC&9?F z%3TBLnNV#q1wvQUDn=i8n#)T18sO4>>NKG#q-bzKCa}3y1TTGFZ!0l%3G&5)6YiQY zZRfxVclexnC&yxxz0NamdU%1KUT)7UVkx{JcuJM>+E{~!u!Z~BCM{ipWKlY4gonoM zXC$^M$B|Cta2KMz+Vb`^>orZhbIp*D52+G4^P%lQYwlqI{J>!QO zVrMf$mjseE(n9os-MwbyOL2bMZi}hJ#@U6U`T`eRGf}kQB1aX)Rr;bO6-ob$0vEtJ zEX%1Ep9!$|KrOoXhwYj7}%L;$d}#J%jNN&Fu=xROO+%+)CU=J2V(H<-t#`b?yg5bHw+ zx%aGI>P&L@VSxriELD4f4!&ZE>>`GwCq%j>j?J9!(he>vas(IRq&T=J_W@06J8)Ur zJS&tM^Rh5M*uT_Xxw1S?OqPwGl&^t?9w@6vjC#IU__8;v|AAgv3ww&WxJUEINz?&~ zH=D>;vwCKz?p$7Kgx>2~anEg|DT?@U3I=FE7$^IR@cyj@3fJ{*I)lGsv74;hhp{o@ z0~SrXH0f(Y5_nv){BH;!wcLgTc`fM!6^^8$FdLKoz;WL?%u)m*-0Hv`iA}<2V^f$Y zQqmw&?EI;l$16h^D|lk(-M2(a+;8CgyJL#plCCz<29rioMhk{ZG%hnBs_SJ-X!4Oq zhpX-TglN0rM{Nj%OVI18)(@*UpWD2yb#h+gj=Q_FZyFdIdQuG|-Z4+!@}zM^l2JW&+l&IHBmXBHbDzZ8+p zpY^tNw9o83@1!v-Y>{`UAY0^4L0)zK+&lducOsdZayVrksRFb&c^0HgX#R3}XM>}C ze)V#B)!Po&X)dI(LM>anT>FiSXr;0VnJFp0bD1=Xq&@pqq6nbCmsCUsqEfvYQMX8L z%o~WS6FEvz>5Nolw$LVijrP8JGIs!pquG}T#v7~DgPdsE$b8Am>iTK4~ z^DHo|I{afYd9Eo^bqa`nV4?2F9;aLthGD@(l+DS~iiRGv-v3-edp3+Xg|4y^_uWTM zlRl5GxW#tan9r3^YibT6(*`o@8gXO6dmB?Kvs7=@tnyWLXQ@;!o8DTQs1KCjTePfC zR$WFDXx!F7EVSi&Pd#-*$DkR-_C+x&HeKB>;lBb_?(Xh*M-d;1t-~Q#FLXoGjJ-0c zK_Ky`zH;@@2h|Kt#z2xpoC`3H50fXxSP`TrqK8voANmUv5t8Dmj9TE;i61ftp;`FP zh&8Dgr<@3XI-EjGqfc7f;=|MXI^=2_j>dje%p-InfVimYS2I*pap~%@SR$#8JlMUJ zo_BTo*011rl@T*h2aOxA8(mpFimMhWzVJ)%eG$zpIZ&7S2Cq5wH1{}q@7q_Lz0of_ zv)VX%gQhg_R3BBfBqfG$$Ks$T*e^heg^pYx|1ykKpW?o=gUiH9*IN1zID>pfzRH*H zsG~|bzlXf&fM_oy^W(Vq39h{6RWp;Jdq#sdzSYuU{=0h4wMw#$qH!4;nu&wS@ z-4re;Y#W*~y2G5SYNqYdiZ!Q7C<)S>@TZd_H2k18yWjei^a!Ob;v0T{V&#qNZc?RC ziG8H2dCprU)AR`OGi@pRt%h&rTh5->EikSN;DJ<1 zT$y_Jg|d#HL~QPM@L>s(#QVHmLKu%EiXZWH#<+?JN~k?q<0Q~7^qxhnoWqs7x}bR@ z9p-S${FH*M>Cp<8+ZQu0f%^ljaLBau>lP#Hfbn8~B+0ZcEh5R+{aT`uX~T$Ql66u3 z3JKkbX9UNjYlxeYU)5wLf=FcT@aAe_C-_Tuj@wxd*k$Cecy-cqipQ`MX^^v!iN(F& zgxdnBNamT> zORDatOL|nTyQ_aU=(Hm4Dw_(nGt3V)370E!u z0RnswWZPtrV?`vQZ!v{>6hsb;N^;9SjKCi_Yo41uqrMx;R}7s!a3<&){XtGUwX%*c z-2IA8GMY*(%^v1Zy6$i6IEIG_2x!J7E79T!Tv3dU>YMep)F37DZ&KfyDj)wVD&cAL zE7hLNdM0ivEs{G05L#T}OSdVQy|{E{z9`sMOd3YMnz`He!h~13FCI#^eTH4y7PI?> zN0hI$L$1jw=|)rr^PAPj=+VqZ<-D&v(}JisX~=Vf+!eo?G?)|E%;{?RhuTj$(m6JT z2+k#tY6U!1IGK^f?u`k2u}t=Y5DoW&1O|r@Fz&>}O{lca?aWLOX;CLOe%3_#A=+S* z;`kT;FwAKR5-54g&67N8;gw17LRn+kPJCZdoX+&Ezba^lHgS+}L3g}4#uHDfLAD>B z)Qb2Sb8h(^|KPGZL^0}xsOicOQ~``$i0a(PUx@D8&jM7jn~?SI7I{K<64xVtN3Cwn z3+Ua{^nWHIvV(+u!)N!M+$b(RTzz_c!AOTEV{^ig4MIDt+kWe$l`P?Kx90Uqbk+31 z_G>*E(6{t1+1(;vL zrQ{rw0k8Nv|4I>25vIjh_sv=9D(&xA^Zc^IL09v3>W0*gKj|~SCiGbDMqQ^Aj$HEe zvtX~QD{Zb@{c0V@QQH~YVnoCKxa<}ANF=h9M#HnDTat}>A3wL@)ZA8e5K~rIcoom@ zj=B?s7;}0FgDZJ%p1zNnc(6&BB0b-J>|DoVS4%uIiC0?kW>X6~bB7U4J!fW^@gg3* z{WUZ<NR?sqPbzx2r`?^QRc#!KA<-{6WMAy@p@7ay=6Bq3t3jk`1y88*O#=| z0w3<(gOb=8(TL}tc_MWyH8F8)0LMqdqSGk-1(FBFu0@w^ab?;5QdwM_dnCz2bP zh?WP8K}fV0pJFB)J2-Z~+0@C`J8+tk80zI3d1{xP2Jh?-Y7+E}z_)^V!_-l?hA;&) z&(7^j2gCfctdj654Hgx2M%f6X(%8>}znFcw>|Wv{V0+T@0XIXd0!agG9+}#n^ZkOf zI>*vG2S!Nqk{nK;hyEi3HNbw|d32-bq&+4~-tHpbww$9Y9eLz7p>rzK;i

J^cxw z-Tpzu9bAh<2t+8o^lN$cISCkkKe2VuVikgQaKifjV+PNq5&6&1AFAEmkN#V>-dnao ztFjjkp;7l?*=kyY_h-DG{iu}HM&jtI7u7t*jyWb(+gv8NSKA_mlF&?2em%0~;O&pH z*EMaRE~-gp0@{bk_Lqp6*K+-jXHD3#dBT#`8Ft84N)(cJkFs~MJwn(SadlRC>8K=H zxGGeZH+1Qr^~sWX=911b8^+B|AI9RE3T;D?W&=h^1tYKRBnpUq*vkd;5sIX|qggF4 z?Wo#4;KZU|UGFq*;hd6*F1Cl!W6HMP!1vW>4py+W0qjg=Bv{xpiK}6+WG-p8&v5+f z0a7T}ld4-2MQ{*4XpX(>x8iTAku*2N@ZKuXIIll5Bzg-ncg6N709ItOU!CGC3`I84 zkdlnlkF9G}nk?Hn$OH0&C8&RsdEb5$HYjS$d(6z-*5!&N%+5Ydvt?8WdEU|J@Xg%5 zMW|(4ERd4qp1bP_Xdu5+960}3&#BKSY8zDcI)t>6bRLJq|NSeha;>CRWn%eoFl{^y zeOoO8=N#+TAJBh_OumpAt^d~Q=aT!p6kJ4eNu^*v2tnUCgB76Bp8s4nXrpkyt4mH7 z3XE)@+jSgFgI4)59XgUx9>dAyQ8VAsRs(!1v$RX|8$0x$@>J1P@k`O`gr1;Ua{2D$ zbC;MP|N+@U;q!fZ)8eB2Kdg1MI;y(pyTJ>z79R7qLS+v5)&Swxb?I*U>H)_Bxd=q?(NvZ=B1jd z_>^@M$7x&MnB36`MHAitRSGy^nYdC)BPejbW50}g(-^5cwQeP)&y$ievD=qbyJ5fSzB6lCN>2I*LG+q@8uLOpXpqt(CIQLzve2Y z{N|Qc$T_cGWxnW|pSIjmJdB6vyi9;EH|9qBhrucCd72!&*?ZP4sBKx6TNKC9of9qp z=VB~X=Dyf1u|$q0K?>+j4n(mOvaj(TK_O;u&V-qR+fbMLUqYOC9fH#S!lQLkh<&70_R~g4jf% zeqow0K0FELd4h>Ai*drN>?TPLkrUSQjUFLBjLfr(Fw|FfJ3EOX(NjZP-=%{m#uD=p zR$TS1d?g;eimN!-G^+h&Ai^3rm-k52XGU|>FJavYC61T^q&bGbYyA$kpaLc}D;C^5 zYr3KDrGp(S@@>mR`JkT<6Y^9Cg{PNU+<<-HhPvMKzI41xV~Y#zCzO~G-)p=MOL3Xe zsDY8Kdd5Ay{iG%bN-&sZQL&_7hN0(`8!-yL-N1&k-WZ+rgRdfg8%aSIL&98m!FO1` zKG6S=Fi3@h>z;>DKe4^VVZ%b=cjH`b^2)RlS{`fVgXT<8ER-8#X-4C^D7tX}U&TYm za&5KA%ZSoN`;<>$P;qm6m#UGD&_zPZi7&{P600pKb)$BSnIR5jl=HtFb(>KczxwXd z4Wdg&n>bDm9V>F)P^%N|@46t$uk6FRlJn0-(e?6L>S`X7B==r{iJQa33#yF5Q1}nA zLd$fj>yCNH!H;$_nJOEtFwaV^XKLrvA{~3qpsD~HqX)*z#i0)o^AjM? z85Hh5Dp7u0X;Iy;tf7+domXa^p6F`veU|#u+~A3h5Q~@A$JSWj(SdA7{P#8KTClS0 zKr`vsRTgQ!JLV@5PE^Z!ZeUiYuy6mc*t$7Uf$Ina?3kXpCrV9+mqPkFEFF2#%%#pR zc=IkPu)-(zlfvYo1U4ep$(Xlc%w<@znq1?w6};lIrzKQlYh7&CK5HVCYb^yktNa)1 za!=tQCt5nRv_ZKC$kwDV*n`wc>|Q?BA>0nRD$+p`U{TeHn0Bo#-mzh{Ax`KXacgm5 zz61ad;fuoD7Jd}rc3$7ByR zGG<_@{Ix)4>6_qXXhzXmm7TE~`A#IroGgR%)mX=?$43#v<1!g>wP{v~nPU4H`?BD| zOWT%du4rX#f7kw~A65L#kQ~tgMjFM)H+ZXi%Hk@;{dmJ*3sX*PRGxc=Q4H9zFnYW? z;HJl2sr!hQOkuL-sSmJI{Y*bD7YvBfdEut^ZnkNtOEu04+i#EUGW_u~@T+A6{Za3d zv-a|g)O$$4n8uyp_K#=p>fDlO&;xYw$U zFHlh%BjKiKA@6gn;)*cuQAHYiV}6wtdIzdkK9N2eUYYPa*7LKKBv+A|&e?uSsiHAO zF$WT;do6OzK@VdO*98Ltw2}cu$Zajh3{kleh53q({7&dG6|K?MaY{?_I&HShpNpy6 z^P!BcTyDuKk>eK%+k&~Cm6KA7fM!NzoG(O6Cr(-u1Z&k6>&(1|ZI7eGZH_!Qh?UJw zbP~aeyjn+8Z&GG$alA8GRreFKB|jico@b>4nEQvjdQ*eW48Q&SE+X8PJ?aGWd*5Si zm*bnCbs%0nKRalmckT=2!0RM8R=r&Bx3QaYFw4LhB!!}{qNgdT9mT)bYqWqC*P}d9 zJ7IoKc{gmSi^;-)lAcuw^lMPLKrgeI5DQC&to(}GUQv_`J*Ugs(U)e&AM z#$P@bDLQJVM6htYA36h@&xP%PR!x=hEgpGGmhRgkD@&9)sU;jP$fApsNTNi=gCqJF^9o=k==*6x6 z!qfZ>RP%TA3%!b&p`$6$Kg9pP0(=Pp4B}t#rT;zPOaFm49rIt z+@o3ko0+Qro+pg|KlA$q8lDXTj9D6v{-5RdUkJeew(jS>p@ zivtR3{dZ_6h~5fX{WnS|;4h>o^M8#J%JQG1gfcU*vorjos&Lx5Qf4e3_syAp&}DG} zvVLU(2E~7LxQySw^{bN~L5`d(vyhnMNuG|*`_jP=jbZNj% z!#u`ODp0+Nq#Q*-#!Er=!2P;ZcKJ9H$igy_qAAOH$H;`0EK%Gg=pcQux64njd_;%r zzC2)mhXR^I8v&fd;|@&NGW|4d?(hboAnEJ{qoCmO3LY1KkZb=wg8Xs&+vh5KzhPO@ zi~b<}wrlr-{?>)yZ8k;-!N(%YhbQbIm}$?;9{QjjUD{`gWmth7@Iq?V`f-Qcf=r6U4VP8H@LjK0B?sP~bD*Ny zjwI_xKc}UhbUD2zWECCjKVk!Cl zKXWDz)-R|Z9QkTL`(5{gd0VJHc7=Q$wn!( z%E1cCeG`TgX{MF zHkrxS78o^F#MOXPoM7Yg6l0^^EFpr4>=9Vf2cpKnScJYAV)3Jvz2<0*%y~PD1x`A{ zTFtL>4<=_zl>#0<>2|9m_lX6Nfs4iB#JEF)T>-bC5(z3&1{>lPSFdiO_lZ)FUVqc}#q+F7zl$JIM4u-Ufh`rjAuC_bOG+K_v6Wip;V zexuC&S~|#16l-I~`}A#D+{f#3>^8i5tA~9`Iyrpf=TEKhw`$}rwFxikWE=B}OtY61 z7SR&|H)8{76dJUqG~=DG0D2V4yFEc}%ZfW@Gg6g&*6+9$!YJDKxc+xRbJB&&*m@eD zYx&XL3gDwCNtEjoueX?hY-J>=7RQ2M>OOe7 zlW_!*c?pWO(X{A3193i2R7i5>rh7zwND>H{Rek*KnO)NX4f`wHe3>Fx3JO7!XFdm2 zYg7dfRTvZ1BmEG#<>TO$p8)=mrq2k4#Sn(F;C}s|3gXA0p_K7~@{P0m0`>i!P43Y=ydi#@%}5}}vL{l}`a&;v2Q4KQ$wt=dD8`4T zwf*uPD&OutzXYh5ZyHxUq?<+)w7LONK?S=7?w7+%acPWl@1t%bPIZORUeWZv!|b5+ zNv;hgj5SquN;yZP>^hKalm0p}T4CwBn-xs3Z z_Q*~d{iH`bE93lPCe--x595J<(vPY4s|?{@aH!Qry5?|7rZ?#4)CbN|n;blR-1eR* zBKrT}H8?B0Oip_@HH?HL8CwpSt39O}oFvz%H+jKXQ!3aW-L}@UjpmBbd{4G<`j)y8 zL|0IWna8zj%DJLWD{Z1-F*K96~~OjzKfN zc~mR^P+O?AmNu;6NxW4G|9vxz>^HdYq9!6HR9?KwQsss@-gAye`iJsqk>&Y;M?(H6 zb=}cuRiNMQ7DfGe!axVIa-)Nkos@J#*mZRzfj`?;rTDBDX1NWM#}c~8Z0tJJ_qq*h=BZ3L-g=L{3oQKbjoz`o)_0 z><0PKL)1g{7trKSO}7XP*YX>A2((&A2**jhg|*3-V>(u)+8!)ly8yT8tLnGyYe`%i zDe33B_03^k>GOlfeNDCj43eNPcf0ZCl@rRTNRzShA%6`noKS@vQKs(_A)pW5sWBA8 zoHiAstO4{0f`H+6K>>Nf%Q0a0&sLcJqD%yoJ~Y}Q+ei)v4YKpbvz^c4aVC^Djv}LO;4Q4r-cfa{8vEnx#E&%;-wIK`M z@!4`M6CUwz_2{sX<3@G@b++CN=4&V~A-BZp*|{pw4Avp2_TVG~oaz#tVATis73hpM z-8Fj}H{Z$X(8!(n5Kzr43#-&N#rt_5J({qq-wN%ySp70NM1DtJ^LPH-IQY@?vS^Ji zZXcb}J;ic*V#%WP;+!6~MH-;sO+B@~7MuY2hj!)|V+Gpfm)x>px3vt*d=Zj`WtKHL+?;%>9FBSUuHfTh1s-7E#Wa=)!RW5{ z)L;T(-O_f|)KZDSCdT16SAUjUK};4RE2dk3QK>OChe9ZqVs06Ca~%;)AAToP=ER5f z>iks+jiv#+DNV+?tP>AZyUloCB!;5l9;TmRk2*5rvM-PqBp1Cp!@%JbD-Z@NnosPp zhF#%Sr?(2BSzvJ%G`{N_>-p3kM`$mHEJ)rLG%5Gcz+rq%(K=e88swt#*>^Z8hy}Xf z^MDjsr>imAv`vgYlH;;UZ{*cy#tS^!-cf44UMai*+}1v+(@u;DDX}fs(GL5eQA9v! zYA%|-v1y5iI)mx>BJU?@HHL7iC>-H&V7_%cDnw~o0`%Qx+q9axK2wGy&`*-oV{ngF zfDPP05%Lppvy_Q%6rExO##?X^u75+AxgPy@h0-I+=49W5KYf{+WCN*+oD$=f{mUT} z;pTZblA8NbRSAnb${GfF9`HQNJel8ppDK2}Js7V%#ph!W_W}81FXSTyCgFNTtYK0! z5t*IZa@<4m3in~u`}u_R_G63Qr%*P1)jwW~R}-;JKl zy{^t8*sifNfe1_GMd;%!&)k`O$`nN`^CuPt`kxeX=PJ~ z%F=jy=yu~eNp=XG1Ct(c2%Q&_9dS5Tz5;&K+qgS-2jzs?$q0EEmFT;^C>ND5D`t`? z(=xqS+}%C%cEUVXy;lmRa7_NiY$NLOhZE~8|0(R5W&V!c7lL%5SG!M@%p5~1P_-6; zecMoo`qEeH@}0a$5|+tCVUH`wY1>+kbbWZ!IDq~i8j|r6D)(?C*ESn1%sw3UB2_Qd zhgHZeOB{<=!Rp3u7{#MeLC{smzq!7gy?&8K$KJnebcFTf-f1?VEyOs{6*R_7_cSFT zcnQ$D`Ne6Vr~lo&LbrndjzHO!TgZ!J44Jb$znnJi`T95SpH3}mM-hucsYb^(2-zRR z@PphJb=YR^zcVh}veW9>M7B~Xy7Lh06Q8>aKgbdZAp>^w?Itx$PYwvS9Xz4Di2z>6_UTdkhW}WN0y4IJ zg0BY2M*KpQut1zOpSNx_LX6cOb%m8Yxe=e$IlH~juvh+t)=%0MuW>`&Z?ojBY4l)S zByA+8x!s2R!MT~u(Z(ft(+qU@D&}c*e5S;LIJh;w zThyX{clRqR9%+$A%zp&4A4b}ZR3fq;j@B45p_PkPqANaaX_cBgykfHE9Kd_)EWj{7 z^7LD4bOee;g8hM^b->QO(-sk%Nk*2)fQy_atdk?uqV0uQP}s~|Z>X{YI8*6zgE4p! z+O2(E_(4Z_7-xUikw<=SzuL!Yq8WswHea8l^_*Y$R$!!Ku9dnXT6$l{uhCVZupOB$ z;WH@Ug*Z3+WLn~`ez@LfvU?ebeDChyg?oy9@XWjDFYq^ zahGG_f+X)gNuE7wqdVigN6}065pWv>`q!}{JqAPE*jDeDM^rQKWxldU99Jd&Tnyz4+r$4oD;W#X6@KB*sx3mF(2-yQxl)M=6*#Z`1THj zg0X=sor{Bi4PH^lMBbT4URYnNs77-oxk# z8w8(Tg*QB&Y3g)ngITJ5#0}3_2j5x=?V#34`Jz>xYQz|aPHYZatK~M(9fK&Ni(Z9k zXxC2^Mrg8}&UOv+VtlWMgp>G27ZDXdy{K`6bjyj2z4D0@a5hW&Qv)b&&3(shgYTCP ztlv*{B*>l+rHhoZANr(VSHV`(i>k|ajx=eGVaO=Abin-E%@!rjNS(Lo)iQFI5?1;I zQYXy!W?)~Sl%3xe=aa4&&Oo(d7>i=ed7^o$R|`TW$UXsXI!N=~RF%-Nsu`J;ae7}M z{!Nb=si0*RQy*t7jpSTE32W@Pj9d#h>uA@~YoW-`FW;}Q=xN+j>C-N;RNCPp zAkg4xg>-`UL=dx(f5G|-DJ!6m)fF^hk)d>yW07%mqKcMBa(t8B9qhOW4vn2&5k+O3 zR^L}(B+(5;SlW78_D^6HjtnRAx>PBN)9#EwXT<%M`Pq#!O|+^lIj>&TTWpFX{YC;+ zA7B`pM>41=y9qixvUQ1UZRhj7j)-sRw2dQ=iRe*+65Dc2r~G)tp3l zA6q3!YzouxmR!Mb+$oP-f_;E@3T+Lsy)g|dtT#DV+H{f)NzP9yzo>?W&O*Grk&Z~`$oUhuP=Omal*-8IogDUdt1YzYbtTD+AdD_M`ivlSx*0z* z#_HrHTA!Y71_7s-EI%^7Ax3oweAR{soB$pHJ%4)O@=yP zcVzdHtfgis(E2mhEz0?IBj|O9YAEi&bPwi3Voggaeq^OCgUwqMAjU099?5J@h`F1T zNkSotLX#2~cBuxnj1bcKXG%W}xiG>MG$oNVf|2}vx#lt02oU3dOlJ0a&2r z7$hTUfyG!$RJaOGD0y(;lCeZ! zP(F8@*>aISvm$nc)9T)j&6?8iN3$$N)#-!jw4a$IfAaQ{Q{+~h&6*;kbL+Rrb|Z5t z;s@etQ)wmRe1B*i5Cw9O?7Dx9OyaTqo`g^T)amwkaEbv*oMEy;H>1z~$9m4tPExTz z(()_y>=VJ7X&Z)@#<0M1O&Up|QkS$~Dk@8}GR)#72Om@KiU(g}B_DjudARs!h$R0PcGRomqt`}a~d>}+Eo3CG+#2d{yv zZJ5$pm3CqKqZ7L#3ywO^g*$OkY(dfF(dbA(CREG|?Ubx_3$^U3_womuewpJ)^-NN= zM?a$S#e6O(he8_r>46oMj}T84TzJnN|AVj`kCyz;G^V!^6SNr$200*^mP&MiT^u-1 zTNhqYrH(j1eL6$7p49ifyS$~MjDNwj9es+RO+UjdB6x~iZA23IO-!w4n3zlzz^7hg z?|ZAerz_p=pD0+qs=J3rcBZ>WBnz*MRGAcz7@$C@3cw!!-7^ec*O3@t1jMPp zqgnR=H5}F5+vITLq^5A_`@(F0on(c}Y+oaqV?TQ0W7!8o8p4L@9~&?hf*OfORAyfU z*7=DPW)N0noPQWe1PMYpL3bA~P-WG47fgPS-|RFCD#`)no`XHg0hkpK3t0dST43@A z?KdDcek-03v<=#?0PN;f(CSl~KWIl*v!KP0$Eoz#_<{E2{5nFw_q33Dd#0w=fW&yG zfaQve)qb^gM1L1-~#19tR33J(WTWVTnl+s(n}{Lk(p8 z#PP{w&(PV?Rv8Hz22L5NsqQDJPZL1Be>-rmjC2+XLk-iuKcfKvbFQ(sk6r64x3@*0 zQU$aQ!atVbxe7v49}qP{Q^O2igWmiin)!3ktoH;jP#6&u41v>l>avO)V1Qtde@7Qv z%m2^NMcqR_Jj{$M=$L@}QFxqZhwFnwDc<$$_O>E*ol)_2>5W4!Y5pt#Y!qAygAEn3 z98=at^eJ{NRKU}e8I`;)_&mFMz2)LVZWKi->cRAvbTW85XKp-o^DUbwjuxwW(U=5+ z5vm0E5h_jtg`jwh*w6e}Eev$!zPCBH-&a-SI09XRAUDUXmM0lmZHyN@;%HY^#s)3I zrGzJa;;af46 z(*v#a`ZAmPw*~!%b(T+=)Kh?x-15d7f-np0(BiQ@lw&R0X~Bg!TjI+ox&%afPoi!J z_$Y;1d8;G(1d$SiYi8YkPZ3T5EtFmfEZDEm&=cSA8^8)wO?&o;*l;VgY6#5u+=}q#KcvU--gMtNCq?E75QJ1L1Tw^)fMM=b^g1`#a zf|JV*))~wc`YxMM<9;Oo*5b5se!`zMLc%?1ZcX1jVTNNplris1Afj2B*kS{ z9GpZ9Ko{u`4M^b9UoF8qW!b5(F^H-T&b0CTd1|&*qPHmmw!j2KNj)3UvNhuI3ANXP zmiXcm?E*m{&FqNWXS-fjjFyMb2k1iPG{@=wsxhj^@%6BH=3mG$TTj2izY5EId!SI) zG$$6#L5 z{oydYKy!3cs!C&;E;}d8gbebig|skWWMBiJ<2yk5F(ZlY%|(+yh`V;Lb3%lK3%f*_MndT43Bt@c zloyzhu|IT9I+PWYWrBY6P?qj{XOZg$@9M*|8 z;RYIBcC+Yk)fTs$V8roS*lh~yUY#w@U0yR_1q_vBD6)?R(n9Yl$@WmBz<;usXwxa&#*;o_7i8dmhvZ{2X(jJSs z+7WZMB=wU&&iRu(QFpyOIG0ufMeRmEfG_eDwb5^VbW? zL(?!C*reg@`gP4*_NQ4q!;rhxc$`GvCzK_A3gBV6?k#Rx;v&c8B+*xds$(P+= zq#MgA3gMi9X1@{#<4mW<@%NzhU+GaayVCna{ZTD!J5O7VAzb4KwB@$p*C&-6@o-!6 zW~@HDQ)zwqtg|gHS}hzEgedKjKBhVvnPm3okneqdG3O7*(D;EA#5#Ze^#R(VOkM z%DVX3ToriFJ?bWHTwS@;a@pffsoFwdK4peAdU=Nfs!1K>zJ}bDxOh=ysOI4cGxB1lw5pDQAjQ%pojC_GgG+%#(h{P_LzR4Bs(R=kPlKCfP+bj8He5G9RdJ-?2`r}CrNH{&6P+sEYhB@fJ|Vg#r0zZ+TqN;defx$cS{G3c6rivA2)7{toSi zSF~3v_%x1pm=lwUn+w2rS))c@1+%;!fZF1cfaFSDVL|y zMECb-ZHX2$>~dG`G`G!t75PX)UANpJBT3SI&%!i7+)4d#a-j~~kF%sLK_`3vq z=X@vnh;u*6g3q(@h)ej>)%EM%e2KR&DQSA&bQd4xZO>}7+*9p4RnKokx%dshlNA<3 zcku@gx|G5EGpOy=&qfF6cvR=iq=KRVEFHgc#gdcId{_S1B zve#mr`#Rg-$ok&&h7$4!|!N-jKpgdpe%5YWVPmp8n3a;oejj5puq zQM?$$tYquw*EJ!C%#5^kb-EvdE~M~69no(LZRm(;d-o7)vvbwRu6n6FJtV>9#as$2 z*Gci!f9sa3GwD23hvx4@@A5tWi3Tx17D!*B9zK&ai)eK#N{+WX!rn(eqa)E0I%Os< zlNa4Rh!ntd=G`JJQvkdRNPxQ(C3fxefBM_hSJ`8)mY)_U3*tz{)B3Q^3D^Ij7?su+qeBV<;Rt$~Z zdDM?fi@R<1y71vKx%|hTQr2+7^}(xc_Pzq7P>$5Wu-VO4 za$rj$(cQre#56SpFv07Up;7)6NVCDxz*MwgPyyPU=qyZ8>OS{G(+YnOiky=K+Uz>S zFcC|>bf{JqDM!&)m<+4_Y3CP9Pwtjxk#4s6)n>X^v=LUmwTXR8$$lb@g!en!qh7mX z2NDm4 zem}?82v5*zf?+;)appQZP7yRW4L4L;oeV97!5lsB-Map3(A+WXZA#;$KE%i@=;NwT zNbDlx8wsE7M|W9(u}(Mmyri0YbaG5GUjM-4or}EF2^EbLMrR~7fV&FtOy=L-?K8Fi zn(<;+3}w^;VM~>+jd~}HB%vKX|3dnElppynpFv_$P%E37UE&<5m@4XWaf zejOay;A;FBew+A;sKy6qil|cuN~rhjA&e0k>c7iL0-v?{F^CIX;mSfGVm*|g4vJ9~ zQH2Fy%R>EeT$O~T2K}i7guZ2i*J1~J69^naW0~44Cd~LI@GGC_3g&PGIedy-EH^5h zaTQS}%@om{a?~s@paGv{ihnj5Q`!-z25PS#w0&Ex6Wwg9 zFUAlz42HHlYJG-sib`?tmBvWc5>`uk@~aC3>aT))W|htQQq zN8O}xf#osNMNR2ib1LEellk%?Sx7w=kWS^mRpUsp)^A{0+IAW*n(C~l9$DY@8CX+V zMj9;SS!GNZ-LH1sz{QkOO(IX0e!Z`7H){7|R)+!VNyxc>G_Z$umR@IZ^KEpzl9My z_+>Rv>M&B#npCmbz8`)gHrBM=HSa(!)L(JyT9Pa;Wooqh%11z~*5LhB$kmR|Vo39> z0Yq_{U^mY_v>iixI!8L9iS@Xs8F+!en+WT=tVZeOHS()wQrK0IHMWkwHg^+zulc+ zGC|(3DS*MB0jYxJnl}5J9i7n3Fk;BYNVG`-sgMOQ%m+l&Fra5X8_U>Gwdn7IsrHNl z#AJI$!4>>d12*BvQvm2P#3=xnA=VTCpCx~t+lyW@he+9-#DKh4wmLm>qeRd2n`wp1 z-fzezbu33I(on0fcQBI@s*LFH=jVwq>*ogB(W9a{Y~0IoKZX??i9cxK;p0c2c*v2cr?lm+|8qbbi`ed-bX~P3eeiP zWTA!;Lr|8H{X<`C?^^*?S1k1qukMi9M`cn$jSR(mhI7~2 zIr6r;2rKY7N9>f5rk6ATP*5O|FO6CiuxLfIKFr?`4pJZm{1ZX)Cur-)%1HNm$xaGv z#ws=Thf6Ltdqk2THS*pCwCZ~b5?}Ej2|(eHf?5M))`!7$)0uDCZtIw7Kmmb7-3H-K zCy>~O4GO#AulIqJ&&3z(zrwf#wS`{$OA@731+;{>`X>gobO2NVuoDZQeH(tFE|%74 z55NAE3=hVIP@KXcyiu(0X0{&1hoJlewIKkWFnf|^a>WD<5#B)XPT z-+<|UO|qLKJtK#}ow=nRo}kI;b^e?22~C}}rA?rG3<)fyN`&6Tb=WKVn`l}y=Dx4Z z(2RcZ)Ml-1tc{>;S~rAFNXfTjcl>S7AI!36hYe|#K|C9Ha|P8r&lR+51dOy@6WzSX zo=Ao7^LgB}Npx6T8`|&`2vFAQa}u(?w$}*cjCL5U4E=)@G^qgrdsWk;tHz-;XcAJUL2o1HK%<8N`R)7^Q^d~Vo?Q1!cIKgXmlgfW04XnL) z$^2oku%&`}NA2CG(XXf77a=yjKF}}*VeM%6iP5Cf?%q2NYO*eL;S7nH0r0pq#03%64J0b zEf+XVZAKepc9z6L?i*P~K50eNNoP@vI$hKh;DkqCAmiPNLykpE)kuQb)w$0@u z4P~cwotOxZ>MQbbEPK~!j{2kl#TWO=+6wDqboK?om!*%F5nOXu;a(nWTt9&DsvwHB z4dij=xP)KO3Vt?%%^Sl+bnED-(^gWb+MdX6bo9At{gIq`8O=I8ax{IbPLtoJ&2o%h zI1Void0q0?Dv>NLMpHx&nVWuG%=cfgZhB&)A4!KxVyVs@Zaz}=iK*u&boK4_m7&H{&ZPaS8v#}dumL@ zYBFRl;X~Vvn8ze+pVLrdrvBo~MI83DE~aI?+6hVT)e0^mapCXpvj=BR&QqVu%Xxf7 z9dtW?4#DnhbPnsV_b{{=LI=;A=sJs2_u?*i7G{Db659ynCFHZTOt*|nZWZu$n28GG{M47$P3ijM~JLX5e4mXR? zg1wbi6FeQ6F?HDWQGz9t>1U5CJV$-;r@33DU2;8RWF32-E^`aiQ_HvPsB0wI<&nvx^VKb1UOkcTMnU^)|!_MW6Zq=hN;2Z z6gm8Bz~UOI(S_Vfb&96(_w|Vtth9t>*El_D2%#o^fA1|4fdoq75X#YCCwk#I z&|hmKvQrptT-#+tX;bZhUKaYFm%9H3NA2+`&7!8{$xM)@44T@6msm=vMq1>ii?Pj> zi`OsNO0%t#OVn?ZYqA}jCRu47H`5qxM;=*iXO?_pS~&Fl4o1+&O+FzpB?WH(dKrAf zDl>hJ^z(ZK=K+MXm^fuMts3{F?&S1POz-q~vic8aX>wxZ>9fyJAT~w;6{p9JT&cpp zJR743Rm_$J!gEhaX7URQ6!E!#FYV1j4`En!Wux)QEYgC%ilh_#CCi{xU~#1zOQsO4 zoS|t%gW2q<%Z|_pOpMpTBoeJ?GBZV_AN*?28w`nFz{{#s!fdVB*osni!V}W4x-(~Y z4h0fV*#5o|PQJ+!z@=B?)%-^SVf9GPv9t*}@ke5>t|({b`Y!H0JMm%QxmfMq2Su*% zmBv7fpYG#2owfz)X0WmH6npzZCex6EW?99(E{jhD%V3Ly`dSp~i-=Vohu~Zd9nN*5 zbe?nUYHt2oXKKd0mkvwXw!*k_FrNfW5w;#tBN^9b!E#6|sFY|+?`9A!{SesDoR!&2 zg*74@n}QBvSVIq7vO!UZFl#$BQ-3E5ekKMj*eX`W>4EQzr58IUUlD;?euQ|1wT_oX zm^gjt3eUJH5yvDW*K4jQ<7U8^`zj+{pUZ}Q2nW*K806R8P3DwRzB)vW(S)4jZ7cmU zV*;iWL?md$vQlUb(!4kF?nI8`N8^zcleW>w)n%=p8>`%ra_=DIgO`*KH2 zT*E{4ldj2Xl8+Ehx89+QTiIP9GaW2!-_^N%~k(DL+r!pde0?an4AdNt=GzXBLPge8Z1 zHI$zPJz7%RNZ$S;lw6`95veeC5!vZ3kXqY0&UNI_G)0x1w<=f(SxqvRE~a-EJ=?sS za1OW>JIkSbM;Q&m32FHfD=tC zZ*zTImVMrIS|b%T7f!<)h~q?I_d&}U+5e-tgBc><9nfUCbm~4ND?fNq`?9d(yF&*~ zG;$I`+-mt;JzImV&1e{Q>AL~ftx&B1Q~lD}C%4%0Ga>^%24hD$WBOf`;hiu!n4O%Mmj{!oJ)aF)YO;hyJ zm36aLvgxc-cov*fjURug39nir=+f!t=fIbgx|xiLwMfldZY`4^$za(PY&w~`CT7vS zR%GVg8s4?2%*Uv&53@|8vy{uKn(ODewO1T3mOeR;dG15&Vy$zDCjW8G%)WI=33r0@ zE~M4XU#FH+zj9s5oqfGf&OL=$xUo!!V(&ZZ@EhxHxUQP%TXCVZVJZBKz_Gea5UdFS z6w_7nKTS+AHC(1P^IAv>$E7li-rI%@AB_g}{OB#1RX3}&^R-_s#SRyk1_g~|&~GCP zCcAqbd-tR7i#3A>Sfz2!+K73K)VweV(r%@*o_wdNok+;(w~Dn6Uyh-}LP?fA>5(<( zKc^t8J{%362vGUj!Dt2iQ@pli$7YX9=R6c7rQBT3T}Lq9g?F&${G&E=96zKPULu0h zr|;5{yzpZE^n=+bhBm@-ZA~JWJ#cn+x?%~5a)U(*r-1!y0 zISp)ph{Ti3`+1;mo@Mwx6KsBvw(bw8ARDo8@a2VQ=|CAO`Yr>oU2&i1V+qE9eG)T$eyS&Ps7f$Y59xS7rYE zs9VOQ$anNLD=|NnLhgPca0bwqH^2(Q?}*Feekj`6atNm~NVGz=yBmo|N+i(Xw{~Dv zdocWMHH01r1-1?%`BN!1TUE*El{WTU>ESm<_A*G9%X{aCc19)Hmm7w4#T-w?C``zu zR^7xs7CHH=GCh0}T`61$y7*5dNRqBQ!T2*him>0hIA-|hqf(!x@LAOj2Utq?z)srC z<;sQsbR?(sc}hgBsWP-5d>It_>5>RztRvFhDiaQ-{v&VnLxGoN3D$PLo0%}2guz~- z428h^Q&rL-@Y&gCmJjB0PKOqV0XQR0BI_t_Y$e?%{$O{qzDNC<=IN?!JiZ7@{E2_! zAQmA`z90$~qQpq}{sH@}uUwxefosdb0zNKH^gTCnKeJzQjC&p=zR**n%D-q+XWI5L z4tQuqnlym%6s?Axlv-wBdTX=J_KZqpT&U&`I-9^X(WqV-bg*Mb`QWX6$za@cs^rfw zx`6<#Wy{{^e*)iADk*5qi2?hgVj1U04;~P5#fE8DB!ft||A@Ch3A_%+YL-i46({gw zAqko*LAN(maY$9|m#hx@>%lNCroZ3Gc?G>hc!NIEgQHYe3`&jfVvxmDucT09{biO5 zA>}v8dJW_bfzJMUM)fsfXMB@W^Vst?F~ey@j|cp4krnMXLIiKfzVV>oXBTG}WgVVw z_FT~^b;mrIigWo&Jl~na2N)t~em!54EfJ(6{h|Oj6x^fCq*6SYKY2YJ+$L>UY=T4Z zcvv5U<|FehOweW{1;rg(P=Al=ae!+=IYGI6Ye8L3Ep}U#9K30XjoEc31>Qd)ev?)4 zIi^e(Wfdl%va7@nqI(~z1kd*(H0?-S7*NEF>||UP%s|%!Jo4jnxI#p#L?(dAyM6$1 zfY@_$9v6{->_wv__!(#Zdjn(4TicVl%V&13?0TW_6c4gX z`kw3CbT49Lw>SO6dFW?5iHz9GBl;F0C{M@Ak+)vtu1V_JcB32R6+sx}?49Q#-(Pk- z(z603cjCmP=f_O9q;oh=f89X1N#>AKhC&xyyGRp#1FVYhe|p);6%LW!Q6m~q$@9zySg zC!fh5LUMrIQA;eXt6k2vPDyHss!JEK?5tmT`m!>$>uZjy8#o?+HyIJm{PAIaMnlY4 zLS|ledl@wf-Q#Hx)$^N$s~!DNTSyc6c+wyz#cW(SU#_li9~OsBezo7v;bnz48+sW;!`l>|c;cggWF|JTHA=|Jb$QV*FsZ1^ zQNh?)VREM_0$i=wxZTbOjH*}d{5c=%g~!T-;soqdeu+pWBi;*o42cneYu%jR;!?Di z;r4dTYqpP5nIG}RC%#!8H%^c^^Rm`K<8j=Qvd{35YvUNWW+4m-wL_ zddVy5#vu1UdiItumP~B}bxT}_U~5h(s?!yRtucy$ z^tfSqJv=uz*wG{TIu#LvOv2$lD8kC zubZ~rg91(Zy02Ycd;&iDu|9$%Z(4EoRXWlS=8NUpYWdE9mODU;0HCEP)@ROVT@mql zM43B0`Z94kHMZdfm(E6!$i2jI01wVQJL|l5V~N(rn3ug}Hajkfv{uG}`oIc*N@1mN zKE2xM)QtVskOwAH0E{JWHM0_Ua0zBh0z9_R`Cyh_JZ|NF)#<6jpeK*IW`jSJFVTwQ zmG#57qIEE?vJcFizKcyUdRB?tW=cOocm$Py=!_IX3NbXf^ar|3;+5sYH0z>mjHdD5aIe^I`KxK>Z6rCQSjga_G|{GE)<_S?Vv_yk!E5~F z!TWd)$XY0NoY7*joRl`9jWguA2XTccRrygJxM2q($PdU?jx~fRXL~!q)ngoNTcCfc zT(=&jXKU^ua2ID{v?P=2#K|wiqXkM{I;zn2%{Vv)@a3W>pq=tT=Bo&)DoQUDqzF+P zrW--$2hfLnPKfL8Xpx4Et&mof2KE$F)4LU^bH7x|EhDy>7kEUn>U>ncj8-^ZUy^0+N>mu1i@a-b4b9xNtg zrn1=E$mD=68Dg-$CH~UFDAWS&#J?3%)*N`AiKS)u_b~GNz81=nt8(BSpI$WhOLyB| zV5&?B4Ki<*kgafL2$6R=9qN&9vb!PCz)~nFb17*@f(z&;igpG2N$2ov3z4VZQaFlm zX{=iCjGj{upv}l{V%XPcY0mAn7Px=Nh+t{a`_OwLos^Qj8CS`co=DwiGiw^6@uWMF z(C@xu3rhqVLmVg^6_J`-gK%KGQbhN|vBmiz6`SEkG!ifU*GdLDNbh-_g%#Pwq!-Zy zhu67e2W0JLZw`pZ#EBYW>gO^Gh>qlx!iaQbzM!j z+_Y>;H6P1LMh{Uw*>#P^1X`ORikB{=+17PNykNcSQrAT#socre4Uv5}!Mi&szvhVJrzeVySoE<4YN8aRr{s=p1yA;v=2^_h*@bF;nT?gFS5pNA_9v=? z0$1>V=1_x1+jFSVNrw(oyY1Ig^)?G_?6_+SQ>IzJqwLQvC_0fpIv6+)s|U#2vvZlQ_I=#>TLrun{kYQgxCw%`_zK5X(}})*x23Qm;#Rtn@S8nN^h~ z3@kh1Tp`Z_XfWPS&YyR783X~5UO?x#`i&hihQJ1wF3P&f@<*M)G`{FPRSDO2Nd;Cq z)W{joL&UlO(kQDmnEoBi0hzu>M6GH+4MyEn(8VAK2gst?;Bto{vm>&93Tw1H5M5se z1^OlH#Y3q_m2y~uMHo!|PIiZmFQ{VkWE=b7G#Fa&p~g>2q?KHLHpA(<1j=rfJOw1C z$JbO+;IwGU7GFSgpw46|T{!QUA@$J&A|C3Ak2(b;D9vPPkvymkx=4`j%ITV$Lcm0f z`AmnaW0ayd4YmM4sv$u0#Aw%G(x9*uA{==0Sx+c_&V5 zgTU0PERd$+H9?Yz29rb=!nc@+KM3g3{M3*9#DL+2LwT;w;(_WOKD*-9+OVe!DgRC7 zHlHBE-MWI38*-t`vZ5Fvxi3i_6`H9?i#=A5AKO^G$}&~b;Y>uwlIKLl?#colb`VlV zd%D*1hmwScl3T0sv4jF*gMbSWRR;7<`3w0QN1`L7wb{xPug4_tV1wL8*lUV$M3JQQ z#=xk$vbv~cU;znC1l)`<1p5i#XVk2r@b;NXAz&2#6pV{3D*jM~g4Ea`PU@*_V^bw2 zix_f9|DdR3KOz4o2zqRgU<-!@*p9&j3K{}#a}pCB(I2Dvi&p!O0cD?-m%G{_#7;D9 zhjh{Tn9`LUHDsrRNNihWoj32E2*82tcAIJ-;`Dlx#S=*6* zO%+Z0Mm`elXo_!5)k+nK)h<8r$cZzN2=3C%+p^DPVO72{WiTA!r&nB=4Xb* zQk_f-Wm+l^_imCfvv%It`UIHYtp2>x)`_xSUnYQR1jWb|U*d+^iW80Rh7^pNXegmS zxr{ML%)F=;&*9pQ*Cj4LjnEPF^f9Cl@-W`AFdl~HVGMZk(lRkt(;o~y32@Um!^kT*y13UV>;@m5fH%@dvy&J}W0 z=N8!Ut~;2TH&_DJ}J7wzc2kUWoZu-c%AzB zsdxh7`Kp?6cvGVty0S5WND({tGB8o5UaK6<#v?paYzwtDoWeRat)m^Q(e`ZlW4fY6 zIhB;usg&guu{Kw%_Vi%H=awD?B{0GSbGE~@mjQ~|7uPXZc6JyddR@(92=3Ga2iVU! zsY>qgJBG(s_Di|<&UW1N7pHb+mk0v-CG}y;thRf1YhU3B>#yXTW*%-SxM7tOwGSmZ z3Iy%)KNid8uSin{cy>2V!N!nr@dqR9XrI$;wmx=bzv}Uk$7K*V-mX~HWonnseIu8F z=sD=Xsk3iHJAJbqY!Vyo`4ey@|BC5%sAp{OIR-;R9j!fepVPlRW`v7ZGxk?!Pg$h% z@0;6G6A3Z3Oiljduvyd9`nw2n;c<{hiryQ~{m^{Z%iSqxfEnVGa@6Iz^l{b*YX_zO zcdPIA(7JsW_&D9pa<|XVUc8*_7QTebslHK`I@4{999rwA)eY{=-5|N#;~Tdh16la+klD)fjsv`(3gTZ+ zJ8_|sB}!Nm!V6TtM-dFvSW>P}xlLR>9oNdVzgHg8Z{Ep2_um}7-}>@hqB;|}uZKr}ocJA&$;f*1Nq5lpSVMSQq(#kiMM&l|^+9GF%^+=j zez|os_Ep$>r{Az;5Lz7VQ9DmPK_{n|TiEu*17+0%Cu&>TM%VXK-G^K{9*=I{)sFG| z{Y*Fa5+G%l6MlRbZyzD%bE=2I(viuuC){z2nV6e%BW4<66pYi4>CGpXRu2F4${GmP z;mL|DSI7s34`CfwQ!clncjDSGt%In$wWy7!yN0ETyE9E2$N}sBY({8PyAB7Pe%m-C zhFcDN3JKgGrb4wlrUY-bg}AyCgU4pqPp zXpb0~KJYu&a|$CV_WWcrh1R={ky$XO*okBJLCBU(FaHX^;k z02-R^T>Fi!K)D@bJ9mj3_~kt9oritq-UScvLyV9Y@+l~H``2ex{X_e;W2MJ4z2qs^ z`<8@`*7?4hL$%~7ET3r4WodnzLM|Gu4V-(^xTmD^^St09K7|7AQn>NGCpg~QPS$m= z&(F4YJoh8*3(;|i_i3iPfdeXT^Ydz2HOJ{!tA3DpH{I0bW?IB~i+W$vBX%(F!)Tj_ zS!*ns)ZAs-3B+O`EN^shVwA9{og^?NMGU@pAZmiG6x!V2%43*}#IoDFn}oH)8i2$u z=+IHTnc!fgKXvm^1`>3U3gXhhjK~Nkf!c0iQ38HVjl- z(Nx+SheHuu3%ZFzOch0|;wSh5y20Q9M3( zQjb}fYMM%X!c;E;lTT{INCg5YlZ9>TSaM}lcjzmb;|lZR0-sJi%~Wnrc9T&P4U*n~ zc}ir6WU#1Vn=L&g_AD&2Ml_;q{LByD|s;U>*jYYMZc#R zcyv|%7P}UPJNU1|qh^3hPl#QxQwd?k@&wF_!Sql0p~OxHej;fK7zIiiSg`;l4L*&) zw1fy-c<8EZbQ3zEW~$i;VG$1x!?eJ>^0FR~T!F*26kQx^$zvJPRzvElEW9lEj0kxP zsbj^4D@};q7d2Q#JM7omrtMhWU_kDy(0}EJ@tTld?i-^xzQEU^*(PEpq%5 z0BbQAAXFVIz?fh+gt(@LB%$;XXj?*~`>hrAx!BsR9M6r!D z1=~w#D3Tq7-T5+-zDC7e;gbjv{1skI7G$a&DOpDfWX54-&5C)Ae&FZ-C25xQsWGq6 zHTUlk9Vbtwd!AGFAJ287Cd%`zl2B_C2`t-E3`{1;mvP6*cq9FGnc`+DhK7IU6_}_N z>lk4meC(}5cOjo7Q_UxYQ6FLKj<>*~D3GV05sjQJ4-B(-W~nDfovJB_AQ9a*h%DC3 zve0;T-jSOvar|C;_*qRjZ7=&L8j+OsnU37trB)i4nmvwgOo^2sXND=e4*IYksw$=O z!HDklD23NSiGSK?NVz1b37kv>AUUg5TQ)B~ zucUeUtGItYDSN3e&XUDh^>U8nn{0oI%F1XJnytv?oYa=`@y_Paj9mVJLVJrLG+Ct`O?%DREF$g4N;`ui2wVRHT%kpD zkAfvyys~=#3Tj8^vbfG{A{pl~lsvdDdOV|sQnd`z#hLV_i;Kct#y&RlFp=IRal|+J z_<@ub&XjJrS@zWD4WO(6P7a33vdPtmiEXaC)_IPtld14|U`zwG--Ye`T}2}rYb8rX z{jfbyfh0}Zk(woV8JrTnCZ68U#N3?POG?)C1(f>C4Ld1@KQ@zx8K)E5bP({tNW=bt@rT($=9?x_W1B#=0aQACM+_uPq(7H3RSp|EOMZVosP=D#CZ{N5ljiQ$fo0lLrR@K0uMff$_WGJR!{P;n54xXLrwA{vLG0ID1GW~-z4hsHOD zhKwG`;e%&{#&Zq(v3`vqh5QukV)S1zu~%(0*xGT?G*-XWx&_?91T30(_RD6_DX{5& zf=(Y;mBr5!XZl*T+U6Jf?J5slHY45~2rqDdske*Y1rG26O*TWvHb%3rCA$0wYOM!w zuWfP%z)UDFOVa%#47Tu1P7Jn8*0L^+3h=$fot3HP0;f5E9mtOb6GQRy9I0zL_m5DU zY&ji6=fb~A@OqbFmZ0Dd(CQHP9YYhAkHU%^6hHXS6yP?+-=gj-}CC0RjRT203|t&DRCg@ zw`#Oh=p=MNYrvc+T8j}_#7(hknl>?)+>voP(DVCW)>)F^X?OH47K zY4t99v3otB{_ny?r9Kt>+aG_245J^0hJ-Tl87Rnj!8`}9H;{DXpH!090&X()6#X&4^{L#D zsLu-@ocEOY<1M3#FfR<^sm#!b!bkO^sgvb|D8altE~Yu*8i%U~cS!;Rk5l3G!hBI; zU(T06;G0Rr)U%tubeunN{Gj5Pk6=!o3g!@4&h~zK;AKjL6Mi|vySms)2L`BKom!>jnMcUGNd^!kJ zcI-up_}i&&0O3Ht41zZVaaU#tKFRM-bzruJo0>bZMln=XaAAuS%8CqIj1K-Rgp-8J zs8C~&FnygZuGTQJ7R#q24|j^0`sZY*ZibkCdSD_f!FfAHpdKl*(H`xxvx}X+Umz(G z%G{C5-OMyS#!+OLMRM%Rr0q0c9Ro+HYv4E0QNkJ5`EfY+xMcsra{o#`p=6(70R=6`tvX3zFs3p;w+AYa=EJXJx;XG!~PG z-76U{$sV$S#n&*#a}kx6a!l`>E&l<%2^4JI8Pco~7HmBj()>x*T;E`zfE?G6Uq@1I zaa%*H;kCC!tpyGx?mG+3!CECNxXtvcOU^IA?TR)VCN2B4vd`*%TwB(r6%R?N)yWO% z#$^On&Hwd0KnL61K7z52BkyOt53EBay+AdruYJ`5@nv=vS#nXg#yt~n!y>b@L_Lf3 z!rQAw8#CV{ymbtta|zWKwhsm{?sy*eJtDmCYwxW2Bs#78tB)W_e?~o)3^8-Q22Sw? zwc$Cl&BcTis~aP>?}_4u|7vQ6JAN&JJDwvVYgG#|$t5XbtXwxk)Niz3YH}GP$WwS~ z@w!&zNP8JyVN~y%om-Ms+<&{d!5BUX7FrYk-h8lA$S3Q;yh@RqA0jXQDCp79Tm;`O z7NMtsCk;2q#O+C;7Q!b?tz?^h;2ks&E~!y@pR8_UrG) z?E^QKPtlHTn}?^w3T>q1%(Mrp*Icj$sFY;J(~`f&!2K8z0)mHyIQt-JhJxQx32ARs zRpMCJ5%iiIog7$V6V^_o{DxL&;vq7c$0%T>dsOo8aV=arr915qm+qH`O=o5H=U6$| zkick)E9RLtmthsc^#&&uP~41(yln6~U?0 z(3PfIX3FE(d*D8%E=0?=w}v;w7YM;8Ji`3aXr;>@!B!ng<_%KVM|nu zu=61ByClOJb-q&Z1~Io^v zFfC)8BL4h&?8_N+tX9nv(TY+Bp{Ug+d}6Yiya?NlV$Sr3)XMt!wudC1Rqc-dtRC&w z;WdH`_liG>3^(uu9D*Mvk!g;tVfUZ|mH!?<2VUO*2a!|Y@agyf8q)PAaK(CZ0G)Vh zqx+oYV1o}F#LEifcA%YqpuJ=rq;UQf`T*;#2>n@NBQg#MBxD0ATt zUJuy#9OkWLUs0=wSg%Di|^}`ml z7zd^wp~~F6*(mZ+SnOY+SZqiEDoXJ!Xy-o3=d29uYQh-|(o265Wg#Mf*$pi@B*@=q90K<}u0EQF#<>FsvGVv~C8e~=ZBWP#S91}*?BWOsnN1<%d z3xDDKN#vv9%10s8uU*Jt0Y$XbB8mS

1gl%7x7!A03h0`m^Zfc`K@8g%T#f#y$$^ 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 J+Yhf_{U3D#B8>n5 literal 0 HcmV?d00001 diff --git a/Public/ADI-TMC2240.pdf b/Public/ADI-TMC2240.pdf new file mode 100644 index 0000000000000000000000000000000000000000..60fa416cc5b935eaa49a4fd6e5450fd10c62e633 GIT binary patch literal 958417 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

KiRyuZ2%3?!5X9DZa>n#1Y_s?W^GVEUlUL|AoO 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 SP4Cg;z4Ns$eu; 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

gG5!$!=89QLw?k(e2d~8dGz7o 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

t^i+5>ZbIr6Su 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ν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 literal 0 HcmV?d00001 diff --git a/User/application/app.c b/User/application/app.c new file mode 100644 index 0000000..5d7bc25 --- /dev/null +++ b/User/application/app.c @@ -0,0 +1,48 @@ + +#include "app.h" +#include "board.h" +#include "key.h" +#include "os.h" + +static TaskHandle_t business_task_handle = NULL; + +app_t app; + +void business_task(void *pvParameters) +{ + for (;;) + { + GPIO_TOGGLE(LED_BLUE_GPIO_Port, LED_BLUE_Pin); + vTaskDelay(1000); + } +} + +/** + * @brief 运行应用程序 + * + * 该函数用于启动应用程序的运行。 + * + * @details 此函数会调用 idle_inspection 函数,传入 idle_fw 作为参数。 + * idle_inspection 函数的具体作用需参考其实现细节。 + */ +void app_run(void) +{ + // 开启任务调度器 + vTaskStartScheduler(); +} + +/** + * @brief 初始化应用程序 + * + * 初始化应用程序,包括启动空闲任务。 + */ +void app_init(void) +{ + // 创建任务 + xTaskCreate((TaskFunction_t)business_task, // 任务入口函数 + (const char *)"business_task", // 任务名字 + (uint16_t)configMINIMAL_STACK_SIZE, // 任务栈大小 + (void *)NULL, // 任务入口函数参数 + (UBaseType_t)1, // 任务优先级 + (TaskHandle_t *)&business_task_handle); // 任务句柄 +} diff --git a/User/application/app.h b/User/application/app.h new file mode 100644 index 0000000..01b635e --- /dev/null +++ b/User/application/app.h @@ -0,0 +1,22 @@ +/** + * @file app.h + * @author xushenghao + * @date 2024-08-09 09:03:08 + * @brief + * @copyright Copyright (c) 2024 by xxx, All Rights Reserved. + */ +#ifndef APP_H +#define APP_H +#include "main.h" + +typedef struct +{ + +} app_t; + +extern app_t app; + +void app_init(void); +void app_run(void); + +#endif // APP_H diff --git a/User/application/key.c b/User/application/key.c new file mode 100644 index 0000000..08dfad8 --- /dev/null +++ b/User/application/key.c @@ -0,0 +1,57 @@ +#include "key.h" +#include "btn.h" + +#define INVALID_BUTTON_TICKS 200 // 无效按键时间 毫秒 +static uint32_t key_start_ticks = 0; +/* 按钮 */ +struct Button key_1; +struct Button key_2; +struct Button key_3; +struct Button key_4; +struct Button key_5; +struct Button key_6; + +static BOOL allow_condition(void) +{ + /** + * key的初始化在LCD板子上电之前,因为是低电平有效,所以会误判为按键按下 + */ + if (sys_millis() - key_start_ticks < INVALID_BUTTON_TICKS) // 仿真的时候按键会有毛刺,在xx秒之后按下有效 + { + return FALSE; + } + return TRUE; +} + +static uint8_t read_button_gpio(button_id_e button_id) +{ + if (allow_condition() == FALSE) + { + return ACTIVE_LEVEL_HIGH; + } + switch (button_id) + { + case KEY_1: + return GPIO_READ(KEY_1_GPIO_Port, KEY_1_Pin); + + default: + return ACTIVE_LEVEL_LOW; + } +} + +static void key_1_press_down_handler(void *btn) +{ + key_1_callback(PRESS_DOWN); +} + +void key_init(void) +{ + key_start_ticks = sys_millis(); + GPIO_SET_INPUT(KEY_1_GPIO_Port, KEY_1_Pin); + + button_init(&key_1, read_button_gpio, ACTIVE_LEVEL_LOW, KEY_1, KEY_1); + + button_attach(&key_1, PRESS_DOWN, key_1_press_down_handler); + + button_start(&key_1); +} diff --git a/User/application/key.h b/User/application/key.h new file mode 100644 index 0000000..5f89062 --- /dev/null +++ b/User/application/key.h @@ -0,0 +1,13 @@ +#ifndef _KEY_H_ +#define _KEY_H_ +#include "main.h" + +typedef enum +{ + KEY_1 = 1, +} button_id_e; + +void key_1_callback(PressEvent e); + +void key_init(void); +#endif // _KEY_H_ diff --git a/User/board/board.c b/User/board/board.c new file mode 100644 index 0000000..85951ae --- /dev/null +++ b/User/board/board.c @@ -0,0 +1,42 @@ +#include "board.h" + +uart_t *uart = NULL; + +static void uart_rx_cb(uint8_t uart_index, uint8_t *data, uint16_t len) +{ +} + +static void uart_init(void) +{ + if (uart == NULL) + { + uart = uart_create(USART1, TRUE, UART_RXSIZE, uart_rx_cb, TRUE, UART_TXSIZE, NULL); + uart->uart_index = 0; + uart->dma = DMA1; + uart->dma_rx_channel = LL_DMA_CHANNEL_5; + uart->dma_tx_channel = LL_DMA_CHANNEL_4; + uart_recv_en(uart, FALSE); + } +} + +/** + * @brief 通过UART发送数据 + * + * 该函数通过UART接口发送指定长度的数据。 + * + * @param data 指向要发送数据的指针 + * @param len 要发送的数据长度 + */ +void uart_send(uint8_t *data, uint16_t len) +{ + uart_send_data(uart, data, len); +} + +/** + * @brief 初始化显示板 + * + */ +void board_init(void) +{ + uart_init(); +} diff --git a/User/board/board.h b/User/board/board.h new file mode 100644 index 0000000..4259e17 --- /dev/null +++ b/User/board/board.h @@ -0,0 +1,20 @@ +#ifndef __BOARD_H__ +#define __BOARD_H__ +#include "lib.h" + +#define UART_RXSIZE (240u) // 接收240个字节 +#define UART_TXSIZE (240u) // 发送240个字节 + +#define TASK_TIM TIM1 + +typedef struct +{ + /* data */ +} motor_t; + +extern uart_t *uart; + +void board_init(void); +void uart_send(uint8_t *data, uint16_t len); + +#endif diff --git a/User/system b/User/system new file mode 160000 index 0000000..ca553d8 --- /dev/null +++ b/User/system @@ -0,0 +1 @@ +Subproject commit ca553d8defe97339abe572bf400c1e76e37732a2 diff --git a/keilkill.bat b/keilkill.bat new file mode 100644 index 0000000..91ed224 --- /dev/null +++ b/keilkill.bat @@ -0,0 +1,30 @@ +del *.bak /s +del *.ddk /s +del *.edk /s +del *.lst /s +del *.lnp /s +del *.mpf /s +del *.mpj /s +del *.obj /s +del *.omf /s +::del *.opt /s ::不允许删除JLINK的设置 +del *.plg /s +del *.rpt /s +del *.tmp /s +del *.__i /s +del *.crf /s +del *.o /s +del *.d /s +del *.axf /s +del *.tra /s +del *.dep /s +del JLinkLog.txt /s + +del *.iex /s +del *.htm /s +del *.sct /s +del *.map /s + +del *.dbgconf /s +del *.uvguix.* /s +exit diff --git a/motor.ioc b/motor.ioc new file mode 100644 index 0000000..a94ad3f --- /dev/null +++ b/motor.ioc @@ -0,0 +1,161 @@ +#MicroXplorer Configuration settings - do not modify +CAD.formats= +CAD.pinconfig= +CAD.provider= +Dma.Request0=USART1_RX +Dma.Request1=USART1_TX +Dma.RequestsNb=2 +Dma.USART1_RX.0.Direction=DMA_PERIPH_TO_MEMORY +Dma.USART1_RX.0.Instance=DMA1_Channel5 +Dma.USART1_RX.0.MemDataAlignment=DMA_MDATAALIGN_BYTE +Dma.USART1_RX.0.MemInc=DMA_MINC_ENABLE +Dma.USART1_RX.0.Mode=DMA_NORMAL +Dma.USART1_RX.0.PeriphDataAlignment=DMA_PDATAALIGN_BYTE +Dma.USART1_RX.0.PeriphInc=DMA_PINC_DISABLE +Dma.USART1_RX.0.Priority=DMA_PRIORITY_LOW +Dma.USART1_RX.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority +Dma.USART1_TX.1.Direction=DMA_MEMORY_TO_PERIPH +Dma.USART1_TX.1.Instance=DMA1_Channel4 +Dma.USART1_TX.1.MemDataAlignment=DMA_MDATAALIGN_BYTE +Dma.USART1_TX.1.MemInc=DMA_MINC_ENABLE +Dma.USART1_TX.1.Mode=DMA_NORMAL +Dma.USART1_TX.1.PeriphDataAlignment=DMA_PDATAALIGN_BYTE +Dma.USART1_TX.1.PeriphInc=DMA_PINC_DISABLE +Dma.USART1_TX.1.Priority=DMA_PRIORITY_LOW +Dma.USART1_TX.1.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority +File.Version=6 +GPIO.groupedBy=Group By Peripherals +KeepUserPlacement=false +Mcu.CPN=STM32F103C8T6 +Mcu.Family=STM32F1 +Mcu.IP0=DMA +Mcu.IP1=NVIC +Mcu.IP2=RCC +Mcu.IP3=SYS +Mcu.IP4=TIM1 +Mcu.IP5=USART1 +Mcu.IPNb=6 +Mcu.Name=STM32F103C(8-B)Tx +Mcu.Package=LQFP48 +Mcu.Pin0=PC13-TAMPER-RTC +Mcu.Pin1=PD0-OSC_IN +Mcu.Pin2=PD1-OSC_OUT +Mcu.Pin3=PB12 +Mcu.Pin4=PA9 +Mcu.Pin5=PA10 +Mcu.Pin6=PA13 +Mcu.Pin7=PA14 +Mcu.Pin8=VP_SYS_VS_Systick +Mcu.Pin9=VP_TIM1_VS_ClockSourceINT +Mcu.PinsNb=10 +Mcu.ThirdParty0=RealThread.RT-Thread.3.1.5 +Mcu.ThirdPartyNb=1 +Mcu.UserConstants= +Mcu.UserName=STM32F103C8Tx +MxCube.Version=6.9.2 +MxDb.Version=DB.6.0.92 +NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.DMA1_Channel4_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true +NVIC.DMA1_Channel5_IRQn=true\:0\:0\:false\:false\:true\:false\:true\:true +NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.ForceEnableDMAVector=true +NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.NonMaskableInt_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false +NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 +NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:false\:false\:false\:false +NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:false\:false\:true\:false +NVIC.TIM1_UP_IRQn=true\:3\:0\:true\:false\:true\:true\:true\:true +NVIC.USART1_IRQn=true\:5\:0\:true\:false\:true\:true\:true\:true +NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false +PA10.Mode=Asynchronous +PA10.Signal=USART1_RX +PA13.Mode=Serial_Wire +PA13.Signal=SYS_JTMS-SWDIO +PA14.Mode=Serial_Wire +PA14.Signal=SYS_JTCK-SWCLK +PA9.Mode=Asynchronous +PA9.Signal=USART1_TX +PB12.Locked=true +PB12.Signal=GPXTI12 +PC13-TAMPER-RTC.GPIOParameters=GPIO_Label +PC13-TAMPER-RTC.GPIO_Label=LED_BLUE +PC13-TAMPER-RTC.Signal=GPIO_Output +PD0-OSC_IN.Mode=HSE-External-Oscillator +PD0-OSC_IN.Signal=RCC_OSC_IN +PD1-OSC_OUT.Mode=HSE-External-Oscillator +PD1-OSC_OUT.Signal=RCC_OSC_OUT +PinOutPanel.RotationAngle=0 +ProjectManager.AskForMigrate=true +ProjectManager.BackupPrevious=false +ProjectManager.CompilerOptimize=6 +ProjectManager.ComputerToolchain=false +ProjectManager.CoupleFile=true +ProjectManager.CustomerFirmwarePackage= +ProjectManager.DefaultFWLocation=true +ProjectManager.DeletePrevious=true +ProjectManager.DeviceId=STM32F103C8Tx +ProjectManager.FirmwarePackage=STM32Cube FW_F1 V1.8.5 +ProjectManager.FreePins=true +ProjectManager.HalAssertFull=false +ProjectManager.HeapSize=0x200 +ProjectManager.KeepUserCode=true +ProjectManager.LastFirmware=false +ProjectManager.LibraryCopy=1 +ProjectManager.MainLocation=Core/Src +ProjectManager.NoMain=false +ProjectManager.PreviousToolchain= +ProjectManager.ProjectBuild=false +ProjectManager.ProjectFileName=motor.ioc +ProjectManager.ProjectName=motor +ProjectManager.ProjectStructure= +ProjectManager.RegisterCallBack= +ProjectManager.StackSize=0x400 +ProjectManager.TargetToolchain=MDK-ARM V5.32 +ProjectManager.ToolChainLocation= +ProjectManager.UAScriptAfterPath= +ProjectManager.UAScriptBeforePath= +ProjectManager.UnderRoot=false +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-LL-false,2-MX_GPIO_Init-GPIO-false-LL-true,3-MX_DMA_Init-DMA-false-LL-true,4-MX_USART1_UART_Init-USART1-false-LL-true,5-MX_TIM1_Init-TIM1-false-LL-true +RCC.ADCFreqValue=36000000 +RCC.AHBFreq_Value=72000000 +RCC.APB1CLKDivider=RCC_HCLK_DIV2 +RCC.APB1Freq_Value=36000000 +RCC.APB1TimFreq_Value=72000000 +RCC.APB2Freq_Value=72000000 +RCC.APB2TimFreq_Value=72000000 +RCC.FCLKCortexFreq_Value=72000000 +RCC.FamilyName=M +RCC.HCLKFreq_Value=72000000 +RCC.IPParameters=ADCFreqValue,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,MCOFreq_Value,PLLCLKFreq_Value,PLLMCOFreq_Value,PLLMUL,PLLSourceVirtual,SYSCLKFreq_VALUE,SYSCLKSource,TimSysFreq_Value,USBFreq_Value,VCOOutput2Freq_Value +RCC.MCOFreq_Value=72000000 +RCC.PLLCLKFreq_Value=72000000 +RCC.PLLMCOFreq_Value=36000000 +RCC.PLLMUL=RCC_PLL_MUL9 +RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE +RCC.SYSCLKFreq_VALUE=72000000 +RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK +RCC.TimSysFreq_Value=72000000 +RCC.USBFreq_Value=72000000 +RCC.VCOOutput2Freq_Value=8000000 +RealThread.RT-Thread.3.1.5.IPParameters=RT_USING_DEVICE,RT_USING_CONSOLE,RT_USING_COMPONENTS_INIT +RealThread.RT-Thread.3.1.5.RTOSJjdevice_Checked=false +RealThread.RT-Thread.3.1.5.RTOSJjkernel_Checked=false +RealThread.RT-Thread.3.1.5.RTOSJjshell_Checked=false +RealThread.RT-Thread.3.1.5.RT_USING_COMPONENTS_INIT=1 +RealThread.RT-Thread.3.1.5.RT_USING_CONSOLE=0 +RealThread.RT-Thread.3.1.5.RT_USING_DEVICE=1 +RealThread.RT-Thread.3.1.5_SwParameter=RTOSJjkernel\:true;RTOSJjshell\:true;RTOSJjdevice\:true; +SH.GPXTI12.0=GPIO_EXTI12 +SH.GPXTI12.ConfNb=1 +TIM1.IPParameters=Prescaler,Period +TIM1.Period=99 +TIM1.Prescaler=7199 +USART1.IPParameters=VirtualMode +USART1.VirtualMode=VM_ASYNC +VP_SYS_VS_Systick.Mode=SysTick +VP_SYS_VS_Systick.Signal=SYS_VS_Systick +VP_TIM1_VS_ClockSourceINT.Mode=Internal +VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT +board=custom

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%0DQ=CI!1`1>Gy}RX9G+I+WWC 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Ý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 lS+C^E>oCUFu2X`%mKv^+(3)vngDS+7lPrn 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

{pE-p}p;y&Vs>{fL$;*MM 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%0DndEoxsl8G6 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