diff --git a/.gitignore b/.gitignore
index 53301b7fc..150ab109b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
# Exclude doxygen
-miosix/_doc/doxygen/html/*
+doc/doxygen/html/*
# Exclude temporary files
main.elf
@@ -15,11 +15,12 @@ image.uf2
*.d
# Exclude build directories and host executables
-miosix/_tools/filesystems/build
-miosix/_tools/filesystems/buildromfs
-miosix/_tools/bin2uf2/build
-miosix/_tools/bin2uf2/bin2uf2
+tools/bin2uf2/bin2uf2
+
+# Exclude all build directories
+build
# Exclude Mac OS X temporary
._*
.DS_Store
+build-docker/
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 7c6898ac2..000000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "miosix/_examples/datalogger/tscpp"]
- path = miosix/_examples/datalogger/tscpp
- url = https://github.com/fedetft/tscpp.git
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 98fc946ce..000000000
--- a/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-##
-## Makefile for Miosix embedded OS
-##
-
-## Path to kernel/config directories (edited by init_project_out_of_git_repo.pl)
-KPATH := miosix
-CONFPATH := $(KPATH)
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/Makefile.kcommon
-
-##
-## List here your source files (both .s, .c and .cpp)
-##
-SRC := main.cpp
-
-##
-## List here additional include directories (in the form -Iinclude_dir)
-##
-INCLUDE_DIRS :=
-
-##
-## List here additional static libraries with relative path
-##
-LIBS :=
-
-##
-## List here subdirectories which contains makefiles
-##
-SUBDIRS +=
-
-##
-## Attach a romfs filesystem image after the kernel
-##
-ROMFS_DIR :=
-
-all: $(if $(ROMFS_DIR), image, main)
-
-main: $(OBJ) all-recursive
- $(ECHO) "[LD ] main.elf"
- $(Q)$(CXX) $(LFLAGS) -o main.elf $(OBJ) $(LINK_LIBS)
- $(ECHO) "[CP ] main.hex"
- $(Q)$(CP) -O ihex main.elf main.hex
- $(ECHO) "[CP ] main.bin"
- $(Q)$(CP) -O binary main.elf main.bin
- $(Q)$(SZ) main.elf
-
-clean: clean-recursive
- $(Q)rm -f $(OBJ) $(OBJ:.o=.d) main.elf main.hex main.bin main.map
-
--include $(OBJ:.o=.d)
diff --git a/README.md b/README.md
new file mode 100644
index 000000000..f2bb371f0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,150 @@
+# Welcome to the Miosix Kernel
+
+Miosix (Minimal Operating System with POSIX) is a real-time operating system
+for 32-bit microcontrollers. It implements a new paradigm, the
+**fluid kernel** [1]: applications can be written to run in kernel space
+(*unikernel*-like), or in userspace with the same set of APIs.
+
+Miosix additionally features:
+
+- Focus on **C++** support, not just C
+- Support for **standard APIs**:
+ - C and C++ standard libraries (STL included)
+ - POSIX thread API
+ - C++ exception handling
+- **SMP Multicore** support
+- **Memory protection** for processes on microcontrollers with MPUs
+- Built-in **virtual filesystem** (VFS), integrated with the libc, supporting:
+ - FAT32 for external drives like SD cards
+ - LittleFs for non-volatile internal storage, like SPI Flash chips
+ - RomFs for read-only on-code-flash file storage
+- **Flexible scheduler subsystem** with the ability to choose between
+ - Priority scheduling
+ - Earliest Deadline First (EDF) scheduling
+ - Control-based scheduling [2]
+- **Scalable code size**, configurable by removing features you don't need
+ (~100KiB as a fluid kernel with userspace processes support and virtual filesystem, down to ~10KiB as a unikernel with all optional features removed)
+
+## Getting started
+
+You can find information on how to configure and use the kernel
+at the following url: https://miosix.org
+
+Miosix development goes on in the testing and unstable branches.
+The master branch points to the latest stable release.
+
+## Directory structure
+
+Directories marked with `[x]` contain code or configuration files that are used
+to build the kernel while directories marked with `[ ]` contain other stuff
+(documentation, examples).
+
+```
+[x] //Root directory, contains the application code
+ |
+ +--[ ] doc //Kernel documentation (doxygen + pdf + txt)
+ |
+ +--[ ] examples //Contains some example applications
+ |
+ +--[ ] templates //Contains application templates
+ | |
+ | +--[ ] simple //Template for kernel-mode applications
+ | |
+ | +--[ ] processes //Template for kernel and user-mode applications
+ |
+ +--[ ] tools //Miscellaneous tools for Miosix users
+ | |
+ | +--[ ] bootloaders //Custom bootloaders for some boards
+ | | //Mostly used for running Miosix in RAM without a
+ | | //debugger
+ | |
+ | +--[ ] compiler //Contains scripts used to build GCC with the
+ | | //patches required to compile the kernel
+ | |
+ | +--[ ] testsuite //Contains the kernel testsuite
+ | .
+ | .
+ |
+ +--[x] miosix //Contains all Miosix OS code
+ |
+ +--[x] cmake //CMake files used by the Miosix CMake build system
+ |
+ +--[x] config //Default template configuration makefile fragments
+ | | //and header files
+ | |
+ | +--[x] board //Board-specific configuration
+ |
+ +--[x] e20 //Contains the kernel's event driven API
+ |
+ +--[x] filesystem //Filesystem code
+ |
+ +--[x] interfaces //Contains interfaces between kernel and
+ | //architecture dependent code
+ |
+ +--[x] interfaces_private //Private interfaces for the kernel
+ |
+ +--[x] kercalls //Implementation of libc primitives for kernel mode
+ |
+ +--[x] kernel //Contains the architecture independent kernel part
+ | |
+ | +--[x] scheduler //Contains the various schedulers
+ | |
+ | +--[x] priority
+ | |
+ | +--[x] control_based
+ | |
+ | +--[x] edf
+ |
+ +--[x] ldscripts //Base linker script files
+ | //Boards include linker script fragments from here
+ | //to make full linker scripts
+ |
+ +--[x] tools //Scripts used by the Miosix build system
+ |
+ +--[x] util //Contains architecture independent utility code
+ |
+ +--[x] arch //Contains architecture dependent code
+ |
+ +--[x] board //Board-specific code and definitions
+ | |
+ | +--[x] lpc2138_miosix_board //Name of folder is the board name
+ | | |
+ | | +--[x] interfaces-impl //Implmentation of miosix/interfaces
+ | | |
+ | | +--[x] Makefile.inc //Build system configuration
+ | | |
+ | | +--[x] ... //Linker scripts,
+ | . //openocd scripts
+ | . Other boards
+ |
+ +--[x] chip //Chip-family-specific code and definitions
+ | |
+ | +--[x] lpc2000 //Name of folder is the chip family name
+ | | |
+ | | +--[x] interfaces-impl //Implmentation of miosix/interfaces
+ | | |
+ | | +--[x] Makefile.inc //Build system configuration
+ | .
+ | . Other chip families
+ |
+ +--[x] cpu //CPU-architecture-specific code and definitions
+ | |
+ | +--[x] armv4 //Name of folder is the CPU architecture
+ | | |
+ | | +--[x] interfaces-impl //Implmentation of miosix/interfaces
+ | .
+ | . Other architectures
+ |
+ +--[x] drivers //Collection of drivers
+ |
+ +--[x] CMSIS
+```
+
+## References
+
+[1] F. Terraneo and D. Cattaneo, "Fluid Kernels: Seamlessly Conquering the
+Embedded Computing Continuum," in IEEE Transactions on Computers, vol. 74,
+no. 12, Dec. 2025, doi: https://doi.org/10.1109/TC.2025.3605745.
+[2] M. Maggio, F. Terraneo, and A. Leva, "Task scheduling: A control-theoretical
+viewpoint for a general and flexible solution," in ACM Trans. Embed. Comput.
+Syst., vol. 13, no. 4, Nov. 2014, doi: https://doi.org/10.1145/2560015.
diff --git a/Readme.txt b/Readme.txt
deleted file mode 100644
index f4ecc6f2a..000000000
--- a/Readme.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-
-Welcome to the Miosix kernel
-============================
-
-You can find information on how to configure and use the kernel
-at the following url: http://miosix.org
-
diff --git a/miosix/_doc/doxygen/Doxyfile b/doc/doxygen/Doxyfile
similarity index 99%
rename from miosix/_doc/doxygen/Doxyfile
rename to doc/doxygen/Doxyfile
index 4272f67c9..5c2acf996 100644
--- a/miosix/_doc/doxygen/Doxyfile
+++ b/doc/doxygen/Doxyfile
@@ -38,7 +38,7 @@ PROJECT_NAME = Miosix
# could be handy for archiving the generated documentation or if some version
# control system is used.
-PROJECT_NUMBER = 2.01
+PROJECT_NUMBER = 3.00
# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
@@ -768,7 +768,8 @@ WARN_LOGFILE =
# spaces.
# Note: If this tag is empty the current directory is searched.
-INPUT = ../../
+INPUT = . \
+ ../../miosix
# This tag can be used to specify the character encoding of the source files
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -813,11 +814,11 @@ RECURSIVE = YES
# Note that relative paths are relative to the directory from which doxygen is
# run.
-EXCLUDE = ../../_doc/pdfdoc \
- ../../_doc/textdoc \
- ../../_examples \
- ../../_tools \
- ../../arch
+EXCLUDE = ../../miosix/tools \
+ ../../miosix/arch \
+ ../../miosix/config/board \
+ ../../miosix/filesystem/fat32 \
+ ../../miosix/filesystem/littlefs \
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
diff --git a/miosix/_doc/doxygen/documentation.dox b/doc/doxygen/documentation.dox
similarity index 93%
rename from miosix/_doc/doxygen/documentation.dox
rename to doc/doxygen/documentation.dox
index d21beea22..57c884036 100644
--- a/miosix/_doc/doxygen/documentation.dox
+++ b/doc/doxygen/documentation.dox
@@ -40,20 +40,20 @@ Interfaces between kernel and architecture specific code.
Starting from Miosix 1.53 all calls from kernel to architecture specific code
is done through a set of functions, classes and macros grouped in a set of
-header files in the miosix/interfaces folder.
+header files in the miosix/interfaces and miosix/interfaaces_private folders.
There are multiple implementations of these functions/classes, one for each
architecture supported by Miosix. This eases portability since adding a new
architecture is done by implementing a well defined set of interfaces.
-Some of these functions are not designed to be accessed by user code, for
-example the functions in portability.h are used by the kernel to create
-threads and perform context switching, while the Disk class in disk.h is used
-by the filesystem module to read and write from disk.
+Some of these functions are not designed to be accessed by user code, and are
+placed in the interfaces_private folder. These are used exclusively by the
+kernel to provide higher-level functionalities such as creating threads and
+performing context switching.
Such functions are marked as \\internal and therefore are not visible by default
in this doxygen documentation, because are useless for application developers.
If there is the need to port Miosix to another platform it is always possible
to build the doxygen documentation manually including \\internal functions.
-Using functions which are marked as \\internal in user code might lead to
+Using functions which are marked as \\internal in user code leads to
undefined behaviour.
*/
diff --git a/miosix/_doc/doxygen/index.html b/doc/doxygen/index.html
similarity index 100%
rename from miosix/_doc/doxygen/index.html
rename to doc/doxygen/index.html
diff --git a/miosix/_doc/logo/miosixlogo.pdf b/doc/logo/miosixlogo.pdf
similarity index 100%
rename from miosix/_doc/logo/miosixlogo.pdf
rename to doc/logo/miosixlogo.pdf
diff --git a/miosix/_doc/logo/miosixlogo.png b/doc/logo/miosixlogo.png
similarity index 100%
rename from miosix/_doc/logo/miosixlogo.png
rename to doc/logo/miosixlogo.png
diff --git a/miosix/_doc/logo/miosixlogo.svg b/doc/logo/miosixlogo.svg
similarity index 100%
rename from miosix/_doc/logo/miosixlogo.svg
rename to doc/logo/miosixlogo.svg
diff --git a/miosix/_doc/logo/miosixlogo.txt b/doc/logo/miosixlogo.txt
similarity index 100%
rename from miosix/_doc/logo/miosixlogo.txt
rename to doc/logo/miosixlogo.txt
diff --git a/miosix/_doc/pdfdoc/features/Miosix features.odt b/doc/pdfdoc/features/Miosix features.odt
similarity index 100%
rename from miosix/_doc/pdfdoc/features/Miosix features.odt
rename to doc/pdfdoc/features/Miosix features.odt
diff --git a/miosix/_doc/pdfdoc/features/Miosix features.pdf b/doc/pdfdoc/features/Miosix features.pdf
similarity index 100%
rename from miosix/_doc/pdfdoc/features/Miosix features.pdf
rename to doc/pdfdoc/features/Miosix features.pdf
diff --git a/miosix/_doc/textdoc/Changelog.txt b/doc/textdoc/Changelog.txt
similarity index 99%
rename from miosix/_doc/textdoc/Changelog.txt
rename to doc/textdoc/Changelog.txt
index fd4bcc4cf..fc4fa4979 100644
--- a/miosix/_doc/textdoc/Changelog.txt
+++ b/doc/textdoc/Changelog.txt
@@ -1,3 +1,7 @@
+This file is kept for historic reasons.
+It keeps a changelog that was kept during the early development of Miosix
+from 2008 to 2016. It includes initial development from before git was used.
+
Changelog for Miosix np embedded OS
v2.02
diff --git a/doc/textdoc/Error debug.txt b/doc/textdoc/Error debug.txt
new file mode 100644
index 000000000..554b53cb1
--- /dev/null
+++ b/doc/textdoc/Error debug.txt
@@ -0,0 +1,17 @@
+Miosix catches the CPU fault handlers and prints an error message if WITH_ERRLOG
+is defined. The error message includes the address of the instructon that caused
+the error and reboots the system.
+
+To convert the printed address into the name of the function that caused the
+error, and the exact code line where the program stopped, use this command:
+
+arm-miosix-eabi-addr2line
-e main.elf -f | arm-miosix-eabi-c++filt
+
+Example:
+
+arm-miosix-eabi-addr2line 0x0000d494 -e main.elf -f | arm-miosix-eabi-c++filt
+miosix::Timer::interval() const
+miosix/kernel/sync.cpp:174
+
+Please note that for this operation to be reliable compiler optimization must
+be turned off (using -O0 instead of the default -O2).
diff --git a/miosix/_examples/asm/Readme.txt b/examples/asm/Readme.txt
similarity index 100%
rename from miosix/_examples/asm/Readme.txt
rename to examples/asm/Readme.txt
diff --git a/miosix/_examples/asm/main.s b/examples/asm/main.s
similarity index 100%
rename from miosix/_examples/asm/main.s
rename to examples/asm/main.s
diff --git a/examples/atsam4l_lcd/main.cpp b/examples/atsam4l_lcd/main.cpp
new file mode 100644
index 000000000..84c9f7b5b
--- /dev/null
+++ b/examples/atsam4l_lcd/main.cpp
@@ -0,0 +1,32 @@
+
+#include
+#include "miosix.h"
+#include "drivers/atsam4l_lcd.h"
+
+using namespace std;
+using namespace miosix;
+
+int main()
+{
+ start32kHzOscillator();
+
+ //Configure GPIO of LCD, PA8 to PA23 = 4 COM and 12 SEG
+ for(int i = 8; i <= 23; i++)
+ {
+ GpioPin pin(PA,i);
+ pin.mode(Mode::ALTERNATE);
+ pin.alternateFunction('F');
+ }
+
+ initLcd(12);
+
+// enableBlink();
+ for(int i = 0; ; i++)
+ {
+ int t = i;
+ beginUpdate();
+ for(int j = 0; j < 6 ; j++, t /= 10) setDigit(j, digitTbl[t % 10]);
+ endUpdate();
+ Thread::sleep(10);
+ }
+}
diff --git a/examples/blinking_led/CMakeLists.txt b/examples/blinking_led/CMakeLists.txt
new file mode 100644
index 000000000..495b0370b
--- /dev/null
+++ b/examples/blinking_led/CMakeLists.txt
@@ -0,0 +1,40 @@
+# Copyright (C) 2024 by Skyward
+#
+# This program is free software; you can redistribute it and/or
+# it under the terms of the GNU General Public License as published
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# As a special exception, if other files instantiate templates or use
+# macros or inline functions from this file, or you compile this file
+# and link it with other works to produce a work based on this file,
+# this file does not by itself cause the resulting work to be covered
+# by the GNU General Public License. However the source code for this
+# file must still be made available in accordance with the GNU
+# Public License. This exception does not invalidate any other
+# why a work based on this file might be covered by the GNU General
+# Public License.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see
+
+cmake_minimum_required(VERSION 3.21)
+
+set(MIOSIX_KPATH ${CMAKE_SOURCE_DIR}/../../miosix)
+set(CMAKE_TOOLCHAIN_FILE ${MIOSIX_KPATH}/cmake/Toolchains/gcc.cmake)
+set(CMAKE_BUILD_TYPE "Release")
+
+project(BlinkingLED C CXX ASM)
+
+# Set Miosix definitions and options
+#set(MIOSIX_BOARD rp2040_raspberry_pi_pico)
+
+add_subdirectory(${MIOSIX_KPATH} miosix EXCLUDE_FROM_ALL)
+
+add_executable(blinking_led simple.cpp)
+miosix_link_target(blinking_led PROGRAM_DEFAULT)
diff --git a/examples/blinking_led/simple.cpp b/examples/blinking_led/simple.cpp
new file mode 100644
index 000000000..901f04f87
--- /dev/null
+++ b/examples/blinking_led/simple.cpp
@@ -0,0 +1,22 @@
+#include
+
+#include "interfaces/bsp.h"
+#include "miosix.h"
+
+using namespace miosix;
+
+int main()
+{
+ while(true)
+ {
+ ledOn();
+ printf("Led on\n");
+ sleep(1);
+
+ ledOff();
+ printf("Led off\n");
+ sleep(1);
+ }
+
+ return 0;
+}
diff --git a/miosix/_examples/datalogger/ExampleData.h b/examples/datalogger/ExampleData.h
similarity index 100%
rename from miosix/_examples/datalogger/ExampleData.h
rename to examples/datalogger/ExampleData.h
diff --git a/miosix/_examples/datalogger/LogStats.h b/examples/datalogger/LogStats.h
similarity index 100%
rename from miosix/_examples/datalogger/LogStats.h
rename to examples/datalogger/LogStats.h
diff --git a/miosix/_examples/datalogger/Logger.cpp b/examples/datalogger/Logger.cpp
similarity index 94%
rename from miosix/_examples/datalogger/Logger.cpp
rename to examples/datalogger/Logger.cpp
index ff078edc7..5b8083459 100644
--- a/miosix/_examples/datalogger/Logger.cpp
+++ b/examples/datalogger/Logger.cpp
@@ -76,7 +76,7 @@ void Logger::start()
// Perhaps excessive defensive programming as thread creation failure is
// highly unlikely (only if ram is full)
- packT = Thread::create(packThreadLauncher, 1536, 1, this, Thread::JOINABLE);
+ packT = Thread::create(packThreadLauncher, 1536, DEFAULT_PRIORITY, this, Thread::JOINABLE);
if (!packT)
{
fclose(file);
@@ -84,7 +84,7 @@ void Logger::start()
}
writeT =
- Thread::create(writeThreadLauncher, 2048, 1, this, Thread::JOINABLE);
+ Thread::create(writeThreadLauncher, 2048, DEFAULT_PRIORITY, this, Thread::JOINABLE);
if (!writeT)
{
fullQueue.put(nullptr); // Signal packThread to stop
@@ -103,7 +103,7 @@ void Logger::start()
if(logStatsEnabled)
{
statsT =
- Thread::create(statsThreadLauncher, 1536, 1, this, Thread::JOINABLE);
+ Thread::create(statsThreadLauncher, 1536, DEFAULT_PRIORITY, this, Thread::JOINABLE);
if (!statsT)
{
fullQueue.put(nullptr); // Signal packThread to stop
@@ -159,7 +159,7 @@ LogResult Logger::logImpl(const char* name, const void* data, unsigned int size)
Record* record = nullptr;
{
- FastInterruptDisableLock dLock;
+ FastGlobalIrqLock dLock;
// We disable interrupts because IRQget() is nonblocking, unlike get()
if (emptyQueue.IRQget(record) == false)
{
@@ -201,7 +201,7 @@ void Logger::packThread()
{
Buffer* buffer = nullptr;
{
- Lock l(mutex);
+ Lock l(mutex);
// Get an empty buffer, wait if none is available
while (emptyList.empty())
cond.wait(l);
@@ -218,7 +218,7 @@ void Logger::packThread()
// When stop() is called, it pushes a nullptr signaling to stop
if (record == nullptr)
{
- Lock l(mutex);
+ Lock l(mutex);
fullList.push(buffer); // Don't lose the buffer
fullList.push(nullptr); // Signal writeThread to stop
cond.broadcast();
@@ -232,7 +232,7 @@ void Logger::packThread()
} while (bufferSize - buffer->size >= maxRecordSize);
{
- Lock l(mutex);
+ Lock l(mutex);
// Put back full buffer
fullList.push(buffer);
cond.broadcast();
@@ -254,7 +254,7 @@ void Logger::writeThread()
{
Buffer* buffer = nullptr;
{
- Lock l(mutex);
+ Lock l(mutex);
// Get a full buffer, wait if none is available
while (fullList.empty())
cond.wait(l);
@@ -287,7 +287,7 @@ void Logger::writeThread()
s.statMaxWriteTime = max(s.statMaxWriteTime, s.statWriteTime);
{
- Lock l(mutex);
+ Lock l(mutex);
// Put back empty buffer
emptyList.push(buffer);
cond.broadcast();
diff --git a/miosix/_examples/datalogger/Logger.h b/examples/datalogger/Logger.h
similarity index 99%
rename from miosix/_examples/datalogger/Logger.h
rename to examples/datalogger/Logger.h
index efe3f5424..a823c39b5 100644
--- a/miosix/_examples/datalogger/Logger.h
+++ b/examples/datalogger/Logger.h
@@ -197,7 +197,7 @@ class Logger
miosix::Queue emptyQueue; ///< Empty Records
std::queue> fullList; ///< Full buffers
std::queue> emptyList; ///< Empty buffers
- miosix::FastMutex mutex; ///< To allow concurrent access to the queues
+ miosix::KernelMutex mutex;///< To allow concurrent access to the queues
miosix::ConditionVariable cond; ///< To lock when buffers are all empty
miosix::Thread *packT; ///< Thread packing logged data
diff --git a/examples/datalogger/Makefile b/examples/datalogger/Makefile
new file mode 100644
index 000000000..ca8ab5a17
--- /dev/null
+++ b/examples/datalogger/Makefile
@@ -0,0 +1,66 @@
+##
+## Makefile template for Miosix embedded OS kernel-side applications
+##
+
+## Path to the Miosix kernel root (miosix-kernel/miosix)
+KPATH := ../../miosix
+
+## Path to the Miosix config root, containing:
+## - config/Makefile.inc
+## - config/miosix_config.h (optional)
+## - config/board//board_config.h (optional)
+## Leave it as $(KPATH) to use the default settings built in to miosix. Any
+## missing file is replaced by the defaults as well.
+## To change the config, copy and paste the miosix/config directory to
+## your project root and change this path to the project root (typically ".")
+CONFPATH := $(KPATH)
+
+## When using CONFPATH := $(KPATH) you can choose the board here. You can also
+## override other variables defined by Makefile.inc.
+OPT_BOARD := stm32f407vg_stm32f4discovery # example board, any will do
+# OPT_BOARD := [other options in miosix-kernel/miosix/config/Makefile.inc]
+
+## Include the Miosix common makefile for kernel-side applications
+MAKEFILE_VERSION := 3.01
+include $(KPATH)/Makefile.kcommon
+
+##
+## List here your source files (both .s, .c and .cpp)
+##
+SRC := main.cpp Logger.cpp tscpp/buffer.cpp
+
+##
+## List here additional include directories (in the form -Iinclude_dir)
+##
+INCLUDE_DIRS := -I.
+
+##
+## List here additional static libraries with relative path
+##
+LIBS :=
+
+##
+## List here subdirectories which contains makefiles
+##
+SUBDIRS +=
+
+##
+## Attach a romfs filesystem image after the kernel
+##
+ROMFS_DIR :=
+
+all: $(if $(ROMFS_DIR), image, main)
+
+main: $(OBJ) all-recursive
+ $(ECHO) "[LD ] main.elf"
+ $(Q)$(CXX) $(LFLAGS) -o main.elf $(OBJ) $(LINK_LIBS)
+ $(ECHO) "[CP ] main.hex"
+ $(Q)$(CP) -O ihex main.elf main.hex
+ $(ECHO) "[CP ] main.bin"
+ $(Q)$(CP) -O binary main.elf main.bin
+ $(Q)$(SZ) main.elf
+
+clean: clean-recursive
+ $(Q)rm -f $(OBJ) $(OBJ:.o=.d) main.elf main.hex main.bin main.map
+
+-include $(OBJ:.o=.d)
diff --git a/examples/datalogger/Readme.txt b/examples/datalogger/Readme.txt
new file mode 100644
index 000000000..9ad5cdcbf
--- /dev/null
+++ b/examples/datalogger/Readme.txt
@@ -0,0 +1,35 @@
+High performance logging for Miosix
+
+NOTE: compiling this example requires the external library TSCPP.
+It is suggested you do a "git clone https://github.com/fedetft/tscpp.git" in the
+"datalogger" directory or add it as a submodule if your project is already using
+git.
+
+Some applications - possibly real-time - require to log data, and do so from
+multiple threads. While a simple library that opens a file and writes to is
+sufficient for simple applications, there are some problems:
+- the Miosix filesystem uses typically an SD card as storage, and SD and other
+ FLASH based storage devices may pause to do wear leveling. SD cards, even good
+ quality class 10 ones, may pause for up to 1 second.
+- the Miosix OS, contrary to Linux, does not do much buffering at the filesystem
+ layer. This is desirable, since when an OS runs on as little as a few tens of
+ KB of RAM, the last thing you want is an OS that uses an unquatifiable amount
+ of memory.
+
+This example code shows a high-performance logging class that
+- has a nonblocking log() member function, which can be called concurrently from
+ multiple threads, to log a user-defined class or struct.
+ Tscpp (https://github.com/fedetft/tscpp) is used to serialize data.
+ Being nonblocking, it can be called also in real-time threads of your codebase
+ with confidence.
+- buffers data to compensate for the delays of the storage medium
+
+To configure the logger for your application, to trade off buffer space vs write
+data rate, you can edit Logger.h
+
+ static const unsigned int filenameMaxRetry = 100; ///< Limit on new filename
+ static const unsigned int maxRecordSize = 128; ///< Limit on logged data
+ static const unsigned int numRecords = 128; ///< Size of record queues
+ static const unsigned int bufferSize = 4096;///< Size of each buffer
+ static const unsigned int numBuffers = 4; ///< Number of buffers
+ static constexpr bool logStatsEnabled = true;///< Log logger stats?
diff --git a/miosix/_examples/datalogger/logdecoder/Makefile b/examples/datalogger/logdecoder/Makefile
similarity index 100%
rename from miosix/_examples/datalogger/logdecoder/Makefile
rename to examples/datalogger/logdecoder/Makefile
diff --git a/miosix/_examples/datalogger/logdecoder/logdecoder.cpp b/examples/datalogger/logdecoder/logdecoder.cpp
similarity index 100%
rename from miosix/_examples/datalogger/logdecoder/logdecoder.cpp
rename to examples/datalogger/logdecoder/logdecoder.cpp
diff --git a/examples/datalogger/main.cpp b/examples/datalogger/main.cpp
new file mode 100644
index 000000000..b53db9f5b
--- /dev/null
+++ b/examples/datalogger/main.cpp
@@ -0,0 +1,80 @@
+
+#include
+#include
+#include
+#include
+#include "Logger.h"
+#include "ExampleData.h"
+
+using namespace std;
+using namespace std::chrono;
+using namespace miosix;
+
+volatile bool stop=false;
+
+void loggerDemo(void*)
+{
+ /*
+ * Logger is configured as:
+ * maxRecordSize = 128
+ * numRecords = 128
+ * bufferSize = 4096
+ * numBuffers = 4
+ *
+ * Serialized ExampleData is 30 bytes
+ * There are 128 entries in the record queue, and (4-1)=3 4096 buffers for
+ * buffering (the fourth buffer is the one being written).
+ * Thus, the buffering system can hold 4096*3/30+128=537 ExampleData before
+ * filling. Considering the rule of thumb that a high quality SD card may
+ * block for up to 1s, the maximum data rate is 537Hz.
+ *
+ * An estimate of the memory occupied by the logger is:
+ * buffers 4*(4096+4)+128*(128+4)=33296
+ * thread stacks 1536+1536+2048=5120
+ * so a total of 38KB. The actual memory occupied will be a bit larger
+ * due to unaccounted variables and overheads.
+ *
+ * Note: although this demo is simple, the logger allows to:
+ * - log data from multiple threads while being nonblocking
+ * - log different classes/structs in any order, provided their serialized
+ * size is less than maxRecordSize and that they meet the requirements
+ * to be serialized with tscpp (github.com/fedetft/tscpp)
+ */
+ auto& logger=Logger::instance();
+ logger.start();
+
+ int a=0,b=0;
+ auto period=milliseconds(2); //2ms, 500Hz
+ for(auto t=system_clock::now();;)
+ {
+ if(stop) break;
+ t+=period;
+ auto now=system_clock::now();
+ if(t>now)
+ {
+ this_thread::sleep_until(t);
+ } else {
+ b++; //Deadline miss
+ t=now;
+ }
+ ExampleData ed(a++,b,t.time_since_epoch().count());
+ logger.log(ed);
+ }
+
+ logger.stop();
+
+ iprintf("Lost %d samples, missed %d deadlines\n",
+ logger.getStats().statDroppedSamples,b);
+}
+
+int main()
+{
+ puts("Type enter to start logger demo");
+ getchar();
+ auto t=Thread::create(loggerDemo,2048,NUM_PRIORITIES-1,nullptr,Thread::JOINABLE);
+ puts("Type enter to stop logger demo");
+ getchar();
+ stop=true;
+ t->join();
+ puts("Bye");
+}
diff --git a/miosix/_examples/deep_sleep/main-test.cpp b/examples/deep_sleep/main-test.cpp
similarity index 96%
rename from miosix/_examples/deep_sleep/main-test.cpp
rename to examples/deep_sleep/main-test.cpp
index 54cc5d72c..2906ea3e0 100644
--- a/miosix/_examples/deep_sleep/main-test.cpp
+++ b/examples/deep_sleep/main-test.cpp
@@ -34,8 +34,8 @@ using namespace miosix;
int main()
{
long long int timeBefore, timeAfter;
- using sleepLed = Gpio; // orange
- using deepSleepLed = Gpio; // blue
+ using sleepLed = Gpio; // orange
+ using deepSleepLed = Gpio; // blue
sleepLed::mode(Mode::OUTPUT);
deepSleepLed::mode(Mode::OUTPUT);
int i=1;
diff --git a/examples/edf/main.cpp b/examples/edf/main.cpp
new file mode 100644
index 000000000..e9e190c8d
--- /dev/null
+++ b/examples/edf/main.cpp
@@ -0,0 +1,71 @@
+#include
+#include
+#include
+#include
+
+#ifndef SCHED_TYPE_EDF
+#error Example is meant to be used with EDF scheduler
+#endif
+
+using namespace miosix;
+
+void rt_task_func1(void* arg)
+{
+ const auto period1=1000000000LL; //4 second
+ auto deadline=getTime();
+ for(;;)
+ {
+ deadline+=period1;
+ Thread::setPriority(deadline);
+ printf("RT1 Task %p running\n", Thread::getCurrentThread());
+ delayMs(450);
+ if(getTime()>deadline) printf("Deadline Miss!\n");
+ Thread::nanoSleepUntil(deadline);
+ }
+}
+
+
+void rt_task_func2(void* arg)
+{
+ const auto period2=1000000000LL; //5 second
+ auto deadline=getTime();
+ for(;;)
+ {
+ deadline+=period2;
+ Thread::setPriority(deadline);
+ printf("RT2 Task %p running\n", Thread::getCurrentThread());
+ delayMs(450);
+ if(getTime()>deadline) printf("Deadline Miss!\n");
+ Thread::nanoSleepUntil(deadline);
+ }
+}
+
+
+void nrt_task_func(void* arg)
+{
+ for(;;)
+ {
+ printf("NRT Task %p running\n", Thread::getCurrentThread());
+ delayMs(500);
+
+ }
+}
+
+int main()
+{
+ printf("Starting EDF Scheduler Test...\n");
+
+ long long t = getTime();
+
+ long long param = t + 1000000000LL;
+
+ Thread* rt1 = Thread::create(rt_task_func1, 2048, param, nullptr);
+ Thread* rt2 = Thread::create(rt_task_func2, 2048, param, nullptr);
+
+ Thread* nrt1 = Thread::create(nrt_task_func, 2048, DEFAULT_PRIORITY, nullptr);
+ Thread* nrt2 = Thread::create(nrt_task_func, 2048, DEFAULT_PRIORITY, nullptr);
+
+ printf("Threads created. Running test...\n");
+
+ for(;;) Thread::wait();
+}
diff --git a/miosix/_examples/fs_backend_benchmark/average.pl b/examples/fs_backend_benchmark/average.pl
similarity index 100%
rename from miosix/_examples/fs_backend_benchmark/average.pl
rename to examples/fs_backend_benchmark/average.pl
diff --git a/miosix/_examples/fs_backend_benchmark/backend_benchmark.cpp b/examples/fs_backend_benchmark/backend_benchmark.cpp
similarity index 97%
rename from miosix/_examples/fs_backend_benchmark/backend_benchmark.cpp
rename to examples/fs_backend_benchmark/backend_benchmark.cpp
index 6a0b2c29b..53f784305 100644
--- a/miosix/_examples/fs_backend_benchmark/backend_benchmark.cpp
+++ b/examples/fs_backend_benchmark/backend_benchmark.cpp
@@ -93,7 +93,7 @@ int main()
if(line[0]=='r' || line[0]=='s') break;
puts("Error: insert 'r' or 's'");
}
- Thread *t=Thread::create(testThread,4096,1,0,Thread::JOINABLE);
+ auto t=Thread::create(testThread,4096,DEFAULT_PRIORITY,nullptr,Thread::JOINABLE);
printf("Type enter to stop\n");
getchar();
t->terminate();
diff --git a/miosix/_examples/fs_loop_mount/Readme.txt b/examples/fs_loop_mount/Readme.txt
similarity index 100%
rename from miosix/_examples/fs_loop_mount/Readme.txt
rename to examples/fs_loop_mount/Readme.txt
diff --git a/miosix/_examples/fs_loop_mount/loop_mount.cpp b/examples/fs_loop_mount/loop_mount.cpp
similarity index 100%
rename from miosix/_examples/fs_loop_mount/loop_mount.cpp
rename to examples/fs_loop_mount/loop_mount.cpp
diff --git a/miosix/_examples/hd44780/hd44780.cpp b/examples/hd44780/hd44780.cpp
similarity index 90%
rename from miosix/_examples/hd44780/hd44780.cpp
rename to examples/hd44780/hd44780.cpp
index 5374e1a46..ba1751b87 100644
--- a/miosix/_examples/hd44780/hd44780.cpp
+++ b/examples/hd44780/hd44780.cpp
@@ -8,12 +8,12 @@ using namespace miosix;
#warning "You may need to choose different GPIOs that are free in your board"
#endif
-typedef Gpio d4;
-typedef Gpio d5;
-typedef Gpio d6;
-typedef Gpio d7;
-typedef Gpio rs;
-typedef Gpio e;
+typedef Gpio d4;
+typedef Gpio d5;
+typedef Gpio d6;
+typedef Gpio d7;
+typedef Gpio rs;
+typedef Gpio e;
// Custom characters:
// 0 1 2 3 4 5 6 7
diff --git a/examples/ir_decoder/ir_decoder.cpp b/examples/ir_decoder/ir_decoder.cpp
new file mode 100644
index 000000000..f29280a30
--- /dev/null
+++ b/examples/ir_decoder/ir_decoder.cpp
@@ -0,0 +1,77 @@
+
+#include
+#include
+#include
+#include "e20/e20.h"
+#include "miosix.h"
+#include "interfaces/interrupts.h"
+
+using namespace std;
+using namespace miosix;
+
+//Connect IR sensor output to PC6 of the stm32f4discovery
+typedef Gpio timerIn;
+
+static unsigned short previous=0;
+
+void start()
+{
+ previous=0;
+ printf("start\n");
+}
+
+void timestamp(unsigned short t)
+{
+ unsigned short delta=t-previous;
+ previous=t;
+ printf("%d\n",delta);
+}
+
+void stop()
+{
+ printf("stop\n");
+}
+
+FixedEventQueue<100,12> queue;
+
+void tim3impl()
+{
+ if(TIM3->SR & TIM_SR_UIF)
+ {
+ queue.IRQpost(bind(stop));
+ } else {
+ if(TIM3->CR1 & TIM_CR1_CEN)
+ {
+ queue.IRQpost(bind(timestamp,TIM3->CCR1));
+ } else {
+ TIM3->CR1|=TIM_CR1_CEN; //Start timer at first edge
+ queue.IRQpost(bind(start));
+ }
+ }
+ TIM3->SR=0; //Clear interrupt flag
+}
+
+int main()
+{
+ {
+ GlobalIrqLock dLock;
+ RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
+ RCC_SYNC();
+ IRQregisterIrq(dLock,TIM3_IRQn,tim3impl);
+ }
+ TIM3->CNT=0;
+ TIM3->PSC=84-1; //Prescaler clocked at 84MHz, timer incremented every 1us
+ TIM3->ARR=0xffff;
+ TIM3->EGR=TIM_EGR_UG; //Update ARR shadow register
+ TIM3->SR=0; //Clear interrupt flag caused by setting UG
+ TIM3->CCMR1=TIM_CCMR1_CC1S_0;
+ TIM3->CCER=TIM_CCER_CC1P
+ | TIM_CCER_CC1NP
+ | TIM_CCER_CC1E;
+ TIM3->DIER=TIM_DIER_CC1IE
+ | TIM_DIER_UIE;
+ TIM3->CR1=TIM_CR1_OPM; //One pulse mode, timer not started yet
+ timerIn::mode(Mode::ALTERNATE);
+ timerIn::alternateFunction(2);
+ queue.run();
+}
diff --git a/examples/led_display/main.cpp b/examples/led_display/main.cpp
new file mode 100644
index 000000000..ae1725083
--- /dev/null
+++ b/examples/led_display/main.cpp
@@ -0,0 +1,108 @@
+
+//Example to drive an 8-digit common cathode multiplexed 7-segment LED display.
+//Add current limiting resistors and digit drivers as needed.
+//Written for stm32vldiscovery, change GPIOs and the line mentioning AFIO->MAPR
+//if targeting another board.
+
+#include
+#include
+
+using namespace miosix;
+
+typedef Gpio segmentA;
+typedef Gpio segmentB;
+typedef Gpio segmentC;
+typedef Gpio segmentD;
+typedef Gpio segmentE;
+typedef Gpio segmentF;
+typedef Gpio segmentG;
+typedef Gpio segmentDP;
+typedef Gpio digit0;
+typedef Gpio digit1;
+typedef Gpio digit2;
+typedef Gpio digit3;
+typedef Gpio digit4;
+typedef Gpio digit5;
+typedef Gpio digit6;
+typedef Gpio digit7;
+
+static void outSegment(unsigned char segment)
+{
+ #define S2G(x,y,z) if(y & (1<MAPR=1<<25;//To free PB3 and PB4 from JTAG in stm32vldiscovery
+ CONFIG(digit0);
+ CONFIG(digit1);
+ CONFIG(digit2);
+ CONFIG(digit3);
+ CONFIG(digit4);
+ CONFIG(digit5);
+ CONFIG(digit6);
+ CONFIG(digit7);
+ CONFIG(segmentA);
+ CONFIG(segmentB);
+ CONFIG(segmentC);
+ CONFIG(segmentD);
+ CONFIG(segmentE);
+ CONFIG(segmentF);
+ CONFIG(segmentG);
+ CONFIG(segmentDP);
+ }
+ #undef CONFIG
+ #define DIGIT(x,y) \
+ outSegment(digits[y]); x::low(); Thread::sleep(2); x::high()
+ for(;;)
+ {
+ DIGIT(digit0,0);
+ DIGIT(digit1,1);
+ DIGIT(digit2,2);
+ DIGIT(digit3,3);
+ DIGIT(digit4,4);
+ DIGIT(digit5,5);
+ DIGIT(digit6,6);
+ DIGIT(digit7,7);
+ }
+ #undef DIGIT
+}
+
+static const unsigned char digitTable[]=
+{
+ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
+};
+
+static void number(int x)
+{
+ for(int i=0;i<8;i++)
+ {
+ digits[i]=digitTable[x % 10];
+ x/=10;
+ }
+}
+
+int main()
+{
+ memset(digits,0,sizeof(digits));
+ Thread::create(displayThread,STACK_MIN,DEFAULT_PRIORITY,nullptr,Thread::DETACHED);
+ for(int i=0;;i++)
+ {
+ number(i);
+ Thread::sleep(10);
+ }
+}
diff --git a/examples/processes/CMakeLists.txt b/examples/processes/CMakeLists.txt
new file mode 100644
index 000000000..bf2175fd9
--- /dev/null
+++ b/examples/processes/CMakeLists.txt
@@ -0,0 +1,57 @@
+# Copyright (C) 2024 by Skyward
+#
+# This program is free software; you can redistribute it and/or
+# it under the terms of the GNU General Public License as published
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# As a special exception, if other files instantiate templates or use
+# macros or inline functions from this file, or you compile this file
+# and link it with other works to produce a work based on this file,
+# this file does not by itself cause the resulting work to be covered
+# by the GNU General Public License. However the source code for this
+# file must still be made available in accordance with the GNU
+# Public License. This exception does not invalidate any other
+# why a work based on this file might be covered by the GNU General
+# Public License.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see
+
+cmake_minimum_required(VERSION 3.21)
+
+set(MIOSIX_KPATH ${CMAKE_SOURCE_DIR}/../../miosix)
+set(CMAKE_TOOLCHAIN_FILE ${MIOSIX_KPATH}/cmake/Toolchains/gcc.cmake)
+set(CMAKE_BUILD_TYPE "Release")
+
+project(ProcessesExamples C CXX ASM)
+
+# Set Miosix definitions and options
+#set(MIOSIX_BOARD stm32f407vg_stm32f4discovery)
+set(MIOSIX_LINKER_SCRIPT processes.ld)
+
+add_subdirectory(${MIOSIX_KPATH} miosix EXCLUDE_FROM_ALL)
+
+# Kernel level program
+add_executable(main main.cpp)
+target_compile_definitions(miosix PUBLIC WITH_FILESYSTEM)
+target_compile_definitions(miosix PUBLIC WITH_PROCESSES)
+miosix_link_target(main)
+
+# Processes
+miosix_add_process(process1 process1.cpp)
+miosix_add_process(process2 process2.cpp)
+
+# RomFS image
+miosix_add_romfs_image(image
+ PROGRAM_DEFAULT
+ IMAGE_NAME image
+ DIR_NAME bin
+ KERNEL main
+ PROCESSES process1 process2
+)
diff --git a/examples/processes/main.cpp b/examples/processes/main.cpp
new file mode 100644
index 000000000..cd9d16f3c
--- /dev/null
+++ b/examples/processes/main.cpp
@@ -0,0 +1,36 @@
+#include
+#include
+
+#include
+
+void start_process(pid_t* pid, char* const argv[], char* const envp[])
+{
+ int error_code = posix_spawn(pid, argv[0], NULL, NULL, argv, envp);
+
+ if(error_code != 0)
+ {
+ printf("spawn returned %d\n", error_code);
+ }
+}
+
+int main()
+{
+ pid_t pid1, pid2;
+
+ // Arguments and environment variables
+ const char* arg1[] = {"/bin/process1", nullptr};
+ const char* arg2[] = {"/bin/process2", nullptr};
+ const char* env[] = {nullptr};
+
+ // Start the processes
+ start_process(&pid1, (char* const*)arg1, (char* const*)env);
+ start_process(&pid2, (char* const*)arg2, (char* const*)env);
+
+ // Wait for them to end
+ wait(NULL);
+ wait(NULL);
+
+ printf("All processes ended\n");
+
+ return 0;
+}
diff --git a/examples/processes/process1.cpp b/examples/processes/process1.cpp
new file mode 100644
index 000000000..3a5d42fd9
--- /dev/null
+++ b/examples/processes/process1.cpp
@@ -0,0 +1,17 @@
+#include
+#include
+
+int main()
+{
+ printf("Hi! I'm the process #1\n");
+
+ printf("I'll count to 10\n");
+ const timespec sleep_time{.tv_sec = 1, .tv_nsec = 0};
+ for (int i = 1; i <= 10; i++)
+ {
+ nanosleep(&sleep_time, NULL);
+ printf("%d\n", i);
+ }
+
+ return 0;
+}
diff --git a/examples/processes/process2.cpp b/examples/processes/process2.cpp
new file mode 100644
index 000000000..f94a50608
--- /dev/null
+++ b/examples/processes/process2.cpp
@@ -0,0 +1,17 @@
+#include
+#include
+
+int main()
+{
+ printf("Hi! I'm the process #2\n");
+
+ printf("I'll write 10 letters\n");
+ const timespec sleep_time{.tv_sec = 1, .tv_nsec = 0};
+ for (int i = 1; i <= 10; i++)
+ {
+ nanosleep(&sleep_time, NULL);
+ printf("%c\n", 'Z' - i);
+ }
+
+ return 0;
+}
diff --git a/examples/sad_trombone/Makefile b/examples/sad_trombone/Makefile
new file mode 100644
index 000000000..2777f853f
--- /dev/null
+++ b/examples/sad_trombone/Makefile
@@ -0,0 +1,66 @@
+##
+## Makefile template for Miosix embedded OS kernel-side applications
+##
+
+## Path to the Miosix kernel root (miosix-kernel/miosix)
+KPATH := ../../miosix
+
+## Path to the Miosix config root, containing:
+## - config/Makefile.inc
+## - config/miosix_config.h (optional)
+## - config/board//board_config.h (optional)
+## Leave it as $(KPATH) to use the default settings built in to miosix. Any
+## missing file is replaced by the defaults as well.
+## To change the config, copy and paste the miosix/config directory to
+## your project root and change this path to the project root (typically ".")
+CONFPATH := $(KPATH)
+
+## When using CONFPATH := $(KPATH) you can choose the board here. You can also
+## override other variables defined by Makefile.inc.
+OPT_BOARD := stm32f407vg_stm32f4discovery
+# OPT_BOARD := stm32f100rb_stm32vldiscovery
+
+## Include the Miosix common makefile for kernel-side applications
+MAKEFILE_VERSION := 3.01
+include $(KPATH)/Makefile.kcommon
+
+##
+## List here your source files (both .s, .c and .cpp)
+##
+SRC := main.cpp player.cpp adpcm.c
+
+##
+## List here additional include directories (in the form -Iinclude_dir)
+##
+INCLUDE_DIRS :=
+
+##
+## List here additional static libraries with relative path
+##
+LIBS :=
+
+##
+## List here subdirectories which contains makefiles
+##
+SUBDIRS +=
+
+##
+## Attach a romfs filesystem image after the kernel
+##
+ROMFS_DIR :=
+
+all: $(if $(ROMFS_DIR), image, main)
+
+main: $(OBJ) all-recursive
+ $(ECHO) "[LD ] main.elf"
+ $(Q)$(CXX) $(LFLAGS) -o main.elf $(OBJ) $(LINK_LIBS)
+ $(ECHO) "[CP ] main.hex"
+ $(Q)$(CP) -O ihex main.elf main.hex
+ $(ECHO) "[CP ] main.bin"
+ $(Q)$(CP) -O binary main.elf main.bin
+ $(Q)$(SZ) main.elf
+
+clean: clean-recursive
+ $(Q)rm -f $(OBJ) $(OBJ:.o=.d) main.elf main.hex main.bin main.map
+
+-include $(OBJ:.o=.d)
diff --git a/examples/sad_trombone/Readme.txt b/examples/sad_trombone/Readme.txt
new file mode 100644
index 000000000..d9ce5d28b
--- /dev/null
+++ b/examples/sad_trombone/Readme.txt
@@ -0,0 +1,24 @@
+
+This example shows how to synchronize between a thread and a DMA peripheral.
+To build this example, execute `make` in the example directory
+
+This example supports the following two boards:
+
+1) stm32f4discovery
+===================
+
+This board has a builting I2S audio DAC, just configure the kernel for
+this board (OPT_BOARD := stm32f407vg_stm32f4discovery in Makefile.inc),
+make; make program and plug headphone jack to the board's connector.
+
+2) stm32vldiscovery
+===================
+
+Follow the kernel configuration procedure for this board here:
+
+http://miosix.org/boards/stm32vldiscovery-config.html
+
+To be able to hear the audio file, build one of the two circuits found in
+the circuit.jpeg file. The top one is a speaker amplifier, the bottom one
+is a filter whose output is suitable to drive an amplified speaker
+(such as a PC speaker).
diff --git a/miosix/_examples/sad_trombone/adpcm.c b/examples/sad_trombone/adpcm.c
similarity index 100%
rename from miosix/_examples/sad_trombone/adpcm.c
rename to examples/sad_trombone/adpcm.c
diff --git a/miosix/_examples/sad_trombone/adpcm.h b/examples/sad_trombone/adpcm.h
similarity index 100%
rename from miosix/_examples/sad_trombone/adpcm.h
rename to examples/sad_trombone/adpcm.h
diff --git a/miosix/_examples/sad_trombone/circuit.jpeg b/examples/sad_trombone/circuit.jpeg
similarity index 100%
rename from miosix/_examples/sad_trombone/circuit.jpeg
rename to examples/sad_trombone/circuit.jpeg
diff --git a/miosix/_examples/sad_trombone/convert.cpp b/examples/sad_trombone/convert.cpp
similarity index 100%
rename from miosix/_examples/sad_trombone/convert.cpp
rename to examples/sad_trombone/convert.cpp
diff --git a/miosix/_examples/sad_trombone/main.cpp b/examples/sad_trombone/main.cpp
similarity index 100%
rename from miosix/_examples/sad_trombone/main.cpp
rename to examples/sad_trombone/main.cpp
diff --git a/miosix/_examples/sad_trombone/player.cpp b/examples/sad_trombone/player.cpp
similarity index 84%
rename from miosix/_examples/sad_trombone/player.cpp
rename to examples/sad_trombone/player.cpp
index e696766c8..0a8bd144a 100644
--- a/miosix/_examples/sad_trombone/player.cpp
+++ b/examples/sad_trombone/player.cpp
@@ -28,7 +28,8 @@
#include
#include
#include
-#include "miosix/kernel/scheduler/scheduler.h"
+#include "kernel/thread.h"
+#include "interfaces/interrupts.h"
#include "util/software_i2c.h"
#include "adpcm.h"
#include "player.h"
@@ -37,15 +38,15 @@ using namespace std;
using namespace miosix;
#ifdef _BOARD_STM32VLDISCOVERY
-typedef Gpio dacPin; //DAC1 out on the stm32f100rb is PA4
+typedef Gpio dacPin; //DAC1 out on the stm32f100rb is PA4
#else //Assuming stm32f4discovery
-typedef Gpio scl;
-typedef Gpio sda;
-typedef Gpio lrck;
-typedef Gpio mclk;
-typedef Gpio sclk;
-typedef Gpio sdin;
-typedef Gpio reset;
+typedef Gpio scl;
+typedef Gpio sda;
+typedef Gpio lrck;
+typedef Gpio mclk;
+typedef Gpio sclk;
+typedef Gpio sdin;
+typedef Gpio reset;
typedef SoftwareI2C i2c;
#endif
@@ -98,48 +99,26 @@ static void IRQdmaRefill()
*/
static void dmaRefill()
{
- FastInterruptDisableLock dLock;
+ FastGlobalIrqLock dLock;
IRQdmaRefill();
}
#ifdef _BOARD_STM32VLDISCOVERY
-/**
- * DMA end of transfer interrupt
- */
-void __attribute__((naked)) DMA1_Channel3_IRQHandler()
-{
- saveContext();
- asm volatile("bl _Z17DACdmaHandlerImplv");
- restoreContext();
-}
-
/**
* DMA end of transfer interrupt actual implementation
*/
-void __attribute__((used)) DACdmaHandlerImpl()
+void DACdmaHandlerImpl()
{
DMA1->IFCR=DMA_IFCR_CGIF3;
bq->bufferEmptied();
IRQdmaRefill();
waiting->IRQwakeup();
- if(waiting->IRQgetPriority()>Thread::IRQgetCurrentThread()->IRQgetPriority())
- Scheduler::IRQfindNextThread();
}
#else //Assuming stm32f4discovery
-/**
- * DMA end of transfer interrupt
- */
-void __attribute__((naked)) DMA1_Stream5_IRQHandler()
-{
- saveContext();
- asm volatile("bl _Z17I2SdmaHandlerImplv");
- restoreContext();
-}
-
/**
* DMA end of transfer interrupt actual implementation
*/
-void __attribute__((used)) I2SdmaHandlerImpl()
+void I2SdmaHandlerImpl()
{
DMA1->HIFCR=DMA_HIFCR_CTCIF5 |
DMA_HIFCR_CTEIF5 |
@@ -148,8 +127,6 @@ void __attribute__((used)) I2SdmaHandlerImpl()
bq->bufferEmptied();
IRQdmaRefill();
waiting->IRQwakeup();
- if(waiting->IRQgetPriority()>Thread::IRQgetCurrentThread()->IRQgetPriority())
- Scheduler::IRQfindNextThread();
}
static void cs43l22send(unsigned char index, unsigned char data)
@@ -188,15 +165,8 @@ void cs43l22volume(int db)
template
static void atomicTestAndWaitUntil(volatile T& variable, T value)
{
- FastInterruptDisableLock dLock;
- while(variable!=value)
- {
- Thread::IRQgetCurrentThread()->IRQwait();
- {
- FastInterruptEnableLock eLock(dLock);
- Thread::yield();
- }
- }
+ FastGlobalIrqLock dLock;
+ while(variable!=value) Thread::IRQglobalIrqUnlockAndWait(dLock);
}
/**
@@ -205,17 +175,10 @@ static void atomicTestAndWaitUntil(volatile T& variable, T value)
*/
static unsigned short *getWritableBuffer()
{
- FastInterruptDisableLock dLock;
- unsigned short *result;
- while(bq->tryGetWritableBuffer(result)==false)
- {
- waiting->IRQwait();
- {
- FastInterruptEnableLock eLock(dLock);
- Thread::yield();
- }
- }
- return result;
+ FastGlobalIrqLock dLock;
+ unsigned short *result;
+ while(bq->tryGetWritableBuffer(result)==false) Thread::IRQglobalIrqUnlockAndWait(dLock);
+ return result;
}
/**
@@ -223,7 +186,7 @@ static unsigned short *getWritableBuffer()
*/
static void bufferFilled()
{
- FastInterruptDisableLock dLock;
+ FastGlobalIrqLock dLock;
bq->bufferFilled(bq->bufferMaxSize());
}
@@ -288,7 +251,7 @@ void Player::play(Sound& sound)
bq=new BufferQueue();
{
- FastInterruptDisableLock dLock;
+ GlobalIrqLock dLock;
//Configure GPIOs
dacPin::mode(Mode::INPUT_ANALOG);
//Enable peripherals clock gating, other threads might be concurretly
@@ -297,15 +260,12 @@ void Player::play(Sound& sound)
RCC_SYNC();
RCC->APB1ENR |= RCC_APB1ENR_DACEN | RCC_APB1ENR_TIM6EN;
RCC_SYNC();
+ //Configure DAC
+ DAC->CR=DAC_CR_DMAEN1 | DAC_CR_TEN1 | DAC_CR_EN1;
+ //Configure DMA
+ IRQregisterIrq(dLock,DMA1_Channel3_IRQn,DACdmaHandlerImpl);
}
- //Configure DAC
- DAC->CR=DAC_CR_DMAEN1 | DAC_CR_TEN1 | DAC_CR_EN1;
-
- //Configure DMA
- NVIC_SetPriority(DMA1_Channel3_IRQn,2);//High priority for DMA
- NVIC_EnableIRQ(DMA1_Channel3_IRQn);
-
//Configure TIM6
DBGMCU->CR |= DBGMCU_CR_DBG_TIM6_STOP; //TIM6 stops while debugging
TIM6->CR1=0; //Upcounter, not started, no special options
@@ -340,12 +300,15 @@ void Player::play(Sound& sound)
atomicTestAndWaitUntil(enobuf,true); //Play last buffer
//Shutdown
- NVIC_DisableIRQ(DMA1_Channel3_IRQn);
- TIM6->CR1=0;
- DMA1_Channel3->CCR=0;
- DAC->CR=0;
- dacPin::mode(Mode::INPUT_PULL_UP_DOWN);
- dacPin::pulldown();
+ {
+ GlobalIrqLock dLock;
+ IRQunregisterIrq(dLock,DMA1_Channel3_IRQn,DACdmaHandlerImpl);
+ TIM6->CR1=0;
+ DMA1_Channel3->CCR=0;
+ DAC->CR=0;
+ dacPin::mode(Mode::INPUT_PULL_UP_DOWN);
+ dacPin::pulldown();
+ }
delete bq;
}
#else //Assuming stm32f4discovery
@@ -355,7 +318,7 @@ void Player::play(Sound& sound)
bq=new BufferQueue();
{
- FastInterruptDisableLock dLock;
+ GlobalIrqLock dLock;
//Enable DMA1 and SPI3/I2S3
RCC->AHB1ENR |= RCC_AHB1ENR_DMA1EN;
RCC_SYNC();
@@ -375,6 +338,7 @@ void Player::play(Sound& sound)
//Enable audio PLL (settings for 44100Hz audio)
RCC->PLLI2SCFGR=(2<<28) | (271<<6);
RCC->CR |= RCC_CR_PLLI2SON;
+ IRQregisterIrq(dLock,DMA1_Stream5_IRQn,I2SdmaHandlerImpl);
}
//Wait for PLL to lock
while((RCC->CR & RCC_CR_PLLI2SRDY)==0) ;
@@ -400,9 +364,6 @@ void Player::play(Sound& sound)
| SPI_I2SCFGR_I2SE //I2S Enabled
| SPI_I2SCFGR_I2SCFG_1; //Master transmit
- NVIC_SetPriority(DMA1_Stream5_IRQn,2);//High priority for DMA
- NVIC_EnableIRQ(DMA1_Stream5_IRQn);
-
//Leading blank audio, so as to be sure audio is played from the start
memset(getWritableBuffer(),0,bufferSize*sizeof(unsigned short));
bufferFilled();
@@ -439,11 +400,11 @@ void Player::play(Sound& sound)
atomicTestAndWaitUntil(enobuf,true); //Continue sending MCLK for some time
reset::low(); //Keep in reset state
- NVIC_DisableIRQ(DMA1_Stream5_IRQn);
SPI3->I2SCFGR=0;
{
- FastInterruptDisableLock dLock;
+ GlobalIrqLock dLock;
RCC->CR &= ~RCC_CR_PLLI2SON;
+ IRQunregisterIrq(dLock,DMA1_Stream5_IRQn,I2SdmaHandlerImpl);
}
delete bq;
}
diff --git a/miosix/_examples/sad_trombone/player.h b/examples/sad_trombone/player.h
similarity index 100%
rename from miosix/_examples/sad_trombone/player.h
rename to examples/sad_trombone/player.h
diff --git a/miosix/_examples/sad_trombone/sad_trombone.h b/examples/sad_trombone/sad_trombone.h
similarity index 100%
rename from miosix/_examples/sad_trombone/sad_trombone.h
rename to examples/sad_trombone/sad_trombone.h
diff --git a/miosix/_examples/sad_trombone/sad_trombone.wav b/examples/sad_trombone/sad_trombone.wav
similarity index 100%
rename from miosix/_examples/sad_trombone/sad_trombone.wav
rename to examples/sad_trombone/sad_trombone.wav
diff --git a/miosix/_examples/servo/prompt.cpp b/examples/servo/prompt.cpp
similarity index 91%
rename from miosix/_examples/servo/prompt.cpp
rename to examples/servo/prompt.cpp
index 564a712b8..adea6c002 100644
--- a/miosix/_examples/servo/prompt.cpp
+++ b/examples/servo/prompt.cpp
@@ -1,6 +1,6 @@
#include
-#include "drivers/servo_stm32.h"
+#include "drivers/stm32_servo.h"
using namespace miosix;
diff --git a/miosix/_examples/servo/sweep.cpp b/examples/servo/sweep.cpp
similarity index 91%
rename from miosix/_examples/servo/sweep.cpp
rename to examples/servo/sweep.cpp
index 9b77bc782..c06421212 100644
--- a/miosix/_examples/servo/sweep.cpp
+++ b/examples/servo/sweep.cpp
@@ -1,6 +1,6 @@
#include
-#include "drivers/servo_stm32.h"
+#include "drivers/stm32_servo.h"
using namespace miosix;
diff --git a/miosix/_examples/streamwriter/Readme.txt b/examples/streamwriter/Readme.txt
similarity index 100%
rename from miosix/_examples/streamwriter/Readme.txt
rename to examples/streamwriter/Readme.txt
diff --git a/miosix/_examples/streamwriter/average.pl b/examples/streamwriter/average.pl
similarity index 100%
rename from miosix/_examples/streamwriter/average.pl
rename to examples/streamwriter/average.pl
diff --git a/miosix/_examples/streamwriter/streamwriter.cpp b/examples/streamwriter/streamwriter.cpp
similarity index 91%
rename from miosix/_examples/streamwriter/streamwriter.cpp
rename to examples/streamwriter/streamwriter.cpp
index 5ebc6f280..3eebc6b9c 100644
--- a/miosix/_examples/streamwriter/streamwriter.cpp
+++ b/examples/streamwriter/streamwriter.cpp
@@ -56,7 +56,7 @@ static Queue queuedSamples;
static list fullList; ///< Buffers between packThread() and writeThread()
static list emptyList; ///< Buffers between packThread() and writeThread()
-static FastMutex listHandlingMutex; ///< To allow concurrent access to the lists
+static KernelMutex listHandlingMutex; ///< To allow concurrent access to the lists
static ConditionVariable listWaiting; ///< To lock when buffers are all full/empty
static Thread *statsT; ///< Thred printing stats
@@ -89,7 +89,7 @@ void senseThread(void *argv)
Record sample=readSensors();
processSensorData(sample);
{
- FastInterruptDisableLock dLock;
+ FastGlobalIrqLock dLock;
if(queuedSamples.IRQput(sample)==false) statDroppedSamples++;
else statQueuePush++;
}
@@ -116,7 +116,7 @@ void packThread(void *argv)
//Get an empty buffer, wait if none is available
Record *buffer;
{
- Lock l(listHandlingMutex);
+ Lock l(listHandlingMutex);
while(emptyList.empty())
{
if(stopSensing) return;
@@ -141,7 +141,7 @@ void packThread(void *argv)
//Pass the buffer to the writeThread()
{
- Lock l(listHandlingMutex);
+ Lock l(listHandlingMutex);
fullList.push_back(buffer);
listWaiting.broadcast();
}
@@ -162,7 +162,7 @@ void writeThread(void *argv)
//Get a full buffer, wait if none is available
Record *buffer;
{
- Lock l(listHandlingMutex);
+ Lock l(listHandlingMutex);
while(fullList.empty())
{
if(stopSensing) return;
@@ -184,7 +184,7 @@ void writeThread(void *argv)
//Return the buffer to the packThread()
{
- Lock l(listHandlingMutex);
+ Lock l(listHandlingMutex);
emptyList.push_back(buffer);
listWaiting.broadcast();
}
@@ -236,10 +236,10 @@ void startSensingChain()
return;
}
setbuf(file,NULL);
- statsT=Thread::create(statsThread,4096,1,0,Thread::JOINABLE);
- writeT=Thread::create(writeThread,4096,1,0,Thread::JOINABLE);
- packT= Thread::create(packThread, 4096,1,0,Thread::JOINABLE);
- senseT=Thread::create(senseThread,4096,PRIORITY_MAX-1,0,Thread::JOINABLE);
+ statsT=Thread::create(statsThread,4096,DEFAULT_PRIORITY,nullptr,Thread::JOINABLE);
+ writeT=Thread::create(writeThread,4096,DEFAULT_PRIORITY,nullptr,Thread::JOINABLE);
+ packT= Thread::create(packThread, 4096,DEFAULT_PRIORITY,nullptr,Thread::JOINABLE);
+ senseT=Thread::create(senseThread,4096,NUM_PRIORITIES-1,nullptr,Thread::JOINABLE);
if(statsT==0 || writeT==0 || packT==0 || senseT==0)
printf("Error: thread creation failure\n");
}
@@ -254,12 +254,12 @@ void stopSensingChain()
this_thread::sleep_for(milliseconds(20)); //Wait for threads to terminate
//Wake threads eventually locked somewhere
{
- FastInterruptDisableLock dLock;
+ FastGlobalIrqLock dLock;
Record record;
queuedSamples.IRQput(record);
}
{
- Lock l(listHandlingMutex);
+ Lock l(listHandlingMutex);
listWaiting.broadcast();
}
statsT->join();
diff --git a/miosix/_examples/termios/main.cpp b/examples/termios/main.cpp
similarity index 100%
rename from miosix/_examples/termios/main.cpp
rename to examples/termios/main.cpp
diff --git a/miosix/_examples/thread_native/Readme.txt b/examples/thread_native/Readme.txt
similarity index 100%
rename from miosix/_examples/thread_native/Readme.txt
rename to examples/thread_native/Readme.txt
diff --git a/miosix/_examples/thread_native/native_thread_example.cpp b/examples/thread_native/native_thread_example.cpp
similarity index 89%
rename from miosix/_examples/thread_native/native_thread_example.cpp
rename to examples/thread_native/native_thread_example.cpp
index fbf1a6615..d6fb9a722 100644
--- a/miosix/_examples/thread_native/native_thread_example.cpp
+++ b/examples/thread_native/native_thread_example.cpp
@@ -30,7 +30,7 @@ int main()
{
const char str[]="Hello world\n";
Thread *thread;
- thread=Thread::create(threadfunc,2048,1,(void*)strlen(str),Thread::JOINABLE);
+ thread=Thread::create(threadfunc,2048,DEFAULT_PRIORITY,(void*)strlen(str));
{
Lock lock(mutex);
for(int i=0;i
+
+# Version 3.21 allows overriding CACHE variables with normal variables
+cmake_minimum_required(VERSION 3.21)
+
+# Include Miosix's modules
+set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+include(AddProcess)
+include(AddProgramTarget)
+include(AddRomfsImage)
+include(CreateProcessesDir)
+include(LinkTarget)
+
+project(Miosix
+ VERSION 3.0
+ DESCRIPTION "OS kernel designed to run on 32bit microcontrollers."
+ HOMEPAGE_URL "https://miosix.org"
+ LANGUAGES C CXX
+)
+set(CMAKE_CXX_STANDARD 23 CACHE STRING "Project C++ standard")
+
+# The user can set custom paths for miosix_settings.h and board_settings.h
+set(MIOSIX_USER_CONFIG_PATH
+ "${CMAKE_SOURCE_DIR}/config"
+ CACHE PATH "Path of the Miosix configuration directory")
+set(MIOSIX_USER_BOARD_SETTINGS_PATH
+ "${MIOSIX_USER_CONFIG_PATH}/board/${MIOSIX_BOARD}"
+ CACHE PATH "Include directory for board_settings.h")
+
+# Default warning flags used for Miosix and projects that link with it.
+# Configurable but not recommended.
+set(MIOSIX_ASM_FLAGS "" CACHE PATH "Configurable Assembly flags for Miosix")
+set(MIOSIX_C_FLAGS
+ -Wall
+ -Werror=return-type
+ CACHE PATH "Configurable C flags for Miosix"
+)
+set(MIOSIX_CXX_FLAGS
+ -Wall
+ -Werror=return-type
+ CACHE PATH "Configurable C++ flags for Miosix"
+)
+set(MIOSIX_EXE_LINKER_FLAGS "" CACHE PATH "Configurable linker flags for Miosix")
+
+# C++ Exception/rtti support disable flags.
+# To save code size if not using C++ exceptions (nor some STL code which
+# implicitly uses it) uncomment this option.
+# -D__NO_EXCEPTIONS is used by Miosix to know if exceptions are used.
+option(MIOSIX_DISABLE_EXCEPTIONS "Disables C++ exceptions/rtti support" OFF)
+if(MIOSIX_DISABLE_EXCEPTIONS)
+ set(MIOSIX_OPT_EXCEPT -fno-exceptions -fno-rtti -D__NO_EXCEPTIONS)
+endif()
+
+# Option to enable/disable linker garbage collection
+option(MIOSIX_ENABLE_LINKER_GC "Enables linker garbage collection" ON)
+if(MIOSIX_ENABLE_LINKER_GC)
+ set(LINKER_GC_FLAGS -ffunction-sections -fdata-sections)
+ set(LINKER_GC_EXE_LINKER_FLAGS -Wl,--gc-sections)
+endif()
+
+# Include the architecture options
+include(${CMAKE_CURRENT_SOURCE_DIR}/arch/CMakeLists.txt)
+
+# Verify that all the required variables have been defined, otherwise abort
+set(REQUIRED_VARIABLES
+ MIOSIX_BOARD
+ MIOSIX_CHIP_INC
+ MIOSIX_BOARD_INC
+ MIOSIX_LINKER_SCRIPT
+ MIOSIX_BOARD_C_FLAGS
+ MIOSIX_BOARD_CXX_FLAGS
+ MIOSIX_CHIP_C_FLAGS
+ MIOSIX_CHIP_CXX_FLAGS
+ MIOSIX_CPU_FLAGS
+ MIOSIX_BOARD_SRC
+ MIOSIX_CHIP_SRC
+)
+foreach(VARIABLE ${REQUIRED_VARIABLES})
+ if(NOT DEFINED ${VARIABLE})
+ message(FATAL_ERROR "arch/CMakeLists.txt must define ${VARIABLE}")
+ endif()
+endforeach()
+# Export MIOSIX_CPU_FLAGS so we can access it in AddProcess.cmake
+set(MIOSIX_CPU_FLAGS "${MIOSIX_CPU_FLAGS}" PARENT_SCOPE)
+
+# Print build configuration
+message(STATUS
+ "Build Configuration\n"
+ " - MIOSIX_GCC_PATH: ${MIOSIX_GCC_PATH}\n"
+ " - MIOSIX_USER_CONFIG_PATH: ${MIOSIX_USER_CONFIG_PATH}\n"
+ " - MIOSIX_USER_BOARD_SETTINGS_PATH: ${MIOSIX_USER_BOARD_SETTINGS_PATH}\n"
+ " - CMAKE_TOOLCHAIN_FILE: ${CMAKE_TOOLCHAIN_FILE}\n"
+ " - CMAKE_CXX_STANDARD: ${CMAKE_CXX_STANDARD}\n"
+ " - CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}\n"
+ " - MIOSIX_BOARD: ${MIOSIX_BOARD}\n"
+ " - MIOSIX_LINKER_SCRIPT: ${MIOSIX_LINKER_SCRIPT}\n"
+ " - MIOSIX_BOARD_VARIANT: ${MIOSIX_BOARD_VARIANT}\n"
+ " - MIOSIX_DISABLE_EXCEPTIONS: ${MIOSIX_DISABLE_EXCEPTIONS}\n"
+ " - MIOSIX_ENABLE_LINKER_GC: ${MIOSIX_ENABLE_LINKER_GC}\n"
+ " Remember to delete cmake cache for changes in CMakeLists.txt to have effect (or use --fresh to ignore it)"
+)
+
+option(MIOSIX_PRINT_BOARD_LIST "Prints a list of the available boards" OFF)
+if(MIOSIX_PRINT_BOARD_LIST)
+ miosix_print_list(STATUS "Available boards:" "${MIOSIX_BOARDS}")
+else()
+ message(STATUS "Print the list of boards by setting MIOSIX_PRINT_BOARD_LIST to ON")
+endif()
+
+option(MIOSIX_PRINT_LINKER_SCRIPT_LIST "Prints a list of the available linker scripts" ON)
+if(MIOSIX_PRINT_LINKER_SCRIPT_LIST)
+ miosix_print_list(STATUS
+ "Available linker scripts for ${MIOSIX_BOARD}:"
+ "${LINKER_SCRIPTS_ONLY_LIST}"
+ SELECTION "${MIOSIX_LINKER_SCRIPT}"
+ DEFAULT "${MIOSIX_DEFAULT_LINKER_SCRIPT}"
+ )
+endif()
+
+option(MIOSIX_PRINT_BOARD_VARIANT_LIST "Prints a list of the available board variants" ON)
+if(MIOSIX_PRINT_BOARD_VARIANT_LIST)
+ if(DEFINED MIOSIX_BOARD_VARIANT_LIST)
+ miosix_print_list(STATUS
+ "Available board variants for ${MIOSIX_BOARD}:"
+ "${MIOSIX_BOARD_VARIANT_LIST}"
+ SELECTION ${MIOSIX_BOARD_VARIANT}
+ DEFAULT ${MIOSIX_DEFAULT_BOARD_VARIANT}
+ )
+ else()
+ message(STATUS "Board ${MIOSIX_BOARD} has no variants")
+ endif()
+endif()
+
+set(MIOSIX_KERNEL_SRC
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/thread.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/lock.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/sync.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/error.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/pthread.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/boot.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/elf_program.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/process.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/process_pool.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/timeconversion.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/intrusive.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/cpu_time_counter.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/scheduler/priority/priority_scheduler.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/scheduler/control/control_scheduler.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kernel/scheduler/edf/edf_scheduler.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/file_access.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/file.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/path.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/stringpart.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/pipe/pipe.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/console/console_device.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/mountpointfs/mountpointfs.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/devfs/devfs.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/fat32/fat32.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/fat32/ff.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/fat32/diskio.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/fat32/wtoupper.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/fat32/ccsbcs.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/littlefs/lfs_miosix.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/littlefs/lfs.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/littlefs/lfs_util.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/filesystem/romfs/romfs.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kercalls/libc_integration.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/kercalls/libstdcpp_integration.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/e20/e20.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/e20/unmember.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/util/util.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/util/unicode.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/util/version.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/util/crc16.cpp
+ ${CMAKE_CURRENT_SOURCE_DIR}/util/lcd44780.cpp
+)
+
+# Define the miosix library with kernel and architecture sources
+add_library(miosix STATIC
+ ${MIOSIX_KERNEL_SRC}
+ ${MIOSIX_BOARD_SRC}
+ ${MIOSIX_CHIP_SRC}
+)
+
+target_include_directories(miosix PUBLIC
+ ${MIOSIX_USER_CONFIG_PATH}
+ ${CMAKE_CURRENT_SOURCE_DIR}/config
+ ${MIOSIX_BOARD_SETTINGS_INC}
+ ${CMAKE_CURRENT_SOURCE_DIR}/config/board/${MIOSIX_BOARD}
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/arch
+ ${MIOSIX_CPU_INC}
+ ${MIOSIX_CHIP_INC}
+ ${MIOSIX_BOARD_INC}
+)
+
+target_compile_options(miosix BEFORE PUBLIC
+ -qkernelspace
+ -D_MIOSIX_BOARDNAME="${MIOSIX_BOARD}"
+ -D_DEFAULT_SOURCE=1
+ $<$:${MIOSIX_BOARD_ASM_FLAGS}>
+ $<$:${MIOSIX_BOARD_C_FLAGS}>
+ $<$:${MIOSIX_BOARD_CXX_FLAGS}>
+ $<$:${MIOSIX_CHIP_ASM_FLAGS}>
+ $<$:${MIOSIX_CHIP_C_FLAGS}>
+ $<$:${MIOSIX_CHIP_CXX_FLAGS}>
+ ${MIOSIX_CPU_FLAGS}
+ $<$:${MIOSIX_OPT_EXCEPT}>
+ ${LINKER_GC_FLAGS}
+ $<$:${MIOSIX_ASM_FLAGS}>
+ $<$:${MIOSIX_C_FLAGS}>
+ $<$:${MIOSIX_CXX_FLAGS}>
+)
+
+# Configure program command as a property of the miosix library
+set_property(TARGET miosix PROPERTY PROGRAM_CMDLINE ${PROGRAM_CMDLINE})
+
+# Add COMPILING_MIOSIX define for private headers
+target_compile_definitions(miosix PRIVATE $<$:COMPILING_MIOSIX>)
+
+# Configure linker file and options needed to link agains this library
+set_property(TARGET miosix PROPERTY LINK_DEPENDS ${MIOSIX_LINKER_SCRIPT_PATH})
+target_link_options(miosix INTERFACE
+ -qkernelspace
+ ${MIOSIX_BOARD_EXE_LINKER_FLAGS}
+ ${MIOSIX_CPU_FLAGS}
+ ${MIOSIX_CHIP_EXE_LINKER_FLAGS}
+ -Wl,-T${MIOSIX_LINKER_SCRIPT_PATH}
+ -L${CMAKE_CURRENT_SOURCE_DIR}
+ ${MIOSIX_OPT_EXCEPT}
+ -nostdlib
+ ${LINKER_GC_EXE_LINKER_FLAGS}
+ ${MIOSIX_EXE_LINKER_FLAGS}
+)
+
+# Run the kernel_global_objects.pl script on all kernel objects
+add_custom_command(
+ TARGET miosix PRE_LINK
+ COMMAND perl ${CMAKE_CURRENT_SOURCE_DIR}/tools/kernel_global_objects.pl $ --prefix=${MIOSIX_PREFIX}
+ VERBATIM
+ COMMAND_EXPAND_LISTS
+)
+
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
+ # Set multilib paths for Clang
+ target_link_directories(miosix PUBLIC
+ ${MIOSIX_GCC_PATH}/arm-miosix-eabi/lib/${MIOSIX_MULTILIB_PATH}
+ ${MIOSIX_GCC_PATH}/lib/gcc/arm-miosix-eabi/15.2.0/${MIOSIX_MULTILIB_PATH}
+ )
+endif()
diff --git a/miosix/Makefile b/miosix/Makefile
index 4c6f669ca..d38c689e4 100644
--- a/miosix/Makefile
+++ b/miosix/Makefile
@@ -4,18 +4,19 @@
##
## KPATH and CONFPATH are forwarded by the parent Makefile
-MAKEFILE_VERSION := 1.15
+MAKEFILE_VERSION := 3.01
include $(KPATH)/Makefile.kcommon
## List of all Miosix OS source files that have no special requirements
## and that must be built for each architecture (both .c and .cpp)
## These files will end up in libmiosix.a
SRC := \
-kernel/kernel.cpp \
+kernel/thread.cpp \
+kernel/lock.cpp \
kernel/sync.cpp \
kernel/error.cpp \
kernel/pthread.cpp \
-kernel/stage_2_boot.cpp \
+kernel/boot.cpp \
kernel/elf_program.cpp \
kernel/process.cpp \
kernel/process_pool.cpp \
@@ -42,8 +43,8 @@ filesystem/littlefs/lfs_miosix.cpp \
filesystem/littlefs/lfs.c \
filesystem/littlefs/lfs_util.c \
filesystem/romfs/romfs.cpp \
-stdlib_integration/libc_integration.cpp \
-stdlib_integration/libstdcpp_integration.cpp \
+kercalls/libc_integration.cpp \
+kercalls/libstdcpp_integration.cpp \
e20/e20.cpp \
e20/unmember.cpp \
util/util.cpp \
@@ -55,14 +56,14 @@ util/lcd44780.cpp
## Add the architecture dependand sources to the list of files to build.
## ARCH_SRC will contain different source files depending on which
## architecture/board is selected in config/Makefile.inc
-SRC += $(ARCH_SRC)
+SRC += $(BOARD_SRC) $(CHIP_SRC)
CFLAGS += -DCOMPILING_MIOSIX
CXXFLAGS += -DCOMPILING_MIOSIX
all: $(OBJ)
$(ECHO) "[PERL] Checking global objects"
- $(Q)perl _tools/kernel_global_objects.pl $(OBJ)
+ $(Q)perl $(TOOLS_DIR)/kernel_global_objects.pl $(OBJ)
$(ECHO) "[AR ] libmiosix.a"
$(Q)$(AR) rcs libmiosix.a $(OBJ)
diff --git a/miosix/Makefile.kcommon b/miosix/Makefile.kcommon
index 33528afe2..721e6b6a6 100644
--- a/miosix/Makefile.kcommon
+++ b/miosix/Makefile.kcommon
@@ -12,66 +12,84 @@ ifeq ($(CONFPATH),)
$(error Error)
endif
-include $(CONFPATH)/config/Makefile.inc
+include $(KPATH)/arch/Makefile.inc
## Includes the miosix base directory for C/C++
## Always include CONFPATH first, as it overrides the config file location
-AFLAGS ?= $(AFLAGS_BASE)
-CFLAGS ?= $(CFLAGS_BASE) -I$(CONFPATH) -I$(CONFPATH)/config/$(BOARD_INC) \
- -I. -I$(KPATH) -I$(KPATH)/arch/common -I$(KPATH)/$(ARCH_INC) \
- -I$(KPATH)/$(BOARD_INC) $(INCLUDE_DIRS) -MMD -MP
-CXXFLAGS ?= $(CXXFLAGS_BASE) -I$(CONFPATH) -I$(CONFPATH)/config/$(BOARD_INC) \
- -I. -I$(KPATH) -I$(KPATH)/arch/common -I$(KPATH)/$(ARCH_INC) \
- -I$(KPATH)/$(BOARD_INC) $(INCLUDE_DIRS) -MMD -MP
-LFLAGS ?= $(LFLAGS_BASE)
+AFLAGS = -qkernelspace \
+ $(BOARD_AFLAGS) $(CPU_FLAGS) $(CHIP_AFLAGS) $(AFLAGS_BASE) -c
+CFLAGS = -qkernelspace -D_MIOSIX_BOARDNAME=\"$(OPT_BOARD)\" \
+ -D_DEFAULT_SOURCE=1 $(BOARD_CFLAGS) $(CHIP_CFLAGS) $(CPU_FLAGS) \
+ $(OPT_OPTIMIZATION) $(CFLAGS_BASE) \
+ -I$(CONFPATH)/config -I$(KPATH)/config \
+ -I$(CONFPATH)/config/board/$(OPT_BOARD) \
+ -I$(KPATH)/config/board/$(OPT_BOARD) -I$(KPATH) -I$(KPATH)/arch \
+ -I$(KPATH)/$(CPU_INC) -I$(KPATH)/$(CHIP_INC) \
+ -I$(KPATH)/$(BOARD_INC) $(INCLUDE_DIRS) \
+ -MMD -MP -c
+CXXFLAGS = -qkernelspace -D_MIOSIX_BOARDNAME=\"$(OPT_BOARD)\" \
+ -D_DEFAULT_SOURCE=1 $(BOARD_CXXFLAGS) $(CHIP_CXXFLAGS) $(CPU_FLAGS)\
+ $(OPT_OPTIMIZATION) $(OPT_EXCEPT) $(CXXFLAGS_BASE) \
+ -I$(CONFPATH)/config -I$(KPATH)/config \
+ -I$(CONFPATH)/config/board/$(OPT_BOARD) \
+ -I$(KPATH)/config/board/$(OPT_BOARD) -I$(KPATH) -I$(KPATH)/arch \
+ -I$(KPATH)/$(CPU_INC) -I$(KPATH)/$(CHIP_INC) \
+ -I$(KPATH)/$(BOARD_INC) $(INCLUDE_DIRS) \
+ -MMD -MP -c
+LFLAGS = -qkernelspace $(BOARD_LFLAGS) $(CPU_FLAGS) $(CHIP_LFLAGS) \
+ -Wl,-Map,main.map -Wl,-T$(KPATH)/$(BOARD_INC)/$(LINKER_SCRIPT) \
+ $(OPT_EXCEPT) $(OPT_OPTIMIZATION) -nostdlib $(LFLAGS_BASE)
STDLIBS := -lmiosix -lstdc++ -lc -lm -lgcc -latomic
-LINK_LIBS ?= $(LIBS) -L$(KPATH) -Wl,--start-group $(STDLIBS) -Wl,--end-group
-TOOLS_DIR := $(KPATH)/_tools
+LINK_LIBS = $(LIBS) -L$(KPATH) -Wl,--start-group $(STDLIBS) -Wl,--end-group
+TOOLS_DIR := $(KPATH)/tools
+
+#TODO: this should be in arch/Makefile.inc but $(TOOLS_DIR) isn't defined there
+SZ := perl $(TOOLS_DIR)/miosix_size.pl --prefix=$(PREFIX)
OBJ ?= $(addsuffix .o, $(basename $(SRC)))
SUBDIRS := $(KPATH)
-# Not adding libsyscalls to SUBDIRS because it has to be built before
-LIBSYS := $(KPATH)/libsyscalls
+
+# Starting from Miosix 3, we compile the kernel with the -qkernelspace option
+# that was not present in GCC patches before 15.2.0mp4.0, so when using an
+# earlier compiler the user gets a compiler error even before the compiler
+# version check in miosix_settings.h
+# To fix this, we check the compiler version also here in the build system
+ifneq ($(shell perl $(TOOLS_DIR)/compiler_check.pl $(CC)), 0)
+ $(info You are using a too old or unsupported compiler.)
+ $(info Get the latest one from https://miosix.org/wiki/index.php?title=Miosix_Toolchain)
+ $(error Error)
+endif
+
+# Allow changing options in config/Makefile.inc from root makefile.
+# Note: you cannot export like this any variable that is not a path!
+export OPT_BOARD
+export OPT_OPTIMIZATION
+export OPT_EXCEPT
+export PROC_OPT_EXCEPT
+export CFLAGS_BASE
+export CXXFLAGS_BASE
.DEFAULT_GOAL := all
-image: main $(TOOLS_DIR)/filesystems/buildromfs
+image: main
$(ECHO) "[FS ] romfs.bin"
- $(Q)./$(TOOLS_DIR)/filesystems/buildromfs romfs.bin \
- --from-directory $(ROMFS_DIR)
+ $(Q)mx-buildromfs romfs.bin --from-directory $(ROMFS_DIR)
$(ECHO) "[IMG ] image.bin"
- $(Q)perl $(TOOLS_DIR)/filesystems/mkimage.pl image.bin main.bin romfs.bin
+ $(Q)perl $(TOOLS_DIR)/mkimage.pl image.bin main.bin romfs.bin
-$(TOOLS_DIR)/filesystems/buildromfs:
- $(ECHO) "[HOST] buildromfs"
- $(Q)mkdir -p $(TOOLS_DIR)/filesystems/build
- $(Q)cd $(TOOLS_DIR)/filesystems/build \
- && cmake --log-level=ERROR .. && $(MAKE) -s
-
-all-recursive: $(if $(POSTLD), $(LIBSYS)/libsyscalls.a)
+all-recursive:
$(foreach i,$(SUBDIRS),$(MAKE) -C $(i) \
KPATH=$(shell perl $(TOOLS_DIR)/relpath.pl $(i) $(KPATH)) \
CONFPATH=$(shell perl $(TOOLS_DIR)/relpath.pl $(i) $(CONFPATH)) \
- || exit 1;)
-
-$(LIBSYS)/libsyscalls.a:
- $(Q)$(MAKE) -C $(LIBSYS) \
- KPATH=$(shell perl $(TOOLS_DIR)/relpath.pl $(LIBSYS) $(KPATH)) \
- CONFPATH=$(shell perl $(TOOLS_DIR)/relpath.pl $(LIBSYS) $(CONFPATH)) \
- || exit 1;
+ &&) exit 0
clean-recursive:
$(foreach i,$(SUBDIRS),$(MAKE) -C $(i) \
KPATH=$(shell perl $(TOOLS_DIR)/relpath.pl $(i) $(KPATH)) \
CONFPATH=$(shell perl $(TOOLS_DIR)/relpath.pl $(i) $(CONFPATH)) \
- clean || exit 1;)
- $(Q)$(MAKE) -C $(LIBSYS) \
- KPATH=$(shell perl $(TOOLS_DIR)/relpath.pl $(LIBSYS) $(KPATH)) \
- CONFPATH=$(shell perl $(TOOLS_DIR)/relpath.pl $(LIBSYS) $(CONFPATH)) \
- clean || exit 1;
- $(Q)rm -f image.bin romfs.bin $(TOOLS_DIR)/filesystems/buildromfs
- $(Q)rm -rf $(TOOLS_DIR)/filesystems/build
+ clean &&) exit 0
+ $(Q)rm -f image.bin romfs.bin
program:
$(PROG)
@@ -86,4 +104,8 @@ program:
%.o: %.s
$(ECHO) "[AS ] $<"
- $(Q)$(AS) $(AFLAGS) $< -o $@
+ $(Q)$(CC) $(AFLAGS) $< -o $@
+
+%.o: %.S
+ $(ECHO) "[AS ] $<"
+ $(Q)$(CC) $(AFLAGS) $< -o $@
diff --git a/miosix/Makefile.pcommon b/miosix/Makefile.pcommon
new file mode 100644
index 000000000..003e83ce6
--- /dev/null
+++ b/miosix/Makefile.pcommon
@@ -0,0 +1,47 @@
+##
+## Common code for building Miosix processes
+##
+
+## KPATH and CONFPATH should be forwarded by the parent Makefile
+ifeq ($(KPATH),)
+ $(info Error: KPATH not specified)
+ $(error Error)
+endif
+ifeq ($(CONFPATH),)
+ $(info Error: CONFPATH not specified)
+ $(error Error)
+endif
+
+include $(KPATH)/arch/Makefile.inc
+
+AFLAGS := $(CPU_FLAGS) $(PROC_AFLAGS_BASE) -c
+CFLAGS := -D_DEFAULT_SOURCE=1 $(CPU_FLAGS) $(PROC_OPT_OPTIMIZATION) \
+ $(PROC_OPT_EXCEPT) $(PROC_CFLAGS_BASE) $(INCLUDE_DIRS) \
+ -MMD -MP -c
+CXXFLAGS := -D_DEFAULT_SOURCE=1 $(CPU_FLAGS) $(PROC_OPT_OPTIMIZATION) \
+ $(PROC_OPT_EXCEPT) $(PROC_CXXFLAGS_BASE) $(INCLUDE_DIRS) \
+ -MMD -MP -c
+LFLAGS := $(CPU_FLAGS) $(PROC_LFLAGS_BASE)
+LINK_LIBS := $(LIBS)
+
+#TODO: this should be in arch/Makefile.inc but $(TOOLS_DIR) isn't defined there
+TOOLS_DIR := $(KPATH)/tools
+SZ := perl $(TOOLS_DIR)/miosix_size.pl --prefix=$(PREFIX)
+
+OBJ ?= $(addsuffix .o, $(basename $(SRC)))
+
+%.o : %.cpp
+ $(ECHO) "[CXX ] $<"
+ $(Q)$(CXX) $(CXXFLAGS) $< -o $@
+
+%.o : %.c
+ $(ECHO) "[CC ] $<"
+ $(Q)$(CC) $(CFLAGS) $< -o $@
+
+%.o: %.s
+ $(ECHO) "[AS ] $<"
+ $(Q)$(CC) $(AFLAGS) $< -o $@
+
+%.o: %.S
+ $(ECHO) "[AS ] $<"
+ $(Q)$(CC) $(AFLAGS) $< -o $@
diff --git a/miosix/_doc/textdoc/Directories.txt b/miosix/_doc/textdoc/Directories.txt
deleted file mode 100644
index 9231aa748..000000000
--- a/miosix/_doc/textdoc/Directories.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-Miosix 2.00+ directory tree
-===========================
-Directories marked with [x] contain code or configuration files that are used
-to build the kernel while directories marked with [ ] contain other stuff
-(documentation, examples).
-
-[x] //Root directory, contains the application code
- |
- +--[x] miosix //Contains all Miosix OS code
- |
- +--[ ] _doc //Kernel documentation (doxygen + pdf + txt)
- |
- +--[ ] _examples //Contains some example applications
- |
- +--[ ] _tools //Contains various tools used by Miosix
- | |
- | +--[ ] bootloaders //Contain custom bootloaders for some boards
- | |
- | +--[ ] compiler //Contains scripts used to build GCC with the
- | | //patches required to compile the kernel
- | |
- | +--[ ] testsuite //Contains the kernel testsuite
- | .
- | .
- |
- +--[x] config //Contains arch-independent configuration files
- |
- +--[x] e20 //Contains the kernel's event driven API
- |
- +--[x] filesystem //Filesystem code
- |
- +--[x] interfaces //Contains interfaces between kernel and
- | //architecture dependent code
- |
- +--[x] kernel //Contains the architecture independent kernel part
- | |
- | +--[x] schedulers //Contains the various schedulers
- | |
- | +--[x] priority
- | |
- | +--[x] control_based
- | |
- | +--[x] edf
- |
- +--[x] util //Contains utility code, architcture independent
- |
- +--[x] arch //Contains architecture dependent code
- |
- +--[x] common //Contains drivers that are usable across multiple arch
- |
- +--[x] arm7_lpc2000 //Name of folder is 'cpu model' + 'mcu family'
- | |
- | +--[x] common //Common code for this architecture
- | |
- | +--[x] lpc2138_miosix_board //Name is 'chip name'+'_'+'board name'
- | |
- | +--[x] interfaces-impl //Implmentation of miosix/interfaces
- | |
- | +--[x] drivers //Serial ports, board support package, etc.
- | |
- | +--[x] core //Boot and exception handling code
- |
- .
- . Other target architectures
- .
diff --git a/miosix/_doc/textdoc/Error debug.txt b/miosix/_doc/textdoc/Error debug.txt
deleted file mode 100644
index 85a05c063..000000000
--- a/miosix/_doc/textdoc/Error debug.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-When the Miosix kernel encounters an ARM data abort, or undefined instruction
-interrupt, it prints the address of the instructon that caused the error and
-reboots the system.
-This can be caused by a stack overflow, or dangling reference.
-To convert this address into the name of the function that caused the error, and
-the exact code line where the program stopped, use this command:
-
-arm-miosix-eabi-addr2line -e main.elf -f | arm-miosix-eabi-c++filt
-
-Example:
-
-arm-miosix-eabi-addr2line 0x0000d494 -e main.elf -f | arm-miosix-eabi-c++filt
-miosix::Timer::interval() const
-miosix/kernel/sync.cpp:174
-
-This says that the function is Timer::interval() in file sync.cpp and that the
-program stopped at line 174
-
-Please note that for this operation to be reliablle compiler optimization must
-be turned off (using -O0 instead of -Os) at least for the file that caused the
-error.
diff --git a/miosix/_doc/textdoc/Todo.txt b/miosix/_doc/textdoc/Todo.txt
deleted file mode 100644
index 000034838..000000000
--- a/miosix/_doc/textdoc/Todo.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-
-TODO: implement code to make atexit() stuff functional. Stubs are already in
-syscalls.cpp
-
-TODO: EDF scheduler needs a way for a thread to set the priority (tht is, the
-deadline) of another thread, necessary for non periodic tasks.
-
-TODO: add Thread::trySleep()
-
-TODO: evaluate if it is possible to make a strong separation between public and
-private headers, and use pImpl in public headers and implementation classes
-defined in private headers, as with the mxusb library. That would both get rid
-of friends and finally make it clear what headers are usable by client code and
-which one are private
-
-TODO: add ThreadInternals class to get rid of all the friends of Thread
-
-TODO: filesystem boot options
-1) synchronous filesystem initialization: filesystem is initialized before
-main() is called.
-2) asynchronous filesystem initialization: filesystem is initialized in a
-separate thread that is spawned and runs in parallel with main(). This
-provides faster boot, but only if main() does not use immediately the
-filesystem
-3) lazy filesystem initialization: filesystem is initialized when user code
-makes the first call to it. This implies the first call can take a long time.
-
-TODO: check hashtable in filesystem.cpp
diff --git a/miosix/_doc/textdoc/gcc threadsafety.txt b/miosix/_doc/textdoc/gcc threadsafety.txt
deleted file mode 100644
index de5433738..000000000
--- a/miosix/_doc/textdoc/gcc threadsafety.txt
+++ /dev/null
@@ -1,40 +0,0 @@
-Note: this is no longer a TODO, since essentially everything has been done as
-of Miosix 1.58. Only kept for historic reasons.
-=============================================================================
-
-Useful info
-
- libstdc++-v3/doc/html/manual/internals.html#internals.thread_safety
- libstdc++-v3/doc/html/manual/ext_concurrency.htm
-
-Key areas to make libstdc++ threadsafe
-- gcc/gthr.h is the root of all thread safety issues. Added gthr-miosix.h
- FIXED
-
-- _Atomic_word, and its supporting operations need to be available in
- libstdc++/config/cpu/
- FIXED
-
-- libstdc++/include/ext/concurrence.h declares __mutex, __recursive_mutex and
- __cond used throughut the library, that should work with posix stuff but
- pull in exceptions. Easy to fix with #undef __EXCEPTIONS in that file.
- FIXED
-
-- libstdc++/include/ext/concurrence.h defines _Lock_policy which is then used
- as a template parameter to specialize stuff for thread safety. Should be
- automatically fixed given __GTHREADS is defined. Indeed, it is set to
- _S_mutex meaning that each shared_ptr or weak_ptr will contain a mutex.
- (This because of the lack of compare and swap atomic op).
- FIXED
-
-- eh_globals.cc uses TLS.
- FIXED
-
-- unwind-sjlj.cc uses TLS.
- FIXED
-
-- Check the value of #define __glibcxx_base_allocator to see if it's the
- new allocator, otherwise since the mt_allocator requires TLS which isn't
- provided. grep -R "__glibcxx_base_allocator" . in the install dir shows
- it's the new allocator.
- FIXED
diff --git a/miosix/_doc/textdoc/newlib threadsafety.txt b/miosix/_doc/textdoc/newlib threadsafety.txt
deleted file mode 100644
index 903382140..000000000
--- a/miosix/_doc/textdoc/newlib threadsafety.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-Note: this is no longer a TODO, since essentially everything has been done as
-of Miosix 1.58. Only kept for historic reasons.
-=============================================================================
-
-Thread safety issues:
-This is a (probably incomplete) list of parts of newlib that require
-locks or atomic ops for thread safety.
-
-- malloc, but newlib already provides __malloc_lock() and __malloc_unlock()
- that take care of this issue.
- FIXED
-
-- newlib/libc/stdlib/__atexit.c
- FIXED
-
-- newlib stdio library, seems to require locks here and there for files.
- It also looks there's a mutex in every FILE struct.
- FIXED
diff --git a/miosix/_doc/textdoc/stm32-bootloader.txt b/miosix/_doc/textdoc/stm32-bootloader.txt
deleted file mode 100644
index 3ef8c6dd6..000000000
--- a/miosix/_doc/textdoc/stm32-bootloader.txt
+++ /dev/null
@@ -1,123 +0,0 @@
-Bootloader for stm3210e-eval
-----------------------------
-This bootloader allows to load code to external RAM, for easy development
-without wearing out the STM32's FLASH which is only rated 10000 write cycles.
-Ofcourse, it is not suitable for release code, since at every reboot the loaded
-code gets lost. Please also note that running code from external RAM will be
-~10 times slower than internal FLASH, but for code development and debugging
-it is fine.
-
-This bootloader contains code to forward interrupts @ 0x6800000 which is the
-start of the external RAM.
-
-
-Installation on PC
-------------------
-You'll need gcc (and g++), CMake and the boost libraries installed.
-Windows build was not tested but should work. Linux and Mac OSX were tested.
-
-run these commands with a shell opened in the
-miosix/_tools/booltloaders/stm32/pc_loader/pc_loader
-directory
-
-mkdir build
-cd build
-cmake ..
-make
-cp pc_loader ..
-
-
-Installation on microcontroller
--------------------------------
-Use your preferred method of loading code to the STM32, such as
-serial bootloader or JTAG. Do not use the ST USB bootloader since it
-reserves some space in the FLASH for the ST USB bootloader itself.
-This Miosix bootloader is not PIC (position independent code) so loading
-it at another address will fail.
-
-
-Loading code using the bootloader in external RAM
--------------------------------------------------
-1) Make sure Miosix is configured to run from the STM32'e external RAM:
-in miosix/config/Makefile.inc options:
-
-OPT_BOARD := stm32f103ze_stm3210e-eval
-
-LINKER_SCRIPT := $(LINKER_SCRIPT_PATH)stm32_512k+64k_all_in_xram.ld
-
-XRAM := -D__ENABLE_XRAM -D__CODE_IN_XRAM
-
-should be uncommented (no # at the start of the line)
-
-2) Build Miosix as usual with
-
-make
-
-3) Connect the USART1 of the STM32 board with a serial cable to the PC
-the expected device name for the serial port is /dev/ttyUSB0,
-if not modify the line
-
-PROGRAM_CMDLINE := miosix/_tools/bootloaders/pc_loader/pc_loader \
- /dev/ttyUSB0 main.bin
-
-in miosix/config/Makefile.inc
-
-4) then do a
-
-make program
-
-The bootloader should send data to the board, and run the binary.
-
-
-Debugging code with Openocd in external RAM
--------------------------------------------
-The bootloader should be loaded to the STM32's FLASH memeory to forward
-interrupts @ 0x6800000, or Miosix will fail at the first interrupt.
-
-Then run openocd in a shell:
-
-sudo openocd -f miosix/arch/cortexM3_stm32f1/stm32f103ze_stm3210e-eval/stm32f10x_eval.cfg
-
-and in another shell type:
-
-arm-eabi-gdb main.elf
-target remote :3333
-monitor soft_reset_halt
-load
-c
-
-After typing c miosix will start running. You can set breakpoints with
-"break" and see variables with "print". For a more in-depth tutorial see
-a gdb guide.
-
-
-Running code without bootloader, from internal FLASH
-----------------------------------------------------
-This is essential for release builds, and for other STM32 based boards that
-lack external RAM. By running the code from FLASH it will run at full
-processor speed (~10 times faster than from internal RAM) and code will
-not be erased by powercycling.
-
-To do so configure Miosix's linker script for internal FLASH:
-In miosix/config/Makefile.inc
-
-select:
-
-OPT_BOARD := stm32f103ze_stm3210e-eval
-
-LINKER_SCRIPT := $(LINKER_SCRIPT_PATH)stm32_512k+64k_rom.ld
-
-and comment out these two lines:
-
-# XRAM := -D__ENABLE_XRAM
-# XRAM := -D__ENABLE_XRAM -D__CODE_IN_XRAM
-
-Then use your preferred method of loading code to the STM32, such as
-serial bootloader or JTAG. Do not use the ST USB bootloader since it
-reserves some space in the FLASH for the ST USB bootloader itself.
-This Miosix kernel is not PIC (position independent code) so loading
-it at another address will fail.
-
-
-
-
diff --git a/miosix/_examples/atsam4l_lcd/main.cpp b/miosix/_examples/atsam4l_lcd/main.cpp
deleted file mode 100644
index 0cf03b1f8..000000000
--- a/miosix/_examples/atsam4l_lcd/main.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-
-#include
-#include "miosix.h"
-#include "drivers/lcd.h"
-
-using namespace std;
-using namespace miosix;
-
-int main()
-{
- start32kHzOscillator();
-
- //Configure GPIO of LCD, PA8 to PA23 = 4 COM and 12 SEG
- for(int i = 8; i <= 23; i++)
- {
- GpioPin pin(GPIOA_BASE,i);
- pin.mode(Mode::ALTERNATE);
- pin.alternateFunction('F');
- }
-
- initLcd(12);
-
-// enableBlink();
- for(int i = 0; ; i++)
- {
- int t = i;
- beginUpdate();
- for(int j = 0; j < 6 ; j++, t /= 10) setDigit(j, digitTbl[t % 10]);
- endUpdate();
- Thread::sleep(10);
- }
-}
diff --git a/miosix/_examples/blinking_led/simple.cpp b/miosix/_examples/blinking_led/simple.cpp
deleted file mode 100644
index 1988dfef5..000000000
--- a/miosix/_examples/blinking_led/simple.cpp
+++ /dev/null
@@ -1,24 +0,0 @@
-#include
-#include
-#include "miosix.h"
-
-using namespace std;
-using namespace miosix;
-
-typedef Gpio led;
-
-int main()
-{
-
- led::mode(Mode::OUTPUT);
-
- for(;;) {
- led::high();
- sleep(1);
- led::low();
- sleep(1);
- }
-
- return 0;
-
-}
\ No newline at end of file
diff --git a/miosix/_examples/datalogger/Makefile b/miosix/_examples/datalogger/Makefile
deleted file mode 100644
index e246c61c6..000000000
--- a/miosix/_examples/datalogger/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-##
-## Makefile for Miosix embedded OS
-##
-
-## Path to kernel/config directories (edited by init_project_out_of_git_repo.pl)
-KPATH := miosix
-CONFPATH := $(KPATH)
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/Makefile.kcommon
-
-##
-## List here your source files (both .s, .c and .cpp)
-##
-SRC := main.cpp Logger.cpp tscpp/buffer.cpp
-
-##
-## List here additional include directories (in the form -Iinclude_dir)
-##
-INCLUDE_DIRS :=
-
-##
-## List here additional static libraries with relative path
-##
-LIBS :=
-
-##
-## List here subdirectories which contains makefiles
-##
-SUBDIRS +=
-
-##
-## Attach a romfs filesystem image after the kernel
-##
-ROMFS_DIR :=
-
-all: $(if $(ROMFS_DIR), image, main)
-
-main: $(OBJ) all-recursive
- $(ECHO) "[LD ] main.elf"
- $(Q)$(CXX) $(LFLAGS) -o main.elf $(OBJ) $(LINK_LIBS)
- $(ECHO) "[CP ] main.hex"
- $(Q)$(CP) -O ihex main.elf main.hex
- $(ECHO) "[CP ] main.bin"
- $(Q)$(CP) -O binary main.elf main.bin
- $(Q)$(SZ) main.elf
-
-clean: clean-recursive
- $(Q)rm -f $(OBJ) $(OBJ:.o=.d) main.elf main.hex main.bin main.map
-
--include $(OBJ:.o=.d)
diff --git a/miosix/_examples/datalogger/Readme.txt b/miosix/_examples/datalogger/Readme.txt
deleted file mode 100644
index 631a6a9dd..000000000
--- a/miosix/_examples/datalogger/Readme.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-High performance logging for Miosix
-
-Some applications - possibly real-time - require to log data, and do so from
-multiple threads. While a simple library that opens a file and writes to is
-sufficient for simple applications, there are some problems:
-- the Miosix filesystem uses typically an SD card as storage, and SD and other
- FLASH based storage devices may pause to do wear leveling. SD cards, even good
- quality class 10 ones, may pause for up to 1 second.
-- the Miosix OS, contrary to Linux, does not do much buffering at the filesystem
- layer. This is desirable, since when an OS runs on as little as a few tens of
- KB of RAM, the last thing you want is an OS that uses an unquatifiable amount
- of memory.
-
-This example code shows a high-performance logging class that
-- has a nonblocking log() member function, which can be called concurrently from
- multiple threads, to log a user-defined class or struct.
- Tscpp (https://github.com/fedetft/tscpp) is used to serialize data.
- Being nonblocking, it can be called also in real-time threads of your codebase
- with confidence.
-- buffers data to compensate for the delays of the storage medium
-
-To configure the logger for your application, to trade off buffer space vs write
-data rate, you can edit Logger.h
-
- static const unsigned int filenameMaxRetry = 100; ///< Limit on new filename
- static const unsigned int maxRecordSize = 128; ///< Limit on logged data
- static const unsigned int numRecords = 128; ///< Size of record queues
- static const unsigned int bufferSize = 4096;///< Size of each buffer
- static const unsigned int numBuffers = 4; ///< Number of buffers
- static constexpr bool logStatsEnabled = true;///< Log logger stats?
diff --git a/miosix/_examples/datalogger/main.cpp b/miosix/_examples/datalogger/main.cpp
deleted file mode 100644
index a6c0c9575..000000000
--- a/miosix/_examples/datalogger/main.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-
-#include
-#include
-#include
-#include
-#include "Logger.h"
-#include "ExampleData.h"
-
-using namespace std;
-using namespace std::chrono;
-using namespace miosix;
-
-volatile bool stop=false;
-
-void loggerDemo(void*)
-{
- /*
- * Logger is configured as:
- * maxRecordSize = 128
- * numRecords = 128
- * bufferSize = 4096
- * numBuffers = 4
- *
- * Serialized ExampleData is 30 bytes
- * There are 128 entries in the record queue, and (4-1)=3 4096 buffers for
- * buffering (the fourth buffer is the one being written).
- * Thus, the buffering system can hold 4096*3/30+128=537 ExampleData before
- * filling. Considering the rule of thumb that a high quality SD card may
- * block for up to 1s, the maximum data rate is 537Hz.
- *
- * An estimate of the memory occupied by the logger is:
- * buffers 4*(4096+4)+128*(128+4)=33296
- * thread stacks 1536+1536+2048=5120
- * so a total of 38KB. The actual memory occupied will be a bit larger
- * due to unaccounted variables and overheads.
- *
- * Note: although this demo is simple, the logger allows to:
- * - log data from multiple threads while being nonblocking
- * - log different classes/structs in any order, provided their serialized
- * size is less than maxRecordSize and that they meet the requirements
- * to be serialized with tscpp (github.com/fedetft/tscpp)
- */
- auto& logger=Logger::instance();
- logger.start();
-
- int a=0,b=0;
- auto period=milliseconds(2); //2ms, 500Hz
- for(auto t=system_clock::now();;)
- {
- if(stop) break;
- t+=period;
- auto now=system_clock::now();
- if(t>now)
- {
- this_thread::sleep_until(t);
- } else {
- b++; //Deadline miss
- t=now;
- }
- ExampleData ed(a++,b,t.time_since_epoch().count());
- logger.log(ed);
- }
-
- logger.stop();
-
- iprintf("Lost %d samples, missed %d deadlines\n",
- logger.getStats().statDroppedSamples,b);
-}
-
-int main()
-{
- puts("Type enter to start logger demo");
- getchar();
- auto t=Thread::create(loggerDemo,2048,PRIORITY_MAX-1,nullptr,Thread::JOINABLE);
- puts("Type enter to stop logger demo");
- getchar();
- stop=true;
- t->join();
- puts("Bye");
-}
diff --git a/miosix/_examples/datalogger/tscpp b/miosix/_examples/datalogger/tscpp
deleted file mode 160000
index 4a5f54076..000000000
--- a/miosix/_examples/datalogger/tscpp
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 4a5f54076ea924dacb5414c0f6183a669efc1eff
diff --git a/miosix/_examples/ir_decoder/ir_decoder.cpp b/miosix/_examples/ir_decoder/ir_decoder.cpp
deleted file mode 100644
index 6df9f5305..000000000
--- a/miosix/_examples/ir_decoder/ir_decoder.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-
-#include
-#include
-#include
-#include "e20/e20.h"
-#include "miosix.h"
-#include "kernel/scheduler/scheduler.h"
-
-using namespace std;
-using namespace miosix;
-
-//Connect IR sensor output to PC6 of the stm32f4discovery
-typedef Gpio timerIn;
-
-static unsigned short previous=0;
-
-void start()
-{
- previous=0;
- printf("start\n");
-}
-
-void timestamp(unsigned short t)
-{
- unsigned short delta=t-previous;
- previous=t;
- printf("%d\n",delta);
-}
-
-void stop()
-{
- printf("stop\n");
-}
-
-FixedEventQueue<100,12> queue;
-
-void __attribute__((used)) tim3impl()
-{
- bool hppw=false;
- if(TIM3->SR & TIM_SR_UIF)
- {
- queue.IRQpost(bind(stop),hppw);
- } else {
- if(TIM3->CR1 & TIM_CR1_CEN)
- {
- queue.IRQpost(bind(timestamp,TIM3->CCR1),hppw);
- } else {
- TIM3->CR1|=TIM_CR1_CEN; //Start timer at first edge
- queue.IRQpost(bind(start),hppw);
- }
- }
- TIM3->SR=0; //Clear interrupt flag
- if(hppw) Scheduler::IRQfindNextThread();
-}
-
-void __attribute__((naked)) TIM3_IRQHandler()
-{
- saveContext();
- asm volatile("bl _Z8tim3implv");
- restoreContext();
-}
-
-int main()
-{
- {
- FastInterruptDisableLock dLock;
- RCC->APB1ENR |= RCC_APB1ENR_TIM3EN;
- RCC_SYNC();
- }
- TIM3->CNT=0;
- TIM3->PSC=84-1; //Prescaler clocked at 84MHz, timer incremented every 1us
- TIM3->ARR=0xffff;
- TIM3->EGR=TIM_EGR_UG; //Update ARR shadow register
- TIM3->SR=0; //Clear interrupt flag caused by setting UG
- TIM3->CCMR1=TIM_CCMR1_CC1S_0;
- TIM3->CCER=TIM_CCER_CC1P
- | TIM_CCER_CC1NP
- | TIM_CCER_CC1E;
- TIM3->DIER=TIM_DIER_CC1IE
- | TIM_DIER_UIE;
- TIM3->CR1=TIM_CR1_OPM; //One pulse mode, timer not started yet
- timerIn::mode(Mode::ALTERNATE);
- timerIn::alternateFunction(2);
- NVIC_SetPriority(TIM3_IRQn,8);
- NVIC_EnableIRQ(TIM3_IRQn);
- queue.run();
-}
diff --git a/miosix/_examples/led_display/main.cpp b/miosix/_examples/led_display/main.cpp
deleted file mode 100644
index 14eeb6b37..000000000
--- a/miosix/_examples/led_display/main.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-
-//Example to drive an 8-digit common cathode multiplexed 7-segment LED display.
-//Add current limiting resistors and digit drivers as needed.
-//Written for stm32vldiscovery, change GPIOs and the line mentioning AFIO->MAPR
-//if targeting another board.
-
-#include
-#include
-
-using namespace miosix;
-
-typedef Gpio segmentA;
-typedef Gpio segmentB;
-typedef Gpio segmentC;
-typedef Gpio segmentD;
-typedef Gpio segmentE;
-typedef Gpio segmentF;
-typedef Gpio segmentG;
-typedef Gpio segmentDP;
-typedef Gpio digit0;
-typedef Gpio digit1;
-typedef Gpio digit2;
-typedef Gpio digit3;
-typedef Gpio digit4;
-typedef Gpio digit5;
-typedef Gpio digit6;
-typedef Gpio digit7;
-
-static void outSegment(unsigned char segment)
-{
- #define S2G(x,y,z) if(y & (1<MAPR=1<<25;//To free PB3 and PB4 from JTAG in stm32vldiscovery
- CONFIG(digit0);
- CONFIG(digit1);
- CONFIG(digit2);
- CONFIG(digit3);
- CONFIG(digit4);
- CONFIG(digit5);
- CONFIG(digit6);
- CONFIG(digit7);
- CONFIG(segmentA);
- CONFIG(segmentB);
- CONFIG(segmentC);
- CONFIG(segmentD);
- CONFIG(segmentE);
- CONFIG(segmentF);
- CONFIG(segmentG);
- CONFIG(segmentDP);
- }
- #undef CONFIG
- #define DIGIT(x,y) \
- outSegment(digits[y]); x::low(); Thread::sleep(2); x::high()
- for(;;)
- {
- DIGIT(digit0,0);
- DIGIT(digit1,1);
- DIGIT(digit2,2);
- DIGIT(digit3,3);
- DIGIT(digit4,4);
- DIGIT(digit5,5);
- DIGIT(digit6,6);
- DIGIT(digit7,7);
- }
- #undef DIGIT
-}
-
-static const unsigned char digitTable[]=
-{
- 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
-};
-
-static void number(int x)
-{
- for(int i=0;i<8;i++)
- {
- digits[i]=digitTable[x % 10];
- x/=10;
- }
-}
-
-int main()
-{
- memset(digits,0,sizeof(digits));
- Thread::create(displayThread,STACK_MIN);
- for(int i=0;;i++)
- {
- number(i);
- Thread::sleep(10);
- }
-}
diff --git a/miosix/_examples/sad_trombone/Makefile b/miosix/_examples/sad_trombone/Makefile
deleted file mode 100644
index 6ecd26db3..000000000
--- a/miosix/_examples/sad_trombone/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-##
-## Makefile for Miosix embedded OS
-##
-
-## Path to kernel/config directories (edited by init_project_out_of_git_repo.pl)
-KPATH := miosix
-CONFPATH := $(KPATH)
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/Makefile.kcommon
-
-##
-## List here your source files (both .s, .c and .cpp)
-##
-SRC := main.cpp player.cpp adpcm.c
-
-##
-## List here additional include directories (in the form -Iinclude_dir)
-##
-INCLUDE_DIRS :=
-
-##
-## List here additional static libraries with relative path
-##
-LIBS :=
-
-##
-## List here subdirectories which contains makefiles
-##
-SUBDIRS +=
-
-##
-## Attach a romfs filesystem image after the kernel
-##
-ROMFS_DIR :=
-
-all: $(if $(ROMFS_DIR), image, main)
-
-main: $(OBJ) all-recursive
- $(ECHO) "[LD ] main.elf"
- $(Q)$(CXX) $(LFLAGS) -o main.elf $(OBJ) $(LINK_LIBS)
- $(ECHO) "[CP ] main.hex"
- $(Q)$(CP) -O ihex main.elf main.hex
- $(ECHO) "[CP ] main.bin"
- $(Q)$(CP) -O binary main.elf main.bin
- $(Q)$(SZ) main.elf
-
-clean: clean-recursive
- $(Q)rm -f $(OBJ) $(OBJ:.o=.d) main.elf main.hex main.bin main.map
-
--include $(OBJ:.o=.d)
diff --git a/miosix/_examples/sad_trombone/Readme.txt b/miosix/_examples/sad_trombone/Readme.txt
deleted file mode 100644
index a3e9e0e0a..000000000
--- a/miosix/_examples/sad_trombone/Readme.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-
-This example shows how to synchronize between a thread and a DMA peripheral.
-To run this example, copy the content of this directory into the top level
-directory.
-
-This example supports the following two boards:
-
-1) stm32f4discovery
-===================
-
-This board has a builting I2S audio DAC, just configure the kernel for
-this board (OPT_BOARD := stm32f407vg_stm32f4discovery in Makefile.inc),
-make; make program and plug headphone jack to the board's connector.
-
-2) stm32vldiscovery
-===================
-
-Follow the kernel configuration procedure for this board here:
-
-http://miosix.org/boards/stm32vldiscovery-config.html
-
-To be able to hear the audio file, build one of the two circuits found in
-the circuit.jpeg file. The top one is a speaker amplifier, the bottom one
-is a filter whose output is suitable to drive an amplified speaker
-(such as a PC speaker).
diff --git a/miosix/_examples/tinyusb/Makefile b/miosix/_examples/tinyusb/Makefile
deleted file mode 100644
index 9fa1c60f7..000000000
--- a/miosix/_examples/tinyusb/Makefile
+++ /dev/null
@@ -1,50 +0,0 @@
-##
-## Makefile for Miosix embedded OS
-##
-
-## Path to kernel/config directories (edited by init_project_out_of_git_repo.pl)
-KPATH := miosix
-CONFPATH := $(KPATH)
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/Makefile.kcommon
-
-##
-## List here your source files (both .s, .c and .cpp)
-##
-SRC := main.cpp
-
-##
-## List here additional include directories (in the form -Iinclude_dir)
-##
-INCLUDE_DIRS := -I./tinyusb/tinyusb/src -I./tinyusb
-
-##
-## List here additional static libraries with relative path
-##
-LIBS := tinyusb/libtinyusb.a
-
-##
-## List here subdirectories which contains makefiles
-##
-SUBDIRS += tinyusb
-
-##
-## Attach a romfs filesystem image after the kernel
-##
-ROMFS_DIR :=
-
-all: $(if $(ROMFS_DIR), image, main)
-
-main: $(OBJ) all-recursive
- $(ECHO) "[LD ] main.elf"
- $(Q)$(CXX) $(LFLAGS) -o main.elf $(OBJ) $(LINK_LIBS)
- $(ECHO) "[CP ] main.hex"
- $(Q)$(CP) -O ihex main.elf main.hex
- $(ECHO) "[CP ] main.bin"
- $(Q)$(CP) -O binary main.elf main.bin
- $(Q)$(SZ) main.elf
-
-clean: clean-recursive
- $(Q)rm -f $(OBJ) $(OBJ:.o=.d) main.elf main.hex main.bin main.map
-
--include $(OBJ:.o=.d)
diff --git a/miosix/_examples/tinyusb/README.md b/miosix/_examples/tinyusb/README.md
deleted file mode 100644
index 38c88d9d1..000000000
--- a/miosix/_examples/tinyusb/README.md
+++ /dev/null
@@ -1,100 +0,0 @@
-# TinyUSB example
-
-This example shows how to use TinyUSB (https://www.tinyusb.org/) with
-Miosix, implementing a simple application which exposes via USB a virtual
-serial port which echoes incoming characters.
-
-As is, the example is made for a stm32f4discovery board, but it can be adapted
-for other boards.
-
-## Structure of the example
-
-The `tinyusb` directory contains a separate Makefile just for building
-TinyUSB separately, creating a static library called `libtinyusb.a`. This is
-done to ensure the TinyUSB sources are compiled as C++, which simplifies
-the integration with Miosix.
-
-The TinyUSB source code should be cloned (either using git normally or by
-adding a submodule) inside the `tinyusb` directory. Thus, the final directory
-structure will be:
-
-```
-main.cpp
-Makefile
-tinyusb\
- Makefile
- tusb_config.h
- tusb_os_custom.h
- cmsis_stubs\
- stm32f2xx.h
- ...
- tinyusb\ <- Root of the TinyUSB source
- docs\
- examples\
- hw\
- lib\
- src\
- test\
- tools\
- LICENSE
- README.rst
- ...
-```
-
-The example was developed based on TinyUSB 0.15.0 (commit SHA
-86c416d4c0fb38432460b3e11b08b9de76941bf5) and may not work with newer versions.
-When updating TinyUSB, always remember to also update the Makefile to include
-any new source code file in TinyUSB (or remove any file that was removed).
-
-The `tinyusb/tusb_os_custom.h` file contains the Miosix-specific implementations
-for the concurrency primitives required by TinyUSB.
-
-The `tinyusb/tusb_config.h` file configures which class drivers and ports are
-enabled, and which device driver should be used by TinyUSB. Always make sure
-that the definition of `CFG_TUSB_MCU` is consistent with the board selection
-made in Miosix's `Makefile.inc`.
-
-The `cmsis_stubs` directory contains files named in the same way as the
-STM32 CMSIS device headers, for use by TinyUSB which includes these files
-directly in its device drivers. Unfortunately, due to the directory structure
-of Miosix, these files cannot be included by TinyUSB directly without issues;
-one is supposed to include `interfaces/arch_registers.h` instead. Using these
-files we allow TinyUSB to include `interfaces/arch_registers.h` without
-needing to modify TinyUSB's source code. Only a few example stub files have been
-included; add new stubs as needed for your project.
-
-## Compiling this example
-
-To try out this example, get a stm32f4-discovery board, then follow these steps:
-
-1. Copy and paste the `tinyusb` directory, the `main.cpp` and `Makefile` in the
- root of the repository
-2. Select the `stm32f407vg_stm32f4discovery` board in `Makefile.inc`
-3. Disable the safety guard in `miosix_settings.h`
-4. Perform the following commands in the root of the repository:
- ```
- cd tinyusb
- git clone https://github.com/hathach/tinyusb.git
- cd tinyusb
- git checkout 86c416d4c0fb38432460b3e11b08b9de76941bf5
- ```
-5. Compile normally by running `make clean; make` in the root of the repository.
-
-## Using this example as a template
-
-To use TinyUSB in a new Miosix project, follow these steps:
-
-1. Copy and paste the `tinyusb` directory of this example in your project
-2. In your Makefile, add the following subdirectories, libraries and includes:
- ```
- SUBDIRS := ... tinyusb
- LIBS := ... tinyusb/libtinyusb.a
- INCLUDE_DIRS := ... -I./tinyusb/tinyusb/src -I./tinyusb
- ```
-3. Clone TinyUSB in the `tinyusb` directory
-4. Copy and paste the interrupt handle definition from the example `main.cpp`
- in your main
-5. Customize `tusb_config.h` to select the class driver, target device, and add
- callbacks in your main to configure the USB descriptors. Follow TinyUSB's
- documentation for performing this step.
-6. Done!
diff --git a/miosix/_examples/tinyusb/main.cpp b/miosix/_examples/tinyusb/main.cpp
deleted file mode 100644
index 3531ba81b..000000000
--- a/miosix/_examples/tinyusb/main.cpp
+++ /dev/null
@@ -1,295 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2023, 2024 by Daniele Cattaneo *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * As a special exception, if other files instantiate templates or use *
- * macros or inline functions from this file, or you compile this file *
- * and link it with other works to produce a work based on this file, *
- * this file does not by itself cause the resulting work to be covered *
- * by the GNU General Public License. However the source code for this *
- * file must still be made available in accordance with the GNU General *
- * Public License. This exception does not invalidate any other reasons *
- * why a work based on this file might be covered by the GNU General *
- * Public License. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see *
- ***************************************************************************/
-
-#include
-#include "miosix.h"
-#include "tusb.h"
-
-using namespace std;
-using namespace miosix;
-
-namespace usb {
-
-using vbus = Gpio;
-using id = Gpio;
-using dm = Gpio;
-using dp = Gpio;
-
-}
-
-void *usbThread(void *unused)
-{
- iprintf("USB thread running\n");
- while (!Thread::testTerminate()) tud_task();
- return nullptr;
-}
-
-int main()
-{
- bool vbusSensing = true;
- {
- FastInterruptDisableLock dLock;
-
- //Turn on USB peripheral
- RCC->AHB2ENR |= RCC_AHB2ENR_OTGFSEN;
- RCC_SYNC();
-
- //Configure USB pins. ID is optional (only needed for USB OTG)
- usb::id::alternateFunction(10);
- usb::dm::alternateFunction(10);
- usb::dp::alternateFunction(10);
- usb::id::mode(Mode::ALTERNATE);
- usb::dm::mode(Mode::ALTERNATE);
- usb::dp::mode(Mode::ALTERNATE_OD);
-
- //VBUS sensing allows the USB device to detect connections and
- //disconnections by looking at the 5V coming in from the host. For
- //this feature to work, the USB VCC must be connected to PA9, no
- //other pin works.
- if (vbusSensing)
- {
- usb::vbus::mode(Mode::INPUT);
- USB_OTG_FS->GCCFG &= ~USB_OTG_GCCFG_NOVBUSSENS;
- USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_VBUSBSEN;
- } else {
- USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_NOVBUSSENS;
- USB_OTG_FS->GCCFG &= ~USB_OTG_GCCFG_VBUSBSEN;
- USB_OTG_FS->GCCFG &= ~USB_OTG_GCCFG_VBUSASEN;
- }
- }
-
- bool r = tusb_init();
- if (!r)
- {
- iprintf("USB initialization error\n");
- return 0;
- }
- Thread::create(usbThread,2048U,Priority(0),nullptr,0);
-
- for (;;)
- {
- Thread::nanoSleep(1000000);
- if (tud_cdc_n_available(0))
- {
- uint8_t buf[64];
- uint32_t count = tud_cdc_n_read(0, buf, sizeof(buf) - 1);
- for(uint32_t i=0; i(&desc_device);
-}
-
-// Called when the configuration descriptor is requested from the host.
-// TinyUSB will automatically configure and instantiate the appropriate USB
-// drivers depending on the descriptor, therefore this is the main source of
-// truth for things like endpoint IDs and so on.
-// Descriptor contents must exist long enough for transfer to complete.
-uint8_t const *tud_descriptor_configuration_cb(uint8_t index)
-{
- enum USBInterfaceID {
- CDC = 0,
- CDCData, // Implicitly added by the TUD_CDC_DESCRIPTOR macro
- Total
- };
- enum USBEndpointID {
- CDCOut = 0x02,
- CDCNotif = 0x81,
- CDCIn = 0x82
- };
- static const size_t length = TUD_CONFIG_DESC_LEN + TUD_CDC_DESC_LEN;
- static uint8_t const desc_fs_configuration[length] = {
- // Configuration descriptor
- TUD_CONFIG_DESCRIPTOR(
- 1, // config number
- USBInterfaceID::Total, // interface count
- USBStringDescID::None, // string index
- length, // total length
- 0x00, // attribute
- 100 // power in mA
- ),
- // Interface descriptor (macro sets class/subclass automatically)
- TUD_CDC_DESCRIPTOR(
- USBInterfaceID::CDC, // Interface number
- USBStringDescID::None, // string index
- USBEndpointID::CDCNotif, // notification endpoint address
- 8, // notification endpoint size
- USBEndpointID::CDCOut, // data out endpoint address
- USBEndpointID::CDCIn, // data in endpoint address
- 64 // data endpoint size
- ),
- };
- return desc_fs_configuration;
-}
-
-struct __attribute__((packed)) STM32DeviceIDFields
-{
- uint16_t waferX;
- uint16_t waferY;
- uint8_t wafer;
- char lot[7];
-};
-#define STM32_DEVICE_ID (reinterpret_cast(UID_BASE))
-
-template
-struct USBStringDesc
-{
- uint8_t size;
- uint8_t type = TUSB_DESC_STRING;
- char16_t str[L];
-};
-
-// Invoked when host requests each string descriptor.
-// Application returns a pointer to descriptor, whose contents must exist long
-// enough for transfer to complete.
-uint16_t const *tud_descriptor_string_cb(uint8_t index, uint16_t langid)
-{
- static const size_t descMaxStrLen=31;
- static USBStringDesc desc;
- uint8_t length;
-
- if(index==USBStringDescID::LocaleIDs) // Locale ID
- {
- desc.str[0]=0x0409; // US English
- length=1;
- } else {
- const char *str;
- const int chipid_length = 7+2+4+4;
- char chipid_buf[chipid_length+1];
-
- if(index == USBStringDescID::Manufacturer) str = "Miosix TinyUSB";
- else if(index == USBStringDescID::Product) str = "USB CDC Example";
- else if(index == USBStringDescID::Serial) { // Serial
- for(int i=0; i<7; i++) chipid_buf[i] = STM32_DEVICE_ID->lot[i];
- siprintf(chipid_buf+7, "%02X%04X%04X",
- STM32_DEVICE_ID->wafer,
- STM32_DEVICE_ID->waferX,
- STM32_DEVICE_ID->waferY);
- str = chipid_buf;
- } else {
- // Do not return anything for other indexes (for example 0xEE which
- // is Windows-proprietary)
- return NULL;
- }
- // copy string into descriptor buffer, lazily converting it to UTF-16
- length = (uint8_t)strlen(str);
- if(length > descMaxStrLen) length = descMaxStrLen;
- for(int i=0; i(&desc);
-}
diff --git a/miosix/_examples/tinyusb/tinyusb/Makefile b/miosix/_examples/tinyusb/tinyusb/Makefile
deleted file mode 100644
index 95f26be8b..000000000
--- a/miosix/_examples/tinyusb/tinyusb/Makefile
+++ /dev/null
@@ -1,95 +0,0 @@
-##
-## Makefile for tinyusb Miosix integration
-## This makefile builds libtinyusb.a
-##
-
-## KPATH and CONFPATH are forwarded by the parent Makefile
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/Makefile.kcommon
-
-## List of all tinyusb source files (both .c and .cpp)
-## These files will end up in libtinyusb.a
-SRC := \
- tinyusb/src/host/hub.c \
- tinyusb/src/host/usbh.c \
- tinyusb/src/portable/nordic/nrf5x/dcd_nrf5x.c \
- tinyusb/src/portable/synopsys/dwc2/dcd_dwc2.c \
- tinyusb/src/portable/valentyusb/eptri/dcd_eptri.c \
- tinyusb/src/portable/ehci/ehci.c \
- tinyusb/src/portable/bridgetek/ft9xx/dcd_ft9xx.c \
- tinyusb/src/portable/nxp/lpc_ip3511/dcd_lpc_ip3511.c \
- tinyusb/src/portable/nxp/khci/dcd_khci.c \
- tinyusb/src/portable/nxp/khci/hcd_khci.c \
- tinyusb/src/portable/nxp/lpc17_40/dcd_lpc17_40.c \
- tinyusb/src/portable/nxp/lpc17_40/hcd_lpc17_40.c \
- tinyusb/src/portable/nxp/transdimension/hcd_transdimension.c \
- tinyusb/src/portable/nxp/transdimension/dcd_transdimension.c \
- tinyusb/src/portable/ohci/ohci.c \
- tinyusb/src/portable/wch/ch32v307/dcd_usbhs.c \
- tinyusb/src/portable/template/dcd_template.c \
- tinyusb/src/portable/mentor/musb/hcd_musb.c \
- tinyusb/src/portable/mentor/musb/dcd_musb.c \
- tinyusb/src/portable/st/synopsys/dcd_synopsys.c \
- tinyusb/src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c \
- tinyusb/src/portable/dialog/da146xx/dcd_da146xx.c \
- tinyusb/src/portable/chipidea/ci_hs/dcd_ci_hs.c \
- tinyusb/src/portable/chipidea/ci_hs/hcd_ci_hs.c \
- tinyusb/src/portable/sunxi/dcd_sunxi_musb.c \
- tinyusb/src/portable/microchip/samx7x/dcd_samx7x.c \
- tinyusb/src/portable/microchip/samg/dcd_samg.c \
- tinyusb/src/portable/microchip/pic/dcd_pic.c \
- tinyusb/src/portable/microchip/pic32mz/dcd_pic32mz.c \
- tinyusb/src/portable/microchip/samd/dcd_samd.c \
- tinyusb/src/portable/nuvoton/nuc121/dcd_nuc121.c \
- tinyusb/src/portable/nuvoton/nuc120/dcd_nuc120.c \
- tinyusb/src/portable/nuvoton/nuc505/dcd_nuc505.c \
- tinyusb/src/portable/renesas/usba/dcd_usba.c \
- tinyusb/src/portable/renesas/usba/hcd_usba.c \
- tinyusb/src/portable/espressif/esp32sx/dcd_esp32sx.c \
- tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c \
- tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c \
- tinyusb/src/portable/raspberrypi/rp2040/hcd_rp2040.c \
- tinyusb/src/portable/raspberrypi/pio_usb/hcd_pio_usb.c \
- tinyusb/src/portable/raspberrypi/pio_usb/dcd_pio_usb.c \
- tinyusb/src/portable/sony/cxd56/dcd_cxd56.c \
- tinyusb/src/portable/mindmotion/mm32/dcd_mm32f327x_otg.c \
- tinyusb/src/portable/ti/msp430x5xx/dcd_msp430x5xx.c \
- tinyusb/src/common/tusb_fifo.c \
- tinyusb/src/class/cdc/cdc_rndis_host.c \
- tinyusb/src/class/cdc/cdc_host.c \
- tinyusb/src/class/cdc/cdc_device.c \
- tinyusb/src/class/video/video_device.c \
- tinyusb/src/class/net/ncm_device.c \
- tinyusb/src/class/net/ecm_rndis_device.c \
- tinyusb/src/class/dfu/dfu_rt_device.c \
- tinyusb/src/class/dfu/dfu_device.c \
- tinyusb/src/class/midi/midi_device.c \
- tinyusb/src/class/usbtmc/usbtmc_device.c \
- tinyusb/src/class/bth/bth_device.c \
- tinyusb/src/class/audio/audio_device.c \
- tinyusb/src/class/msc/msc_host.c \
- tinyusb/src/class/msc/msc_device.c \
- tinyusb/src/class/hid/hid_device.c \
- tinyusb/src/class/hid/hid_host.c \
- tinyusb/src/class/vendor/vendor_host.c \
- tinyusb/src/class/vendor/vendor_device.c \
- tinyusb/src/device/usbd_control.c \
- tinyusb/src/device/usbd.c \
- tinyusb/src/tusb.c
-
-INCLUDE_DIRS := -I. -I./cmsis_stubs -I./tinyusb/src -I$(CONFPATH)/config
-
-all: $(OBJ)
- $(ECHO) "[AR ] libtinyusb.a"
- $(Q)$(AR) rcs libtinyusb.a $(OBJ)
-
-clean:
- -rm -f $(OBJ) $(OBJ:.o=.d) libtinyusb.a
-
-# We need to compile all .c files with the C++ compiler for integrating TinyUSB
-# without becoming crazy
-%.o : %.c
- $(ECHO) "[CXX ] $<"
- $(Q)$(CXX) $(CXXFLAGS) $< -o $@
-
--include $(OBJ:.o=.d)
diff --git a/miosix/_tools/bin2uf2/Makefile b/miosix/_tools/bin2uf2/Makefile
deleted file mode 100644
index da625c6b6..000000000
--- a/miosix/_tools/bin2uf2/Makefile
+++ /dev/null
@@ -1,60 +0,0 @@
-##
-## Makefile for Miosix embedded OS
-##
-
-## Path to kernel/config directories (edited by init_project_out_of_git_repo.pl)
-KPATH := miosix
-CONFPATH := $(KPATH)
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/Makefile.kcommon
-
-##
-## List here your source files (both .s, .c and .cpp)
-##
-SRC := main.cpp
-
-##
-## List here additional include directories (in the form -Iinclude_dir)
-##
-INCLUDE_DIRS :=
-
-##
-## List here additional static libraries with relative path
-##
-LIBS :=
-
-##
-## List here subdirectories which contains makefiles
-##
-SUBDIRS +=
-
-##
-## Attach a romfs filesystem image after the kernel
-##
-ROMFS_DIR :=
-
-all: $(if $(ROMFS_DIR), image, main)
-
-main: $(OBJ) all-recursive $(TOOLS_DIR)/bin2uf2/bin2uf2
- $(ECHO) "[LD ] main.elf"
- $(Q)$(CXX) $(LFLAGS) -o main.elf $(OBJ) $(LINK_LIBS)
- $(ECHO) "[CP ] main.hex"
- $(Q)$(CP) -O ihex main.elf main.hex
- $(ECHO) "[CP ] main.bin"
- $(Q)$(CP) -O binary main.elf main.bin
- $(ECHO) "[UF2 ] main.uf2"
- $(TOOLS_DIR)/bin2uf2/bin2uf2 -s 0x10000000 -f 0xe48bff56 -p main.bin -o main.uf2
- $(Q)$(SZ) main.elf
-
-$(TOOLS_DIR)/bin2uf2/bin2uf2:
- $(ECHO) "[HOST] bin2uf2"
- $(Q)mkdir -p $(TOOLS_DIR)/bin2uf2/build
- $(Q)cd $(TOOLS_DIR)/bin2uf2/build \
- && cmake --log-level=ERROR .. && $(MAKE) -s
-
-clean: clean-recursive
- $(Q)rm -f $(OBJ) $(OBJ:.o=.d) main.elf main.hex main.bin main.map
- $(Q)rm -f main.uf2 image.uf2 $(TOOLS_DIR)/bin2uf2/bin2uf2
- $(Q)rm -rf $(TOOLS_DIR)/bin2uf2/build
-
--include $(OBJ:.o=.d)
diff --git a/miosix/_tools/bootloaders/stm32/Readme.txt b/miosix/_tools/bootloaders/stm32/Readme.txt
deleted file mode 100644
index e25930482..000000000
--- a/miosix/_tools/bootloaders/stm32/Readme.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This bootloader works for the following boards:
--stm3210e-eval
--stm3220g-eval
-
-see miosix/doc/textdoc/stm32-bootloader.txt
\ No newline at end of file
diff --git a/miosix/_tools/bootloaders/stm32/uc_loader_ethboardv2/bootloader.bin b/miosix/_tools/bootloaders/stm32/uc_loader_ethboardv2/bootloader.bin
deleted file mode 100644
index 645ac65d6..000000000
Binary files a/miosix/_tools/bootloaders/stm32/uc_loader_ethboardv2/bootloader.bin and /dev/null differ
diff --git a/miosix/_tools/bootloaders/stm32/uc_loader_ethboardv2/bootloader.hex b/miosix/_tools/bootloaders/stm32/uc_loader_ethboardv2/bootloader.hex
deleted file mode 100644
index 705e0c1e7..000000000
--- a/miosix/_tools/bootloaders/stm32/uc_loader_ethboardv2/bootloader.hex
+++ /dev/null
@@ -1,204 +0,0 @@
-:1000000000000220F1080000210400002D0400007F
-:100010003904000045040000510400000000000005
-:100020000000000000000000000000005D0400006F
-:100030006904000000000000750400008104000055
-:100040008D04000099040000A5040000B104000024
-:10005000BD040000C9040000D5040000E104000054
-:10006000ED040000F9040000050500001105000082
-:100070001D050000290500003505000041050000B0
-:100080004D050000590500006505000071050000E0
-:100090007D0500008905000095050000A105000010
-:1000A000AD050000B9050000C5050000D105000040
-:1000B000DD050000E9050000F5050000010600006F
-:1000C0000D0600001906000025060000310600009C
-:1000D0003D060000490600005506000061060000CC
-:1000E0006D060000790600008506000091060000FC
-:1000F0009D060000A9060000B5060000C10600002C
-:10010000CD060000D9060000E5060000F10600005B
-:10011000FD06000009070000150700002107000088
-:100120002D070000390700004507000051070000B7
-:100130005D070000690700007507000081070000E7
-:100140008D07000099070000A5070000B107000017
-:10015000BD070000C9070000D5070000E107000047
-:10016000ED070000F9070000050800001108000075
-:100170001D080000290800003508000041080000A3
-:100180004D0800000F2A30B404460D4636D941EA26
-:10019000000313F0030F32D18C4603461446DCF8FB
-:1001A0000050103C1D60DCF804505D60DCF8085025
-:1001B0009D60DCF80C500CF1100CDD6010330F2C3E
-:1001C000EDD8103A22F00F0502F00F021035441955
-:1001D0004D19032A12D9002355F803C044F803C06F
-:1001E0000433C3EB020CBCF1030FF5D8043A22F040
-:1001F000030302F003020433E418ED183AB10023BC
-:1002000015F803C004F803C001339342F8D130BCA1
-:10021000704700BF10F0030F844630B40ED0002AA0
-:1002200044D0013ACCB2034602E0002A3ED0013A63
-:1002300003F8014B13F0030F9C46F6D1032A2DD986
-:1002400001F0FF040F2A654688BF634644EA042490
-:1002500088BF154644EA044410D9103D1C605C6018
-:100260009C60DC6010330F2DF7D8103A22F00F0598
-:1002700002F00F021035032A65440ED90023EC501A
-:100280000433C3EB020CBCF1030FF8D8043A22F09C
-:10029000030302F003020433ED18AC4632B1C9B2D5
-:1002A00000230CF8031001339A42FAD130BC704796
-:1002B000044B1A6B42F480521A630122A3F50063C7
-:1002C0009A6070470038024000230B6010F8012B41
-:1002D00012F0800F0CD002F07F029A40D1F800C0DB
-:1002E00007334CEA0202232B0A60EFD1012000E021
-:1002F0000020704730B585B00D2205460A49684692
-:10030000FFF740FF6C46094A0DF10A03023405F07D
-:100310000F01515C2D0903F8011DA342F7D1684676
-:1003200000F0F6FB05B030BD0C0C0000F80B00002F
-:10033000F0B5002585B000F00FFB4FF0C046FFF789
-:10034000B7FF2C462E4F00E0022400F0C9FB10F04E
-:10035000800F36D140380428F6D8DFE800F00317C4
-:100360001C272B00274800F0D3FB274800F0D0FBC8
-:10037000012C08BF254803D0022C14BF244825486F
-:1003800000F0C6FB244800F0C3FBDEE7002C0CBFE6
-:1003900001240224D9E7012CD6D1204800F1040120
-:1003A000006880F3088809680847CEE73868FFF7D7
-:1003B000A1FFCAE70025FFF77BFF4FF0C0462C46A0
-:1003C000C3E7012CC0D1052395FBF3F203FB1252C6
-:1003D00004A98A18013502F80C0C95FBF3F203FB13
-:1003E0001253002BB1D101A803A9FFF76DFF00281C
-:1003F000AAD0039B46F8043B039B3B60A5E700BFE4
-:1004000000300240190C0000480C0000800C000075
-:10041000790C00008C0C0000160C0000000000603D
-:1004200001480068004700000800006001480068BB
-:10043000004700000C000060014800680047000011
-:1004400010000060014800680047000014000060D0
-:10045000014800680047000018000060014800687B
-:10046000004700002C0000600148006800470000C1
-:10047000300000600148006800470000380000605C
-:1004800001480068004700003C0000600148006827
-:10049000004700004000006001480068004700007D
-:1004A0004400006001480068004700004800006008
-:1004B00001480068004700004C00006001480068E7
-:1004C000004700005000006001480068004700003D
-:1004D00054000060014800680047000058000060B8
-:1004E00001480068004700005C00006001480068A7
-:1004F00000470000600000600148006800470000FD
-:100500006400006001480068004700006800006067
-:1005100001480068004700006C0000600148006866
-:1005200000470000700000600148006800470000BC
-:100530007400006001480068004700007800006017
-:1005400001480068004700007C0000600148006826
-:10055000004700008000006001480068004700007C
-:1005600084000060014800680047000088000060C7
-:1005700001480068004700008C00006001480068E6
-:10058000004700009000006001480068004700003C
-:100590009400006001480068004700009800006077
-:1005A00001480068004700009C00006001480068A6
-:1005B00000470000A00000600148006800470000FC
-:1005C000A40000600148006800470000A800006027
-:1005D0000148006800470000AC0000600148006866
-:1005E00000470000B00000600148006800470000BC
-:1005F000B40000600148006800470000B8000060D7
-:100600000148006800470000BC0000600148006825
-:1006100000470000C000006001480068004700007B
-:10062000C40000600148006800470000C800006086
-:100630000148006800470000CC00006001480068E5
-:1006400000470000D000006001480068004700003B
-:10065000D40000600148006800470000D800006036
-:100660000148006800470000DC00006001480068A5
-:1006700000470000E00000600148006800470000FB
-:10068000E40000600148006800470000E8000060E6
-:100690000148006800470000EC0000600148006865
-:1006A00000470000F00000600148006800470000BB
-:1006B000F40000600148006800470000F800006096
-:1006C0000148006800470000FC0000600148006825
-:1006D000004700000001006001480068004700007A
-:1006E0000401006001480068004700000801006044
-:1006F00001480068004700000C01006001480068E4
-:100700000047000010010060014800680047000039
-:1007100014010060014800680047000018010060F3
-:1007200001480068004700001C01006001480068A3
-:1007300000470000200100600148006800470000F9
-:1007400024010060014800680047000028010060A3
-:1007500001480068004700002C0100600148006863
-:1007600000470000300100600148006800470000B9
-:100770003401006001480068004700003801006053
-:1007800001480068004700003C0100600148006823
-:100790000047000040010060014800680047000079
-:1007A0004401006001480068004700004801006003
-:1007B00001480068004700004C01006001480068E3
-:1007C0000047000050010060014800680047000039
-:1007D00054010060014800680047000058010060B3
-:1007E00001480068004700005C01006001480068A3
-:1007F00000470000600100600148006800470000F9
-:100800006401006001480068004700006801006062
-:1008100001480068004700006C0100600148006862
-:1008200000470000700100600148006800470000B8
-:100830007401006001480068004700007801006012
-:1008400001480068004700007C0100600148006822
-:10085000004700008001006038B50D46044602E004
-:1008600054F8043B9847AC42FAD338BD08B500F0C1
-:1008700059F91248124A1349121AFFF783FC124819
-:10088000124A0021121AFFF7C5FC11481149FFF75F
-:10089000E3FF11481149FFF7DFFF11491148FFF746
-:1008A000DBFFFFF745FD104A104BD16801F4E06112
-:1008B00041EA0303D360BFF34F8FFEE7000000203F
-:1008C00000000020980C0000000000200000002024
-:1008D000940C0000940C0000940C0000940C000098
-:1008E000940C0000940C000000ED00E00400FA05F8
-:1008F000684620F007018D4608B5FFF7B7FF0000F6
-:10090000024B1888C0F34010704700BF0010014030
-:10091000024B1888C0F3C010704700BF00100140A0
-:100920000C4B1A6B42F004021A635A6C42F010022C
-:100930005A64A3F594334FF400529A8100221A822C
-:100940009A8240F209221A819A8992B242F00C02EC
-:100950009A81704700380240F8B5404E404D336BE5
-:10096000404CDFF804E143F07F0333634FF0AA33D8
-:10097000AB60DFF8F8C0A360CEF808303C4B3D48D0
-:10098000CCF808303C4B3D4983603D4B3D4A8B6081
-:1009900003F12B4393603C4B3C4F2B603C4B23605B
-:1009A0003C4BCEF800303C4BCCF800303B4B036066
-:1009B0003B4B0B6040F6AA2313600023EB60E7601B
-:1009C000384FCEF80C70384FCCF80C704FF42A57D3
-:1009D000C760364FCF60364FD76010276F616361B5
-:1009E000CEF81430CCF8143043614B615361314B75
-:1009F0002B62314B6B62314D2562314D6562314C5A
-:100A0000CEF82040304CCEF82440DFF8C0E0CCF8DF
-:100A100020E0DFF8BCE0CCF824E0DFF8B8C0C0F894
-:100A200020C04FF0CC3CC0F824C02B48DFF8ACC04D
-:100A30000862C1F824C0106253620123B36341F21B
-:100A400011024FF020431A604FF400725A60B368ED
-:100A500043F48003B360FFF763FFF8BD0038024042
-:100A6000000002400004024000080240000C024066
-:100A7000AFEFFFFB00100240AFEAFFFF001402409F
-:100A8000FFAFAAFF00180240AAA9AAAA20A0080046
-:100A90008A0AA2AAA81AAA022A8AAAA21A80AAAA1A
-:100AA000AA1A00AA008000A0802000080040AA0026
-:100AB00000A0AAAABBBB50B570A70A00BB0050009B
-:100AC0000BBBBBCCB0BBBB00CCCC0C00CC0CCCC0AB
-:100AD000CCCC0CCCCC0000C0CCCCCC000000CCCC1E
-:100AE00008B5FFF70DFF0028FBD0024B9888C0B275
-:100AF00008BD00BF0010014010B50446FFF708FF15
-:100B00000028FBD0014B9C8010BD00BF00100140AD
-:100B100010B5044601E0FFF7EFFF14F8010B0028C1
-:100B2000F9D110BD2F4B82B01A6842F001021A6051
-:100B300000229A60196821F0847121F480311960D3
-:100B400029495960196821F480211960DA600192FD
-:100B500000921A6842F480321A601A6802F4003275
-:100B60000092019A01320192009A1AB9019AB2F5E3
-:100B7000A06FF2D11B4B1B6813F4003318BF012385
-:100B80000093009B012B26D1164B9A689A609A68B5
-:100B900042F400429A609A6842F4A0529A60134A62
-:100BA0005A601A6842F080721A6019680D4A11F092
-:100BB000007FFAD00E4B40F203711960936823F066
-:100BC00003039360936843F002039360936803F018
-:100BD0000C03082BFAD1074B4FF000629A6002B069
-:100BE000704700BF0038024010300024193C400517
-:100BF000003C024000ED00E030313233343536370E
-:100C000038396162636465660000000030782E2E1A
-:100C10002E2E2E2E2E2E0D0A004C6F616465722032
-:100C200076312E30383A2054657272616E656F20CD
-:100C3000466564657269636F20546563686E6F6CA6
-:100C40006F676965730D0A004465766963653A20CC
-:100C500073746D3332663230377A670D0A4D656DC5
-:100C60006F72793A203531324B42797465730D0ACF
-:100C70005374617475733A200049646C650D0A0001
-:100C8000526563656976696E670D0A004572726F19
-:040C9000720D0A00D7
-:04000003000008F100
-:00000001FF
diff --git a/miosix/_tools/compiler/gcc-9.2.0-mp3.2/.gitignore b/miosix/_tools/compiler/gcc-9.2.0-mp3.2/.gitignore
deleted file mode 100644
index a0810c161..000000000
--- a/miosix/_tools/compiler/gcc-9.2.0-mp3.2/.gitignore
+++ /dev/null
@@ -1,16 +0,0 @@
-downloaded
-objdir
-newlib-obj
-lib
-gcc
-dist
-log
-binutils-*
-gcc-*
-gdb-*
-gmp-*
-mpc-*
-mpfr-*
-newlib-*
-expat-*
-lpc21isp.c
diff --git a/miosix/_tools/compiler/gcc-9.2.0-mp3.2/Readme.txt b/miosix/_tools/compiler/gcc-9.2.0-mp3.2/Readme.txt
deleted file mode 100644
index c4cb758c1..000000000
--- a/miosix/_tools/compiler/gcc-9.2.0-mp3.2/Readme.txt
+++ /dev/null
@@ -1,79 +0,0 @@
-This is the readme for installing the arm-miosix-eabi-gcc compiler,
-required to build Miosix.
-Currently this can only be done on Linux, even when compiling a
-compiler that will work for Windows.
-===================================================================
-
-
-Step 1
-------
-Copy this folder in a path without spaces, or compiling will fail.
-Example:
-/home/foo/temp OK
-/home/foo/directory with spaces/temp NO!!
-
-
-Step 2
-------
-Install the following dependencies:
-gcc, g++, make, ncurses, byacc, flex, texinfo, patch, tar, unzip, lzip, libelf perl libexpat
-
-For example, for Ubuntu/Kubuntu open a shell and type:
-sudo apt-get install gcc g++ make libncurses5-dev byacc flex texinfo patch tar unzip lzip libelf-dev perl libexpat1-dev
-
-While on Fedora:
-sudo yum intall gcc gcc-c++ make ncurses-devel byacc flex texinfo patch tar unzip lzip elfutils-libelf-devel perl libexpat-devel
-
-Note: these scripts require "sudo" unless you want to intall the compiler locally.
-If you use a distro like Fedora where sudo is not enabled by default, use "visudo" to enable sudo for your account.
-
-Step 3
-------
-Download the the required sources with the download script:
-
-./download.sh
-
-
-Step 4
-------
-After meeting these prerequisites, install:
-
-./install-script.sh -j`nproc`
-./cleanup.sh
-
-Both scripts will prompt for root password at some point. It is normal,
-since they need to write in /opt and /usr/bin.
-The cleanup script won't remove the compressed files downloaded with the
-download script. You might want to do so manually to save space on your disk.
-
-
-Step 5
-------
-Test the compiler by typing in a shell
-
-arm-miosix-eabi-gcc -v
-
-If you get something like
-
-bash: arm-miosix-eabi-gcc: command not found
-
-it means something did not work.
-
-
-Step 6
-------
-If required, also install OpenOCD for in circuit debugging.
-There are no scripts for doing that, since it is rather independent on the
-gcc version. On many distros it is also available thrugh package managers,
-for example on Ubuntu/Kubuntu you can install it with
-
-sudo apt-get install openocd
-
-Uninstalling the compiler
-=========================
-In case you need to uninstall the compiler (perhaps because you need to install
-an upgraded version as part of a new Miosix release) you can run the
-
-./uninstall.sh
-
-script.
diff --git a/miosix/_tools/context_switch_test/main.cpp b/miosix/_tools/context_switch_test/main.cpp
deleted file mode 100644
index caade1904..000000000
--- a/miosix/_tools/context_switch_test/main.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-#include
-#include "miosix.h"
-#include "kernel/logging.h"
-#include "interfaces/arch_registers.h"
-
-using namespace std;
-using namespace miosix;
-
-// This program attempts to test context switching behavior.
-// The main thread is busy doing IO work while a secondary thread continuously
-// checks for its registers not to change.
-// If register corruption is detected in the second thread, the program hangs
-// up.
-
-extern "C" void fail()
-{
- __disable_irq();
- for(;;);
-}
-
-void *otherThread(void *unused)
-{
- asm(" cpsid i\n"
- " ldr r0,=0x55555555\n"
- " mov r1,r0\n"
- " mov r2,r0\n"
- " mov r3,r0\n"
- " mov r4,r0\n"
- " mov r5,r0\n"
- " mov r6,r0\n"
- " mov r7,r0\n"
- " mov r8,r0\n"
- " mov r9,r0\n"
- " mov r10,r0\n"
- " mov r11,r0\n"
- " mov r12,r0\n"
- " cpsie i\n"
- "1: cmp r0, r1\n bne 1f\n"
- " cmp r1, r0\n bne 1f\n"
- " cmp r2, r0\n bne 1f\n"
- " cmp r3, r0\n bne 1f\n"
- " cmp r4, r0\n bne 1f\n"
- " cmp r5, r0\n bne 1f\n"
- " cmp r6, r0\n bne 1f\n"
- " cmp r7, r0\n bne 1f\n"
- " cmp r8, r0\n bne 1f\n"
- " cmp r9, r0\n bne 1f\n"
- " cmp r10,r0\n bne 1f\n"
- " cmp r11,r0\n bne 1f\n"
- " cmp r12,r0\n bne 1f\n"
- " b 1b\n"
- "1: bl fail\n":::
- "r0","r1","r2","r3","r4","r5","r6","r7","r8","r9","r10","r11","r12");
- return nullptr;
-}
-
-int main()
-{
- Thread::create(otherThread, 1024);
- for (;;)
- {
- iprintf("blah blah blah blah blah blah blah blah blah blah blah "
- "blah blah blah blah blah blah blah blah blah blah blah "
- "blah blah blah blah blah blah blah blah blah blah blah\n");
- }
-}
diff --git a/miosix/_tools/delay_test/delay_test.cpp b/miosix/_tools/delay_test/delay_test.cpp
deleted file mode 100644
index 6f49cbc35..000000000
--- a/miosix/_tools/delay_test/delay_test.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-// This tool is meant to test delays using an oscilloscope connected to a GPIO
-// of the chip.
-
-#include
-#include "miosix.h"
-
-using namespace miosix;
-
-using out=Gpio; //Select a free GPIO depending on the board
-
-void tdus(int n)
-{
- InterruptDisableLock dLock;
- for(;;)
- {
- out::high();
- delayUs(n);
- out::low();
- delayUs(n);
- }
-}
-
-void tdms(int n)
-{
- InterruptDisableLock dLock;
- for(;;)
- {
- out::high();
- delayMs(n);
- out::low();
- delayMs(n);
- }
-}
-
-int main()
-{
-// //STM32f1-specific: enable PLL freq to be output on PA8
-// using mco = Gpio;
-// mco::mode(Mode::ALTERNATE);
-// RCC->CFGR |= (0x7<<24);
-// //STM32f?-specific: enable PLL freq to be output on PA8
-// using mco = Gpio;
-// mco::speed(Speed::_100MHz);
-// mco::mode(Mode::ALTERNATE);
-// mco::alternateFunction(0);
-// RCC->CFGR |= (0x3<<21);
-// //ATSAM4L-specific: output RCFAST clock on PA2
-// SCIF->SCIF_GCCTRL[0].SCIF_GCCTRL = SCIF_GCCTRL_OSCSEL(5) | SCIF_GCCTRL_CEN;
-// using gclk0 = Gpio;
-// gclk0::mode(Mode::ALTERNATE);
-// gclk0::alternateFunction('A');
-// //EFM32-specific: output HFCLK/2 clock on PA2
-// using clkOut0 = Gpio;
-// clkOut0::mode(Mode::OUTPUT);
-// CMU->CTRL |= CMU_CTRL_CLKOUTSEL0_HFCLK2;
-// CMU->ROUTE |= CMU_ROUTE_CLKOUT0PEN;
- int n;
- out::mode(Mode::OUTPUT);
- iprintf("Delay test\nEnter value in us\n");
- iscanf("%d",&n);
- if(n>=1000) tdms(n/1000); else tdus(n);
-}
diff --git a/miosix/_tools/filesystems/CMakeLists.txt b/miosix/_tools/filesystems/CMakeLists.txt
deleted file mode 100644
index 827ffa337..000000000
--- a/miosix/_tools/filesystems/CMakeLists.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-
-cmake_minimum_required(VERSION 3.5)
-project(MIOSIX_FILESYSTEM_UTIL)
-
-set(CMAKE_BUILD_TYPE Release)
-set(CMAKE_CXX_STANDARD 17)
-
-add_definitions(-UNDEBUG)
-
-include_directories(../../filesystem/romfs) # For romfs_types.h
-include_directories(../../kernel) # For elf_types.h
-add_executable(buildromfs buildromfs.cpp)
-
-# put binary in the same directory of the source code
-set_target_properties(buildromfs PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}")
diff --git a/miosix/_tools/init_project_out_of_git_tree.pl b/miosix/_tools/init_project_out_of_git_tree.pl
deleted file mode 100644
index 86d2c8408..000000000
--- a/miosix/_tools/init_project_out_of_git_tree.pl
+++ /dev/null
@@ -1,65 +0,0 @@
-#!/usr/bin/perl
-
-# This script allows to replicate the content of the Miosix top level directory
-# outside of the Miosix git repository, in order to write an application making
-# use of Miosix without creating or altering any file in the Miosix git repo.
-# This simplifies updating the kernel with git pull and allows to have the
-# Miosix git repository as a submodule of another git repository.
-#
-# To use this script, open a shell in the directory where you want the
-# project to be created and run
-# perl /miosix/_tools/init_project_out_of_source_tree.pl
-
-use warnings;
-use strict;
-use Cwd qw(cwd abs_path);
-use File::Copy;
-use File::Copy::Recursive qw(dircopy); # apt install libfile-copy-recursive-perl
-use File::Basename;
-use File::Spec;
-
-# Target directory is where the script is launched from
-my $target=cwd();
-
-# Get the kernel top level directory from the script path. The script must be
-# placed in the miosix/_tools subdirectory of the Miosix git repo
-my $source=dirname(abs_path($0));
-die "Can't locate the kernel directory\n" unless($source =~ /(\\|\/)miosix(\\|\/)_tools$/);
-$source =~ s/(\\|\/)miosix(\\|\/)_tools$//;
-die "The project directory must be outside of the kernel tree\n" if(index($target,$source)==0);
-
-die "Error: file main.cpp already exists\n" if -e "main.cpp";
-die "Error: file Makefile already exists\n" if -e "Makefile";
-die "Error: directory config already exists\n" if -e "config";
-
-# Copy the Makefile fixing the KPATH and CONFPATH lines. This is what makes
-# building out the git tree possible
-sub copy_and_fixup_makefile
-{
- my ($in_name,$out_name)=@_;
- open(my $in, '<', $in_name) or die;
- open(my $out, '>', $out_name) or die;
- # KPATH must contain the path to the kernel. Said path must be relative and
- # in the unix format (i.e: with / as path separator, not \). This is
- # because the generated Makefile may be put in a public git repository that
- # has the miosix kernel as a submodule, and it would be bad to put an
- # absolute path in a git repo, or a path that is only usable from windows
- my $relpath=File::Spec->abs2rel($source,$target);
- $relpath =~ s/\\/\//; # Force the use of / as path separator
- while(<$in>)
- {
- s/^KPATH := miosix$/KPATH := $relpath\/miosix/;
- s/^CONFPATH := \$\(KPATH\)$/CONFPATH := \./;
- print $out "$_";
- }
- close($in);
- close($out);
-}
-
-copy("$source/main.cpp","$target/main.cpp") or die;
-copy_and_fixup_makefile("$source/Makefile","$target/Makefile");
-dircopy("$source/miosix/config","$target/config") or die;
-
-print "Successfully created Miosix project\n";
-print "Target directory: $target\n";
-print "Kernel directory: $source\n";
diff --git a/miosix/_tools/processes/process_template/Makefile b/miosix/_tools/processes/process_template/Makefile
deleted file mode 100644
index 6b76fff79..000000000
--- a/miosix/_tools/processes/process_template/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-##
-## Makefile for writing processes for the Miosix embedded OS
-##
-
-## KPATH and CONFPATH can be specified here or forwarded by the parent makefile
-KPATH := ../../..
-CONFPATH := ../../..
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/libsyscalls/Makefile.pcommon
-
-BIN := hello
-SRC := main.cpp
-
-all: $(OBJ)
- $(ECHO) "[LD ] $(BIN)"
- $(Q)$(CXX) $(LFLAGS) -o $(BIN) $(OBJ) $(LINK_LIBS)
- $(Q)$(SZ) $(BIN)
- $(Q)$(STRIP) $(BIN)
- $(Q)$(POSTLD) $(BIN) --ramsize=16384 --stacksize=2048 --strip-sectheader
-
-clean:
- $(Q)rm -f $(OBJ) $(OBJ:.o=.d) $(BIN) $(notdir $(BIN)).map
-
--include $(OBJ:.o=.d)
diff --git a/miosix/_tools/ram_test/main.cpp b/miosix/_tools/ram_test/main.cpp
deleted file mode 100644
index 24963c8f3..000000000
--- a/miosix/_tools/ram_test/main.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
- /***************************************************************************
- * Copyright (C) 2012 by Terraneo Federico *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see *
- ***************************************************************************/
-
-// RAM testing code
-// Useful to test the external RAM of a board.
-
-#include
-#include
-#include
-#include
-#include "sha1.h"
-
-const unsigned int ramBase=0x60000000; //Tune this to the right value
-const unsigned int ramSize=524288; //Tune this to the right value
-
-bool shaCmp(unsigned int a[5], unsigned int b[5])
-{
- if(memcmp(a,b,20)==0) return false;
- iprintf("Mismatch\n");
- for(int i=0;i<5;i++) iprintf("%04x",a[i]); iprintf("\n");
- for(int i=0;i<5;i++) iprintf("%04x",b[i]); iprintf("\n");
- return true;
-}
-
-template bool ramTest()
-{
- SHA1 sha;
- sha.Reset();
- srand(0x7ad3c099*sizeof(T)); //Just to shuffle initialization between tests
- for(unsigned int i=ramBase;i(i);
- T v=static_cast(rand());
- *p=v;
- sha.Input(reinterpret_cast(&v),sizeof(T));
- }
- unsigned int a[5];
- sha.Result(a);
- sleep(10); //To check SDRAM retention ability
- sha.Reset();
- for(unsigned int i=ramBase;i(i);
- T v=*p;
- sha.Input(reinterpret_cast(&v),sizeof(T));
- }
- unsigned int b[5];
- sha.Result(b);
- return shaCmp(a,b);
-}
-
-int main()
-{
- for(;;)
- {
- iprintf("RAM test\nTesting word size transfers\n");
- if(ramTest()) return 1;
- iprintf("Testing halfword size transfers\n");
- if(ramTest()) return 1;
- iprintf("Testing byte size transfers\n");
- if(ramTest()) return 1;
- iprintf("Ok\n");
- }
-}
diff --git a/miosix/_tools/ram_test/sha1.cpp b/miosix/_tools/ram_test/sha1.cpp
deleted file mode 100644
index 19564c706..000000000
--- a/miosix/_tools/ram_test/sha1.cpp
+++ /dev/null
@@ -1,601 +0,0 @@
-/*
- * sha1.cpp
- *
- * Copyright (C) 1998, 2009
- * Paul E. Jones
- * All Rights Reserved.
- *
- * Freeware Public License (FPL)
- *
- * This software is licensed as "freeware." Permission to distribute
- * this software in source and binary forms, including incorporation
- * into other products, is hereby granted without a fee. THIS SOFTWARE
- * IS PROVIDED 'AS IS' AND WITHOUT ANY EXPRESSED OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHOR SHALL NOT BE HELD
- * LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE, EITHER
- * DIRECTLY OR INDIRECTLY, INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA
- * OR DATA BEING RENDERED INACCURATE.
- *
- *****************************************************************************
- * $Id: sha1.cpp 12 2009-06-22 19:34:25Z paulej $
- *****************************************************************************
- *
- * Description:
- * This class implements the Secure Hashing Standard as defined
- * in FIPS PUB 180-1 published April 17, 1995.
- *
- * The Secure Hashing Standard, which uses the Secure Hashing
- * Algorithm (SHA), produces a 160-bit message digest for a
- * given data stream. In theory, it is highly improbable that
- * two messages will produce the same message digest. Therefore,
- * this algorithm can serve as a means of providing a "fingerprint"
- * for a message.
- *
- * Portability Issues:
- * SHA-1 is defined in terms of 32-bit "words". This code was
- * written with the expectation that the processor has at least
- * a 32-bit machine word size. If the machine word size is larger,
- * the code should still function properly. One caveat to that
- * is that the input functions taking characters and character arrays
- * assume that only 8 bits of information are stored in each character.
- *
- * Caveats:
- * SHA-1 is designed to work with messages less than 2^64 bits long.
- * Although SHA-1 allows a message digest to be generated for
- * messages of any number of bits less than 2^64, this implementation
- * only works with messages with a length that is a multiple of 8
- * bits.
- *
- */
-
-
-#include "sha1.h"
-
-/*
- * SHA1
- *
- * Description:
- * This is the constructor for the sha1 class.
- *
- * Parameters:
- * None.
- *
- * Returns:
- * Nothing.
- *
- * Comments:
- *
- */
-SHA1::SHA1()
-{
- Reset();
-}
-
-/*
- * ~SHA1
- *
- * Description:
- * This is the destructor for the sha1 class
- *
- * Parameters:
- * None.
- *
- * Returns:
- * Nothing.
- *
- * Comments:
- *
- */
-SHA1::~SHA1()
-{
- // The destructor does nothing
-}
-
-/*
- * Reset
- *
- * Description:
- * This function will initialize the sha1 class member variables
- * in preparation for computing a new message digest.
- *
- * Parameters:
- * None.
- *
- * Returns:
- * Nothing.
- *
- * Comments:
- *
- */
-void SHA1::Reset()
-{
- Length_Low = 0;
- Length_High = 0;
- Message_Block_Index = 0;
-
- H[0] = 0x67452301;
- H[1] = 0xEFCDAB89;
- H[2] = 0x98BADCFE;
- H[3] = 0x10325476;
- H[4] = 0xC3D2E1F0;
-
- Computed = false;
- Corrupted = false;
-}
-
-/*
- * Result
- *
- * Description:
- * This function will return the 160-bit message digest into the
- * array provided.
- *
- * Parameters:
- * message_digest_array: [out]
- * This is an array of five unsigned integers which will be filled
- * with the message digest that has been computed.
- *
- * Returns:
- * True if successful, false if it failed.
- *
- * Comments:
- *
- */
-bool SHA1::Result(unsigned *message_digest_array)
-{
- int i; // Counter
-
- if (Corrupted)
- {
- return false;
- }
-
- if (!Computed)
- {
- PadMessage();
- Computed = true;
- }
-
- for(i = 0; i < 5; i++)
- {
- message_digest_array[i] = H[i];
- }
-
- return true;
-}
-
-/*
- * Input
- *
- * Description:
- * This function accepts an array of octets as the next portion of
- * the message.
- *
- * Parameters:
- * message_array: [in]
- * An array of characters representing the next portion of the
- * message.
- *
- * Returns:
- * Nothing.
- *
- * Comments:
- *
- */
-void SHA1::Input( const unsigned char *message_array,
- unsigned length)
-{
- if (!length)
- {
- return;
- }
-
- if (Computed || Corrupted)
- {
- Corrupted = true;
- return;
- }
-
- while(length-- && !Corrupted)
- {
- Message_Block[Message_Block_Index++] = (*message_array & 0xFF);
-
- Length_Low += 8;
- Length_Low &= 0xFFFFFFFF; // Force it to 32 bits
- if (Length_Low == 0)
- {
- Length_High++;
- Length_High &= 0xFFFFFFFF; // Force it to 32 bits
- if (Length_High == 0)
- {
- Corrupted = true; // Message is too long
- }
- }
-
- if (Message_Block_Index == 64)
- {
- ProcessMessageBlock();
- }
-
- message_array++;
- }
-}
-
-/*
- * Input
- *
- * Description:
- * This function accepts an array of octets as the next portion of
- * the message.
- *
- * Parameters:
- * message_array: [in]
- * An array of characters representing the next portion of the
- * message.
- * length: [in]
- * The length of the message_array
- *
- * Returns:
- * Nothing.
- *
- * Comments:
- *
- */
-void SHA1::Input( const char *message_array,
- unsigned length)
-{
- Input((unsigned char *) message_array, length);
-}
-
-/*
- * Input
- *
- * Description:
- * This function accepts a single octets as the next message element.
- *
- * Parameters:
- * message_element: [in]
- * The next octet in the message.
- *
- * Returns:
- * Nothing.
- *
- * Comments:
- *
- */
-void SHA1::Input(unsigned char message_element)
-{
- Input(&message_element, 1);
-}
-
-/*
- * Input
- *
- * Description:
- * This function accepts a single octet as the next message element.
- *
- * Parameters:
- * message_element: [in]
- * The next octet in the message.
- *
- * Returns:
- * Nothing.
- *
- * Comments:
- *
- */
-void SHA1::Input(char message_element)
-{
- Input((unsigned char *) &message_element, 1);
-}
-
-/*
- * operator<<
- *
- * Description:
- * This operator makes it convenient to provide character strings to
- * the SHA1 object for processing.
- *
- * Parameters:
- * message_array: [in]
- * The character array to take as input.
- *
- * Returns:
- * A reference to the SHA1 object.
- *
- * Comments:
- * Each character is assumed to hold 8 bits of information.
- *
- */
-SHA1& SHA1::operator<<(const char *message_array)
-{
- const char *p = message_array;
-
- while(*p)
- {
- Input(*p);
- p++;
- }
-
- return *this;
-}
-
-/*
- * operator<<
- *
- * Description:
- * This operator makes it convenient to provide character strings to
- * the SHA1 object for processing.
- *
- * Parameters:
- * message_array: [in]
- * The character array to take as input.
- *
- * Returns:
- * A reference to the SHA1 object.
- *
- * Comments:
- * Each character is assumed to hold 8 bits of information.
- *
- */
-SHA1& SHA1::operator<<(const unsigned char *message_array)
-{
- const unsigned char *p = message_array;
-
- while(*p)
- {
- Input(*p);
- p++;
- }
-
- return *this;
-}
-
-/*
- * operator<<
- *
- * Description:
- * This function provides the next octet in the message.
- *
- * Parameters:
- * message_element: [in]
- * The next octet in the message
- *
- * Returns:
- * A reference to the SHA1 object.
- *
- * Comments:
- * The character is assumed to hold 8 bits of information.
- *
- */
-SHA1& SHA1::operator<<(const char message_element)
-{
- Input((unsigned char *) &message_element, 1);
-
- return *this;
-}
-
-/*
- * operator<<
- *
- * Description:
- * This function provides the next octet in the message.
- *
- * Parameters:
- * message_element: [in]
- * The next octet in the message
- *
- * Returns:
- * A reference to the SHA1 object.
- *
- * Comments:
- * The character is assumed to hold 8 bits of information.
- *
- */
-SHA1& SHA1::operator<<(const unsigned char message_element)
-{
- Input(&message_element, 1);
-
- return *this;
-}
-
-/*
- * ProcessMessageBlock
- *
- * Description:
- * This function will process the next 512 bits of the message
- * stored in the Message_Block array.
- *
- * Parameters:
- * None.
- *
- * Returns:
- * Nothing.
- *
- * Comments:
- * Many of the variable names in this function, especially the single
- * character names, were used because those were the names used
- * in the publication.
- *
- */
-void SHA1::ProcessMessageBlock()
-{
- const unsigned K[] = { // Constants defined for SHA-1
- 0x5A827999,
- 0x6ED9EBA1,
- 0x8F1BBCDC,
- 0xCA62C1D6
- };
- int t; // Loop counter
- unsigned temp; // Temporary word value
- unsigned W[80]; // Word sequence
- unsigned A, B, C, D, E; // Word buffers
-
- /*
- * Initialize the first 16 words in the array W
- */
- for(t = 0; t < 16; t++)
- {
- W[t] = ((unsigned) Message_Block[t * 4]) << 24;
- W[t] |= ((unsigned) Message_Block[t * 4 + 1]) << 16;
- W[t] |= ((unsigned) Message_Block[t * 4 + 2]) << 8;
- W[t] |= ((unsigned) Message_Block[t * 4 + 3]);
- }
-
- for(t = 16; t < 80; t++)
- {
- W[t] = CircularShift(1,W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]);
- }
-
- A = H[0];
- B = H[1];
- C = H[2];
- D = H[3];
- E = H[4];
-
- for(t = 0; t < 20; t++)
- {
- temp = CircularShift(5,A) + ((B & C) | ((~B) & D)) + E + W[t] + K[0];
- temp &= 0xFFFFFFFF;
- E = D;
- D = C;
- C = CircularShift(30,B);
- B = A;
- A = temp;
- }
-
- for(t = 20; t < 40; t++)
- {
- temp = CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[1];
- temp &= 0xFFFFFFFF;
- E = D;
- D = C;
- C = CircularShift(30,B);
- B = A;
- A = temp;
- }
-
- for(t = 40; t < 60; t++)
- {
- temp = CircularShift(5,A) +
- ((B & C) | (B & D) | (C & D)) + E + W[t] + K[2];
- temp &= 0xFFFFFFFF;
- E = D;
- D = C;
- C = CircularShift(30,B);
- B = A;
- A = temp;
- }
-
- for(t = 60; t < 80; t++)
- {
- temp = CircularShift(5,A) + (B ^ C ^ D) + E + W[t] + K[3];
- temp &= 0xFFFFFFFF;
- E = D;
- D = C;
- C = CircularShift(30,B);
- B = A;
- A = temp;
- }
-
- H[0] = (H[0] + A) & 0xFFFFFFFF;
- H[1] = (H[1] + B) & 0xFFFFFFFF;
- H[2] = (H[2] + C) & 0xFFFFFFFF;
- H[3] = (H[3] + D) & 0xFFFFFFFF;
- H[4] = (H[4] + E) & 0xFFFFFFFF;
-
- Message_Block_Index = 0;
-}
-
-/*
- * PadMessage
- *
- * Description:
- * According to the standard, the message must be padded to an even
- * 512 bits. The first padding bit must be a '1'. The last 64 bits
- * represent the length of the original message. All bits in between
- * should be 0. This function will pad the message according to those
- * rules by filling the message_block array accordingly. It will also
- * call ProcessMessageBlock() appropriately. When it returns, it
- * can be assumed that the message digest has been computed.
- *
- * Parameters:
- * None.
- *
- * Returns:
- * Nothing.
- *
- * Comments:
- *
- */
-void SHA1::PadMessage()
-{
- /*
- * Check to see if the current message block is too small to hold
- * the initial padding bits and length. If so, we will pad the
- * block, process it, and then continue padding into a second block.
- */
- if (Message_Block_Index > 55)
- {
- Message_Block[Message_Block_Index++] = 0x80;
- while(Message_Block_Index < 64)
- {
- Message_Block[Message_Block_Index++] = 0;
- }
-
- ProcessMessageBlock();
-
- while(Message_Block_Index < 56)
- {
- Message_Block[Message_Block_Index++] = 0;
- }
- }
- else
- {
- Message_Block[Message_Block_Index++] = 0x80;
- while(Message_Block_Index < 56)
- {
- Message_Block[Message_Block_Index++] = 0;
- }
-
- }
-
- /*
- * Store the message length as the last 8 octets
- */
- Message_Block[56] = (Length_High >> 24) & 0xFF;
- Message_Block[57] = (Length_High >> 16) & 0xFF;
- Message_Block[58] = (Length_High >> 8) & 0xFF;
- Message_Block[59] = (Length_High) & 0xFF;
- Message_Block[60] = (Length_Low >> 24) & 0xFF;
- Message_Block[61] = (Length_Low >> 16) & 0xFF;
- Message_Block[62] = (Length_Low >> 8) & 0xFF;
- Message_Block[63] = (Length_Low) & 0xFF;
-
- ProcessMessageBlock();
-}
-
-
-/*
- * CircularShift
- *
- * Description:
- * This member function will perform a circular shifting operation.
- *
- * Parameters:
- * bits: [in]
- * The number of bits to shift (1-31)
- * word: [in]
- * The value to shift (assumes a 32-bit integer)
- *
- * Returns:
- * The shifted value.
- *
- * Comments:
- *
- */
-unsigned SHA1::CircularShift(int bits, unsigned word)
-{
- return ((word << bits) & 0xFFFFFFFF) | ((word & 0xFFFFFFFF) >> (32-bits));
-}
diff --git a/miosix/_tools/ram_test/sha1.h b/miosix/_tools/ram_test/sha1.h
deleted file mode 100644
index 130e7c4a9..000000000
--- a/miosix/_tools/ram_test/sha1.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * sha1.h
- *
- * Copyright (C) 1998, 2009
- * Paul E. Jones
- * All Rights Reserved.
- *
- * Freeware Public License (FPL)
- *
- * This software is licensed as "freeware." Permission to distribute
- * this software in source and binary forms, including incorporation
- * into other products, is hereby granted without a fee. THIS SOFTWARE
- * IS PROVIDED 'AS IS' AND WITHOUT ANY EXPRESSED OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
- * AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHOR SHALL NOT BE HELD
- * LIABLE FOR ANY DAMAGES RESULTING FROM THE USE OF THIS SOFTWARE, EITHER
- * DIRECTLY OR INDIRECTLY, INCLUDING, BUT NOT LIMITED TO, LOSS OF DATA
- * OR DATA BEING RENDERED INACCURATE.
- *
- *****************************************************************************
- * $Id: sha1.h 12 2009-06-22 19:34:25Z paulej $
- *****************************************************************************
- *
- * Description:
- * This class implements the Secure Hashing Standard as defined
- * in FIPS PUB 180-1 published April 17, 1995.
- *
- * Many of the variable names in this class, especially the single
- * character names, were used because those were the names used
- * in the publication.
- *
- * Please read the file sha1.cpp for more information.
- *
- */
-
-#ifndef _SHA1_H_
-#define _SHA1_H_
-
-class SHA1
-{
-
- public:
-
- SHA1();
- virtual ~SHA1();
-
- /*
- * Re-initialize the class
- */
- void Reset();
-
- /*
- * Returns the message digest
- */
- bool Result(unsigned *message_digest_array);
-
- /*
- * Provide input to SHA1
- */
- void Input( const unsigned char *message_array,
- unsigned length);
- void Input( const char *message_array,
- unsigned length);
- void Input(unsigned char message_element);
- void Input(char message_element);
- SHA1& operator<<(const char *message_array);
- SHA1& operator<<(const unsigned char *message_array);
- SHA1& operator<<(const char message_element);
- SHA1& operator<<(const unsigned char message_element);
-
- private:
-
- /*
- * Process the next 512 bits of the message
- */
- void ProcessMessageBlock();
-
- /*
- * Pads the current message block to 512 bits
- */
- void PadMessage();
-
- /*
- * Performs a circular left shift operation
- */
- inline unsigned CircularShift(int bits, unsigned word);
-
- unsigned H[5]; // Message digest buffers
-
- unsigned Length_Low; // Message length in bits
- unsigned Length_High; // Message length in bits
-
- unsigned char Message_Block[64]; // 512-bit message blocks
- int Message_Block_Index; // Index into message block array
-
- bool Computed; // Is the digest computed?
- bool Corrupted; // Is the message digest corruped?
-
-};
-
-// Added by TFT -- begin
-#include
-#include
-
-const int sha1size=20;
-
-inline std::string sha1(const std::string& message)
-{
- SHA1 hash;
- hash.Input(message.c_str(),message.length());
- unsigned int r[sha1size/4];
- hash.Result(r);
- char resultstr[2*sha1size+1];
- std::sprintf(resultstr,"%04x%04x%04x%04x%04x",r[0],r[1],r[2],r[3],r[4]);
- return std::string(resultstr);
-}
-
-inline void sha1binary(const std::string& message, unsigned char digest[sha1size])
-{
- SHA1 hash;
- hash.Input(message.c_str(),message.length());
- unsigned int r[sha1size/4];
- hash.Result(r);
- for(int i=0;i> 8*(3-i%4)) & 0xff;
-}
-// Added by TFT -- end
-
-#endif
diff --git a/miosix/_tools/testsuite/.gitignore b/miosix/_tools/testsuite/.gitignore
deleted file mode 100644
index 5290abf23..000000000
--- a/miosix/_tools/testsuite/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-testsuite_romfs/test_process
-testsuite_romfs/test_execve
-testsuite_romfs/test_global_dtor_ctor
-*.map
diff --git a/miosix/_tools/testsuite/Makefile b/miosix/_tools/testsuite/Makefile
deleted file mode 100644
index 8eacf78a2..000000000
--- a/miosix/_tools/testsuite/Makefile
+++ /dev/null
@@ -1,53 +0,0 @@
-##
-## Makefile for Miosix embedded OS
-##
-
-## Path to kernel/config directories (edited by init_project_out_of_git_repo.pl)
-KPATH := ../..
-CONFPATH := ../..
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/Makefile.kcommon
-
-##
-## List here your source files (both .s, .c and .cpp)
-##
-SRC := testsuite.cpp
-
-##
-## List here additional include directories (in the form -Iinclude_dir)
-##
-INCLUDE_DIRS :=
-
-##
-## List here additional static libraries with relative path
-##
-LIBS :=
-
-##
-## List here subdirectories which contains makefiles
-##
-# Only build processes if the architecture supports them
-ifneq ($(POSTLD),)
-SUBDIRS += test_process test_execve test_global_dtor_ctor
-endif
-
-##
-## Attach a romfs filesystem image after the kernel
-##
-ROMFS_DIR := testsuite_romfs
-
-all: $(if $(ROMFS_DIR), image, main)
-
-main: $(OBJ) all-recursive
- $(ECHO) "[LD ] main.elf"
- $(Q)$(CXX) $(LFLAGS) -o main.elf $(OBJ) $(LINK_LIBS)
- $(ECHO) "[CP ] main.hex"
- $(Q)$(CP) -O ihex main.elf main.hex
- $(ECHO) "[CP ] main.bin"
- $(Q)$(CP) -O binary main.elf main.bin
- $(Q)$(SZ) main.elf
-
-clean: clean-recursive
- $(Q)rm -f $(OBJ) $(OBJ:.o=.d) main.elf main.hex main.bin main.map
-
--include $(OBJ:.o=.d)
diff --git a/miosix/_tools/testsuite/test_execve/Makefile b/miosix/_tools/testsuite/test_execve/Makefile
deleted file mode 100644
index 40a099e51..000000000
--- a/miosix/_tools/testsuite/test_execve/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-##
-## Makefile for writing processes for the Miosix embedded OS
-##
-
-## KPATH and CONFPATH can be specified here or forwarded by the parent makefile
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/libsyscalls/Makefile.pcommon
-
-BIN := ../testsuite_romfs/test_execve
-SRC := main.cpp
-
-all: $(OBJ)
- $(ECHO) "[LD ] $(BIN)"
- $(Q)$(CXX) $(LFLAGS) -o $(BIN) $(OBJ) $(LINK_LIBS)
- $(Q)$(SZ) $(BIN)
- $(Q)$(STRIP) $(BIN)
- $(Q)$(POSTLD) $(BIN) --ramsize=16384 --stacksize=2048 --strip-sectheader
-
-clean:
- -rm -f $(OBJ) $(OBJ:.o=.d) $(BIN) $(notdir $(BIN)).map
-
--include $(OBJ:.o=.d)
diff --git a/miosix/_tools/testsuite/test_global_dtor_ctor/Makefile b/miosix/_tools/testsuite/test_global_dtor_ctor/Makefile
deleted file mode 100644
index 286f8075a..000000000
--- a/miosix/_tools/testsuite/test_global_dtor_ctor/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-##
-## Makefile for writing processes for the Miosix embedded OS
-##
-
-## KPATH and CONFPATH can be specified here or forwarded by the parent makefile
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/libsyscalls/Makefile.pcommon
-
-BIN := ../testsuite_romfs/test_global_dtor_ctor
-SRC := main.cpp
-
-all: $(OBJ)
- $(ECHO) "[LD ] $(BIN)"
- $(Q)$(CXX) $(LFLAGS) -o $(BIN) $(OBJ) $(LINK_LIBS)
- $(Q)$(SZ) $(BIN)
- $(Q)$(STRIP) $(BIN)
- $(Q)$(POSTLD) $(BIN) --ramsize=16384 --stacksize=2048 --strip-sectheader
-
-clean:
- -rm -f $(OBJ) $(OBJ:.o=.d) $(BIN) $(notdir $(BIN)).map
-
--include $(OBJ:.o=.d)
diff --git a/miosix/_tools/testsuite/test_process/Makefile b/miosix/_tools/testsuite/test_process/Makefile
deleted file mode 100644
index aa2549d74..000000000
--- a/miosix/_tools/testsuite/test_process/Makefile
+++ /dev/null
@@ -1,22 +0,0 @@
-##
-## Makefile for writing processes for the Miosix embedded OS
-##
-
-## KPATH and CONFPATH can be specified here or forwarded by the parent makefile
-MAKEFILE_VERSION := 1.15
-include $(KPATH)/libsyscalls/Makefile.pcommon
-
-BIN := ../testsuite_romfs/test_process
-SRC := main.cpp
-
-all: $(OBJ)
- $(ECHO) "[LD ] $(BIN)"
- $(Q)$(CXX) $(LFLAGS) -o $(BIN) $(OBJ) $(LINK_LIBS)
- $(Q)$(SZ) $(BIN)
- $(Q)$(STRIP) $(BIN)
- $(Q)$(POSTLD) $(BIN) --ramsize=16384 --stacksize=2048 --strip-sectheader
-
-clean:
- -rm -f $(OBJ) $(OBJ:.o=.d) $(BIN) $(notdir $(BIN)).map
-
--include $(OBJ:.o=.d)
diff --git a/miosix/_tools/testsuite/test_process/main.cpp b/miosix/_tools/testsuite/test_process/main.cpp
deleted file mode 100644
index eba079429..000000000
--- a/miosix/_tools/testsuite/test_process/main.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2024 by Daniele Cattaneo *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * As a special exception, if other files instantiate templates or use *
- * macros or inline functions from this file, or you compile this file *
- * and link it with other works to produce a work based on this file, *
- * this file does not by itself cause the resulting work to be covered *
- * by the GNU General Public License. However the source code for this *
- * file must still be made available in accordance with the GNU General *
- * Public License. This exception does not invalidate any other reasons *
- * why a work based on this file might be covered by the GNU General *
- * Public License. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see *
- ***************************************************************************/
-
-#include
-#include
-#include
-#include
-
-using namespace std;
-
-extern char **environ;
-
-// Processes implies filesystem & DevFs
-#define WITH_FILESYSTEM
-#define WITH_DEVFS
-#define WITH_PROCESSES
-// Define for tests to distinguish whether we are compiling in a process
-#define IN_PROCESS
-
-//Functions common to all tests
-static void test_name(const char *name);
-static void pass();
-static void fail(const char *cause);
-
-// Syscalls tests (shared with kercalls)
-#include "../test_syscalls.h"
-
-static int sys_test_getpid_child(int argc, char *argv[]);
-
-int main(int argc, char *argv[], char *envp[])
-{
- if(argc == 0) return 1;
- else if(argc == 1) test_syscalls();
- else if(argc == 2)
- {
- if(strcmp("sys_test_getpid_child", argv[1])==0)
- return sys_test_getpid_child(argc, argv);
- if(strcmp("exit_123", argv[1])==0)
- exit(123);
- if(strcmp("sleep_and_exit_234", argv[1])==0)
- {
- sleep(1);
- exit(234);
- }
- if(strcmp("environ_check", argv[1])==0)
- {
- if(environ!=envp) return 1;
- if(environ[0]==nullptr) return 1;
- if(environ[1]!=nullptr) return 1;
- if(strcmp(environ[0],"TEST=test")!=0) return 1;
- return 0;
- }
- if(strcmp("execve", argv[1])==0)
- {
- // For some weird reason, execve signature allows the pointers to
- // be constant but not the strings.
- char arg_path[]="/bin/test_execve";
- char env_entry[]="TEST_ENVP=test";
- char *arg[] = { arg_path, nullptr };
- char *env[] = { env_entry, nullptr };
- execve(arg[0],arg,env);
- return 99;
- }
- if(strcmp("sigsegv", argv[1])==0)
- {
- uint32_t *ptr=nullptr;
- // Fool the compiler in believing the ptr may not be null
- // If we don't do this, the compiler is allowed to consider this
- // code to always have undefined behavior and transform it to
- // something we don't want (clang is known to pull this kind of
- // tricks)
- asm volatile("":"+r"(ptr)::);
- *ptr=12345;
- }
- }
- else return 1;
- return 0;
-}
-
-/**
- * Called @ the beginning of a test
- * \param name test name
- */
-static void test_name(const char *name)
-{
- iprintf("Testing %s...\n",name);
-}
-
-/**
- * Called @ the end of a successful test
- */
-static void pass()
-{
- iprintf("Ok.\n");
-}
-
-/**
- * Called if a test fails
- * \param cause cause of the failure
- */
-static void fail(const char *cause)
-{
- //Can't use iprintf here because fail() may be used in threads
- //with 256 bytes of stack, and iprintf may cause stack overflow
- write(STDOUT_FILENO,"Failed:\n",8);
- write(STDOUT_FILENO,cause,strlen(cause));
- write(STDOUT_FILENO,"\n",1);
- exit(1);
-}
-
-/**
- * 16 bit ccitt crc calculation
- * \param crc The first time the function is called, pass 0xffff, all the other
- * times, pass the previous value. The value returned after the last call is
- * the desired crc
- * \param data a byte of the message
- */
-static inline void crc16Update(unsigned short& crc, unsigned char data)
-{
- unsigned short x=((crc>>8) ^ data) & 0xff;
- x^=x>>4;
- crc=(crc<<8) ^ (x<<12) ^ (x<<5) ^ x;
-}
-
-unsigned short crc16(const void *message, unsigned int length)
-{
- const unsigned char *m=reinterpret_cast(message);
- unsigned short result=0xffff;
- for(unsigned int i=0;i *
- ***************************************************************************/
-
-#include "conflict_table.h"
-
-namespace miosix {
-
-OpenState ConflictTable::isOpen(const char *filename) const
-{
- //Despite using a hash table this is still slow because every time this
- //function is called with a file not yet open (and the probability is high)
- //the whole array is scanned. Fix it someday
- int index=hash(filename);
- for(int i=0;i=MAX_OPEN_FILES) index=0;
- }
- }
- return NOT_OPEN;
-}
-
-void ConflictTable::open(int fd, const char *filename, OpenState mode)
-{
- int index=hash(filename);
- for(int i=0;i=MAX_OPEN_FILES) index=0;
- }
- }
-}
-
-void ConflictTable::close(int fd)
-{
-
-}
-
-unsigned int ConflictTable::hash(const char* filename)
-{
- //Bernstein hash
- unsigned int result=5381;
- while(*filename!='\0')
- {
- result=33*result+*filename;
- filename++;
- }
- return result % MAX_OPEN_FILES;
-}
-
-} //namespace miosix
diff --git a/miosix/_tools/unused/conflict_table.h b/miosix/_tools/unused/conflict_table.h
deleted file mode 100644
index 2dd864c51..000000000
--- a/miosix/_tools/unused/conflict_table.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2008 2009 2010 by Terraneo Federico *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * As a special exception, if other files instantiate templates or use *
- * macros or inline functions from this file, or you compile this file *
- * and link it with other works to produce a work based on this file, *
- * this file does not by itself cause the resulting work to be covered *
- * by the GNU General Public License. However the source code for this *
- * file must still be made available in accordance with the GNU General *
- * Public License. This exception does not invalidate any other reasons *
- * why a work based on this file might be covered by the GNU General *
- * Public License. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, see *
- ***************************************************************************/
-
-#ifndef CONFLICT_TABLE_H
-#define CONFLICT_TABLE_H
-
-#include "config/miosix_settings.h"
-
-namespace miosix {
-
-/**
- * This class is used to keep information about open files.
- * Given the file name, this class can tell if it is currently open for reading
- * or writing. Also, for files opened for reading a reference count is kept
- * because it is possible to open the same file more times.
- * The goal of this class is to avoid opening the same file more than once if it
- * is already opened for writing, a thing that can cause crashes and/or
- * filesystem corruption.
- * Wish I could use std::set to implement this...
- */
-class ConflictTable
-{
-public:
-
- /**
- * A file is considered in one of these three states
- */
- enum OpenState
- {
- NOT_OPEN, ///< File is not currently open
- OPEN_READ,///< File is open for reading
- OPEN_WRITE///< File is open for writing (or appending)
- };
-
- /**
- * Given a file name, return its state
- * \param filename the file name, including its path (if present)
- * Note that if the path is absent a / is added to the file name because
- * file.txt and /file.txt are the same file.
- * \return the file state
- */
- OpenState isOpen(const char *filename) const;
-
- /**
- * Add a file to the conflict table. To be called when a file is opened.
- * \param fd file descriptor, it is stored in the table and used to identify
- * the file when closing it
- * \param filename the file name, including its path (if present)
- * Note that if the path is absent a / is added to the file name because
- * file.txt and /file.txt are the same file.
- * \param mode can be either OPEN_READ or OPEN_WRITE, NOT_OPEN is not allowed
- */
- void open(int fd, const char *filename, OpenState mode);
-
- /**
- * To be called when a file is closed.
- * If the file is opened more times its reference count is decreased,
- * otherwise it is removed from the conflict table.
- * \param fd file descriptor of the file to remove.
- */
- void close(int fd);
-
-private:
-
- /**
- * Hash function
- * \return index of table 0<= \result < MAX_OPEN_FILES
- */
- static unsigned int hash(const char *filename);
-
- class TableEntry
- {
- /**
- * Constructor, assign default values
- */
- TableEntry() : write(false), refcount(0), fd(0), filename(0) {}
-
- /**
- * \param filename file to check
- * \return true if this TableEntry corresponds to filename
- */
- bool isThisFile(const char *filename)
- {
- if(isEmpty()) return false;
- if(!strcmp(filename,this->filename)) return true;
- return false;
- }
-
- /**
- * \return true if this FileEntry is empty
- */
- bool isEmpty()
- {
- return filename==0;
- }
-
- bool write;///<\internal true if file open for writing
- unsigned short refcount;///<\internal reference count
- //This is where there is the problem: we need to store a vector of fd otherwise
- //there's no way to delete them...
- int fd;///<\internal file descriptor
- const char *filename;///<\internal file name + path, NULL if empty
- };
-
- TableEntry fileData[MAX_OPEN_FILES];
-};
-
-} //namespace miosix
-
-#endif // CONFLICT_TABLE_H
diff --git a/miosix/_tools/unused/pthread_key.cpp b/miosix/_tools/unused/pthread_key.cpp
deleted file mode 100644
index 26182d7ab..000000000
--- a/miosix/_tools/unused/pthread_key.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-
-//
-// Key API (thread local storage)
-//
-
-struct KeyEntries
-{
- void *key;
- miosix::Thread *owner;
- KeyEntries *next;
-};
-
-struct KeyTable
-{
- KeyEntries *entries[4];
- void (*dtor[4])(void *);
- unsigned char used; ///First 4 bits used as bitmap
- KeyTable *next; ///For more than 4 keys, linked list
-};
-
-static KeyTable *root=0;
-static pthread_mutex_t keyMutex=PTHREAD_MUTEX_INITIALIZER;
-
-int pthread_key_create(pthread_key_t *key, void (*dtor)(void *))
-{
- pthread_mutex_lock(&keyMutex);
- if(root==0)
- {
- root=(KeyTable*)malloc(sizeof(KeyTable));
- if(root==0)
- {
- pthread_mutex_unlock(&keyMutex);
- return EAGAIN;
- }
- root->used=1;
- root->entries[0]=0;
- root->dtor[0]=dtor;
- *key=1;
- pthread_mutex_unlock(&keyMutex);
- return 0;
- }
-
- unsigned int id=1;
- KeyTable *walk=root;
- for(;;)
- {
- if(walk->used!=0xf)
- {
- for(int i=0;i<4;i++,id++)
- {
- if(walk->used & (1<used |= 1<entries[i]=0;
- walk->dtor[i]=dtor;
- *key=id;
- pthread_mutex_unlock(&keyMutex);
- return 0;
- }
- } else id+=4;
-
- if(walk->next==0)
- {
- walk->next=(KeyTable*)malloc(sizeof(KeyTable));
- if(walk->next==0)
- {
- pthread_mutex_unlock(&keyMutex);
- return EAGAIN;
- }
- walk->next->used=1;
- walk->next->entries[0]=0;
- walk->next->dtor[0]=dtor;
- *key=id;
- pthread_mutex_unlock(&keyMutex);
- return 0;
- }
-
- walk=walk->next;
- }
-}
-
-int pthread_setspecific(pthread_key_t key, const void *value)
-{
- if(key==0) return EINVAL;
- key--;
- pthread_mutex_lock(&keyMutex);
- if(root==0)
- {
- pthread_mutex_unlock(&keyMutex);
- return EINVAL;
- }
- KeyTable *walk=root;
- while(key>=4)
- {
- key-=4;
- if(walk->next==0)
- {
- pthread_mutex_unlock(&keyMutex);
- return EINVAL;
- }
- walk=walk->next;
- }
-
- if((walk->used & (1<entries[key];
-
- //TODO
-
- pthread_mutex_unlock(&keyMutex);
-}
-
-void *pthread_getspecific(pthread_key_t key)
-{
-
-}
-
-int pthread_key_delete(pthread_key_t key)
-{
-
-}
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_abdacb.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_abdacb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_abdacb.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_abdacb.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_acifc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_acifc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_acifc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_acifc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_adcife.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_adcife.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_adcife.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_adcife.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_aesa.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_aesa.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_aesa.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_aesa.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_ast.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_ast.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_ast.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_ast.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_bpm.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_bpm.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_bpm.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_bpm.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_bscif.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_bscif.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_bscif.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_bscif.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_catb.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_catb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_catb.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_catb.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_chipid.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_chipid.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_chipid.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_chipid.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_crccu.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_crccu.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_crccu.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_crccu.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_dacc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_dacc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_dacc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_dacc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_eic.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_eic.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_eic.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_eic.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_flashcalw.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_flashcalw.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_flashcalw.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_flashcalw.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_freqm.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_freqm.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_freqm.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_freqm.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_gloc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_gloc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_gloc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_gloc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_gpio.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_gpio.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_gpio.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_gpio.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_hcache.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_hcache.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_hcache.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_hcache.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_hmatrixb.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_hmatrixb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_hmatrixb.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_hmatrixb.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_iisc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_iisc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_iisc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_iisc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_lcdca.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_lcdca.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_lcdca.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_lcdca.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_parc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_parc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_parc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_parc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_pdca.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_pdca.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_pdca.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_pdca.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_pevc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_pevc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_pevc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_pevc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_picouart.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_picouart.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_picouart.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_picouart.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_pm.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_pm.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_pm.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_pm.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_scif.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_scif.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_scif.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_scif.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_smap.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_smap.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_smap.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_smap.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_spi.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_spi.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_spi.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_spi.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_tc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_tc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_tc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_tc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_trng.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_trng.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_trng.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_trng.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_twim.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_twim.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_twim.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_twim.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_twis.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_twis.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_twis.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_twis.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_usart.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_usart.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_usart.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_usart.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_usbc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_usbc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_usbc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_usbc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_wdt.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_wdt.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/component/component_wdt.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/component/component_wdt.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_abdacb.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_abdacb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_abdacb.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_abdacb.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_acifc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_acifc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_acifc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_acifc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_adcife.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_adcife.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_adcife.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_adcife.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_aesa.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_aesa.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_aesa.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_aesa.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_ast.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_ast.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_ast.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_ast.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_bpm.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_bpm.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_bpm.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_bpm.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_bscif.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_bscif.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_bscif.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_bscif.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_catb.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_catb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_catb.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_catb.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_chipid.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_chipid.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_chipid.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_chipid.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_crccu.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_crccu.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_crccu.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_crccu.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_dacc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_dacc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_dacc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_dacc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_eic.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_eic.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_eic.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_eic.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_freqm.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_freqm.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_freqm.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_freqm.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_gloc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_gloc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_gloc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_gloc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_gpio.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_gpio.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_gpio.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_gpio.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_hcache.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_hcache.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_hcache.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_hcache.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_hflashc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_hflashc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_hflashc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_hflashc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_hmatrix.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_hmatrix.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_hmatrix.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_hmatrix.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_iisc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_iisc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_iisc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_iisc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_lcdca.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_lcdca.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_lcdca.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_lcdca.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_parc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_parc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_parc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_parc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_pdca.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_pdca.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_pdca.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_pdca.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_pevc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_pevc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_pevc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_pevc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_picouart.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_picouart.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_picouart.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_picouart.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_pm.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_pm.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_pm.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_pm.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_scif.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_scif.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_scif.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_scif.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_smap.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_smap.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_smap.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_smap.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_spi.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_spi.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_spi.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_spi.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_tc0.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_tc0.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_tc0.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_tc0.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_tc1.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_tc1.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_tc1.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_tc1.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_trng.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_trng.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_trng.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_trng.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim0.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim0.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim0.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim0.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim1.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim1.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim1.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim1.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim2.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim2.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim2.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim2.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim3.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim3.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim3.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twim3.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twis0.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twis0.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twis0.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twis0.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twis1.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twis1.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_twis1.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_twis1.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart0.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart0.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart0.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart0.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart1.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart1.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart1.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart1.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart2.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart2.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart2.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart2.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart3.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart3.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart3.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_usart3.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_usbc.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_usbc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_usbc.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_usbc.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_wdt.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_wdt.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/instance/instance_wdt.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/instance/instance_wdt.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2a.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2a.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2b.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2b.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2c.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc2c.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4a.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4a.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4b.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4b.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4c.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc4c.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8a.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8a.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8b.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8b.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8c.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4lc8c.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2a.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2a.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2b.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2b.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2c.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls2c.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4a.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4a.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4b.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4b.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4c.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls4c.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8a.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8a.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8b.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8b.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8c.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/pio/pio_sam4ls8c.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4l.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4l.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4l.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4l.h
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc2a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc2a.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc2a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc2a.h
index 365e2ef05..fca5356cf 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc2a.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc2a.h
@@ -174,7 +174,7 @@ typedef enum IRQn
TWIM3_IRQn = 78, /**< 78 SAM4LC2A Two-wire Master Interface 3 (TWIM3) */
LCDCA_IRQn = 79, /**< 79 SAM4LC2A LCD Controller (LCDCA) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc2b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc2b.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc2b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc2b.h
index 88234353e..84db64e37 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc2b.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc2b.h
@@ -174,7 +174,7 @@ typedef enum IRQn
TWIM3_IRQn = 78, /**< 78 SAM4LC2B Two-wire Master Interface 3 (TWIM3) */
LCDCA_IRQn = 79, /**< 79 SAM4LC2B LCD Controller (LCDCA) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc2c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc2c.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc2c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc2c.h
index 70f8662e8..0cb8d40ad 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc2c.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc2c.h
@@ -174,7 +174,7 @@ typedef enum IRQn
TWIM3_IRQn = 78, /**< 78 SAM4LC2C Two-wire Master Interface 3 (TWIM3) */
LCDCA_IRQn = 79, /**< 79 SAM4LC2C LCD Controller (LCDCA) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc4a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc4a.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc4a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc4a.h
index aa02fa4cf..40a94205c 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc4a.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc4a.h
@@ -174,7 +174,7 @@ typedef enum IRQn
TWIM3_IRQn = 78, /**< 78 SAM4LC4A Two-wire Master Interface 3 (TWIM3) */
LCDCA_IRQn = 79, /**< 79 SAM4LC4A LCD Controller (LCDCA) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc4b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc4b.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc4b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc4b.h
index e9c770ace..4803185bc 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc4b.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc4b.h
@@ -174,7 +174,7 @@ typedef enum IRQn
TWIM3_IRQn = 78, /**< 78 SAM4LC4B Two-wire Master Interface 3 (TWIM3) */
LCDCA_IRQn = 79, /**< 79 SAM4LC4B LCD Controller (LCDCA) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc4c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc4c.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc4c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc4c.h
index 3131f3a1e..e79b65c4e 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc4c.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc4c.h
@@ -174,7 +174,7 @@ typedef enum IRQn
TWIM3_IRQn = 78, /**< 78 SAM4LC4C Two-wire Master Interface 3 (TWIM3) */
LCDCA_IRQn = 79, /**< 79 SAM4LC4C LCD Controller (LCDCA) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc8a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc8a.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc8a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc8a.h
index aeaa3ccc3..62e01459c 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc8a.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc8a.h
@@ -174,7 +174,7 @@ typedef enum IRQn
TWIM3_IRQn = 78, /**< 78 SAM4LC8A Two-wire Master Interface 3 (TWIM3) */
LCDCA_IRQn = 79, /**< 79 SAM4LC8A LCD Controller (LCDCA) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc8b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc8b.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc8b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc8b.h
index 838d1c904..2cea3c7c1 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc8b.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc8b.h
@@ -174,7 +174,7 @@ typedef enum IRQn
TWIM3_IRQn = 78, /**< 78 SAM4LC8B Two-wire Master Interface 3 (TWIM3) */
LCDCA_IRQn = 79, /**< 79 SAM4LC8B LCD Controller (LCDCA) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc8c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc8c.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc8c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc8c.h
index bd6690066..0c7675508 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4lc8c.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4lc8c.h
@@ -174,7 +174,7 @@ typedef enum IRQn
TWIM3_IRQn = 78, /**< 78 SAM4LC8C Two-wire Master Interface 3 (TWIM3) */
LCDCA_IRQn = 79, /**< 79 SAM4LC8C LCD Controller (LCDCA) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls2a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls2a.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls2a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls2a.h
index 9038bfc05..49add9eca 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls2a.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls2a.h
@@ -172,7 +172,7 @@ typedef enum IRQn
TWIM2_IRQn = 77, /**< 77 SAM4LS2A Two-wire Master Interface 2 (TWIM2) */
TWIM3_IRQn = 78, /**< 78 SAM4LS2A Two-wire Master Interface 3 (TWIM3) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls2b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls2b.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls2b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls2b.h
index 053062b65..7d9012787 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls2b.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls2b.h
@@ -172,7 +172,7 @@ typedef enum IRQn
TWIM2_IRQn = 77, /**< 77 SAM4LS2B Two-wire Master Interface 2 (TWIM2) */
TWIM3_IRQn = 78, /**< 78 SAM4LS2B Two-wire Master Interface 3 (TWIM3) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls2c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls2c.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls2c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls2c.h
index 0a3675225..eabd27464 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls2c.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls2c.h
@@ -172,7 +172,7 @@ typedef enum IRQn
TWIM2_IRQn = 77, /**< 77 SAM4LS2C Two-wire Master Interface 2 (TWIM2) */
TWIM3_IRQn = 78, /**< 78 SAM4LS2C Two-wire Master Interface 3 (TWIM3) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls4a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls4a.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls4a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls4a.h
index 8972b2704..2e0dd79e4 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls4a.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls4a.h
@@ -172,7 +172,7 @@ typedef enum IRQn
TWIM2_IRQn = 77, /**< 77 SAM4LS4A Two-wire Master Interface 2 (TWIM2) */
TWIM3_IRQn = 78, /**< 78 SAM4LS4A Two-wire Master Interface 3 (TWIM3) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls4b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls4b.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls4b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls4b.h
index 27ed4d63f..62865ec00 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls4b.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls4b.h
@@ -172,7 +172,7 @@ typedef enum IRQn
TWIM2_IRQn = 77, /**< 77 SAM4LS4B Two-wire Master Interface 2 (TWIM2) */
TWIM3_IRQn = 78, /**< 78 SAM4LS4B Two-wire Master Interface 3 (TWIM3) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls4c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls4c.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls4c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls4c.h
index 964f70dde..8181cf8ae 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls4c.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls4c.h
@@ -172,7 +172,7 @@ typedef enum IRQn
TWIM2_IRQn = 77, /**< 77 SAM4LS4C Two-wire Master Interface 2 (TWIM2) */
TWIM3_IRQn = 78, /**< 78 SAM4LS4C Two-wire Master Interface 3 (TWIM3) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls8a.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls8a.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls8a.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls8a.h
index a0d08e322..d46bfb891 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls8a.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls8a.h
@@ -172,7 +172,7 @@ typedef enum IRQn
TWIM2_IRQn = 77, /**< 77 SAM4LS8A Two-wire Master Interface 2 (TWIM2) */
TWIM3_IRQn = 78, /**< 78 SAM4LS8A Two-wire Master Interface 3 (TWIM3) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls8b.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls8b.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls8b.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls8b.h
index 3aa3f1f36..2604f5049 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls8b.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls8b.h
@@ -172,7 +172,7 @@ typedef enum IRQn
TWIM2_IRQn = 77, /**< 77 SAM4LS8B Two-wire Master Interface 2 (TWIM2) */
TWIM3_IRQn = 78, /**< 78 SAM4LS8B Two-wire Master Interface 3 (TWIM3) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls8c.h b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls8c.h
similarity index 99%
rename from miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls8c.h
rename to miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls8c.h
index f935bd055..c9c2f363e 100644
--- a/miosix/arch/common/CMSIS/Device/Atmel/sam4l/include/sam4ls8c.h
+++ b/miosix/arch/CMSIS/Device/Atmel/sam4l/include/sam4ls8c.h
@@ -172,7 +172,7 @@ typedef enum IRQn
TWIM2_IRQn = 77, /**< 77 SAM4LS8C Two-wire Master Interface 2 (TWIM2) */
TWIM3_IRQn = 78, /**< 78 SAM4LS8C Two-wire Master Interface 3 (TWIM3) */
- PERIPH_COUNT_IRQn = 80 /**< Number of peripheral IDs */
+ PERIPH_COUNT_IRQn = 80, /**< Number of peripheral IDs */
} IRQn_Type;
typedef struct _DeviceVectors
diff --git a/miosix/arch/CMSIS/Device/Nordic/nRF52/Include/nrf52840.h b/miosix/arch/CMSIS/Device/Nordic/nRF52/Include/nrf52840.h
new file mode 100644
index 000000000..1a7138a96
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/Nordic/nRF52/Include/nrf52840.h
@@ -0,0 +1,2960 @@
+/*
+ * Copyright (c) 2010 - 2021, Nordic Semiconductor ASA
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form, except as embedded into a Nordic
+ * Semiconductor ASA integrated circuit in a product or a software update for
+ * such product, must reproduce the above copyright notice, this list of
+ * conditions and the following disclaimer in the documentation and/or other
+ * materials provided with the distribution.
+ *
+ * 3. Neither the name of Nordic Semiconductor ASA nor the names of its
+ * contributors may be used to endorse or promote products derived from this
+ * software without specific prior written permission.
+ *
+ * 4. This software, with or without modification, must only be used with a
+ * Nordic Semiconductor ASA integrated circuit.
+ *
+ * 5. Any software provided in binary form under this license must not be reverse
+ * engineered, decompiled, modified and/or disassembled.
+ *
+ * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * @file nrf52840.h
+ * @brief CMSIS HeaderFile
+ * @version 1
+ * @date 14. May 2021
+ * @note Generated by SVDConv V3.3.35 on Friday, 14.05.2021 15:32:44
+ * from File 'nrf52840.svd',
+ * last modified on Friday, 14.05.2021 13:32:37
+ */
+
+
+
+/** @addtogroup Nordic Semiconductor
+ * @{
+ */
+
+
+/** @addtogroup nrf52840
+ * @{
+ */
+
+
+#ifndef NRF52840_H
+#define NRF52840_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/** @addtogroup Configuration_of_CMSIS
+ * @{
+ */
+
+
+
+/* =========================================================================================================================== */
+/* ================ Interrupt Number Definition ================ */
+/* =========================================================================================================================== */
+
+typedef enum {
+/* ======================================= ARM Cortex-M4 Specific Interrupt Numbers ======================================== */
+ Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */
+ NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */
+ HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */
+ MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation
+ and No Match */
+ BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory
+ related Fault */
+ UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */
+ SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */
+ DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */
+ PendSV_IRQn = -2, /*!< -2 Pendable request for system service */
+ SysTick_IRQn = -1, /*!< -1 System Tick Timer */
+/* ========================================== nrf52840 Specific Interrupt Numbers ========================================== */
+ POWER_CLOCK_IRQn = 0, /*!< 0 POWER_CLOCK */
+ RADIO_IRQn = 1, /*!< 1 RADIO */
+ UARTE0_UART0_IRQn = 2, /*!< 2 UARTE0_UART0 */
+ SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0_IRQn= 3, /*!< 3 SPIM0_SPIS0_TWIM0_TWIS0_SPI0_TWI0 */
+ SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1_IRQn= 4, /*!< 4 SPIM1_SPIS1_TWIM1_TWIS1_SPI1_TWI1 */
+ NFCT_IRQn = 5, /*!< 5 NFCT */
+ GPIOTE_IRQn = 6, /*!< 6 GPIOTE */
+ SAADC_IRQn = 7, /*!< 7 SAADC */
+ TIMER0_IRQn = 8, /*!< 8 TIMER0 */
+ TIMER1_IRQn = 9, /*!< 9 TIMER1 */
+ TIMER2_IRQn = 10, /*!< 10 TIMER2 */
+ RTC0_IRQn = 11, /*!< 11 RTC0 */
+ TEMP_IRQn = 12, /*!< 12 TEMP */
+ RNG_IRQn = 13, /*!< 13 RNG */
+ ECB_IRQn = 14, /*!< 14 ECB */
+ CCM_AAR_IRQn = 15, /*!< 15 CCM_AAR */
+ WDT_IRQn = 16, /*!< 16 WDT */
+ RTC1_IRQn = 17, /*!< 17 RTC1 */
+ QDEC_IRQn = 18, /*!< 18 QDEC */
+ COMP_LPCOMP_IRQn = 19, /*!< 19 COMP_LPCOMP */
+ SWI0_EGU0_IRQn = 20, /*!< 20 SWI0_EGU0 */
+ SWI1_EGU1_IRQn = 21, /*!< 21 SWI1_EGU1 */
+ SWI2_EGU2_IRQn = 22, /*!< 22 SWI2_EGU2 */
+ SWI3_EGU3_IRQn = 23, /*!< 23 SWI3_EGU3 */
+ SWI4_EGU4_IRQn = 24, /*!< 24 SWI4_EGU4 */
+ SWI5_EGU5_IRQn = 25, /*!< 25 SWI5_EGU5 */
+ TIMER3_IRQn = 26, /*!< 26 TIMER3 */
+ TIMER4_IRQn = 27, /*!< 27 TIMER4 */
+ PWM0_IRQn = 28, /*!< 28 PWM0 */
+ PDM_IRQn = 29, /*!< 29 PDM */
+ MWU_IRQn = 32, /*!< 32 MWU */
+ PWM1_IRQn = 33, /*!< 33 PWM1 */
+ PWM2_IRQn = 34, /*!< 34 PWM2 */
+ SPIM2_SPIS2_SPI2_IRQn = 35, /*!< 35 SPIM2_SPIS2_SPI2 */
+ RTC2_IRQn = 36, /*!< 36 RTC2 */
+ I2S_IRQn = 37, /*!< 37 I2S */
+ FPU_IRQn = 38, /*!< 38 FPU */
+ USBD_IRQn = 39, /*!< 39 USBD */
+ UARTE1_IRQn = 40, /*!< 40 UARTE1 */
+ QSPI_IRQn = 41, /*!< 41 QSPI */
+ CRYPTOCELL_IRQn = 42, /*!< 42 CRYPTOCELL */
+ PWM3_IRQn = 45, /*!< 45 PWM3 */
+ SPIM3_IRQn = 47 /*!< 47 SPIM3 */
+} IRQn_Type;
+
+
+
+/* =========================================================================================================================== */
+/* ================ Processor and Core Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+/* =========================== Configuration of the ARM Cortex-M4 Processor and Core Peripherals =========================== */
+#define __CM4_REV 0x0001U /*!< CM4 Core Revision */
+#define __DSP_PRESENT 1 /*!< DSP present or not */
+#define __VTOR_PRESENT 1 /*!< Set to 1 if CPU supports Vector Table Offset Register */
+#define __NVIC_PRIO_BITS 3 /*!< Number of Bits used for Priority Levels */
+#define __Vendor_SysTickConfig 0 /*!< Set to 1 if different SysTick Config is used */
+#define __MPU_PRESENT 1 /*!< MPU present */
+#define __FPU_PRESENT 1 /*!< FPU present */
+
+
+/** @} */ /* End of group Configuration_of_CMSIS */
+
+#include //By TFT: fix path
+
+// TODO: modified for Miosix: do we need this?
+// #include "system_nrf52840.h" /*!< nrf52840 System */
+
+#ifndef __IM /*!< Fallback for older CMSIS versions */
+ #define __IM __I
+#endif
+#ifndef __OM /*!< Fallback for older CMSIS versions */
+ #define __OM __O
+#endif
+#ifndef __IOM /*!< Fallback for older CMSIS versions */
+ #define __IOM __IO
+#endif
+
+
+/* ======================================== Start of section using anonymous unions ======================================== */
+#if defined (__CC_ARM)
+ #pragma push
+ #pragma anon_unions
+#elif defined (__ICCARM__)
+ #pragma language=extended
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wc11-extensions"
+ #pragma clang diagnostic ignored "-Wreserved-id-macro"
+ #pragma clang diagnostic ignored "-Wgnu-anonymous-struct"
+ #pragma clang diagnostic ignored "-Wnested-anon-types"
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning 586
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Cluster Section ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup Device_Peripheral_clusters
+ * @{
+ */
+
+
+/**
+ * @brief FICR_INFO [INFO] (Device info)
+ */
+typedef struct {
+ __IM uint32_t PART; /*!< (@ 0x00000000) Part code */
+ __IM uint32_t VARIANT; /*!< (@ 0x00000004) Build code (hardware version and production configuration) */
+ __IM uint32_t PACKAGE; /*!< (@ 0x00000008) Package option */
+ __IM uint32_t RAM; /*!< (@ 0x0000000C) RAM variant */
+ __IM uint32_t FLASH; /*!< (@ 0x00000010) Flash variant */
+} FICR_INFO_Type; /*!< Size = 20 (0x14) */
+
+
+/**
+ * @brief FICR_TEMP [TEMP] (Registers storing factory TEMP module linearization coefficients)
+ */
+typedef struct {
+ __IM uint32_t A0; /*!< (@ 0x00000000) Slope definition A0 */
+ __IM uint32_t A1; /*!< (@ 0x00000004) Slope definition A1 */
+ __IM uint32_t A2; /*!< (@ 0x00000008) Slope definition A2 */
+ __IM uint32_t A3; /*!< (@ 0x0000000C) Slope definition A3 */
+ __IM uint32_t A4; /*!< (@ 0x00000010) Slope definition A4 */
+ __IM uint32_t A5; /*!< (@ 0x00000014) Slope definition A5 */
+ __IM uint32_t B0; /*!< (@ 0x00000018) Y-intercept B0 */
+ __IM uint32_t B1; /*!< (@ 0x0000001C) Y-intercept B1 */
+ __IM uint32_t B2; /*!< (@ 0x00000020) Y-intercept B2 */
+ __IM uint32_t B3; /*!< (@ 0x00000024) Y-intercept B3 */
+ __IM uint32_t B4; /*!< (@ 0x00000028) Y-intercept B4 */
+ __IM uint32_t B5; /*!< (@ 0x0000002C) Y-intercept B5 */
+ __IM uint32_t T0; /*!< (@ 0x00000030) Segment end T0 */
+ __IM uint32_t T1; /*!< (@ 0x00000034) Segment end T1 */
+ __IM uint32_t T2; /*!< (@ 0x00000038) Segment end T2 */
+ __IM uint32_t T3; /*!< (@ 0x0000003C) Segment end T3 */
+ __IM uint32_t T4; /*!< (@ 0x00000040) Segment end T4 */
+} FICR_TEMP_Type; /*!< Size = 68 (0x44) */
+
+
+/**
+ * @brief FICR_NFC [NFC] (Unspecified)
+ */
+typedef struct {
+ __IM uint32_t TAGHEADER0; /*!< (@ 0x00000000) Default header for NFC tag. Software can read
+ these values to populate NFCID1_3RD_LAST,
+ NFCID1_2ND_LAST, and NFCID1_LAST. */
+ __IM uint32_t TAGHEADER1; /*!< (@ 0x00000004) Default header for NFC tag. Software can read
+ these values to populate NFCID1_3RD_LAST,
+ NFCID1_2ND_LAST, and NFCID1_LAST. */
+ __IM uint32_t TAGHEADER2; /*!< (@ 0x00000008) Default header for NFC tag. Software can read
+ these values to populate NFCID1_3RD_LAST,
+ NFCID1_2ND_LAST, and NFCID1_LAST. */
+ __IM uint32_t TAGHEADER3; /*!< (@ 0x0000000C) Default header for NFC tag. Software can read
+ these values to populate NFCID1_3RD_LAST,
+ NFCID1_2ND_LAST, and NFCID1_LAST. */
+} FICR_NFC_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief FICR_TRNG90B [TRNG90B] (NIST800-90B RNG calibration data)
+ */
+typedef struct {
+ __IM uint32_t BYTES; /*!< (@ 0x00000000) Amount of bytes for the required entropy bits */
+ __IM uint32_t RCCUTOFF; /*!< (@ 0x00000004) Repetition counter cutoff */
+ __IM uint32_t APCUTOFF; /*!< (@ 0x00000008) Adaptive proportion cutoff */
+ __IM uint32_t STARTUP; /*!< (@ 0x0000000C) Amount of bytes for the startup tests */
+ __IM uint32_t ROSC1; /*!< (@ 0x00000010) Sample count for ring oscillator 1 */
+ __IM uint32_t ROSC2; /*!< (@ 0x00000014) Sample count for ring oscillator 2 */
+ __IM uint32_t ROSC3; /*!< (@ 0x00000018) Sample count for ring oscillator 3 */
+ __IM uint32_t ROSC4; /*!< (@ 0x0000001C) Sample count for ring oscillator 4 */
+} FICR_TRNG90B_Type; /*!< Size = 32 (0x20) */
+
+
+/**
+ * @brief POWER_RAM [RAM] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t POWER; /*!< (@ 0x00000000) Description cluster: RAMn power control register */
+ __OM uint32_t POWERSET; /*!< (@ 0x00000004) Description cluster: RAMn power control set register */
+ __OM uint32_t POWERCLR; /*!< (@ 0x00000008) Description cluster: RAMn power control clear
+ register */
+ __IM uint32_t RESERVED;
+} POWER_RAM_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief UART_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t RTS; /*!< (@ 0x00000000) Pin select for RTS */
+ __IOM uint32_t TXD; /*!< (@ 0x00000004) Pin select for TXD */
+ __IOM uint32_t CTS; /*!< (@ 0x00000008) Pin select for CTS */
+ __IOM uint32_t RXD; /*!< (@ 0x0000000C) Pin select for RXD */
+} UART_PSEL_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief UARTE_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t RTS; /*!< (@ 0x00000000) Pin select for RTS signal */
+ __IOM uint32_t TXD; /*!< (@ 0x00000004) Pin select for TXD signal */
+ __IOM uint32_t CTS; /*!< (@ 0x00000008) Pin select for CTS signal */
+ __IOM uint32_t RXD; /*!< (@ 0x0000000C) Pin select for RXD signal */
+} UARTE_PSEL_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief UARTE_RXD [RXD] (RXD EasyDMA channel)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
+} UARTE_RXD_Type; /*!< Size = 12 (0xc) */
+
+
+/**
+ * @brief UARTE_TXD [TXD] (TXD EasyDMA channel)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
+} UARTE_TXD_Type; /*!< Size = 12 (0xc) */
+
+
+/**
+ * @brief SPI_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */
+ __IOM uint32_t MOSI; /*!< (@ 0x00000004) Pin select for MOSI signal */
+ __IOM uint32_t MISO; /*!< (@ 0x00000008) Pin select for MISO signal */
+} SPI_PSEL_Type; /*!< Size = 12 (0xc) */
+
+
+/**
+ * @brief SPIM_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */
+ __IOM uint32_t MOSI; /*!< (@ 0x00000004) Pin select for MOSI signal */
+ __IOM uint32_t MISO; /*!< (@ 0x00000008) Pin select for MISO signal */
+ __IOM uint32_t CSN; /*!< (@ 0x0000000C) Pin select for CSN */
+} SPIM_PSEL_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief SPIM_RXD [RXD] (RXD EasyDMA channel)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
+ __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
+} SPIM_RXD_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief SPIM_TXD [TXD] (TXD EasyDMA channel)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Number of bytes in transmit buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
+ __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
+} SPIM_TXD_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief SPIM_IFTIMING [IFTIMING] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t RXDELAY; /*!< (@ 0x00000000) Sample delay for input serial data on MISO */
+ __IOM uint32_t CSNDUR; /*!< (@ 0x00000004) Minimum duration between edge of CSN and edge
+ of SCK and minimum duration CSN must stay
+ high between transactions */
+} SPIM_IFTIMING_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief SPIS_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for SCK */
+ __IOM uint32_t MISO; /*!< (@ 0x00000004) Pin select for MISO signal */
+ __IOM uint32_t MOSI; /*!< (@ 0x00000008) Pin select for MOSI signal */
+ __IOM uint32_t CSN; /*!< (@ 0x0000000C) Pin select for CSN signal */
+} SPIS_PSEL_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief SPIS_RXD [RXD] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) RXD data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes received in last granted transaction */
+ __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
+} SPIS_RXD_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief SPIS_TXD [TXD] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) TXD data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transmitted in last granted transaction */
+ __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
+} SPIS_TXD_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief TWI_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL */
+ __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA */
+} TWI_PSEL_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief TWIM_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL signal */
+ __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA signal */
+} TWIM_PSEL_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief TWIM_RXD [RXD] (RXD EasyDMA channel)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in receive buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
+ __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
+} TWIM_RXD_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief TWIM_TXD [TXD] (TXD EasyDMA channel)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in transmit buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
+ __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
+} TWIM_TXD_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief TWIS_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t SCL; /*!< (@ 0x00000000) Pin select for SCL signal */
+ __IOM uint32_t SDA; /*!< (@ 0x00000004) Pin select for SDA signal */
+} TWIS_PSEL_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief TWIS_RXD [RXD] (RXD EasyDMA channel)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) RXD Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in RXD buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last RXD transaction */
+ __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
+} TWIS_RXD_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief TWIS_TXD [TXD] (TXD EasyDMA channel)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) TXD Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes in TXD buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last TXD transaction */
+ __IOM uint32_t LIST; /*!< (@ 0x0000000C) EasyDMA list type */
+} TWIS_TXD_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief NFCT_FRAMESTATUS [FRAMESTATUS] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t RX; /*!< (@ 0x00000000) Result of last incoming frame */
+} NFCT_FRAMESTATUS_Type; /*!< Size = 4 (0x4) */
+
+
+/**
+ * @brief NFCT_TXD [TXD] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t FRAMECONFIG; /*!< (@ 0x00000000) Configuration of outgoing frames */
+ __IOM uint32_t AMOUNT; /*!< (@ 0x00000004) Size of outgoing frame */
+} NFCT_TXD_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief NFCT_RXD [RXD] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t FRAMECONFIG; /*!< (@ 0x00000000) Configuration of incoming frames */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000004) Size of last incoming frame */
+} NFCT_RXD_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief SAADC_EVENTS_CH [EVENTS_CH] (Peripheral events.)
+ */
+typedef struct {
+ __IOM uint32_t LIMITH; /*!< (@ 0x00000000) Description cluster: Last result is equal or
+ above CH[n].LIMIT.HIGH */
+ __IOM uint32_t LIMITL; /*!< (@ 0x00000004) Description cluster: Last result is equal or
+ below CH[n].LIMIT.LOW */
+} SAADC_EVENTS_CH_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief SAADC_CH [CH] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PSELP; /*!< (@ 0x00000000) Description cluster: Input positive pin selection
+ for CH[n] */
+ __IOM uint32_t PSELN; /*!< (@ 0x00000004) Description cluster: Input negative pin selection
+ for CH[n] */
+ __IOM uint32_t CONFIG; /*!< (@ 0x00000008) Description cluster: Input configuration for
+ CH[n] */
+ __IOM uint32_t LIMIT; /*!< (@ 0x0000000C) Description cluster: High/low limits for event
+ monitoring of a channel */
+} SAADC_CH_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief SAADC_RESULT [RESULT] (RESULT EasyDMA channel)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of 16-bit samples to be written
+ to output RAM buffer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of 16-bit samples written to output RAM
+ buffer since the previous START task */
+} SAADC_RESULT_Type; /*!< Size = 12 (0xc) */
+
+
+/**
+ * @brief QDEC_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t LED; /*!< (@ 0x00000000) Pin select for LED signal */
+ __IOM uint32_t A; /*!< (@ 0x00000004) Pin select for A signal */
+ __IOM uint32_t B; /*!< (@ 0x00000008) Pin select for B signal */
+} QDEC_PSEL_Type; /*!< Size = 12 (0xc) */
+
+
+/**
+ * @brief PWM_SEQ [SEQ] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Description cluster: Beginning address in RAM
+ of this sequence */
+ __IOM uint32_t CNT; /*!< (@ 0x00000004) Description cluster: Number of values (duty cycles)
+ in this sequence */
+ __IOM uint32_t REFRESH; /*!< (@ 0x00000008) Description cluster: Number of additional PWM
+ periods between samples loaded into compare
+ register */
+ __IOM uint32_t ENDDELAY; /*!< (@ 0x0000000C) Description cluster: Time added after the sequence */
+ __IM uint32_t RESERVED[4];
+} PWM_SEQ_Type; /*!< Size = 32 (0x20) */
+
+
+/**
+ * @brief PWM_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t OUT[4]; /*!< (@ 0x00000000) Description collection: Output pin select for
+ PWM channel n */
+} PWM_PSEL_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief PDM_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t CLK; /*!< (@ 0x00000000) Pin number configuration for PDM CLK signal */
+ __IOM uint32_t DIN; /*!< (@ 0x00000004) Pin number configuration for PDM DIN signal */
+} PDM_PSEL_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief PDM_SAMPLE [SAMPLE] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) RAM address pointer to write samples to with
+ EasyDMA */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Number of samples to allocate memory for in EasyDMA
+ mode */
+} PDM_SAMPLE_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief ACL_ACL [ACL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t ADDR; /*!< (@ 0x00000000) Description cluster: Start address of region
+ to protect. The start address must be word-aligned. */
+ __IOM uint32_t SIZE; /*!< (@ 0x00000004) Description cluster: Size of region to protect
+ counting from address ACL[n].ADDR. Write
+ '0' as no effect. */
+ __IOM uint32_t PERM; /*!< (@ 0x00000008) Description cluster: Access permissions for region
+ n as defined by start address ACL[n].ADDR
+ and size ACL[n].SIZE */
+ __IM uint32_t RESERVED;
+} ACL_ACL_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief PPI_TASKS_CHG [TASKS_CHG] (Channel group tasks)
+ */
+typedef struct {
+ __OM uint32_t EN; /*!< (@ 0x00000000) Description cluster: Enable channel group n */
+ __OM uint32_t DIS; /*!< (@ 0x00000004) Description cluster: Disable channel group n */
+} PPI_TASKS_CHG_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief PPI_CH [CH] (PPI Channel)
+ */
+typedef struct {
+ __IOM uint32_t EEP; /*!< (@ 0x00000000) Description cluster: Channel n event endpoint */
+ __IOM uint32_t TEP; /*!< (@ 0x00000004) Description cluster: Channel n task endpoint */
+} PPI_CH_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief PPI_FORK [FORK] (Fork)
+ */
+typedef struct {
+ __IOM uint32_t TEP; /*!< (@ 0x00000000) Description cluster: Channel n task endpoint */
+} PPI_FORK_Type; /*!< Size = 4 (0x4) */
+
+
+/**
+ * @brief MWU_EVENTS_REGION [EVENTS_REGION] (Peripheral events.)
+ */
+typedef struct {
+ __IOM uint32_t WA; /*!< (@ 0x00000000) Description cluster: Write access to region n
+ detected */
+ __IOM uint32_t RA; /*!< (@ 0x00000004) Description cluster: Read access to region n
+ detected */
+} MWU_EVENTS_REGION_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief MWU_EVENTS_PREGION [EVENTS_PREGION] (Peripheral events.)
+ */
+typedef struct {
+ __IOM uint32_t WA; /*!< (@ 0x00000000) Description cluster: Write access to peripheral
+ region n detected */
+ __IOM uint32_t RA; /*!< (@ 0x00000004) Description cluster: Read access to peripheral
+ region n detected */
+} MWU_EVENTS_PREGION_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief MWU_PERREGION [PERREGION] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t SUBSTATWA; /*!< (@ 0x00000000) Description cluster: Source of event/interrupt
+ in region n, write access detected while
+ corresponding subregion was enabled for
+ watching */
+ __IOM uint32_t SUBSTATRA; /*!< (@ 0x00000004) Description cluster: Source of event/interrupt
+ in region n, read access detected while
+ corresponding subregion was enabled for
+ watching */
+} MWU_PERREGION_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief MWU_REGION [REGION] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t START; /*!< (@ 0x00000000) Description cluster: Start address for region
+ n */
+ __IOM uint32_t END; /*!< (@ 0x00000004) Description cluster: End address of region n */
+ __IM uint32_t RESERVED[2];
+} MWU_REGION_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief MWU_PREGION [PREGION] (Unspecified)
+ */
+typedef struct {
+ __IM uint32_t START; /*!< (@ 0x00000000) Description cluster: Reserved for future use */
+ __IM uint32_t END; /*!< (@ 0x00000004) Description cluster: Reserved for future use */
+ __IOM uint32_t SUBS; /*!< (@ 0x00000008) Description cluster: Subregions of region n */
+ __IM uint32_t RESERVED;
+} MWU_PREGION_Type; /*!< Size = 16 (0x10) */
+
+
+/**
+ * @brief I2S_CONFIG [CONFIG] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t MODE; /*!< (@ 0x00000000) I2S mode. */
+ __IOM uint32_t RXEN; /*!< (@ 0x00000004) Reception (RX) enable. */
+ __IOM uint32_t TXEN; /*!< (@ 0x00000008) Transmission (TX) enable. */
+ __IOM uint32_t MCKEN; /*!< (@ 0x0000000C) Master clock generator enable. */
+ __IOM uint32_t MCKFREQ; /*!< (@ 0x00000010) Master clock generator frequency. */
+ __IOM uint32_t RATIO; /*!< (@ 0x00000014) MCK / LRCK ratio. */
+ __IOM uint32_t SWIDTH; /*!< (@ 0x00000018) Sample width. */
+ __IOM uint32_t ALIGN; /*!< (@ 0x0000001C) Alignment of sample within a frame. */
+ __IOM uint32_t FORMAT; /*!< (@ 0x00000020) Frame format. */
+ __IOM uint32_t CHANNELS; /*!< (@ 0x00000024) Enable channels. */
+} I2S_CONFIG_Type; /*!< Size = 40 (0x28) */
+
+
+/**
+ * @brief I2S_RXD [RXD] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Receive buffer RAM start address. */
+} I2S_RXD_Type; /*!< Size = 4 (0x4) */
+
+
+/**
+ * @brief I2S_TXD [TXD] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Transmit buffer RAM start address. */
+} I2S_TXD_Type; /*!< Size = 4 (0x4) */
+
+
+/**
+ * @brief I2S_RXTXD [RXTXD] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000000) Size of RXD and TXD buffers. */
+} I2S_RXTXD_Type; /*!< Size = 4 (0x4) */
+
+
+/**
+ * @brief I2S_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t MCK; /*!< (@ 0x00000000) Pin select for MCK signal. */
+ __IOM uint32_t SCK; /*!< (@ 0x00000004) Pin select for SCK signal. */
+ __IOM uint32_t LRCK; /*!< (@ 0x00000008) Pin select for LRCK signal. */
+ __IOM uint32_t SDIN; /*!< (@ 0x0000000C) Pin select for SDIN signal. */
+ __IOM uint32_t SDOUT; /*!< (@ 0x00000010) Pin select for SDOUT signal. */
+} I2S_PSEL_Type; /*!< Size = 20 (0x14) */
+
+
+/**
+ * @brief USBD_HALTED [HALTED] (Unspecified)
+ */
+typedef struct {
+ __IM uint32_t EPIN[8]; /*!< (@ 0x00000000) Description collection: IN endpoint halted status.
+ Can be used as is as response to a GetStatus()
+ request to endpoint. */
+ __IM uint32_t RESERVED;
+ __IM uint32_t EPOUT[8]; /*!< (@ 0x00000024) Description collection: OUT endpoint halted status.
+ Can be used as is as response to a GetStatus()
+ request to endpoint. */
+} USBD_HALTED_Type; /*!< Size = 68 (0x44) */
+
+
+/**
+ * @brief USBD_SIZE [SIZE] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t EPOUT[8]; /*!< (@ 0x00000000) Description collection: Number of bytes received
+ last in the data stage of this OUT endpoint */
+ __IM uint32_t ISOOUT; /*!< (@ 0x00000020) Number of bytes received last on this ISO OUT
+ data endpoint */
+} USBD_SIZE_Type; /*!< Size = 36 (0x24) */
+
+
+/**
+ * @brief USBD_EPIN [EPIN] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Description cluster: Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Description cluster: Maximum number of bytes
+ to transfer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Description cluster: Number of bytes transferred
+ in the last transaction */
+ __IM uint32_t RESERVED[2];
+} USBD_EPIN_Type; /*!< Size = 20 (0x14) */
+
+
+/**
+ * @brief USBD_ISOIN [ISOIN] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes to transfer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
+} USBD_ISOIN_Type; /*!< Size = 12 (0xc) */
+
+
+/**
+ * @brief USBD_EPOUT [EPOUT] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Description cluster: Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Description cluster: Maximum number of bytes
+ to transfer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Description cluster: Number of bytes transferred
+ in the last transaction */
+ __IM uint32_t RESERVED[2];
+} USBD_EPOUT_Type; /*!< Size = 20 (0x14) */
+
+
+/**
+ * @brief USBD_ISOOUT [ISOOUT] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Data pointer */
+ __IOM uint32_t MAXCNT; /*!< (@ 0x00000004) Maximum number of bytes to transfer */
+ __IM uint32_t AMOUNT; /*!< (@ 0x00000008) Number of bytes transferred in the last transaction */
+} USBD_ISOOUT_Type; /*!< Size = 12 (0xc) */
+
+
+/**
+ * @brief QSPI_READ [READ] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t SRC; /*!< (@ 0x00000000) Flash memory source address */
+ __IOM uint32_t DST; /*!< (@ 0x00000004) RAM destination address */
+ __IOM uint32_t CNT; /*!< (@ 0x00000008) Read transfer length */
+} QSPI_READ_Type; /*!< Size = 12 (0xc) */
+
+
+/**
+ * @brief QSPI_WRITE [WRITE] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t DST; /*!< (@ 0x00000000) Flash destination address */
+ __IOM uint32_t SRC; /*!< (@ 0x00000004) RAM source address */
+ __IOM uint32_t CNT; /*!< (@ 0x00000008) Write transfer length */
+} QSPI_WRITE_Type; /*!< Size = 12 (0xc) */
+
+
+/**
+ * @brief QSPI_ERASE [ERASE] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t PTR; /*!< (@ 0x00000000) Start address of flash block to be erased */
+ __IOM uint32_t LEN; /*!< (@ 0x00000004) Size of block to be erased. */
+} QSPI_ERASE_Type; /*!< Size = 8 (0x8) */
+
+
+/**
+ * @brief QSPI_PSEL [PSEL] (Unspecified)
+ */
+typedef struct {
+ __IOM uint32_t SCK; /*!< (@ 0x00000000) Pin select for serial clock SCK */
+ __IOM uint32_t CSN; /*!< (@ 0x00000004) Pin select for chip select signal CSN. */
+ __IM uint32_t RESERVED;
+ __IOM uint32_t IO0; /*!< (@ 0x0000000C) Pin select for serial data MOSI/IO0. */
+ __IOM uint32_t IO1; /*!< (@ 0x00000010) Pin select for serial data MISO/IO1. */
+ __IOM uint32_t IO2; /*!< (@ 0x00000014) Pin select for serial data IO2. */
+ __IOM uint32_t IO3; /*!< (@ 0x00000018) Pin select for serial data IO3. */
+} QSPI_PSEL_Type; /*!< Size = 28 (0x1c) */
+
+
+/** @} */ /* End of group Device_Peripheral_clusters */
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup Device_Peripheral_peripherals
+ * @{
+ */
+
+
+
+/* =========================================================================================================================== */
+/* ================ FICR ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Factory information configuration registers (FICR)
+ */
+
+typedef struct { /*!< (@ 0x10000000) FICR Structure */
+ __IM uint32_t RESERVED[4];
+ __IM uint32_t CODEPAGESIZE; /*!< (@ 0x00000010) Code memory page size */
+ __IM uint32_t CODESIZE; /*!< (@ 0x00000014) Code memory size */
+ __IM uint32_t RESERVED1[18];
+ __IM uint32_t DEVICEID[2]; /*!< (@ 0x00000060) Description collection: Device identifier */
+ __IM uint32_t RESERVED2[6];
+ __IM uint32_t ER[4]; /*!< (@ 0x00000080) Description collection: Encryption root, word
+ n */
+ __IM uint32_t IR[4]; /*!< (@ 0x00000090) Description collection: Identity Root, word n */
+ __IM uint32_t DEVICEADDRTYPE; /*!< (@ 0x000000A0) Device address type */
+ __IM uint32_t DEVICEADDR[2]; /*!< (@ 0x000000A4) Description collection: Device address n */
+ __IM uint32_t RESERVED3[21];
+ __IM FICR_INFO_Type INFO; /*!< (@ 0x00000100) Device info */
+ __IM uint32_t RESERVED4[143];
+ __IM uint32_t PRODTEST[3]; /*!< (@ 0x00000350) Description collection: Production test signature
+ n */
+ __IM uint32_t RESERVED5[42];
+ __IM FICR_TEMP_Type TEMP; /*!< (@ 0x00000404) Registers storing factory TEMP module linearization
+ coefficients */
+ __IM uint32_t RESERVED6[2];
+ __IOM FICR_NFC_Type NFC; /*!< (@ 0x00000450) Unspecified */
+ __IM uint32_t RESERVED7[488];
+ __IOM FICR_TRNG90B_Type TRNG90B; /*!< (@ 0x00000C00) NIST800-90B RNG calibration data */
+} NRF_FICR_Type; /*!< Size = 3104 (0xc20) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ UICR ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief User information configuration registers (UICR)
+ */
+
+typedef struct { /*!< (@ 0x10001000) UICR Structure */
+ __IM uint32_t RESERVED[5];
+ __IOM uint32_t NRFFW[13]; /*!< (@ 0x00000014) Description collection: Reserved for Nordic firmware
+ design */
+ __IM uint32_t RESERVED1[2];
+ __IOM uint32_t NRFHW[12]; /*!< (@ 0x00000050) Description collection: Reserved for Nordic hardware
+ design */
+ __IOM uint32_t CUSTOMER[32]; /*!< (@ 0x00000080) Description collection: Reserved for customer */
+ __IM uint32_t RESERVED2[64];
+ __IOM uint32_t PSELRESET[2]; /*!< (@ 0x00000200) Description collection: Mapping of the nRESET
+ function (see POWER chapter for details) */
+ __IOM uint32_t APPROTECT; /*!< (@ 0x00000208) Access port protection */
+ __IOM uint32_t NFCPINS; /*!< (@ 0x0000020C) Setting of pins dedicated to NFC functionality:
+ NFC antenna or GPIO */
+ __IOM uint32_t DEBUGCTRL; /*!< (@ 0x00000210) Processor debug control */
+ __IM uint32_t RESERVED3[60];
+ __IOM uint32_t REGOUT0; /*!< (@ 0x00000304) Output voltage from REG0 regulator stage. The
+ maximum output voltage from this stage is
+ given as VDDH - V_VDDH-VDD. */
+} NRF_UICR_Type; /*!< Size = 776 (0x308) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ APPROTECT ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Access Port Protection (APPROTECT)
+ */
+
+typedef struct { /*!< (@ 0x40000000) APPROTECT Structure */
+ __IM uint32_t RESERVED[340];
+ __IOM uint32_t FORCEPROTECT; /*!< (@ 0x00000550) Software force enable APPROTECT mechanism until
+ next reset. */
+ __IM uint32_t RESERVED1;
+ __IOM uint32_t DISABLE; /*!< (@ 0x00000558) Software disable APPROTECT mechanism */
+} NRF_APPROTECT_Type; /*!< Size = 1372 (0x55c) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ CLOCK ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Clock control (CLOCK)
+ */
+
+typedef struct { /*!< (@ 0x40000000) CLOCK Structure */
+ __OM uint32_t TASKS_HFCLKSTART; /*!< (@ 0x00000000) Start HFXO crystal oscillator */
+ __OM uint32_t TASKS_HFCLKSTOP; /*!< (@ 0x00000004) Stop HFXO crystal oscillator */
+ __OM uint32_t TASKS_LFCLKSTART; /*!< (@ 0x00000008) Start LFCLK */
+ __OM uint32_t TASKS_LFCLKSTOP; /*!< (@ 0x0000000C) Stop LFCLK */
+ __OM uint32_t TASKS_CAL; /*!< (@ 0x00000010) Start calibration of LFRC */
+ __OM uint32_t TASKS_CTSTART; /*!< (@ 0x00000014) Start calibration timer */
+ __OM uint32_t TASKS_CTSTOP; /*!< (@ 0x00000018) Stop calibration timer */
+ __IM uint32_t RESERVED[57];
+ __IOM uint32_t EVENTS_HFCLKSTARTED; /*!< (@ 0x00000100) HFXO crystal oscillator started */
+ __IOM uint32_t EVENTS_LFCLKSTARTED; /*!< (@ 0x00000104) LFCLK started */
+ __IM uint32_t RESERVED1;
+ __IOM uint32_t EVENTS_DONE; /*!< (@ 0x0000010C) Calibration of LFRC completed */
+ __IOM uint32_t EVENTS_CTTO; /*!< (@ 0x00000110) Calibration timer timeout */
+ __IM uint32_t RESERVED2[5];
+ __IOM uint32_t EVENTS_CTSTARTED; /*!< (@ 0x00000128) Calibration timer has been started and is ready
+ to process new tasks */
+ __IOM uint32_t EVENTS_CTSTOPPED; /*!< (@ 0x0000012C) Calibration timer has been stopped and is ready
+ to process new tasks */
+ __IM uint32_t RESERVED3[117];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED4[63];
+ __IM uint32_t HFCLKRUN; /*!< (@ 0x00000408) Status indicating that HFCLKSTART task has been
+ triggered */
+ __IM uint32_t HFCLKSTAT; /*!< (@ 0x0000040C) HFCLK status */
+ __IM uint32_t RESERVED5;
+ __IM uint32_t LFCLKRUN; /*!< (@ 0x00000414) Status indicating that LFCLKSTART task has been
+ triggered */
+ __IM uint32_t LFCLKSTAT; /*!< (@ 0x00000418) LFCLK status */
+ __IM uint32_t LFCLKSRCCOPY; /*!< (@ 0x0000041C) Copy of LFCLKSRC register, set when LFCLKSTART
+ task was triggered */
+ __IM uint32_t RESERVED6[62];
+ __IOM uint32_t LFCLKSRC; /*!< (@ 0x00000518) Clock source for the LFCLK */
+ __IM uint32_t RESERVED7[3];
+ __IOM uint32_t HFXODEBOUNCE; /*!< (@ 0x00000528) HFXO debounce time. The HFXO is started by triggering
+ the TASKS_HFCLKSTART task. */
+ __IM uint32_t RESERVED8[3];
+ __IOM uint32_t CTIV; /*!< (@ 0x00000538) Calibration timer interval */
+ __IM uint32_t RESERVED9[8];
+ __IOM uint32_t TRACECONFIG; /*!< (@ 0x0000055C) Clocking options for the trace port debug interface */
+ __IM uint32_t RESERVED10[21];
+ __IOM uint32_t LFRCMODE; /*!< (@ 0x000005B4) LFRC mode configuration */
+} NRF_CLOCK_Type; /*!< Size = 1464 (0x5b8) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ POWER ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Power control (POWER)
+ */
+
+typedef struct { /*!< (@ 0x40000000) POWER Structure */
+ __IM uint32_t RESERVED[30];
+ __OM uint32_t TASKS_CONSTLAT; /*!< (@ 0x00000078) Enable Constant Latency mode */
+ __OM uint32_t TASKS_LOWPWR; /*!< (@ 0x0000007C) Enable Low-power mode (variable latency) */
+ __IM uint32_t RESERVED1[34];
+ __IOM uint32_t EVENTS_POFWARN; /*!< (@ 0x00000108) Power failure warning */
+ __IM uint32_t RESERVED2[2];
+ __IOM uint32_t EVENTS_SLEEPENTER; /*!< (@ 0x00000114) CPU entered WFI/WFE sleep */
+ __IOM uint32_t EVENTS_SLEEPEXIT; /*!< (@ 0x00000118) CPU exited WFI/WFE sleep */
+ __IOM uint32_t EVENTS_USBDETECTED; /*!< (@ 0x0000011C) Voltage supply detected on VBUS */
+ __IOM uint32_t EVENTS_USBREMOVED; /*!< (@ 0x00000120) Voltage supply removed from VBUS */
+ __IOM uint32_t EVENTS_USBPWRRDY; /*!< (@ 0x00000124) USB 3.3 V supply ready */
+ __IM uint32_t RESERVED3[119];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED4[61];
+ __IOM uint32_t RESETREAS; /*!< (@ 0x00000400) Reset reason */
+ __IM uint32_t RESERVED5[9];
+ __IM uint32_t RAMSTATUS; /*!< (@ 0x00000428) Deprecated register - RAM status register */
+ __IM uint32_t RESERVED6[3];
+ __IM uint32_t USBREGSTATUS; /*!< (@ 0x00000438) USB supply status */
+ __IM uint32_t RESERVED7[49];
+ __OM uint32_t SYSTEMOFF; /*!< (@ 0x00000500) System OFF register */
+ __IM uint32_t RESERVED8[3];
+ __IOM uint32_t POFCON; /*!< (@ 0x00000510) Power-fail comparator configuration */
+ __IM uint32_t RESERVED9[2];
+ __IOM uint32_t GPREGRET; /*!< (@ 0x0000051C) General purpose retention register */
+ __IOM uint32_t GPREGRET2; /*!< (@ 0x00000520) General purpose retention register */
+ __IM uint32_t RESERVED10[21];
+ __IOM uint32_t DCDCEN; /*!< (@ 0x00000578) Enable DC/DC converter for REG1 stage */
+ __IM uint32_t RESERVED11;
+ __IOM uint32_t DCDCEN0; /*!< (@ 0x00000580) Enable DC/DC converter for REG0 stage */
+ __IM uint32_t RESERVED12[47];
+ __IM uint32_t MAINREGSTATUS; /*!< (@ 0x00000640) Main supply status */
+ __IM uint32_t RESERVED13[175];
+ __IOM POWER_RAM_Type RAM[9]; /*!< (@ 0x00000900) Unspecified */
+} NRF_POWER_Type; /*!< Size = 2448 (0x990) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ P0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief GPIO Port 1 (P0)
+ */
+
+typedef struct { /*!< (@ 0x50000000) P0 Structure */
+ __IM uint32_t RESERVED[321];
+ __IOM uint32_t OUT; /*!< (@ 0x00000504) Write GPIO port */
+ __IOM uint32_t OUTSET; /*!< (@ 0x00000508) Set individual bits in GPIO port */
+ __IOM uint32_t OUTCLR; /*!< (@ 0x0000050C) Clear individual bits in GPIO port */
+ __IM uint32_t IN; /*!< (@ 0x00000510) Read GPIO port */
+ __IOM uint32_t DIR; /*!< (@ 0x00000514) Direction of GPIO pins */
+ __IOM uint32_t DIRSET; /*!< (@ 0x00000518) DIR set register */
+ __IOM uint32_t DIRCLR; /*!< (@ 0x0000051C) DIR clear register */
+ __IOM uint32_t LATCH; /*!< (@ 0x00000520) Latch register indicating what GPIO pins that
+ have met the criteria set in the PIN_CNF[n].SENSE
+ registers */
+ __IOM uint32_t DETECTMODE; /*!< (@ 0x00000524) Select between default DETECT signal behavior
+ and LDETECT mode */
+ __IM uint32_t RESERVED1[118];
+ __IOM uint32_t PIN_CNF[32]; /*!< (@ 0x00000700) Description collection: Configuration of GPIO
+ pins */
+} NRF_GPIO_Type; /*!< Size = 1920 (0x780) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ RADIO ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief 2.4 GHz radio (RADIO)
+ */
+
+typedef struct { /*!< (@ 0x40001000) RADIO Structure */
+ __OM uint32_t TASKS_TXEN; /*!< (@ 0x00000000) Enable RADIO in TX mode */
+ __OM uint32_t TASKS_RXEN; /*!< (@ 0x00000004) Enable RADIO in RX mode */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000008) Start RADIO */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x0000000C) Stop RADIO */
+ __OM uint32_t TASKS_DISABLE; /*!< (@ 0x00000010) Disable RADIO */
+ __OM uint32_t TASKS_RSSISTART; /*!< (@ 0x00000014) Start the RSSI and take one single sample of
+ the receive signal strength */
+ __OM uint32_t TASKS_RSSISTOP; /*!< (@ 0x00000018) Stop the RSSI measurement */
+ __OM uint32_t TASKS_BCSTART; /*!< (@ 0x0000001C) Start the bit counter */
+ __OM uint32_t TASKS_BCSTOP; /*!< (@ 0x00000020) Stop the bit counter */
+ __OM uint32_t TASKS_EDSTART; /*!< (@ 0x00000024) Start the energy detect measurement used in IEEE
+ 802.15.4 mode */
+ __OM uint32_t TASKS_EDSTOP; /*!< (@ 0x00000028) Stop the energy detect measurement */
+ __OM uint32_t TASKS_CCASTART; /*!< (@ 0x0000002C) Start the clear channel assessment used in IEEE
+ 802.15.4 mode */
+ __OM uint32_t TASKS_CCASTOP; /*!< (@ 0x00000030) Stop the clear channel assessment */
+ __IM uint32_t RESERVED[51];
+ __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) RADIO has ramped up and is ready to be started */
+ __IOM uint32_t EVENTS_ADDRESS; /*!< (@ 0x00000104) Address sent or received */
+ __IOM uint32_t EVENTS_PAYLOAD; /*!< (@ 0x00000108) Packet payload sent or received */
+ __IOM uint32_t EVENTS_END; /*!< (@ 0x0000010C) Packet sent or received */
+ __IOM uint32_t EVENTS_DISABLED; /*!< (@ 0x00000110) RADIO has been disabled */
+ __IOM uint32_t EVENTS_DEVMATCH; /*!< (@ 0x00000114) A device address match occurred on the last received
+ packet */
+ __IOM uint32_t EVENTS_DEVMISS; /*!< (@ 0x00000118) No device address match occurred on the last
+ received packet */
+ __IOM uint32_t EVENTS_RSSIEND; /*!< (@ 0x0000011C) Sampling of receive signal strength complete */
+ __IM uint32_t RESERVED1[2];
+ __IOM uint32_t EVENTS_BCMATCH; /*!< (@ 0x00000128) Bit counter reached bit count value */
+ __IM uint32_t RESERVED2;
+ __IOM uint32_t EVENTS_CRCOK; /*!< (@ 0x00000130) Packet received with CRC ok */
+ __IOM uint32_t EVENTS_CRCERROR; /*!< (@ 0x00000134) Packet received with CRC error */
+ __IOM uint32_t EVENTS_FRAMESTART; /*!< (@ 0x00000138) IEEE 802.15.4 length field received */
+ __IOM uint32_t EVENTS_EDEND; /*!< (@ 0x0000013C) Sampling of energy detection complete. A new
+ ED sample is ready for readout from the
+ RADIO.EDSAMPLE register. */
+ __IOM uint32_t EVENTS_EDSTOPPED; /*!< (@ 0x00000140) The sampling of energy detection has stopped */
+ __IOM uint32_t EVENTS_CCAIDLE; /*!< (@ 0x00000144) Wireless medium in idle - clear to send */
+ __IOM uint32_t EVENTS_CCABUSY; /*!< (@ 0x00000148) Wireless medium busy - do not send */
+ __IOM uint32_t EVENTS_CCASTOPPED; /*!< (@ 0x0000014C) The CCA has stopped */
+ __IOM uint32_t EVENTS_RATEBOOST; /*!< (@ 0x00000150) Ble_LR CI field received, receive mode is changed
+ from Ble_LR125Kbit to Ble_LR500Kbit. */
+ __IOM uint32_t EVENTS_TXREADY; /*!< (@ 0x00000154) RADIO has ramped up and is ready to be started
+ TX path */
+ __IOM uint32_t EVENTS_RXREADY; /*!< (@ 0x00000158) RADIO has ramped up and is ready to be started
+ RX path */
+ __IOM uint32_t EVENTS_MHRMATCH; /*!< (@ 0x0000015C) MAC header match found */
+ __IM uint32_t RESERVED3[2];
+ __IOM uint32_t EVENTS_SYNC; /*!< (@ 0x00000168) Preamble indicator. */
+ __IOM uint32_t EVENTS_PHYEND; /*!< (@ 0x0000016C) Generated in Ble_LR125Kbit, Ble_LR500Kbit and
+ Ieee802154_250Kbit modes when last bit is
+ sent on air. */
+ __IM uint32_t RESERVED4[36];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED5[64];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED6[61];
+ __IM uint32_t CRCSTATUS; /*!< (@ 0x00000400) CRC status */
+ __IM uint32_t RESERVED7;
+ __IM uint32_t RXMATCH; /*!< (@ 0x00000408) Received address */
+ __IM uint32_t RXCRC; /*!< (@ 0x0000040C) CRC field of previously received packet */
+ __IM uint32_t DAI; /*!< (@ 0x00000410) Device address match index */
+ __IM uint32_t PDUSTAT; /*!< (@ 0x00000414) Payload status */
+ __IM uint32_t RESERVED8[59];
+ __IOM uint32_t PACKETPTR; /*!< (@ 0x00000504) Packet pointer */
+ __IOM uint32_t FREQUENCY; /*!< (@ 0x00000508) Frequency */
+ __IOM uint32_t TXPOWER; /*!< (@ 0x0000050C) Output power */
+ __IOM uint32_t MODE; /*!< (@ 0x00000510) Data rate and modulation */
+ __IOM uint32_t PCNF0; /*!< (@ 0x00000514) Packet configuration register 0 */
+ __IOM uint32_t PCNF1; /*!< (@ 0x00000518) Packet configuration register 1 */
+ __IOM uint32_t BASE0; /*!< (@ 0x0000051C) Base address 0 */
+ __IOM uint32_t BASE1; /*!< (@ 0x00000520) Base address 1 */
+ __IOM uint32_t PREFIX0; /*!< (@ 0x00000524) Prefixes bytes for logical addresses 0-3 */
+ __IOM uint32_t PREFIX1; /*!< (@ 0x00000528) Prefixes bytes for logical addresses 4-7 */
+ __IOM uint32_t TXADDRESS; /*!< (@ 0x0000052C) Transmit address select */
+ __IOM uint32_t RXADDRESSES; /*!< (@ 0x00000530) Receive address select */
+ __IOM uint32_t CRCCNF; /*!< (@ 0x00000534) CRC configuration */
+ __IOM uint32_t CRCPOLY; /*!< (@ 0x00000538) CRC polynomial */
+ __IOM uint32_t CRCINIT; /*!< (@ 0x0000053C) CRC initial value */
+ __IM uint32_t RESERVED9;
+ __IOM uint32_t TIFS; /*!< (@ 0x00000544) Interframe spacing in us */
+ __IM uint32_t RSSISAMPLE; /*!< (@ 0x00000548) RSSI sample */
+ __IM uint32_t RESERVED10;
+ __IM uint32_t STATE; /*!< (@ 0x00000550) Current radio state */
+ __IOM uint32_t DATAWHITEIV; /*!< (@ 0x00000554) Data whitening initial value */
+ __IM uint32_t RESERVED11[2];
+ __IOM uint32_t BCC; /*!< (@ 0x00000560) Bit counter compare */
+ __IM uint32_t RESERVED12[39];
+ __IOM uint32_t DAB[8]; /*!< (@ 0x00000600) Description collection: Device address base segment
+ n */
+ __IOM uint32_t DAP[8]; /*!< (@ 0x00000620) Description collection: Device address prefix
+ n */
+ __IOM uint32_t DACNF; /*!< (@ 0x00000640) Device address match configuration */
+ __IOM uint32_t MHRMATCHCONF; /*!< (@ 0x00000644) Search pattern configuration */
+ __IOM uint32_t MHRMATCHMAS; /*!< (@ 0x00000648) Pattern mask */
+ __IM uint32_t RESERVED13;
+ __IOM uint32_t MODECNF0; /*!< (@ 0x00000650) Radio mode configuration register 0 */
+ __IM uint32_t RESERVED14[3];
+ __IOM uint32_t SFD; /*!< (@ 0x00000660) IEEE 802.15.4 start of frame delimiter */
+ __IOM uint32_t EDCNT; /*!< (@ 0x00000664) IEEE 802.15.4 energy detect loop count */
+ __IOM uint32_t EDSAMPLE; /*!< (@ 0x00000668) IEEE 802.15.4 energy detect level */
+ __IOM uint32_t CCACTRL; /*!< (@ 0x0000066C) IEEE 802.15.4 clear channel assessment control */
+ __IM uint32_t RESERVED15[611];
+ __IOM uint32_t POWER; /*!< (@ 0x00000FFC) Peripheral power control */
+} NRF_RADIO_Type; /*!< Size = 4096 (0x1000) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ UART0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Universal Asynchronous Receiver/Transmitter (UART0)
+ */
+
+typedef struct { /*!< (@ 0x40002000) UART0 Structure */
+ __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start UART receiver */
+ __OM uint32_t TASKS_STOPRX; /*!< (@ 0x00000004) Stop UART receiver */
+ __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start UART transmitter */
+ __OM uint32_t TASKS_STOPTX; /*!< (@ 0x0000000C) Stop UART transmitter */
+ __IM uint32_t RESERVED[3];
+ __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend UART */
+ __IM uint32_t RESERVED1[56];
+ __IOM uint32_t EVENTS_CTS; /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send. */
+ __IOM uint32_t EVENTS_NCTS; /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send. */
+ __IOM uint32_t EVENTS_RXDRDY; /*!< (@ 0x00000108) Data received in RXD */
+ __IM uint32_t RESERVED2[4];
+ __IOM uint32_t EVENTS_TXDRDY; /*!< (@ 0x0000011C) Data sent from TXD */
+ __IM uint32_t RESERVED3;
+ __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) Error detected */
+ __IM uint32_t RESERVED4[7];
+ __IOM uint32_t EVENTS_RXTO; /*!< (@ 0x00000144) Receiver timeout */
+ __IM uint32_t RESERVED5[46];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED6[64];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED7[93];
+ __IOM uint32_t ERRORSRC; /*!< (@ 0x00000480) Error source */
+ __IM uint32_t RESERVED8[31];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable UART */
+ __IM uint32_t RESERVED9;
+ __IOM UART_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
+ __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */
+ __OM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */
+ __IM uint32_t RESERVED10;
+ __IOM uint32_t BAUDRATE; /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source
+ selected. */
+ __IM uint32_t RESERVED11[17];
+ __IOM uint32_t CONFIG; /*!< (@ 0x0000056C) Configuration of parity and hardware flow control */
+} NRF_UART_Type; /*!< Size = 1392 (0x570) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ UARTE0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief UART with EasyDMA 0 (UARTE0)
+ */
+
+typedef struct { /*!< (@ 0x40002000) UARTE0 Structure */
+ __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start UART receiver */
+ __OM uint32_t TASKS_STOPRX; /*!< (@ 0x00000004) Stop UART receiver */
+ __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start UART transmitter */
+ __OM uint32_t TASKS_STOPTX; /*!< (@ 0x0000000C) Stop UART transmitter */
+ __IM uint32_t RESERVED[7];
+ __OM uint32_t TASKS_FLUSHRX; /*!< (@ 0x0000002C) Flush RX FIFO into RX buffer */
+ __IM uint32_t RESERVED1[52];
+ __IOM uint32_t EVENTS_CTS; /*!< (@ 0x00000100) CTS is activated (set low). Clear To Send. */
+ __IOM uint32_t EVENTS_NCTS; /*!< (@ 0x00000104) CTS is deactivated (set high). Not Clear To Send. */
+ __IOM uint32_t EVENTS_RXDRDY; /*!< (@ 0x00000108) Data received in RXD (but potentially not yet
+ transferred to Data RAM) */
+ __IM uint32_t RESERVED2;
+ __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) Receive buffer is filled up */
+ __IM uint32_t RESERVED3[2];
+ __IOM uint32_t EVENTS_TXDRDY; /*!< (@ 0x0000011C) Data sent from TXD */
+ __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000120) Last TX byte transmitted */
+ __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) Error detected */
+ __IM uint32_t RESERVED4[7];
+ __IOM uint32_t EVENTS_RXTO; /*!< (@ 0x00000144) Receiver timeout */
+ __IM uint32_t RESERVED5;
+ __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) UART receiver has started */
+ __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) UART transmitter has started */
+ __IM uint32_t RESERVED6;
+ __IOM uint32_t EVENTS_TXSTOPPED; /*!< (@ 0x00000158) Transmitter stopped */
+ __IM uint32_t RESERVED7[41];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED8[63];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED9[93];
+ __IOM uint32_t ERRORSRC; /*!< (@ 0x00000480) Error source This register is read/write one
+ to clear. */
+ __IM uint32_t RESERVED10[31];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable UART */
+ __IM uint32_t RESERVED11;
+ __IOM UARTE_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
+ __IM uint32_t RESERVED12[3];
+ __IOM uint32_t BAUDRATE; /*!< (@ 0x00000524) Baud rate. Accuracy depends on the HFCLK source
+ selected. */
+ __IM uint32_t RESERVED13[3];
+ __IOM UARTE_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */
+ __IM uint32_t RESERVED14;
+ __IOM UARTE_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */
+ __IM uint32_t RESERVED15[7];
+ __IOM uint32_t CONFIG; /*!< (@ 0x0000056C) Configuration of parity and hardware flow control */
+} NRF_UARTE_Type; /*!< Size = 1392 (0x570) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ SPI0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Serial Peripheral Interface 0 (SPI0)
+ */
+
+typedef struct { /*!< (@ 0x40003000) SPI0 Structure */
+ __IM uint32_t RESERVED[66];
+ __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000108) TXD byte sent and RXD byte received */
+ __IM uint32_t RESERVED1[126];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED2[125];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPI */
+ __IM uint32_t RESERVED3;
+ __IOM SPI_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
+ __IM uint32_t RESERVED4;
+ __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */
+ __IOM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */
+ __IM uint32_t RESERVED5;
+ __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK
+ source selected. */
+ __IM uint32_t RESERVED6[11];
+ __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */
+} NRF_SPI_Type; /*!< Size = 1368 (0x558) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ SPIM0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Serial Peripheral Interface Master with EasyDMA 0 (SPIM0)
+ */
+
+typedef struct { /*!< (@ 0x40003000) SPIM0 Structure */
+ __IM uint32_t RESERVED[4];
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000010) Start SPI transaction */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop SPI transaction */
+ __IM uint32_t RESERVED1;
+ __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend SPI transaction */
+ __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume SPI transaction */
+ __IM uint32_t RESERVED2[56];
+ __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) SPI transaction has stopped */
+ __IM uint32_t RESERVED3[2];
+ __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) End of RXD buffer reached */
+ __IM uint32_t RESERVED4;
+ __IOM uint32_t EVENTS_END; /*!< (@ 0x00000118) End of RXD buffer and TXD buffer reached */
+ __IM uint32_t RESERVED5;
+ __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000120) End of TXD buffer reached */
+ __IM uint32_t RESERVED6[10];
+ __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x0000014C) Transaction started */
+ __IM uint32_t RESERVED7[44];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED8[64];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED9[61];
+ __IOM uint32_t STALLSTAT; /*!< (@ 0x00000400) Stall status for EasyDMA RAM accesses. The fields
+ in this register are set to STALL by hardware
+ whenever a stall occurs and can be cleared
+ (set to NOSTALL) by the CPU. */
+ __IM uint32_t RESERVED10[63];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPIM */
+ __IM uint32_t RESERVED11;
+ __IOM SPIM_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
+ __IM uint32_t RESERVED12[3];
+ __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) SPI frequency. Accuracy depends on the HFCLK
+ source selected. */
+ __IM uint32_t RESERVED13[3];
+ __IOM SPIM_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */
+ __IOM SPIM_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */
+ __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */
+ __IM uint32_t RESERVED14[2];
+ __IOM SPIM_IFTIMING_Type IFTIMING; /*!< (@ 0x00000560) Unspecified */
+ __IOM uint32_t CSNPOL; /*!< (@ 0x00000568) Polarity of CSN output */
+ __IOM uint32_t PSELDCX; /*!< (@ 0x0000056C) Pin select for DCX signal */
+ __IOM uint32_t DCXCNT; /*!< (@ 0x00000570) DCX configuration */
+ __IM uint32_t RESERVED15[19];
+ __IOM uint32_t ORC; /*!< (@ 0x000005C0) Byte transmitted after TXD.MAXCNT bytes have
+ been transmitted in the case when RXD.MAXCNT
+ is greater than TXD.MAXCNT */
+} NRF_SPIM_Type; /*!< Size = 1476 (0x5c4) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ SPIS0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief SPI Slave 0 (SPIS0)
+ */
+
+typedef struct { /*!< (@ 0x40003000) SPIS0 Structure */
+ __IM uint32_t RESERVED[9];
+ __OM uint32_t TASKS_ACQUIRE; /*!< (@ 0x00000024) Acquire SPI semaphore */
+ __OM uint32_t TASKS_RELEASE; /*!< (@ 0x00000028) Release SPI semaphore, enabling the SPI slave
+ to acquire it */
+ __IM uint32_t RESERVED1[54];
+ __IOM uint32_t EVENTS_END; /*!< (@ 0x00000104) Granted transaction completed */
+ __IM uint32_t RESERVED2[2];
+ __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x00000110) End of RXD buffer reached */
+ __IM uint32_t RESERVED3[5];
+ __IOM uint32_t EVENTS_ACQUIRED; /*!< (@ 0x00000128) Semaphore acquired */
+ __IM uint32_t RESERVED4[53];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED5[64];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED6[61];
+ __IM uint32_t SEMSTAT; /*!< (@ 0x00000400) Semaphore status register */
+ __IM uint32_t RESERVED7[15];
+ __IOM uint32_t STATUS; /*!< (@ 0x00000440) Status from last transaction */
+ __IM uint32_t RESERVED8[47];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable SPI slave */
+ __IM uint32_t RESERVED9;
+ __IOM SPIS_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
+ __IM uint32_t RESERVED10[7];
+ __IOM SPIS_RXD_Type RXD; /*!< (@ 0x00000534) Unspecified */
+ __IOM SPIS_TXD_Type TXD; /*!< (@ 0x00000544) Unspecified */
+ __IOM uint32_t CONFIG; /*!< (@ 0x00000554) Configuration register */
+ __IM uint32_t RESERVED11;
+ __IOM uint32_t DEF; /*!< (@ 0x0000055C) Default character. Character clocked out in case
+ of an ignored transaction. */
+ __IM uint32_t RESERVED12[24];
+ __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character */
+} NRF_SPIS_Type; /*!< Size = 1476 (0x5c4) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ TWI0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief I2C compatible Two-Wire Interface 0 (TWI0)
+ */
+
+typedef struct { /*!< (@ 0x40003000) TWI0 Structure */
+ __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start TWI receive sequence */
+ __IM uint32_t RESERVED;
+ __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start TWI transmit sequence */
+ __IM uint32_t RESERVED1[2];
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction */
+ __IM uint32_t RESERVED2;
+ __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */
+ __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */
+ __IM uint32_t RESERVED3[56];
+ __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */
+ __IOM uint32_t EVENTS_RXDREADY; /*!< (@ 0x00000108) TWI RXD byte received */
+ __IM uint32_t RESERVED4[4];
+ __IOM uint32_t EVENTS_TXDSENT; /*!< (@ 0x0000011C) TWI TXD byte sent */
+ __IM uint32_t RESERVED5;
+ __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */
+ __IM uint32_t RESERVED6[4];
+ __IOM uint32_t EVENTS_BB; /*!< (@ 0x00000138) TWI byte boundary, generated before each byte
+ that is sent or received */
+ __IM uint32_t RESERVED7[3];
+ __IOM uint32_t EVENTS_SUSPENDED; /*!< (@ 0x00000148) TWI entered the suspended state */
+ __IM uint32_t RESERVED8[45];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED9[64];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED10[110];
+ __IOM uint32_t ERRORSRC; /*!< (@ 0x000004C4) Error source */
+ __IM uint32_t RESERVED11[14];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWI */
+ __IM uint32_t RESERVED12;
+ __IOM TWI_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
+ __IM uint32_t RESERVED13[2];
+ __IM uint32_t RXD; /*!< (@ 0x00000518) RXD register */
+ __IOM uint32_t TXD; /*!< (@ 0x0000051C) TXD register */
+ __IM uint32_t RESERVED14;
+ __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK
+ source selected. */
+ __IM uint32_t RESERVED15[24];
+ __IOM uint32_t ADDRESS; /*!< (@ 0x00000588) Address used in the TWI transfer */
+} NRF_TWI_Type; /*!< Size = 1420 (0x58c) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ TWIM0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief I2C compatible Two-Wire Master Interface with EasyDMA 0 (TWIM0)
+ */
+
+typedef struct { /*!< (@ 0x40003000) TWIM0 Structure */
+ __OM uint32_t TASKS_STARTRX; /*!< (@ 0x00000000) Start TWI receive sequence */
+ __IM uint32_t RESERVED;
+ __OM uint32_t TASKS_STARTTX; /*!< (@ 0x00000008) Start TWI transmit sequence */
+ __IM uint32_t RESERVED1[2];
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction. Must be issued while the
+ TWI master is not suspended. */
+ __IM uint32_t RESERVED2;
+ __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */
+ __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */
+ __IM uint32_t RESERVED3[56];
+ __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */
+ __IM uint32_t RESERVED4[7];
+ __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */
+ __IM uint32_t RESERVED5[8];
+ __IOM uint32_t EVENTS_SUSPENDED; /*!< (@ 0x00000148) SUSPEND task has been issued, TWI traffic is
+ now suspended. */
+ __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) Receive sequence started */
+ __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) Transmit sequence started */
+ __IM uint32_t RESERVED6[2];
+ __IOM uint32_t EVENTS_LASTRX; /*!< (@ 0x0000015C) Byte boundary, starting to receive the last byte */
+ __IOM uint32_t EVENTS_LASTTX; /*!< (@ 0x00000160) Byte boundary, starting to transmit the last
+ byte */
+ __IM uint32_t RESERVED7[39];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED8[63];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED9[110];
+ __IOM uint32_t ERRORSRC; /*!< (@ 0x000004C4) Error source */
+ __IM uint32_t RESERVED10[14];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWIM */
+ __IM uint32_t RESERVED11;
+ __IOM TWIM_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
+ __IM uint32_t RESERVED12[5];
+ __IOM uint32_t FREQUENCY; /*!< (@ 0x00000524) TWI frequency. Accuracy depends on the HFCLK
+ source selected. */
+ __IM uint32_t RESERVED13[3];
+ __IOM TWIM_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */
+ __IOM TWIM_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */
+ __IM uint32_t RESERVED14[13];
+ __IOM uint32_t ADDRESS; /*!< (@ 0x00000588) Address used in the TWI transfer */
+} NRF_TWIM_Type; /*!< Size = 1420 (0x58c) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ TWIS0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief I2C compatible Two-Wire Slave Interface with EasyDMA 0 (TWIS0)
+ */
+
+typedef struct { /*!< (@ 0x40003000) TWIS0 Structure */
+ __IM uint32_t RESERVED[5];
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000014) Stop TWI transaction */
+ __IM uint32_t RESERVED1;
+ __OM uint32_t TASKS_SUSPEND; /*!< (@ 0x0000001C) Suspend TWI transaction */
+ __OM uint32_t TASKS_RESUME; /*!< (@ 0x00000020) Resume TWI transaction */
+ __IM uint32_t RESERVED2[3];
+ __OM uint32_t TASKS_PREPARERX; /*!< (@ 0x00000030) Prepare the TWI slave to respond to a write command */
+ __OM uint32_t TASKS_PREPARETX; /*!< (@ 0x00000034) Prepare the TWI slave to respond to a read command */
+ __IM uint32_t RESERVED3[51];
+ __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) TWI stopped */
+ __IM uint32_t RESERVED4[7];
+ __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000124) TWI error */
+ __IM uint32_t RESERVED5[9];
+ __IOM uint32_t EVENTS_RXSTARTED; /*!< (@ 0x0000014C) Receive sequence started */
+ __IOM uint32_t EVENTS_TXSTARTED; /*!< (@ 0x00000150) Transmit sequence started */
+ __IM uint32_t RESERVED6[4];
+ __IOM uint32_t EVENTS_WRITE; /*!< (@ 0x00000164) Write command received */
+ __IOM uint32_t EVENTS_READ; /*!< (@ 0x00000168) Read command received */
+ __IM uint32_t RESERVED7[37];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED8[63];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED9[113];
+ __IOM uint32_t ERRORSRC; /*!< (@ 0x000004D0) Error source */
+ __IM uint32_t MATCH; /*!< (@ 0x000004D4) Status register indicating which address had
+ a match */
+ __IM uint32_t RESERVED10[10];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable TWIS */
+ __IM uint32_t RESERVED11;
+ __IOM TWIS_PSEL_Type PSEL; /*!< (@ 0x00000508) Unspecified */
+ __IM uint32_t RESERVED12[9];
+ __IOM TWIS_RXD_Type RXD; /*!< (@ 0x00000534) RXD EasyDMA channel */
+ __IOM TWIS_TXD_Type TXD; /*!< (@ 0x00000544) TXD EasyDMA channel */
+ __IM uint32_t RESERVED13[13];
+ __IOM uint32_t ADDRESS[2]; /*!< (@ 0x00000588) Description collection: TWI slave address n */
+ __IM uint32_t RESERVED14;
+ __IOM uint32_t CONFIG; /*!< (@ 0x00000594) Configuration register for the address match
+ mechanism */
+ __IM uint32_t RESERVED15[10];
+ __IOM uint32_t ORC; /*!< (@ 0x000005C0) Over-read character. Character sent out in case
+ of an over-read of the transmit buffer. */
+} NRF_TWIS_Type; /*!< Size = 1476 (0x5c4) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ NFCT ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief NFC-A compatible radio (NFCT)
+ */
+
+typedef struct { /*!< (@ 0x40005000) NFCT Structure */
+ __OM uint32_t TASKS_ACTIVATE; /*!< (@ 0x00000000) Activate NFCT peripheral for incoming and outgoing
+ frames, change state to activated */
+ __OM uint32_t TASKS_DISABLE; /*!< (@ 0x00000004) Disable NFCT peripheral */
+ __OM uint32_t TASKS_SENSE; /*!< (@ 0x00000008) Enable NFC sense field mode, change state to
+ sense mode */
+ __OM uint32_t TASKS_STARTTX; /*!< (@ 0x0000000C) Start transmission of an outgoing frame, change
+ state to transmit */
+ __IM uint32_t RESERVED[3];
+ __OM uint32_t TASKS_ENABLERXDATA; /*!< (@ 0x0000001C) Initializes the EasyDMA for receive. */
+ __IM uint32_t RESERVED1;
+ __OM uint32_t TASKS_GOIDLE; /*!< (@ 0x00000024) Force state machine to IDLE state */
+ __OM uint32_t TASKS_GOSLEEP; /*!< (@ 0x00000028) Force state machine to SLEEP_A state */
+ __IM uint32_t RESERVED2[53];
+ __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) The NFCT peripheral is ready to receive and send
+ frames */
+ __IOM uint32_t EVENTS_FIELDDETECTED; /*!< (@ 0x00000104) Remote NFC field detected */
+ __IOM uint32_t EVENTS_FIELDLOST; /*!< (@ 0x00000108) Remote NFC field lost */
+ __IOM uint32_t EVENTS_TXFRAMESTART; /*!< (@ 0x0000010C) Marks the start of the first symbol of a transmitted
+ frame */
+ __IOM uint32_t EVENTS_TXFRAMEEND; /*!< (@ 0x00000110) Marks the end of the last transmitted on-air
+ symbol of a frame */
+ __IOM uint32_t EVENTS_RXFRAMESTART; /*!< (@ 0x00000114) Marks the end of the first symbol of a received
+ frame */
+ __IOM uint32_t EVENTS_RXFRAMEEND; /*!< (@ 0x00000118) Received data has been checked (CRC, parity)
+ and transferred to RAM, and EasyDMA has
+ ended accessing the RX buffer */
+ __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x0000011C) NFC error reported. The ERRORSTATUS register
+ contains details on the source of the error. */
+ __IM uint32_t RESERVED3[2];
+ __IOM uint32_t EVENTS_RXERROR; /*!< (@ 0x00000128) NFC RX frame error reported. The FRAMESTATUS.RX
+ register contains details on the source
+ of the error. */
+ __IOM uint32_t EVENTS_ENDRX; /*!< (@ 0x0000012C) RX buffer (as defined by PACKETPTR and MAXLEN)
+ in Data RAM full. */
+ __IOM uint32_t EVENTS_ENDTX; /*!< (@ 0x00000130) Transmission of data in RAM has ended, and EasyDMA
+ has ended accessing the TX buffer */
+ __IM uint32_t RESERVED4;
+ __IOM uint32_t EVENTS_AUTOCOLRESSTARTED; /*!< (@ 0x00000138) Auto collision resolution process has started */
+ __IM uint32_t RESERVED5[3];
+ __IOM uint32_t EVENTS_COLLISION; /*!< (@ 0x00000148) NFC auto collision resolution error reported. */
+ __IOM uint32_t EVENTS_SELECTED; /*!< (@ 0x0000014C) NFC auto collision resolution successfully completed */
+ __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000150) EasyDMA is ready to receive or send frames. */
+ __IM uint32_t RESERVED6[43];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED7[63];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED8[62];
+ __IOM uint32_t ERRORSTATUS; /*!< (@ 0x00000404) NFC Error Status register */
+ __IM uint32_t RESERVED9;
+ __IOM NFCT_FRAMESTATUS_Type FRAMESTATUS; /*!< (@ 0x0000040C) Unspecified */
+ __IM uint32_t NFCTAGSTATE; /*!< (@ 0x00000410) NfcTag state register */
+ __IM uint32_t RESERVED10[3];
+ __IM uint32_t SLEEPSTATE; /*!< (@ 0x00000420) Sleep state during automatic collision resolution */
+ __IM uint32_t RESERVED11[6];
+ __IM uint32_t FIELDPRESENT; /*!< (@ 0x0000043C) Indicates the presence or not of a valid field */
+ __IM uint32_t RESERVED12[49];
+ __IOM uint32_t FRAMEDELAYMIN; /*!< (@ 0x00000504) Minimum frame delay */
+ __IOM uint32_t FRAMEDELAYMAX; /*!< (@ 0x00000508) Maximum frame delay */
+ __IOM uint32_t FRAMEDELAYMODE; /*!< (@ 0x0000050C) Configuration register for the Frame Delay Timer */
+ __IOM uint32_t PACKETPTR; /*!< (@ 0x00000510) Packet pointer for TXD and RXD data storage in
+ Data RAM */
+ __IOM uint32_t MAXLEN; /*!< (@ 0x00000514) Size of the RAM buffer allocated to TXD and RXD
+ data storage each */
+ __IOM NFCT_TXD_Type TXD; /*!< (@ 0x00000518) Unspecified */
+ __IOM NFCT_RXD_Type RXD; /*!< (@ 0x00000520) Unspecified */
+ __IM uint32_t RESERVED13[26];
+ __IOM uint32_t NFCID1_LAST; /*!< (@ 0x00000590) Last NFCID1 part (4, 7 or 10 bytes ID) */
+ __IOM uint32_t NFCID1_2ND_LAST; /*!< (@ 0x00000594) Second last NFCID1 part (7 or 10 bytes ID) */
+ __IOM uint32_t NFCID1_3RD_LAST; /*!< (@ 0x00000598) Third last NFCID1 part (10 bytes ID) */
+ __IOM uint32_t AUTOCOLRESCONFIG; /*!< (@ 0x0000059C) Controls the auto collision resolution function.
+ This setting must be done before the NFCT
+ peripheral is activated. */
+ __IOM uint32_t SENSRES; /*!< (@ 0x000005A0) NFC-A SENS_RES auto-response settings */
+ __IOM uint32_t SELRES; /*!< (@ 0x000005A4) NFC-A SEL_RES auto-response settings */
+} NRF_NFCT_Type; /*!< Size = 1448 (0x5a8) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ GPIOTE ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief GPIO Tasks and Events (GPIOTE)
+ */
+
+typedef struct { /*!< (@ 0x40006000) GPIOTE Structure */
+ __OM uint32_t TASKS_OUT[8]; /*!< (@ 0x00000000) Description collection: Task for writing to pin
+ specified in CONFIG[n].PSEL. Action on pin
+ is configured in CONFIG[n].POLARITY. */
+ __IM uint32_t RESERVED[4];
+ __OM uint32_t TASKS_SET[8]; /*!< (@ 0x00000030) Description collection: Task for writing to pin
+ specified in CONFIG[n].PSEL. Action on pin
+ is to set it high. */
+ __IM uint32_t RESERVED1[4];
+ __OM uint32_t TASKS_CLR[8]; /*!< (@ 0x00000060) Description collection: Task for writing to pin
+ specified in CONFIG[n].PSEL. Action on pin
+ is to set it low. */
+ __IM uint32_t RESERVED2[32];
+ __IOM uint32_t EVENTS_IN[8]; /*!< (@ 0x00000100) Description collection: Event generated from
+ pin specified in CONFIG[n].PSEL */
+ __IM uint32_t RESERVED3[23];
+ __IOM uint32_t EVENTS_PORT; /*!< (@ 0x0000017C) Event generated from multiple input GPIO pins
+ with SENSE mechanism enabled */
+ __IM uint32_t RESERVED4[97];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED5[129];
+ __IOM uint32_t CONFIG[8]; /*!< (@ 0x00000510) Description collection: Configuration for OUT[n],
+ SET[n], and CLR[n] tasks and IN[n] event */
+} NRF_GPIOTE_Type; /*!< Size = 1328 (0x530) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ SAADC ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Successive approximation register (SAR) analog-to-digital converter (SAADC)
+ */
+
+typedef struct { /*!< (@ 0x40007000) SAADC Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Starts the SAADC and prepares the result buffer
+ in RAM */
+ __OM uint32_t TASKS_SAMPLE; /*!< (@ 0x00000004) Takes one SAADC sample */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stops the SAADC and terminates all on-going conversions */
+ __OM uint32_t TASKS_CALIBRATEOFFSET; /*!< (@ 0x0000000C) Starts offset auto-calibration */
+ __IM uint32_t RESERVED[60];
+ __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000100) The SAADC has started */
+ __IOM uint32_t EVENTS_END; /*!< (@ 0x00000104) The SAADC has filled up the result buffer */
+ __IOM uint32_t EVENTS_DONE; /*!< (@ 0x00000108) A conversion task has been completed. Depending
+ on the configuration, multiple conversions
+ might be needed for a result to be transferred
+ to RAM. */
+ __IOM uint32_t EVENTS_RESULTDONE; /*!< (@ 0x0000010C) Result ready for transfer to RAM */
+ __IOM uint32_t EVENTS_CALIBRATEDONE; /*!< (@ 0x00000110) Calibration is complete */
+ __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000114) The SAADC has stopped */
+ __IOM SAADC_EVENTS_CH_Type EVENTS_CH[8]; /*!< (@ 0x00000118) Peripheral events. */
+ __IM uint32_t RESERVED1[106];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED2[61];
+ __IM uint32_t STATUS; /*!< (@ 0x00000400) Status */
+ __IM uint32_t RESERVED3[63];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable or disable SAADC */
+ __IM uint32_t RESERVED4[3];
+ __IOM SAADC_CH_Type CH[8]; /*!< (@ 0x00000510) Unspecified */
+ __IM uint32_t RESERVED5[24];
+ __IOM uint32_t RESOLUTION; /*!< (@ 0x000005F0) Resolution configuration */
+ __IOM uint32_t OVERSAMPLE; /*!< (@ 0x000005F4) Oversampling configuration. The RESOLUTION is
+ applied before averaging, thus for high
+ OVERSAMPLE a higher RESOLUTION should be
+ used. */
+ __IOM uint32_t SAMPLERATE; /*!< (@ 0x000005F8) Controls normal or continuous sample rate */
+ __IM uint32_t RESERVED6[12];
+ __IOM SAADC_RESULT_Type RESULT; /*!< (@ 0x0000062C) RESULT EasyDMA channel */
+} NRF_SAADC_Type; /*!< Size = 1592 (0x638) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ TIMER0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Timer/Counter 0 (TIMER0)
+ */
+
+typedef struct { /*!< (@ 0x40008000) TIMER0 Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start Timer */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop Timer */
+ __OM uint32_t TASKS_COUNT; /*!< (@ 0x00000008) Increment Timer (Counter mode only) */
+ __OM uint32_t TASKS_CLEAR; /*!< (@ 0x0000000C) Clear time */
+ __OM uint32_t TASKS_SHUTDOWN; /*!< (@ 0x00000010) Deprecated register - Shut down timer */
+ __IM uint32_t RESERVED[11];
+ __OM uint32_t TASKS_CAPTURE[6]; /*!< (@ 0x00000040) Description collection: Capture Timer value to
+ CC[n] register */
+ __IM uint32_t RESERVED1[58];
+ __IOM uint32_t EVENTS_COMPARE[6]; /*!< (@ 0x00000140) Description collection: Compare event on CC[n]
+ match */
+ __IM uint32_t RESERVED2[42];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED3[64];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED4[126];
+ __IOM uint32_t MODE; /*!< (@ 0x00000504) Timer mode selection */
+ __IOM uint32_t BITMODE; /*!< (@ 0x00000508) Configure the number of bits used by the TIMER */
+ __IM uint32_t RESERVED5;
+ __IOM uint32_t PRESCALER; /*!< (@ 0x00000510) Timer prescaler register */
+ __IM uint32_t RESERVED6[11];
+ __IOM uint32_t CC[6]; /*!< (@ 0x00000540) Description collection: Capture/Compare register
+ n */
+} NRF_TIMER_Type; /*!< Size = 1368 (0x558) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ RTC0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Real time counter 0 (RTC0)
+ */
+
+typedef struct { /*!< (@ 0x4000B000) RTC0 Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start RTC COUNTER */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop RTC COUNTER */
+ __OM uint32_t TASKS_CLEAR; /*!< (@ 0x00000008) Clear RTC COUNTER */
+ __OM uint32_t TASKS_TRIGOVRFLW; /*!< (@ 0x0000000C) Set COUNTER to 0xFFFFF0 */
+ __IM uint32_t RESERVED[60];
+ __IOM uint32_t EVENTS_TICK; /*!< (@ 0x00000100) Event on COUNTER increment */
+ __IOM uint32_t EVENTS_OVRFLW; /*!< (@ 0x00000104) Event on COUNTER overflow */
+ __IM uint32_t RESERVED1[14];
+ __IOM uint32_t EVENTS_COMPARE[4]; /*!< (@ 0x00000140) Description collection: Compare event on CC[n]
+ match */
+ __IM uint32_t RESERVED2[109];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED3[13];
+ __IOM uint32_t EVTEN; /*!< (@ 0x00000340) Enable or disable event routing */
+ __IOM uint32_t EVTENSET; /*!< (@ 0x00000344) Enable event routing */
+ __IOM uint32_t EVTENCLR; /*!< (@ 0x00000348) Disable event routing */
+ __IM uint32_t RESERVED4[110];
+ __IM uint32_t COUNTER; /*!< (@ 0x00000504) Current COUNTER value */
+ __IOM uint32_t PRESCALER; /*!< (@ 0x00000508) 12 bit prescaler for COUNTER frequency (32768/(PRESCALER+1)).
+ Must be written when RTC is stopped. */
+ __IM uint32_t RESERVED5[13];
+ __IOM uint32_t CC[4]; /*!< (@ 0x00000540) Description collection: Compare register n */
+} NRF_RTC_Type; /*!< Size = 1360 (0x550) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ TEMP ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Temperature Sensor (TEMP)
+ */
+
+typedef struct { /*!< (@ 0x4000C000) TEMP Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start temperature measurement */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop temperature measurement */
+ __IM uint32_t RESERVED[62];
+ __IOM uint32_t EVENTS_DATARDY; /*!< (@ 0x00000100) Temperature measurement complete, data ready */
+ __IM uint32_t RESERVED1[128];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED2[127];
+ __IM int32_t TEMP; /*!< (@ 0x00000508) Temperature in degC (0.25deg steps) */
+ __IM uint32_t RESERVED3[5];
+ __IOM uint32_t A0; /*!< (@ 0x00000520) Slope of first piecewise linear function */
+ __IOM uint32_t A1; /*!< (@ 0x00000524) Slope of second piecewise linear function */
+ __IOM uint32_t A2; /*!< (@ 0x00000528) Slope of third piecewise linear function */
+ __IOM uint32_t A3; /*!< (@ 0x0000052C) Slope of fourth piecewise linear function */
+ __IOM uint32_t A4; /*!< (@ 0x00000530) Slope of fifth piecewise linear function */
+ __IOM uint32_t A5; /*!< (@ 0x00000534) Slope of sixth piecewise linear function */
+ __IM uint32_t RESERVED4[2];
+ __IOM uint32_t B0; /*!< (@ 0x00000540) y-intercept of first piecewise linear function */
+ __IOM uint32_t B1; /*!< (@ 0x00000544) y-intercept of second piecewise linear function */
+ __IOM uint32_t B2; /*!< (@ 0x00000548) y-intercept of third piecewise linear function */
+ __IOM uint32_t B3; /*!< (@ 0x0000054C) y-intercept of fourth piecewise linear function */
+ __IOM uint32_t B4; /*!< (@ 0x00000550) y-intercept of fifth piecewise linear function */
+ __IOM uint32_t B5; /*!< (@ 0x00000554) y-intercept of sixth piecewise linear function */
+ __IM uint32_t RESERVED5[2];
+ __IOM uint32_t T0; /*!< (@ 0x00000560) End point of first piecewise linear function */
+ __IOM uint32_t T1; /*!< (@ 0x00000564) End point of second piecewise linear function */
+ __IOM uint32_t T2; /*!< (@ 0x00000568) End point of third piecewise linear function */
+ __IOM uint32_t T3; /*!< (@ 0x0000056C) End point of fourth piecewise linear function */
+ __IOM uint32_t T4; /*!< (@ 0x00000570) End point of fifth piecewise linear function */
+} NRF_TEMP_Type; /*!< Size = 1396 (0x574) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ RNG ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Random Number Generator (RNG)
+ */
+
+typedef struct { /*!< (@ 0x4000D000) RNG Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Task starting the random number generator */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Task stopping the random number generator */
+ __IM uint32_t RESERVED[62];
+ __IOM uint32_t EVENTS_VALRDY; /*!< (@ 0x00000100) Event being generated for every new random number
+ written to the VALUE register */
+ __IM uint32_t RESERVED1[63];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED2[64];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED3[126];
+ __IOM uint32_t CONFIG; /*!< (@ 0x00000504) Configuration register */
+ __IM uint32_t VALUE; /*!< (@ 0x00000508) Output random number */
+} NRF_RNG_Type; /*!< Size = 1292 (0x50c) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ ECB ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief AES ECB Mode Encryption (ECB)
+ */
+
+typedef struct { /*!< (@ 0x4000E000) ECB Structure */
+ __OM uint32_t TASKS_STARTECB; /*!< (@ 0x00000000) Start ECB block encrypt */
+ __OM uint32_t TASKS_STOPECB; /*!< (@ 0x00000004) Abort a possible executing ECB operation */
+ __IM uint32_t RESERVED[62];
+ __IOM uint32_t EVENTS_ENDECB; /*!< (@ 0x00000100) ECB block encrypt complete */
+ __IOM uint32_t EVENTS_ERRORECB; /*!< (@ 0x00000104) ECB block encrypt aborted because of a STOPECB
+ task or due to an error */
+ __IM uint32_t RESERVED1[127];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED2[126];
+ __IOM uint32_t ECBDATAPTR; /*!< (@ 0x00000504) ECB block encrypt memory pointers */
+} NRF_ECB_Type; /*!< Size = 1288 (0x508) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ AAR ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Accelerated Address Resolver (AAR)
+ */
+
+typedef struct { /*!< (@ 0x4000F000) AAR Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start resolving addresses based on IRKs specified
+ in the IRK data structure */
+ __IM uint32_t RESERVED;
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop resolving addresses */
+ __IM uint32_t RESERVED1[61];
+ __IOM uint32_t EVENTS_END; /*!< (@ 0x00000100) Address resolution procedure complete */
+ __IOM uint32_t EVENTS_RESOLVED; /*!< (@ 0x00000104) Address resolved */
+ __IOM uint32_t EVENTS_NOTRESOLVED; /*!< (@ 0x00000108) Address not resolved */
+ __IM uint32_t RESERVED2[126];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED3[61];
+ __IM uint32_t STATUS; /*!< (@ 0x00000400) Resolution status */
+ __IM uint32_t RESERVED4[63];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable AAR */
+ __IOM uint32_t NIRK; /*!< (@ 0x00000504) Number of IRKs */
+ __IOM uint32_t IRKPTR; /*!< (@ 0x00000508) Pointer to IRK data structure */
+ __IM uint32_t RESERVED5;
+ __IOM uint32_t ADDRPTR; /*!< (@ 0x00000510) Pointer to the resolvable address */
+ __IOM uint32_t SCRATCHPTR; /*!< (@ 0x00000514) Pointer to data area used for temporary storage */
+} NRF_AAR_Type; /*!< Size = 1304 (0x518) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ CCM ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief AES CCM Mode Encryption (CCM)
+ */
+
+typedef struct { /*!< (@ 0x4000F000) CCM Structure */
+ __OM uint32_t TASKS_KSGEN; /*!< (@ 0x00000000) Start generation of keystream. This operation
+ will stop by itself when completed. */
+ __OM uint32_t TASKS_CRYPT; /*!< (@ 0x00000004) Start encryption/decryption. This operation will
+ stop by itself when completed. */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000008) Stop encryption/decryption */
+ __OM uint32_t TASKS_RATEOVERRIDE; /*!< (@ 0x0000000C) Override DATARATE setting in MODE register with
+ the contents of the RATEOVERRIDE register
+ for any ongoing encryption/decryption */
+ __IM uint32_t RESERVED[60];
+ __IOM uint32_t EVENTS_ENDKSGEN; /*!< (@ 0x00000100) Keystream generation complete */
+ __IOM uint32_t EVENTS_ENDCRYPT; /*!< (@ 0x00000104) Encrypt/decrypt complete */
+ __IOM uint32_t EVENTS_ERROR; /*!< (@ 0x00000108) Deprecated register - CCM error event */
+ __IM uint32_t RESERVED1[61];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED2[64];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED3[61];
+ __IM uint32_t MICSTATUS; /*!< (@ 0x00000400) MIC check result */
+ __IM uint32_t RESERVED4[63];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable */
+ __IOM uint32_t MODE; /*!< (@ 0x00000504) Operation mode */
+ __IOM uint32_t CNFPTR; /*!< (@ 0x00000508) Pointer to data structure holding AES key and
+ NONCE vector */
+ __IOM uint32_t INPTR; /*!< (@ 0x0000050C) Input pointer */
+ __IOM uint32_t OUTPTR; /*!< (@ 0x00000510) Output pointer */
+ __IOM uint32_t SCRATCHPTR; /*!< (@ 0x00000514) Pointer to data area used for temporary storage */
+ __IOM uint32_t MAXPACKETSIZE; /*!< (@ 0x00000518) Length of keystream generated when MODE.LENGTH
+ = Extended. */
+ __IOM uint32_t RATEOVERRIDE; /*!< (@ 0x0000051C) Data rate override setting. */
+} NRF_CCM_Type; /*!< Size = 1312 (0x520) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ WDT ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Watchdog Timer (WDT)
+ */
+
+typedef struct { /*!< (@ 0x40010000) WDT Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start the watchdog */
+ __IM uint32_t RESERVED[63];
+ __IOM uint32_t EVENTS_TIMEOUT; /*!< (@ 0x00000100) Watchdog timeout */
+ __IM uint32_t RESERVED1[128];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED2[61];
+ __IM uint32_t RUNSTATUS; /*!< (@ 0x00000400) Run status */
+ __IM uint32_t REQSTATUS; /*!< (@ 0x00000404) Request status */
+ __IM uint32_t RESERVED3[63];
+ __IOM uint32_t CRV; /*!< (@ 0x00000504) Counter reload value */
+ __IOM uint32_t RREN; /*!< (@ 0x00000508) Enable register for reload request registers */
+ __IOM uint32_t CONFIG; /*!< (@ 0x0000050C) Configuration register */
+ __IM uint32_t RESERVED4[60];
+ __OM uint32_t RR[8]; /*!< (@ 0x00000600) Description collection: Reload request n */
+} NRF_WDT_Type; /*!< Size = 1568 (0x620) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ QDEC ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Quadrature Decoder (QDEC)
+ */
+
+typedef struct { /*!< (@ 0x40012000) QDEC Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Task starting the quadrature decoder */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Task stopping the quadrature decoder */
+ __OM uint32_t TASKS_READCLRACC; /*!< (@ 0x00000008) Read and clear ACC and ACCDBL */
+ __OM uint32_t TASKS_RDCLRACC; /*!< (@ 0x0000000C) Read and clear ACC */
+ __OM uint32_t TASKS_RDCLRDBL; /*!< (@ 0x00000010) Read and clear ACCDBL */
+ __IM uint32_t RESERVED[59];
+ __IOM uint32_t EVENTS_SAMPLERDY; /*!< (@ 0x00000100) Event being generated for every new sample value
+ written to the SAMPLE register */
+ __IOM uint32_t EVENTS_REPORTRDY; /*!< (@ 0x00000104) Non-null report ready */
+ __IOM uint32_t EVENTS_ACCOF; /*!< (@ 0x00000108) ACC or ACCDBL register overflow */
+ __IOM uint32_t EVENTS_DBLRDY; /*!< (@ 0x0000010C) Double displacement(s) detected */
+ __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000110) QDEC has been stopped */
+ __IM uint32_t RESERVED1[59];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED2[64];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED3[125];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable the quadrature decoder */
+ __IOM uint32_t LEDPOL; /*!< (@ 0x00000504) LED output pin polarity */
+ __IOM uint32_t SAMPLEPER; /*!< (@ 0x00000508) Sample period */
+ __IM int32_t SAMPLE; /*!< (@ 0x0000050C) Motion sample value */
+ __IOM uint32_t REPORTPER; /*!< (@ 0x00000510) Number of samples to be taken before REPORTRDY
+ and DBLRDY events can be generated */
+ __IM int32_t ACC; /*!< (@ 0x00000514) Register accumulating the valid transitions */
+ __IM int32_t ACCREAD; /*!< (@ 0x00000518) Snapshot of the ACC register, updated by the
+ READCLRACC or RDCLRACC task */
+ __IOM QDEC_PSEL_Type PSEL; /*!< (@ 0x0000051C) Unspecified */
+ __IOM uint32_t DBFEN; /*!< (@ 0x00000528) Enable input debounce filters */
+ __IM uint32_t RESERVED4[5];
+ __IOM uint32_t LEDPRE; /*!< (@ 0x00000540) Time period the LED is switched ON prior to sampling */
+ __IM uint32_t ACCDBL; /*!< (@ 0x00000544) Register accumulating the number of detected
+ double transitions */
+ __IM uint32_t ACCDBLREAD; /*!< (@ 0x00000548) Snapshot of the ACCDBL, updated by the READCLRACC
+ or RDCLRDBL task */
+} NRF_QDEC_Type; /*!< Size = 1356 (0x54c) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ COMP ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Comparator (COMP)
+ */
+
+typedef struct { /*!< (@ 0x40013000) COMP Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start comparator */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop comparator */
+ __OM uint32_t TASKS_SAMPLE; /*!< (@ 0x00000008) Sample comparator value */
+ __IM uint32_t RESERVED[61];
+ __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) COMP is ready and output is valid */
+ __IOM uint32_t EVENTS_DOWN; /*!< (@ 0x00000104) Downward crossing */
+ __IOM uint32_t EVENTS_UP; /*!< (@ 0x00000108) Upward crossing */
+ __IOM uint32_t EVENTS_CROSS; /*!< (@ 0x0000010C) Downward or upward crossing */
+ __IM uint32_t RESERVED1[60];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED2[63];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED3[61];
+ __IM uint32_t RESULT; /*!< (@ 0x00000400) Compare result */
+ __IM uint32_t RESERVED4[63];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) COMP enable */
+ __IOM uint32_t PSEL; /*!< (@ 0x00000504) Pin select */
+ __IOM uint32_t REFSEL; /*!< (@ 0x00000508) Reference source select for single-ended mode */
+ __IOM uint32_t EXTREFSEL; /*!< (@ 0x0000050C) External reference select */
+ __IM uint32_t RESERVED5[8];
+ __IOM uint32_t TH; /*!< (@ 0x00000530) Threshold configuration for hysteresis unit */
+ __IOM uint32_t MODE; /*!< (@ 0x00000534) Mode configuration */
+ __IOM uint32_t HYST; /*!< (@ 0x00000538) Comparator hysteresis enable */
+} NRF_COMP_Type; /*!< Size = 1340 (0x53c) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ LPCOMP ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Low-power comparator (LPCOMP)
+ */
+
+typedef struct { /*!< (@ 0x40013000) LPCOMP Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Start comparator */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stop comparator */
+ __OM uint32_t TASKS_SAMPLE; /*!< (@ 0x00000008) Sample comparator value */
+ __IM uint32_t RESERVED[61];
+ __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) LPCOMP is ready and output is valid */
+ __IOM uint32_t EVENTS_DOWN; /*!< (@ 0x00000104) Downward crossing */
+ __IOM uint32_t EVENTS_UP; /*!< (@ 0x00000108) Upward crossing */
+ __IOM uint32_t EVENTS_CROSS; /*!< (@ 0x0000010C) Downward or upward crossing */
+ __IM uint32_t RESERVED1[60];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED2[64];
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED3[61];
+ __IM uint32_t RESULT; /*!< (@ 0x00000400) Compare result */
+ __IM uint32_t RESERVED4[63];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable LPCOMP */
+ __IOM uint32_t PSEL; /*!< (@ 0x00000504) Input pin select */
+ __IOM uint32_t REFSEL; /*!< (@ 0x00000508) Reference select */
+ __IOM uint32_t EXTREFSEL; /*!< (@ 0x0000050C) External reference select */
+ __IM uint32_t RESERVED5[4];
+ __IOM uint32_t ANADETECT; /*!< (@ 0x00000520) Analog detect configuration */
+ __IM uint32_t RESERVED6[5];
+ __IOM uint32_t HYST; /*!< (@ 0x00000538) Comparator hysteresis enable */
+} NRF_LPCOMP_Type; /*!< Size = 1340 (0x53c) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ EGU0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Event generator unit 0 (EGU0)
+ */
+
+typedef struct { /*!< (@ 0x40014000) EGU0 Structure */
+ __OM uint32_t TASKS_TRIGGER[16]; /*!< (@ 0x00000000) Description collection: Trigger n for triggering
+ the corresponding TRIGGERED[n] event */
+ __IM uint32_t RESERVED[48];
+ __IOM uint32_t EVENTS_TRIGGERED[16]; /*!< (@ 0x00000100) Description collection: Event number n generated
+ by triggering the corresponding TRIGGER[n]
+ task */
+ __IM uint32_t RESERVED1[112];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+} NRF_EGU_Type; /*!< Size = 780 (0x30c) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ SWI0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Software interrupt 0 (SWI0)
+ */
+
+typedef struct { /*!< (@ 0x40014000) SWI0 Structure */
+ __IM uint32_t UNUSED; /*!< (@ 0x00000000) Unused. */
+} NRF_SWI_Type; /*!< Size = 4 (0x4) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ PWM0 ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Pulse width modulation unit 0 (PWM0)
+ */
+
+typedef struct { /*!< (@ 0x4001C000) PWM0 Structure */
+ __IM uint32_t RESERVED;
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops PWM pulse generation on all channels at
+ the end of current PWM period, and stops
+ sequence playback */
+ __OM uint32_t TASKS_SEQSTART[2]; /*!< (@ 0x00000008) Description collection: Loads the first PWM value
+ on all enabled channels from sequence n,
+ and starts playing that sequence at the
+ rate defined in SEQ[n]REFRESH and/or DECODER.MODE.
+ Causes PWM generation to start if not running. */
+ __OM uint32_t TASKS_NEXTSTEP; /*!< (@ 0x00000010) Steps by one value in the current sequence on
+ all enabled channels if DECODER.MODE=NextStep.
+ Does not cause PWM generation to start if
+ not running. */
+ __IM uint32_t RESERVED1[60];
+ __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) Response to STOP task, emitted when PWM pulses
+ are no longer generated */
+ __IOM uint32_t EVENTS_SEQSTARTED[2]; /*!< (@ 0x00000108) Description collection: First PWM period started
+ on sequence n */
+ __IOM uint32_t EVENTS_SEQEND[2]; /*!< (@ 0x00000110) Description collection: Emitted at end of every
+ sequence n, when last value from RAM has
+ been applied to wave counter */
+ __IOM uint32_t EVENTS_PWMPERIODEND; /*!< (@ 0x00000118) Emitted at the end of each PWM period */
+ __IOM uint32_t EVENTS_LOOPSDONE; /*!< (@ 0x0000011C) Concatenated sequences have been played the amount
+ of times defined in LOOP.CNT */
+ __IM uint32_t RESERVED2[56];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED3[63];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED4[125];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) PWM module enable register */
+ __IOM uint32_t MODE; /*!< (@ 0x00000504) Selects operating mode of the wave counter */
+ __IOM uint32_t COUNTERTOP; /*!< (@ 0x00000508) Value up to which the pulse generator counter
+ counts */
+ __IOM uint32_t PRESCALER; /*!< (@ 0x0000050C) Configuration for PWM_CLK */
+ __IOM uint32_t DECODER; /*!< (@ 0x00000510) Configuration of the decoder */
+ __IOM uint32_t LOOP; /*!< (@ 0x00000514) Number of playbacks of a loop */
+ __IM uint32_t RESERVED5[2];
+ __IOM PWM_SEQ_Type SEQ[2]; /*!< (@ 0x00000520) Unspecified */
+ __IOM PWM_PSEL_Type PSEL; /*!< (@ 0x00000560) Unspecified */
+} NRF_PWM_Type; /*!< Size = 1392 (0x570) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ PDM ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Pulse Density Modulation (Digital Microphone) Interface (PDM)
+ */
+
+typedef struct { /*!< (@ 0x4001D000) PDM Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Starts continuous PDM transfer */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops PDM transfer */
+ __IM uint32_t RESERVED[62];
+ __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000100) PDM transfer has started */
+ __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000104) PDM transfer has finished */
+ __IOM uint32_t EVENTS_END; /*!< (@ 0x00000108) The PDM has written the last sample specified
+ by SAMPLE.MAXCNT (or the last sample after
+ a STOP task has been received) to Data RAM */
+ __IM uint32_t RESERVED1[125];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED2[125];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) PDM module enable register */
+ __IOM uint32_t PDMCLKCTRL; /*!< (@ 0x00000504) PDM clock generator control */
+ __IOM uint32_t MODE; /*!< (@ 0x00000508) Defines the routing of the connected PDM microphones'
+ signals */
+ __IM uint32_t RESERVED3[3];
+ __IOM uint32_t GAINL; /*!< (@ 0x00000518) Left output gain adjustment */
+ __IOM uint32_t GAINR; /*!< (@ 0x0000051C) Right output gain adjustment */
+ __IOM uint32_t RATIO; /*!< (@ 0x00000520) Selects the ratio between PDM_CLK and output
+ sample rate. Change PDMCLKCTRL accordingly. */
+ __IM uint32_t RESERVED4[7];
+ __IOM PDM_PSEL_Type PSEL; /*!< (@ 0x00000540) Unspecified */
+ __IM uint32_t RESERVED5[6];
+ __IOM PDM_SAMPLE_Type SAMPLE; /*!< (@ 0x00000560) Unspecified */
+} NRF_PDM_Type; /*!< Size = 1384 (0x568) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ ACL ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Access control lists (ACL)
+ */
+
+typedef struct { /*!< (@ 0x4001E000) ACL Structure */
+ __IM uint32_t RESERVED[512];
+ __IOM ACL_ACL_Type ACL[8]; /*!< (@ 0x00000800) Unspecified */
+} NRF_ACL_Type; /*!< Size = 2176 (0x880) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ NVMC ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Non Volatile Memory Controller (NVMC)
+ */
+
+typedef struct { /*!< (@ 0x4001E000) NVMC Structure */
+ __IM uint32_t RESERVED[256];
+ __IM uint32_t READY; /*!< (@ 0x00000400) Ready flag */
+ __IM uint32_t RESERVED1;
+ __IM uint32_t READYNEXT; /*!< (@ 0x00000408) Ready flag */
+ __IM uint32_t RESERVED2[62];
+ __IOM uint32_t CONFIG; /*!< (@ 0x00000504) Configuration register */
+
+ union {
+ __OM uint32_t ERASEPAGE; /*!< (@ 0x00000508) Register for erasing a page in code area */
+ __OM uint32_t ERASEPCR1; /*!< (@ 0x00000508) Deprecated register - Register for erasing a
+ page in code area, equivalent to ERASEPAGE */
+ };
+ __OM uint32_t ERASEALL; /*!< (@ 0x0000050C) Register for erasing all non-volatile user memory */
+ __OM uint32_t ERASEPCR0; /*!< (@ 0x00000510) Deprecated register - Register for erasing a
+ page in code area, equivalent to ERASEPAGE */
+ __OM uint32_t ERASEUICR; /*!< (@ 0x00000514) Register for erasing user information configuration
+ registers */
+ __OM uint32_t ERASEPAGEPARTIAL; /*!< (@ 0x00000518) Register for partial erase of a page in code
+ area */
+ __IOM uint32_t ERASEPAGEPARTIALCFG; /*!< (@ 0x0000051C) Register for partial erase configuration */
+ __IM uint32_t RESERVED3[8];
+ __IOM uint32_t ICACHECNF; /*!< (@ 0x00000540) I-code cache configuration register */
+ __IM uint32_t RESERVED4;
+ __IOM uint32_t IHIT; /*!< (@ 0x00000548) I-code cache hit counter */
+ __IOM uint32_t IMISS; /*!< (@ 0x0000054C) I-code cache miss counter */
+} NRF_NVMC_Type; /*!< Size = 1360 (0x550) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ PPI ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Programmable Peripheral Interconnect (PPI)
+ */
+
+typedef struct { /*!< (@ 0x4001F000) PPI Structure */
+ __OM PPI_TASKS_CHG_Type TASKS_CHG[6]; /*!< (@ 0x00000000) Channel group tasks */
+ __IM uint32_t RESERVED[308];
+ __IOM uint32_t CHEN; /*!< (@ 0x00000500) Channel enable register */
+ __IOM uint32_t CHENSET; /*!< (@ 0x00000504) Channel enable set register */
+ __IOM uint32_t CHENCLR; /*!< (@ 0x00000508) Channel enable clear register */
+ __IM uint32_t RESERVED1;
+ __IOM PPI_CH_Type CH[20]; /*!< (@ 0x00000510) PPI Channel */
+ __IM uint32_t RESERVED2[148];
+ __IOM uint32_t CHG[6]; /*!< (@ 0x00000800) Description collection: Channel group n */
+ __IM uint32_t RESERVED3[62];
+ __IOM PPI_FORK_Type FORK[32]; /*!< (@ 0x00000910) Fork */
+} NRF_PPI_Type; /*!< Size = 2448 (0x990) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ MWU ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Memory Watch Unit (MWU)
+ */
+
+typedef struct { /*!< (@ 0x40020000) MWU Structure */
+ __IM uint32_t RESERVED[64];
+ __IOM MWU_EVENTS_REGION_Type EVENTS_REGION[4];/*!< (@ 0x00000100) Peripheral events. */
+ __IM uint32_t RESERVED1[16];
+ __IOM MWU_EVENTS_PREGION_Type EVENTS_PREGION[2];/*!< (@ 0x00000160) Peripheral events. */
+ __IM uint32_t RESERVED2[100];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED3[5];
+ __IOM uint32_t NMIEN; /*!< (@ 0x00000320) Enable or disable interrupt */
+ __IOM uint32_t NMIENSET; /*!< (@ 0x00000324) Enable interrupt */
+ __IOM uint32_t NMIENCLR; /*!< (@ 0x00000328) Disable interrupt */
+ __IM uint32_t RESERVED4[53];
+ __IOM MWU_PERREGION_Type PERREGION[2]; /*!< (@ 0x00000400) Unspecified */
+ __IM uint32_t RESERVED5[64];
+ __IOM uint32_t REGIONEN; /*!< (@ 0x00000510) Enable/disable regions watch */
+ __IOM uint32_t REGIONENSET; /*!< (@ 0x00000514) Enable regions watch */
+ __IOM uint32_t REGIONENCLR; /*!< (@ 0x00000518) Disable regions watch */
+ __IM uint32_t RESERVED6[57];
+ __IOM MWU_REGION_Type REGION[4]; /*!< (@ 0x00000600) Unspecified */
+ __IM uint32_t RESERVED7[32];
+ __IOM MWU_PREGION_Type PREGION[2]; /*!< (@ 0x000006C0) Unspecified */
+} NRF_MWU_Type; /*!< Size = 1760 (0x6e0) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ I2S ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Inter-IC Sound (I2S)
+ */
+
+typedef struct { /*!< (@ 0x40025000) I2S Structure */
+ __OM uint32_t TASKS_START; /*!< (@ 0x00000000) Starts continuous I2S transfer. Also starts MCK
+ generator when this is enabled. */
+ __OM uint32_t TASKS_STOP; /*!< (@ 0x00000004) Stops I2S transfer. Also stops MCK generator.
+ Triggering this task will cause the STOPPED
+ event to be generated. */
+ __IM uint32_t RESERVED[63];
+ __IOM uint32_t EVENTS_RXPTRUPD; /*!< (@ 0x00000104) The RXD.PTR register has been copied to internal
+ double-buffers. When the I2S module is started
+ and RX is enabled, this event will be generated
+ for every RXTXD.MAXCNT words that are received
+ on the SDIN pin. */
+ __IOM uint32_t EVENTS_STOPPED; /*!< (@ 0x00000108) I2S transfer stopped. */
+ __IM uint32_t RESERVED1[2];
+ __IOM uint32_t EVENTS_TXPTRUPD; /*!< (@ 0x00000114) The TDX.PTR register has been copied to internal
+ double-buffers. When the I2S module is started
+ and TX is enabled, this event will be generated
+ for every RXTXD.MAXCNT words that are sent
+ on the SDOUT pin. */
+ __IM uint32_t RESERVED2[122];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED3[125];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable I2S module. */
+ __IOM I2S_CONFIG_Type CONFIG; /*!< (@ 0x00000504) Unspecified */
+ __IM uint32_t RESERVED4[3];
+ __IOM I2S_RXD_Type RXD; /*!< (@ 0x00000538) Unspecified */
+ __IM uint32_t RESERVED5;
+ __IOM I2S_TXD_Type TXD; /*!< (@ 0x00000540) Unspecified */
+ __IM uint32_t RESERVED6[3];
+ __IOM I2S_RXTXD_Type RXTXD; /*!< (@ 0x00000550) Unspecified */
+ __IM uint32_t RESERVED7[3];
+ __IOM I2S_PSEL_Type PSEL; /*!< (@ 0x00000560) Unspecified */
+} NRF_I2S_Type; /*!< Size = 1396 (0x574) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ FPU ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief FPU (FPU)
+ */
+
+typedef struct { /*!< (@ 0x40026000) FPU Structure */
+ __IM uint32_t UNUSED; /*!< (@ 0x00000000) Unused. */
+} NRF_FPU_Type; /*!< Size = 4 (0x4) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ USBD ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief Universal serial bus device (USBD)
+ */
+
+typedef struct { /*!< (@ 0x40027000) USBD Structure */
+ __IM uint32_t RESERVED;
+ __OM uint32_t TASKS_STARTEPIN[8]; /*!< (@ 0x00000004) Description collection: Captures the EPIN[n].PTR
+ and EPIN[n].MAXCNT registers values, and
+ enables endpoint IN n to respond to traffic
+ from host */
+ __OM uint32_t TASKS_STARTISOIN; /*!< (@ 0x00000024) Captures the ISOIN.PTR and ISOIN.MAXCNT registers
+ values, and enables sending data on ISO
+ endpoint */
+ __OM uint32_t TASKS_STARTEPOUT[8]; /*!< (@ 0x00000028) Description collection: Captures the EPOUT[n].PTR
+ and EPOUT[n].MAXCNT registers values, and
+ enables endpoint n to respond to traffic
+ from host */
+ __OM uint32_t TASKS_STARTISOOUT; /*!< (@ 0x00000048) Captures the ISOOUT.PTR and ISOOUT.MAXCNT registers
+ values, and enables receiving of data on
+ ISO endpoint */
+ __OM uint32_t TASKS_EP0RCVOUT; /*!< (@ 0x0000004C) Allows OUT data stage on control endpoint 0 */
+ __OM uint32_t TASKS_EP0STATUS; /*!< (@ 0x00000050) Allows status stage on control endpoint 0 */
+ __OM uint32_t TASKS_EP0STALL; /*!< (@ 0x00000054) Stalls data and status stage on control endpoint
+ 0 */
+ __OM uint32_t TASKS_DPDMDRIVE; /*!< (@ 0x00000058) Forces D+ and D- lines into the state defined
+ in the DPDMVALUE register */
+ __OM uint32_t TASKS_DPDMNODRIVE; /*!< (@ 0x0000005C) Stops forcing D+ and D- lines into any state
+ (USB engine takes control) */
+ __IM uint32_t RESERVED1[40];
+ __IOM uint32_t EVENTS_USBRESET; /*!< (@ 0x00000100) Signals that a USB reset condition has been detected
+ on USB lines */
+ __IOM uint32_t EVENTS_STARTED; /*!< (@ 0x00000104) Confirms that the EPIN[n].PTR and EPIN[n].MAXCNT,
+ or EPOUT[n].PTR and EPOUT[n].MAXCNT registers
+ have been captured on all endpoints reported
+ in the EPSTATUS register */
+ __IOM uint32_t EVENTS_ENDEPIN[8]; /*!< (@ 0x00000108) Description collection: The whole EPIN[n] buffer
+ has been consumed. The buffer can be accessed
+ safely by software. */
+ __IOM uint32_t EVENTS_EP0DATADONE; /*!< (@ 0x00000128) An acknowledged data transfer has taken place
+ on the control endpoint */
+ __IOM uint32_t EVENTS_ENDISOIN; /*!< (@ 0x0000012C) The whole ISOIN buffer has been consumed. The
+ buffer can be accessed safely by software. */
+ __IOM uint32_t EVENTS_ENDEPOUT[8]; /*!< (@ 0x00000130) Description collection: The whole EPOUT[n] buffer
+ has been consumed. The buffer can be accessed
+ safely by software. */
+ __IOM uint32_t EVENTS_ENDISOOUT; /*!< (@ 0x00000150) The whole ISOOUT buffer has been consumed. The
+ buffer can be accessed safely by software. */
+ __IOM uint32_t EVENTS_SOF; /*!< (@ 0x00000154) Signals that a SOF (start of frame) condition
+ has been detected on USB lines */
+ __IOM uint32_t EVENTS_USBEVENT; /*!< (@ 0x00000158) An event or an error not covered by specific
+ events has occurred. Check EVENTCAUSE register
+ to find the cause. */
+ __IOM uint32_t EVENTS_EP0SETUP; /*!< (@ 0x0000015C) A valid SETUP token has been received (and acknowledged)
+ on the control endpoint */
+ __IOM uint32_t EVENTS_EPDATA; /*!< (@ 0x00000160) A data transfer has occurred on a data endpoint,
+ indicated by the EPDATASTATUS register */
+ __IM uint32_t RESERVED2[39];
+ __IOM uint32_t SHORTS; /*!< (@ 0x00000200) Shortcuts between local events and tasks */
+ __IM uint32_t RESERVED3[63];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED4[61];
+ __IOM uint32_t EVENTCAUSE; /*!< (@ 0x00000400) Details on what caused the USBEVENT event */
+ __IM uint32_t RESERVED5[7];
+ __IOM USBD_HALTED_Type HALTED; /*!< (@ 0x00000420) Unspecified */
+ __IM uint32_t RESERVED6;
+ __IOM uint32_t EPSTATUS; /*!< (@ 0x00000468) Provides information on which endpoint's EasyDMA
+ registers have been captured */
+ __IOM uint32_t EPDATASTATUS; /*!< (@ 0x0000046C) Provides information on which endpoint(s) an
+ acknowledged data transfer has occurred
+ (EPDATA event) */
+ __IM uint32_t USBADDR; /*!< (@ 0x00000470) Device USB address */
+ __IM uint32_t RESERVED7[3];
+ __IM uint32_t BMREQUESTTYPE; /*!< (@ 0x00000480) SETUP data, byte 0, bmRequestType */
+ __IM uint32_t BREQUEST; /*!< (@ 0x00000484) SETUP data, byte 1, bRequest */
+ __IM uint32_t WVALUEL; /*!< (@ 0x00000488) SETUP data, byte 2, LSB of wValue */
+ __IM uint32_t WVALUEH; /*!< (@ 0x0000048C) SETUP data, byte 3, MSB of wValue */
+ __IM uint32_t WINDEXL; /*!< (@ 0x00000490) SETUP data, byte 4, LSB of wIndex */
+ __IM uint32_t WINDEXH; /*!< (@ 0x00000494) SETUP data, byte 5, MSB of wIndex */
+ __IM uint32_t WLENGTHL; /*!< (@ 0x00000498) SETUP data, byte 6, LSB of wLength */
+ __IM uint32_t WLENGTHH; /*!< (@ 0x0000049C) SETUP data, byte 7, MSB of wLength */
+ __IOM USBD_SIZE_Type SIZE; /*!< (@ 0x000004A0) Unspecified */
+ __IM uint32_t RESERVED8[15];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable USB */
+ __IOM uint32_t USBPULLUP; /*!< (@ 0x00000504) Control of the USB pull-up */
+ __IOM uint32_t DPDMVALUE; /*!< (@ 0x00000508) State D+ and D- lines will be forced into by
+ the DPDMDRIVE task. The DPDMNODRIVE task
+ reverts the control of the lines to MAC
+ IP (no forcing). */
+ __IOM uint32_t DTOGGLE; /*!< (@ 0x0000050C) Data toggle control and status */
+ __IOM uint32_t EPINEN; /*!< (@ 0x00000510) Endpoint IN enable */
+ __IOM uint32_t EPOUTEN; /*!< (@ 0x00000514) Endpoint OUT enable */
+ __OM uint32_t EPSTALL; /*!< (@ 0x00000518) STALL endpoints */
+ __IOM uint32_t ISOSPLIT; /*!< (@ 0x0000051C) Controls the split of ISO buffers */
+ __IM uint32_t FRAMECNTR; /*!< (@ 0x00000520) Returns the current value of the start of frame
+ counter */
+ __IM uint32_t RESERVED9[2];
+ __IOM uint32_t LOWPOWER; /*!< (@ 0x0000052C) Controls USBD peripheral low power mode during
+ USB suspend */
+ __IOM uint32_t ISOINCONFIG; /*!< (@ 0x00000530) Controls the response of the ISO IN endpoint
+ to an IN token when no data is ready to
+ be sent */
+ __IM uint32_t RESERVED10[51];
+ __IOM USBD_EPIN_Type EPIN[8]; /*!< (@ 0x00000600) Unspecified */
+ __IOM USBD_ISOIN_Type ISOIN; /*!< (@ 0x000006A0) Unspecified */
+ __IM uint32_t RESERVED11[21];
+ __IOM USBD_EPOUT_Type EPOUT[8]; /*!< (@ 0x00000700) Unspecified */
+ __IOM USBD_ISOOUT_Type ISOOUT; /*!< (@ 0x000007A0) Unspecified */
+} NRF_USBD_Type; /*!< Size = 1964 (0x7ac) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ QSPI ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief External flash interface (QSPI)
+ */
+
+typedef struct { /*!< (@ 0x40029000) QSPI Structure */
+ __OM uint32_t TASKS_ACTIVATE; /*!< (@ 0x00000000) Activate QSPI interface */
+ __OM uint32_t TASKS_READSTART; /*!< (@ 0x00000004) Start transfer from external flash memory to
+ internal RAM */
+ __OM uint32_t TASKS_WRITESTART; /*!< (@ 0x00000008) Start transfer from internal RAM to external
+ flash memory */
+ __OM uint32_t TASKS_ERASESTART; /*!< (@ 0x0000000C) Start external flash memory erase operation */
+ __OM uint32_t TASKS_DEACTIVATE; /*!< (@ 0x00000010) Deactivate QSPI interface */
+ __IM uint32_t RESERVED[59];
+ __IOM uint32_t EVENTS_READY; /*!< (@ 0x00000100) QSPI peripheral is ready. This event will be
+ generated as a response to any QSPI task. */
+ __IM uint32_t RESERVED1[127];
+ __IOM uint32_t INTEN; /*!< (@ 0x00000300) Enable or disable interrupt */
+ __IOM uint32_t INTENSET; /*!< (@ 0x00000304) Enable interrupt */
+ __IOM uint32_t INTENCLR; /*!< (@ 0x00000308) Disable interrupt */
+ __IM uint32_t RESERVED2[125];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable QSPI peripheral and acquire the pins selected
+ in PSELn registers */
+ __IOM QSPI_READ_Type READ; /*!< (@ 0x00000504) Unspecified */
+ __IOM QSPI_WRITE_Type WRITE; /*!< (@ 0x00000510) Unspecified */
+ __IOM QSPI_ERASE_Type ERASE; /*!< (@ 0x0000051C) Unspecified */
+ __IOM QSPI_PSEL_Type PSEL; /*!< (@ 0x00000524) Unspecified */
+ __IOM uint32_t XIPOFFSET; /*!< (@ 0x00000540) Address offset into the external memory for Execute
+ in Place operation. */
+ __IOM uint32_t IFCONFIG0; /*!< (@ 0x00000544) Interface configuration. */
+ __IM uint32_t RESERVED3[46];
+ __IOM uint32_t IFCONFIG1; /*!< (@ 0x00000600) Interface configuration. */
+ __IM uint32_t STATUS; /*!< (@ 0x00000604) Status register. */
+ __IM uint32_t RESERVED4[3];
+ __IOM uint32_t DPMDUR; /*!< (@ 0x00000614) Set the duration required to enter/exit deep
+ power-down mode (DPM). */
+ __IM uint32_t RESERVED5[3];
+ __IOM uint32_t ADDRCONF; /*!< (@ 0x00000624) Extended address configuration. */
+ __IM uint32_t RESERVED6[3];
+ __IOM uint32_t CINSTRCONF; /*!< (@ 0x00000634) Custom instruction configuration register. */
+ __IOM uint32_t CINSTRDAT0; /*!< (@ 0x00000638) Custom instruction data register 0. */
+ __IOM uint32_t CINSTRDAT1; /*!< (@ 0x0000063C) Custom instruction data register 1. */
+ __IOM uint32_t IFTIMING; /*!< (@ 0x00000640) SPI interface timing. */
+} NRF_QSPI_Type; /*!< Size = 1604 (0x644) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ CC_HOST_RGF ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief CRYPTOCELL HOST_RGF interface (CC_HOST_RGF)
+ */
+
+typedef struct { /*!< (@ 0x5002A000) CC_HOST_RGF Structure */
+ __IM uint32_t RESERVED[1678];
+ __IOM uint32_t HOST_CRYPTOKEY_SEL; /*!< (@ 0x00001A38) AES hardware key select */
+ __IM uint32_t RESERVED1[4];
+ __IOM uint32_t HOST_IOT_KPRTL_LOCK; /*!< (@ 0x00001A4C) This write-once register is the K_PRTL lock register.
+ When this register is set, K_PRTL cannot
+ be used and a zeroed key will be used instead.
+ The value of this register is saved in the
+ CRYPTOCELL AO power domain. */
+ __IOM uint32_t HOST_IOT_KDR0; /*!< (@ 0x00001A50) This register holds bits 31:0 of K_DR. The value
+ of this register is saved in the CRYPTOCELL
+ AO power domain. Reading from this address
+ returns the K_DR valid status indicating
+ if K_DR is successfully retained. */
+ __OM uint32_t HOST_IOT_KDR1; /*!< (@ 0x00001A54) This register holds bits 63:32 of K_DR. The value
+ of this register is saved in the CRYPTOCELL
+ AO power domain. */
+ __OM uint32_t HOST_IOT_KDR2; /*!< (@ 0x00001A58) This register holds bits 95:64 of K_DR. The value
+ of this register is saved in the CRYPTOCELL
+ AO power domain. */
+ __OM uint32_t HOST_IOT_KDR3; /*!< (@ 0x00001A5C) This register holds bits 127:96 of K_DR. The
+ value of this register is saved in the CRYPTOCELL
+ AO power domain. */
+ __IOM uint32_t HOST_IOT_LCS; /*!< (@ 0x00001A60) Controls lifecycle state (LCS) for CRYPTOCELL
+ subsystem */
+} NRF_CC_HOST_RGF_Type; /*!< Size = 6756 (0x1a64) */
+
+
+
+/* =========================================================================================================================== */
+/* ================ CRYPTOCELL ================ */
+/* =========================================================================================================================== */
+
+
+/**
+ * @brief ARM TrustZone CryptoCell register interface (CRYPTOCELL)
+ */
+
+typedef struct { /*!< (@ 0x5002A000) CRYPTOCELL Structure */
+ __IM uint32_t RESERVED[320];
+ __IOM uint32_t ENABLE; /*!< (@ 0x00000500) Enable CRYPTOCELL subsystem */
+} NRF_CRYPTOCELL_Type; /*!< Size = 1284 (0x504) */
+
+
+/** @} */ /* End of group Device_Peripheral_peripherals */
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Address Map ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup Device_Peripheral_peripheralAddr
+ * @{
+ */
+
+#define NRF_FICR_BASE 0x10000000UL
+#define NRF_UICR_BASE 0x10001000UL
+#define NRF_APPROTECT_BASE 0x40000000UL
+#define NRF_CLOCK_BASE 0x40000000UL
+#define NRF_POWER_BASE 0x40000000UL
+#define NRF_P0_BASE 0x50000000UL
+#define NRF_P1_BASE 0x50000300UL
+#define NRF_RADIO_BASE 0x40001000UL
+#define NRF_UART0_BASE 0x40002000UL
+#define NRF_UARTE0_BASE 0x40002000UL
+#define NRF_SPI0_BASE 0x40003000UL
+#define NRF_SPIM0_BASE 0x40003000UL
+#define NRF_SPIS0_BASE 0x40003000UL
+#define NRF_TWI0_BASE 0x40003000UL
+#define NRF_TWIM0_BASE 0x40003000UL
+#define NRF_TWIS0_BASE 0x40003000UL
+#define NRF_SPI1_BASE 0x40004000UL
+#define NRF_SPIM1_BASE 0x40004000UL
+#define NRF_SPIS1_BASE 0x40004000UL
+#define NRF_TWI1_BASE 0x40004000UL
+#define NRF_TWIM1_BASE 0x40004000UL
+#define NRF_TWIS1_BASE 0x40004000UL
+#define NRF_NFCT_BASE 0x40005000UL
+#define NRF_GPIOTE_BASE 0x40006000UL
+#define NRF_SAADC_BASE 0x40007000UL
+#define NRF_TIMER0_BASE 0x40008000UL
+#define NRF_TIMER1_BASE 0x40009000UL
+#define NRF_TIMER2_BASE 0x4000A000UL
+#define NRF_RTC0_BASE 0x4000B000UL
+#define NRF_TEMP_BASE 0x4000C000UL
+#define NRF_RNG_BASE 0x4000D000UL
+#define NRF_ECB_BASE 0x4000E000UL
+#define NRF_AAR_BASE 0x4000F000UL
+#define NRF_CCM_BASE 0x4000F000UL
+#define NRF_WDT_BASE 0x40010000UL
+#define NRF_RTC1_BASE 0x40011000UL
+#define NRF_QDEC_BASE 0x40012000UL
+#define NRF_COMP_BASE 0x40013000UL
+#define NRF_LPCOMP_BASE 0x40013000UL
+#define NRF_EGU0_BASE 0x40014000UL
+#define NRF_SWI0_BASE 0x40014000UL
+#define NRF_EGU1_BASE 0x40015000UL
+#define NRF_SWI1_BASE 0x40015000UL
+#define NRF_EGU2_BASE 0x40016000UL
+#define NRF_SWI2_BASE 0x40016000UL
+#define NRF_EGU3_BASE 0x40017000UL
+#define NRF_SWI3_BASE 0x40017000UL
+#define NRF_EGU4_BASE 0x40018000UL
+#define NRF_SWI4_BASE 0x40018000UL
+#define NRF_EGU5_BASE 0x40019000UL
+#define NRF_SWI5_BASE 0x40019000UL
+#define NRF_TIMER3_BASE 0x4001A000UL
+#define NRF_TIMER4_BASE 0x4001B000UL
+#define NRF_PWM0_BASE 0x4001C000UL
+#define NRF_PDM_BASE 0x4001D000UL
+#define NRF_ACL_BASE 0x4001E000UL
+#define NRF_NVMC_BASE 0x4001E000UL
+#define NRF_PPI_BASE 0x4001F000UL
+#define NRF_MWU_BASE 0x40020000UL
+#define NRF_PWM1_BASE 0x40021000UL
+#define NRF_PWM2_BASE 0x40022000UL
+#define NRF_SPI2_BASE 0x40023000UL
+#define NRF_SPIM2_BASE 0x40023000UL
+#define NRF_SPIS2_BASE 0x40023000UL
+#define NRF_RTC2_BASE 0x40024000UL
+#define NRF_I2S_BASE 0x40025000UL
+#define NRF_FPU_BASE 0x40026000UL
+#define NRF_USBD_BASE 0x40027000UL
+#define NRF_UARTE1_BASE 0x40028000UL
+#define NRF_QSPI_BASE 0x40029000UL
+#define NRF_CC_HOST_RGF_BASE 0x5002A000UL
+#define NRF_CRYPTOCELL_BASE 0x5002A000UL
+#define NRF_PWM3_BASE 0x4002D000UL
+#define NRF_SPIM3_BASE 0x4002F000UL
+
+/** @} */ /* End of group Device_Peripheral_peripheralAddr */
+
+
+/* =========================================================================================================================== */
+/* ================ Peripheral declaration ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup Device_Peripheral_declaration
+ * @{
+ */
+
+#define NRF_FICR ((NRF_FICR_Type*) NRF_FICR_BASE)
+#define NRF_UICR ((NRF_UICR_Type*) NRF_UICR_BASE)
+#define NRF_APPROTECT ((NRF_APPROTECT_Type*) NRF_APPROTECT_BASE)
+#define NRF_CLOCK ((NRF_CLOCK_Type*) NRF_CLOCK_BASE)
+#define NRF_POWER ((NRF_POWER_Type*) NRF_POWER_BASE)
+#define NRF_P0 ((NRF_GPIO_Type*) NRF_P0_BASE)
+#define NRF_P1 ((NRF_GPIO_Type*) NRF_P1_BASE)
+#define NRF_RADIO ((NRF_RADIO_Type*) NRF_RADIO_BASE)
+#define NRF_UART0 ((NRF_UART_Type*) NRF_UART0_BASE)
+#define NRF_UARTE0 ((NRF_UARTE_Type*) NRF_UARTE0_BASE)
+#define NRF_SPI0 ((NRF_SPI_Type*) NRF_SPI0_BASE)
+#define NRF_SPIM0 ((NRF_SPIM_Type*) NRF_SPIM0_BASE)
+#define NRF_SPIS0 ((NRF_SPIS_Type*) NRF_SPIS0_BASE)
+#define NRF_TWI0 ((NRF_TWI_Type*) NRF_TWI0_BASE)
+#define NRF_TWIM0 ((NRF_TWIM_Type*) NRF_TWIM0_BASE)
+#define NRF_TWIS0 ((NRF_TWIS_Type*) NRF_TWIS0_BASE)
+#define NRF_SPI1 ((NRF_SPI_Type*) NRF_SPI1_BASE)
+#define NRF_SPIM1 ((NRF_SPIM_Type*) NRF_SPIM1_BASE)
+#define NRF_SPIS1 ((NRF_SPIS_Type*) NRF_SPIS1_BASE)
+#define NRF_TWI1 ((NRF_TWI_Type*) NRF_TWI1_BASE)
+#define NRF_TWIM1 ((NRF_TWIM_Type*) NRF_TWIM1_BASE)
+#define NRF_TWIS1 ((NRF_TWIS_Type*) NRF_TWIS1_BASE)
+#define NRF_NFCT ((NRF_NFCT_Type*) NRF_NFCT_BASE)
+#define NRF_GPIOTE ((NRF_GPIOTE_Type*) NRF_GPIOTE_BASE)
+#define NRF_SAADC ((NRF_SAADC_Type*) NRF_SAADC_BASE)
+#define NRF_TIMER0 ((NRF_TIMER_Type*) NRF_TIMER0_BASE)
+#define NRF_TIMER1 ((NRF_TIMER_Type*) NRF_TIMER1_BASE)
+#define NRF_TIMER2 ((NRF_TIMER_Type*) NRF_TIMER2_BASE)
+#define NRF_RTC0 ((NRF_RTC_Type*) NRF_RTC0_BASE)
+#define NRF_TEMP ((NRF_TEMP_Type*) NRF_TEMP_BASE)
+#define NRF_RNG ((NRF_RNG_Type*) NRF_RNG_BASE)
+#define NRF_ECB ((NRF_ECB_Type*) NRF_ECB_BASE)
+#define NRF_AAR ((NRF_AAR_Type*) NRF_AAR_BASE)
+#define NRF_CCM ((NRF_CCM_Type*) NRF_CCM_BASE)
+#define NRF_WDT ((NRF_WDT_Type*) NRF_WDT_BASE)
+#define NRF_RTC1 ((NRF_RTC_Type*) NRF_RTC1_BASE)
+#define NRF_QDEC ((NRF_QDEC_Type*) NRF_QDEC_BASE)
+#define NRF_COMP ((NRF_COMP_Type*) NRF_COMP_BASE)
+#define NRF_LPCOMP ((NRF_LPCOMP_Type*) NRF_LPCOMP_BASE)
+#define NRF_EGU0 ((NRF_EGU_Type*) NRF_EGU0_BASE)
+#define NRF_SWI0 ((NRF_SWI_Type*) NRF_SWI0_BASE)
+#define NRF_EGU1 ((NRF_EGU_Type*) NRF_EGU1_BASE)
+#define NRF_SWI1 ((NRF_SWI_Type*) NRF_SWI1_BASE)
+#define NRF_EGU2 ((NRF_EGU_Type*) NRF_EGU2_BASE)
+#define NRF_SWI2 ((NRF_SWI_Type*) NRF_SWI2_BASE)
+#define NRF_EGU3 ((NRF_EGU_Type*) NRF_EGU3_BASE)
+#define NRF_SWI3 ((NRF_SWI_Type*) NRF_SWI3_BASE)
+#define NRF_EGU4 ((NRF_EGU_Type*) NRF_EGU4_BASE)
+#define NRF_SWI4 ((NRF_SWI_Type*) NRF_SWI4_BASE)
+#define NRF_EGU5 ((NRF_EGU_Type*) NRF_EGU5_BASE)
+#define NRF_SWI5 ((NRF_SWI_Type*) NRF_SWI5_BASE)
+#define NRF_TIMER3 ((NRF_TIMER_Type*) NRF_TIMER3_BASE)
+#define NRF_TIMER4 ((NRF_TIMER_Type*) NRF_TIMER4_BASE)
+#define NRF_PWM0 ((NRF_PWM_Type*) NRF_PWM0_BASE)
+#define NRF_PDM ((NRF_PDM_Type*) NRF_PDM_BASE)
+#define NRF_ACL ((NRF_ACL_Type*) NRF_ACL_BASE)
+#define NRF_NVMC ((NRF_NVMC_Type*) NRF_NVMC_BASE)
+#define NRF_PPI ((NRF_PPI_Type*) NRF_PPI_BASE)
+#define NRF_MWU ((NRF_MWU_Type*) NRF_MWU_BASE)
+#define NRF_PWM1 ((NRF_PWM_Type*) NRF_PWM1_BASE)
+#define NRF_PWM2 ((NRF_PWM_Type*) NRF_PWM2_BASE)
+#define NRF_SPI2 ((NRF_SPI_Type*) NRF_SPI2_BASE)
+#define NRF_SPIM2 ((NRF_SPIM_Type*) NRF_SPIM2_BASE)
+#define NRF_SPIS2 ((NRF_SPIS_Type*) NRF_SPIS2_BASE)
+#define NRF_RTC2 ((NRF_RTC_Type*) NRF_RTC2_BASE)
+#define NRF_I2S ((NRF_I2S_Type*) NRF_I2S_BASE)
+#define NRF_FPU ((NRF_FPU_Type*) NRF_FPU_BASE)
+#define NRF_USBD ((NRF_USBD_Type*) NRF_USBD_BASE)
+#define NRF_UARTE1 ((NRF_UARTE_Type*) NRF_UARTE1_BASE)
+#define NRF_QSPI ((NRF_QSPI_Type*) NRF_QSPI_BASE)
+#define NRF_CC_HOST_RGF ((NRF_CC_HOST_RGF_Type*) NRF_CC_HOST_RGF_BASE)
+#define NRF_CRYPTOCELL ((NRF_CRYPTOCELL_Type*) NRF_CRYPTOCELL_BASE)
+#define NRF_PWM3 ((NRF_PWM_Type*) NRF_PWM3_BASE)
+#define NRF_SPIM3 ((NRF_SPIM_Type*) NRF_SPIM3_BASE)
+
+/** @} */ /* End of group Device_Peripheral_declaration */
+
+
+/* ========================================= End of section using anonymous unions ========================================= */
+#if defined (__CC_ARM)
+ #pragma pop
+#elif defined (__ICCARM__)
+ /* leave anonymous unions enabled */
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+ #pragma clang diagnostic pop
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning restore
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* NRF52840_H */
+
+
+/** @} */ /* End of group nrf52840 */
+
+/** @} */ /* End of group Nordic Semiconductor */
diff --git a/miosix/arch/common/CMSIS/Device/RaspberryPi/RP2040/Include/RP2040.h b/miosix/arch/CMSIS/Device/RaspberryPi/RP2040/Include/RP2040.h
similarity index 98%
rename from miosix/arch/common/CMSIS/Device/RaspberryPi/RP2040/Include/RP2040.h
rename to miosix/arch/CMSIS/Device/RaspberryPi/RP2040/Include/RP2040.h
index 8ff1e4f97..069dbb3b7 100644
--- a/miosix/arch/common/CMSIS/Device/RaspberryPi/RP2040/Include/RP2040.h
+++ b/miosix/arch/CMSIS/Device/RaspberryPi/RP2040/Include/RP2040.h
@@ -72,7 +72,8 @@ typedef enum
ADC_IRQ_FIFO_IRQn = 22, /*!< 22 ADC_IRQ_FIFO */
I2C0_IRQ_IRQn = 23, /*!< 23 I2C0_IRQ */
I2C1_IRQ_IRQn = 24, /*!< 24 I2C1_IRQ */
- RTC_IRQ_IRQn = 25 /*!< 25 RTC_IRQ */
+ RTC_IRQ_IRQn = 25, /*!< 25 RTC_IRQ
+ */
} IRQn_Type;
/* =========================================================================================================================== */
diff --git a/miosix/arch/common/CMSIS/Device/RaspberryPi/RP2040/Include/system_RP2040.h b/miosix/arch/CMSIS/Device/RaspberryPi/RP2040/Include/system_RP2040.h
similarity index 89%
rename from miosix/arch/common/CMSIS/Device/RaspberryPi/RP2040/Include/system_RP2040.h
rename to miosix/arch/CMSIS/Device/RaspberryPi/RP2040/Include/system_RP2040.h
index 30881ccc6..d49fd042e 100644
--- a/miosix/arch/common/CMSIS/Device/RaspberryPi/RP2040/Include/system_RP2040.h
+++ b/miosix/arch/CMSIS/Device/RaspberryPi/RP2040/Include/system_RP2040.h
@@ -36,7 +36,8 @@ extern "C" {
/**
\brief Exception / Interrupt Handler Function Prototype
*/
-typedef void(*VECTOR_TABLE_Type)(void);
+//Miosix has its own interrupt subsystem and doesn't use the CMSIS approach
+//typedef void(*VECTOR_TABLE_Type)(void);
/**
\brief System Clock Frequency (Core Clock)
@@ -48,7 +49,7 @@ extern uint32_t SystemCoreClock;
Initialize the System and update the SystemCoreClock variable.
*/
-extern void SystemInit (void);
+//extern void SystemInit (void);
/**
@@ -56,7 +57,7 @@ extern void SystemInit (void);
Updates the SystemCoreClock with current core Clock retrieved from cpu registers.
*/
-extern void SystemCoreClockUpdate (void);
+//extern void SystemCoreClockUpdate (void);
#ifdef __cplusplus
}
diff --git a/miosix/arch/common/CMSIS/Device/RaspberryPi/RP2040/Source/system_RP2040.c b/miosix/arch/CMSIS/Device/RaspberryPi/RP2040/Source/system_RP2040.c
similarity index 94%
rename from miosix/arch/common/CMSIS/Device/RaspberryPi/RP2040/Source/system_RP2040.c
rename to miosix/arch/CMSIS/Device/RaspberryPi/RP2040/Source/system_RP2040.c
index aa1810949..0d8b49663 100644
--- a/miosix/arch/common/CMSIS/Device/RaspberryPi/RP2040/Source/system_RP2040.c
+++ b/miosix/arch/CMSIS/Device/RaspberryPi/RP2040/Source/system_RP2040.c
@@ -37,13 +37,13 @@ uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock)*/
/*---------------------------------------------------------------------------
System Core Clock function
*---------------------------------------------------------------------------*/
-void SystemCoreClockUpdate (void)
-{
-}
+// void SystemCoreClockUpdate (void)
+// {
+// }
/*---------------------------------------------------------------------------
System initialization function
*---------------------------------------------------------------------------*/
-void __attribute__((constructor)) SystemInit (void)
-{
-}
+// void __attribute__((constructor)) SystemInit (void)
+// {
+// }
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x6.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x6.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x6.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x6.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x8.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x8.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x8.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f030x8.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f030xc.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f030xc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f030xc.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f030xc.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f031x6.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f031x6.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f031x6.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f031x6.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f038xx.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f038xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f038xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f038xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f042x6.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f048xx.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f048xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f048xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f048xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f051x8.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f051x8.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f051x8.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f051x8.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f058xx.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f058xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f058xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f058xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f070x6.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f070x6.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f070x6.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f070x6.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f070xb.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f070xb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f070xb.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f070xb.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f071xb.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f071xb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f071xb.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f071xb.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f072xb.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f078xx.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f078xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f078xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f078xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f091xc.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f091xc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f091xc.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f091xc.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f098xx.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f098xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f098xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f098xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/stm32f0xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/LICENSE.md b/miosix/arch/CMSIS/Device/ST/STM32F0xx/LICENSE.md
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/LICENSE.md
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/LICENSE.md
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Release_Notes.html b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Release_Notes.html
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/Release_Notes.html
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/Release_Notes.html
diff --git a/miosix/arch/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.cpp b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.cpp
new file mode 100644
index 000000000..1c2ac1eb3
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32F0xx/Source/Templates/system_stm32f0xx.cpp
@@ -0,0 +1,252 @@
+/**
+ ******************************************************************************
+ * @file system_stm32f0xx.c
+ * @author MCD Application Team
+ * @brief CMSIS Cortex-M0 Device Peripheral Access Layer System Source File.
+ *
+ * 1. This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32f0xx.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.
+ *
+ *
+ ******************************************************************************
+ * @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.
+ *
+ ******************************************************************************
+ */
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32f0xx_system
+ * @{
+ */
+
+/** @addtogroup STM32F0xx_System_Private_Includes
+ * @{
+ */
+
+#include "board_settings.h"
+// By redman: was #include "stm32f0xx.h", but the specific chip is #defined in
+// arch_registers_impl.h
+#include "interfaces/arch_registers.h"
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F0xx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F0xx_System_Private_Defines
+ * @{
+ */
+
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE ((uint32_t)8000000) /*!< Default value of the Internal oscillator in Hz.
+ This value can be provided and adapted by the user application. */
+#endif /* HSI_VALUE */
+
+#if !defined (HSI48_VALUE)
+#define HSI48_VALUE ((uint32_t)48000000) /*!< Default value of the HSI48 Internal oscillator in Hz.
+ This value can be provided and adapted by the user application. */
+#endif /* HSI48_VALUE */
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F0xx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F0xx_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 = miosix::cpuFrequency;
+
+const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
+const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F0xx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F0xx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system
+ * @param None
+ * @retval None
+ */
+void SystemInit(void)
+{
+ /* NOTE :SystemInit(): This function is called at startup just after reset and
+ before branch to main program. This call is made inside
+ the "startup_stm32f0xx.s" file.
+ User can setups the default system clock (System clock source, PLL Multiplier
+ and Divider factors, AHB/APBx prescalers and Flash settings).
+ */
+}
+
+/**
+ * @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/divided by the PLL factors.
+ *
+ * - If SYSCLK source is HSI48, SystemCoreClock will contain the HSI48_VALUE(***)
+ *
+ * (*) HSI_VALUE is a constant defined in stm32f0xx_hal_conf.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 stm32f0xx_hal_conf.h file (its value
+ * depends on the application requirements), user has to ensure that HSE_VALUE
+ * is same as the real frequency of the crystal used. Otherwise, this function
+ * may have wrong result.
+ *
+ * (***) HSI48_VALUE is a constant defined in stm32f0xx_hal_conf.h file (default value
+ * 48 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * - 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 = 0, pllmull = 0, pllsource = 0, predivfactor = 0;
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ tmp = RCC->CFGR & RCC_CFGR_SWS;
+
+ switch (tmp)
+ {
+ case RCC_CFGR_SWS_HSI: /* HSI used as system clock */
+ SystemCoreClock = HSI_VALUE;
+ break;
+ case RCC_CFGR_SWS_HSE: /* HSE used as system clock */
+ SystemCoreClock = miosix::hseFrequency;
+ break;
+ case RCC_CFGR_SWS_PLL: /* PLL used as system clock */
+ /* Get PLL clock source and multiplication factor ----------------------*/
+ pllmull = RCC->CFGR & RCC_CFGR_PLLMUL;
+ pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
+ pllmull = ( pllmull >> 18) + 2;
+ predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1;
+
+ if (pllsource == RCC_CFGR_PLLSRC_HSE_PREDIV)
+ {
+ /* HSE used as PLL clock source : SystemCoreClock = HSE/PREDIV * PLLMUL */
+ // Miosix: first multiply and then divide to fix numerical precision
+ SystemCoreClock = (miosix::hseFrequency*pllmull)/predivfactor;
+ }
+#if defined(STM32F042x6) || defined(STM32F048xx) || defined(STM32F071xB) || defined(STM32F072xB) || defined(STM32F078xx) || defined(STM32F091xC) || defined(STM32F098xx)
+ else if (pllsource == RCC_CFGR_PLLSRC_HSI48_PREDIV)
+ {
+ /* HSI48 used as PLL clock source : SystemCoreClock = HSI48/PREDIV * PLLMUL */
+ // Miosix: first multiply and then divide to fix numerical precision
+ SystemCoreClock = (HSI48_VALUE*pllmull)/predivfactor;
+ }
+#endif /* STM32F042x6 || STM32F048xx || STM32F071xB || STM32F072xB || STM32F078xx || STM32F091xC || STM32F098xx */
+ else
+ {
+#if defined(STM32F042x6) || defined(STM32F048xx) || defined(STM32F070x6) \
+ || defined(STM32F078xx) || defined(STM32F071xB) || defined(STM32F072xB) \
+ || defined(STM32F070xB) || defined(STM32F091xC) || defined(STM32F098xx) || defined(STM32F030xC)
+ /* HSI used as PLL clock source : SystemCoreClock = HSI/PREDIV * PLLMUL */
+ // Miosix: first multiply and then divide to fix numerical precision
+ SystemCoreClock = (HSI_VALUE*pllmull)/predivfactor;
+#else
+ /* HSI used as PLL clock source : SystemCoreClock = HSI/2 * PLLMUL */
+ // Miosix: first multiply and then divide to fix numerical precision
+ SystemCoreClock = (HSI_VALUE*pllmull)/2;
+#endif /* STM32F042x6 || STM32F048xx || STM32F070x6 ||
+ STM32F071xB || STM32F072xB || STM32F078xx || STM32F070xB ||
+ STM32F091xC || STM32F098xx || STM32F030xC */
+ }
+ break;
+ default: /* HSI used as system clock */
+ SystemCoreClock = HSI_VALUE;
+ break;
+ }
+ /* Compute HCLK clock frequency ----------------*/
+ /* Get HCLK prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
+ /* HCLK clock frequency */
+ SystemCoreClock >>= tmp;
+}
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F0xx/miosix_patches.patch b/miosix/arch/CMSIS/Device/ST/STM32F0xx/miosix_patches.patch
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F0xx/miosix_patches.patch
rename to miosix/arch/CMSIS/Device/ST/STM32F0xx/miosix_patches.patch
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xb.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xb.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xb.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xe.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xe.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xe.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f100xe.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f101x6.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f101x6.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f101x6.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f101x6.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xb.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xb.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xb.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xe.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xe.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xe.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xe.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xg.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xg.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xg.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f101xg.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f102x6.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f102x6.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f102x6.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f102x6.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f102xb.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f102xb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f102xb.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f102xb.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f103x6.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f103x6.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f103x6.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f103x6.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xb.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xe.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xg.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xg.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xg.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f103xg.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f105xc.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f105xc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f105xc.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f105xc.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f107xc.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f107xc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f107xc.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f107xc.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f1xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/License.md b/miosix/arch/CMSIS/Device/ST/STM32F1xx/License.md
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/License.md
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/License.md
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Release_Notes.html b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Release_Notes.html
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/Release_Notes.html
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/Release_Notes.html
diff --git a/miosix/arch/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.cpp b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.cpp
new file mode 100644
index 000000000..4c2963601
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32F1xx/Source/Templates/system_stm32f1xx.cpp
@@ -0,0 +1,659 @@
+
+//
+// This file has been modified by TFT!!! Changes are highlighted with "By TFT:"
+//
+
+/**
+ ******************************************************************************
+ * @file system_stm32f10x.c
+ * @author MCD Application Team
+ * @version V3.5.0
+ * @date 11-March-2011
+ * @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_stm32f10x_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_stm32f10x_xx.s" file, to
+ * configure the system clock before to branch to main program.
+ *
+ * 3. If the system clock source selected by user fails to startup, the SystemInit()
+ * function will do nothing and HSI still used as system clock source. User can
+ * add some code to deal with this issue inside the SetSysClock() function.
+ *
+ * 4. The default value of HSE crystal is set to 8 MHz (or 25 MHz, depedning on
+ * the product used), refer to "HSE_VALUE" define in "stm32f10x.h" file.
+ * 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
+ *
+ * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
+ * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
+ * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
+ * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
+ * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
+ * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
+ *
+ * © COPYRIGHT 2011 STMicroelectronics
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32f10x_system
+ * @{
+ */
+
+/** @addtogroup STM32F10x_System_Private_Includes
+ * @{
+ */
+
+//By TFT: was #include "stm32f10x.h"
+#include "interfaces/arch_registers.h"
+#include "board_settings.h"
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F10x_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F10x_System_Private_Defines
+ * @{
+ */
+
+/*!< Uncomment the line corresponding to the desired System clock (SYSCLK)
+ frequency (after reset the HSI is used as SYSCLK source)
+
+ IMPORTANT NOTE:
+ ==============
+ 1. After each device reset the HSI is used as System clock source.
+
+ 2. Please make sure that the selected System clock doesn't exceed your device's
+ maximum frequency.
+
+ 3. If none of the define below is enabled, the HSI is used as System clock
+ source.
+
+ 4. The System clock configuration functions provided within this file assume that:
+ - For Low, Medium and High density Value line devices an external 8MHz
+ crystal is used to drive the System clock.
+ - For Low, Medium and High density devices an external 8MHz crystal is
+ used to drive the System clock.
+ - For Connectivity line devices an external 25MHz crystal is used to drive
+ the System clock.
+ If you are using different crystal you have to adapt those functions accordingly.
+ */
+
+//By TFT: Definition moved to board_settings.h to allow easily changing clock frequency
+// Since Miosix 3 the following constants are used instead:
+// - oscillatorType (OscillatorType::HSI or OscillatorType::HSE)
+// - hseFrequency (in Hz)
+// - cpuFrequency (in Hz)
+// cpuFrequency equal to HSI_VALUE or hseFrequency (depending on
+// oscillatorType) will disable the PLL
+#if 0
+#if defined (STM32F10X_LD_VL) || (defined STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
+/* #define SYSCLK_FREQ_HSE HSE_VALUE */
+#define SYSCLK_FREQ_24MHz 24000000
+#else
+/* #define SYSCLK_FREQ_HSE HSE_VALUE */
+/* #define SYSCLK_FREQ_24MHz 24000000 */
+/* #define SYSCLK_FREQ_36MHz 36000000 */
+/* #define SYSCLK_FREQ_48MHz 48000000 */
+/* #define SYSCLK_FREQ_56MHz 56000000 */
+#define SYSCLK_FREQ_72MHz 72000000
+#endif
+#endif
+
+/*!< Uncomment the following line if you need to use external SRAM mounted
+ on STM3210E-EVAL board (STM32 High density and XL-density devices) or on
+ STM32100E-EVAL board (STM32 High-density value line devices) as data memory */
+#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)
+//By TFT: Miosix uses the __ENABLE_XRAM macro to tell the startup code it wants XRAM
+#ifdef __ENABLE_XRAM
+#define DATA_IN_ExtSRAM
+#endif //__ENABLE_XRAM
+#endif
+
+/*!< Uncomment the following line if you need to relocate your vector Table in
+ Internal SRAM. */
+/* #define VECT_TAB_SRAM */
+#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F10x_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F10x_System_Private_Variables
+ * @{
+ */
+
+/*******************************************************************************
+* Clock Definitions
+*******************************************************************************/
+
+// Miosix begin
+// These defines used to be in stm32f10x.h.
+//#if !defined HSE_VALUE
+// #ifdef STM32F10X_CL
+// #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
+// #else
+// #define HSE_VALUE ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
+// #endif /* STM32F10X_CL */
+//#endif /* HSE_VALUE */
+// Since Miosix 3.0 there is no default for HSE_VALUE anymore, it must be defined in board_settings.h
+
+#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500) /*!< Time out for HSE start up */
+#define HSI_VALUE ((uint32_t)8000000) /*!< Value of the Internal oscillator in Hz*/
+// Miosix end
+
+uint32_t SystemCoreClock = miosix::cpuFrequency; /*!< System Clock Frequency (Core Clock) */
+
+const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F10x_System_Private_FunctionPrototypes
+ * @{
+ */
+
+/*static*/ void SetSysClock(void);
+
+#ifdef DATA_IN_ExtSRAM
+ static void SystemInit_ExtMemCtl(void);
+#endif /* DATA_IN_ExtSRAM */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F10x_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)
+{
+ /* Reset the RCC clock configuration to the default reset state(for debug purpose) */
+ /* Set HSION bit */
+ RCC->CR |= (uint32_t)0x00000001;
+
+ /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
+#ifndef STM32F10X_CL
+ RCC->CFGR &= (uint32_t)0xF8FF0000;
+#else
+ RCC->CFGR &= (uint32_t)0xF0FF0000;
+#endif /* STM32F10X_CL */
+
+ /* Reset HSEON, CSSON and PLLON bits */
+ RCC->CR &= (uint32_t)0xFEF6FFFF;
+
+ /* Reset HSEBYP bit */
+ RCC->CR &= (uint32_t)0xFFFBFFFF;
+
+ /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
+ RCC->CFGR &= (uint32_t)0xFF80FFFF;
+
+#ifdef STM32F10X_CL
+ /* Reset PLL2ON and PLL3ON bits */
+ RCC->CR &= (uint32_t)0xEBFFFFFF;
+
+ /* Disable all interrupts and clear pending bits */
+ RCC->CIR = 0x00FF0000;
+
+ /* Reset CFGR2 register */
+ RCC->CFGR2 = 0x00000000;
+#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
+ /* Disable all interrupts and clear pending bits */
+ RCC->CIR = 0x009F0000;
+
+ /* Reset CFGR2 register */
+ RCC->CFGR2 = 0x00000000;
+#else
+ /* Disable all interrupts and clear pending bits */
+ RCC->CIR = 0x009F0000;
+#endif /* STM32F10X_CL */
+
+#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)
+ #ifdef DATA_IN_ExtSRAM
+ SystemInit_ExtMemCtl();
+ #endif /* DATA_IN_ExtSRAM */
+#endif
+
+ /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */
+ /* Configure the Flash Latency cycles and enable prefetch buffer */
+ SetSysClock();
+
+#ifdef VECT_TAB_SRAM
+ SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
+#else
+ SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
+#endif
+}
+
+/**
+ * @brief Update SystemCoreClock variable according to Clock Register Values.
+ * The SystemCoreClock variable contains the core clock (HCLK), it can
+ * be used by the user application to setup the SysTick timer or configure
+ * other parameters.
+ *
+ * @note Each time the core clock (HCLK) changes, this function must be called
+ * to update SystemCoreClock variable value. Otherwise, any configuration
+ * based on this variable will be incorrect.
+ *
+ * @note - The system frequency computed by this function is not the real
+ * frequency in the chip. It is calculated based on the predefined
+ * constant and the selected clock source:
+ *
+ * - If SYSCLK source is 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, depedning 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 = 0, pllmull = 0, pllsource = 0;
+
+#ifdef STM32F10X_CL
+ uint32_t prediv1source = 0, prediv1factor = 0, prediv2factor = 0, pll2mull = 0;
+#endif /* STM32F10X_CL */
+
+#if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
+ uint32_t prediv1factor = 0;
+#endif /* STM32F10X_LD_VL or STM32F10X_MD_VL or STM32F10X_HD_VL */
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ tmp = RCC->CFGR & RCC_CFGR_SWS;
+
+ switch (tmp)
+ {
+ case 0x00: /* HSI used as system clock */
+ SystemCoreClock = HSI_VALUE;
+ break;
+ case 0x04: /* HSE used as system clock */
+ SystemCoreClock = miosix::hseFrequency;
+ break;
+ case 0x08: /* PLL used as system clock */
+
+ /* Get PLL clock source and multiplication factor ----------------------*/
+ pllmull = RCC->CFGR & RCC_CFGR_PLLMULL;
+ pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
+
+#ifndef STM32F10X_CL
+ pllmull = ( pllmull >> 18) + 2;
+
+ if (pllsource == 0x00)
+ {
+ /* HSI oscillator clock divided by 2 selected as PLL clock entry */
+ SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
+ }
+ else
+ {
+ #if defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
+ prediv1factor = (RCC->CFGR2 & RCC_CFGR2_PREDIV1) + 1;
+ /* HSE oscillator clock selected as PREDIV1 clock entry */
+ SystemCoreClock = (miosix::hseFrequency / 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 = (miosix::hseFrequency >> 1) * pllmull;
+ }
+ else
+ {
+ SystemCoreClock = miosix::hseFrequency * pllmull;
+ }
+ #endif
+ }
+#else
+ pllmull = pllmull >> 18;
+
+ if (pllmull != 0x0D)
+ {
+ pllmull += 2;
+ }
+ else
+ { /* PLL multiplication factor = PLL input clock * 6.5 */
+ pllmull = 13 / 2;
+ }
+
+ if (pllsource == 0x00)
+ {
+ /* HSI oscillator clock divided by 2 selected as PLL clock entry */
+ SystemCoreClock = (HSI_VALUE >> 1) * 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) + 1;
+
+ if (prediv1source == 0)
+ {
+ /* HSE oscillator clock selected as PREDIV1 clock entry */
+ SystemCoreClock = (miosix::hseFrequency / prediv1factor) * pllmull;
+ }
+ else
+ {/* PLL2 clock selected as PREDIV1 clock entry */
+
+ /* Get PREDIV2 division factor and PLL2 multiplication factor */
+ prediv2factor = ((RCC->CFGR2 & RCC_CFGR2_PREDIV2) >> 4) + 1;
+ pll2mull = ((RCC->CFGR2 & RCC_CFGR2_PLL2MUL) >> 8 ) + 2;
+ SystemCoreClock = (((miosix::hseFrequency / prediv2factor) * pll2mull) / prediv1factor) * pllmull;
+ }
+ }
+#endif /* STM32F10X_CL */
+ break;
+
+ default:
+ SystemCoreClock = HSI_VALUE;
+ break;
+ }
+
+ /* Compute HCLK clock frequency ----------------*/
+ /* Get HCLK prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
+ /* HCLK clock frequency */
+ SystemCoreClock >>= tmp;
+}
+
+/**
+ * @brief Sets System clock frequency to miosix::cpuFrequency and configure
+ * HCLK, PCLK2 and PCLK1 prescalers.
+ * @note This function should be used only after reset.
+ * @param None
+ * @retval None
+ */
+void SetSysClock(void)
+{
+ uint32_t StartUpCounter = 0;
+ (void)StartUpCounter;
+
+ static_assert(miosix::oscillatorType==miosix::OscillatorType::HSE
+ || miosix::oscillatorType==miosix::OscillatorType::HSI,
+ "Oscillator type unsupported");
+ static_assert(!(miosix::oscillatorType==miosix::OscillatorType::HSI
+ && miosix::cpuFrequency>36000000),
+ "sysclk is capped to 36MHz when running on HSI");
+ static_assert(miosix::oscillatorType!=miosix::OscillatorType::HSE
+ || miosix::hseFrequency>1000000,
+ "Unlikely HSE frequency");
+ static_assert(miosix::cpuFrequency==HSI_VALUE
+ || miosix::cpuFrequency==miosix::hseFrequency
+ || miosix::cpuFrequency==24000000
+ || miosix::cpuFrequency==36000000
+ || miosix::cpuFrequency==48000000
+ || miosix::cpuFrequency==56000000
+ || miosix::cpuFrequency==72000000,
+ "sysclk frequency unsupported");
+ unsigned int oscFreq=HSI_VALUE;
+ if(miosix::oscillatorType==miosix::OscillatorType::HSE) //By TFT
+ {
+ /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/
+ /* Enable HSE */
+ RCC->CR |= ((uint32_t)RCC_CR_HSEON);
+
+ /* Wait till HSE is ready and if Time out is reached exit */
+ unsigned int HSEStatus;
+ do
+ {
+ HSEStatus = RCC->CR & RCC_CR_HSERDY;
+ StartUpCounter++;
+ } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
+
+ if ((RCC->CR & RCC_CR_HSERDY) != RESET) oscFreq=miosix::hseFrequency;
+ else {
+ // Ohmygod HSE failed to start up! What do we do now?
+ return; // Nothing I guess?
+ }
+ } else {
+ // HSI
+ oscFreq=HSI_VALUE;
+ }
+
+#if !defined STM32F10X_LD_VL && !defined STM32F10X_MD_VL && !defined STM32F10X_HD_VL
+ /* Enable Prefetch Buffer */
+ FLASH->ACR |= FLASH_ACR_PRFTBE;
+
+ // Configure Flash wait states
+ unsigned int flashLatency;
+ if(miosix::cpuFrequency<=24000000) flashLatency=0;
+ else if(miosix::cpuFrequency<=48000000) flashLatency=1;
+ else flashLatency=2;
+ //NOTE: the value of the constant FLASH_ACR_LATENCY_0 changed from meaning
+ //"0 wait states" to meaning "bit 0", thus 1 wait states, so don't use it!
+ FLASH->ACR = (FLASH->ACR & ~FLASH_ACR_LATENCY_Msk) | (flashLatency<CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
+
+ /* PCLK2 = HCLK */
+ RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
+
+ /* PCLK1 = HCLK or HCLK/2 (must not exceed 36MHz) */
+ if(miosix::cpuFrequency<=36000000) RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1;
+ else RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
+
+ if(oscFreq==miosix::cpuFrequency && miosix::oscillatorType==miosix::OscillatorType::HSE)
+ {
+ /* Select HSE as system clock source */
+ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
+ RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSE;
+
+ /* Wait till HSE is used as system clock source */
+ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x04)
+ {
+ }
+ return;
+ } else if(oscFreq==miosix::cpuFrequency && miosix::oscillatorType==miosix::OscillatorType::HSI) {
+ // Nothing to do here, it's the default after reset
+ return;
+ }
+ // Otherwise we need to configure the PLL
+
+ unsigned int pllmull;
+
+ if(miosix::cpuFrequency==24000000) pllmull=RCC_CFGR_PLLMULL6;
+ else if(miosix::cpuFrequency==36000000) pllmull=RCC_CFGR_PLLMULL9;
+ else if(miosix::cpuFrequency==48000000) pllmull=RCC_CFGR_PLLMULL6;
+ else if(miosix::cpuFrequency==56000000) pllmull=RCC_CFGR_PLLMULL7;
+ else /*if(miosix::cpuFrequency==72000000)*/ pllmull=RCC_CFGR_PLLMULL9;
+#ifdef STM32F10X_CL
+ if(oscillatorType==OscillatorType::HSE)
+ {
+ unsigned int prediv1;
+ if(miosix::cpuFrequency<=36000000) prediv1=RCC_CFGR2_PREDIV1_DIV10;
+ else prediv1=RCC_CFGR2_PREDIV1_DIV5;
+ /* Configure PLLs ------------------------------------------------------*/
+ /* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */
+ /* PREDIV1 configuration: PREDIV1CLK = PLL2 / prediv1 = 4/8 MHz */
+ RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |
+ RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);
+ RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 |
+ RCC_CFGR2_PREDIV1SRC_PLL2 | prediv1);
+
+ /* Enable PLL2 */
+ RCC->CR |= RCC_CR_PLL2ON;
+ /* Wait till PLL2 is ready */
+ while((RCC->CR & RCC_CR_PLL2RDY) == 0)
+ {
+ }
+ }
+
+ /* PLL configuration: PLLCLK = PREDIV1 * pllmull = sysclk MHz */
+ RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL);
+ RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | pllmull);
+#else
+ unsigned int pllxtpre;
+ if(miosix::cpuFrequency<=36000000) pllxtpre=RCC_CFGR_PLLXTPRE;
+ else pllxtpre=0;
+ // PLL configuration: = (HSE / x) * pllmull = sysclk MHz
+ // x is 2 if pllxtpre==RCC_CFGR_PLLXTPRE else 1
+ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
+ RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | pllxtpre | pllmull);
+#endif /* STM32F10X_CL */
+
+ //By TFT
+ if(miosix::oscillatorType==miosix::OscillatorType::HSI) RCC->CFGR &= ~RCC_CFGR_PLLSRC;
+
+ /* Enable PLL */
+ RCC->CR |= RCC_CR_PLLON;
+
+ /* Wait till PLL is ready */
+ while((RCC->CR & RCC_CR_PLLRDY) == 0)
+ {
+ }
+
+ /* Select PLL as system clock source */
+ RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | RCC_CFGR_SW_PLL;
+
+ /* Wait till PLL is used as system clock source */
+ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
+ {
+ }
+}
+
+/**
+ * @brief Setup the external memory controller. Called in startup_stm32f10x.s
+ * before jump to __main
+ * @param None
+ * @retval None
+ */
+#ifdef DATA_IN_ExtSRAM
+/**
+ * @brief Setup the external memory controller.
+ * Called in startup_stm32f10x_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)
+{
+/*!< 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 = 0x00000114;
+ RCC_SYNC();
+ /* Enable GPIOD, GPIOE, GPIOF and GPIOG clocks */
+ RCC->APB2ENR = 0x000001E0;
+ RCC_SYNC();
+/* --------------- SRAM Data lines, NOE and NWE configuration ---------------*/
+/*---------------- SRAM Address lines configuration -------------------------*/
+/*---------------- NOE and NWE configuration --------------------------------*/
+/*---------------- NE3 configuration ----------------------------------------*/
+/*---------------- NBL0, NBL1 configuration ---------------------------------*/
+
+ GPIOD->CRL = 0x44BB44BB;
+ GPIOD->CRH = 0xBBBBBBBB;
+
+ GPIOE->CRL = 0xB44444BB;
+ GPIOE->CRH = 0xBBBBBBBB;
+
+ GPIOF->CRL = 0x44BBBBBB;
+ GPIOF->CRH = 0xBBBB4444;
+
+ GPIOG->CRL = 0x44BBBBBB;
+ //Bug fixed by TFT: PG12 is connected to /CS of the display, and lacks a
+ //pull-up, so it must be asserted high to avoid a conflict on the data lines
+ //GPIOG->CRH = 0x44444B44;
+ GPIOG->CRH = 0x444B4B44;
+ GPIOG->BSRR = GPIO_BSRR_BS12;
+
+/*---------------- FSMC Configuration ---------------------------------------*/
+/*---------------- Enable FSMC Bank1_SRAM Bank ------------------------------*/
+
+ FSMC_Bank1->BTCR[4] = 0x00001011;
+ FSMC_Bank1->BTCR[5] = 0x00000200;
+
+ //By TFT: If using is62wv51216bll (low power RAM, 55ns access time)
+ //instead of is61wv51216bll (10ns fast RAM) use these settings
+ //read still takes 6 cycles, but write takes 5 cycles
+ //(yes, the way the FSMC registers are defined in stm32f10x.h sucks...)
+ //FSMC_Bank1->BTCR[4] = 0x00005011;//This is BCR3
+ //FSMC_Bank1->BTCR[5] = 0x00000200;//This is BTR3
+ //FSMC_Bank1E->BWTR[4] = 0x00000300;//This is BWTR3
+}
+#endif /* DATA_IN_ExtSRAM */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+/******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F1xx/miosix_patches.patch b/miosix/arch/CMSIS/Device/ST/STM32F1xx/miosix_patches.patch
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F1xx/miosix_patches.patch
rename to miosix/arch/CMSIS/Device/ST/STM32F1xx/miosix_patches.patch
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/stm32f205xx.h b/miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/stm32f205xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/stm32f205xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/stm32f205xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/stm32f207xx.h b/miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/stm32f207xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/stm32f207xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/stm32f207xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/stm32f215xx.h b/miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/stm32f215xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/stm32f215xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/stm32f215xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/stm32f217xx.h b/miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/stm32f217xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/stm32f217xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/stm32f217xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h b/miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/stm32f2xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h b/miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F2xx/Include/system_stm32f2xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F2xx/License.md b/miosix/arch/CMSIS/Device/ST/STM32F2xx/License.md
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F2xx/License.md
rename to miosix/arch/CMSIS/Device/ST/STM32F2xx/License.md
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Release_Notes.html b/miosix/arch/CMSIS/Device/ST/STM32F2xx/Release_Notes.html
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F2xx/Release_Notes.html
rename to miosix/arch/CMSIS/Device/ST/STM32F2xx/Release_Notes.html
diff --git a/miosix/arch/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.cpp b/miosix/arch/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.cpp
new file mode 100644
index 000000000..84ec013cd
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32F2xx/Source/Templates/system_stm32f2xx.cpp
@@ -0,0 +1,471 @@
+/**
+ ******************************************************************************
+ * @file system_stm32f2xx.c
+ * @author MCD Application Team
+ * @brief CMSIS Cortex-M3 Device Peripheral Access Layer System Source File.
+ *
+ * This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32f2xx.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.
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2016 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32f2xx_system
+ * @{
+ */
+
+/** @addtogroup STM32F2xx_System_Private_Includes
+ * @{
+ */
+
+//By TFT: was #include "stm32f4xx_hal.h", but the specific chip is #defined in
+//arch_registers_impl.h
+#include "board_settings.h"
+#include "interfaces/arch_registers.h"
+//By TFT: was in the old stm32f4xx.h
+#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)
+
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F2xx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F2xx_System_Private_Defines
+ * @{
+ */
+/************************* Miscellaneous Configuration ************************/
+/*!< Uncomment the following line if you need to use external SRAM mounted
+ on STM322xG_EVAL board as data memory */
+//By TFT: Miosix uses the __ENABLE_XRAM macro to tell the startup code it wants XRAM
+//additionally, other boards may have the RAM connected in other ways, so
+//use this code only for the STM3220G_EVAL
+#if defined(__ENABLE_XRAM) && defined(_BOARD_STM3220G_EVAL)
+#define DATA_IN_ExtSRAM
+#endif //__ENABLE_XRAM
+
+/* 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 */
+
+//By TFT -- begin
+// the smartwatch has a bootloader
+#ifdef _BOARD_SONY_NEWMAN
+#define USER_VECT_TAB_ADDRESS
+#define VECT_TAB_BASE_ADDRESS FLASH_BASE
+#define VECT_TAB_OFFSET 0x40000
+#endif //_BOARD_SONY_NEWMAN
+//By TFT -- end
+
+/******************************************************************************/
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F2xx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F2xx_System_Private_Variables
+ * @{
+ */
+
+/* This variable can be 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 = miosix::cpuFrequency;
+const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
+const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F2xx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+static void SetSysClock(void);
+#ifdef DATA_IN_ExtSRAM
+ static void SystemInit_ExtMemCtl(void);
+#endif /* DATA_IN_ExtSRAM */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F2xx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system
+ * Initialize the Embedded Flash Interface, the PLL and update the
+ * SystemFrequency variable.
+ * @param None
+ * @retval None
+ */
+void SystemInit(void)
+{
+#ifdef DATA_IN_ExtSRAM
+ SystemInit_ExtMemCtl();
+#endif /* DATA_IN_ExtSRAM */
+
+ /* Configure the System clock source, PLL Multiplier and Divider factors,
+ AHB/APBx prescalers and Flash settings ----------------------------------*/
+ SetSysClock();
+
+ /* 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/divided by the PLL factors.
+ *
+ * (*) HSI_VALUE is a constant defined in stm32f2xx_hal_conf.h file (default value
+ * 16 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (**) HSE_VALUE is a constant defined in stm32f2xx_hal_conf.h file (its value
+ * depends on the application requirements), 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 = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ tmp = RCC->CFGR & RCC_CFGR_SWS;
+
+ switch (tmp)
+ {
+ case 0x00: /* HSI used as system clock source */
+ SystemCoreClock = HSI_VALUE;
+ break;
+ case 0x04: /* HSE used as system clock source */
+ SystemCoreClock = miosix::hseFrequency;
+ break;
+ case 0x08: /* PLL used as system clock source */
+
+ /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
+ SYSCLK = PLL_VCO / PLL_P
+ */
+ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
+ pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
+
+ if (pllsource != 0)
+ {
+ /* HSE used as PLL clock source */
+ pllvco = (miosix::hseFrequency / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
+ }
+ else
+ {
+ /* HSI used as PLL clock source */
+ pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
+ }
+
+ pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
+ SystemCoreClock = pllvco/pllp;
+ break;
+ default:
+ SystemCoreClock = HSI_VALUE;
+ break;
+ }
+ /* Compute HCLK frequency --------------------------------------------------*/
+ /* Get HCLK prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
+ /* HCLK frequency */
+ SystemCoreClock >>= tmp;
+}
+
+//By TFT -- begin
+// this was backported from an older version. Now this code seems to be
+// moved in a function called HAL_something...
+/**
+ * @brief Configures the System clock source, PLL Multiplier and Divider factors,
+ * AHB/APBx prescalers and Flash settings
+ * @Note This function should be called only once the RCC clock configuration
+ * is reset to the default reset state (done in SystemInit() function).
+ * @param None
+ * @retval None
+ */
+static void SetSysClock(void)
+{
+/******************************************************************************/
+/* PLL (clocked by HSE) used as System clock source */
+/******************************************************************************/
+ uint32_t StartUpCounter = 0, HSEStatus = 0;
+
+ //By TFT -- begin
+ // this was backported from an older version. Now this code seems to be
+ // moved in a function called HAL_something...
+ /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
+ /* SYSCLK = PLL_VCO / PLL_P */
+ /* USB OTG FS, SDIO and RNG Clock = PLL_VCO / PLLQ */
+ static_assert(miosix::oscillatorType==miosix::OscillatorType::HSE,
+ "Unsupported oscillator type");
+ constexpr unsigned int PLL_M=miosix::hseFrequency/1000000;
+ static_assert(miosix::cpuFrequency==120000000,
+ "Unsupported sysclk frequency");
+ constexpr unsigned int PLL_N=240;
+ constexpr unsigned int PLL_P=2;
+ constexpr unsigned int PLL_Q=5;
+ //By TFT -- end
+
+ /* Enable HSE */
+ RCC->CR |= ((uint32_t)RCC_CR_HSEON);
+
+ /* Wait till HSE is ready and if Time out is reached exit */
+ do
+ {
+ HSEStatus = RCC->CR & RCC_CR_HSERDY;
+ StartUpCounter++;
+ } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
+
+ if ((RCC->CR & RCC_CR_HSERDY) != RESET)
+ {
+ HSEStatus = (uint32_t)0x01;
+ }
+ else
+ {
+ HSEStatus = (uint32_t)0x00;
+ }
+
+ if (HSEStatus == (uint32_t)0x01)
+ {
+ #ifdef _BOARD_SONY_NEWMAN
+ //By TFT: We don't know how the clock is configured by the bootloader,
+ //so better switch to the HSE and disable the PLL.
+ unsigned int temp=RCC->CFGR;
+ temp &= ~RCC_CFGR_SW; /* Clear SW[1:0] bits */
+ temp |= RCC_CFGR_SW_0; /* Enable HSE as system clock */
+ RCC->CFGR=temp;
+ while((RCC->CFGR & RCC_CFGR_SWS)!=RCC_CFGR_SWS_0) ;
+ RCC->CR &= ~ RCC_CR_PLLON;
+ #endif //_BOARD_SONY_NEWMAN
+
+ /* HCLK = SYSCLK / 1*/
+ RCC->CFGR |= RCC_CFGR_HPRE_DIV1;
+
+ /* PCLK2 = HCLK / 2*/
+ RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
+
+ /* PCLK1 = HCLK / 4*/
+ RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;
+
+ /* Configure the main PLL */
+ RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
+ (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);
+
+ /* Enable the main PLL */
+ RCC->CR |= RCC_CR_PLLON;
+
+ /* Wait till the main PLL is ready */
+ while((RCC->CR & RCC_CR_PLLRDY) == 0)
+ {
+ }
+
+ /* Configure Flash prefetch, Instruction cache, Data cache and wait state */
+#ifndef _BOARD_SONY_NEWMAN
+ FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_LATENCY_3WS;
+#else //_BOARD_SONY_NEWMAN
+ //By TFT: Three wait states seem to make it unstable (crashing) when CPU load is high
+ FLASH->ACR = FLASH_ACR_PRFTEN | FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_LATENCY_7WS;
+#endif //_BOARD_SONY_NEWMAN
+
+ /* Select the main PLL as system clock source */
+ RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | RCC_CFGR_SW_PLL;
+
+ /* Wait till the main PLL is used as system clock source */
+ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL)
+ {
+ }
+ }
+ else
+ { /* If HSE fails to start-up, the application will have wrong clock
+ configuration. User can add here some code to deal with this error */
+ }
+
+}
+// By TFT -- end
+
+#ifdef DATA_IN_ExtSRAM
+/**
+ * @brief Setup the external memory controller.
+ * Called in startup_stm32f2xx.s before jump to main.
+ * This function configures the external SRAM mounted on STM322xG_EVAL board
+ * This SRAM will be used as program data memory (including heap and stack).
+ * @param None
+ * @retval None
+ */
+void SystemInit_ExtMemCtl(void)
+{
+/*-- GPIOs Configuration -----------------------------------------------------*/
+ /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */
+ RCC->AHB1ENR |= 0x00000078;
+ RCC_SYNC();
+
+ /* Connect PDx pins to FSMC Alternate function */
+ GPIOD->AFR[0] = 0x00CCC0CC;
+ GPIOD->AFR[1] = 0xCCCCCCCC;
+ /* Configure PDx pins in Alternate function mode */
+ GPIOD->MODER = 0xAAAA0A8A;
+ /* Configure PDx pins speed to 100 MHz */
+ GPIOD->OSPEEDR = 0xFFFF0FCF;
+ /* Configure PDx pins Output type to push-pull */
+ GPIOD->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PDx pins */
+ GPIOD->PUPDR = 0x00000000;
+
+ /* Connect PEx pins to FSMC Alternate function */
+ GPIOE->AFR[0] = 0xC00CC0CC;
+ GPIOE->AFR[1] = 0xCCCCCCCC;
+ /* Configure PEx pins in Alternate function mode */
+ GPIOE->MODER = 0xAAAA828A;
+ /* Configure PEx pins speed to 100 MHz */
+ GPIOE->OSPEEDR = 0xFFFFC3CF;
+ /* Configure PEx pins Output type to push-pull */
+ GPIOE->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PEx pins */
+ GPIOE->PUPDR = 0x00000000;
+
+ /* Connect PFx pins to FSMC Alternate function */
+ GPIOF->AFR[0] = 0x00CCCCCC;
+ GPIOF->AFR[1] = 0xCCCC0000;
+ /* Configure PFx pins in Alternate function mode */
+ GPIOF->MODER = 0xAA000AAA;
+ /* Configure PFx pins speed to 100 MHz */
+ GPIOF->OSPEEDR = 0xFF000FFF;
+ /* Configure PFx pins Output type to push-pull */
+ GPIOF->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PFx pins */
+ GPIOF->PUPDR = 0x00000000;
+
+ /* Connect PGx pins to FSMC Alternate function */
+ GPIOG->AFR[0] = 0x00CCCCCC;
+ GPIOG->AFR[1] = 0x000000C0;
+ /* Configure PGx pins in Alternate function mode */
+ GPIOG->MODER = 0x00085AAA;
+ /* Configure PGx pins speed to 100 MHz */
+ GPIOG->OSPEEDR = 0x000CAFFF;
+ /* Configure PGx pins Output type to push-pull */
+ GPIOG->OTYPER = 0x00000000;
+ /* No pull-up, pull-down for PGx pins */
+ GPIOG->PUPDR = 0x00000000;
+
+/*--FSMC Configuration -------------------------------------------------------*/
+ /* Enable the FSMC interface clock */
+ RCC->AHB3ENR |= 0x00000001;
+ RCC_SYNC();
+ /* Configure and enable Bank1_SRAM2 */
+ FSMC_Bank1->BTCR[2] = 0x00001011;
+ FSMC_Bank1->BTCR[3] = 0x00000201;
+ FSMC_Bank1E->BWTR[2] = 0x0FFFFFFF;
+}
+#endif /* DATA_IN_ExtSRAM */
+
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F2xx/miosix_patches.patch b/miosix/arch/CMSIS/Device/ST/STM32F2xx/miosix_patches.patch
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F2xx/miosix_patches.patch
rename to miosix/arch/CMSIS/Device/ST/STM32F2xx/miosix_patches.patch
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f301x8.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f301x8.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f301x8.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f301x8.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f302x8.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f302x8.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f302x8.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f302x8.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xc.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xe.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xe.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xe.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f302xe.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f303x8.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f303x8.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f303x8.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f303x8.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f303xc.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f303xc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f303xc.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f303xc.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f303xe.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f303xe.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f303xe.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f303xe.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f318xx.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f318xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f318xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f318xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f328xx.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f328xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f328xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f328xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f334x8.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f334x8.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f334x8.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f334x8.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f358xx.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f358xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f358xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f358xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f373xc.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f373xc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f373xc.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f373xc.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f378xx.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f378xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f378xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f378xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f398xx.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f398xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f398xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f398xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/stm32f3xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/system_stm32f3xx.h b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/system_stm32f3xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Include/system_stm32f3xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Include/system_stm32f3xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/LICENSE.md b/miosix/arch/CMSIS/Device/ST/STM32F3xx/LICENSE.md
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/LICENSE.md
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/LICENSE.md
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Release_Notes.html b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Release_Notes.html
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/Release_Notes.html
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/Release_Notes.html
diff --git a/miosix/arch/CMSIS/Device/ST/STM32F3xx/Source/Templates/system_stm32f3xx.cpp b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Source/Templates/system_stm32f3xx.cpp
new file mode 100644
index 000000000..3542d8892
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32F3xx/Source/Templates/system_stm32f3xx.cpp
@@ -0,0 +1,430 @@
+//
+// NOTE: this file contains some modifications by Silvano Seva (silseva) to make
+// available system clock frequencies greater than 8MHz
+//
+
+/**
+ ******************************************************************************
+ * @file system_stm32f3xx.c
+ * @author MCD Application Team
+ * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.
+ *
+ * 1. This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32f3xx.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_stm32f3xx.s" file, to
+ * configure the system clock before to branch to main program.
+ *
+ * 3. This file configures the system clock as follows:
+ *=============================================================================
+ * Supported STM32F3xx device
+ *-----------------------------------------------------------------------------
+ * System Clock source | HSI
+ *-----------------------------------------------------------------------------
+ * SYSCLK(Hz) | 8000000
+ *-----------------------------------------------------------------------------
+ * HCLK(Hz) | 8000000
+ *-----------------------------------------------------------------------------
+ * AHB Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * APB2 Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * APB1 Prescaler | 1
+ *-----------------------------------------------------------------------------
+ * USB Clock | DISABLE
+ *-----------------------------------------------------------------------------
+ *=============================================================================
+ ******************************************************************************
+ * @attention
+ *
+ * © Copyright (c) 2016 STMicroelectronics.
+ * All rights reserved.
+ *
+ * This software component is licensed by ST under BSD 3-Clause license,
+ * the "License"; You may not use this file except in compliance with the
+ * License. You may obtain a copy of the License at:
+ * opensource.org/licenses/BSD-3-Clause
+ *
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32f3xx_system
+ * @{
+ */
+
+/** @addtogroup STM32F3xx_System_Private_Includes
+ * @{
+ */
+#include "board_settings.h"
+//By Silvano Seva: was #include "stm32f3xx.h"
+#include "interfaces/arch_registers.h"
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F3xx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F3xx_System_Private_Defines
+ * @{
+ */
+
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE ((uint32_t)8000000) /*!< Default value of the Internal oscillator in Hz.
+ This value can be provided and adapted by the user application. */
+#endif /* HSI_VALUE */
+
+// Added by silseva
+#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)
+
+/*!< Uncomment the following line if you need to relocate your vector Table in
+ Internal SRAM. */
+/* #define VECT_TAB_SRAM */
+#define VECT_TAB_OFFSET 0x0 /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F3xx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F3xx_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 there is no need to
+ call the 2 first functions listed above, since SystemCoreClock variable is
+ updated automatically.
+ */
+
+uint32_t SystemCoreClock = miosix::cpuFrequency; /*!< System Clock Frequency (Core Clock) */
+
+const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
+const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F3xx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+// Added by silseva
+static void SetSysClock(void);
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F3xx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system
+ * @param None
+ * @retval None
+ */
+void SystemInit(void)
+{
+ // Added by silseva
+ /* Reset the RCC clock configuration to the default reset state(for debug purpose) */
+ /* Set HSION bit */
+ RCC->CR |= (uint32_t)0x00000001;
+
+ /* Reset all RCC_CFGR register */
+ RCC->CFGR = (uint32_t)0x00000000;
+
+ /* Reset HSEON, CSSON and PLLON bits */
+ RCC->CR &= (uint32_t)0xFEF6FFFF;
+
+ /* Reset HSEBYP bit */
+ RCC->CR &= (uint32_t)0xFFFBFFFF;
+
+ /* Disable all interrupts and clear pending bits */
+ RCC->CIR = 0x009F0000;
+
+ /* Clear PREDIV bits */
+ RCC->CFGR2 &= ~RCC_CFGR2_PREDIV;
+
+ /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */
+ /* Configure the Flash Latency cycles and enable prefetch buffer */
+ SetSysClock();
+ // end addition
+
+/* FPU settings --------------------------------------------------------------*/
+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+ SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
+#endif
+
+#ifdef VECT_TAB_SRAM
+ SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
+#else
+ SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
+#endif
+}
+
+/**
+ * @brief Update SystemCoreClock variable according to Clock Register Values.
+ * The SystemCoreClock variable contains the core clock (HCLK), it can
+ * be used by the user application to setup the SysTick timer or configure
+ * other parameters.
+ *
+ * @note Each time the core clock (HCLK) changes, this function must be called
+ * to update SystemCoreClock variable value. Otherwise, any configuration
+ * based on this variable will be incorrect.
+ *
+ * @note - The system frequency computed by this function is not the real
+ * frequency in the chip. It is calculated based on the predefined
+ * constant and the selected clock source:
+ *
+ * - If SYSCLK source is 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/divided by the PLL factors.
+ *
+ * (*) HSI_VALUE is a constant defined in stm32f3xx_hal.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 stm32f3xx_hal.h file (default value
+ * 8 MHz), user has to ensure that HSE_VALUE is same as the real
+ * frequency of the crystal used. Otherwise, this function may
+ * have wrong result.
+ *
+ * - The result of this function could be not correct when using fractional
+ * value for HSE crystal.
+ *
+ * @param None
+ * @retval None
+ */
+void SystemCoreClockUpdate (void)
+{
+ uint32_t tmp = 0, pllmull = 0, pllsource = 0, predivfactor = 0;
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ tmp = RCC->CFGR & RCC_CFGR_SWS;
+
+ switch (tmp)
+ {
+ case RCC_CFGR_SWS_HSI: /* HSI used as system clock */
+ SystemCoreClock = HSI_VALUE;
+ break;
+ case RCC_CFGR_SWS_HSE: /* HSE used as system clock */
+ SystemCoreClock = miosix::hseFrequency;
+ break;
+ case RCC_CFGR_SWS_PLL: /* PLL used as system clock */
+ /* Get PLL clock source and multiplication factor ----------------------*/
+ pllmull = RCC->CFGR & RCC_CFGR_PLLMUL;
+ pllsource = RCC->CFGR & RCC_CFGR_PLLSRC;
+ pllmull = ( pllmull >> 18) + 2;
+
+#if defined (STM32F302xE) || defined (STM32F303xE) || defined (STM32F398xx)
+ predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1;
+ if (pllsource == RCC_CFGR_PLLSRC_HSE_PREDIV)
+ {
+ /* HSE oscillator clock selected as PREDIV1 clock entry */
+ SystemCoreClock = (miosix::hseFrequency / predivfactor) * pllmull;
+ }
+ else
+ {
+ /* HSI oscillator clock selected as PREDIV1 clock entry */
+ SystemCoreClock = (HSI_VALUE / predivfactor) * pllmull;
+ }
+#else
+ if (pllsource == RCC_CFGR_PLLSRC_HSI_DIV2)
+ {
+ /* HSI oscillator clock divided by 2 selected as PLL clock entry */
+ SystemCoreClock = (HSI_VALUE >> 1) * pllmull;
+ }
+ else
+ {
+ predivfactor = (RCC->CFGR2 & RCC_CFGR2_PREDIV) + 1;
+ /* HSE oscillator clock selected as PREDIV1 clock entry */
+ SystemCoreClock = (miosix::hseFrequency / predivfactor) * pllmull;
+ }
+#endif /* STM32F302xE || STM32F303xE || STM32F398xx */
+ break;
+ default: /* HSI used as system clock */
+ SystemCoreClock = HSI_VALUE;
+ break;
+ }
+ /* Compute HCLK clock frequency ----------------*/
+ /* Get HCLK prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
+ /* HCLK clock frequency */
+ SystemCoreClock >>= tmp;
+}
+
+// Added by silseva
+/**
+ * @brief Configures the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers.
+ * @param None
+ * @retval None
+ */
+void SetSysClock(void)
+{
+ uint32_t StartUpCounter = 0;
+ (void)StartUpCounter;
+
+ static_assert(miosix::oscillatorType==miosix::OscillatorType::HSE
+ || miosix::oscillatorType==miosix::OscillatorType::HSI,
+ "Oscillator type unsupported");
+ static_assert(!(miosix::oscillatorType==miosix::OscillatorType::HSI
+ && miosix::cpuFrequency>56000000),
+ "sysclk is capped to 56MHz when running on HSI");
+ static_assert(miosix::oscillatorType!=miosix::OscillatorType::HSE
+ || miosix::hseFrequency>1000000,
+ "Unlikely HSE frequency");
+ constexpr unsigned int oscFreq=
+ miosix::oscillatorType==miosix::OscillatorType::HSE ?
+ miosix::hseFrequency : HSI_VALUE;
+ if constexpr(miosix::oscillatorType==miosix::OscillatorType::HSE)
+ {
+ /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration ---------------------------*/
+ /* Enable HSE */
+ RCC->CR |= ((uint32_t)RCC_CR_HSEON);
+
+ /* Wait till HSE is ready and if Time out is reached exit */
+ unsigned int HSEStatus;
+ do
+ {
+ HSEStatus = RCC->CR & RCC_CR_HSERDY;
+ StartUpCounter++;
+ } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
+
+ // If HSE failed to start up do nothing and return
+ if ((RCC->CR & RCC_CR_HSERDY) == 0) return;
+ }
+
+ /* Enable Prefetch Buffer */
+ FLASH->ACR |= FLASH_ACR_PRFTBE;
+
+ // Configure Flash wait states
+ unsigned int flashLatency;
+ if(miosix::cpuFrequency<=24000000) flashLatency=0;
+ else if(miosix::cpuFrequency<=48000000) flashLatency=1;
+ else flashLatency=2;
+ //NOTE: the value of the constant FLASH_ACR_LATENCY_0 changed from meaning
+ //"0 wait states" to meaning "bit 0", thus 1 wait states, so don't use it!
+ FLASH->ACR = (FLASH->ACR & ~FLASH_ACR_LATENCY_Msk) | (flashLatency<CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
+
+ /* PCLK2 = HCLK */
+ RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE2_DIV1;
+
+ /* PCLK1 = HCLK or HCLK/2 (must not exceed 36MHz) */
+ if(miosix::cpuFrequency<=36000000) RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV1;
+ else RCC->CFGR |= (uint32_t)RCC_CFGR_PPRE1_DIV2;
+
+ if(oscFreq==miosix::cpuFrequency && miosix::oscillatorType==miosix::OscillatorType::HSE)
+ {
+ /* Select HSE as system clock source */
+ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
+ RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSE;
+
+ /* Wait till HSE is used as system clock source */
+ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x04)
+ {
+ }
+ return;
+ } else if(oscFreq==miosix::cpuFrequency && miosix::oscillatorType==miosix::OscillatorType::HSI) {
+ // Nothing to do here, it's the default after reset
+ return;
+ }
+ // Otherwise we need to configure the PLL
+
+ constexpr unsigned int div=miosix::cpuFrequency<=36000000 ? 2:1;
+ #if defined (STM32F302xE) || defined (STM32F303xE) || defined (STM32F398xx)
+ // PREDIV is after PLLSRC mux
+ RCC->CFGR2&=~RCC_CFGR2_PREDIV_Msk;
+ RCC->CFGR2|=(div-1)<CFGR2&=~RCC_CFGR2_PREDIV_Msk;
+ RCC->CFGR2|=(div-1)<=2 && pllmul<=16,"Unsupported sysclk");
+ RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMUL));
+ RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | ((pllmul-2)<CFGR &= ~RCC_CFGR_PLLSRC;
+
+ /* Enable PLL */
+ RCC->CR |= RCC_CR_PLLON;
+
+ /* Wait till PLL is ready */
+ while((RCC->CR & RCC_CR_PLLRDY) == 0)
+ {
+ }
+
+ /* Select PLL as system clock source */
+ RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | RCC_CFGR_SW_PLL;
+
+ /* Wait till PLL is used as system clock source */
+ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08)
+ {
+ }
+}
+
+// end addition
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
+
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F3xx/miosix_patches.patch b/miosix/arch/CMSIS/Device/ST/STM32F3xx/miosix_patches.patch
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F3xx/miosix_patches.patch
rename to miosix/arch/CMSIS/Device/ST/STM32F3xx/miosix_patches.patch
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xc.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xc.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xc.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xc.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xe.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xe.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xe.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f401xe.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f405xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f405xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f405xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f405xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f410cx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f410cx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f410cx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f410cx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f410rx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f410rx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f410rx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f410rx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f410tx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f410tx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f410tx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f410tx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f411xe.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f411xe.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f411xe.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f411xe.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f412cx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f412cx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f412cx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f412cx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f412rx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f412rx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f412rx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f412rx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f412vx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f412vx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f412vx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f412vx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f412zx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f412zx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f412zx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f412zx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f413xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f413xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f413xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f413xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f415xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f415xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f415xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f415xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f417xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f417xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f417xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f417xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f423xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f423xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f423xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f423xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f427xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f427xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f427xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f427xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f429xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f429xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f429xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f429xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f437xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f437xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f437xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f437xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f439xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f439xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f439xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f439xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f446xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f446xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f446xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f446xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f469xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f469xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f469xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f469xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f479xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f479xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f479xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f479xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/stm32f4xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/LICENSE.md b/miosix/arch/CMSIS/Device/ST/STM32F4xx/LICENSE.md
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/LICENSE.md
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/LICENSE.md
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Release_Notes.html b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Release_Notes.html
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/Release_Notes.html
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/Release_Notes.html
diff --git a/miosix/arch/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.cpp b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.cpp
new file mode 100644
index 000000000..25be23d82
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.cpp
@@ -0,0 +1,659 @@
+/**
+ ******************************************************************************
+ * @file system_stm32f4xx.c
+ * @author MCD Application Team
+ * @version V2.0.0
+ * @date 18-February-2014
+ * @brief CMSIS Cortex-M4 Device Peripheral Access Layer System Source File.
+ *
+ * This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32f4xx.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.
+ *
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * © COPYRIGHT 2014 STMicroelectronics
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. Neither the name of STMicroelectronics nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32f4xx_system
+ * @{
+ */
+
+/** @addtogroup STM32F4xx_System_Private_Includes
+ * @{
+ */
+
+//By TFT: was #include "stm32f4xx_hal.h", but the specific chip is #defined in
+//arch_registers_impl.h
+#include "board_settings.h"
+#include "interfaces/arch_registers.h"
+//By TFT: the .h file for the chip used to define this
+#define HSI_VALUE 16000000
+//By TFT: was in the old stm32f4xx.h
+#define HSE_STARTUP_TIMEOUT ((uint16_t)0x0500)
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_Defines
+ * @{
+ */
+
+/************************* Miscellaneous Configuration ************************/
+/*!< Uncomment the following line if you need to use external SRAM or SDRAM mounted
+ on STM324xG_EVAL/STM324x9I_EVAL boards as data memory */
+// #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
+// /* #define DATA_IN_ExtSRAM */
+// #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
+//
+// #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
+// /* #define DATA_IN_ExtSDRAM */
+// #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
+//
+// #if defined(DATA_IN_ExtSRAM) && defined(DATA_IN_ExtSDRAM)
+// #error "Please select DATA_IN_ExtSRAM or DATA_IN_ExtSDRAM "
+// #endif /* DATA_IN_ExtSRAM && DATA_IN_ExtSDRAM */
+//
+// /*!< Uncomment the following line if you need to relocate your vector Table in
+// Internal SRAM. */
+// /* #define VECT_TAB_SRAM */
+// #define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
+// This value must be a multiple of 0x200. */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_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.
+ */
+//By TFT: we increase the clock BEFORE initializing .data and .bss!
+uint32_t SystemCoreClock = miosix::cpuFrequency;
+const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+static void SetSysClock(void);
+// #if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
+// static void SystemInit_ExtMemCtl(void);
+// #endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F4xx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system
+ * Initialize the FPU setting, vector table location and External memory
+ * configuration.
+ * @param None
+ * @retval None
+ */
+void SystemInit(void)
+{
+ /* FPU settings ------------------------------------------------------------*/
+ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+ SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
+ #else
+ #error "FPU disabled!" //By TFT: added a check to be really sure the FPU is on
+ #endif
+
+ /* Reset the RCC clock configuration to the default reset state ------------*/
+ /* Set HSION bit */
+ RCC->CR |= (uint32_t)0x00000001;
+
+ /* Reset CFGR register */
+ RCC->CFGR = 0x00000000;
+
+ /* Reset HSEON, CSSON and PLLON bits */
+ RCC->CR &= (uint32_t)0xFEF6FFFF;
+
+ /* Reset PLLCFGR register */
+ RCC->PLLCFGR = 0x24003010;
+
+ /* Reset HSEBYP bit */
+ RCC->CR &= (uint32_t)0xFFFBFFFF;
+
+ /* Disable all interrupts */
+ RCC->CIR = 0x00000000;
+
+// #if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
+// SystemInit_ExtMemCtl();
+// #endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
+
+ /* Configure the System clock source, PLL Multiplier and Divider factors,
+ AHB/APBx prescalers and Flash settings ----------------------------------*/
+ SetSysClock();
+
+ /* Configure the Vector Table location add offset address ------------------*/
+// #ifdef VECT_TAB_SRAM
+// SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
+// #else
+// SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
+// #endif
+}
+
+/**
+ * @brief Update SystemCoreClock variable according to Clock Register Values.
+ * The SystemCoreClock variable contains the core clock (HCLK), it can
+ * be used by the user application to setup the SysTick timer or configure
+ * other parameters.
+ *
+ * @note Each time the core clock (HCLK) changes, this function must be called
+ * to update SystemCoreClock variable value. Otherwise, any configuration
+ * based on this variable will be incorrect.
+ *
+ * @note - The system frequency computed by this function is not the real
+ * frequency in the chip. It is calculated based on the predefined
+ * constant and the selected clock source:
+ *
+ * - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
+ *
+ * - If SYSCLK source is HSE, SystemCoreClock will contain the hseFrequency(**)
+ *
+ * - If SYSCLK source is PLL, SystemCoreClock will contain the hseFrequency(**)
+ * or HSI_VALUE(*) multiplied/divided by the PLL factors.
+ *
+ * (*) HSI_VALUE is a constant defined in stm32f4xx_hal_conf.h file (default value
+ * 16 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (**) hseFrequency is a constant defined in board_settings.h file (its value
+ * depends on the application requirements), user has to ensure that hseFrequency
+ * 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 = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ tmp = RCC->CFGR & RCC_CFGR_SWS;
+
+ switch (tmp)
+ {
+ case 0x00: /* HSI used as system clock source */
+ SystemCoreClock = HSI_VALUE;
+ break;
+ case 0x04: /* HSE used as system clock source */
+ SystemCoreClock = miosix::hseFrequency;
+ break;
+ case 0x08: /* PLL used as system clock source */
+
+ /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
+ SYSCLK = PLL_VCO / PLL_P
+ */
+ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
+ pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
+
+ if (pllsource != 0)
+ {
+ /* HSE used as PLL clock source */
+ pllvco = (miosix::hseFrequency / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
+ }
+ else
+ {
+ /* HSI used as PLL clock source */
+ pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
+ }
+
+ pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
+ SystemCoreClock = pllvco/pllp;
+ break;
+ default:
+ SystemCoreClock = HSI_VALUE;
+ break;
+ }
+ /* Compute HCLK frequency --------------------------------------------------*/
+ /* Get HCLK prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
+ /* HCLK frequency */
+ SystemCoreClock >>= tmp;
+}
+
+//By TFT -- begin
+// this was backported from an older version. Now this code seems to be
+// moved in a function called HAL_something...
+/**
+ * @brief Configures the System clock source, PLL Multiplier and Divider factors,
+ * AHB/APBx prescalers and Flash settings
+ * @Note This function should be called only once the RCC clock configuration
+ * is reset to the default reset state (done in SystemInit() function).
+ * @param None
+ * @retval None
+ */
+static void SetSysClock(void)
+{
+/******************************************************************************/
+/* PLL (clocked by HSE) used as System clock source */
+/******************************************************************************/
+ uint32_t StartUpCounter = 0, HSEStatus = 0;
+
+ // By TFT -- begin
+ // this was backported from an older version. Now this code seems to be
+ // moved in a function called HAL_something...
+ static_assert(miosix::oscillatorType==miosix::OscillatorType::HSE,
+ "Unsupported oscillator type");
+ constexpr unsigned int PLL_M=miosix::hseFrequency/1000000;
+ constexpr unsigned int sysclkMhz=miosix::cpuFrequency/1000000;
+ static_assert(sysclkMhz==180 || sysclkMhz==168 || sysclkMhz==100
+ || sysclkMhz==84,"Unsupported sysclk frequency");
+ constexpr unsigned int PLL_P=sysclkMhz<100 ? 4 : 2;
+ constexpr unsigned int PLL_N=sysclkMhz*PLL_P;
+ unsigned int PLL_Q;
+ if(sysclkMhz==180) PLL_Q=8; // 48MHz output will be 45MHz
+ else if(sysclkMhz==100) PLL_Q=5; // 48MHz output will be 40MHz
+ else PLL_Q=PLL_N/48;
+ // By TFT -- end
+
+ /* Enable HSE */
+ RCC->CR |= ((uint32_t)RCC_CR_HSEON);
+
+ /* Wait till HSE is ready and if Time out is reached exit */
+ do
+ {
+ HSEStatus = RCC->CR & RCC_CR_HSERDY;
+ StartUpCounter++;
+ } while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));
+
+ if ((RCC->CR & RCC_CR_HSERDY) != RESET)
+ {
+ HSEStatus = (uint32_t)0x01;
+ }
+ else
+ {
+ HSEStatus = (uint32_t)0x00;
+ }
+
+ if (HSEStatus == (uint32_t)0x01)
+ {
+ /* Select regulator voltage output Scale 1 mode, System frequency up to 168 MHz */
+ RCC->APB1ENR |= RCC_APB1ENR_PWREN;
+ RCC_SYNC();
+ //NOTE: this is a 1-bit field in stm32f405/407, and a 2-bit field in stm32f42x
+ //but in both cases the PWR_CR_VOS mask sets both bits to get the highest scaling
+ PWR->CR |= PWR_CR_VOS;
+
+ #if defined(STM32F401xC) || defined(STM32F401xE) || defined(STM32F411xE)
+ //STM32F401/411 run up to 84/100Mhz but busses require less prescaling
+ RCC->CFGR |= RCC_CFGR_HPRE_DIV1; /* HCLK = SYSCLK / 1*/
+ RCC->CFGR |= RCC_CFGR_PPRE2_DIV1; /* PCLK2 = HCLK / 1*/
+ RCC->CFGR |= RCC_CFGR_PPRE1_DIV2; /* PCLK1 = HCLK / 2*/
+ #else
+ //STM32F07/415/429/469 run up to 168/180MHz and busses require more prescaling
+ RCC->CFGR |= RCC_CFGR_HPRE_DIV1; /* HCLK = SYSCLK / 1*/
+ RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; /* PCLK2 = HCLK / 2*/
+ RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; /* PCLK1 = HCLK / 4*/
+ #endif
+
+ /* Configure the main PLL */
+ RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
+ (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);
+
+ /* Enable the main PLL */
+ RCC->CR |= RCC_CR_PLLON;
+
+ #ifdef PWR_CR_ODEN
+ if constexpr(sysclkMhz>168)
+ {
+ //NOTE: stm32f42x can run up to 180MHz but require the regulator to switch
+ //to "overdrive mode". Stm32f405/7 don't have these registers but can't run
+ //at 180MHz anyway
+ PWR->CR |= PWR_CR_ODEN;
+ while((PWR->CSR & PWR_CSR_ODRDY)==0) ;
+ PWR->CR |= PWR_CR_ODSWEN;
+ while((PWR->CSR & PWR_CSR_ODSWRDY)==0) ;
+ }
+ #endif
+
+ /* Wait till the main PLL is ready */
+ while((RCC->CR & RCC_CR_PLLRDY) == 0)
+ {
+ }
+
+ /* Configure Flash prefetch, Instruction cache, Data cache and wait state */
+ /* NOTE: this mapping is valid for VDD from 2.7 to 3.6V, see RM0090 */
+ unsigned int flashLatency;
+ if constexpr(sysclkMhz>150) flashLatency = FLASH_ACR_LATENCY_5WS;
+ else if constexpr(sysclkMhz>120) flashLatency = FLASH_ACR_LATENCY_4WS;
+ else if constexpr(sysclkMhz>90) flashLatency = FLASH_ACR_LATENCY_3WS;
+ else if constexpr(sysclkMhz>60) flashLatency = FLASH_ACR_LATENCY_2WS;
+ else if constexpr(sysclkMhz>30) flashLatency = FLASH_ACR_LATENCY_1WS;
+ else flashLatency = FLASH_ACR_LATENCY_0WS;
+ FLASH->ACR = FLASH_ACR_ICEN | FLASH_ACR_DCEN | flashLatency;
+
+ /* Select the main PLL as system clock source */
+ RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | RCC_CFGR_SW_PLL;
+
+ /* Wait till the main PLL is used as system clock source */
+ while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL)
+ {
+ }
+ }
+ else
+ { /* If HSE fails to start-up, the application will have wrong clock
+ configuration. User can add here some code to deal with this error */
+ }
+
+}
+// By TFT -- end
+
+// #if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)
+// /**
+// * @brief Setup the external memory controller.
+// * Called in startup_stm32f4xx.s before jump to main.
+// * This function configures the external memories (SRAM/SDRAM)
+// * This SRAM/SDRAM will be used as program data memory (including heap and stack).
+// * @param None
+// * @retval None
+// */
+// #error Not dead code
+// void SystemInit_ExtMemCtl(void)
+// {
+// #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
+// #if defined (DATA_IN_ExtSDRAM)
+// register uint32_t tmpreg = 0, timeout = 0xFFFF;
+// //By TFT: added volatile otherwise GCC removes the delay loop, but why is there a delay
+// //loop in the first place? TODO
+// volatile register uint32_t index;
+//
+// /* Enable GPIOC, GPIOD, GPIOE, GPIOF, GPIOG, GPIOH and GPIOI interface
+// clock */
+// RCC->AHB1ENR |= 0x000001F8;
+// RCC_SYNC();
+//
+// /* Connect PDx pins to FMC Alternate function */
+// GPIOD->AFR[0] = 0x000000CC;
+// GPIOD->AFR[1] = 0xCC000CCC;
+// /* Configure PDx pins in Alternate function mode */
+// GPIOD->MODER = 0xA02A000A;
+// /* Configure PDx pins speed to 50 MHz */
+// GPIOD->OSPEEDR = 0xA02A000A;
+// /* Configure PDx pins Output type to push-pull */
+// GPIOD->OTYPER = 0x00000000;
+// /* No pull-up, pull-down for PDx pins */
+// GPIOD->PUPDR = 0x00000000;
+//
+// /* Connect PEx pins to FMC Alternate function */
+// GPIOE->AFR[0] = 0xC00000CC;
+// GPIOE->AFR[1] = 0xCCCCCCCC;
+// /* Configure PEx pins in Alternate function mode */
+// GPIOE->MODER = 0xAAAA800A;
+// /* Configure PEx pins speed to 50 MHz */
+// GPIOE->OSPEEDR = 0xAAAA800A;
+// /* Configure PEx pins Output type to push-pull */
+// GPIOE->OTYPER = 0x00000000;
+// /* No pull-up, pull-down for PEx pins */
+// GPIOE->PUPDR = 0x00000000;
+//
+// /* Connect PFx pins to FMC Alternate function */
+// GPIOF->AFR[0] = 0xCCCCCCCC;
+// GPIOF->AFR[1] = 0xCCCCCCCC;
+// /* Configure PFx pins in Alternate function mode */
+// GPIOF->MODER = 0xAA800AAA;
+// /* Configure PFx pins speed to 50 MHz */
+// GPIOF->OSPEEDR = 0xAA800AAA;
+// /* Configure PFx pins Output type to push-pull */
+// GPIOF->OTYPER = 0x00000000;
+// /* No pull-up, pull-down for PFx pins */
+// GPIOF->PUPDR = 0x00000000;
+//
+// /* Connect PGx pins to FMC Alternate function */
+// GPIOG->AFR[0] = 0xCCCCCCCC;
+// GPIOG->AFR[1] = 0xCCCCCCCC;
+// /* Configure PGx pins in Alternate function mode */
+// GPIOG->MODER = 0xAAAAAAAA;
+// /* Configure PGx pins speed to 50 MHz */
+// GPIOG->OSPEEDR = 0xAAAAAAAA;
+// /* Configure PGx pins Output type to push-pull */
+// GPIOG->OTYPER = 0x00000000;
+// /* No pull-up, pull-down for PGx pins */
+// GPIOG->PUPDR = 0x00000000;
+//
+// /* Connect PHx pins to FMC Alternate function */
+// GPIOH->AFR[0] = 0x00C0CC00;
+// GPIOH->AFR[1] = 0xCCCCCCCC;
+// /* Configure PHx pins in Alternate function mode */
+// GPIOH->MODER = 0xAAAA08A0;
+// /* Configure PHx pins speed to 50 MHz */
+// GPIOH->OSPEEDR = 0xAAAA08A0;
+// /* Configure PHx pins Output type to push-pull */
+// GPIOH->OTYPER = 0x00000000;
+// /* No pull-up, pull-down for PHx pins */
+// GPIOH->PUPDR = 0x00000000;
+//
+// /* Connect PIx pins to FMC Alternate function */
+// GPIOI->AFR[0] = 0xCCCCCCCC;
+// GPIOI->AFR[1] = 0x00000CC0;
+// /* Configure PIx pins in Alternate function mode */
+// GPIOI->MODER = 0x0028AAAA;
+// /* Configure PIx pins speed to 50 MHz */
+// GPIOI->OSPEEDR = 0x0028AAAA;
+// /* Configure PIx pins Output type to push-pull */
+// GPIOI->OTYPER = 0x00000000;
+// /* No pull-up, pull-down for PIx pins */
+// GPIOI->PUPDR = 0x00000000;
+//
+// /*-- FMC Configuration ------------------------------------------------------*/
+// /* Enable the FMC interface clock */
+// RCC->AHB3ENR |= 0x00000001;
+// RCC_SYNC();
+// /* Configure and enable SDRAM bank1 */
+// FMC_Bank5_6->SDCR[0] = 0x000019E0;
+// FMC_Bank5_6->SDTR[0] = 0x01115351;
+//
+// /* SDRAM initialization sequence */
+// /* Clock enable command */
+// FMC_Bank5_6->SDCMR = 0x00000011;
+// tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+// while((tmpreg != 0) && (timeout-- > 0))
+// {
+// tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+// }
+//
+// /* Delay */
+// for (index = 0; index<1000; index++);
+//
+// /* PALL command */
+// FMC_Bank5_6->SDCMR = 0x00000012;
+// timeout = 0xFFFF;
+// while((tmpreg != 0) && (timeout-- > 0))
+// {
+// tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+// }
+//
+// /* Auto refresh command */
+// FMC_Bank5_6->SDCMR = 0x00000073;
+// timeout = 0xFFFF;
+// while((tmpreg != 0) && (timeout-- > 0))
+// {
+// tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+// }
+//
+// /* MRD register program */
+// FMC_Bank5_6->SDCMR = 0x00046014;
+// timeout = 0xFFFF;
+// while((tmpreg != 0) && (timeout-- > 0))
+// {
+// tmpreg = FMC_Bank5_6->SDSR & 0x00000020;
+// }
+//
+// /* Set refresh count */
+// tmpreg = FMC_Bank5_6->SDRTR;
+// FMC_Bank5_6->SDRTR = (tmpreg | (0x0000027C<<1));
+//
+// /* Disable write protection */
+// tmpreg = FMC_Bank5_6->SDCR[0];
+// FMC_Bank5_6->SDCR[0] = (tmpreg & 0xFFFFFDFF);
+// #endif /* DATA_IN_ExtSDRAM */
+// #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
+//
+// #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx) || defined(STM32F417xx) || defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx) || defined(STM32F439xx)
+// #if defined(DATA_IN_ExtSRAM)
+// /*-- GPIOs Configuration -----------------------------------------------------*/
+// /* Enable GPIOD, GPIOE, GPIOF and GPIOG interface clock */
+// RCC->AHB1ENR |= 0x00000078;
+// RCC_SYNC();
+// /* Connect PDx pins to FMC Alternate function */
+// GPIOD->AFR[0] = 0x00CCC0CC;
+// GPIOD->AFR[1] = 0xCCCCCCCC;
+// /* Configure PDx pins in Alternate function mode */
+// GPIOD->MODER = 0xAAAA0A8A;
+// /* Configure PDx pins speed to 100 MHz */
+// GPIOD->OSPEEDR = 0xFFFF0FCF;
+// /* Configure PDx pins Output type to push-pull */
+// GPIOD->OTYPER = 0x00000000;
+// /* No pull-up, pull-down for PDx pins */
+// GPIOD->PUPDR = 0x00000000;
+//
+// /* Connect PEx pins to FMC Alternate function */
+// GPIOE->AFR[0] = 0xC00CC0CC;
+// GPIOE->AFR[1] = 0xCCCCCCCC;
+// /* Configure PEx pins in Alternate function mode */
+// GPIOE->MODER = 0xAAAA828A;
+// /* Configure PEx pins speed to 100 MHz */
+// GPIOE->OSPEEDR = 0xFFFFC3CF;
+// /* Configure PEx pins Output type to push-pull */
+// GPIOE->OTYPER = 0x00000000;
+// /* No pull-up, pull-down for PEx pins */
+// GPIOE->PUPDR = 0x00000000;
+//
+// /* Connect PFx pins to FMC Alternate function */
+// GPIOF->AFR[0] = 0x00CCCCCC;
+// GPIOF->AFR[1] = 0xCCCC0000;
+// /* Configure PFx pins in Alternate function mode */
+// GPIOF->MODER = 0xAA000AAA;
+// /* Configure PFx pins speed to 100 MHz */
+// GPIOF->OSPEEDR = 0xFF000FFF;
+// /* Configure PFx pins Output type to push-pull */
+// GPIOF->OTYPER = 0x00000000;
+// /* No pull-up, pull-down for PFx pins */
+// GPIOF->PUPDR = 0x00000000;
+//
+// /* Connect PGx pins to FMC Alternate function */
+// GPIOG->AFR[0] = 0x00CCCCCC;
+// GPIOG->AFR[1] = 0x000000C0;
+// /* Configure PGx pins in Alternate function mode */
+// GPIOG->MODER = 0x00085AAA;
+// /* Configure PGx pins speed to 100 MHz */
+// GPIOG->OSPEEDR = 0x000CAFFF;
+// /* Configure PGx pins Output type to push-pull */
+// GPIOG->OTYPER = 0x00000000;
+// /* No pull-up, pull-down for PGx pins */
+// GPIOG->PUPDR = 0x00000000;
+//
+// /*-- FMC/FSMC Configuration --------------------------------------------------*/
+// /* Enable the FMC/FSMC interface clock */
+// RCC->AHB3ENR |= 0x00000001;
+// RCC_SYNC();
+// #if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx)
+// /* Configure and enable Bank1_SRAM2 */
+// FMC_Bank1->BTCR[2] = 0x00001011;
+// FMC_Bank1->BTCR[3] = 0x00000201;
+// FMC_Bank1E->BWTR[2] = 0x0fffffff;
+// #endif /* STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
+//
+// #if defined(STM32F405xx) || defined(STM32F415xx) || defined(STM32F407xx)|| defined(STM32F417xx)
+// /* Configure and enable Bank1_SRAM2 */
+// FSMC_Bank1->BTCR[2] = 0x00001011;
+// FSMC_Bank1->BTCR[3] = 0x00000201;
+// FSMC_Bank1E->BWTR[2] = 0x0FFFFFFF;
+// #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx */
+//
+// #endif /* DATA_IN_ExtSRAM */
+// #endif /* STM32F405xx || STM32F415xx || STM32F407xx || STM32F417xx || STM32F427xx || STM32F437xx || STM32F429xx || STM32F439xx */
+// }
+// #endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM */
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F4xx/miosix_patches.patch b/miosix/arch/CMSIS/Device/ST/STM32F4xx/miosix_patches.patch
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F4xx/miosix_patches.patch
rename to miosix/arch/CMSIS/Device/ST/STM32F4xx/miosix_patches.patch
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f722xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f722xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f722xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f722xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f723xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f723xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f723xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f723xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f730xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f730xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f730xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f730xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f732xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f732xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f732xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f732xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f733xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f733xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f733xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f733xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f745xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f745xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f745xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f745xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f746xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f746xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f746xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f746xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f750xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f750xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f750xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f750xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f756xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f756xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f756xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f756xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f765xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f765xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f765xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f765xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f769xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f769xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f769xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f769xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f777xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f777xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f777xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f777xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f779xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f779xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f779xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f779xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/LICENSE.md b/miosix/arch/CMSIS/Device/ST/STM32F7xx/LICENSE.md
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/LICENSE.md
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/LICENSE.md
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Release_Notes.html b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Release_Notes.html
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/Release_Notes.html
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/Release_Notes.html
diff --git a/miosix/arch/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.cpp b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.cpp
new file mode 100644
index 000000000..139457821
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.cpp
@@ -0,0 +1,390 @@
+/**
+ ******************************************************************************
+ * @file system_stm32f7xx.c
+ * @author MCD Application Team
+ * @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File.
+ *
+ * This file provides two functions and one global variable to be called from
+ * user application:
+ * - SystemInit(): This function is called at startup just after reset and
+ * before branch to main program. This call is made inside
+ * the "startup_stm32f7xx.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.
+ *
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * © COPYRIGHT 2016 STMicroelectronics
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. Neither the name of STMicroelectronics nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32f7xx_system
+ * @{
+ */
+
+/** @addtogroup STM32F7xx_System_Private_Includes
+ * @{
+ */
+
+#include "board_settings.h"
+//By TFT: was #include "stm32f7xx.h", but the specific chip is #defined in
+//arch_registers_impl.h
+#include "interfaces/arch_registers.h"
+
+#if !defined (HSI_VALUE)
+ #define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
+#endif /* HSI_VALUE */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F7xx_System_Private_TypesDefinitions
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F7xx_System_Private_Defines
+ * @{
+ */
+
+/************************* Miscellaneous Configuration ************************/
+
+/*!< Uncomment the following line if you need to relocate your vector Table in
+ Internal SRAM. */
+/* #define VECT_TAB_SRAM */
+#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
+ This value must be a multiple of 0x200. */
+/******************************************************************************/
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F7xx_System_Private_Macros
+ * @{
+ */
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F7xx_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.
+ */
+//By TFT: we increase the clock BEFORE initializing .data and .bss!
+uint32_t SystemCoreClock = miosix::cpuFrequency;
+const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
+const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F7xx_System_Private_FunctionPrototypes
+ * @{
+ */
+
+//By TFT: added PLL initialization
+static void SetSysClk(void);
+
+/**
+ * @}
+ */
+
+/** @addtogroup STM32F7xx_System_Private_Functions
+ * @{
+ */
+
+/**
+ * @brief Setup the microcontroller system
+ * Initialize the Embedded Flash Interface, the PLL and update the
+ * SystemFrequency variable.
+ * @param None
+ * @retval None
+ */
+void SystemInit(void)
+{
+ /* FPU settings ------------------------------------------------------------*/
+ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
+ SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
+ #else
+ #error "FPU disabled!" //By TFT: added a check to be really sure the FPU is on
+ #endif
+ /* Reset the RCC clock configuration to the default reset state ------------*/
+ /* Set HSION bit */
+ RCC->CR |= (uint32_t)0x00000001;
+
+ /* Reset CFGR register */
+ RCC->CFGR = 0x00000000;
+
+ /* Reset HSEON, CSSON and PLLON bits */
+ RCC->CR &= (uint32_t)0xFEF6FFFF;
+
+ /* Reset PLLCFGR register */
+ RCC->PLLCFGR = 0x24003010;
+
+ /* Reset HSEBYP bit */
+ RCC->CR &= (uint32_t)0xFFFBFFFF;
+
+ /* Disable all interrupts */
+ RCC->CIR = 0x00000000;
+
+ //By TFT -- begin
+ SetSysClk();
+ //NOTE: we don't enable caches here because different boards may want to do
+ //so or not depending on whether they have external memories for code and data
+ //By TFT -- end
+
+ /* Configure the Vector Table location add offset address ------------------*/
+#ifdef VECT_TAB_SRAM
+ SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
+#else
+ SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
+#endif
+}
+
+/**
+ * @brief Update SystemCoreClock variable according to Clock Register Values.
+ * The SystemCoreClock variable contains the core clock (HCLK), it can
+ * be used by the user application to setup the SysTick timer or configure
+ * other parameters.
+ *
+ * @note Each time the core clock (HCLK) changes, this function must be called
+ * to update SystemCoreClock variable value. Otherwise, any configuration
+ * based on this variable will be incorrect.
+ *
+ * @note - The system frequency computed by this function is not the real
+ * frequency in the chip. It is calculated based on the predefined
+ * constant and the selected clock source:
+ *
+ * - If SYSCLK source is 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/divided by the PLL factors.
+ *
+ * (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
+ * 16 MHz) but the real value may vary depending on the variations
+ * in voltage and temperature.
+ *
+ * (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
+ * 25 MHz), user has to ensure that HSE_VALUE is same as the real
+ * frequency of the crystal used. Otherwise, this function may
+ * have wrong result.
+ *
+ * - The result of this function could be not correct when using fractional
+ * value for HSE crystal.
+ *
+ * @param None
+ * @retval None
+ */
+void SystemCoreClockUpdate(void)
+{
+ uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
+
+ /* Get SYSCLK source -------------------------------------------------------*/
+ tmp = RCC->CFGR & RCC_CFGR_SWS;
+
+ switch (tmp)
+ {
+ case 0x00: /* HSI used as system clock source */
+ SystemCoreClock = HSI_VALUE;
+ break;
+ case 0x04: /* HSE used as system clock source */
+ SystemCoreClock = miosix::hseFrequency;
+ break;
+ case 0x08: /* PLL used as system clock source */
+
+ /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
+ SYSCLK = PLL_VCO / PLL_P
+ */
+ pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
+ pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
+
+ if (pllsource != 0)
+ {
+ /* HSE used as PLL clock source */
+ pllvco = (miosix::hseFrequency / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
+ }
+ else
+ {
+ /* HSI used as PLL clock source */
+ pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
+ }
+
+ pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
+ SystemCoreClock = pllvco/pllp;
+ break;
+ default:
+ SystemCoreClock = HSI_VALUE;
+ break;
+ }
+ /* Compute HCLK frequency --------------------------------------------------*/
+ /* Get HCLK prescaler */
+ tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
+ /* HCLK frequency */
+ SystemCoreClock >>= tmp;
+}
+
+//By TFT: added PLL initialization that was not present in the CMSIS code
+void SetSysClk(void)
+{
+ uint32_t tmpreg = 0, timeout = 0xFFFF;
+
+/******************************************************************************/
+/* PLL (clocked by HSE) used as System clock source */
+/******************************************************************************/
+
+ static_assert(miosix::oscillatorType==miosix::OscillatorType::HSE,
+ "Unsupported oscillator type");
+ static_assert(miosix::cpuFrequency==216000000,"Unsupported sysclk");
+ //If possible, PLL input frequency set to 2MHz to reduce jitter as suggested
+ //by the datasheet.
+ const unsigned int PLL_M=miosix::hseFrequency%2000000 == 0 ?
+ miosix::hseFrequency/2000000 : miosix::hseFrequency/1000000;
+ const unsigned int PLL_Q=9;
+ const unsigned int PLL_R=7;
+ const unsigned int PLL_N=miosix::hseFrequency%2000000 == 0 ? 216 : 432;
+ const unsigned int PLL_P=2;
+
+ /* Enable Power Control clock */
+ RCC->APB1ENR |= RCC_APB1ENR_PWREN;
+
+ /* Config Voltage Scale 1 */
+ PWR->CR1 |= PWR_CR1_VOS;
+
+ /* Enable HSE */
+ RCC->CR |= ((uint32_t)RCC_CR_HSEON);
+
+ /* Wait till HSE is ready and if Time out is reached exit */
+ do
+ {
+ tmpreg = RCC->CR & RCC_CR_HSERDY;
+ } while((tmpreg != RCC_CR_HSERDY) && (timeout-- > 0));
+
+ if(timeout != 0)
+ {
+ /* Select regulator voltage output Scale 1 mode */
+ RCC->APB1ENR |= RCC_APB1ENR_PWREN;
+
+ PWR->CR1 |= PWR_CR1_VOS;
+
+ /* Enable Over Drive to reach the 216MHz frequency */
+ /* Enable ODEN */
+ PWR->CR1 |= 0x00010000;
+ timeout = 0xFFFF;
+ /* Wait till ODR is ready and if Time out is reached exit */
+ do
+ {
+ tmpreg = PWR->CSR1 & PWR_CSR1_ODRDY;
+ } while((tmpreg != PWR_CSR1_ODRDY) && (timeout-- > 0));
+
+ /* Enable ODSW */
+ PWR->CR1 |= 0x00020000;
+ timeout = 0xFFFF;
+ /* Wait till ODR is ready and if Time out is reached exit */
+ do
+ {
+ tmpreg = PWR->CSR1 & PWR_CSR1_ODSWRDY;
+ } while((tmpreg != PWR_CSR1_ODSWRDY) && (timeout-- > 0));
+
+ /* HCLK = SYSCLK / 1*/
+ RCC->CFGR |= RCC_CFGR_HPRE_DIV1;
+
+ /* PCLK2 = HCLK / 2*/
+ RCC->CFGR |= RCC_CFGR_PPRE2_DIV2;
+
+ /* PCLK1 = HCLK / 4*/
+ RCC->CFGR |= RCC_CFGR_PPRE1_DIV4;
+
+ /* Configure the main PLL */
+ RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1) -1) << 16) |
+ (RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24) | (PLL_R << 28);
+
+ /* Enable the main PLL */
+ RCC->CR |= RCC_CR_PLLON;
+ }
+ /* Wait that PLL is ready */
+ timeout = 0xFFFF;
+ do
+ {
+ tmpreg = (RCC->CR & RCC_CR_PLLRDY);
+ } while((tmpreg != RCC_CR_PLLRDY) && (timeout-- > 0));
+
+ if(timeout != 0)
+ {
+ /* Configure Flash prefetch, Instruction cache, Data cache and wait state */
+ FLASH->ACR = FLASH_ACR_LATENCY_7WS;
+
+ /* Select the main PLL as system clock source */
+ RCC->CFGR = (RCC->CFGR & ~RCC_CFGR_SW) | RCC_CFGR_SW_PLL;
+
+ timeout = 0xFFFF;
+ do
+ {
+ tmpreg = (RCC->CFGR & RCC_CFGR_SWS);
+ } while((tmpreg != RCC_CFGR_SWS_PLL) && (timeout-- > 0));
+ }
+}
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/miosix/arch/common/CMSIS/Device/ST/STM32F7xx/miosix_patches.patch b/miosix/arch/CMSIS/Device/ST/STM32F7xx/miosix_patches.patch
similarity index 100%
rename from miosix/arch/common/CMSIS/Device/ST/STM32F7xx/miosix_patches.patch
rename to miosix/arch/CMSIS/Device/ST/STM32F7xx/miosix_patches.patch
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h523xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h523xx.h
new file mode 100644
index 000000000..f6039818a
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h523xx.h
@@ -0,0 +1,660 @@
+/**
+ ******************************************************************************
+ * @file partition_stm32h523xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H523xx Device Header File for Initial Setup for Secure /
+ * Non-Secure Zones for ARMCM33 based on CMSIS CORE partition_ARMCM33.h
+ * Template.
+ *
+ * This file contains:
+ * - Initialize Security Attribution Unit (SAU) CTRL register
+ * - Setup behavior of Sleep and Exception Handling
+ * - Setup behavior of Floating Point Unit
+ * - Setup Interrupt Target
+ *
+ ******************************************************************************
+ * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
+ * Copyright (c) 2023 STMicroelectronics. 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 PARTITION_STM32H523XX_H
+#define PARTITION_STM32H523XX_H
+
+/*
+//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
+*/
+
+/*
+// Initialize Security Attribution Unit (SAU) CTRL register
+*/
+#define SAU_INIT_CTRL 1
+
+/*
+// Enable SAU
+// Value for SAU->CTRL register bit ENABLE
+*/
+#define SAU_INIT_CTRL_ENABLE 0
+
+/*
+// When SAU is disabled
+// <0=> All Memory is Secure
+// <1=> All Memory is Non-Secure
+// Value for SAU->CTRL register bit ALLNS
+// When all Memory is Non-Secure (ALLNS is 1), IDAU can override memory map configuration.
+*/
+#define SAU_INIT_CTRL_ALLNS 1
+
+/*
+//
+*/
+
+/*
+// Initialize Security Attribution Unit (SAU) Address Regions
+// SAU configuration specifies regions to be one of:
+// - Secure and Non-Secure Callable
+// - Non-Secure
+// Note: All memory regions not configured by SAU are Secure
+*/
+#define SAU_REGIONS_MAX 8 /* Max. number of SAU regions */
+
+/*
+// Initialize SAU Region 0
+// Setup SAU Region 0 memory attributes
+*/
+#define SAU_INIT_REGION0 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START0 0x0C03E000 /* start address of SAU region 0 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END0 0x0C03FFFF /* end address of SAU region 0 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC0 1
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 1
+// Setup SAU Region 1 memory attributes
+*/
+#define SAU_INIT_REGION1 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START1 0x08040000 /* start address of SAU region 1 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END1 0x0807FFFF /* end address of SAU region 1 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC1 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 2
+// Setup SAU Region 2 memory attributes
+*/
+#define SAU_INIT_REGION2 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START2 0x20034000 /* start address of SAU region 2 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END2 0x20043FFF /* end address of SAU region 2 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC2 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 3
+// Setup SAU Region 3 memory attributes
+*/
+#define SAU_INIT_REGION3 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START3 0x40000000 /* start address of SAU region 3 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END3 0x4FFFFFFF /* end address of SAU region 3 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC3 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 4
+// Setup SAU Region 4 memory attributes
+*/
+#define SAU_INIT_REGION4 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START4 0x60000000 /* start address of SAU region 4 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END4 0x9FFFFFFF /* end address of SAU region 4 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC4 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 5
+// Setup SAU Region 5 memory attributes
+*/
+#define SAU_INIT_REGION5 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START5 0x0BF90000 /* start address of SAU region 5 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END5 0x0BFA8FFF /* end address of SAU region 5 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC5 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 6
+// Setup SAU Region 6 memory attributes
+*/
+#define SAU_INIT_REGION6 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START6 0x00000000 /* start address of SAU region 6 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END6 0x00000000 /* end address of SAU region 6 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC6 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 7
+// Setup SAU Region 7 memory attributes
+*/
+#define SAU_INIT_REGION7 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START7 0x00000000 /* start address of SAU region 7 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END7 0x00000000 /* end address of SAU region 7 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC7 0
+/*
+//
+*/
+
+/*
+//
+*/
+
+/*
+// Setup behaviour of Sleep and Exception Handling
+*/
+#define SCB_CSR_AIRCR_INIT 0
+
+/*
+// Deep Sleep can be enabled by
+// <0=>Secure and Non-Secure state
+// <1=>Secure state only
+// Value for SCB->CSR register bit DEEPSLEEPS
+*/
+#define SCB_CSR_DEEPSLEEPS_VAL 0
+
+/*
+// System reset request accessible from
+// <0=> Secure and Non-Secure state
+// <1=> Secure state only
+// Value for SCB->AIRCR register bit SYSRESETREQS
+*/
+#define SCB_AIRCR_SYSRESETREQS_VAL 0
+
+/*
+// Priority of Non-Secure exceptions is
+// <0=> Not altered
+// <1=> Lowered to 0x04-0x07
+// Value for SCB->AIRCR register bit PRIS
+*/
+#define SCB_AIRCR_PRIS_VAL 0
+
+/*
+// BusFault, HardFault, and NMI target
+// <0=> Secure state
+// <1=> Non-Secure state
+// Value for SCB->AIRCR register bit BFHFNMINS
+*/
+#define SCB_AIRCR_BFHFNMINS_VAL 0
+
+/*
+//
+*/
+
+/*
+// Setup behaviour of Floating Point Unit
+*/
+#define TZ_FPU_NS_USAGE 1
+
+/*
+// Floating Point Unit usage
+// <0=> Secure state only
+// <3=> Secure and Non-Secure state
+// Value for SCB->NSACR register bits CP10, CP11
+*/
+#define SCB_NSACR_CP10_11_VAL 3
+
+/*
+// Treat floating-point registers as Secure
+// <0=> Disabled
+// <1=> Enabled
+// Value for FPU->FPCCR register bit TS
+*/
+#define FPU_FPCCR_TS_VAL 0
+
+/*
+// Clear on return (CLRONRET) accessibility
+// <0=> Secure and Non-Secure state
+// <1=> Secure state only
+// Value for FPU->FPCCR register bit CLRONRETS
+*/
+#define FPU_FPCCR_CLRONRETS_VAL 0
+
+/*
+// Clear floating-point caller saved registers on exception return
+// <0=> Disabled
+// <1=> Enabled
+// Value for FPU->FPCCR register bit CLRONRET
+*/
+#define FPU_FPCCR_CLRONRET_VAL 1
+
+/*
+//
+*/
+
+/*
+// Setup Interrupt Target
+*/
+
+/*
+// Initialize ITNS 0 (Interrupts 0..31)
+*/
+#define NVIC_INIT_ITNS0 1
+
+/*
+// Interrupts 0..31
+// WWDG_IRQn <0=> Secure state <1=> Non-Secure state
+// PVD_AVD_IRQn <0=> Secure state <1=> Non-Secure state
+// RTC_IRQn <0=> Secure state <1=> Non-Secure state
+// RTC_S_IRQn <0=> Secure state <1=> Non-Secure state
+// TAMP_IRQn <0=> Secure state <1=> Non-Secure state
+// RAMCFG_IRQn <0=> Secure state <1=> Non-Secure state
+// FLASH_IRQn <0=> Secure state <1=> Non-Secure state
+// FLASH_S_IRQn <0=> Secure state <1=> Non-Secure state
+// GTZC_IRQn <0=> Secure state <1=> Non-Secure state
+// RCC_IRQn <0=> Secure state <1=> Non-Secure state
+// RCC_S_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI0_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI1_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI2_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI3_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI4_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI5_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI6_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI7_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI8_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI9_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI10_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI11_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI12_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI13_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI14_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI15_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel0_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel1_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel3_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel4_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS0_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 1 (Interrupts 32..63)
+*/
+#define NVIC_INIT_ITNS1 1
+
+/*
+// Interrupts 32..63
+// GPDMA1_Channel5_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel7_IRQn <0=> Secure state <1=> Non-Secure state
+// IWDG_IRQn <0=> Secure state <1=> Non-Secure state
+// ADC1_IRQn <0=> Secure state <1=> Non-Secure state
+// DAC1_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN1_IT0_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN1_IT1_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_BRK_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_UP_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_TRG_COM_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_CC_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM2_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM3_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM4_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM5_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM6_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM7_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C1_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C1_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C2_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C2_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI2_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI3_IRQn <0=> Secure state <1=> Non-Secure state
+// USART1_IRQn <0=> Secure state <1=> Non-Secure state
+// USART2_IRQn <0=> Secure state <1=> Non-Secure state
+// USART3_IRQn <0=> Secure state <1=> Non-Secure state
+// UART4_IRQn <0=> Secure state <1=> Non-Secure state
+// UART5_IRQn <0=> Secure state <1=> Non-Secure state
+// LPUART1_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS1_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 2 (Interrupts 64..95)
+*/
+#define NVIC_INIT_ITNS2 1
+
+/*
+// Interrupts 64..95
+// LPTIM1_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_BRK_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_UP_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_TRG_COM_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_CC_IRQn <0=> Secure state <1=> Non-Secure state
+// ADC2_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM2_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM15_IRQn <0=> Secure state <1=> Non-Secure state
+// USB_DRD_FS_IRQn <0=> Secure state <1=> Non-Secure state
+// CRS_IRQn <0=> Secure state <1=> Non-Secure state
+// UCPD1_IRQn <0=> Secure state <1=> Non-Secure state
+// FMC_IRQn <0=> Secure state <1=> Non-Secure state
+// OCTOSPI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SDMMC1_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C3_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C3_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI4_IRQn <0=> Secure state <1=> Non-Secure state
+// USART6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel0_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel1_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel3_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel4_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel5_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS2_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 3 (Interrupts 96..127)
+*/
+#define NVIC_INIT_ITNS3 1
+
+/*
+// Interrupts 96..124
+// GPDMA2_Channel6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel7_IRQn <0=> Secure state <1=> Non-Secure state
+// FPU_IRQn <0=> Secure state <1=> Non-Secure state
+// ICACHE_IRQn <0=> Secure state <1=> Non-Secure state
+// DCACHE_IRQn <0=> Secure state <1=> Non-Secure state
+// DCMI_PSSI_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN2_IT0_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN2_IT1_IRQn <0=> Secure state <1=> Non-Secure state
+// DTS_IRQn <0=> Secure state <1=> Non-Secure state
+// RNG_IRQn <0=> Secure state <1=> Non-Secure state
+// HASH_IRQn <0=> Secure state <1=> Non-Secure state
+// CEC_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM12_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C1_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C1_ER_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS3_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 4 (Interrupts 131..132)
+*/
+#define NVIC_INIT_ITNS4 1
+
+/*
+// Interrupts 131..132
+// I3C2_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C2_ER_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS4_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+//
+*/
+
+/*
+ max 8 SAU regions.
+ SAU regions are defined in partition.h
+ */
+
+#define SAU_INIT_REGION(n) \
+ SAU->RNR = (n & SAU_RNR_REGION_Msk); \
+ SAU->RBAR = (SAU_INIT_START##n & SAU_RBAR_BADDR_Msk); \
+ SAU->RLAR = (SAU_INIT_END##n & SAU_RLAR_LADDR_Msk) | \
+ ((SAU_INIT_NSC##n << SAU_RLAR_NSC_Pos) & SAU_RLAR_NSC_Msk) | 1U
+
+/**
+ \brief Setup a SAU Region
+ \details Writes the region information contained in SAU_Region to the
+ registers SAU_RNR, SAU_RBAR, and SAU_RLAR
+ */
+__STATIC_INLINE void TZ_SAU_Setup (void)
+{
+
+#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)
+
+ #if defined (SAU_INIT_REGION0) && (SAU_INIT_REGION0 == 1U)
+ SAU_INIT_REGION(0);
+ #endif
+
+ #if defined (SAU_INIT_REGION1) && (SAU_INIT_REGION1 == 1U)
+ SAU_INIT_REGION(1);
+ #endif
+
+ #if defined (SAU_INIT_REGION2) && (SAU_INIT_REGION2 == 1U)
+ SAU_INIT_REGION(2);
+ #endif
+
+ #if defined (SAU_INIT_REGION3) && (SAU_INIT_REGION3 == 1U)
+ SAU_INIT_REGION(3);
+ #endif
+
+ #if defined (SAU_INIT_REGION4) && (SAU_INIT_REGION4 == 1U)
+ SAU_INIT_REGION(4);
+ #endif
+
+ #if defined (SAU_INIT_REGION5) && (SAU_INIT_REGION5 == 1U)
+ SAU_INIT_REGION(5);
+ #endif
+
+ #if defined (SAU_INIT_REGION6) && (SAU_INIT_REGION6 == 1U)
+ SAU_INIT_REGION(6);
+ #endif
+
+ #if defined (SAU_INIT_REGION7) && (SAU_INIT_REGION7 == 1U)
+ SAU_INIT_REGION(7);
+ #endif
+
+ /* repeat this for all possible SAU regions */
+
+#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */
+
+
+ #if defined (SAU_INIT_CTRL) && (SAU_INIT_CTRL == 1U)
+ SAU->CTRL = ((SAU_INIT_CTRL_ENABLE << SAU_CTRL_ENABLE_Pos) & SAU_CTRL_ENABLE_Msk) |
+ ((SAU_INIT_CTRL_ALLNS << SAU_CTRL_ALLNS_Pos) & SAU_CTRL_ALLNS_Msk) ;
+ #endif
+
+ #if defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U)
+ SCB->SCR = (SCB->SCR & ~(SCB_SCR_SLEEPDEEPS_Msk )) |
+ ((SCB_CSR_DEEPSLEEPS_VAL << SCB_SCR_SLEEPDEEPS_Pos) & SCB_SCR_SLEEPDEEPS_Msk);
+
+ SCB->AIRCR = (SCB->AIRCR & ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_SYSRESETREQS_Msk |
+ SCB_AIRCR_BFHFNMINS_Msk | SCB_AIRCR_PRIS_Msk) ) |
+ ((0x05FAU << SCB_AIRCR_VECTKEY_Pos) & SCB_AIRCR_VECTKEY_Msk) |
+ ((SCB_AIRCR_SYSRESETREQS_VAL << SCB_AIRCR_SYSRESETREQS_Pos) & SCB_AIRCR_SYSRESETREQS_Msk) |
+ ((SCB_AIRCR_PRIS_VAL << SCB_AIRCR_PRIS_Pos) & SCB_AIRCR_PRIS_Msk) |
+ ((SCB_AIRCR_BFHFNMINS_VAL << SCB_AIRCR_BFHFNMINS_Pos) & SCB_AIRCR_BFHFNMINS_Msk);
+ #endif /* defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U) */
+
+ #if defined (__FPU_USED) && (__FPU_USED == 1U) && \
+ defined (TZ_FPU_NS_USAGE) && (TZ_FPU_NS_USAGE == 1U)
+
+ SCB->NSACR = (SCB->NSACR & ~(SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk)) |
+ ((SCB_NSACR_CP10_11_VAL << SCB_NSACR_CP10_Pos) & (SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk));
+
+ FPU->FPCCR = (FPU->FPCCR & ~(FPU_FPCCR_TS_Msk | FPU_FPCCR_CLRONRETS_Msk | FPU_FPCCR_CLRONRET_Msk)) |
+ ((FPU_FPCCR_TS_VAL << FPU_FPCCR_TS_Pos ) & FPU_FPCCR_TS_Msk ) |
+ ((FPU_FPCCR_CLRONRETS_VAL << FPU_FPCCR_CLRONRETS_Pos) & FPU_FPCCR_CLRONRETS_Msk) |
+ ((FPU_FPCCR_CLRONRET_VAL << FPU_FPCCR_CLRONRET_Pos ) & FPU_FPCCR_CLRONRET_Msk );
+ #endif
+
+ #if defined (NVIC_INIT_ITNS0) && (NVIC_INIT_ITNS0 == 1U)
+ NVIC->ITNS[0] = NVIC_INIT_ITNS0_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS1) && (NVIC_INIT_ITNS1 == 1U)
+ NVIC->ITNS[1] = NVIC_INIT_ITNS1_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS2) && (NVIC_INIT_ITNS2 == 1U)
+ NVIC->ITNS[2] = NVIC_INIT_ITNS2_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS3) && (NVIC_INIT_ITNS3 == 1U)
+ NVIC->ITNS[3] = NVIC_INIT_ITNS3_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS4) && (NVIC_INIT_ITNS4 == 1U)
+ NVIC->ITNS[4] = NVIC_INIT_ITNS4_VAL;
+ #endif
+
+}
+
+#endif /* PARTITION_STM32H523XX_H */
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h533xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h533xx.h
new file mode 100644
index 000000000..9fe445900
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h533xx.h
@@ -0,0 +1,664 @@
+/**
+ ******************************************************************************
+ * @file partition_stm32h533xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H533xx Device Header File for Initial Setup for Secure /
+ * Non-Secure Zones for ARMCM33 based on CMSIS CORE partition_ARMCM33.h
+ * Template.
+ *
+ * This file contains:
+ * - Initialize Security Attribution Unit (SAU) CTRL register
+ * - Setup behavior of Sleep and Exception Handling
+ * - Setup behavior of Floating Point Unit
+ * - Setup Interrupt Target
+ *
+ ******************************************************************************
+ * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
+ * Copyright (c) 2023 STMicroelectronics. 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 PARTITION_STM32H533XX_H
+#define PARTITION_STM32H533XX_H
+
+/*
+//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
+*/
+
+/*
+// Initialize Security Attribution Unit (SAU) CTRL register
+*/
+#define SAU_INIT_CTRL 1
+
+/*
+// Enable SAU
+// Value for SAU->CTRL register bit ENABLE
+*/
+#define SAU_INIT_CTRL_ENABLE 0
+
+/*
+// When SAU is disabled
+// <0=> All Memory is Secure
+// <1=> All Memory is Non-Secure
+// Value for SAU->CTRL register bit ALLNS
+// When all Memory is Non-Secure (ALLNS is 1), IDAU can override memory map configuration.
+*/
+#define SAU_INIT_CTRL_ALLNS 1
+
+/*
+//
+*/
+
+/*
+// Initialize Security Attribution Unit (SAU) Address Regions
+// SAU configuration specifies regions to be one of:
+// - Secure and Non-Secure Callable
+// - Non-Secure
+// Note: All memory regions not configured by SAU are Secure
+*/
+#define SAU_REGIONS_MAX 8 /* Max. number of SAU regions */
+
+/*
+// Initialize SAU Region 0
+// Setup SAU Region 0 memory attributes
+*/
+#define SAU_INIT_REGION0 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START0 0x0C03E000 /* start address of SAU region 0 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END0 0x0C03FFFF /* end address of SAU region 0 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC0 1
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 1
+// Setup SAU Region 1 memory attributes
+*/
+#define SAU_INIT_REGION1 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START1 0x08040000 /* start address of SAU region 1 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END1 0x0807FFFF /* end address of SAU region 1 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC1 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 2
+// Setup SAU Region 2 memory attributes
+*/
+#define SAU_INIT_REGION2 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START2 0x20034000 /* start address of SAU region 2 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END2 0x20043FFF /* end address of SAU region 2 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC2 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 3
+// Setup SAU Region 3 memory attributes
+*/
+#define SAU_INIT_REGION3 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START3 0x40000000 /* start address of SAU region 3 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END3 0x4FFFFFFF /* end address of SAU region 3 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC3 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 4
+// Setup SAU Region 4 memory attributes
+*/
+#define SAU_INIT_REGION4 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START4 0x60000000 /* start address of SAU region 4 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END4 0x9FFFFFFF /* end address of SAU region 4 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC4 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 5
+// Setup SAU Region 5 memory attributes
+*/
+#define SAU_INIT_REGION5 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START5 0x0BF90000 /* start address of SAU region 5 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END5 0x0BFA8FFF /* end address of SAU region 5 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC5 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 6
+// Setup SAU Region 6 memory attributes
+*/
+#define SAU_INIT_REGION6 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START6 0x00000000 /* start address of SAU region 6 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END6 0x00000000 /* end address of SAU region 6 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC6 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 7
+// Setup SAU Region 7 memory attributes
+*/
+#define SAU_INIT_REGION7 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START7 0x00000000 /* start address of SAU region 7 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END7 0x00000000 /* end address of SAU region 7 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC7 0
+/*
+//
+*/
+
+/*
+//
+*/
+
+/*
+// Setup behaviour of Sleep and Exception Handling
+*/
+#define SCB_CSR_AIRCR_INIT 0
+
+/*
+// Deep Sleep can be enabled by
+// <0=>Secure and Non-Secure state
+// <1=>Secure state only
+// Value for SCB->CSR register bit DEEPSLEEPS
+*/
+#define SCB_CSR_DEEPSLEEPS_VAL 0
+
+/*
+// System reset request accessible from
+// <0=> Secure and Non-Secure state
+// <1=> Secure state only
+// Value for SCB->AIRCR register bit SYSRESETREQS
+*/
+#define SCB_AIRCR_SYSRESETREQS_VAL 0
+
+/*
+// Priority of Non-Secure exceptions is
+// <0=> Not altered
+// <1=> Lowered to 0x04-0x07
+// Value for SCB->AIRCR register bit PRIS
+*/
+#define SCB_AIRCR_PRIS_VAL 0
+
+/*
+// BusFault, HardFault, and NMI target
+// <0=> Secure state
+// <1=> Non-Secure state
+// Value for SCB->AIRCR register bit BFHFNMINS
+*/
+#define SCB_AIRCR_BFHFNMINS_VAL 0
+
+/*
+//
+*/
+
+/*
+// Setup behaviour of Floating Point Unit
+*/
+#define TZ_FPU_NS_USAGE 1
+
+/*
+// Floating Point Unit usage
+// <0=> Secure state only
+// <3=> Secure and Non-Secure state
+// Value for SCB->NSACR register bits CP10, CP11
+*/
+#define SCB_NSACR_CP10_11_VAL 3
+
+/*
+// Treat floating-point registers as Secure
+// <0=> Disabled
+// <1=> Enabled
+// Value for FPU->FPCCR register bit TS
+*/
+#define FPU_FPCCR_TS_VAL 0
+
+/*
+// Clear on return (CLRONRET) accessibility
+// <0=> Secure and Non-Secure state
+// <1=> Secure state only
+// Value for FPU->FPCCR register bit CLRONRETS
+*/
+#define FPU_FPCCR_CLRONRETS_VAL 0
+
+/*
+// Clear floating-point caller saved registers on exception return
+// <0=> Disabled
+// <1=> Enabled
+// Value for FPU->FPCCR register bit CLRONRET
+*/
+#define FPU_FPCCR_CLRONRET_VAL 1
+
+/*
+//
+*/
+
+/*
+// Setup Interrupt Target
+*/
+
+/*
+// Initialize ITNS 0 (Interrupts 0..31)
+*/
+#define NVIC_INIT_ITNS0 1
+
+/*
+// Interrupts 0..31
+// WWDG_IRQn <0=> Secure state <1=> Non-Secure state
+// PVD_AVD_IRQn <0=> Secure state <1=> Non-Secure state
+// RTC_IRQn <0=> Secure state <1=> Non-Secure state
+// RTC_S_IRQn <0=> Secure state <1=> Non-Secure state
+// TAMP_IRQn <0=> Secure state <1=> Non-Secure state
+// RAMCFG_IRQn <0=> Secure state <1=> Non-Secure state
+// FLASH_IRQn <0=> Secure state <1=> Non-Secure state
+// FLASH_S_IRQn <0=> Secure state <1=> Non-Secure state
+// GTZC_IRQn <0=> Secure state <1=> Non-Secure state
+// RCC_IRQn <0=> Secure state <1=> Non-Secure state
+// RCC_S_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI0_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI1_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI2_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI3_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI4_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI5_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI6_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI7_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI8_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI9_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI10_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI11_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI12_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI13_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI14_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI15_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel0_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel1_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel3_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel4_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS0_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 1 (Interrupts 32..63)
+*/
+#define NVIC_INIT_ITNS1 1
+
+/*
+// Interrupts 32..63
+// GPDMA1_Channel5_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel7_IRQn <0=> Secure state <1=> Non-Secure state
+// IWDG_IRQn <0=> Secure state <1=> Non-Secure state
+// SAES_IRQn <0=> Secure state <1=> Non-Secure state
+// ADC1_IRQn <0=> Secure state <1=> Non-Secure state
+// DAC1_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN1_IT0_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN1_IT1_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_BRK_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_UP_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_TRG_COM_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_CC_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM2_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM3_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM4_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM5_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM6_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM7_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C1_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C1_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C2_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C2_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI2_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI3_IRQn <0=> Secure state <1=> Non-Secure state
+// USART1_IRQn <0=> Secure state <1=> Non-Secure state
+// USART2_IRQn <0=> Secure state <1=> Non-Secure state
+// USART3_IRQn <0=> Secure state <1=> Non-Secure state
+// UART4_IRQn <0=> Secure state <1=> Non-Secure state
+// UART5_IRQn <0=> Secure state <1=> Non-Secure state
+// LPUART1_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS1_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 2 (Interrupts 64..95)
+*/
+#define NVIC_INIT_ITNS2 1
+
+/*
+// Interrupts 64..95
+// LPTIM1_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_BRK_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_UP_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_TRG_COM_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_CC_IRQn <0=> Secure state <1=> Non-Secure state
+// ADC2_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM2_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM15_IRQn <0=> Secure state <1=> Non-Secure state
+// USB_DRD_FS_IRQn <0=> Secure state <1=> Non-Secure state
+// CRS_IRQn <0=> Secure state <1=> Non-Secure state
+// UCPD1_IRQn <0=> Secure state <1=> Non-Secure state
+// FMC_IRQn <0=> Secure state <1=> Non-Secure state
+// OCTOSPI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SDMMC1_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C3_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C3_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI4_IRQn <0=> Secure state <1=> Non-Secure state
+// USART6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel0_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel1_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel3_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel4_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel5_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS2_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 3 (Interrupts 96..127)
+*/
+#define NVIC_INIT_ITNS3 1
+
+/*
+// Interrupts 96..124
+// GPDMA2_Channel6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel7_IRQn <0=> Secure state <1=> Non-Secure state
+// FPU_IRQn <0=> Secure state <1=> Non-Secure state
+// ICACHE_IRQn <0=> Secure state <1=> Non-Secure state
+// DCACHE_IRQn <0=> Secure state <1=> Non-Secure state
+// DCMI_PSSI_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN2_IT0_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN2_IT1_IRQn <0=> Secure state <1=> Non-Secure state
+// DTS_IRQn <0=> Secure state <1=> Non-Secure state
+// RNG_IRQn <0=> Secure state <1=> Non-Secure state
+// OTFDEC1_IRQn <0=> Secure state <1=> Non-Secure state
+// AES_IRQn <0=> Secure state <1=> Non-Secure state
+// HASH_IRQn <0=> Secure state <1=> Non-Secure state
+// PKA_IRQn <0=> Secure state <1=> Non-Secure state
+// CEC_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM12_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C1_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C1_ER_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS3_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 4 (Interrupts 131..132)
+*/
+#define NVIC_INIT_ITNS4 1
+
+/*
+// Interrupts 131..132
+// I3C2_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C2_ER_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS4_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+//
+*/
+
+/*
+ max 8 SAU regions.
+ SAU regions are defined in partition.h
+ */
+
+#define SAU_INIT_REGION(n) \
+ SAU->RNR = (n & SAU_RNR_REGION_Msk); \
+ SAU->RBAR = (SAU_INIT_START##n & SAU_RBAR_BADDR_Msk); \
+ SAU->RLAR = (SAU_INIT_END##n & SAU_RLAR_LADDR_Msk) | \
+ ((SAU_INIT_NSC##n << SAU_RLAR_NSC_Pos) & SAU_RLAR_NSC_Msk) | 1U
+
+/**
+ \brief Setup a SAU Region
+ \details Writes the region information contained in SAU_Region to the
+ registers SAU_RNR, SAU_RBAR, and SAU_RLAR
+ */
+__STATIC_INLINE void TZ_SAU_Setup (void)
+{
+
+#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)
+
+ #if defined (SAU_INIT_REGION0) && (SAU_INIT_REGION0 == 1U)
+ SAU_INIT_REGION(0);
+ #endif
+
+ #if defined (SAU_INIT_REGION1) && (SAU_INIT_REGION1 == 1U)
+ SAU_INIT_REGION(1);
+ #endif
+
+ #if defined (SAU_INIT_REGION2) && (SAU_INIT_REGION2 == 1U)
+ SAU_INIT_REGION(2);
+ #endif
+
+ #if defined (SAU_INIT_REGION3) && (SAU_INIT_REGION3 == 1U)
+ SAU_INIT_REGION(3);
+ #endif
+
+ #if defined (SAU_INIT_REGION4) && (SAU_INIT_REGION4 == 1U)
+ SAU_INIT_REGION(4);
+ #endif
+
+ #if defined (SAU_INIT_REGION5) && (SAU_INIT_REGION5 == 1U)
+ SAU_INIT_REGION(5);
+ #endif
+
+ #if defined (SAU_INIT_REGION6) && (SAU_INIT_REGION6 == 1U)
+ SAU_INIT_REGION(6);
+ #endif
+
+ #if defined (SAU_INIT_REGION7) && (SAU_INIT_REGION7 == 1U)
+ SAU_INIT_REGION(7);
+ #endif
+
+ /* repeat this for all possible SAU regions */
+
+#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */
+
+
+ #if defined (SAU_INIT_CTRL) && (SAU_INIT_CTRL == 1U)
+ SAU->CTRL = ((SAU_INIT_CTRL_ENABLE << SAU_CTRL_ENABLE_Pos) & SAU_CTRL_ENABLE_Msk) |
+ ((SAU_INIT_CTRL_ALLNS << SAU_CTRL_ALLNS_Pos) & SAU_CTRL_ALLNS_Msk) ;
+ #endif
+
+ #if defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U)
+ SCB->SCR = (SCB->SCR & ~(SCB_SCR_SLEEPDEEPS_Msk )) |
+ ((SCB_CSR_DEEPSLEEPS_VAL << SCB_SCR_SLEEPDEEPS_Pos) & SCB_SCR_SLEEPDEEPS_Msk);
+
+ SCB->AIRCR = (SCB->AIRCR & ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_SYSRESETREQS_Msk |
+ SCB_AIRCR_BFHFNMINS_Msk | SCB_AIRCR_PRIS_Msk) ) |
+ ((0x05FAU << SCB_AIRCR_VECTKEY_Pos) & SCB_AIRCR_VECTKEY_Msk) |
+ ((SCB_AIRCR_SYSRESETREQS_VAL << SCB_AIRCR_SYSRESETREQS_Pos) & SCB_AIRCR_SYSRESETREQS_Msk) |
+ ((SCB_AIRCR_PRIS_VAL << SCB_AIRCR_PRIS_Pos) & SCB_AIRCR_PRIS_Msk) |
+ ((SCB_AIRCR_BFHFNMINS_VAL << SCB_AIRCR_BFHFNMINS_Pos) & SCB_AIRCR_BFHFNMINS_Msk);
+ #endif /* defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U) */
+
+ #if defined (__FPU_USED) && (__FPU_USED == 1U) && \
+ defined (TZ_FPU_NS_USAGE) && (TZ_FPU_NS_USAGE == 1U)
+
+ SCB->NSACR = (SCB->NSACR & ~(SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk)) |
+ ((SCB_NSACR_CP10_11_VAL << SCB_NSACR_CP10_Pos) & (SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk));
+
+ FPU->FPCCR = (FPU->FPCCR & ~(FPU_FPCCR_TS_Msk | FPU_FPCCR_CLRONRETS_Msk | FPU_FPCCR_CLRONRET_Msk)) |
+ ((FPU_FPCCR_TS_VAL << FPU_FPCCR_TS_Pos ) & FPU_FPCCR_TS_Msk ) |
+ ((FPU_FPCCR_CLRONRETS_VAL << FPU_FPCCR_CLRONRETS_Pos) & FPU_FPCCR_CLRONRETS_Msk) |
+ ((FPU_FPCCR_CLRONRET_VAL << FPU_FPCCR_CLRONRET_Pos ) & FPU_FPCCR_CLRONRET_Msk );
+ #endif
+
+ #if defined (NVIC_INIT_ITNS0) && (NVIC_INIT_ITNS0 == 1U)
+ NVIC->ITNS[0] = NVIC_INIT_ITNS0_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS1) && (NVIC_INIT_ITNS1 == 1U)
+ NVIC->ITNS[1] = NVIC_INIT_ITNS1_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS2) && (NVIC_INIT_ITNS2 == 1U)
+ NVIC->ITNS[2] = NVIC_INIT_ITNS2_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS3) && (NVIC_INIT_ITNS3 == 1U)
+ NVIC->ITNS[3] = NVIC_INIT_ITNS3_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS4) && (NVIC_INIT_ITNS4 == 1U)
+ NVIC->ITNS[4] = NVIC_INIT_ITNS4_VAL;
+ #endif
+
+}
+
+#endif /* PARTITION_STM32H533XX_H */
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h562xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h562xx.h
new file mode 100644
index 000000000..2ccd25022
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h562xx.h
@@ -0,0 +1,678 @@
+/**
+ ******************************************************************************
+ * @file partition_stm32h562xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H562xx Device Header File for Initial Setup for Secure /
+ * Non-Secure Zones for ARMCM33 based on CMSIS CORE partition_ARMCM33.h
+ * Template.
+ *
+ * This file contains:
+ * - Initialize Security Attribution Unit (SAU) CTRL register
+ * - Setup behavior of Sleep and Exception Handling
+ * - Setup behavior of Floating Point Unit
+ * - Setup Interrupt Target
+ *
+ ******************************************************************************
+ * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
+ * Copyright (c) 2023 STMicroelectronics. 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 PARTITION_STM32H562XX_H
+#define PARTITION_STM32H562XX_H
+
+/*
+//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
+*/
+
+/*
+// Initialize Security Attribution Unit (SAU) CTRL register
+*/
+#define SAU_INIT_CTRL 1
+
+/*
+// Enable SAU
+// Value for SAU->CTRL register bit ENABLE
+*/
+#define SAU_INIT_CTRL_ENABLE 0
+
+/*
+// When SAU is disabled
+// <0=> All Memory is Secure
+// <1=> All Memory is Non-Secure
+// Value for SAU->CTRL register bit ALLNS
+// When all Memory is Non-Secure (ALLNS is 1), IDAU can override memory map configuration.
+*/
+#define SAU_INIT_CTRL_ALLNS 1
+
+/*
+//
+*/
+
+/*
+// Initialize Security Attribution Unit (SAU) Address Regions
+// SAU configuration specifies regions to be one of:
+// - Secure and Non-Secure Callable
+// - Non-Secure
+// Note: All memory regions not configured by SAU are Secure
+*/
+#define SAU_REGIONS_MAX 8 /* Max. number of SAU regions */
+
+/*
+// Initialize SAU Region 0
+// Setup SAU Region 0 memory attributes
+*/
+#define SAU_INIT_REGION0 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START0 0x0C0FE000 /* start address of SAU region 0 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END0 0x0C0FFFFF /* end address of SAU region 0 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC0 1
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 1
+// Setup SAU Region 1 memory attributes
+*/
+#define SAU_INIT_REGION1 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START1 0x08100000 /* start address of SAU region 1 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END1 0x081FFFFF /* end address of SAU region 1 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC1 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 2
+// Setup SAU Region 2 memory attributes
+*/
+#define SAU_INIT_REGION2 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START2 0x20050000 /* start address of SAU region 2 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END2 0x2009FFFF /* end address of SAU region 2 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC2 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 3
+// Setup SAU Region 3 memory attributes
+*/
+#define SAU_INIT_REGION3 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START3 0x40000000 /* start address of SAU region 3 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END3 0x4FFFFFFF /* end address of SAU region 3 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC3 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 4
+// Setup SAU Region 4 memory attributes
+*/
+#define SAU_INIT_REGION4 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START4 0x60000000 /* start address of SAU region 4 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END4 0x9FFFFFFF /* end address of SAU region 4 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC4 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 5
+// Setup SAU Region 5 memory attributes
+*/
+#define SAU_INIT_REGION5 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START5 0x0BF90000 /* start address of SAU region 5 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END5 0x0BFA8FFF /* end address of SAU region 5 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC5 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 6
+// Setup SAU Region 6 memory attributes
+*/
+#define SAU_INIT_REGION6 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START6 0x00000000 /* start address of SAU region 6 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END6 0x00000000 /* end address of SAU region 6 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC6 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 7
+// Setup SAU Region 7 memory attributes
+*/
+#define SAU_INIT_REGION7 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START7 0x00000000 /* start address of SAU region 7 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END7 0x00000000 /* end address of SAU region 7 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC7 0
+/*
+//
+*/
+
+/*
+//
+*/
+
+/*
+// Setup behaviour of Sleep and Exception Handling
+*/
+#define SCB_CSR_AIRCR_INIT 0
+
+/*
+// Deep Sleep can be enabled by
+// <0=>Secure and Non-Secure state
+// <1=>Secure state only
+// Value for SCB->CSR register bit DEEPSLEEPS
+*/
+#define SCB_CSR_DEEPSLEEPS_VAL 0
+
+/*
+// System reset request accessible from
+// <0=> Secure and Non-Secure state
+// <1=> Secure state only
+// Value for SCB->AIRCR register bit SYSRESETREQS
+*/
+#define SCB_AIRCR_SYSRESETREQS_VAL 0
+
+/*
+// Priority of Non-Secure exceptions is
+// <0=> Not altered
+// <1=> Lowered to 0x04-0x07
+// Value for SCB->AIRCR register bit PRIS
+*/
+#define SCB_AIRCR_PRIS_VAL 0
+
+/*
+// BusFault, HardFault, and NMI target
+// <0=> Secure state
+// <1=> Non-Secure state
+// Value for SCB->AIRCR register bit BFHFNMINS
+*/
+#define SCB_AIRCR_BFHFNMINS_VAL 0
+
+/*
+//
+*/
+
+/*
+// Setup behaviour of Floating Point Unit
+*/
+#define TZ_FPU_NS_USAGE 1
+
+/*
+// Floating Point Unit usage
+// <0=> Secure state only
+// <3=> Secure and Non-Secure state
+// Value for SCB->NSACR register bits CP10, CP11
+*/
+#define SCB_NSACR_CP10_11_VAL 3
+
+/*
+// Treat floating-point registers as Secure
+// <0=> Disabled
+// <1=> Enabled
+// Value for FPU->FPCCR register bit TS
+*/
+#define FPU_FPCCR_TS_VAL 0
+
+/*
+// Clear on return (CLRONRET) accessibility
+// <0=> Secure and Non-Secure state
+// <1=> Secure state only
+// Value for FPU->FPCCR register bit CLRONRETS
+*/
+#define FPU_FPCCR_CLRONRETS_VAL 0
+
+/*
+// Clear floating-point caller saved registers on exception return
+// <0=> Disabled
+// <1=> Enabled
+// Value for FPU->FPCCR register bit CLRONRET
+*/
+#define FPU_FPCCR_CLRONRET_VAL 1
+
+/*
+//
+*/
+
+/*
+// Setup Interrupt Target
+*/
+
+/*
+// Initialize ITNS 0 (Interrupts 0..31)
+*/
+#define NVIC_INIT_ITNS0 1
+
+/*
+// Interrupts 0..31
+// WWDG_IRQn <0=> Secure state <1=> Non-Secure state
+// PVD_AVD_IRQn <0=> Secure state <1=> Non-Secure state
+// RTC_IRQn <0=> Secure state <1=> Non-Secure state
+// RTC_S_IRQn <0=> Secure state <1=> Non-Secure state
+// TAMP_IRQn <0=> Secure state <1=> Non-Secure state
+// RAMCFG_IRQn <0=> Secure state <1=> Non-Secure state
+// FLASH_IRQn <0=> Secure state <1=> Non-Secure state
+// FLASH_S_IRQn <0=> Secure state <1=> Non-Secure state
+// GTZC_IRQn <0=> Secure state <1=> Non-Secure state
+// RCC_IRQn <0=> Secure state <1=> Non-Secure state
+// RCC_S_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI0_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI1_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI2_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI3_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI4_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI5_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI6_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI7_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI8_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI9_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI10_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI11_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI12_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI13_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI14_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI15_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel0_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel1_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel3_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel4_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS0_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 1 (Interrupts 32..63)
+*/
+#define NVIC_INIT_ITNS1 1
+
+/*
+// Interrupts 32..63
+// GPDMA1_Channel5_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel7_IRQn <0=> Secure state <1=> Non-Secure state
+// IWDG_IRQn <0=> Secure state <1=> Non-Secure state
+// ADC1_IRQn <0=> Secure state <1=> Non-Secure state
+// DAC1_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN1_IT0_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN1_IT1_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_BRK_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_UP_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_TRG_COM_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_CC_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM2_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM3_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM4_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM5_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM6_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM7_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C1_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C1_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C2_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C2_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI2_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI3_IRQn <0=> Secure state <1=> Non-Secure state
+// USART1_IRQn <0=> Secure state <1=> Non-Secure state
+// USART2_IRQn <0=> Secure state <1=> Non-Secure state
+// USART3_IRQn <0=> Secure state <1=> Non-Secure state
+// UART4_IRQn <0=> Secure state <1=> Non-Secure state
+// UART5_IRQn <0=> Secure state <1=> Non-Secure state
+// LPUART1_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS1_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 2 (Interrupts 64..95)
+*/
+#define NVIC_INIT_ITNS2 1
+
+/*
+// Interrupts 64..95
+// LPTIM1_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_BRK_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_UP_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_TRG_COM_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_CC_IRQn <0=> Secure state <1=> Non-Secure state
+// ADC2_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM2_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM15_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM16_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM17_IRQn <0=> Secure state <1=> Non-Secure state
+// USB_DRD_FS_IRQn <0=> Secure state <1=> Non-Secure state
+// CRS_IRQn <0=> Secure state <1=> Non-Secure state
+// UCPD1_IRQn <0=> Secure state <1=> Non-Secure state
+// FMC_IRQn <0=> Secure state <1=> Non-Secure state
+// OCTOSPI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SDMMC1_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C3_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C3_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI4_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI5_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI6_IRQn <0=> Secure state <1=> Non-Secure state
+// USART6_IRQn <0=> Secure state <1=> Non-Secure state
+// USART10_IRQn <0=> Secure state <1=> Non-Secure state
+// USART11_IRQn <0=> Secure state <1=> Non-Secure state
+// SAI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SAI2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel0_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel1_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel3_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel4_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel5_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS2_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 3 (Interrupts 96..127)
+*/
+#define NVIC_INIT_ITNS3 1
+
+/*
+// Interrupts 96..127
+// GPDMA2_Channel6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel7_IRQn <0=> Secure state <1=> Non-Secure state
+// UART7_IRQn <0=> Secure state <1=> Non-Secure state
+// UART8_IRQn <0=> Secure state <1=> Non-Secure state
+// UART9_IRQn <0=> Secure state <1=> Non-Secure state
+// UART12_IRQn <0=> Secure state <1=> Non-Secure state
+// FPU_IRQn <0=> Secure state <1=> Non-Secure state
+// ICACHE_IRQn <0=> Secure state <1=> Non-Secure state
+// DCACHE_IRQn <0=> Secure state <1=> Non-Secure state
+// DCMI_PSSI_IRQn <0=> Secure state <1=> Non-Secure state
+// CORDIC_IRQn <0=> Secure state <1=> Non-Secure state
+// FMAC_IRQn <0=> Secure state <1=> Non-Secure state
+// DTS_IRQn <0=> Secure state <1=> Non-Secure state
+// RNG_IRQn <0=> Secure state <1=> Non-Secure state
+// HASH_IRQn <0=> Secure state <1=> Non-Secure state
+// CEC_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM12_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM13_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM14_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C1_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C1_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C4_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C4_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM3_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS3_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 4 (Interrupts 128..130)
+*/
+#define NVIC_INIT_ITNS4 1
+
+/*
+// Interrupts 128..130
+// LPTIM4_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM5_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM6_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS4_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+//
+*/
+
+/*
+ max 8 SAU regions.
+ SAU regions are defined in partition.h
+ */
+
+#define SAU_INIT_REGION(n) \
+ SAU->RNR = (n & SAU_RNR_REGION_Msk); \
+ SAU->RBAR = (SAU_INIT_START##n & SAU_RBAR_BADDR_Msk); \
+ SAU->RLAR = (SAU_INIT_END##n & SAU_RLAR_LADDR_Msk) | \
+ ((SAU_INIT_NSC##n << SAU_RLAR_NSC_Pos) & SAU_RLAR_NSC_Msk) | 1U
+
+/**
+ \brief Setup a SAU Region
+ \details Writes the region information contained in SAU_Region to the
+ registers SAU_RNR, SAU_RBAR, and SAU_RLAR
+ */
+__STATIC_INLINE void TZ_SAU_Setup (void)
+{
+
+#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)
+
+ #if defined (SAU_INIT_REGION0) && (SAU_INIT_REGION0 == 1U)
+ SAU_INIT_REGION(0);
+ #endif
+
+ #if defined (SAU_INIT_REGION1) && (SAU_INIT_REGION1 == 1U)
+ SAU_INIT_REGION(1);
+ #endif
+
+ #if defined (SAU_INIT_REGION2) && (SAU_INIT_REGION2 == 1U)
+ SAU_INIT_REGION(2);
+ #endif
+
+ #if defined (SAU_INIT_REGION3) && (SAU_INIT_REGION3 == 1U)
+ SAU_INIT_REGION(3);
+ #endif
+
+ #if defined (SAU_INIT_REGION4) && (SAU_INIT_REGION4 == 1U)
+ SAU_INIT_REGION(4);
+ #endif
+
+ #if defined (SAU_INIT_REGION5) && (SAU_INIT_REGION5 == 1U)
+ SAU_INIT_REGION(5);
+ #endif
+
+ #if defined (SAU_INIT_REGION6) && (SAU_INIT_REGION6 == 1U)
+ SAU_INIT_REGION(6);
+ #endif
+
+ #if defined (SAU_INIT_REGION7) && (SAU_INIT_REGION7 == 1U)
+ SAU_INIT_REGION(7);
+ #endif
+
+ /* repeat this for all possible SAU regions */
+
+#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */
+
+
+ #if defined (SAU_INIT_CTRL) && (SAU_INIT_CTRL == 1U)
+ SAU->CTRL = ((SAU_INIT_CTRL_ENABLE << SAU_CTRL_ENABLE_Pos) & SAU_CTRL_ENABLE_Msk) |
+ ((SAU_INIT_CTRL_ALLNS << SAU_CTRL_ALLNS_Pos) & SAU_CTRL_ALLNS_Msk) ;
+ #endif
+
+ #if defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U)
+ SCB->SCR = (SCB->SCR & ~(SCB_SCR_SLEEPDEEPS_Msk )) |
+ ((SCB_CSR_DEEPSLEEPS_VAL << SCB_SCR_SLEEPDEEPS_Pos) & SCB_SCR_SLEEPDEEPS_Msk);
+
+ SCB->AIRCR = (SCB->AIRCR & ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_SYSRESETREQS_Msk |
+ SCB_AIRCR_BFHFNMINS_Msk | SCB_AIRCR_PRIS_Msk) ) |
+ ((0x05FAU << SCB_AIRCR_VECTKEY_Pos) & SCB_AIRCR_VECTKEY_Msk) |
+ ((SCB_AIRCR_SYSRESETREQS_VAL << SCB_AIRCR_SYSRESETREQS_Pos) & SCB_AIRCR_SYSRESETREQS_Msk) |
+ ((SCB_AIRCR_PRIS_VAL << SCB_AIRCR_PRIS_Pos) & SCB_AIRCR_PRIS_Msk) |
+ ((SCB_AIRCR_BFHFNMINS_VAL << SCB_AIRCR_BFHFNMINS_Pos) & SCB_AIRCR_BFHFNMINS_Msk);
+ #endif /* defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U) */
+
+ #if defined (__FPU_USED) && (__FPU_USED == 1U) && \
+ defined (TZ_FPU_NS_USAGE) && (TZ_FPU_NS_USAGE == 1U)
+
+ SCB->NSACR = (SCB->NSACR & ~(SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk)) |
+ ((SCB_NSACR_CP10_11_VAL << SCB_NSACR_CP10_Pos) & (SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk));
+
+ FPU->FPCCR = (FPU->FPCCR & ~(FPU_FPCCR_TS_Msk | FPU_FPCCR_CLRONRETS_Msk | FPU_FPCCR_CLRONRET_Msk)) |
+ ((FPU_FPCCR_TS_VAL << FPU_FPCCR_TS_Pos ) & FPU_FPCCR_TS_Msk ) |
+ ((FPU_FPCCR_CLRONRETS_VAL << FPU_FPCCR_CLRONRETS_Pos) & FPU_FPCCR_CLRONRETS_Msk) |
+ ((FPU_FPCCR_CLRONRET_VAL << FPU_FPCCR_CLRONRET_Pos ) & FPU_FPCCR_CLRONRET_Msk );
+ #endif
+
+ #if defined (NVIC_INIT_ITNS0) && (NVIC_INIT_ITNS0 == 1U)
+ NVIC->ITNS[0] = NVIC_INIT_ITNS0_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS1) && (NVIC_INIT_ITNS1 == 1U)
+ NVIC->ITNS[1] = NVIC_INIT_ITNS1_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS2) && (NVIC_INIT_ITNS2 == 1U)
+ NVIC->ITNS[2] = NVIC_INIT_ITNS2_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS3) && (NVIC_INIT_ITNS3 == 1U)
+ NVIC->ITNS[3] = NVIC_INIT_ITNS3_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS4) && (NVIC_INIT_ITNS4 == 1U)
+ NVIC->ITNS[4] = NVIC_INIT_ITNS4_VAL;
+ #endif
+
+}
+
+#endif /* PARTITION_STM32H562XX_H */
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h563xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h563xx.h
new file mode 100644
index 000000000..352af4c68
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h563xx.h
@@ -0,0 +1,683 @@
+/**
+ ******************************************************************************
+ * @file partition_stm32h563xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H563xx Device Header File for Initial Setup for Secure /
+ * Non-Secure Zones for ARMCM33 based on CMSIS CORE partition_ARMCM33.h
+ * Template.
+ *
+ * This file contains:
+ * - Initialize Security Attribution Unit (SAU) CTRL register
+ * - Setup behavior of Sleep and Exception Handling
+ * - Setup behavior of Floating Point Unit
+ * - Setup Interrupt Target
+ *
+ ******************************************************************************
+ * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
+ * Copyright (c) 2023 STMicroelectronics. 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 PARTITION_STM32H563XX_H
+#define PARTITION_STM32H563XX_H
+
+/*
+//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
+*/
+
+/*
+// Initialize Security Attribution Unit (SAU) CTRL register
+*/
+#define SAU_INIT_CTRL 1
+
+/*
+// Enable SAU
+// Value for SAU->CTRL register bit ENABLE
+*/
+#define SAU_INIT_CTRL_ENABLE 0
+
+/*
+// When SAU is disabled
+// <0=> All Memory is Secure
+// <1=> All Memory is Non-Secure
+// Value for SAU->CTRL register bit ALLNS
+// When all Memory is Non-Secure (ALLNS is 1), IDAU can override memory map configuration.
+*/
+#define SAU_INIT_CTRL_ALLNS 1
+
+/*
+//
+*/
+
+/*
+// Initialize Security Attribution Unit (SAU) Address Regions
+// SAU configuration specifies regions to be one of:
+// - Secure and Non-Secure Callable
+// - Non-Secure
+// Note: All memory regions not configured by SAU are Secure
+*/
+#define SAU_REGIONS_MAX 8 /* Max. number of SAU regions */
+
+/*
+// Initialize SAU Region 0
+// Setup SAU Region 0 memory attributes
+*/
+#define SAU_INIT_REGION0 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START0 0x0C0FE000 /* start address of SAU region 0 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END0 0x0C0FFFFF /* end address of SAU region 0 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC0 1
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 1
+// Setup SAU Region 1 memory attributes
+*/
+#define SAU_INIT_REGION1 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START1 0x08100000 /* start address of SAU region 1 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END1 0x081FFFFF /* end address of SAU region 1 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC1 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 2
+// Setup SAU Region 2 memory attributes
+*/
+#define SAU_INIT_REGION2 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START2 0x20050000 /* start address of SAU region 2 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END2 0x2009FFFF /* end address of SAU region 2 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC2 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 3
+// Setup SAU Region 3 memory attributes
+*/
+#define SAU_INIT_REGION3 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START3 0x40000000 /* start address of SAU region 3 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END3 0x4FFFFFFF /* end address of SAU region 3 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC3 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 4
+// Setup SAU Region 4 memory attributes
+*/
+#define SAU_INIT_REGION4 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START4 0x60000000 /* start address of SAU region 4 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END4 0x9FFFFFFF /* end address of SAU region 4 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC4 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 5
+// Setup SAU Region 5 memory attributes
+*/
+#define SAU_INIT_REGION5 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START5 0x0BF90000 /* start address of SAU region 5 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END5 0x0BFA8FFF /* end address of SAU region 5 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC5 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 6
+// Setup SAU Region 6 memory attributes
+*/
+#define SAU_INIT_REGION6 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START6 0x00000000 /* start address of SAU region 6 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END6 0x00000000 /* end address of SAU region 6 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC6 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 7
+// Setup SAU Region 7 memory attributes
+*/
+#define SAU_INIT_REGION7 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START7 0x00000000 /* start address of SAU region 7 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END7 0x00000000 /* end address of SAU region 7 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC7 0
+/*
+//
+*/
+
+/*
+//
+*/
+
+/*
+// Setup behaviour of Sleep and Exception Handling
+*/
+#define SCB_CSR_AIRCR_INIT 0
+
+/*
+// Deep Sleep can be enabled by
+// <0=>Secure and Non-Secure state
+// <1=>Secure state only
+// Value for SCB->CSR register bit DEEPSLEEPS
+*/
+#define SCB_CSR_DEEPSLEEPS_VAL 0
+
+/*
+// System reset request accessible from
+// <0=> Secure and Non-Secure state
+// <1=> Secure state only
+// Value for SCB->AIRCR register bit SYSRESETREQS
+*/
+#define SCB_AIRCR_SYSRESETREQS_VAL 0
+
+/*
+// Priority of Non-Secure exceptions is
+// <0=> Not altered
+// <1=> Lowered to 0x04-0x07
+// Value for SCB->AIRCR register bit PRIS
+*/
+#define SCB_AIRCR_PRIS_VAL 0
+
+/*
+// BusFault, HardFault, and NMI target
+// <0=> Secure state
+// <1=> Non-Secure state
+// Value for SCB->AIRCR register bit BFHFNMINS
+*/
+#define SCB_AIRCR_BFHFNMINS_VAL 0
+
+/*
+//
+*/
+
+/*
+// Setup behaviour of Floating Point Unit
+*/
+#define TZ_FPU_NS_USAGE 1
+
+/*
+// Floating Point Unit usage
+// <0=> Secure state only
+// <3=> Secure and Non-Secure state
+// Value for SCB->NSACR register bits CP10, CP11
+*/
+#define SCB_NSACR_CP10_11_VAL 3
+
+/*
+// Treat floating-point registers as Secure
+// <0=> Disabled
+// <1=> Enabled
+// Value for FPU->FPCCR register bit TS
+*/
+#define FPU_FPCCR_TS_VAL 0
+
+/*
+// Clear on return (CLRONRET) accessibility
+// <0=> Secure and Non-Secure state
+// <1=> Secure state only
+// Value for FPU->FPCCR register bit CLRONRETS
+*/
+#define FPU_FPCCR_CLRONRETS_VAL 0
+
+/*
+// Clear floating-point caller saved registers on exception return
+// <0=> Disabled
+// <1=> Enabled
+// Value for FPU->FPCCR register bit CLRONRET
+*/
+#define FPU_FPCCR_CLRONRET_VAL 1
+
+/*
+//
+*/
+
+/*
+// Setup Interrupt Target
+*/
+
+/*
+// Initialize ITNS 0 (Interrupts 0..31)
+*/
+#define NVIC_INIT_ITNS0 1
+
+/*
+// Interrupts 0..31
+// WWDG_IRQn <0=> Secure state <1=> Non-Secure state
+// PVD_AVD_IRQn <0=> Secure state <1=> Non-Secure state
+// RTC_IRQn <0=> Secure state <1=> Non-Secure state
+// RTC_S_IRQn <0=> Secure state <1=> Non-Secure state
+// TAMP_IRQn <0=> Secure state <1=> Non-Secure state
+// RAMCFG_IRQn <0=> Secure state <1=> Non-Secure state
+// FLASH_IRQn <0=> Secure state <1=> Non-Secure state
+// FLASH_S_IRQn <0=> Secure state <1=> Non-Secure state
+// GTZC_IRQn <0=> Secure state <1=> Non-Secure state
+// RCC_IRQn <0=> Secure state <1=> Non-Secure state
+// RCC_S_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI0_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI1_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI2_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI3_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI4_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI5_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI6_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI7_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI8_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI9_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI10_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI11_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI12_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI13_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI14_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI15_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel0_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel1_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel3_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel4_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS0_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 1 (Interrupts 32..63)
+*/
+#define NVIC_INIT_ITNS1 1
+
+/*
+// Interrupts 32..63
+// GPDMA1_Channel5_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel7_IRQn <0=> Secure state <1=> Non-Secure state
+// IWDG_IRQn <0=> Secure state <1=> Non-Secure state
+// ADC1_IRQn <0=> Secure state <1=> Non-Secure state
+// DAC1_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN1_IT0_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN1_IT1_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_BRK_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_UP_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_TRG_COM_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_CC_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM2_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM3_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM4_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM5_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM6_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM7_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C1_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C1_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C2_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C2_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI2_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI3_IRQn <0=> Secure state <1=> Non-Secure state
+// USART1_IRQn <0=> Secure state <1=> Non-Secure state
+// USART2_IRQn <0=> Secure state <1=> Non-Secure state
+// USART3_IRQn <0=> Secure state <1=> Non-Secure state
+// UART4_IRQn <0=> Secure state <1=> Non-Secure state
+// UART5_IRQn <0=> Secure state <1=> Non-Secure state
+// LPUART1_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS1_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 2 (Interrupts 64..95)
+*/
+#define NVIC_INIT_ITNS2 1
+
+/*
+// Interrupts 64..95
+// LPTIM1_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_BRK_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_UP_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_TRG_COM_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_CC_IRQn <0=> Secure state <1=> Non-Secure state
+// ADC2_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM2_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM15_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM16_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM17_IRQn <0=> Secure state <1=> Non-Secure state
+// USB_DRD_FS_IRQn <0=> Secure state <1=> Non-Secure state
+// CRS_IRQn <0=> Secure state <1=> Non-Secure state
+// UCPD1_IRQn <0=> Secure state <1=> Non-Secure state
+// FMC_IRQn <0=> Secure state <1=> Non-Secure state
+// OCTOSPI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SDMMC1_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C3_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C3_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI4_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI5_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI6_IRQn <0=> Secure state <1=> Non-Secure state
+// USART6_IRQn <0=> Secure state <1=> Non-Secure state
+// USART10_IRQn <0=> Secure state <1=> Non-Secure state
+// USART11_IRQn <0=> Secure state <1=> Non-Secure state
+// SAI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SAI2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel0_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel1_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel3_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel4_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel5_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS2_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 3 (Interrupts 96..127)
+*/
+#define NVIC_INIT_ITNS3 1
+
+/*
+// Interrupts 96..127
+// GPDMA2_Channel6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel7_IRQn <0=> Secure state <1=> Non-Secure state
+// UART7_IRQn <0=> Secure state <1=> Non-Secure state
+// UART8_IRQn <0=> Secure state <1=> Non-Secure state
+// UART9_IRQn <0=> Secure state <1=> Non-Secure state
+// UART12_IRQn <0=> Secure state <1=> Non-Secure state
+// SDMMC2_IRQn <0=> Secure state <1=> Non-Secure state
+// FPU_IRQn <0=> Secure state <1=> Non-Secure state
+// ICACHE_IRQn <0=> Secure state <1=> Non-Secure state
+// DCACHE_IRQn <0=> Secure state <1=> Non-Secure state
+// ETH_IRQn <0=> Secure state <1=> Non-Secure state
+// ETH_WKUP_IRQn <0=> Secure state <1=> Non-Secure state
+// DCMI_PSSI_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN2_IT0_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN2_IT1_IRQn <0=> Secure state <1=> Non-Secure state
+// CORDIC_IRQn <0=> Secure state <1=> Non-Secure state
+// FMAC_IRQn <0=> Secure state <1=> Non-Secure state
+// DTS_IRQn <0=> Secure state <1=> Non-Secure state
+// RNG_IRQn <0=> Secure state <1=> Non-Secure state
+// HASH_IRQn <0=> Secure state <1=> Non-Secure state
+// CEC_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM12_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM13_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM14_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C1_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C1_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C4_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C4_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM3_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS3_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 4 (Interrupts 128..130)
+*/
+#define NVIC_INIT_ITNS4 1
+
+/*
+// Interrupts 128..130
+// LPTIM4_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM5_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM6_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS4_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+//
+*/
+
+/*
+ max 8 SAU regions.
+ SAU regions are defined in partition.h
+ */
+
+#define SAU_INIT_REGION(n) \
+ SAU->RNR = (n & SAU_RNR_REGION_Msk); \
+ SAU->RBAR = (SAU_INIT_START##n & SAU_RBAR_BADDR_Msk); \
+ SAU->RLAR = (SAU_INIT_END##n & SAU_RLAR_LADDR_Msk) | \
+ ((SAU_INIT_NSC##n << SAU_RLAR_NSC_Pos) & SAU_RLAR_NSC_Msk) | 1U
+
+/**
+ \brief Setup a SAU Region
+ \details Writes the region information contained in SAU_Region to the
+ registers SAU_RNR, SAU_RBAR, and SAU_RLAR
+ */
+__STATIC_INLINE void TZ_SAU_Setup (void)
+{
+
+#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)
+
+ #if defined (SAU_INIT_REGION0) && (SAU_INIT_REGION0 == 1U)
+ SAU_INIT_REGION(0);
+ #endif
+
+ #if defined (SAU_INIT_REGION1) && (SAU_INIT_REGION1 == 1U)
+ SAU_INIT_REGION(1);
+ #endif
+
+ #if defined (SAU_INIT_REGION2) && (SAU_INIT_REGION2 == 1U)
+ SAU_INIT_REGION(2);
+ #endif
+
+ #if defined (SAU_INIT_REGION3) && (SAU_INIT_REGION3 == 1U)
+ SAU_INIT_REGION(3);
+ #endif
+
+ #if defined (SAU_INIT_REGION4) && (SAU_INIT_REGION4 == 1U)
+ SAU_INIT_REGION(4);
+ #endif
+
+ #if defined (SAU_INIT_REGION5) && (SAU_INIT_REGION5 == 1U)
+ SAU_INIT_REGION(5);
+ #endif
+
+ #if defined (SAU_INIT_REGION6) && (SAU_INIT_REGION6 == 1U)
+ SAU_INIT_REGION(6);
+ #endif
+
+ #if defined (SAU_INIT_REGION7) && (SAU_INIT_REGION7 == 1U)
+ SAU_INIT_REGION(7);
+ #endif
+
+ /* repeat this for all possible SAU regions */
+
+#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */
+
+
+ #if defined (SAU_INIT_CTRL) && (SAU_INIT_CTRL == 1U)
+ SAU->CTRL = ((SAU_INIT_CTRL_ENABLE << SAU_CTRL_ENABLE_Pos) & SAU_CTRL_ENABLE_Msk) |
+ ((SAU_INIT_CTRL_ALLNS << SAU_CTRL_ALLNS_Pos) & SAU_CTRL_ALLNS_Msk) ;
+ #endif
+
+ #if defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U)
+ SCB->SCR = (SCB->SCR & ~(SCB_SCR_SLEEPDEEPS_Msk )) |
+ ((SCB_CSR_DEEPSLEEPS_VAL << SCB_SCR_SLEEPDEEPS_Pos) & SCB_SCR_SLEEPDEEPS_Msk);
+
+ SCB->AIRCR = (SCB->AIRCR & ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_SYSRESETREQS_Msk |
+ SCB_AIRCR_BFHFNMINS_Msk | SCB_AIRCR_PRIS_Msk) ) |
+ ((0x05FAU << SCB_AIRCR_VECTKEY_Pos) & SCB_AIRCR_VECTKEY_Msk) |
+ ((SCB_AIRCR_SYSRESETREQS_VAL << SCB_AIRCR_SYSRESETREQS_Pos) & SCB_AIRCR_SYSRESETREQS_Msk) |
+ ((SCB_AIRCR_PRIS_VAL << SCB_AIRCR_PRIS_Pos) & SCB_AIRCR_PRIS_Msk) |
+ ((SCB_AIRCR_BFHFNMINS_VAL << SCB_AIRCR_BFHFNMINS_Pos) & SCB_AIRCR_BFHFNMINS_Msk);
+ #endif /* defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U) */
+
+ #if defined (__FPU_USED) && (__FPU_USED == 1U) && \
+ defined (TZ_FPU_NS_USAGE) && (TZ_FPU_NS_USAGE == 1U)
+
+ SCB->NSACR = (SCB->NSACR & ~(SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk)) |
+ ((SCB_NSACR_CP10_11_VAL << SCB_NSACR_CP10_Pos) & (SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk));
+
+ FPU->FPCCR = (FPU->FPCCR & ~(FPU_FPCCR_TS_Msk | FPU_FPCCR_CLRONRETS_Msk | FPU_FPCCR_CLRONRET_Msk)) |
+ ((FPU_FPCCR_TS_VAL << FPU_FPCCR_TS_Pos ) & FPU_FPCCR_TS_Msk ) |
+ ((FPU_FPCCR_CLRONRETS_VAL << FPU_FPCCR_CLRONRETS_Pos) & FPU_FPCCR_CLRONRETS_Msk) |
+ ((FPU_FPCCR_CLRONRET_VAL << FPU_FPCCR_CLRONRET_Pos ) & FPU_FPCCR_CLRONRET_Msk );
+ #endif
+
+ #if defined (NVIC_INIT_ITNS0) && (NVIC_INIT_ITNS0 == 1U)
+ NVIC->ITNS[0] = NVIC_INIT_ITNS0_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS1) && (NVIC_INIT_ITNS1 == 1U)
+ NVIC->ITNS[1] = NVIC_INIT_ITNS1_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS2) && (NVIC_INIT_ITNS2 == 1U)
+ NVIC->ITNS[2] = NVIC_INIT_ITNS2_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS3) && (NVIC_INIT_ITNS3 == 1U)
+ NVIC->ITNS[3] = NVIC_INIT_ITNS3_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS4) && (NVIC_INIT_ITNS4 == 1U)
+ NVIC->ITNS[4] = NVIC_INIT_ITNS4_VAL;
+ #endif
+
+}
+
+#endif /* PARTITION_STM32H563XX_H */
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h573xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h573xx.h
new file mode 100644
index 000000000..aac40b686
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/Templates/partition_stm32h573xx.h
@@ -0,0 +1,687 @@
+/**
+ ******************************************************************************
+ * @file partition_stm32h573xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H573xx Device Header File for Initial Setup for Secure /
+ * Non-Secure Zones for ARMCM33 based on CMSIS CORE partition_ARMCM33.h
+ * Template.
+ *
+ * This file contains:
+ * - Initialize Security Attribution Unit (SAU) CTRL register
+ * - Setup behavior of Sleep and Exception Handling
+ * - Setup behavior of Floating Point Unit
+ * - Setup Interrupt Target
+ *
+ ******************************************************************************
+ * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
+ * Copyright (c) 2023 STMicroelectronics. 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 PARTITION_STM32H573XX_H
+#define PARTITION_STM32H573XX_H
+
+/*
+//-------- <<< Use Configuration Wizard in Context Menu >>> -----------------
+*/
+
+/*
+// Initialize Security Attribution Unit (SAU) CTRL register
+*/
+#define SAU_INIT_CTRL 1
+
+/*
+// Enable SAU
+// Value for SAU->CTRL register bit ENABLE
+*/
+#define SAU_INIT_CTRL_ENABLE 0
+
+/*
+// When SAU is disabled
+// <0=> All Memory is Secure
+// <1=> All Memory is Non-Secure
+// Value for SAU->CTRL register bit ALLNS
+// When all Memory is Non-Secure (ALLNS is 1), IDAU can override memory map configuration.
+*/
+#define SAU_INIT_CTRL_ALLNS 1
+
+/*
+//
+*/
+
+/*
+// Initialize Security Attribution Unit (SAU) Address Regions
+// SAU configuration specifies regions to be one of:
+// - Secure and Non-Secure Callable
+// - Non-Secure
+// Note: All memory regions not configured by SAU are Secure
+*/
+#define SAU_REGIONS_MAX 8 /* Max. number of SAU regions */
+
+/*
+// Initialize SAU Region 0
+// Setup SAU Region 0 memory attributes
+*/
+#define SAU_INIT_REGION0 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START0 0x0C0FE000 /* start address of SAU region 0 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END0 0x0C0FFFFF /* end address of SAU region 0 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC0 1
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 1
+// Setup SAU Region 1 memory attributes
+*/
+#define SAU_INIT_REGION1 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START1 0x08100000 /* start address of SAU region 1 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END1 0x081FFFFF /* end address of SAU region 1 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC1 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 2
+// Setup SAU Region 2 memory attributes
+*/
+#define SAU_INIT_REGION2 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START2 0x20050000 /* start address of SAU region 2 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END2 0x2009FFFF /* end address of SAU region 2 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC2 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 3
+// Setup SAU Region 3 memory attributes
+*/
+#define SAU_INIT_REGION3 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START3 0x40000000 /* start address of SAU region 3 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END3 0x4FFFFFFF /* end address of SAU region 3 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC3 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 4
+// Setup SAU Region 4 memory attributes
+*/
+#define SAU_INIT_REGION4 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START4 0x60000000 /* start address of SAU region 4 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END4 0x9FFFFFFF /* end address of SAU region 4 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC4 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 5
+// Setup SAU Region 5 memory attributes
+*/
+#define SAU_INIT_REGION5 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START5 0x0BF90000 /* start address of SAU region 5 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END5 0x0BFA8FFF /* end address of SAU region 5 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC5 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 6
+// Setup SAU Region 6 memory attributes
+*/
+#define SAU_INIT_REGION6 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START6 0x00000000 /* start address of SAU region 6 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END6 0x00000000 /* end address of SAU region 6 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC6 0
+/*
+//
+*/
+
+/*
+// Initialize SAU Region 7
+// Setup SAU Region 7 memory attributes
+*/
+#define SAU_INIT_REGION7 0
+
+/*
+// Start Address <0-0xFFFFFFE0>
+*/
+#define SAU_INIT_START7 0x00000000 /* start address of SAU region 7 */
+
+/*
+// End Address <0x1F-0xFFFFFFFF>
+*/
+#define SAU_INIT_END7 0x00000000 /* end address of SAU region 7 */
+
+/*
+// Region is
+// <0=>Non-Secure
+// <1=>Secure, Non-Secure Callable
+*/
+#define SAU_INIT_NSC7 0
+/*
+//
+*/
+
+/*
+//
+*/
+
+/*
+// Setup behaviour of Sleep and Exception Handling
+*/
+#define SCB_CSR_AIRCR_INIT 0
+
+/*
+// Deep Sleep can be enabled by
+// <0=>Secure and Non-Secure state
+// <1=>Secure state only
+// Value for SCB->CSR register bit DEEPSLEEPS
+*/
+#define SCB_CSR_DEEPSLEEPS_VAL 0
+
+/*
+// System reset request accessible from
+// <0=> Secure and Non-Secure state
+// <1=> Secure state only
+// Value for SCB->AIRCR register bit SYSRESETREQS
+*/
+#define SCB_AIRCR_SYSRESETREQS_VAL 0
+
+/*
+// Priority of Non-Secure exceptions is
+// <0=> Not altered
+// <1=> Lowered to 0x04-0x07
+// Value for SCB->AIRCR register bit PRIS
+*/
+#define SCB_AIRCR_PRIS_VAL 0
+
+/*
+// BusFault, HardFault, and NMI target
+// <0=> Secure state
+// <1=> Non-Secure state
+// Value for SCB->AIRCR register bit BFHFNMINS
+*/
+#define SCB_AIRCR_BFHFNMINS_VAL 0
+
+/*
+//
+*/
+
+/*
+// Setup behaviour of Floating Point Unit
+*/
+#define TZ_FPU_NS_USAGE 1
+
+/*
+// Floating Point Unit usage
+// <0=> Secure state only
+// <3=> Secure and Non-Secure state
+// Value for SCB->NSACR register bits CP10, CP11
+*/
+#define SCB_NSACR_CP10_11_VAL 3
+
+/*
+// Treat floating-point registers as Secure
+// <0=> Disabled
+// <1=> Enabled
+// Value for FPU->FPCCR register bit TS
+*/
+#define FPU_FPCCR_TS_VAL 0
+
+/*
+// Clear on return (CLRONRET) accessibility
+// <0=> Secure and Non-Secure state
+// <1=> Secure state only
+// Value for FPU->FPCCR register bit CLRONRETS
+*/
+#define FPU_FPCCR_CLRONRETS_VAL 0
+
+/*
+// Clear floating-point caller saved registers on exception return
+// <0=> Disabled
+// <1=> Enabled
+// Value for FPU->FPCCR register bit CLRONRET
+*/
+#define FPU_FPCCR_CLRONRET_VAL 1
+
+/*
+//
+*/
+
+/*
+// Setup Interrupt Target
+*/
+
+/*
+// Initialize ITNS 0 (Interrupts 0..31)
+*/
+#define NVIC_INIT_ITNS0 1
+
+/*
+// Interrupts 0..31
+// WWDG_IRQn <0=> Secure state <1=> Non-Secure state
+// PVD_AVD_IRQn <0=> Secure state <1=> Non-Secure state
+// RTC_IRQn <0=> Secure state <1=> Non-Secure state
+// RTC_S_IRQn <0=> Secure state <1=> Non-Secure state
+// TAMP_IRQn <0=> Secure state <1=> Non-Secure state
+// RAMCFG_IRQn <0=> Secure state <1=> Non-Secure state
+// FLASH_IRQn <0=> Secure state <1=> Non-Secure state
+// FLASH_S_IRQn <0=> Secure state <1=> Non-Secure state
+// GTZC_IRQn <0=> Secure state <1=> Non-Secure state
+// RCC_IRQn <0=> Secure state <1=> Non-Secure state
+// RCC_S_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI0_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI1_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI2_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI3_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI4_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI5_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI6_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI7_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI8_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI9_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI10_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI11_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI12_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI13_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI14_IRQn <0=> Secure state <1=> Non-Secure state
+// EXTI15_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel0_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel1_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel3_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel4_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS0_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 1 (Interrupts 32..63)
+*/
+#define NVIC_INIT_ITNS1 1
+
+/*
+// Interrupts 32..63
+// GPDMA1_Channel5_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA1_Channel7_IRQn <0=> Secure state <1=> Non-Secure state
+// IWDG_IRQn <0=> Secure state <1=> Non-Secure state
+// SAES_IRQn <0=> Secure state <1=> Non-Secure state
+// ADC1_IRQn <0=> Secure state <1=> Non-Secure state
+// DAC1_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN1_IT0_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN1_IT1_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_BRK_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_UP_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_TRG_COM_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM1_CC_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM2_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM3_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM4_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM5_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM6_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM7_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C1_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C1_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C2_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C2_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI2_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI3_IRQn <0=> Secure state <1=> Non-Secure state
+// USART1_IRQn <0=> Secure state <1=> Non-Secure state
+// USART2_IRQn <0=> Secure state <1=> Non-Secure state
+// USART3_IRQn <0=> Secure state <1=> Non-Secure state
+// UART4_IRQn <0=> Secure state <1=> Non-Secure state
+// UART5_IRQn <0=> Secure state <1=> Non-Secure state
+// LPUART1_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS1_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 2 (Interrupts 64..95)
+*/
+#define NVIC_INIT_ITNS2 1
+
+/*
+// Interrupts 64..95
+// LPTIM1_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_BRK_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_UP_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_TRG_COM_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM8_CC_IRQn <0=> Secure state <1=> Non-Secure state
+// ADC2_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM2_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM15_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM16_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM17_IRQn <0=> Secure state <1=> Non-Secure state
+// USB_DRD_FS_IRQn <0=> Secure state <1=> Non-Secure state
+// CRS_IRQn <0=> Secure state <1=> Non-Secure state
+// UCPD1_IRQn <0=> Secure state <1=> Non-Secure state
+// FMC_IRQn <0=> Secure state <1=> Non-Secure state
+// OCTOSPI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SDMMC1_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C3_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C3_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI4_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI5_IRQn <0=> Secure state <1=> Non-Secure state
+// SPI6_IRQn <0=> Secure state <1=> Non-Secure state
+// USART6_IRQn <0=> Secure state <1=> Non-Secure state
+// USART10_IRQn <0=> Secure state <1=> Non-Secure state
+// USART11_IRQn <0=> Secure state <1=> Non-Secure state
+// SAI1_IRQn <0=> Secure state <1=> Non-Secure state
+// SAI2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel0_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel1_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel2_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel3_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel4_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel5_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS2_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 3 (Interrupts 96..127)
+*/
+#define NVIC_INIT_ITNS3 1
+
+/*
+// Interrupts 96..127
+// GPDMA2_Channel6_IRQn <0=> Secure state <1=> Non-Secure state
+// GPDMA2_Channel7_IRQn <0=> Secure state <1=> Non-Secure state
+// UART7_IRQn <0=> Secure state <1=> Non-Secure state
+// UART8_IRQn <0=> Secure state <1=> Non-Secure state
+// UART9_IRQn <0=> Secure state <1=> Non-Secure state
+// UART12_IRQn <0=> Secure state <1=> Non-Secure state
+// SDMMC2_IRQn <0=> Secure state <1=> Non-Secure state
+// FPU_IRQn <0=> Secure state <1=> Non-Secure state
+// ICACHE_IRQn <0=> Secure state <1=> Non-Secure state
+// DCACHE_IRQn <0=> Secure state <1=> Non-Secure state
+// ETH_IRQn <0=> Secure state <1=> Non-Secure state
+// ETH_WKUP_IRQn <0=> Secure state <1=> Non-Secure state
+// DCMI_PSSI_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN2_IT0_IRQn <0=> Secure state <1=> Non-Secure state
+// FDCAN2_IT1_IRQn <0=> Secure state <1=> Non-Secure state
+// CORDIC_IRQn <0=> Secure state <1=> Non-Secure state
+// FMAC_IRQn <0=> Secure state <1=> Non-Secure state
+// DTS_IRQn <0=> Secure state <1=> Non-Secure state
+// RNG_IRQn <0=> Secure state <1=> Non-Secure state
+// OTFDEC1_IRQn <0=> Secure state <1=> Non-Secure state
+// AES_IRQn <0=> Secure state <1=> Non-Secure state
+// HASH_IRQn <0=> Secure state <1=> Non-Secure state
+// PKA_IRQn <0=> Secure state <1=> Non-Secure state
+// CEC_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM12_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM13_IRQn <0=> Secure state <1=> Non-Secure state
+// TIM14_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C1_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I3C1_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C4_EV_IRQn <0=> Secure state <1=> Non-Secure state
+// I2C4_ER_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM3_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS3_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+// Initialize ITNS 4 (Interrupts 128..130)
+*/
+#define NVIC_INIT_ITNS4 1
+
+/*
+// Interrupts 128..130
+// LPTIM4_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM5_IRQn <0=> Secure state <1=> Non-Secure state
+// LPTIM6_IRQn <0=> Secure state <1=> Non-Secure state
+*/
+#define NVIC_INIT_ITNS4_VAL 0x00000000
+
+/*
+//
+*/
+
+/*
+//
+*/
+
+/*
+ max 8 SAU regions.
+ SAU regions are defined in partition.h
+ */
+
+#define SAU_INIT_REGION(n) \
+ SAU->RNR = (n & SAU_RNR_REGION_Msk); \
+ SAU->RBAR = (SAU_INIT_START##n & SAU_RBAR_BADDR_Msk); \
+ SAU->RLAR = (SAU_INIT_END##n & SAU_RLAR_LADDR_Msk) | \
+ ((SAU_INIT_NSC##n << SAU_RLAR_NSC_Pos) & SAU_RLAR_NSC_Msk) | 1U
+
+/**
+ \brief Setup a SAU Region
+ \details Writes the region information contained in SAU_Region to the
+ registers SAU_RNR, SAU_RBAR, and SAU_RLAR
+ */
+__STATIC_INLINE void TZ_SAU_Setup (void)
+{
+
+#if defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U)
+
+ #if defined (SAU_INIT_REGION0) && (SAU_INIT_REGION0 == 1U)
+ SAU_INIT_REGION(0);
+ #endif
+
+ #if defined (SAU_INIT_REGION1) && (SAU_INIT_REGION1 == 1U)
+ SAU_INIT_REGION(1);
+ #endif
+
+ #if defined (SAU_INIT_REGION2) && (SAU_INIT_REGION2 == 1U)
+ SAU_INIT_REGION(2);
+ #endif
+
+ #if defined (SAU_INIT_REGION3) && (SAU_INIT_REGION3 == 1U)
+ SAU_INIT_REGION(3);
+ #endif
+
+ #if defined (SAU_INIT_REGION4) && (SAU_INIT_REGION4 == 1U)
+ SAU_INIT_REGION(4);
+ #endif
+
+ #if defined (SAU_INIT_REGION5) && (SAU_INIT_REGION5 == 1U)
+ SAU_INIT_REGION(5);
+ #endif
+
+ #if defined (SAU_INIT_REGION6) && (SAU_INIT_REGION6 == 1U)
+ SAU_INIT_REGION(6);
+ #endif
+
+ #if defined (SAU_INIT_REGION7) && (SAU_INIT_REGION7 == 1U)
+ SAU_INIT_REGION(7);
+ #endif
+
+ /* repeat this for all possible SAU regions */
+
+#endif /* defined (__SAUREGION_PRESENT) && (__SAUREGION_PRESENT == 1U) */
+
+
+ #if defined (SAU_INIT_CTRL) && (SAU_INIT_CTRL == 1U)
+ SAU->CTRL = ((SAU_INIT_CTRL_ENABLE << SAU_CTRL_ENABLE_Pos) & SAU_CTRL_ENABLE_Msk) |
+ ((SAU_INIT_CTRL_ALLNS << SAU_CTRL_ALLNS_Pos) & SAU_CTRL_ALLNS_Msk) ;
+ #endif
+
+ #if defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U)
+ SCB->SCR = (SCB->SCR & ~(SCB_SCR_SLEEPDEEPS_Msk )) |
+ ((SCB_CSR_DEEPSLEEPS_VAL << SCB_SCR_SLEEPDEEPS_Pos) & SCB_SCR_SLEEPDEEPS_Msk);
+
+ SCB->AIRCR = (SCB->AIRCR & ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_SYSRESETREQS_Msk |
+ SCB_AIRCR_BFHFNMINS_Msk | SCB_AIRCR_PRIS_Msk) ) |
+ ((0x05FAU << SCB_AIRCR_VECTKEY_Pos) & SCB_AIRCR_VECTKEY_Msk) |
+ ((SCB_AIRCR_SYSRESETREQS_VAL << SCB_AIRCR_SYSRESETREQS_Pos) & SCB_AIRCR_SYSRESETREQS_Msk) |
+ ((SCB_AIRCR_PRIS_VAL << SCB_AIRCR_PRIS_Pos) & SCB_AIRCR_PRIS_Msk) |
+ ((SCB_AIRCR_BFHFNMINS_VAL << SCB_AIRCR_BFHFNMINS_Pos) & SCB_AIRCR_BFHFNMINS_Msk);
+ #endif /* defined (SCB_CSR_AIRCR_INIT) && (SCB_CSR_AIRCR_INIT == 1U) */
+
+ #if defined (__FPU_USED) && (__FPU_USED == 1U) && \
+ defined (TZ_FPU_NS_USAGE) && (TZ_FPU_NS_USAGE == 1U)
+
+ SCB->NSACR = (SCB->NSACR & ~(SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk)) |
+ ((SCB_NSACR_CP10_11_VAL << SCB_NSACR_CP10_Pos) & (SCB_NSACR_CP10_Msk | SCB_NSACR_CP11_Msk));
+
+ FPU->FPCCR = (FPU->FPCCR & ~(FPU_FPCCR_TS_Msk | FPU_FPCCR_CLRONRETS_Msk | FPU_FPCCR_CLRONRET_Msk)) |
+ ((FPU_FPCCR_TS_VAL << FPU_FPCCR_TS_Pos ) & FPU_FPCCR_TS_Msk ) |
+ ((FPU_FPCCR_CLRONRETS_VAL << FPU_FPCCR_CLRONRETS_Pos) & FPU_FPCCR_CLRONRETS_Msk) |
+ ((FPU_FPCCR_CLRONRET_VAL << FPU_FPCCR_CLRONRET_Pos ) & FPU_FPCCR_CLRONRET_Msk );
+ #endif
+
+ #if defined (NVIC_INIT_ITNS0) && (NVIC_INIT_ITNS0 == 1U)
+ NVIC->ITNS[0] = NVIC_INIT_ITNS0_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS1) && (NVIC_INIT_ITNS1 == 1U)
+ NVIC->ITNS[1] = NVIC_INIT_ITNS1_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS2) && (NVIC_INIT_ITNS2 == 1U)
+ NVIC->ITNS[2] = NVIC_INIT_ITNS2_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS3) && (NVIC_INIT_ITNS3 == 1U)
+ NVIC->ITNS[3] = NVIC_INIT_ITNS3_VAL;
+ #endif
+
+ #if defined (NVIC_INIT_ITNS4) && (NVIC_INIT_ITNS4 == 1U)
+ NVIC->ITNS[4] = NVIC_INIT_ITNS4_VAL;
+ #endif
+
+}
+
+#endif /* PARTITION_STM32H573XX_H */
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/partition_stm32h5xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/partition_stm32h5xx.h
new file mode 100644
index 000000000..67e25534a
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/partition_stm32h5xx.h
@@ -0,0 +1,79 @@
+/**
+ ******************************************************************************
+ * @file partition_stm32h5xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H5xx Device Header File for Initial Setup for Secure /
+ * Non-Secure Zones for ARMCM33 based on CMSIS CORE partition_ARMCM33.h
+ * Template.
+ *
+ * The file is included in system_stm32h5xx_s.c in secure application.
+ * It includes the configuration section that allows to select the
+ * STM32H5xx device partitioning file for system core secure attributes
+ * and interrupt secure and non-secure assignment.
+ *
+ ******************************************************************************
+ * Copyright (c) 2009-2019 Arm Limited. All rights reserved.
+ * Copyright (c) 2023 STMicroelectronics. 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.
+ ******************************************************************************
+ */
+
+/** @addtogroup CMSIS
+ * @{
+ */
+
+/** @addtogroup stm32h5xx
+ * @{
+ */
+
+#ifndef PARTITION_STM32H5XX_H
+#define PARTITION_STM32H5XX_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif /* __cplusplus */
+
+/** @addtogroup Secure_configuration_section
+ * @{
+ */
+
+#if defined(STM32H573xx)
+ #include "partition_stm32h573xx.h"
+#elif defined(STM32H563xx)
+ #include "partition_stm32h563xx.h"
+#elif defined(STM32H562xx)
+ #include "partition_stm32h562xx.h"
+#elif defined(STM32H533xx)
+ #include "partition_stm32h533xx.h"
+#elif defined(STM32H523xx)
+ #include "partition_stm32h523xx.h"
+#else
+ #error "Please select first the target STM32H5xx device used in your application (in stm32h5xx.h file)"
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* PARTITION_STM32H5XX_H */
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h503xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h503xx.h
new file mode 100644
index 000000000..c92054272
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h503xx.h
@@ -0,0 +1,13622 @@
+/**
+ ******************************************************************************
+ * @file stm32h503xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H503xx Device Peripheral Access Layer Header File.
+ *
+ * This file contains:
+ * - Data structures and the address mapping for all peripherals
+ * - Peripheral's registers declarations and bits definition
+ * - Macros to access peripheral's registers hardware
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2023 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.
+ *
+ ******************************************************************************
+ */
+
+#ifndef STM32H503xx_H
+#define STM32H503xx_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** @addtogroup ST
+ * @{
+ */
+
+
+/** @addtogroup STM32H503xx
+ * @{
+ */
+
+
+/** @addtogroup Configuration_of_CMSIS
+ * @{
+ */
+
+
+/* =========================================================================================================================== */
+/* ================ Interrupt Number Definition ================ */
+/* =========================================================================================================================== */
+
+typedef enum
+{
+/* ======================================= ARM Cortex-M33 Specific Interrupt Numbers ======================================= */
+ Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */
+ NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */
+ HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */
+ MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation
+ and No Match */
+ BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory
+ related Fault */
+ UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */
+ SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */
+ DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */
+ PendSV_IRQn = -2, /*!< -2 Pendable request for system service */
+ SysTick_IRQn = -1, /*!< -1 System Tick Timer */
+
+/* =========================================== STM32H503xx Specific Interrupt Numbers ====================================== */
+ WWDG_IRQn = 0, /*!< Window WatchDog interrupt */
+ PVD_AVD_IRQn = 1, /*!< PVD/AVD through EXTI Line detection Interrupt */
+ RTC_IRQn = 2, /*!< RTC non-secure interrupt */
+ TAMP_IRQn = 4, /*!< Tamper global interrupt */
+ RAMCFG_IRQn = 5, /*!< RAMCFG global interrupt */
+ FLASH_IRQn = 6, /*!< FLASH non-secure global interrupt */
+ RCC_IRQn = 9, /*!< RCC non secure global interrupt */
+ EXTI0_IRQn = 11, /*!< EXTI Line0 interrupt */
+ EXTI1_IRQn = 12, /*!< EXTI Line1 interrupt */
+ EXTI2_IRQn = 13, /*!< EXTI Line2 interrupt */
+ EXTI3_IRQn = 14, /*!< EXTI Line3 interrupt */
+ EXTI4_IRQn = 15, /*!< EXTI Line4 interrupt */
+ EXTI5_IRQn = 16, /*!< EXTI Line5 interrupt */
+ EXTI6_IRQn = 17, /*!< EXTI Line6 interrupt */
+ EXTI7_IRQn = 18, /*!< EXTI Line7 interrupt */
+ EXTI8_IRQn = 19, /*!< EXTI Line8 interrupt */
+ EXTI9_IRQn = 20, /*!< EXTI Line9 interrupt */
+ EXTI10_IRQn = 21, /*!< EXTI Line10 interrupt */
+ EXTI11_IRQn = 22, /*!< EXTI Line11 interrupt */
+ EXTI12_IRQn = 23, /*!< EXTI Line12 interrupt */
+ EXTI13_IRQn = 24, /*!< EXTI Line13 interrupt */
+ EXTI14_IRQn = 25, /*!< EXTI Line14 interrupt */
+ EXTI15_IRQn = 26, /*!< EXTI Line15 interrupt */
+ GPDMA1_Channel0_IRQn = 27, /*!< GPDMA1 Channel 0 global interrupt */
+ GPDMA1_Channel1_IRQn = 28, /*!< GPDMA1 Channel 1 global interrupt */
+ GPDMA1_Channel2_IRQn = 29, /*!< GPDMA1 Channel 2 global interrupt */
+ GPDMA1_Channel3_IRQn = 30, /*!< GPDMA1 Channel 3 global interrupt */
+ GPDMA1_Channel4_IRQn = 31, /*!< GPDMA1 Channel 4 global interrupt */
+ GPDMA1_Channel5_IRQn = 32, /*!< GPDMA1 Channel 5 global interrupt */
+ GPDMA1_Channel6_IRQn = 33, /*!< GPDMA1 Channel 6 global interrupt */
+ GPDMA1_Channel7_IRQn = 34, /*!< GPDMA1 Channel 7 global interrupt */
+ IWDG_IRQn = 35, /*!< IWDG global interrupt */
+ ADC1_IRQn = 37, /*!< ADC1 global interrupt */
+ DAC1_IRQn = 38, /*!< DAC1 global interrupt */
+ FDCAN1_IT0_IRQn = 39, /*!< FDCAN1 interrupt 0 */
+ FDCAN1_IT1_IRQn = 40, /*!< FDCAN1 interrupt 1 */
+ TIM1_BRK_IRQn = 41, /*!< TIM1 Break interrupt */
+ TIM1_UP_IRQn = 42, /*!< TIM1 Update interrupt */
+ TIM1_TRG_COM_IRQn = 43, /*!< TIM1 Trigger and Commutation interrupt */
+ TIM1_CC_IRQn = 44, /*!< TIM1 Capture Compare interrupt */
+ TIM2_IRQn = 45, /*!< TIM2 global interrupt */
+ TIM3_IRQn = 46, /*!< TIM3 global interrupt */
+ TIM6_IRQn = 49, /*!< TIM6 global interrupt */
+ TIM7_IRQn = 50, /*!< TIM7 global interrupt */
+ I2C1_EV_IRQn = 51, /*!< I2C1 Event interrupt */
+ I2C1_ER_IRQn = 52, /*!< I2C1 Error interrupt */
+ I2C2_EV_IRQn = 53, /*!< I2C2 Event interrupt */
+ I2C2_ER_IRQn = 54, /*!< I2C2 Error interrupt */
+ SPI1_IRQn = 55, /*!< SPI1 global interrupt */
+ SPI2_IRQn = 56, /*!< SPI2 global interrupt */
+ SPI3_IRQn = 57, /*!< SPI3 global interrupt */
+ USART1_IRQn = 58, /*!< USART1 global interrupt */
+ USART2_IRQn = 59, /*!< USART2 global interrupt */
+ USART3_IRQn = 60, /*!< USART3 global interrupt */
+ LPUART1_IRQn = 63, /*!< LPUART1 global interrupt */
+ LPTIM1_IRQn = 64, /*!< LPTIM1 global interrupt */
+ LPTIM2_IRQn = 70, /*!< LPTIM2 global interrupt */
+ USB_DRD_FS_IRQn = 74, /*!< USB FS global interrupt */
+ CRS_IRQn = 75, /*!< CRS global interrupt */
+ GPDMA2_Channel0_IRQn = 90, /*!< GPDMA2 Channel 0 global interrupt */
+ GPDMA2_Channel1_IRQn = 91, /*!< GPDMA2 Channel 1 global interrupt */
+ GPDMA2_Channel2_IRQn = 92, /*!< GPDMA2 Channel 2 global interrupt */
+ GPDMA2_Channel3_IRQn = 93, /*!< GPDMA2 Channel 3 global interrupt */
+ GPDMA2_Channel4_IRQn = 94, /*!< GPDMA2 Channel 4 global interrupt */
+ GPDMA2_Channel5_IRQn = 95, /*!< GPDMA2 Channel 5 global interrupt */
+ GPDMA2_Channel6_IRQn = 96, /*!< GPDMA2 Channel 6 global interrupt */
+ GPDMA2_Channel7_IRQn = 97, /*!< GPDMA2 Channel 7 global interrupt */
+ FPU_IRQn = 103, /*!< FPU global interrupt */
+ ICACHE_IRQn = 104, /*!< Instruction cache global interrupt */
+ DTS_IRQn = 113, /*!< DTS global interrupt */
+ RNG_IRQn = 114, /*!< RNG global interrupt */
+ HASH_IRQn = 117, /*!< HASH global interrupt */
+ I3C1_EV_IRQn = 123, /*!< I3C1 event interrupt */
+ I3C1_ER_IRQn = 124, /*!< I3C1 error interrupt */
+ I3C2_EV_IRQn = 131, /*!< I3C2 Event interrupt */
+ I3C2_ER_IRQn = 132, /*!< I3C2 Error interrupt */
+ COMP1_IRQn = 133, /*!< COMP global interrupt */
+} IRQn_Type;
+
+
+
+/* =========================================================================================================================== */
+/* ================ Processor and Core Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+/* ------- Start of section using anonymous unions and disabling warnings ------- */
+#if defined (__CC_ARM)
+ #pragma push
+ #pragma anon_unions
+#elif defined (__ICCARM__)
+ #pragma language=extended
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wc11-extensions"
+ #pragma clang diagnostic ignored "-Wreserved-id-macro"
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning 586
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+
+/* -------- Configuration of the Cortex-M33 Processor and Core Peripherals ------ */
+#define __CM33_REV 0x0000U /* Core revision r0p1 */
+#define __SAUREGION_PRESENT 0U /* SAU regions present */
+#define __MPU_PRESENT 1U /* MPU present */
+#define __VTOR_PRESENT 1U /* VTOR present */
+#define __NVIC_PRIO_BITS 4U /* Number of Bits used for Priority Levels */
+#define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */
+#define __FPU_PRESENT 1U /* FPU present */
+#define __DSP_PRESENT 1U /* DSP extension present */
+
+/** @} */ /* End of group Configuration_of_CMSIS */
+
+
+#include /*!< ARM Cortex-M33 processor and core peripherals */
+#include "system_stm32h5xx.h" /*!< STM32H5xx System */
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_peripherals
+ * @{
+ */
+
+/**
+ * @brief CRC calculation unit
+ */
+typedef struct
+{
+ __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */
+ __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */
+ __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */
+ uint32_t RESERVED2; /*!< Reserved, 0x0C */
+ __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */
+ __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */
+ uint32_t RESERVED3[246]; /*!< Reserved, */
+ __IO uint32_t HWCFGR; /*!< CRC IP HWCFGR register, Address offset: 0x3F0 */
+ __IO uint32_t VERR; /*!< CRC IP version register, Address offset: 0x3F4 */
+ __IO uint32_t PIDR; /*!< CRC IP type identification register, Address offset: 0x3F8 */
+ __IO uint32_t SIDR; /*!< CRC IP map Size ID register, Address offset: 0x3FC */
+} CRC_TypeDef;
+
+/**
+ * @brief Inter-integrated Circuit Interface
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */
+ __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */
+ __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */
+ __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */
+ __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */
+ __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */
+ __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */
+ __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */
+ __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */
+ __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */
+} I2C_TypeDef;
+
+/**
+ * @brief Improved Inter-integrated Circuit Interface
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< I3C Control register, Address offset: 0x00 */
+ __IO uint32_t CFGR; /*!< I3C Controller Configuration register, Address offset: 0x04 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x08-0x0C */
+ __IO uint32_t RDR; /*!< I3C Received Data register, Address offset: 0x10 */
+ __IO uint32_t RDWR; /*!< I3C Received Data Word register, Address offset: 0x14 */
+ __IO uint32_t TDR; /*!< I3C Transmit Data register, Address offset: 0x18 */
+ __IO uint32_t TDWR; /*!< I3C Transmit Data Word register, Address offset: 0x1C */
+ __IO uint32_t IBIDR; /*!< I3C IBI payload Data register, Address offset: 0x20 */
+ __IO uint32_t TGTTDR; /*!< I3C Target Transmit register, Address offset: 0x24 */
+ uint32_t RESERVED2[2]; /*!< Reserved, Address offset: 0x28-0x2C */
+ __IO uint32_t SR; /*!< I3C Status register, Address offset: 0x30 */
+ __IO uint32_t SER; /*!< I3C Status Error register, Address offset: 0x34 */
+ uint32_t RESERVED3[2]; /*!< Reserved, Address offset: 0x38-0x3C */
+ __IO uint32_t RMR; /*!< I3C Received Message register, Address offset: 0x40 */
+ uint32_t RESERVED4[3]; /*!< Reserved, Address offset: 0x44-0x4C */
+ __IO uint32_t EVR; /*!< I3C Event register, Address offset: 0x50 */
+ __IO uint32_t IER; /*!< I3C Interrupt Enable register, Address offset: 0x54 */
+ __IO uint32_t CEVR; /*!< I3C Clear Event register, Address offset: 0x58 */
+ uint32_t RESERVED5; /*!< Reserved, Address offset: 0x5C */
+ __IO uint32_t DEVR0; /*!< I3C own Target characteristics register, Address offset: 0x60 */
+ __IO uint32_t DEVRX[4]; /*!< I3C Target x (1<=x<=4) register, Address offset: 0x64-0x70 */
+ uint32_t RESERVED6[7]; /*!< Reserved, Address offset: 0x74-0x8C */
+ __IO uint32_t MAXRLR; /*!< I3C Maximum Read Length register, Address offset: 0x90 */
+ __IO uint32_t MAXWLR; /*!< I3C Maximum Write Length register, Address offset: 0x94 */
+ uint32_t RESERVED7[2]; /*!< Reserved, Address offset: 0x98-0x9C */
+ __IO uint32_t TIMINGR0; /*!< I3C Timing 0 register, Address offset: 0xA0 */
+ __IO uint32_t TIMINGR1; /*!< I3C Timing 1 register, Address offset: 0xA4 */
+ __IO uint32_t TIMINGR2; /*!< I3C Timing 2 register, Address offset: 0xA8 */
+ uint32_t RESERVED9[5]; /*!< Reserved, Address offset: 0xAC-0xBC */
+ __IO uint32_t BCR; /*!< I3C Bus Characteristics register, Address offset: 0xC0 */
+ __IO uint32_t DCR; /*!< I3C Device Characteristics register, Address offset: 0xC4 */
+ __IO uint32_t GETCAPR; /*!< I3C GET CAPabilities register, Address offset: 0xC8 */
+ __IO uint32_t CRCAPR; /*!< I3C Controller CAPabilities register, Address offset: 0xCC */
+ __IO uint32_t GETMXDSR; /*!< I3C GET Max Data Speed register, Address offset: 0xD0 */
+ __IO uint32_t EPIDR; /*!< I3C Extended Provisioned ID register, Address offset: 0xD4 */
+} I3C_TypeDef;
+
+/**
+ * @brief DAC
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */
+ __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */
+ __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */
+ __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */
+ __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */
+ __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */
+ __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */
+ __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */
+ __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */
+ __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */
+ __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */
+ __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */
+ __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */
+ __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */
+ __IO uint32_t CCR; /*!< DAC calibration control register, Address offset: 0x38 */
+ __IO uint32_t MCR; /*!< DAC mode control register, Address offset: 0x3C */
+ __IO uint32_t SHSR1; /*!< DAC Sample and Hold sample time register 1, Address offset: 0x40 */
+ __IO uint32_t SHSR2; /*!< DAC Sample and Hold sample time register 2, Address offset: 0x44 */
+ __IO uint32_t SHHR; /*!< DAC Sample and Hold hold time register, Address offset: 0x48 */
+ __IO uint32_t SHRR; /*!< DAC Sample and Hold refresh time register, Address offset: 0x4C */
+ __IO uint32_t RESERVED[1];
+ __IO uint32_t AUTOCR; /*!< DAC Autonomous mode register, Address offset: 0x54 */
+} DAC_TypeDef;
+
+/**
+ * @brief Clock Recovery System
+ */
+typedef struct
+{
+__IO uint32_t CR; /*!< CRS ccontrol register, Address offset: 0x00 */
+__IO uint32_t CFGR; /*!< CRS configuration register, Address offset: 0x04 */
+__IO uint32_t ISR; /*!< CRS interrupt and status register, Address offset: 0x08 */
+__IO uint32_t ICR; /*!< CRS interrupt flag clear register, Address offset: 0x0C */
+} CRS_TypeDef;
+
+
+/**
+ * @brief HASH
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< HASH control register, Address offset: 0x00 */
+ __IO uint32_t DIN; /*!< HASH data input register, Address offset: 0x04 */
+ __IO uint32_t STR; /*!< HASH start register, Address offset: 0x08 */
+ __IO uint32_t HR[5]; /*!< HASH digest registers, Address offset: 0x0C-0x1C */
+ __IO uint32_t IMR; /*!< HASH interrupt enable register, Address offset: 0x20 */
+ __IO uint32_t SR; /*!< HASH status register, Address offset: 0x24 */
+ uint32_t RESERVED[52]; /*!< Reserved, 0x28-0xF4 */
+ __IO uint32_t CSR[54]; /*!< HASH context swap registers, Address offset: 0x0F8-0x1CC */
+} HASH_TypeDef;
+
+/**
+ * @brief HASH_DIGEST
+ */
+typedef struct
+{
+ __IO uint32_t HR[8]; /*!< HASH digest registers, Address offset: 0x310-0x32C */
+} HASH_DIGEST_TypeDef;
+
+/**
+ * @brief RNG
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */
+ __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */
+ __IO uint32_t HTCR; /*!< RNG health test configuration register, Address offset: 0x10 */
+} RNG_TypeDef;
+
+/**
+ * @brief Debug MCU
+ */
+typedef struct
+{
+ __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */
+ __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */
+ __IO uint32_t APB1FZR1; /*!< Debug MCU APB1 freeze register 1, Address offset: 0x08 */
+ __IO uint32_t APB1FZR2; /*!< Debug MCU APB1 freeze register 2, Address offset: 0x0C */
+ __IO uint32_t APB2FZR; /*!< Debug MCU APB2 freeze register, Address offset: 0x10 */
+ __IO uint32_t APB3FZR; /*!< Debug MCU APB3 freeze register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, 0x18 - 0x1C */
+ __IO uint32_t AHB1FZR; /*!< Debug MCU AHB1 freeze register, Address offset: 0x20 */
+ uint32_t RESERVED2[54]; /*!< Reserved, 0x24 - 0xF8 */
+ __IO uint32_t SR; /*!< Debug MCU SR register, Address offset: 0xFC */
+ __IO uint32_t DBG_AUTH_HOST; /*!< Debug DBG_AUTH_HOST register, Address offset: 0x100 */
+ __IO uint32_t DBG_AUTH_DEV; /*!< Debug DBG_AUTH_DEV register, Address offset: 0x104 */
+ __IO uint32_t DBG_AUTH_ACK; /*!< Debug DBG_AUTH_ACK register, Address offset: 0x108 */
+ uint32_t RESERVED3[945]; /*!< Reserved, 0x10C - 0xFCC */
+ __IO uint32_t PIDR4; /*!< Debug MCU Peripheral ID register 4, Address offset: 0xFD0 */
+ __IO uint32_t PIDR5; /*!< Debug MCU Peripheral ID register 5, Address offset: 0xFD4 */
+ __IO uint32_t PIDR6; /*!< Debug MCU Peripheral ID register 6, Address offset: 0xFD8 */
+ __IO uint32_t PIDR7; /*!< Debug MCU Peripheral ID register 7, Address offset: 0xFDC */
+ __IO uint32_t PIDR0; /*!< Debug MCU Peripheral ID register 0, Address offset: 0xFE0 */
+ __IO uint32_t PIDR1; /*!< Debug MCU Peripheral ID register 1, Address offset: 0xFE4 */
+ __IO uint32_t PIDR2; /*!< Debug MCU Peripheral ID register 2, Address offset: 0xFE8 */
+ __IO uint32_t PIDR3; /*!< Debug MCU Peripheral ID register 3, Address offset: 0xFEC */
+ __IO uint32_t CIDR0; /*!< Debug MCU Component ID register 0, Address offset: 0xFF0 */
+ __IO uint32_t CIDR1; /*!< Debug MCU Component ID register 1, Address offset: 0xFF4 */
+ __IO uint32_t CIDR2; /*!< Debug MCU Component ID register 2, Address offset: 0xFF8 */
+ __IO uint32_t CIDR3; /*!< Debug MCU Component ID register 3, Address offset: 0xFFC */
+} DBGMCU_TypeDef;
+
+
+/**
+ * @brief DMA Controller
+ */
+typedef struct
+{
+ uint32_t RESERVED0; /*!< Reserved Address offset: 0x00 */
+ __IO uint32_t PRIVCFGR; /*!< DMA privileged configuration register, Address offset: 0x04 */
+ uint32_t RESERVED1; /*!< Reserved Address offset: 0x08 */
+ __IO uint32_t MISR; /*!< DMA non secure masked interrupt status register, Address offset: 0x0C */
+ uint32_t RESERVED2; /*!< Reserved Address offset: 0x08 */
+} DMA_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CLBAR; /*!< DMA channel x linked-list base address register, Address offset: 0x50 + (x * 0x80) */
+ uint32_t RESERVED1[2]; /*!< Reserved 1, Address offset: 0x54 -- 0x58 */
+ __IO uint32_t CFCR; /*!< DMA channel x flag clear register, Address offset: 0x5C + (x * 0x80) */
+ __IO uint32_t CSR; /*!< DMA channel x flag status register, Address offset: 0x60 + (x * 0x80) */
+ __IO uint32_t CCR; /*!< DMA channel x control register, Address offset: 0x64 + (x * 0x80) */
+ uint32_t RESERVED2[10];/*!< Reserved 2, Address offset: 0x68 -- 0x8C */
+ __IO uint32_t CTR1; /*!< DMA channel x transfer register 1, Address offset: 0x90 + (x * 0x80) */
+ __IO uint32_t CTR2; /*!< DMA channel x transfer register 2, Address offset: 0x94 + (x * 0x80) */
+ __IO uint32_t CBR1; /*!< DMA channel x block register 1, Address offset: 0x98 + (x * 0x80) */
+ __IO uint32_t CSAR; /*!< DMA channel x source address register, Address offset: 0x9C + (x * 0x80) */
+ __IO uint32_t CDAR; /*!< DMA channel x destination address register, Address offset: 0xA0 + (x * 0x80) */
+ __IO uint32_t CTR3; /*!< DMA channel x transfer register 3, Address offset: 0xA4 + (x * 0x80) */
+ __IO uint32_t CBR2; /*!< DMA channel x block register 2, Address offset: 0xA8 + (x * 0x80) */
+ uint32_t RESERVED3[8]; /*!< Reserved 3, Address offset: 0xAC -- 0xC8 */
+ __IO uint32_t CLLR; /*!< DMA channel x linked-list address register, Address offset: 0xCC + (x * 0x80) */
+} DMA_Channel_TypeDef;
+
+
+/**
+ * @brief Asynch Interrupt/Event Controller (EXTI)
+ */
+typedef struct
+{
+ __IO uint32_t RTSR1; /*!< EXTI Rising Trigger Selection Register 1, Address offset: 0x00 */
+ __IO uint32_t FTSR1; /*!< EXTI Falling Trigger Selection Register 1, Address offset: 0x04 */
+ __IO uint32_t SWIER1; /*!< EXTI Software Interrupt event Register 1, Address offset: 0x08 */
+ __IO uint32_t RPR1; /*!< EXTI Rising Pending Register 1, Address offset: 0x0C */
+ __IO uint32_t FPR1; /*!< EXTI Falling Pending Register 1, Address offset: 0x10 */
+ uint32_t RESERVED1; /*!< Reserved 1, Address offset: 0x14 */
+ __IO uint32_t PRIVCFGR1; /*!< EXTI Privilege Configuration Register 1, Address offset: 0x18 */
+ uint32_t RESERVED2; /*!< Reserved 2, Address offset: 0x1C */
+ __IO uint32_t RTSR2; /*!< EXTI Rising Trigger Selection Register 2, Address offset: 0x20 */
+ __IO uint32_t FTSR2; /*!< EXTI Falling Trigger Selection Register 2, Address offset: 0x24 */
+ __IO uint32_t SWIER2; /*!< EXTI Software Interrupt event Register 2, Address offset: 0x28 */
+ __IO uint32_t RPR2; /*!< EXTI Rising Pending Register 2, Address offset: 0x2C */
+ __IO uint32_t FPR2; /*!< EXTI Falling Pending Register 2, Address offset: 0x30 */
+ uint32_t RESERVED3; /*!< Reserved 3, Address offset: 0x34 */
+ __IO uint32_t PRIVCFGR2; /*!< EXTI Privilege Configuration Register 2, Address offset: 0x38 */
+ uint32_t RESERVED4[9]; /*!< Reserved 4, 0x3C-- 0x5C */
+ __IO uint32_t EXTICR[4]; /*!< EXIT External Interrupt Configuration Register, 0x60 -- 0x6C */
+ uint32_t RESERVED5[4]; /*!< Reserved 5, 0x70 -- 0x7C */
+ __IO uint32_t IMR1; /*!< EXTI Interrupt Mask Register 1, Address offset: 0x80 */
+ __IO uint32_t EMR1; /*!< EXTI Event Mask Register 1, Address offset: 0x84 */
+ uint32_t RESERVED6[2]; /*!< Reserved 6, 0x88 -- 0x8C */
+ __IO uint32_t IMR2; /*!< EXTI Interrupt Mask Register 2, Address offset: 0x90 */
+ __IO uint32_t EMR2; /*!< EXTI Event Mask Register 2, Address offset: 0x94 */
+} EXTI_TypeDef;
+
+/**
+ * @brief FLASH Registers
+ */
+typedef struct
+{
+ __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */
+ __IO uint32_t NSKEYR; /*!< FLASH non-secure key register, Address offset: 0x04 */
+ uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x08 */
+ __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x0C */
+ uint32_t RESERVED2[2]; /*!< Reserved2, Address offset: 0x10-0x14 */
+ __IO uint32_t OPSR; /*!< FLASH OPSR register, Address offset: 0x18 */
+ __IO uint32_t OPTCR; /*!< Flash Option Control Register, Address offset: 0x1C */
+ __IO uint32_t NSSR; /*!< FLASH non-secure status register, Address offset: 0x20 */
+ uint32_t RESERVED3; /*!< Reserved3, Address offset: 0x24 */
+ __IO uint32_t NSCR; /*!< FLASH non-secure control register, Address offset: 0x28 */
+ uint32_t RESERVED4; /*!< Reserved4, Address offset: 0x2C */
+ __IO uint32_t NSCCR; /*!< FLASH non-secure clear control register, Address offset: 0x30 */
+ uint32_t RESERVED5[2]; /*!< Reserved5, Address offset: 0x34-0x38 */
+ __IO uint32_t PRIVCFGR; /*!< FLASH privilege configuration register, Address offset: 0x3C */
+ uint32_t RESERVED6[2]; /*!< Reserved6, Address offset: 0x40-0x44 */
+ __IO uint32_t HDPEXTR; /*!< FLASH HDP extension register, Address offset: 0x48 */
+ uint32_t RESERVED7; /*!< Reserved7, Address offset: 0x4C */
+ __IO uint32_t OPTSR_CUR; /*!< FLASH option status current register, Address offset: 0x50 */
+ __IO uint32_t OPTSR_PRG; /*!< FLASH option status to program register, Address offset: 0x54 */
+ uint32_t RESERVED8[2]; /*!< Reserved8, Address offset: 0x58-0x5C */
+ __IO uint32_t NSEPOCHR_CUR; /*!< FLASH non-secure epoch current register, Address offset: 0x60 */
+ __IO uint32_t NSEPOCHR_PRG; /*!< FLASH non-secure epoch to program register, Address offset: 0x64 */
+ uint32_t RESERVED9[2]; /*!< Reserved9, Address offset: 0x68-0x6C */
+ __IO uint32_t OPTSR2_CUR; /*!< FLASH option status current register 2, Address offset: 0x70 */
+ __IO uint32_t OPTSR2_PRG; /*!< FLASH option status to program register 2, Address offset: 0x74 */
+ uint32_t RESERVED10[2]; /*!< Reserved10, Address offset: 0x78-0x7C */
+ __IO uint32_t NSBOOTR_CUR; /*!< FLASH non-secure unique boot entry current register, Address offset: 0x80 */
+ __IO uint32_t NSBOOTR_PRG; /*!< FLASH non-secure unique boot entry to program register, Address offset: 0x84 */
+ uint32_t RESERVED11[2]; /*!< Reserved11, Address offset: 0x88-0x8C */
+ __IO uint32_t OTPBLR_CUR; /*!< FLASH OTP block lock current register, Address offset: 0x90 */
+ __IO uint32_t OTPBLR_PRG; /*!< FLASH OTP block Lock to program register, Address offset: 0x94 */
+ uint32_t RESERVED12[10]; /*!< Reserved12, Address offset: 0x98-0xBC */
+ __IO uint32_t PRIVBB1R1; /*!< FLASH privilege block-based bank 1 register 1, Address offset: 0xC0 */
+ uint32_t RESERVED13[9]; /*!< Reserved13, Address offset: 0xC4-0xE4 */
+ __IO uint32_t WRP1R_CUR; /*!< FLASH write sector group protection current register for bank1, Address offset: 0xE8 */
+ __IO uint32_t WRP1R_PRG; /*!< FLASH write sector group protection to program register for bank1, Address offset: 0xEC */
+ uint32_t RESERVED14[2]; /*!< Reserved14, Address offset: 0xF0-0xF4 */
+ __IO uint32_t HDP1R_CUR; /*!< FLASH HDP configuration current register for bank1, Address offset: 0xF8 */
+ __IO uint32_t HDP1R_PRG; /*!< FLASH HDP configuration to program register for bank1, Address offset: 0xFC */
+ __IO uint32_t ECCCORR; /*!< FLASH ECC correction register, Address offset: 0x100 */
+ __IO uint32_t ECCDETR; /*!< FLASH ECC detection register, Address offset: 0x104 */
+ __IO uint32_t ECCDR; /*!< FLASH ECC data register, Address offset: 0x108 */
+ uint32_t RESERVED15[45]; /*!< Reserved15, Address offset: 0x10C-0x1BC */
+ __IO uint32_t PRIVBB2R1; /*!< FLASH privilege block-based bank 2 register 1, Address offset: 0x1C0 */
+ uint32_t RESERVED16[9]; /*!< Reserved16, Address offset: 0x1C4-0x1E4 */
+ __IO uint32_t WRP2R_CUR; /*!< FLASH write sector group protection current register for bank2, Address offset: 0x1E8 */
+ __IO uint32_t WRP2R_PRG; /*!< FLASH write sector group protection to program register for bank2, Address offset: 0x1EC */
+ uint32_t RESERVED17[2]; /*!< Reserved17, Address offset: 0x1F0-0x1F4 */
+ __IO uint32_t HDP2R_CUR; /*!< FLASH HDP configuration current register for bank2, Address offset: 0x1F8 */
+ __IO uint32_t HDP2R_PRG; /*!< FLASH HDP configuration to program register for bank2, Address offset: 0x1FC */
+} FLASH_TypeDef;
+
+/**
+ * @brief General Purpose I/O
+ */
+typedef struct
+{
+ __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */
+ __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */
+ __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */
+ __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */
+ __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */
+ __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */
+ __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */
+ __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */
+ __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */
+ __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */
+ __IO uint32_t HSLVR; /*!< GPIO high-speed low voltage register, Address offset: 0x2C */
+ __IO uint32_t SECCFGR; /*!< GPIO secure configuration register, Address offset: 0x30 */
+} GPIO_TypeDef;
+
+/**
+ * @brief Global TrustZone Controller
+ */
+typedef struct
+{
+ uint32_t RESERVED1[8]; /*!< Reserved1, Address offset: 0x00-0x1C */
+ __IO uint32_t PRIVCFGR1; /*!< TZSC privilege configuration register 1, Address offset: 0x20 */
+ __IO uint32_t PRIVCFGR2; /*!< TZSC privilege configuration register 2, Address offset: 0x24 */
+ __IO uint32_t PRIVCFGR3; /*!< TZSC privilege configuration register 3, Address offset: 0x28 */
+ uint32_t RESERVED3[17]; /*!< Reserved3, Address offset: 0x2C-0x6C */
+ __IO uint32_t MPCWM4ACFGR; /*!< TZSC memory 4 sub-region A watermark configuration register, Address offset: 0x70 */
+ __IO uint32_t MPCWM4AR; /*!< TZSC memory 4 sub-region A watermark register, Address offset: 0x74 */
+} GTZC_TZSC_TypeDef;
+
+typedef struct
+{
+ uint32_t RESERVED1[128]; /*!< Reserved1, Address offset: 0x000-0x1FC */
+ __IO uint32_t PRIVCFGR[32]; /*!< MPCBBx privilege configuration registers, Address offset: 0x200-0x280 */
+} GTZC_MPCBB_TypeDef;
+
+/**
+ * @brief Instruction Cache
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< ICACHE control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< ICACHE status register, Address offset: 0x04 */
+ __IO uint32_t IER; /*!< ICACHE interrupt enable register, Address offset: 0x08 */
+ __IO uint32_t FCR; /*!< ICACHE Flag clear register, Address offset: 0x0C */
+ __IO uint32_t HMONR; /*!< ICACHE hit monitor register, Address offset: 0x10 */
+ __IO uint32_t MMONR; /*!< ICACHE miss monitor register, Address offset: 0x14 */
+} ICACHE_TypeDef;
+
+/**
+ * @brief TIM
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */
+ __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */
+ __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */
+ __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */
+ __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */
+ __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */
+ __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */
+ __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */
+ __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */
+ __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */
+ __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */
+ __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */
+ __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */
+ __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */
+ __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */
+ __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */
+ __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */
+ __IO uint32_t CCR5; /*!< TIM capture/compare register 5, Address offset: 0x48 */
+ __IO uint32_t CCR6; /*!< TIM capture/compare register 6, Address offset: 0x4C */
+ __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x50 */
+ __IO uint32_t DTR2; /*!< TIM deadtime register 2, Address offset: 0x54 */
+ __IO uint32_t ECR; /*!< TIM encoder control register, Address offset: 0x58 */
+ __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x5C */
+ __IO uint32_t AF1; /*!< TIM alternate function option register 1, Address offset: 0x60 */
+ __IO uint32_t AF2; /*!< TIM alternate function option register 2, Address offset: 0x64 */
+ __IO uint32_t OR1 ; /*!< TIM option register, Address offset: 0x68 */
+ uint32_t RESERVED0[220];/*!< Reserved, Address offset: 0x6C */
+ __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x3DC */
+ __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x3E0 */
+} TIM_TypeDef;
+
+/**
+ * @brief LPTIMER
+ */
+typedef struct
+{
+ __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */
+ __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */
+ __IO uint32_t DIER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */
+ __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */
+ __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */
+ __IO uint32_t CCR1; /*!< LPTIM Capture/Compare register 1, Address offset: 0x14 */
+ __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */
+ __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */
+ __IO uint32_t RESERVED0; /*!< Reserved, Address offset: 0x20 */
+ __IO uint32_t CFGR2; /*!< LPTIM Configuration register 2, Address offset: 0x24 */
+ __IO uint32_t RCR; /*!< LPTIM Repetition register, Address offset: 0x28 */
+ __IO uint32_t CCMR1; /*!< LPTIM Capture/Compare mode register, Address offset: 0x2C */
+ __IO uint32_t RESERVED1; /*!< Reserved, Address offset: 0x30 */
+ __IO uint32_t CCR2; /*!< LPTIM Capture/Compare register 2, Address offset: 0x34 */
+} LPTIM_TypeDef;
+
+/**
+ * @brief Comparator
+ */
+typedef struct
+{
+ __IO uint32_t SR; /*!< Comparator status register, Address offset: 0x00 */
+ __IO uint32_t ICFR; /*!< Comparator interrupt clear flag register, Address offset: 0x04 */
+} COMPOPT_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t SR; /*!< Comparator status register, Address offset: 0x00 */
+ __IO uint32_t ICFR; /*!< Comparator interrupt clear flag register, Address offset: 0x04 */
+ __IO uint32_t RESERVED1; /*!< Reserved, Address offset: 0x08 */
+ __IO uint32_t CFGR1; /*!< Comparator configuration register 1 , Address offset: 0x0C */
+ __IO uint32_t CFGR2; /*!< Comparator configuration register 2 , Address offset: 0x10 */
+} COMP_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CFGR; /*!< COMP control and status register, used for bits common to several COMP instances, Address offset: 0x00 */
+} COMP_Common_TypeDef;
+
+/**
+ * @brief Operational Amplifier (OPAMP)
+ */
+
+typedef struct
+{
+ __IO uint32_t CSR; /*!< OPAMP control/status register, Address offset: 0x00 */
+ __IO uint32_t OTR; /*!< OPAMP offset trimming register for normal mode, Address offset: 0x04 */
+ __IO uint32_t HSOTR; /*!< OPAMP offset trimming register for high speed mode, Address offset: 0x08 */
+} OPAMP_TypeDef;
+
+
+
+/**
+ * @brief Power Control
+ */
+typedef struct
+{
+ __IO uint32_t PMCR; /*!< Power mode control register , Address offset: 0x00 */
+ __IO uint32_t PMSR; /*!< Power mode status register , Address offset: 0x04 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x08-0x0C */
+ __IO uint32_t VOSCR; /*!< Voltage scaling control register , Address offset: 0x10 */
+ __IO uint32_t VOSSR; /*!< Voltage sacling status register , Address offset: 0x14 */
+ uint32_t RESERVED2[2]; /*!< Reserved, Address offset: 0x18-0x1C */
+ __IO uint32_t BDCR; /*!< BacKup domain control register , Address offset: 0x20 */
+ __IO uint32_t DBPCR; /*!< DBP control register, Address offset: 0x24 */
+ __IO uint32_t BDSR; /*!< BacKup domain status register, Address offset: 0x28 */
+ uint32_t RESERVED3; /*!< Reserved, Address offset: 0x38 */
+ __IO uint32_t SCCR; /*!< Supply configuration control register, Address offset: 0x30 */
+ __IO uint32_t VMCR; /*!< Voltage Monitor Control Register, Address offset: 0x34 */
+ uint32_t RESERVED4; /*!< Reserved, Address offset: 0x38 */
+ __IO uint32_t VMSR; /*!< Status Register Voltage Monitoring, Address offset: 0x3C */
+ __IO uint32_t WUSCR; /*!< WakeUP status clear register, Address offset: 0x40 */
+ __IO uint32_t WUSR; /*!< WakeUP status Register, Address offset: 0x44 */
+ __IO uint32_t WUCR; /*!< WakeUP configuration register, Address offset: 0x48 */
+ uint32_t RESERVED5; /*!< Reserved, Address offset: 0x4C */
+ __IO uint32_t IORETR; /*!< IO RETention Register, Address offset: 0x50 */
+ uint32_t RESERVED6[43];/*!< Reserved, Address offset: 0x54-0xFC */
+ uint32_t RESERVED7; /*!< Reserved, Address offset: 0x100 */
+ __IO uint32_t PRIVCFGR; /*!< Privilege configuration register, Address offset: 0x104 */
+}PWR_TypeDef;
+
+/**
+ * @brief SRAMs configuration controller
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< Control Register, Address offset: 0x00 */
+ __IO uint32_t IER; /*!< Interrupt Enable Register, Address offset: 0x04 */
+ __IO uint32_t ISR; /*!< Interrupt Status Register, Address offset: 0x08 */
+ __IO uint32_t SEAR; /*!< ECC Single Error Address Register, Address offset: 0x0C */
+ __IO uint32_t DEAR; /*!< ECC Double Error Address Register, Address offset: 0x10 */
+ __IO uint32_t ICR; /*!< Interrupt Clear Register, Address offset: 0x14 */
+ __IO uint32_t WPR1; /*!< SRAM Write Protection Register 1, Address offset: 0x18 */
+ __IO uint32_t WPR2; /*!< SRAM Write Protection Register 2, Address offset: 0x1C */
+ uint32_t RESERVED; /*!< Reserved, Address offset: 0x20 */
+ __IO uint32_t ECCKEY; /*!< SRAM ECC Key Register, Address offset: 0x24 */
+ __IO uint32_t ERKEYR; /*!< SRAM Erase Key Register, Address offset: 0x28 */
+}RAMCFG_TypeDef;
+
+/**
+ * @brief Reset and Clock Control
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< RCC clock control register Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved, Address offset: 0x04 */
+ __IO uint32_t HSICFGR; /*!< RCC HSI Clock Calibration Register, Address offset: 0x10 */
+ __IO uint32_t CRRCR; /*!< RCC Clock Recovery RC Register, Address offset: 0x14 */
+ __IO uint32_t CSICFGR; /*!< RCC CSI Clock Calibration Register, Address offset: 0x18 */
+ __IO uint32_t CFGR1; /*!< RCC clock configuration register 1 Address offset: 0x1C */
+ __IO uint32_t CFGR2; /*!< RCC clock configuration register 2 Address offset: 0x20 */
+ uint32_t RESERVED2; /*!< Reserved, Address offset: 0x24 */
+ __IO uint32_t PLL1CFGR; /*!< RCC PLL1 Configuration Register Address offset: 0x28 */
+ __IO uint32_t PLL2CFGR; /*!< RCC PLL2 Configuration Register Address offset: 0x2C */
+ uint32_t RESERVED3; /*!< Reserved, Address offset: 0x30 */
+ __IO uint32_t PLL1DIVR; /*!< RCC PLL1 Dividers Configuration Register Address offset: 0x34 */
+ __IO uint32_t PLL1FRACR; /*!< RCC PLL1 Fractional Divider Configuration Register Address offset: 0x38 */
+ __IO uint32_t PLL2DIVR; /*!< RCC PLL2 Dividers Configuration Register Address offset: 0x3C */
+ __IO uint32_t PLL2FRACR; /*!< RCC PLL2 Fractional Divider Configuration Register Address offset: 0x40 */
+ uint32_t RESERVED4[2]; /*!< Reserved, Address offset: 0x44 */
+ uint32_t RESERVED5; /*!< Reserved Address offset: 0x4C */
+ __IO uint32_t CIER; /*!< RCC Clock Interrupt Enable Register Address offset: 0x50 */
+ __IO uint32_t CIFR; /*!< RCC Clock Interrupt Flag Register Address offset: 0x54 */
+ __IO uint32_t CICR; /*!< RCC Clock Interrupt Clear Register Address offset: 0x58 */
+ uint32_t RESERVED6; /*!< Reserved Address offset: 0x5C */
+ __IO uint32_t AHB1RSTR; /*!< RCC AHB1 Peripherals Reset Register Address offset: 0x60 */
+ __IO uint32_t AHB2RSTR; /*!< RCC AHB2 Peripherals Reset Register Address offset: 0x64 */
+ uint32_t RESERVED7; /*!< Reserved Address offset: 0x68 */
+ uint32_t RESERVED8; /*!< Reserved, Address offset: 0x6C */
+ uint32_t RESERVED9; /*!< Reserved Address offset: 0x70 */
+ __IO uint32_t APB1LRSTR; /*!< RCC APB1 Peripherals reset Low Word register Address offset: 0x74 */
+ __IO uint32_t APB1HRSTR; /*!< RCC APB1 Peripherals reset High Word register Address offset: 0x78 */
+ __IO uint32_t APB2RSTR; /*!< RCC APB2 Peripherals Reset Register Address offset: 0x7C */
+ __IO uint32_t APB3RSTR; /*!< RCC APB3 Peripherals Reset Register Address offset: 0x80 */
+ uint32_t RESERVED10; /*!< Reserved Address offset: 0x84 */
+ __IO uint32_t AHB1ENR; /*!< RCC AHB1 Peripherals Clock Enable Register Address offset: 0x88 */
+ __IO uint32_t AHB2ENR; /*!< RCC AHB2 Peripherals Clock Enable Register Address offset: 0x8C */
+ uint32_t RESERVED11; /*!< Reserved Address offset: 0x90 */
+ uint32_t RESERVED12; /*!< Reserved, Address offset: 0x94 */
+ uint32_t RESERVED13; /*!< Reserved Address offset: 0x98 */
+ __IO uint32_t APB1LENR; /*!< RCC APB1 Peripherals clock Enable Low Word register Address offset: 0x9C */
+ __IO uint32_t APB1HENR; /*!< RCC APB1 Peripherals clock Enable High Word register Address offset: 0xA0 */
+ __IO uint32_t APB2ENR; /*!< RCC APB2 Peripherals Clock Enable Register Address offset: 0xA4 */
+ __IO uint32_t APB3ENR; /*!< RCC APB3 Peripherals Clock Enable Register Address offset: 0xA8 */
+ uint32_t RESERVED14; /*!< Reserved Address offset: 0xAC */
+ __IO uint32_t AHB1LPENR; /*!< RCC AHB1 Peripheral sleep clock Register Address offset: 0xB0 */
+ __IO uint32_t AHB2LPENR; /*!< RCC AHB2 Peripheral sleep clock Register Address offset: 0xB4 */
+ uint32_t RESERVED15; /*!< Reserved Address offset: 0xB8 */
+ uint32_t RESERVED16; /*!< Reserved, Address offset: 0xBC */
+ uint32_t RESERVED17; /*!< Reserved Address offset: 0xC0 */
+ __IO uint32_t APB1LLPENR; /*!< RCC APB1 Peripherals sleep clock Low Word Register Address offset: 0xC4 */
+ __IO uint32_t APB1HLPENR; /*!< RCC APB1 Peripherals sleep clock High Word Register Address offset: 0xC8 */
+ __IO uint32_t APB2LPENR; /*!< RCC APB2 Peripherals sleep clock Register Address offset: 0xCC */
+ __IO uint32_t APB3LPENR; /*!< RCC APB3 Peripherals Clock Low Power Enable Register Address offset: 0xD0 */
+ uint32_t RESERVED18; /*!< Reserved Address offset: 0xD4 */
+ __IO uint32_t CCIPR1; /*!< RCC IPs Clocks Configuration Register 1 Address offset: 0xD8 */
+ __IO uint32_t CCIPR2; /*!< RCC IPs Clocks Configuration Register 2 Address offset: 0xDC */
+ __IO uint32_t CCIPR3; /*!< RCC IPs Clocks Configuration Register 3 Address offset: 0xE0 */
+ __IO uint32_t CCIPR4; /*!< RCC IPs Clocks Configuration Register 4 Address offset: 0xE4 */
+ __IO uint32_t CCIPR5; /*!< RCC IPs Clocks Configuration Register 5 Address offset: 0xE8 */
+ uint32_t RESERVED19; /*!< Reserved, Address offset: 0xEC */
+ __IO uint32_t BDCR; /*!< RCC VSW Backup Domain & V33 Domain Control Register Address offset: 0xF0 */
+ __IO uint32_t RSR; /*!< RCC Reset status Register Address offset: 0xF4 */
+ uint32_t RESERVED20[6]; /*!< Reserved Address offset: 0xF8 */
+ uint32_t RESERVED21; /*!< Reserved, Address offset: 0x110 */
+ __IO uint32_t PRIVCFGR; /*!< RCC Privilege configuration register Address offset: 0x114 */
+} RCC_TypeDef;
+
+
+/*
+* @brief RTC Specific device feature definitions
+*/
+#define RTC_BKP_NB 32U
+#define RTC_TAMP_NB 2U
+
+/**
+ * @brief Real-Time Clock
+ */
+typedef struct
+{
+ __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */
+ __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */
+ __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */
+ __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */
+ __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */
+ __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */
+ __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */
+ __IO uint32_t PRIVCFGR; /*!< RTC privilege mode control register, Address offset: 0x1C */
+ uint32_t RESERVED0; /*!< Reserved, Address offset: 0x20 */
+ __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */
+ __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */
+ __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */
+ __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */
+ __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */
+ __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */
+ uint32_t RESERVED1; /*!< Reserved, Address offset: 0x3C */
+ __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */
+ __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */
+ __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */
+ __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */
+ __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */
+ __IO uint32_t MISR; /*!< RTC masked interrupt status register, Address offset: 0x54 */
+ uint32_t RESERVED2; /*!< Reserved, Address offset: 0x58 */
+ __IO uint32_t SCR; /*!< RTC status Clear register, Address offset: 0x5C */
+ __IO uint32_t OR; /*!< RTC option register, Address offset: 0x60 */
+ uint32_t RESERVED3[3];/*!< Reserved, Address offset: 0x64 */
+ __IO uint32_t ALRABINR; /*!< RTC alarm A binary mode register, Address offset: 0x70 */
+ __IO uint32_t ALRBBINR; /*!< RTC alarm B binary mode register, Address offset: 0x74 */
+} RTC_TypeDef;
+
+/**
+ * @brief Tamper and backup registers
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< TAMP control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< TAMP control register 2, Address offset: 0x04 */
+ __IO uint32_t CR3; /*!< TAMP control register 3, Address offset: 0x08 */
+ __IO uint32_t FLTCR; /*!< TAMP filter control register, Address offset: 0x0C */
+ __IO uint32_t ATCR1; /*!< TAMP filter control register 1 Address offset: 0x10 */
+ __IO uint32_t ATSEEDR; /*!< TAMP active tamper seed register, Address offset: 0x14 */
+ __IO uint32_t ATOR; /*!< TAMP active tamper output register, Address offset: 0x18 */
+ __IO uint32_t ATCR2; /*!< TAMP filter control register 2, Address offset: 0x1C */
+ __IO uint32_t SECCFGR; /*!< TAMP secure mode control register, Address offset: 0x20 */
+ __IO uint32_t PRIVCFGR; /*!< TAMP privilege mode control register, Address offset: 0x24 */
+ uint32_t RESERVED0; /*!< Reserved, Address offset: 0x28 */
+ __IO uint32_t IER; /*!< TAMP interrupt enable register, Address offset: 0x2C */
+ __IO uint32_t SR; /*!< TAMP status register, Address offset: 0x30 */
+ __IO uint32_t MISR; /*!< TAMP masked interrupt status register, Address offset: 0x34 */
+ uint32_t RESERVED1; /*!< Reserved, Address offset: 0x38 */
+ __IO uint32_t SCR; /*!< TAMP status clear register, Address offset: 0x3C */
+ __IO uint32_t COUNT1R; /*!< TAMP monotonic counter register, Address offset: 0x40 */
+ uint32_t RESERVED2[3];/*!< Reserved, Address offset: 0x44 -- 0x4C */
+ __IO uint32_t OR; /*!< TAMP option register, Address offset: 0x50 */
+ __IO uint32_t ERCFGR; /*!< TAMP erase configuration register, Address offset: 0x54 */
+ uint32_t RESERVED3[42];/*!< Reserved, Address offset: 0x58 -- 0xFC */
+ __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */
+ __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */
+ __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */
+ __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */
+ __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */
+ __IO uint32_t BKP5R; /*!< TAMP backup register 5, Address offset: 0x114 */
+ __IO uint32_t BKP6R; /*!< TAMP backup register 6, Address offset: 0x118 */
+ __IO uint32_t BKP7R; /*!< TAMP backup register 7, Address offset: 0x11C */
+ __IO uint32_t BKP8R; /*!< TAMP backup register 8, Address offset: 0x120 */
+ __IO uint32_t BKP9R; /*!< TAMP backup register 9, Address offset: 0x124 */
+ __IO uint32_t BKP10R; /*!< TAMP backup register 10, Address offset: 0x128 */
+ __IO uint32_t BKP11R; /*!< TAMP backup register 11, Address offset: 0x12C */
+ __IO uint32_t BKP12R; /*!< TAMP backup register 12, Address offset: 0x130 */
+ __IO uint32_t BKP13R; /*!< TAMP backup register 13, Address offset: 0x134 */
+ __IO uint32_t BKP14R; /*!< TAMP backup register 14, Address offset: 0x138 */
+ __IO uint32_t BKP15R; /*!< TAMP backup register 15, Address offset: 0x13C */
+ __IO uint32_t BKP16R; /*!< TAMP backup register 16, Address offset: 0x140 */
+ __IO uint32_t BKP17R; /*!< TAMP backup register 17, Address offset: 0x144 */
+ __IO uint32_t BKP18R; /*!< TAMP backup register 18, Address offset: 0x148 */
+ __IO uint32_t BKP19R; /*!< TAMP backup register 19, Address offset: 0x14C */
+ __IO uint32_t BKP20R; /*!< TAMP backup register 20, Address offset: 0x150 */
+ __IO uint32_t BKP21R; /*!< TAMP backup register 21, Address offset: 0x154 */
+ __IO uint32_t BKP22R; /*!< TAMP backup register 22, Address offset: 0x158 */
+ __IO uint32_t BKP23R; /*!< TAMP backup register 23, Address offset: 0x15C */
+ __IO uint32_t BKP24R; /*!< TAMP backup register 24, Address offset: 0x160 */
+ __IO uint32_t BKP25R; /*!< TAMP backup register 25, Address offset: 0x164 */
+ __IO uint32_t BKP26R; /*!< TAMP backup register 26, Address offset: 0x168 */
+ __IO uint32_t BKP27R; /*!< TAMP backup register 27, Address offset: 0x16C */
+ __IO uint32_t BKP28R; /*!< TAMP backup register 28, Address offset: 0x170 */
+ __IO uint32_t BKP29R; /*!< TAMP backup register 29, Address offset: 0x174 */
+ __IO uint32_t BKP30R; /*!< TAMP backup register 30, Address offset: 0x178 */
+ __IO uint32_t BKP31R; /*!< TAMP backup register 31, Address offset: 0x17C */
+} TAMP_TypeDef;
+
+/**
+ * @brief Universal Synchronous Asynchronous Receiver Transmitter
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */
+ __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */
+ __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */
+ __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */
+ __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */
+ __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */
+ __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */
+ __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */
+ __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */
+ __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */
+ __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */
+} USART_TypeDef;
+
+/**
+ * @brief System configuration, Boot and Security
+ */
+typedef struct
+{
+ uint32_t RESERVED1[4]; /*!< RESERVED1, Address offset: 0x00 - 0x0C */
+ __IO uint32_t HDPLCR; /*!< SBS HDPL Control Register, Address offset: 0x10 */
+ __IO uint32_t HDPLSR; /*!< SBS HDPL Status Register, Address offset: 0x14 */
+ __IO uint32_t RESERVED2[2]; /*!< RESERVED2, Address offset: 0x18 - 0x1C */
+ __IO uint32_t DBGCR; /*!< SBS Debug Control Register, Address offset: 0x20 */
+ __IO uint32_t DBGLOCKR; /*!< SBS Debug Lock Register, Address offset: 0x24 */
+ uint32_t RESERVED3[3]; /*!< RESERVED3, Address offset: 0x28 - 0x30 */
+ uint32_t RESERVED4[36]; /*!< RESERVED4, Address offset: 0x34 - 0xC0 */
+ uint32_t RESERVED6[15]; /*!< RESERVED6, Address offset: 0xC4 - 0xFC */
+ __IO uint32_t PMCR; /*!< SBS Product Mode & Config Register, Address offset: 0x100 */
+ __IO uint32_t FPUIMR; /*!< SBS FPU Interrupt Mask Register, Address offset: 0x104 */
+ __IO uint32_t MESR; /*!< SBS Memory Erase Status Register, Address offset: 0x108 */
+ uint32_t RESERVED7; /*!< RESERVED7, Address offset: 0x10C */
+ __IO uint32_t CCCSR; /*!< SBS Compensation Cell Control & Status Register, Address offset: 0x110 */
+ __IO uint32_t CCVALR; /*!< SBS Compensation Cell Value Register, Address offset: 0x114 */
+ __IO uint32_t CCSWCR; /*!< SBS Compensation Cell for I/Os sw code Register, Address offset: 0x118 */
+ __IO uint32_t RESERVED8; /*!< RESERVED8, Address offset: 0x11C */
+ __IO uint32_t CFGR2; /*!< SBS Class B Register, Address offset: 0x120 */
+ uint32_t RESERVED9[8]; /*!< RESERVED9, Address offset: 0x124 - 0x140 */
+ __IO uint32_t CNSLCKR; /*!< SBS CPU Non-secure Lock Register, Address offset: 0x144 */
+ uint32_t RESERVED10; /*!< RESERVED10, Address offset: 0x148 */
+ __IO uint32_t ECCNMIR; /*!< SBS FLITF ECC NMI MASK Register, Address offset: 0x14C */
+} SBS_TypeDef;
+
+
+/**
+ * @brief Universal Serial Bus Full Speed Dual Role Device
+ */
+typedef struct
+{
+ __IO uint32_t CHEP0R; /*!< USB Channel/Endpoint 0 register, Address offset: 0x00 */
+ __IO uint32_t CHEP1R; /*!< USB Channel/Endpoint 1 register, Address offset: 0x04 */
+ __IO uint32_t CHEP2R; /*!< USB Channel/Endpoint 2 register, Address offset: 0x08 */
+ __IO uint32_t CHEP3R; /*!< USB Channel/Endpoint 3 register, Address offset: 0x0C */
+ __IO uint32_t CHEP4R; /*!< USB Channel/Endpoint 4 register, Address offset: 0x10 */
+ __IO uint32_t CHEP5R; /*!< USB Channel/Endpoint 5 register, Address offset: 0x14 */
+ __IO uint32_t CHEP6R; /*!< USB Channel/Endpoint 6 register, Address offset: 0x18 */
+ __IO uint32_t CHEP7R; /*!< USB Channel/Endpoint 7 register, Address offset: 0x1C */
+ __IO uint32_t RESERVED0[8]; /*!< Reserved, */
+ __IO uint32_t CNTR; /*!< Control register, Address offset: 0x40 */
+ __IO uint32_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */
+ __IO uint32_t FNR; /*!< Frame number register, Address offset: 0x48 */
+ __IO uint32_t DADDR; /*!< Device address register, Address offset: 0x4C */
+ __IO uint32_t RESERVED1; /*!< Reserved */
+ __IO uint32_t LPMCSR; /*!< LPM Control and Status register, Address offset: 0x54 */
+ __IO uint32_t BCDR; /*!< Battery Charging detector register, Address offset: 0x58 */
+} USB_DRD_TypeDef;
+
+/**
+ * @brief Universal Serial Bus PacketMemoryArea Buffer Descriptor Table
+ */
+typedef struct
+{
+ __IO uint32_t TXBD; /*!= 6010050)
+ #pragma clang diagnostic pop
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning restore
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Address Map ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_Peripheral_peripheralAddr
+ * @{
+ */
+
+/* Internal SRAMs size */
+
+#define SRAM1_SIZE (0x4000UL) /*!< SRAM1=16k */
+#define SRAM2_SIZE (0x4000UL) /*!< SRAM2=16k */
+#define BKPSRAM_SIZE (0x0800UL) /*!< BKPSRAM=2k */
+
+/* Flash, Peripheral and internal SRAMs base addresses - Non secure */
+#define FLASH_BASE_NS (0x08000000UL) /*!< FLASH (up to 128 KB) non-secure base address */
+#define SRAM1_BASE_NS (0x20000000UL) /*!< SRAM1 (16 KB) non-secure base address */
+#define SRAM2_BASE_NS (0x20004000UL) /*!< SRAM2 (16 KB) non-secure base address */
+#define PERIPH_BASE_NS (0x40000000UL) /*!< Peripheral non-secure base address */
+
+/* Peripheral memory map - Non secure */
+#define APB1PERIPH_BASE_NS PERIPH_BASE_NS
+#define APB2PERIPH_BASE_NS (PERIPH_BASE_NS + 0x00010000UL)
+#define AHB1PERIPH_BASE_NS (PERIPH_BASE_NS + 0x00020000UL)
+#define AHB2PERIPH_BASE_NS (PERIPH_BASE_NS + 0x02020000UL)
+#define APB3PERIPH_BASE_NS (PERIPH_BASE_NS + 0x04000000UL)
+#define AHB3PERIPH_BASE_NS (PERIPH_BASE_NS + 0x04020000UL)
+
+/*!< APB1 Non secure peripherals */
+#define TIM2_BASE_NS (APB1PERIPH_BASE_NS + 0x0000UL)
+#define TIM3_BASE_NS (APB1PERIPH_BASE_NS + 0x0400UL)
+#define TIM6_BASE_NS (APB1PERIPH_BASE_NS + 0x1000UL)
+#define TIM7_BASE_NS (APB1PERIPH_BASE_NS + 0x1400UL)
+#define WWDG_BASE_NS (APB1PERIPH_BASE_NS + 0x2C00UL)
+#define IWDG_BASE_NS (APB1PERIPH_BASE_NS + 0x3000UL)
+#define OPAMP1_BASE_NS (APB1PERIPH_BASE_NS + 0x3400UL)
+#define SPI2_BASE_NS (APB1PERIPH_BASE_NS + 0x3800UL)
+#define SPI3_BASE_NS (APB1PERIPH_BASE_NS + 0x3C00UL)
+#define COMP1_BASE_NS (APB1PERIPH_BASE_NS + 0x4000UL)
+#define USART2_BASE_NS (APB1PERIPH_BASE_NS + 0x4400UL)
+#define USART3_BASE_NS (APB1PERIPH_BASE_NS + 0x4800UL)
+#define I2C1_BASE_NS (APB1PERIPH_BASE_NS + 0x5400UL)
+#define I2C2_BASE_NS (APB1PERIPH_BASE_NS + 0x5800UL)
+#define I3C1_BASE_NS (APB1PERIPH_BASE_NS + 0x5C00UL)
+#define CRS_BASE_NS (APB1PERIPH_BASE_NS + 0x6000UL)
+#define DTS_BASE_NS (APB1PERIPH_BASE_NS + 0x8C00UL)
+#define LPTIM2_BASE_NS (APB1PERIPH_BASE_NS + 0x9400UL)
+#define FDCAN1_BASE_NS (APB1PERIPH_BASE_NS + 0xA400UL)
+#define FDCAN_CONFIG_BASE_NS (APB1PERIPH_BASE_NS + 0xA500UL)
+#define SRAMCAN_BASE_NS (APB1PERIPH_BASE_NS + 0xAC00UL)
+
+/*!< APB2 Non secure peripherals */
+#define TIM1_BASE_NS (APB2PERIPH_BASE_NS + 0x2C00UL)
+#define SPI1_BASE_NS (APB2PERIPH_BASE_NS + 0x3000UL)
+#define USART1_BASE_NS (APB2PERIPH_BASE_NS + 0x3800UL)
+#define USB_DRD_BASE_NS (APB2PERIPH_BASE_NS + 0x6000UL)
+#define USB_DRD_PMAADDR_NS (APB2PERIPH_BASE_NS + 0x6400UL)
+
+/*!< AHB1 Non secure peripherals */
+#define GPDMA1_BASE_NS AHB1PERIPH_BASE_NS
+#define GPDMA2_BASE_NS (AHB1PERIPH_BASE_NS + 0x01000UL)
+#define FLASH_R_BASE_NS (AHB1PERIPH_BASE_NS + 0x02000UL)
+#define CRC_BASE_NS (AHB1PERIPH_BASE_NS + 0x03000UL)
+#define RAMCFG_BASE_NS (AHB1PERIPH_BASE_NS + 0x06000UL)
+#define ICACHE_BASE_NS (AHB1PERIPH_BASE_NS + 0x10400UL)
+#define GTZC_TZSC1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12400UL)
+#define GTZC_MPCBB1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12C00UL)
+#define GTZC_MPCBB2_BASE_NS (AHB1PERIPH_BASE_NS + 0x13000UL)
+#define BKPSRAM_BASE_NS (AHB1PERIPH_BASE_NS + 0x16400UL)
+
+#define GPDMA1_Channel0_BASE_NS (GPDMA1_BASE_NS + 0x0050UL)
+#define GPDMA1_Channel1_BASE_NS (GPDMA1_BASE_NS + 0x00D0UL)
+#define GPDMA1_Channel2_BASE_NS (GPDMA1_BASE_NS + 0x0150UL)
+#define GPDMA1_Channel3_BASE_NS (GPDMA1_BASE_NS + 0x01D0UL)
+#define GPDMA1_Channel4_BASE_NS (GPDMA1_BASE_NS + 0x0250UL)
+#define GPDMA1_Channel5_BASE_NS (GPDMA1_BASE_NS + 0x02D0UL)
+#define GPDMA1_Channel6_BASE_NS (GPDMA1_BASE_NS + 0x0350UL)
+#define GPDMA1_Channel7_BASE_NS (GPDMA1_BASE_NS + 0x03D0UL)
+#define GPDMA2_Channel0_BASE_NS (GPDMA2_BASE_NS + 0x0050UL)
+#define GPDMA2_Channel1_BASE_NS (GPDMA2_BASE_NS + 0x00D0UL)
+#define GPDMA2_Channel2_BASE_NS (GPDMA2_BASE_NS + 0x0150UL)
+#define GPDMA2_Channel3_BASE_NS (GPDMA2_BASE_NS + 0x01D0UL)
+#define GPDMA2_Channel4_BASE_NS (GPDMA2_BASE_NS + 0x0250UL)
+#define GPDMA2_Channel5_BASE_NS (GPDMA2_BASE_NS + 0x02D0UL)
+#define GPDMA2_Channel6_BASE_NS (GPDMA2_BASE_NS + 0x0350UL)
+#define GPDMA2_Channel7_BASE_NS (GPDMA2_BASE_NS + 0x03D0UL)
+
+#define RAMCFG_SRAM1_BASE_NS (RAMCFG_BASE_NS)
+#define RAMCFG_SRAM2_BASE_NS (RAMCFG_BASE_NS + 0x0040UL)
+#define RAMCFG_BKPRAM_BASE_NS (RAMCFG_BASE_NS + 0x0100UL)
+
+/*!< AHB2 Non secure peripherals */
+#define GPIOA_BASE_NS (AHB2PERIPH_BASE_NS + 0x00000UL)
+#define GPIOB_BASE_NS (AHB2PERIPH_BASE_NS + 0x00400UL)
+#define GPIOC_BASE_NS (AHB2PERIPH_BASE_NS + 0x00800UL)
+#define GPIOD_BASE_NS (AHB2PERIPH_BASE_NS + 0x00C00UL)
+#define GPIOH_BASE_NS (AHB2PERIPH_BASE_NS + 0x01C00UL)
+#define ADC1_BASE_NS (AHB2PERIPH_BASE_NS + 0x08000UL)
+#define ADC12_COMMON_BASE_NS (AHB2PERIPH_BASE_NS + 0x08300UL)
+#define DAC1_BASE_NS (AHB2PERIPH_BASE_NS + 0x08400UL)
+#define HASH_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0400UL)
+#define HASH_DIGEST_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0710UL)
+#define RNG_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0800UL)
+
+/*!< APB3 Non secure peripherals */
+#define SBS_BASE_NS (APB3PERIPH_BASE_NS + 0x0400UL)
+#define LPUART1_BASE_NS (APB3PERIPH_BASE_NS + 0x2400UL)
+#define I3C2_BASE_NS (APB3PERIPH_BASE_NS + 0x3000UL)
+#define LPTIM1_BASE_NS (APB3PERIPH_BASE_NS + 0x4400UL)
+#define RTC_BASE_NS (APB3PERIPH_BASE_NS + 0x7800UL)
+#define TAMP_BASE_NS (APB3PERIPH_BASE_NS + 0x7C00UL)
+
+/*!< AHB3 Non secure peripherals */
+#define PWR_BASE_NS (AHB3PERIPH_BASE_NS + 0x0800UL)
+#define RCC_BASE_NS (AHB3PERIPH_BASE_NS + 0x0C00UL)
+#define EXTI_BASE_NS (AHB3PERIPH_BASE_NS + 0x2000UL)
+#define DEBUG_BASE_NS (AHB3PERIPH_BASE_NS + 0x4000UL)
+
+/* Debug MCU registers base address */
+#define DBGMCU_BASE (0x44024000UL)
+#define PACKAGE_BASE (0x08FFF80EUL) /*!< Package data register base address */
+#define UID_BASE (0x08FFF800UL) /*!< Unique device ID register base address */
+#define FLASHSIZE_BASE (0x08FFF80CUL) /*!< Flash size data register base address */
+
+/* Internal Flash OTP Area */
+#define FLASH_OTP_BASE (0x08FFF000UL) /*!< FLASH OTP (one-time programmable) base address */
+#define FLASH_OTP_SIZE (0x800U) /*!< 2048 bytes OTP (one-time programmable) */
+
+/* Flash system Area */
+#define FLASH_SYSTEM_BASE_NS (0x0BF80000UL) /*!< FLASH System non-secure base address */
+#define FLASH_SYSTEM_SIZE (0x8000U) /*!< 32 Kbytes system Flash */
+
+
+/*!< Non Secure Service Library */
+/************ RSSLIB SAU system Flash region definition constants *************/
+#define NSSLIB_SYS_FLASH_NS_PFUNC_START (0xBF8FE6CUL)
+#define NSSLIB_SYS_FLASH_NS_PFUNC_END (0xBF8FE74UL)
+
+/************ RSSLIB function return constants ********************************/
+#define NSSLIB_ERROR (0xF5F5F5F5UL)
+#define NSSLIB_SUCCESS (0xEAEAEAEAUL)
+
+/*!< RSSLIB pointer function structure address definition */
+#define NSSLIB_PFUNC_BASE (0xBF8FE6CUL)
+#define NSSLIB_PFUNC ((NSSLIB_pFunc_TypeDef *)NSSLIB_PFUNC_BASE)
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level2 Function
+ * @detail This function increments HDP level up to HDP level 2
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval NSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*NSSLIB_S_JumpHDPlvl2_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval NSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*NSSLIB_S_JumpHDPlvl3_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief RSSLib secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM NSSLIB_S_JumpHDPlvl2_TypeDef JumpHDPLvl2;
+ __IM NSSLIB_S_JumpHDPlvl3_TypeDef JumpHDPLvl3;
+} NSSLIB_pFunc_TypeDef;
+
+
+/** @} */ /* End of group STM32H5xx_Peripheral_peripheralAddr */
+
+
+/* =========================================================================================================================== */
+/* ================ Peripheral declaration ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_Peripheral_declaration
+ * @{
+ */
+
+/*!< APB1 Non secure peripherals */
+#define TIM2_NS ((TIM_TypeDef *)TIM2_BASE_NS)
+#define TIM3_NS ((TIM_TypeDef *)TIM3_BASE_NS)
+#define TIM6_NS ((TIM_TypeDef *)TIM6_BASE_NS)
+#define TIM7_NS ((TIM_TypeDef *)TIM7_BASE_NS)
+#define WWDG_NS ((WWDG_TypeDef *)WWDG_BASE_NS)
+#define IWDG_NS ((IWDG_TypeDef *)IWDG_BASE_NS)
+#define OPAMP1_NS ((OPAMP_TypeDef *)OPAMP1_BASE_NS)
+#define SPI2_NS ((SPI_TypeDef *)SPI2_BASE_NS)
+#define SPI3_NS ((SPI_TypeDef *)SPI3_BASE_NS)
+#define COMP1_NS ((COMP_TypeDef *)COMP1_BASE_NS)
+#define USART2_NS ((USART_TypeDef *)USART2_BASE_NS)
+#define USART3_NS ((USART_TypeDef *)USART3_BASE_NS)
+#define I2C1_NS ((I2C_TypeDef *)I2C1_BASE_NS)
+#define I2C2_NS ((I2C_TypeDef *)I2C2_BASE_NS)
+#define I3C1_NS ((I3C_TypeDef *)I3C1_BASE_NS)
+#define CRS_NS ((CRS_TypeDef *)CRS_BASE_NS)
+#define DTS_NS ((DTS_TypeDef *)DTS_BASE_NS)
+#define LPTIM2_NS ((LPTIM_TypeDef *)LPTIM2_BASE_NS)
+#define FDCAN1_NS ((FDCAN_GlobalTypeDef *)FDCAN1_BASE_NS)
+#define FDCAN_CONFIG_NS ((FDCAN_Config_TypeDef *)FDCAN_CONFIG_BASE_NS)
+
+/*!< APB2 Non secure peripherals */
+#define TIM1_NS ((TIM_TypeDef *) TIM1_BASE_NS)
+#define SPI1_NS ((SPI_TypeDef *) SPI1_BASE_NS)
+#define USART1_NS ((USART_TypeDef *) USART1_BASE_NS)
+#define USB_DRD_FS_NS ((USB_DRD_TypeDef *) USB_DRD_BASE_NS)
+#define USB_DRD_PMA_BUFF_NS ((USB_DRD_PMABuffDescTypeDef *) USB_DRD_PMAADDR_NS)
+
+/*!< AHB1 Non secure peripherals */
+#define GPDMA1_NS ((DMA_TypeDef *) GPDMA1_BASE_NS)
+#define GPDMA2_NS ((DMA_TypeDef *) GPDMA2_BASE_NS)
+#define FLASH_NS ((FLASH_TypeDef *) FLASH_R_BASE_NS)
+#define CRC_NS ((CRC_TypeDef *) CRC_BASE_NS)
+#define RAMCFG_SRAM1_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM1_BASE_NS)
+#define RAMCFG_SRAM2_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM2_BASE_NS)
+#define RAMCFG_BKPRAM_NS ((RAMCFG_TypeDef *) RAMCFG_BKPRAM_BASE_NS)
+#define ICACHE_NS ((ICACHE_TypeDef *) ICACHE_BASE_NS)
+#define GTZC_TZSC1_NS ((GTZC_TZSC_TypeDef *) GTZC_TZSC1_BASE_NS)
+#define GTZC_MPCBB1_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB1_BASE_NS)
+#define GTZC_MPCBB2_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB2_BASE_NS)
+#define GPDMA1_Channel0_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel0_BASE_NS)
+#define GPDMA1_Channel1_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel1_BASE_NS)
+#define GPDMA1_Channel2_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel2_BASE_NS)
+#define GPDMA1_Channel3_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel3_BASE_NS)
+#define GPDMA1_Channel4_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel4_BASE_NS)
+#define GPDMA1_Channel5_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel5_BASE_NS)
+#define GPDMA1_Channel6_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel6_BASE_NS)
+#define GPDMA1_Channel7_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel7_BASE_NS)
+#define GPDMA2_Channel0_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel0_BASE_NS)
+#define GPDMA2_Channel1_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel1_BASE_NS)
+#define GPDMA2_Channel2_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel2_BASE_NS)
+#define GPDMA2_Channel3_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel3_BASE_NS)
+#define GPDMA2_Channel4_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel4_BASE_NS)
+#define GPDMA2_Channel5_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel5_BASE_NS)
+#define GPDMA2_Channel6_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel6_BASE_NS)
+#define GPDMA2_Channel7_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel7_BASE_NS)
+
+/*!< AHB2 Non secure peripherals */
+#define GPIOA_NS ((GPIO_TypeDef *) GPIOA_BASE_NS)
+#define GPIOB_NS ((GPIO_TypeDef *) GPIOB_BASE_NS)
+#define GPIOC_NS ((GPIO_TypeDef *) GPIOC_BASE_NS)
+#define GPIOD_NS ((GPIO_TypeDef *) GPIOD_BASE_NS)
+#define GPIOH_NS ((GPIO_TypeDef *) GPIOH_BASE_NS)
+#define ADC1_NS ((ADC_TypeDef *) ADC1_BASE_NS)
+#define ADC12_COMMON_NS ((ADC_Common_TypeDef *) ADC12_COMMON_BASE_NS)
+#define DAC1_NS ((DAC_TypeDef *) DAC1_BASE_NS)
+#define HASH_NS ((HASH_TypeDef *) HASH_BASE_NS)
+#define HASH_DIGEST_NS ((HASH_DIGEST_TypeDef *) HASH_DIGEST_BASE_NS)
+#define RNG_NS ((RNG_TypeDef *) RNG_BASE_NS)
+
+
+/*!< APB3 Non secure peripherals */
+#define SBS_NS ((SBS_TypeDef *) SBS_BASE_NS)
+#define LPUART1_NS ((USART_TypeDef *) LPUART1_BASE_NS)
+#define I3C2_NS ((I3C_TypeDef *) I3C2_BASE_NS)
+#define LPTIM1_NS ((LPTIM_TypeDef *) LPTIM1_BASE_NS)
+#define RTC_NS ((RTC_TypeDef *) RTC_BASE_NS)
+#define TAMP_NS ((TAMP_TypeDef *) TAMP_BASE_NS)
+
+/*!< AHB3 Non secure peripherals */
+#define PWR_NS ((PWR_TypeDef *) PWR_BASE_NS)
+#define RCC_NS ((RCC_TypeDef *) RCC_BASE_NS)
+#define EXTI_NS ((EXTI_TypeDef *) EXTI_BASE_NS)
+
+
+#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE)
+
+
+/*!< Memory base addresses for Non secure peripherals */
+#define FLASH_BASE FLASH_BASE_NS
+#define FLASH_SYSTEM_BASE FLASH_SYSTEM_BASE_NS
+#define SRAM1_BASE SRAM1_BASE_NS
+#define SRAM2_BASE SRAM2_BASE_NS
+#define BKPSRAM_BASE BKPSRAM_BASE_NS
+
+#define PERIPH_BASE PERIPH_BASE_NS
+#define APB1PERIPH_BASE APB1PERIPH_BASE_NS
+#define APB2PERIPH_BASE APB2PERIPH_BASE_NS
+#define APB3PERIPH_BASE APB3PERIPH_BASE_NS
+#define AHB1PERIPH_BASE AHB1PERIPH_BASE_NS
+#define AHB2PERIPH_BASE AHB2PERIPH_BASE_NS
+#define AHB3PERIPH_BASE AHB3PERIPH_BASE_NS
+
+/*!< Instance aliases and base addresses for Non secure peripherals */
+#define RCC RCC_NS
+#define RCC_BASE RCC_BASE_NS
+
+#define DTS DTS_NS
+#define DTS_BASE DTS_BASE_NS
+
+#define FLASH FLASH_NS
+#define FLASH_R_BASE FLASH_R_BASE_NS
+
+#define GPDMA1 GPDMA1_NS
+#define GPDMA1_BASE GPDMA1_BASE_NS
+
+#define GPDMA1_Channel0 GPDMA1_Channel0_NS
+#define GPDMA1_Channel0_BASE GPDMA1_Channel0_BASE_NS
+
+#define GPDMA1_Channel1 GPDMA1_Channel1_NS
+#define GPDMA1_Channel1_BASE GPDMA1_Channel1_BASE_NS
+
+#define GPDMA1_Channel2 GPDMA1_Channel2_NS
+#define GPDMA1_Channel2_BASE GPDMA1_Channel2_BASE_NS
+
+#define GPDMA1_Channel3 GPDMA1_Channel3_NS
+#define GPDMA1_Channel3_BASE GPDMA1_Channel3_BASE_NS
+
+#define GPDMA1_Channel4 GPDMA1_Channel4_NS
+#define GPDMA1_Channel4_BASE GPDMA1_Channel4_BASE_NS
+
+#define GPDMA1_Channel5 GPDMA1_Channel5_NS
+#define GPDMA1_Channel5_BASE GPDMA1_Channel5_BASE_NS
+
+#define GPDMA1_Channel6 GPDMA1_Channel6_NS
+#define GPDMA1_Channel6_BASE GPDMA1_Channel6_BASE_NS
+
+#define GPDMA1_Channel7 GPDMA1_Channel7_NS
+#define GPDMA1_Channel7_BASE GPDMA1_Channel7_BASE_NS
+
+#define GPDMA2 GPDMA2_NS
+#define GPDMA2_BASE GPDMA2_BASE_NS
+
+#define GPDMA2_Channel0 GPDMA2_Channel0_NS
+#define GPDMA2_Channel0_BASE GPDMA2_Channel0_BASE_NS
+
+#define GPDMA2_Channel1 GPDMA2_Channel1_NS
+#define GPDMA2_Channel1_BASE GPDMA2_Channel1_BASE_NS
+
+#define GPDMA2_Channel2 GPDMA2_Channel2_NS
+#define GPDMA2_Channel2_BASE GPDMA2_Channel2_BASE_NS
+
+#define GPDMA2_Channel3 GPDMA2_Channel3_NS
+#define GPDMA2_Channel3_BASE GPDMA2_Channel3_BASE_NS
+
+#define GPDMA2_Channel4 GPDMA2_Channel4_NS
+#define GPDMA2_Channel4_BASE GPDMA2_Channel4_BASE_NS
+
+#define GPDMA2_Channel5 GPDMA2_Channel5_NS
+#define GPDMA2_Channel5_BASE GPDMA2_Channel5_BASE_NS
+
+#define GPDMA2_Channel6 GPDMA2_Channel6_NS
+#define GPDMA2_Channel6_BASE GPDMA2_Channel6_BASE_NS
+
+#define GPDMA2_Channel7 GPDMA2_Channel7_NS
+#define GPDMA2_Channel7_BASE GPDMA2_Channel7_BASE_NS
+
+#define GPIOA GPIOA_NS
+#define GPIOA_BASE GPIOA_BASE_NS
+
+#define GPIOB GPIOB_NS
+#define GPIOB_BASE GPIOB_BASE_NS
+
+#define GPIOC GPIOC_NS
+#define GPIOC_BASE GPIOC_BASE_NS
+
+#define GPIOD GPIOD_NS
+#define GPIOD_BASE GPIOD_BASE_NS
+
+#define GPIOH GPIOH_NS
+#define GPIOH_BASE GPIOH_BASE_NS
+
+#define PWR PWR_NS
+#define PWR_BASE PWR_BASE_NS
+
+#define RAMCFG_SRAM1 RAMCFG_SRAM1_NS
+#define RAMCFG_SRAM1_BASE RAMCFG_SRAM1_BASE_NS
+
+#define RAMCFG_SRAM2 RAMCFG_SRAM2_NS
+#define RAMCFG_SRAM2_BASE RAMCFG_SRAM2_BASE_NS
+
+#define RAMCFG_BKPRAM RAMCFG_BKPRAM_NS
+#define RAMCFG_BKPRAM_BASE RAMCFG_BKPRAM_BASE_NS
+
+#define EXTI EXTI_NS
+#define EXTI_BASE EXTI_BASE_NS
+
+#define ICACHE ICACHE_NS
+#define ICACHE_BASE ICACHE_BASE_NS
+
+#define GTZC_TZSC1 GTZC_TZSC1_NS
+#define GTZC_TZSC1_BASE GTZC_TZSC1_BASE_NS
+
+#define GTZC_MPCBB1 GTZC_MPCBB1_NS
+#define GTZC_MPCBB1_BASE GTZC_MPCBB1_BASE_NS
+
+#define GTZC_MPCBB2 GTZC_MPCBB2_NS
+#define GTZC_MPCBB2_BASE GTZC_MPCBB2_BASE_NS
+
+#define RTC RTC_NS
+#define RTC_BASE RTC_BASE_NS
+
+#define TAMP TAMP_NS
+#define TAMP_BASE TAMP_BASE_NS
+
+#define TIM1 TIM1_NS
+#define TIM1_BASE TIM1_BASE_NS
+
+#define TIM2 TIM2_NS
+#define TIM2_BASE TIM2_BASE_NS
+
+#define TIM3 TIM3_NS
+#define TIM3_BASE TIM3_BASE_NS
+
+#define TIM6 TIM6_NS
+#define TIM6_BASE TIM6_BASE_NS
+
+#define TIM7 TIM7_NS
+#define TIM7_BASE TIM7_BASE_NS
+
+#define WWDG WWDG_NS
+#define WWDG_BASE WWDG_BASE_NS
+
+#define IWDG IWDG_NS
+#define IWDG_BASE IWDG_BASE_NS
+
+#define OPAMP1 OPAMP1_NS
+#define OPAMP1_BASE OPAMP1_BASE_NS
+
+#define SPI1 SPI1_NS
+#define SPI1_BASE SPI1_BASE_NS
+
+#define SPI2 SPI2_NS
+#define SPI2_BASE SPI2_BASE_NS
+
+#define SPI3 SPI3_NS
+#define SPI3_BASE SPI3_BASE_NS
+
+#define COMP1 COMP1_NS
+#define COMP1_BASE COMP1_BASE_NS
+
+#define USART1 USART1_NS
+#define USART1_BASE USART1_BASE_NS
+
+#define USART2 USART2_NS
+#define USART2_BASE USART2_BASE_NS
+
+#define USART3 USART3_NS
+#define USART3_BASE USART3_BASE_NS
+
+#define I2C1 I2C1_NS
+#define I2C1_BASE I2C1_BASE_NS
+
+#define I2C2 I2C2_NS
+#define I2C2_BASE I2C2_BASE_NS
+
+#define I3C1 I3C1_NS
+#define I3C1_BASE I3C1_BASE_NS
+
+#define I3C2 I3C2_NS
+#define I3C2_BASE I3C2_BASE_NS
+
+#define CRS CRS_NS
+#define CRS_BASE CRS_BASE_NS
+
+#define FDCAN1 FDCAN1_NS
+#define FDCAN1_BASE FDCAN1_BASE_NS
+
+#define FDCAN_CONFIG FDCAN_CONFIG_NS
+#define FDCAN_CONFIG_BASE FDCAN_CONFIG_BASE_NS
+#define SRAMCAN_BASE SRAMCAN_BASE_NS
+
+#define DAC1 DAC1_NS
+#define DAC1_BASE DAC1_BASE_NS
+
+#define LPTIM1 LPTIM1_NS
+#define LPTIM1_BASE LPTIM1_BASE_NS
+
+#define LPTIM2 LPTIM2_NS
+#define LPTIM2_BASE LPTIM2_BASE_NS
+
+#define LPUART1 LPUART1_NS
+#define LPUART1_BASE LPUART1_BASE_NS
+
+#define SBS SBS_NS
+#define SBS_BASE SBS_BASE_NS
+
+#define USB_DRD_FS USB_DRD_FS_NS
+#define USB_DRD_FS_BASE USB_DRD_BASE_NS
+#define USB_DRD_PMAADDR USB_DRD_PMAADDR_NS
+#define USB_DRD_PMA_BUFF USB_DRD_PMA_BUFF_NS
+
+#define CRC CRC_NS
+#define CRC_BASE CRC_BASE_NS
+
+#define ADC1 ADC1_NS
+#define ADC1_BASE ADC1_BASE_NS
+
+#define ADC12_COMMON ADC12_COMMON_NS
+#define ADC12_COMMON_BASE ADC12_COMMON_BASE_NS
+
+#define HASH HASH_NS
+#define HASH_BASE HASH_BASE_NS
+
+#define HASH_DIGEST HASH_DIGEST_NS
+#define HASH_DIGEST_BASE HASH_DIGEST_BASE_NS
+
+#define RNG RNG_NS
+#define RNG_BASE RNG_BASE_NS
+
+
+/******************************************************************************/
+/* */
+/* Analog to Digital Converter */
+/* */
+/******************************************************************************/
+/******************** Bit definition for ADC_ISR register *******************/
+#define ADC_ISR_ADRDY_Pos (0U)
+#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */
+#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */
+#define ADC_ISR_EOSMP_Pos (1U)
+#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */
+#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */
+#define ADC_ISR_EOC_Pos (2U)
+#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */
+#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */
+#define ADC_ISR_EOS_Pos (3U)
+#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */
+#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */
+#define ADC_ISR_OVR_Pos (4U)
+#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */
+#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */
+#define ADC_ISR_JEOC_Pos (5U)
+#define ADC_ISR_JEOC_Msk (0x1UL << ADC_ISR_JEOC_Pos) /*!< 0x00000020 */
+#define ADC_ISR_JEOC ADC_ISR_JEOC_Msk /*!< ADC group injected end of unitary conversion flag */
+#define ADC_ISR_JEOS_Pos (6U)
+#define ADC_ISR_JEOS_Msk (0x1UL << ADC_ISR_JEOS_Pos) /*!< 0x00000040 */
+#define ADC_ISR_JEOS ADC_ISR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */
+#define ADC_ISR_AWD1_Pos (7U)
+#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */
+#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */
+#define ADC_ISR_AWD2_Pos (8U)
+#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */
+#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */
+#define ADC_ISR_AWD3_Pos (9U)
+#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */
+#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */
+#define ADC_ISR_JQOVF_Pos (10U)
+#define ADC_ISR_JQOVF_Msk (0x1UL << ADC_ISR_JQOVF_Pos) /*!< 0x00000400 */
+#define ADC_ISR_JQOVF ADC_ISR_JQOVF_Msk /*!< ADC group injected contexts queue overflow flag */
+
+/******************** Bit definition for ADC_IER register *******************/
+#define ADC_IER_ADRDYIE_Pos (0U)
+#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */
+#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */
+#define ADC_IER_EOSMPIE_Pos (1U)
+#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */
+#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */
+#define ADC_IER_EOCIE_Pos (2U)
+#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */
+#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */
+#define ADC_IER_EOSIE_Pos (3U)
+#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */
+#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */
+#define ADC_IER_OVRIE_Pos (4U)
+#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */
+#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */
+#define ADC_IER_JEOCIE_Pos (5U)
+#define ADC_IER_JEOCIE_Msk (0x1UL << ADC_IER_JEOCIE_Pos) /*!< 0x00000020 */
+#define ADC_IER_JEOCIE ADC_IER_JEOCIE_Msk /*!< ADC group injected end of unitary conversion interrupt */
+#define ADC_IER_JEOSIE_Pos (6U)
+#define ADC_IER_JEOSIE_Msk (0x1UL << ADC_IER_JEOSIE_Pos) /*!< 0x00000040 */
+#define ADC_IER_JEOSIE ADC_IER_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */
+#define ADC_IER_AWD1IE_Pos (7U)
+#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */
+#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */
+#define ADC_IER_AWD2IE_Pos (8U)
+#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */
+#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */
+#define ADC_IER_AWD3IE_Pos (9U)
+#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */
+#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */
+#define ADC_IER_JQOVFIE_Pos (10U)
+#define ADC_IER_JQOVFIE_Msk (0x1UL << ADC_IER_JQOVFIE_Pos) /*!< 0x00000400 */
+#define ADC_IER_JQOVFIE ADC_IER_JQOVFIE_Msk /*!< ADC group injected contexts queue overflow interrupt */
+
+/******************** Bit definition for ADC_CR register ********************/
+#define ADC_CR_ADEN_Pos (0U)
+#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */
+#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */
+#define ADC_CR_ADDIS_Pos (1U)
+#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */
+#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */
+#define ADC_CR_ADSTART_Pos (2U)
+#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */
+#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */
+#define ADC_CR_JADSTART_Pos (3U)
+#define ADC_CR_JADSTART_Msk (0x1UL << ADC_CR_JADSTART_Pos) /*!< 0x00000008 */
+#define ADC_CR_JADSTART ADC_CR_JADSTART_Msk /*!< ADC group injected conversion start */
+#define ADC_CR_ADSTP_Pos (4U)
+#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */
+#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */
+#define ADC_CR_JADSTP_Pos (5U)
+#define ADC_CR_JADSTP_Msk (0x1UL << ADC_CR_JADSTP_Pos) /*!< 0x00000020 */
+#define ADC_CR_JADSTP ADC_CR_JADSTP_Msk /*!< ADC group injected conversion stop */
+#define ADC_CR_ADVREGEN_Pos (28U)
+#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */
+#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */
+#define ADC_CR_DEEPPWD_Pos (29U)
+#define ADC_CR_DEEPPWD_Msk (0x1UL << ADC_CR_DEEPPWD_Pos) /*!< 0x20000000 */
+#define ADC_CR_DEEPPWD ADC_CR_DEEPPWD_Msk /*!< ADC deep power down enable */
+#define ADC_CR_ADCALDIF_Pos (30U)
+#define ADC_CR_ADCALDIF_Msk (0x1UL << ADC_CR_ADCALDIF_Pos) /*!< 0x40000000 */
+#define ADC_CR_ADCALDIF ADC_CR_ADCALDIF_Msk /*!< ADC differential mode for calibration */
+#define ADC_CR_ADCAL_Pos (31U)
+#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */
+#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */
+
+/******************** Bit definition for ADC_CFGR register ******************/
+#define ADC_CFGR_DMAEN_Pos (0U)
+#define ADC_CFGR_DMAEN_Msk (0x1UL << ADC_CFGR_DMAEN_Pos) /*!< 0x00000001 */
+#define ADC_CFGR_DMAEN ADC_CFGR_DMAEN_Msk /*!< ADC DMA transfer enable */
+#define ADC_CFGR_DMACFG_Pos (1U)
+#define ADC_CFGR_DMACFG_Msk (0x1UL << ADC_CFGR_DMACFG_Pos) /*!< 0x00000002 */
+#define ADC_CFGR_DMACFG ADC_CFGR_DMACFG_Msk /*!< ADC DMA transfer configuration */
+
+#define ADC_CFGR_RES_Pos (3U)
+#define ADC_CFGR_RES_Msk (0x3UL << ADC_CFGR_RES_Pos) /*!< 0x00000018 */
+#define ADC_CFGR_RES ADC_CFGR_RES_Msk /*!< ADC data resolution */
+#define ADC_CFGR_RES_0 (0x1UL << ADC_CFGR_RES_Pos) /*!< 0x00000008 */
+#define ADC_CFGR_RES_1 (0x2UL << ADC_CFGR_RES_Pos) /*!< 0x00000010 */
+
+#define ADC_CFGR_EXTSEL_Pos (5U)
+#define ADC_CFGR_EXTSEL_Msk (0x1FUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003E0 */
+#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */
+#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000020 */
+#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */
+#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */
+#define ADC_CFGR_EXTSEL_3 (0x8UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */
+#define ADC_CFGR_EXTSEL_4 (0x10UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000200 */
+
+#define ADC_CFGR_EXTEN_Pos (10U)
+#define ADC_CFGR_EXTEN_Msk (0x3UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000C00 */
+#define ADC_CFGR_EXTEN ADC_CFGR_EXTEN_Msk /*!< ADC group regular external trigger polarity */
+#define ADC_CFGR_EXTEN_0 (0x1UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000400 */
+#define ADC_CFGR_EXTEN_1 (0x2UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000800 */
+
+#define ADC_CFGR_OVRMOD_Pos (12U)
+#define ADC_CFGR_OVRMOD_Msk (0x1UL << ADC_CFGR_OVRMOD_Pos) /*!< 0x00001000 */
+#define ADC_CFGR_OVRMOD ADC_CFGR_OVRMOD_Msk /*!< ADC group regular overrun configuration */
+#define ADC_CFGR_CONT_Pos (13U)
+#define ADC_CFGR_CONT_Msk (0x1UL << ADC_CFGR_CONT_Pos) /*!< 0x00002000 */
+#define ADC_CFGR_CONT ADC_CFGR_CONT_Msk /*!< ADC group regular continuous conversion mode */
+#define ADC_CFGR_AUTDLY_Pos (14U)
+#define ADC_CFGR_AUTDLY_Msk (0x1UL << ADC_CFGR_AUTDLY_Pos) /*!< 0x00004000 */
+#define ADC_CFGR_AUTDLY ADC_CFGR_AUTDLY_Msk /*!< ADC low power auto wait */
+#define ADC_CFGR_ALIGN_Pos (15U)
+#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00008000 */
+#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignment */
+#define ADC_CFGR_DISCEN_Pos (16U)
+#define ADC_CFGR_DISCEN_Msk (0x1UL << ADC_CFGR_DISCEN_Pos) /*!< 0x00010000 */
+#define ADC_CFGR_DISCEN ADC_CFGR_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */
+
+#define ADC_CFGR_DISCNUM_Pos (17U)
+#define ADC_CFGR_DISCNUM_Msk (0x7UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x000E0000 */
+#define ADC_CFGR_DISCNUM ADC_CFGR_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */
+#define ADC_CFGR_DISCNUM_0 (0x1UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00020000 */
+#define ADC_CFGR_DISCNUM_1 (0x2UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00040000 */
+#define ADC_CFGR_DISCNUM_2 (0x4UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00080000 */
+
+#define ADC_CFGR_JDISCEN_Pos (20U)
+#define ADC_CFGR_JDISCEN_Msk (0x1UL << ADC_CFGR_JDISCEN_Pos) /*!< 0x00100000 */
+#define ADC_CFGR_JDISCEN ADC_CFGR_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */
+#define ADC_CFGR_JQM_Pos (21U)
+#define ADC_CFGR_JQM_Msk (0x1UL << ADC_CFGR_JQM_Pos) /*!< 0x00200000 */
+#define ADC_CFGR_JQM ADC_CFGR_JQM_Msk /*!< ADC group injected contexts queue mode */
+#define ADC_CFGR_AWD1SGL_Pos (22U)
+#define ADC_CFGR_AWD1SGL_Msk (0x1UL << ADC_CFGR_AWD1SGL_Pos) /*!< 0x00400000 */
+#define ADC_CFGR_AWD1SGL ADC_CFGR_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */
+#define ADC_CFGR_AWD1EN_Pos (23U)
+#define ADC_CFGR_AWD1EN_Msk (0x1UL << ADC_CFGR_AWD1EN_Pos) /*!< 0x00800000 */
+#define ADC_CFGR_AWD1EN ADC_CFGR_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */
+#define ADC_CFGR_JAWD1EN_Pos (24U)
+#define ADC_CFGR_JAWD1EN_Msk (0x1UL << ADC_CFGR_JAWD1EN_Pos) /*!< 0x01000000 */
+#define ADC_CFGR_JAWD1EN ADC_CFGR_JAWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */
+#define ADC_CFGR_JAUTO_Pos (25U)
+#define ADC_CFGR_JAUTO_Msk (0x1UL << ADC_CFGR_JAUTO_Pos) /*!< 0x02000000 */
+#define ADC_CFGR_JAUTO ADC_CFGR_JAUTO_Msk /*!< ADC group injected automatic trigger mode */
+
+#define ADC_CFGR_AWD1CH_Pos (26U)
+#define ADC_CFGR_AWD1CH_Msk (0x1FUL << ADC_CFGR_AWD1CH_Pos) /*!< 0x7C000000 */
+#define ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */
+#define ADC_CFGR_AWD1CH_0 (0x01UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x04000000 */
+#define ADC_CFGR_AWD1CH_1 (0x02UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x08000000 */
+#define ADC_CFGR_AWD1CH_2 (0x04UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x10000000 */
+#define ADC_CFGR_AWD1CH_3 (0x08UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x20000000 */
+#define ADC_CFGR_AWD1CH_4 (0x10UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x40000000 */
+
+#define ADC_CFGR_JQDIS_Pos (31U)
+#define ADC_CFGR_JQDIS_Msk (0x1UL << ADC_CFGR_JQDIS_Pos) /*!< 0x80000000 */
+#define ADC_CFGR_JQDIS ADC_CFGR_JQDIS_Msk /*!< ADC group injected contexts queue disable */
+
+/******************** Bit definition for ADC_CFGR2 register *****************/
+#define ADC_CFGR2_ROVSE_Pos (0U)
+#define ADC_CFGR2_ROVSE_Msk (0x1UL << ADC_CFGR2_ROVSE_Pos) /*!< 0x00000001 */
+#define ADC_CFGR2_ROVSE ADC_CFGR2_ROVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */
+#define ADC_CFGR2_JOVSE_Pos (1U)
+#define ADC_CFGR2_JOVSE_Msk (0x1UL << ADC_CFGR2_JOVSE_Pos) /*!< 0x00000002 */
+#define ADC_CFGR2_JOVSE ADC_CFGR2_JOVSE_Msk /*!< ADC oversampler enable on scope ADC group injected */
+
+#define ADC_CFGR2_OVSR_Pos (2U)
+#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */
+#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */
+#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */
+#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */
+#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */
+
+#define ADC_CFGR2_OVSS_Pos (5U)
+#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */
+#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */
+#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */
+#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */
+#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */
+#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */
+
+#define ADC_CFGR2_TROVS_Pos (9U)
+#define ADC_CFGR2_TROVS_Msk (0x1UL << ADC_CFGR2_TROVS_Pos) /*!< 0x00000200 */
+#define ADC_CFGR2_TROVS ADC_CFGR2_TROVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */
+#define ADC_CFGR2_ROVSM_Pos (10U)
+#define ADC_CFGR2_ROVSM_Msk (0x1UL << ADC_CFGR2_ROVSM_Pos) /*!< 0x00000400 */
+#define ADC_CFGR2_ROVSM ADC_CFGR2_ROVSM_Msk /*!< ADC oversampling mode managing interlaced conversions of ADC group regular and group injected */
+
+#define ADC_CFGR2_GCOMP_Pos (16U)
+#define ADC_CFGR2_GCOMP_Msk (0x1UL << ADC_CFGR2_GCOMP_Pos) /*!< 0x00010000 */
+#define ADC_CFGR2_GCOMP ADC_CFGR2_GCOMP_Msk /*!< ADC Gain Compensation mode */
+
+#define ADC_CFGR2_SWTRIG_Pos (25U)
+#define ADC_CFGR2_SWTRIG_Msk (0x1UL << ADC_CFGR2_SWTRIG_Pos) /*!< 0x02000000 */
+#define ADC_CFGR2_SWTRIG ADC_CFGR2_SWTRIG_Msk /*!< ADC Software Trigger Bit for Sample time control trigger mode */
+#define ADC_CFGR2_BULB_Pos (26U)
+#define ADC_CFGR2_BULB_Msk (0x1UL << ADC_CFGR2_BULB_Pos) /*!< 0x04000000 */
+#define ADC_CFGR2_BULB ADC_CFGR2_BULB_Msk /*!< ADC Bulb sampling mode */
+#define ADC_CFGR2_SMPTRIG_Pos (27U)
+#define ADC_CFGR2_SMPTRIG_Msk (0x1UL << ADC_CFGR2_SMPTRIG_Pos) /*!< 0x08000000 */
+#define ADC_CFGR2_SMPTRIG ADC_CFGR2_SMPTRIG_Msk /*!< ADC Sample Time Control Trigger mode */
+
+#define ADC_CFGR2_LFTRIG_Pos (29U)
+#define ADC_CFGR2_LFTRIG_Msk (0x1UL << ADC_CFGR2_LFTRIG_Pos) /*!< 0x20000000 */
+#define ADC_CFGR2_LFTRIG ADC_CFGR2_LFTRIG_Msk /*!< ADC Low Frequency Trigger */
+
+/******************** Bit definition for ADC_SMPR1 register *****************/
+#define ADC_SMPR1_SMP0_Pos (0U)
+#define ADC_SMPR1_SMP0_Msk (0x7UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000007 */
+#define ADC_SMPR1_SMP0 ADC_SMPR1_SMP0_Msk /*!< ADC channel 0 sampling time selection */
+#define ADC_SMPR1_SMP0_0 (0x1UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000001 */
+#define ADC_SMPR1_SMP0_1 (0x2UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000002 */
+#define ADC_SMPR1_SMP0_2 (0x4UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000004 */
+
+#define ADC_SMPR1_SMP1_Pos (3U)
+#define ADC_SMPR1_SMP1_Msk (0x7UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000038 */
+#define ADC_SMPR1_SMP1 ADC_SMPR1_SMP1_Msk /*!< ADC channel 1 sampling time selection */
+#define ADC_SMPR1_SMP1_0 (0x1UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000008 */
+#define ADC_SMPR1_SMP1_1 (0x2UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000010 */
+#define ADC_SMPR1_SMP1_2 (0x4UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000020 */
+
+#define ADC_SMPR1_SMP2_Pos (6U)
+#define ADC_SMPR1_SMP2_Msk (0x7UL << ADC_SMPR1_SMP2_Pos) /*!< 0x000001C0 */
+#define ADC_SMPR1_SMP2 ADC_SMPR1_SMP2_Msk /*!< ADC channel 2 sampling time selection */
+#define ADC_SMPR1_SMP2_0 (0x1UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000040 */
+#define ADC_SMPR1_SMP2_1 (0x2UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000080 */
+#define ADC_SMPR1_SMP2_2 (0x4UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000100 */
+
+#define ADC_SMPR1_SMP3_Pos (9U)
+#define ADC_SMPR1_SMP3_Msk (0x7UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000E00 */
+#define ADC_SMPR1_SMP3 ADC_SMPR1_SMP3_Msk /*!< ADC channel 3 sampling time selection */
+#define ADC_SMPR1_SMP3_0 (0x1UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000200 */
+#define ADC_SMPR1_SMP3_1 (0x2UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000400 */
+#define ADC_SMPR1_SMP3_2 (0x4UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000800 */
+
+#define ADC_SMPR1_SMP4_Pos (12U)
+#define ADC_SMPR1_SMP4_Msk (0x7UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00007000 */
+#define ADC_SMPR1_SMP4 ADC_SMPR1_SMP4_Msk /*!< ADC channel 4 sampling time selection */
+#define ADC_SMPR1_SMP4_0 (0x1UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00001000 */
+#define ADC_SMPR1_SMP4_1 (0x2UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00002000 */
+#define ADC_SMPR1_SMP4_2 (0x4UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00004000 */
+
+#define ADC_SMPR1_SMP5_Pos (15U)
+#define ADC_SMPR1_SMP5_Msk (0x7UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00038000 */
+#define ADC_SMPR1_SMP5 ADC_SMPR1_SMP5_Msk /*!< ADC channel 5 sampling time selection */
+#define ADC_SMPR1_SMP5_0 (0x1UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00008000 */
+#define ADC_SMPR1_SMP5_1 (0x2UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00010000 */
+#define ADC_SMPR1_SMP5_2 (0x4UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00020000 */
+
+#define ADC_SMPR1_SMP6_Pos (18U)
+#define ADC_SMPR1_SMP6_Msk (0x7UL << ADC_SMPR1_SMP6_Pos) /*!< 0x001C0000 */
+#define ADC_SMPR1_SMP6 ADC_SMPR1_SMP6_Msk /*!< ADC channel 6 sampling time selection */
+#define ADC_SMPR1_SMP6_0 (0x1UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00040000 */
+#define ADC_SMPR1_SMP6_1 (0x2UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00080000 */
+#define ADC_SMPR1_SMP6_2 (0x4UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00100000 */
+
+#define ADC_SMPR1_SMP7_Pos (21U)
+#define ADC_SMPR1_SMP7_Msk (0x7UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00E00000 */
+#define ADC_SMPR1_SMP7 ADC_SMPR1_SMP7_Msk /*!< ADC channel 7 sampling time selection */
+#define ADC_SMPR1_SMP7_0 (0x1UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00200000 */
+#define ADC_SMPR1_SMP7_1 (0x2UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00400000 */
+#define ADC_SMPR1_SMP7_2 (0x4UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00800000 */
+
+#define ADC_SMPR1_SMP8_Pos (24U)
+#define ADC_SMPR1_SMP8_Msk (0x7UL << ADC_SMPR1_SMP8_Pos) /*!< 0x07000000 */
+#define ADC_SMPR1_SMP8 ADC_SMPR1_SMP8_Msk /*!< ADC channel 8 sampling time selection */
+#define ADC_SMPR1_SMP8_0 (0x1UL << ADC_SMPR1_SMP8_Pos) /*!< 0x01000000 */
+#define ADC_SMPR1_SMP8_1 (0x2UL << ADC_SMPR1_SMP8_Pos) /*!< 0x02000000 */
+#define ADC_SMPR1_SMP8_2 (0x4UL << ADC_SMPR1_SMP8_Pos) /*!< 0x04000000 */
+
+#define ADC_SMPR1_SMP9_Pos (27U)
+#define ADC_SMPR1_SMP9_Msk (0x7UL << ADC_SMPR1_SMP9_Pos) /*!< 0x38000000 */
+#define ADC_SMPR1_SMP9 ADC_SMPR1_SMP9_Msk /*!< ADC channel 9 sampling time selection */
+#define ADC_SMPR1_SMP9_0 (0x1UL << ADC_SMPR1_SMP9_Pos) /*!< 0x08000000 */
+#define ADC_SMPR1_SMP9_1 (0x2UL << ADC_SMPR1_SMP9_Pos) /*!< 0x10000000 */
+#define ADC_SMPR1_SMP9_2 (0x4UL << ADC_SMPR1_SMP9_Pos) /*!< 0x20000000 */
+
+#define ADC_SMPR1_SMPPLUS_Pos (31U)
+#define ADC_SMPR1_SMPPLUS_Msk (0x1UL << ADC_SMPR1_SMPPLUS_Pos) /*!< 0x80000000 */
+#define ADC_SMPR1_SMPPLUS ADC_SMPR1_SMPPLUS_Msk /*!< ADC channels sampling time additional setting */
+
+/******************** Bit definition for ADC_SMPR2 register *****************/
+#define ADC_SMPR2_SMP10_Pos (0U)
+#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */
+#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< ADC channel 10 sampling time selection */
+#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */
+#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */
+#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000004 */
+
+#define ADC_SMPR2_SMP11_Pos (3U)
+#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000038 */
+#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< ADC channel 11 sampling time selection */
+#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000008 */
+#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000010 */
+#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000020 */
+
+#define ADC_SMPR2_SMP12_Pos (6U)
+#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x000001C0 */
+#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< ADC channel 12 sampling time selection */
+#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000040 */
+#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000080 */
+#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000100 */
+
+#define ADC_SMPR2_SMP13_Pos (9U)
+#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000E00 */
+#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< ADC channel 13 sampling time selection */
+#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000200 */
+#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000400 */
+#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000800 */
+
+#define ADC_SMPR2_SMP14_Pos (12U)
+#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00007000 */
+#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< ADC channel 14 sampling time selection */
+#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00001000 */
+#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00002000 */
+#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00004000 */
+
+#define ADC_SMPR2_SMP15_Pos (15U)
+#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */
+#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< ADC channel 15 sampling time selection */
+#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */
+#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */
+#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */
+
+#define ADC_SMPR2_SMP16_Pos (18U)
+#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x001C0000 */
+#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< ADC channel 16 sampling time selection */
+#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00040000 */
+#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00080000 */
+#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00100000 */
+
+#define ADC_SMPR2_SMP17_Pos (21U)
+#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00E00000 */
+#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< ADC channel 17 sampling time selection */
+#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00200000 */
+#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00400000 */
+#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00800000 */
+
+#define ADC_SMPR2_SMP18_Pos (24U)
+#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x07000000 */
+#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< ADC channel 18 sampling time selection */
+#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x01000000 */
+#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x02000000 */
+#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) /*!< 0x04000000 */
+
+/******************** Bit definition for ADC_TR1 register *******************/
+#define ADC_TR1_LT1_Pos (0U)
+#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */
+#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */
+
+#define ADC_TR1_AWDFILT_Pos (12U)
+#define ADC_TR1_AWDFILT_Msk (0x7UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00007000 */
+#define ADC_TR1_AWDFILT ADC_TR1_AWDFILT_Msk /*!< ADC analog watchdog filtering parameter */
+#define ADC_TR1_AWDFILT_0 (0x1UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00001000 */
+#define ADC_TR1_AWDFILT_1 (0x2UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00002000 */
+#define ADC_TR1_AWDFILT_2 (0x4UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00004000 */
+
+#define ADC_TR1_HT1_Pos (16U)
+#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */
+#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC analog watchdog 1 threshold high */
+
+/******************** Bit definition for ADC_TR2 register *******************/
+#define ADC_TR2_LT2_Pos (0U)
+#define ADC_TR2_LT2_Msk (0xFFUL << ADC_TR2_LT2_Pos) /*!< 0x000000FF */
+#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */
+
+#define ADC_TR2_HT2_Pos (16U)
+#define ADC_TR2_HT2_Msk (0xFFUL << ADC_TR2_HT2_Pos) /*!< 0x00FF0000 */
+#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */
+
+/******************** Bit definition for ADC_TR3 register *******************/
+#define ADC_TR3_LT3_Pos (0U)
+#define ADC_TR3_LT3_Msk (0xFFUL << ADC_TR3_LT3_Pos) /*!< 0x000000FF */
+#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */
+
+#define ADC_TR3_HT3_Pos (16U)
+#define ADC_TR3_HT3_Msk (0xFFUL << ADC_TR3_HT3_Pos) /*!< 0x00FF0000 */
+#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */
+
+/******************** Bit definition for ADC_SQR1 register ******************/
+#define ADC_SQR1_L_Pos (0U)
+#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x0000000F */
+#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */
+#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00000001 */
+#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00000002 */
+#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00000004 */
+#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00000008 */
+
+#define ADC_SQR1_SQ1_Pos (6U)
+#define ADC_SQR1_SQ1_Msk (0x1FUL << ADC_SQR1_SQ1_Pos) /*!< 0x000007C0 */
+#define ADC_SQR1_SQ1 ADC_SQR1_SQ1_Msk /*!< ADC group regular sequencer rank 1 */
+#define ADC_SQR1_SQ1_0 (0x01UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000040 */
+#define ADC_SQR1_SQ1_1 (0x02UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000080 */
+#define ADC_SQR1_SQ1_2 (0x04UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000100 */
+#define ADC_SQR1_SQ1_3 (0x08UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000200 */
+#define ADC_SQR1_SQ1_4 (0x10UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR1_SQ2_Pos (12U)
+#define ADC_SQR1_SQ2_Msk (0x1FUL << ADC_SQR1_SQ2_Pos) /*!< 0x0001F000 */
+#define ADC_SQR1_SQ2 ADC_SQR1_SQ2_Msk /*!< ADC group regular sequencer rank 2 */
+#define ADC_SQR1_SQ2_0 (0x01UL << ADC_SQR1_SQ2_Pos) /*!< 0x00001000 */
+#define ADC_SQR1_SQ2_1 (0x02UL << ADC_SQR1_SQ2_Pos) /*!< 0x00002000 */
+#define ADC_SQR1_SQ2_2 (0x04UL << ADC_SQR1_SQ2_Pos) /*!< 0x00004000 */
+#define ADC_SQR1_SQ2_3 (0x08UL << ADC_SQR1_SQ2_Pos) /*!< 0x00008000 */
+#define ADC_SQR1_SQ2_4 (0x10UL << ADC_SQR1_SQ2_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR1_SQ3_Pos (18U)
+#define ADC_SQR1_SQ3_Msk (0x1FUL << ADC_SQR1_SQ3_Pos) /*!< 0x007C0000 */
+#define ADC_SQR1_SQ3 ADC_SQR1_SQ3_Msk /*!< ADC group regular sequencer rank 3 */
+#define ADC_SQR1_SQ3_0 (0x01UL << ADC_SQR1_SQ3_Pos) /*!< 0x00040000 */
+#define ADC_SQR1_SQ3_1 (0x02UL << ADC_SQR1_SQ3_Pos) /*!< 0x00080000 */
+#define ADC_SQR1_SQ3_2 (0x04UL << ADC_SQR1_SQ3_Pos) /*!< 0x00100000 */
+#define ADC_SQR1_SQ3_3 (0x08UL << ADC_SQR1_SQ3_Pos) /*!< 0x00200000 */
+#define ADC_SQR1_SQ3_4 (0x10UL<< ADC_SQR1_SQ3_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR1_SQ4_Pos (24U)
+#define ADC_SQR1_SQ4_Msk (0x1FUL << ADC_SQR1_SQ4_Pos) /*!< 0x1F000000 */
+#define ADC_SQR1_SQ4 ADC_SQR1_SQ4_Msk /*!< ADC group regular sequencer rank 4 */
+#define ADC_SQR1_SQ4_0 (0x01UL << ADC_SQR1_SQ4_Pos) /*!< 0x01000000 */
+#define ADC_SQR1_SQ4_1 (0x02UL << ADC_SQR1_SQ4_Pos) /*!< 0x02000000 */
+#define ADC_SQR1_SQ4_2 (0x04UL << ADC_SQR1_SQ4_Pos) /*!< 0x04000000 */
+#define ADC_SQR1_SQ4_3 (0x08UL << ADC_SQR1_SQ4_Pos) /*!< 0x08000000 */
+#define ADC_SQR1_SQ4_4 (0x10UL << ADC_SQR1_SQ4_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR2 register ******************/
+#define ADC_SQR2_SQ5_Pos (0U)
+#define ADC_SQR2_SQ5_Msk (0x1FUL << ADC_SQR2_SQ5_Pos) /*!< 0x0000001F */
+#define ADC_SQR2_SQ5 ADC_SQR2_SQ5_Msk /*!< ADC group regular sequencer rank 5 */
+#define ADC_SQR2_SQ5_0 (0x01UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000001 */
+#define ADC_SQR2_SQ5_1 (0x02UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000002 */
+#define ADC_SQR2_SQ5_2 (0x04UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000004 */
+#define ADC_SQR2_SQ5_3 (0x08UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000008 */
+#define ADC_SQR2_SQ5_4 (0x10UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR2_SQ6_Pos (6U)
+#define ADC_SQR2_SQ6_Msk (0x1FUL << ADC_SQR2_SQ6_Pos) /*!< 0x000007C0 */
+#define ADC_SQR2_SQ6 ADC_SQR2_SQ6_Msk /*!< ADC group regular sequencer rank 6 */
+#define ADC_SQR2_SQ6_0 (0x01UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000040 */
+#define ADC_SQR2_SQ6_1 (0x02UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000080 */
+#define ADC_SQR2_SQ6_2 (0x04UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000100 */
+#define ADC_SQR2_SQ6_3 (0x08UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000200 */
+#define ADC_SQR2_SQ6_4 (0x10UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR2_SQ7_Pos (12U)
+#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0001F000 */
+#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */
+#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00001000 */
+#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00002000 */
+#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00004000 */
+#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00008000 */
+#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR2_SQ8_Pos (18U)
+#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x007C0000 */
+#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */
+#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00040000 */
+#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00080000 */
+#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00100000 */
+#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00200000 */
+#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR2_SQ9_Pos (24U)
+#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x1F000000 */
+#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */
+#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x01000000 */
+#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x02000000 */
+#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x04000000 */
+#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x08000000 */
+#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR3 register ******************/
+#define ADC_SQR3_SQ10_Pos (0U)
+#define ADC_SQR3_SQ10_Msk (0x1FUL << ADC_SQR3_SQ10_Pos) /*!< 0x0000001F */
+#define ADC_SQR3_SQ10 ADC_SQR3_SQ10_Msk /*!< ADC group regular sequencer rank 10 */
+#define ADC_SQR3_SQ10_0 (0x01UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000001 */
+#define ADC_SQR3_SQ10_1 (0x02UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000002 */
+#define ADC_SQR3_SQ10_2 (0x04UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000004 */
+#define ADC_SQR3_SQ10_3 (0x08UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000008 */
+#define ADC_SQR3_SQ10_4 (0x10UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR3_SQ11_Pos (6U)
+#define ADC_SQR3_SQ11_Msk (0x1FUL << ADC_SQR3_SQ11_Pos) /*!< 0x000007C0 */
+#define ADC_SQR3_SQ11 ADC_SQR3_SQ11_Msk /*!< ADC group regular sequencer rank 11 */
+#define ADC_SQR3_SQ11_0 (0x01UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000040 */
+#define ADC_SQR3_SQ11_1 (0x02UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000080 */
+#define ADC_SQR3_SQ11_2 (0x04UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000100 */
+#define ADC_SQR3_SQ11_3 (0x08UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000200 */
+#define ADC_SQR3_SQ11_4 (0x10UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR3_SQ12_Pos (12U)
+#define ADC_SQR3_SQ12_Msk (0x1FUL << ADC_SQR3_SQ12_Pos) /*!< 0x0001F000 */
+#define ADC_SQR3_SQ12 ADC_SQR3_SQ12_Msk /*!< ADC group regular sequencer rank 12 */
+#define ADC_SQR3_SQ12_0 (0x01UL << ADC_SQR3_SQ12_Pos) /*!< 0x00001000 */
+#define ADC_SQR3_SQ12_1 (0x02UL << ADC_SQR3_SQ12_Pos) /*!< 0x00002000 */
+#define ADC_SQR3_SQ12_2 (0x04UL << ADC_SQR3_SQ12_Pos) /*!< 0x00004000 */
+#define ADC_SQR3_SQ12_3 (0x08UL << ADC_SQR3_SQ12_Pos) /*!< 0x00008000 */
+#define ADC_SQR3_SQ12_4 (0x10UL << ADC_SQR3_SQ12_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR3_SQ13_Pos (18U)
+#define ADC_SQR3_SQ13_Msk (0x1FUL << ADC_SQR3_SQ13_Pos) /*!< 0x007C0000 */
+#define ADC_SQR3_SQ13 ADC_SQR3_SQ13_Msk /*!< ADC group regular sequencer rank 13 */
+#define ADC_SQR3_SQ13_0 (0x01UL << ADC_SQR3_SQ13_Pos) /*!< 0x00040000 */
+#define ADC_SQR3_SQ13_1 (0x02UL << ADC_SQR3_SQ13_Pos) /*!< 0x00080000 */
+#define ADC_SQR3_SQ13_2 (0x04UL << ADC_SQR3_SQ13_Pos) /*!< 0x00100000 */
+#define ADC_SQR3_SQ13_3 (0x08UL << ADC_SQR3_SQ13_Pos) /*!< 0x00200000 */
+#define ADC_SQR3_SQ13_4 (0x10UL << ADC_SQR3_SQ13_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR3_SQ14_Pos (24U)
+#define ADC_SQR3_SQ14_Msk (0x1FUL << ADC_SQR3_SQ14_Pos) /*!< 0x1F000000 */
+#define ADC_SQR3_SQ14 ADC_SQR3_SQ14_Msk /*!< ADC group regular sequencer rank 14 */
+#define ADC_SQR3_SQ14_0 (0x01UL << ADC_SQR3_SQ14_Pos) /*!< 0x01000000 */
+#define ADC_SQR3_SQ14_1 (0x02UL << ADC_SQR3_SQ14_Pos) /*!< 0x02000000 */
+#define ADC_SQR3_SQ14_2 (0x04UL << ADC_SQR3_SQ14_Pos) /*!< 0x04000000 */
+#define ADC_SQR3_SQ14_3 (0x08UL << ADC_SQR3_SQ14_Pos) /*!< 0x08000000 */
+#define ADC_SQR3_SQ14_4 (0x10UL << ADC_SQR3_SQ14_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR4 register ******************/
+#define ADC_SQR4_SQ15_Pos (0U)
+#define ADC_SQR4_SQ15_Msk (0x1FUL << ADC_SQR4_SQ15_Pos) /*!< 0x0000001F */
+#define ADC_SQR4_SQ15 ADC_SQR4_SQ15_Msk /*!< ADC group regular sequencer rank 15 */
+#define ADC_SQR4_SQ15_0 (0x01UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000001 */
+#define ADC_SQR4_SQ15_1 (0x02UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000002 */
+#define ADC_SQR4_SQ15_2 (0x04UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000004 */
+#define ADC_SQR4_SQ15_3 (0x08UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000008 */
+#define ADC_SQR4_SQ15_4 (0x10UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR4_SQ16_Pos (6U)
+#define ADC_SQR4_SQ16_Msk (0x1FUL << ADC_SQR4_SQ16_Pos) /*!< 0x000007C0 */
+#define ADC_SQR4_SQ16 ADC_SQR4_SQ16_Msk /*!< ADC group regular sequencer rank 16 */
+#define ADC_SQR4_SQ16_0 (0x01UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000040 */
+#define ADC_SQR4_SQ16_1 (0x02UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000080 */
+#define ADC_SQR4_SQ16_2 (0x04UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000100 */
+#define ADC_SQR4_SQ16_3 (0x08UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000200 */
+#define ADC_SQR4_SQ16_4 (0x10UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000400 */
+
+/******************** Bit definition for ADC_DR register ********************/
+#define ADC_DR_RDATA_Pos (0U)
+#define ADC_DR_RDATA_Msk (0xFFFFUL << ADC_DR_RDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_DR_RDATA ADC_DR_RDATA_Msk /*!< ADC group regular conversion data */
+
+/******************** Bit definition for ADC_JSQR register ******************/
+#define ADC_JSQR_JL_Pos (0U)
+#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00000003 */
+#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */
+#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00000001 */
+#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00000002 */
+
+#define ADC_JSQR_JEXTSEL_Pos (2U)
+#define ADC_JSQR_JEXTSEL_Msk (0x1FUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000007C */
+#define ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_Msk /*!< ADC group injected external trigger source */
+#define ADC_JSQR_JEXTSEL_0 (0x1UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000004 */
+#define ADC_JSQR_JEXTSEL_1 (0x2UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000008 */
+#define ADC_JSQR_JEXTSEL_2 (0x4UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000010 */
+#define ADC_JSQR_JEXTSEL_3 (0x8UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000020 */
+#define ADC_JSQR_JEXTSEL_4 (0x10UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000040 */
+
+#define ADC_JSQR_JEXTEN_Pos (7U)
+#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000180 */
+#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */
+#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */
+#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000100 */
+
+#define ADC_JSQR_JSQ1_Pos (9U)
+#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00003E00 */
+#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */
+#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */
+#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */
+#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */
+#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */
+#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00002000 */
+
+#define ADC_JSQR_JSQ2_Pos (15U)
+#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x0007C000 */
+#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */
+#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00004000 */
+#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00008000 */
+#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00010000 */
+#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00020000 */
+#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00040000 */
+
+#define ADC_JSQR_JSQ3_Pos (21U)
+#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x03E00000 */
+#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */
+#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */
+#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */
+#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */
+#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */
+#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x02000000 */
+
+#define ADC_JSQR_JSQ4_Pos (27U)
+#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0xF8000000 */
+#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */
+#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */
+#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */
+#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */
+#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */
+#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x80000000 */
+
+/******************** Bit definition for ADC_OFR1 register ******************/
+#define ADC_OFR1_OFFSET1_Pos (0U)
+#define ADC_OFR1_OFFSET1_Msk (0xFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000FFF */
+#define ADC_OFR1_OFFSET1 ADC_OFR1_OFFSET1_Msk /*!< ADC offset number 1 offset level */
+
+#define ADC_OFR1_OFFSETPOS_Pos (24U)
+#define ADC_OFR1_OFFSETPOS_Msk (0x1UL << ADC_OFR1_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR1_OFFSETPOS ADC_OFR1_OFFSETPOS_Msk /*!< ADC offset number 1 positive */
+#define ADC_OFR1_SATEN_Pos (25U)
+#define ADC_OFR1_SATEN_Msk (0x1UL << ADC_OFR1_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR1_SATEN ADC_OFR1_SATEN_Msk /*!< ADC offset number 1 saturation enable */
+
+#define ADC_OFR1_OFFSET1_CH_Pos (26U)
+#define ADC_OFR1_OFFSET1_CH_Msk (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR1_OFFSET1_CH ADC_OFR1_OFFSET1_CH_Msk /*!< ADC offset number 1 channel selection */
+#define ADC_OFR1_OFFSET1_CH_0 (0x01UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR1_OFFSET1_CH_1 (0x02UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR1_OFFSET1_CH_2 (0x04UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR1_OFFSET1_CH_3 (0x08UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR1_OFFSET1_CH_4 (0x10UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR1_OFFSET1_EN_Pos (31U)
+#define ADC_OFR1_OFFSET1_EN_Msk (0x1UL << ADC_OFR1_OFFSET1_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR1_OFFSET1_EN ADC_OFR1_OFFSET1_EN_Msk /*!< ADC offset number 1 enable */
+
+/******************** Bit definition for ADC_OFR2 register ******************/
+#define ADC_OFR2_OFFSET2_Pos (0U)
+#define ADC_OFR2_OFFSET2_Msk (0xFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000FFF */
+#define ADC_OFR2_OFFSET2 ADC_OFR2_OFFSET2_Msk /*!< ADC offset number 2 offset level */
+
+#define ADC_OFR2_OFFSETPOS_Pos (24U)
+#define ADC_OFR2_OFFSETPOS_Msk (0x1UL << ADC_OFR2_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR2_OFFSETPOS ADC_OFR2_OFFSETPOS_Msk /*!< ADC offset number 2 positive */
+#define ADC_OFR2_SATEN_Pos (25U)
+#define ADC_OFR2_SATEN_Msk (0x1UL << ADC_OFR2_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR2_SATEN ADC_OFR2_SATEN_Msk /*!< ADC offset number 2 saturation enable */
+
+#define ADC_OFR2_OFFSET2_CH_Pos (26U)
+#define ADC_OFR2_OFFSET2_CH_Msk (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR2_OFFSET2_CH ADC_OFR2_OFFSET2_CH_Msk /*!< ADC offset number 2 channel selection */
+#define ADC_OFR2_OFFSET2_CH_0 (0x01UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR2_OFFSET2_CH_1 (0x02UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR2_OFFSET2_CH_2 (0x04UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR2_OFFSET2_CH_3 (0x08UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR2_OFFSET2_CH_4 (0x10UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR2_OFFSET2_EN_Pos (31U)
+#define ADC_OFR2_OFFSET2_EN_Msk (0x1UL << ADC_OFR2_OFFSET2_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR2_OFFSET2_EN ADC_OFR2_OFFSET2_EN_Msk /*!< ADC offset number 2 enable */
+
+/******************** Bit definition for ADC_OFR3 register ******************/
+#define ADC_OFR3_OFFSET3_Pos (0U)
+#define ADC_OFR3_OFFSET3_Msk (0xFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000FFF */
+#define ADC_OFR3_OFFSET3 ADC_OFR3_OFFSET3_Msk /*!< ADC offset number 3 offset level */
+
+#define ADC_OFR3_OFFSETPOS_Pos (24U)
+#define ADC_OFR3_OFFSETPOS_Msk (0x1UL << ADC_OFR3_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR3_OFFSETPOS ADC_OFR3_OFFSETPOS_Msk /*!< ADC offset number 3 positive */
+#define ADC_OFR3_SATEN_Pos (25U)
+#define ADC_OFR3_SATEN_Msk (0x1UL << ADC_OFR3_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR3_SATEN ADC_OFR3_SATEN_Msk /*!< ADC offset number 3 saturation enable */
+
+#define ADC_OFR3_OFFSET3_CH_Pos (26U)
+#define ADC_OFR3_OFFSET3_CH_Msk (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR3_OFFSET3_CH ADC_OFR3_OFFSET3_CH_Msk /*!< ADC offset number 3 channel selection */
+#define ADC_OFR3_OFFSET3_CH_0 (0x01UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR3_OFFSET3_CH_1 (0x02UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR3_OFFSET3_CH_2 (0x04UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR3_OFFSET3_CH_3 (0x08UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR3_OFFSET3_CH_4 (0x10UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR3_OFFSET3_EN_Pos (31U)
+#define ADC_OFR3_OFFSET3_EN_Msk (0x1UL << ADC_OFR3_OFFSET3_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR3_OFFSET3_EN ADC_OFR3_OFFSET3_EN_Msk /*!< ADC offset number 3 enable */
+
+/******************** Bit definition for ADC_OFR4 register ******************/
+#define ADC_OFR4_OFFSET4_Pos (0U)
+#define ADC_OFR4_OFFSET4_Msk (0xFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000FFF */
+#define ADC_OFR4_OFFSET4 ADC_OFR4_OFFSET4_Msk /*!< ADC offset number 4 offset level */
+
+#define ADC_OFR4_OFFSETPOS_Pos (24U)
+#define ADC_OFR4_OFFSETPOS_Msk (0x1UL << ADC_OFR4_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR4_OFFSETPOS ADC_OFR4_OFFSETPOS_Msk /*!< ADC offset number 4 positive */
+#define ADC_OFR4_SATEN_Pos (25U)
+#define ADC_OFR4_SATEN_Msk (0x1UL << ADC_OFR4_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR4_SATEN ADC_OFR4_SATEN_Msk /*!< ADC offset number 4 saturation enable */
+
+#define ADC_OFR4_OFFSET4_CH_Pos (26U)
+#define ADC_OFR4_OFFSET4_CH_Msk (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR4_OFFSET4_CH ADC_OFR4_OFFSET4_CH_Msk /*!< ADC offset number 4 channel selection */
+#define ADC_OFR4_OFFSET4_CH_0 (0x01UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR4_OFFSET4_CH_1 (0x02UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR4_OFFSET4_CH_2 (0x04UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR4_OFFSET4_CH_3 (0x08UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR4_OFFSET4_CH_4 (0x10UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR4_OFFSET4_EN_Pos (31U)
+#define ADC_OFR4_OFFSET4_EN_Msk (0x1UL << ADC_OFR4_OFFSET4_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR4_OFFSET4_EN ADC_OFR4_OFFSET4_EN_Msk /*!< ADC offset number 4 enable */
+
+/******************** Bit definition for ADC_JDR1 register ******************/
+#define ADC_JDR1_JDATA_Pos (0U)
+#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */
+
+/******************** Bit definition for ADC_JDR2 register ******************/
+#define ADC_JDR2_JDATA_Pos (0U)
+#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */
+
+/******************** Bit definition for ADC_JDR3 register ******************/
+#define ADC_JDR3_JDATA_Pos (0U)
+#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */
+
+/******************** Bit definition for ADC_JDR4 register ******************/
+#define ADC_JDR4_JDATA_Pos (0U)
+#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */
+
+/******************** Bit definition for ADC_AWD2CR register ****************/
+#define ADC_AWD2CR_AWD2CH_Pos (0U)
+#define ADC_AWD2CR_AWD2CH_Msk (0xFFFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */
+#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */
+#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */
+#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */
+#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */
+#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */
+#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */
+#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */
+#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */
+#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */
+#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */
+#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */
+#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */
+#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */
+#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */
+#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */
+#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */
+#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */
+#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */
+#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */
+#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */
+#define ADC_AWD2CR_AWD2CH_19 (0x80000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_AWD3CR register ****************/
+#define ADC_AWD3CR_AWD3CH_Pos (0U)
+#define ADC_AWD3CR_AWD3CH_Msk (0xFFFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */
+#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */
+#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */
+#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */
+#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */
+#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */
+#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */
+#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */
+#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */
+#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */
+#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */
+#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */
+#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */
+#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */
+#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */
+#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */
+#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */
+#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */
+#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */
+#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */
+#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */
+#define ADC_AWD3CR_AWD2CH_19 (0x80000UL << ADC_AWD3CR_AWD2CH_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_DIFSEL register ****************/
+#define ADC_DIFSEL_DIFSEL_Pos (0U)
+#define ADC_DIFSEL_DIFSEL_Msk (0xFFFFFUL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x0007FFFF */
+#define ADC_DIFSEL_DIFSEL ADC_DIFSEL_DIFSEL_Msk /*!< ADC channel differential or single-ended mode */
+#define ADC_DIFSEL_DIFSEL_0 (0x00001UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000001 */
+#define ADC_DIFSEL_DIFSEL_1 (0x00002UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000002 */
+#define ADC_DIFSEL_DIFSEL_2 (0x00004UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000004 */
+#define ADC_DIFSEL_DIFSEL_3 (0x00008UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000008 */
+#define ADC_DIFSEL_DIFSEL_4 (0x00010UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000010 */
+#define ADC_DIFSEL_DIFSEL_5 (0x00020UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000020 */
+#define ADC_DIFSEL_DIFSEL_6 (0x00040UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000040 */
+#define ADC_DIFSEL_DIFSEL_7 (0x00080UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000080 */
+#define ADC_DIFSEL_DIFSEL_8 (0x00100UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000100 */
+#define ADC_DIFSEL_DIFSEL_9 (0x00200UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000200 */
+#define ADC_DIFSEL_DIFSEL_10 (0x00400UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000400 */
+#define ADC_DIFSEL_DIFSEL_11 (0x00800UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000800 */
+#define ADC_DIFSEL_DIFSEL_12 (0x01000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00001000 */
+#define ADC_DIFSEL_DIFSEL_13 (0x02000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00002000 */
+#define ADC_DIFSEL_DIFSEL_14 (0x04000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00004000 */
+#define ADC_DIFSEL_DIFSEL_15 (0x08000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00008000 */
+#define ADC_DIFSEL_DIFSEL_16 (0x10000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00010000 */
+#define ADC_DIFSEL_DIFSEL_17 (0x20000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00020000 */
+#define ADC_DIFSEL_DIFSEL_18 (0x40000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00040000 */
+#define ADC_DIFSEL_DIFSEL_19 (0x80000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_CALFACT register ***************/
+#define ADC_CALFACT_CALFACT_S_Pos (0U)
+#define ADC_CALFACT_CALFACT_S_Msk (0x7FUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x0000007F */
+#define ADC_CALFACT_CALFACT_S ADC_CALFACT_CALFACT_S_Msk /*!< ADC calibration factor in single-ended mode */
+#define ADC_CALFACT_CALFACT_S_0 (0x01UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */
+#define ADC_CALFACT_CALFACT_S_1 (0x02UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */
+#define ADC_CALFACT_CALFACT_S_2 (0x04UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */
+#define ADC_CALFACT_CALFACT_S_3 (0x08UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */
+#define ADC_CALFACT_CALFACT_S_4 (0x10UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */
+#define ADC_CALFACT_CALFACT_S_5 (0x20UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */
+#define ADC_CALFACT_CALFACT_S_6 (0x40UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000030 */
+
+#define ADC_CALFACT_CALFACT_D_Pos (16U)
+#define ADC_CALFACT_CALFACT_D_Msk (0x7FUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x007F0000 */
+#define ADC_CALFACT_CALFACT_D ADC_CALFACT_CALFACT_D_Msk /*!< ADC calibration factor in differential mode */
+#define ADC_CALFACT_CALFACT_D_0 (0x01UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */
+#define ADC_CALFACT_CALFACT_D_1 (0x02UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */
+#define ADC_CALFACT_CALFACT_D_2 (0x04UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */
+#define ADC_CALFACT_CALFACT_D_3 (0x08UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */
+#define ADC_CALFACT_CALFACT_D_4 (0x10UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */
+#define ADC_CALFACT_CALFACT_D_5 (0x20UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */
+#define ADC_CALFACT_CALFACT_D_6 (0x40UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00300000 */
+
+/******************** Bit definition for ADC_OR register *****************/
+#define ADC_OR_OP0_Pos (0U)
+#define ADC_OR_OP0_Msk (0x01UL << ADC_OR_OP0_Pos) /*!< 0x00000001 */
+#define ADC_OR_OP0 ADC_OR_OP0_Msk /*!< ADC Option bit 0 */
+#define ADC_OR_OP1_Pos (1U)
+#define ADC_OR_OP1_Msk (0x01UL << ADC_OR_OP1_Pos) /*!< 0x00000001 */
+#define ADC_OR_OP1 ADC_OR_OP1_Msk /*!< ADC Option bit 1 */
+
+/************************* ADC Common registers *****************************/
+/******************** Bit definition for ADC_CSR register *******************/
+#define ADC_CSR_ADRDY_MST_Pos (0U)
+#define ADC_CSR_ADRDY_MST_Msk (0x1UL << ADC_CSR_ADRDY_MST_Pos) /*!< 0x00000001 */
+#define ADC_CSR_ADRDY_MST ADC_CSR_ADRDY_MST_Msk /*!< ADC multimode master ready flag */
+#define ADC_CSR_EOSMP_MST_Pos (1U)
+#define ADC_CSR_EOSMP_MST_Msk (0x1UL << ADC_CSR_EOSMP_MST_Pos) /*!< 0x00000002 */
+#define ADC_CSR_EOSMP_MST ADC_CSR_EOSMP_MST_Msk /*!< ADC multimode master group regular end of sampling flag */
+#define ADC_CSR_EOC_MST_Pos (2U)
+#define ADC_CSR_EOC_MST_Msk (0x1UL << ADC_CSR_EOC_MST_Pos) /*!< 0x00000004 */
+#define ADC_CSR_EOC_MST ADC_CSR_EOC_MST_Msk /*!< ADC multimode master group regular end of unitary conversion flag */
+#define ADC_CSR_EOS_MST_Pos (3U)
+#define ADC_CSR_EOS_MST_Msk (0x1UL << ADC_CSR_EOS_MST_Pos) /*!< 0x00000008 */
+#define ADC_CSR_EOS_MST ADC_CSR_EOS_MST_Msk /*!< ADC multimode master group regular end of sequence conversions flag */
+#define ADC_CSR_OVR_MST_Pos (4U)
+#define ADC_CSR_OVR_MST_Msk (0x1UL << ADC_CSR_OVR_MST_Pos) /*!< 0x00000010 */
+#define ADC_CSR_OVR_MST ADC_CSR_OVR_MST_Msk /*!< ADC multimode master group regular overrun flag */
+#define ADC_CSR_JEOC_MST_Pos (5U)
+#define ADC_CSR_JEOC_MST_Msk (0x1UL << ADC_CSR_JEOC_MST_Pos) /*!< 0x00000020 */
+#define ADC_CSR_JEOC_MST ADC_CSR_JEOC_MST_Msk /*!< ADC multimode master group injected end of unitary conversion flag */
+#define ADC_CSR_JEOS_MST_Pos (6U)
+#define ADC_CSR_JEOS_MST_Msk (0x1UL << ADC_CSR_JEOS_MST_Pos) /*!< 0x00000040 */
+#define ADC_CSR_JEOS_MST ADC_CSR_JEOS_MST_Msk /*!< ADC multimode master group injected end of sequence conversions flag */
+#define ADC_CSR_AWD1_MST_Pos (7U)
+#define ADC_CSR_AWD1_MST_Msk (0x1UL << ADC_CSR_AWD1_MST_Pos) /*!< 0x00000080 */
+#define ADC_CSR_AWD1_MST ADC_CSR_AWD1_MST_Msk /*!< ADC multimode master analog watchdog 1 flag */
+#define ADC_CSR_AWD2_MST_Pos (8U)
+#define ADC_CSR_AWD2_MST_Msk (0x1UL << ADC_CSR_AWD2_MST_Pos) /*!< 0x00000100 */
+#define ADC_CSR_AWD2_MST ADC_CSR_AWD2_MST_Msk /*!< ADC multimode master analog watchdog 2 flag */
+#define ADC_CSR_AWD3_MST_Pos (9U)
+#define ADC_CSR_AWD3_MST_Msk (0x1UL << ADC_CSR_AWD3_MST_Pos) /*!< 0x00000200 */
+#define ADC_CSR_AWD3_MST ADC_CSR_AWD3_MST_Msk /*!< ADC multimode master analog watchdog 3 flag */
+#define ADC_CSR_JQOVF_MST_Pos (10U)
+#define ADC_CSR_JQOVF_MST_Msk (0x1UL << ADC_CSR_JQOVF_MST_Pos) /*!< 0x00000400 */
+#define ADC_CSR_JQOVF_MST ADC_CSR_JQOVF_MST_Msk /*!< ADC multimode master group injected contexts queue overflow flag */
+
+#define ADC_CSR_ADRDY_SLV_Pos (16U)
+#define ADC_CSR_ADRDY_SLV_Msk (0x1UL << ADC_CSR_ADRDY_SLV_Pos) /*!< 0x00010000 */
+#define ADC_CSR_ADRDY_SLV ADC_CSR_ADRDY_SLV_Msk /*!< ADC multimode slave ready flag */
+#define ADC_CSR_EOSMP_SLV_Pos (17U)
+#define ADC_CSR_EOSMP_SLV_Msk (0x1UL << ADC_CSR_EOSMP_SLV_Pos) /*!< 0x00020000 */
+#define ADC_CSR_EOSMP_SLV ADC_CSR_EOSMP_SLV_Msk /*!< ADC multimode slave group regular end of sampling flag */
+#define ADC_CSR_EOC_SLV_Pos (18U)
+#define ADC_CSR_EOC_SLV_Msk (0x1UL << ADC_CSR_EOC_SLV_Pos) /*!< 0x00040000 */
+#define ADC_CSR_EOC_SLV ADC_CSR_EOC_SLV_Msk /*!< ADC multimode slave group regular end of unitary conversion flag */
+#define ADC_CSR_EOS_SLV_Pos (19U)
+#define ADC_CSR_EOS_SLV_Msk (0x1UL << ADC_CSR_EOS_SLV_Pos) /*!< 0x00080000 */
+#define ADC_CSR_EOS_SLV ADC_CSR_EOS_SLV_Msk /*!< ADC multimode slave group regular end of sequence conversions flag */
+#define ADC_CSR_OVR_SLV_Pos (20U)
+#define ADC_CSR_OVR_SLV_Msk (0x1UL << ADC_CSR_OVR_SLV_Pos) /*!< 0x00100000 */
+#define ADC_CSR_OVR_SLV ADC_CSR_OVR_SLV_Msk /*!< ADC multimode slave group regular overrun flag */
+#define ADC_CSR_JEOC_SLV_Pos (21U)
+#define ADC_CSR_JEOC_SLV_Msk (0x1UL << ADC_CSR_JEOC_SLV_Pos) /*!< 0x00200000 */
+#define ADC_CSR_JEOC_SLV ADC_CSR_JEOC_SLV_Msk /*!< ADC multimode slave group injected end of unitary conversion flag */
+#define ADC_CSR_JEOS_SLV_Pos (22U)
+#define ADC_CSR_JEOS_SLV_Msk (0x1UL << ADC_CSR_JEOS_SLV_Pos) /*!< 0x00400000 */
+#define ADC_CSR_JEOS_SLV ADC_CSR_JEOS_SLV_Msk /*!< ADC multimode slave group injected end of sequence conversions flag */
+#define ADC_CSR_AWD1_SLV_Pos (23U)
+#define ADC_CSR_AWD1_SLV_Msk (0x1UL << ADC_CSR_AWD1_SLV_Pos) /*!< 0x00800000 */
+#define ADC_CSR_AWD1_SLV ADC_CSR_AWD1_SLV_Msk /*!< ADC multimode slave analog watchdog 1 flag */
+#define ADC_CSR_AWD2_SLV_Pos (24U)
+#define ADC_CSR_AWD2_SLV_Msk (0x1UL << ADC_CSR_AWD2_SLV_Pos) /*!< 0x01000000 */
+#define ADC_CSR_AWD2_SLV ADC_CSR_AWD2_SLV_Msk /*!< ADC multimode slave analog watchdog 2 flag */
+#define ADC_CSR_AWD3_SLV_Pos (25U)
+#define ADC_CSR_AWD3_SLV_Msk (0x1UL << ADC_CSR_AWD3_SLV_Pos) /*!< 0x02000000 */
+#define ADC_CSR_AWD3_SLV ADC_CSR_AWD3_SLV_Msk /*!< ADC multimode slave analog watchdog 3 flag */
+#define ADC_CSR_JQOVF_SLV_Pos (26U)
+#define ADC_CSR_JQOVF_SLV_Msk (0x1UL << ADC_CSR_JQOVF_SLV_Pos) /*!< 0x04000000 */
+#define ADC_CSR_JQOVF_SLV ADC_CSR_JQOVF_SLV_Msk /*!< ADC multimode slave group injected contexts queue overflow flag */
+
+/******************** Bit definition for ADC_CCR register *******************/
+#define ADC_CCR_DUAL_Pos (0U)
+#define ADC_CCR_DUAL_Msk (0x1FUL << ADC_CCR_DUAL_Pos) /*!< 0x0000001F */
+#define ADC_CCR_DUAL ADC_CCR_DUAL_Msk /*!< ADC multimode mode selection */
+#define ADC_CCR_DUAL_0 (0x01UL << ADC_CCR_DUAL_Pos) /*!< 0x00000001 */
+#define ADC_CCR_DUAL_1 (0x02UL << ADC_CCR_DUAL_Pos) /*!< 0x00000002 */
+#define ADC_CCR_DUAL_2 (0x04UL << ADC_CCR_DUAL_Pos) /*!< 0x00000004 */
+#define ADC_CCR_DUAL_3 (0x08UL << ADC_CCR_DUAL_Pos) /*!< 0x00000008 */
+#define ADC_CCR_DUAL_4 (0x10UL << ADC_CCR_DUAL_Pos) /*!< 0x00000010 */
+
+#define ADC_CCR_DELAY_Pos (8U)
+#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */
+#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!< ADC multimode delay between 2 sampling phases */
+#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */
+#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */
+#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */
+#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */
+
+#define ADC_CCR_DMACFG_Pos (13U)
+#define ADC_CCR_DMACFG_Msk (0x1UL << ADC_CCR_DMACFG_Pos) /*!< 0x00002000 */
+#define ADC_CCR_DMACFG ADC_CCR_DMACFG_Msk /*!< ADC multimode DMA transfer configuration */
+
+#define ADC_CCR_MDMA_Pos (14U)
+#define ADC_CCR_MDMA_Msk (0x3UL << ADC_CCR_MDMA_Pos) /*!< 0x0000C000 */
+#define ADC_CCR_MDMA ADC_CCR_MDMA_Msk /*!< ADC multimode DMA transfer enable */
+#define ADC_CCR_MDMA_0 (0x1UL << ADC_CCR_MDMA_Pos) /*!< 0x00004000 */
+#define ADC_CCR_MDMA_1 (0x2UL << ADC_CCR_MDMA_Pos) /*!< 0x00008000 */
+
+#define ADC_CCR_CKMODE_Pos (16U)
+#define ADC_CCR_CKMODE_Msk (0x3UL << ADC_CCR_CKMODE_Pos) /*!< 0x00030000 */
+#define ADC_CCR_CKMODE ADC_CCR_CKMODE_Msk /*!< ADC common clock source and prescaler (prescaler only for clock source synchronous) */
+#define ADC_CCR_CKMODE_0 (0x1UL << ADC_CCR_CKMODE_Pos) /*!< 0x00010000 */
+#define ADC_CCR_CKMODE_1 (0x2UL << ADC_CCR_CKMODE_Pos) /*!< 0x00020000 */
+
+#define ADC_CCR_PRESC_Pos (18U)
+#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */
+#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */
+#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */
+#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */
+#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */
+#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */
+
+#define ADC_CCR_VREFEN_Pos (22U)
+#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */
+#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */
+#define ADC_CCR_TSEN_Pos (23U)
+#define ADC_CCR_TSEN_Msk (0x1UL << ADC_CCR_TSEN_Pos) /*!< 0x00800000 */
+#define ADC_CCR_TSEN ADC_CCR_TSEN_Msk /*!< ADC internal path to temperature sensor enable */
+#define ADC_CCR_VBATEN_Pos (24U)
+#define ADC_CCR_VBATEN_Msk (0x1UL << ADC_CCR_VBATEN_Pos) /*!< 0x01000000 */
+#define ADC_CCR_VBATEN ADC_CCR_VBATEN_Msk /*!< ADC internal path to battery voltage enable */
+
+/******************** Bit definition for ADC_CDR register *******************/
+#define ADC_CDR_RDATA_MST_Pos (0U)
+#define ADC_CDR_RDATA_MST_Msk (0xFFFFUL << ADC_CDR_RDATA_MST_Pos) /*!< 0x0000FFFF */
+#define ADC_CDR_RDATA_MST ADC_CDR_RDATA_MST_Msk /*!< ADC multimode master group regular conversion data */
+
+#define ADC_CDR_RDATA_SLV_Pos (16U)
+#define ADC_CDR_RDATA_SLV_Msk (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos) /*!< 0xFFFF0000 */
+#define ADC_CDR_RDATA_SLV ADC_CDR_RDATA_SLV_Msk /*!< ADC multimode slave group regular conversion data */
+
+
+/**********************************************************************************************************************/
+/* */
+/* Analog Comparators (COMP) */
+/* */
+/**********************************************************************************************************************/
+
+/********************************** Bit definition for COMP_SR register *****************************************/
+#define COMP_SR_C1VAL_Pos (0U)
+#define COMP_SR_C1VAL_Msk (0x1UL << COMP_SR_C1VAL_Pos) /*!< 0x00000001 */
+#define COMP_SR_C1VAL COMP_SR_C1VAL_Msk
+
+#define COMP_SR_C1IF_Pos (16U)
+#define COMP_SR_C1IF_Msk (0x1UL << COMP_SR_C1IF_Pos) /*!< 0x00010000 */
+#define COMP_SR_C1IF COMP_SR_C1IF_Msk
+
+/********************************** Bit definition for COMP_ICFR register *****************************************/
+#define COMP_ICFR_CC1IF_Pos (16U)
+#define COMP_ICFR_CC1IF_Msk (0x1UL << COMP_ICFR_CC1IF_Pos) /*!< 0x00010000 */
+#define COMP_ICFR_CC1IF COMP_ICFR_CC1IF_Msk
+
+/********************************** Bit definition for COMP_CFGR1 register **************************************/
+#define COMP_CFGR1_EN_Pos (0U)
+#define COMP_CFGR1_EN_Msk (0x1UL << COMP_CFGR1_EN_Pos) /*!< 0x00000001 */
+#define COMP_CFGR1_EN COMP_CFGR1_EN_Msk /*!< COMP1 enable bit */
+
+#define COMP_CFGR1_BRGEN_Pos (1U)
+#define COMP_CFGR1_BRGEN_Msk (0x1UL << COMP_CFGR1_BRGEN_Pos) /*!< 0x00000002 */
+#define COMP_CFGR1_BRGEN COMP_CFGR1_BRGEN_Msk /*!< COMP1 Scaler bridge enable */
+
+#define COMP_CFGR1_SCALEN_Pos (2U)
+#define COMP_CFGR1_SCALEN_Msk (0x1UL << COMP_CFGR1_SCALEN_Pos) /*!< 0x00000004 */
+#define COMP_CFGR1_SCALEN COMP_CFGR1_SCALEN_Msk /*!< COMP1 Voltage scaler enable bit */
+
+#define COMP_CFGR1_POLARITY_Pos (3U)
+#define COMP_CFGR1_POLARITY_Msk (0x1UL << COMP_CFGR1_POLARITY_Pos) /*!< 0x00000008 */
+#define COMP_CFGR1_POLARITY COMP_CFGR1_POLARITY_Msk /*!< COMP1 polarity selection bit */
+
+#define COMP_CFGR1_ITEN_Pos (6U)
+#define COMP_CFGR1_ITEN_Msk (0x1UL << COMP_CFGR1_ITEN_Pos) /*!< 0x00000040 */
+#define COMP_CFGR1_ITEN COMP_CFGR1_ITEN_Msk /*!< COMP1 interrupt enable */
+
+#define COMP_CFGR1_HYST_Pos (8U)
+#define COMP_CFGR1_HYST_Msk (0x3UL << COMP_CFGR1_HYST_Pos) /*!< 0x00000300 */
+#define COMP_CFGR1_HYST COMP_CFGR1_HYST_Msk /*!< COMP1 hysteresis selection bits */
+#define COMP_CFGR1_HYST_0 (0x1UL << COMP_CFGR1_HYST_Pos) /*!< 0x00000100 */
+#define COMP_CFGR1_HYST_1 (0x2UL << COMP_CFGR1_HYST_Pos) /*!< 0x00000200 */
+
+#define COMP_CFGR1_PWRMODE_Pos (12U)
+#define COMP_CFGR1_PWRMODE_Msk (0x3UL << COMP_CFGR1_PWRMODE_Pos) /*!< 0x00003000 */
+#define COMP_CFGR1_PWRMODE COMP_CFGR1_PWRMODE_Msk /*!< COMP1 Power Mode of the comparator */
+#define COMP_CFGR1_PWRMODE_0 (0x1UL << COMP_CFGR1_PWRMODE_Pos) /*!< 0x00001000 */
+#define COMP_CFGR1_PWRMODE_1 (0x2UL << COMP_CFGR1_PWRMODE_Pos) /*!< 0x00002000 */
+
+#define COMP_CFGR1_INMSEL_Pos (16U)
+#define COMP_CFGR1_INMSEL_Msk (0xFUL << COMP_CFGR1_INMSEL_Pos) /*!< 0x000F0000 */
+#define COMP_CFGR1_INMSEL COMP_CFGR1_INMSEL_Msk /*!< COMP1 input minus selection bit */
+#define COMP_CFGR1_INMSEL_0 (0x1UL << COMP_CFGR1_INMSEL_Pos) /*!< 0x00010000 */
+#define COMP_CFGR1_INMSEL_1 (0x2UL << COMP_CFGR1_INMSEL_Pos) /*!< 0x00020000 */
+#define COMP_CFGR1_INMSEL_2 (0x4UL << COMP_CFGR1_INMSEL_Pos) /*!< 0x00040000 */
+#define COMP_CFGR1_INMSEL_3 (0x8UL << COMP_CFGR1_INMSEL_Pos) /*!< 0x00080000 */
+
+#define COMP_CFGR1_INPSEL1_Pos (20U)
+#define COMP_CFGR1_INPSEL1_Msk (0x1UL << COMP_CFGR1_INPSEL1_Pos) /*!< 0x00100000 */
+#define COMP_CFGR1_INPSEL1 COMP_CFGR1_INPSEL1_Msk /*!< COMP1 input plus 1 selection bit */
+
+#define COMP_CFGR1_INPSEL2_Pos (22U)
+#define COMP_CFGR1_INPSEL2_Msk (0x1UL << COMP_CFGR1_INPSEL2_Pos) /*!< 0x00400000 */
+#define COMP_CFGR1_INPSEL2 COMP_CFGR1_INPSEL2_Msk /*!< COMP1 input plus 2 selection bit */
+
+#define COMP_CFGR1_BLANKING_Pos (24U)
+#define COMP_CFGR1_BLANKING_Msk (0xFUL << COMP_CFGR1_BLANKING_Pos) /*!< 0x0F000000 */
+#define COMP_CFGR1_BLANKING COMP_CFGR1_BLANKING_Msk /*!< COMP1 blanking source selection bits */
+#define COMP_CFGR1_BLANKING_0 (0x1UL << COMP_CFGR1_BLANKING_Pos) /*!< 0x01000000 */
+#define COMP_CFGR1_BLANKING_1 (0x2UL << COMP_CFGR1_BLANKING_Pos) /*!< 0x02000000 */
+#define COMP_CFGR1_BLANKING_2 (0x4UL << COMP_CFGR1_BLANKING_Pos) /*!< 0x04000000 */
+#define COMP_CFGR1_BLANKING_3 (0x8UL << COMP_CFGR1_BLANKING_Pos) /*!< 0x08000000 */
+
+#define COMP_CFGR1_LOCK_Pos (31U)
+#define COMP_CFGR1_LOCK_Msk (0x1UL << COMP_CFGR1_LOCK_Pos) /*!< 0x80000000 */
+#define COMP_CFGR1_LOCK COMP_CFGR1_LOCK_Msk /*!< COMP1 Lock Bit */
+
+/********************************* Bit definition for COMP_CFGR2 register *******************************************/
+#define COMP_CFGR2_INPSEL0_Pos (4U)
+#define COMP_CFGR2_INPSEL0_Msk (0x1UL << COMP_CFGR2_INPSEL0_Pos) /*!< 0x00000010 */
+#define COMP_CFGR2_INPSEL0 COMP_CFGR2_INPSEL0_Msk /*!< COMP1 input plus 0 selection bit */
+
+/**********************************************************************************************************************/
+/* */
+/* Operational Amplifier (OPAMP) */
+/* */
+/**********************************************************************************************************************/
+
+/********************************** Bit definition for OPAMP_CSR register *****************************************/
+#define OPAMP_CSR_OPAMPxEN_Pos (0U)
+#define OPAMP_CSR_OPAMPxEN_Msk (0x1UL << OPAMP_CSR_OPAMPxEN_Pos) /*!< 0x00000001 */
+#define OPAMP_CSR_OPAMPxEN OPAMP_CSR_OPAMPxEN_Msk /*!< OPAMP enable */
+
+#define OPAMP_CSR_FORCEVP_Pos (1U)
+#define OPAMP_CSR_FORCEVP_Msk (0x1UL << OPAMP_CSR_FORCEVP_Pos) /*!< 0x00000002 */
+#define OPAMP_CSR_FORCEVP OPAMP_CSR_FORCEVP_Msk /*!< Force internal reference on VP */
+
+#define OPAMP_CSR_VPSEL_Pos (2U)
+#define OPAMP_CSR_VPSEL_Msk (0x3UL << OPAMP_CSR_VPSEL_Pos) /*!< 0x0000000C */
+#define OPAMP_CSR_VPSEL OPAMP_CSR_VPSEL_Msk /*!< Non inverted input selection */
+#define OPAMP_CSR_VPSEL_0 (0x1UL << OPAMP_CSR_VPSEL_Pos) /*!< 0x00000004 */
+#define OPAMP_CSR_VPSEL_1 (0x2UL << OPAMP_CSR_VPSEL_Pos) /*!< 0x00000008 */
+
+#define OPAMP_CSR_VMSEL_Pos (5U)
+#define OPAMP_CSR_VMSEL_Msk (0x3UL << OPAMP_CSR_VMSEL_Pos) /*!< 0x00000060 */
+#define OPAMP_CSR_VMSEL OPAMP_CSR_VMSEL_Msk /*!< Inverting input selection */
+#define OPAMP_CSR_VMSEL_0 (0x1UL << OPAMP_CSR_VMSEL_Pos) /*!< 0x00000020 */
+#define OPAMP_CSR_VMSEL_1 (0x2UL << OPAMP_CSR_VMSEL_Pos) /*!< 0x00000040 */
+
+#define OPAMP_CSR_OPAHSM_Pos (8U)
+#define OPAMP_CSR_OPAHSM_Msk (0x1UL << OPAMP_CSR_OPAHSM_Pos) /*!< 0x00000100 */
+#define OPAMP_CSR_OPAHSM OPAMP_CSR_OPAHSM_Msk /*!< high speed mode */
+
+#define OPAMP_CSR_CALON_Pos (11U)
+#define OPAMP_CSR_CALON_Msk (0x1UL << OPAMP_CSR_CALON_Pos) /*!< 0x00000800 */
+#define OPAMP_CSR_CALON OPAMP_CSR_CALON_Msk /*!< Calibration mode enable */
+
+#define OPAMP_CSR_CALSEL_Pos (12U)
+#define OPAMP_CSR_CALSEL_Msk (0x3UL << OPAMP_CSR_CALSEL_Pos) /*!< 0x00003000 */
+#define OPAMP_CSR_CALSEL OPAMP_CSR_CALSEL_Msk /*!< Calibration selection */
+#define OPAMP_CSR_CALSEL_0 (0x1UL << OPAMP_CSR_CALSEL_Pos) /*!< 0x00001000 */
+#define OPAMP_CSR_CALSEL_1 (0x2UL << OPAMP_CSR_CALSEL_Pos) /*!< 0x00002000 */
+
+#define OPAMP_CSR_PGGAIN_Pos (14U)
+#define OPAMP_CSR_PGGAIN_Msk (0xFUL << OPAMP_CSR_PGGAIN_Pos) /*!< 0x0003C000 */
+#define OPAMP_CSR_PGGAIN OPAMP_CSR_PGGAIN_Msk /*!< Programmable amplifier gain value */
+#define OPAMP_CSR_PGGAIN_0 (0x1UL << OPAMP_CSR_PGGAIN_Pos) /*!< 0x00004000 */
+#define OPAMP_CSR_PGGAIN_1 (0x2UL << OPAMP_CSR_PGGAIN_Pos) /*!< 0x00008000 */
+#define OPAMP_CSR_PGGAIN_2 (0x4UL << OPAMP_CSR_PGGAIN_Pos) /*!< 0x00010000 */
+#define OPAMP_CSR_PGGAIN_3 (0x8UL << OPAMP_CSR_PGGAIN_Pos) /*!< 0x00020000 */
+
+#define OPAMP_CSR_USERTRIM_Pos (18U)
+#define OPAMP_CSR_USERTRIM_Msk (0x1UL << OPAMP_CSR_USERTRIM_Pos) /*!< 0x00040000 */
+#define OPAMP_CSR_USERTRIM OPAMP_CSR_USERTRIM_Msk /*!< User trimming enable */
+
+#define OPAMP_CSR_TSTREF_Pos (29U)
+#define OPAMP_CSR_TSTREF_Msk (0x1UL << OPAMP_CSR_TSTREF_Pos) /*!< 0x20000000 */
+#define OPAMP_CSR_TSTREF OPAMP_CSR_TSTREF_Msk /*!< calibration reference voltage output */
+
+#define OPAMP_CSR_CALOUT_Pos (30U)
+#define OPAMP_CSR_CALOUT_Msk (0x1UL << OPAMP_CSR_CALOUT_Pos) /*!< 0x40000000 */
+#define OPAMP_CSR_CALOUT OPAMP_CSR_CALOUT_Msk /*!< Calibration output */
+
+/********************************** Bit definition for OPAMP_OTR register ******************************************/
+#define OPAMP_OTR_TRIMOFFSETN_Pos (0U)
+#define OPAMP_OTR_TRIMOFFSETN_Msk (0x1FUL << OPAMP_OTR_TRIMOFFSETN_Pos) /*!< 0x0000001F */
+#define OPAMP_OTR_TRIMOFFSETN OPAMP_OTR_TRIMOFFSETN_Msk /*!< Trim for NMOS differential pairs */
+
+#define OPAMP_OTR_TRIMOFFSETP_Pos (8U)
+#define OPAMP_OTR_TRIMOFFSETP_Msk (0x1FUL << OPAMP_OTR_TRIMOFFSETP_Pos) /*!< 0x00001F00 */
+#define OPAMP_OTR_TRIMOFFSETP OPAMP_OTR_TRIMOFFSETP_Msk /*!< Trim for PMOS differential pairs */
+
+/********************************** Bit definition for OPAMP_HSOTR register ***************************************/
+#define OPAMP_HSOTR_TRIMHSOFFSETN_Pos (0U)
+#define OPAMP_HSOTR_TRIMHSOFFSETN_Msk (0x1FUL << OPAMP_HSOTR_TRIMHSOFFSETN_Pos) /*!< 0x0000001F */
+#define OPAMP_HSOTR_TRIMHSOFFSETN OPAMP_HSOTR_TRIMHSOFFSETN_Msk /*!< Trim for NMOS pairs */
+
+#define OPAMP_HSOTR_TRIMHSOFFSETP_Pos (8U)
+#define OPAMP_HSOTR_TRIMHSOFFSETP_Msk (0x1FUL << OPAMP_HSOTR_TRIMHSOFFSETP_Pos) /*!< 0x00001F00 */
+#define OPAMP_HSOTR_TRIMHSOFFSETP OPAMP_HSOTR_TRIMHSOFFSETP_Msk /*!< Trim for PMOS pairs */
+
+
+/******************************************************************************/
+/* */
+/* CRC calculation unit */
+/* */
+/******************************************************************************/
+/******************* Bit definition for CRC_DR register *********************/
+#define CRC_DR_DR_Pos (0U)
+#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */
+#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */
+
+/******************* Bit definition for CRC_IDR register ********************/
+#define CRC_IDR_IDR_Pos (0U)
+#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */
+#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bits data register bits */
+
+/******************** Bit definition for CRC_CR register ********************/
+#define CRC_CR_RESET_Pos (0U)
+#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */
+#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */
+#define CRC_CR_POLYSIZE_Pos (3U)
+#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */
+#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */
+#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */
+#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */
+#define CRC_CR_REV_IN_Pos (5U)
+#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */
+#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */
+#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */
+#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */
+#define CRC_CR_REV_OUT_Pos (7U)
+#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */
+#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */
+
+/******************* Bit definition for CRC_INIT register *******************/
+#define CRC_INIT_INIT_Pos (0U)
+#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */
+#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */
+
+/******************* Bit definition for CRC_POL register ********************/
+#define CRC_POL_POL_Pos (0U)
+#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */
+#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */
+
+
+/******************************************************************************/
+/* */
+/* CRS Clock Recovery System */
+/******************************************************************************/
+/******************* Bit definition for CRS_CR register *********************/
+#define CRS_CR_SYNCOKIE_Pos (0U)
+#define CRS_CR_SYNCOKIE_Msk (0x1UL << CRS_CR_SYNCOKIE_Pos) /*!< 0x00000001 */
+#define CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE_Msk /*!< SYNC event OK interrupt enable */
+#define CRS_CR_SYNCWARNIE_Pos (1U)
+#define CRS_CR_SYNCWARNIE_Msk (0x1UL << CRS_CR_SYNCWARNIE_Pos) /*!< 0x00000002 */
+#define CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE_Msk /*!< SYNC warning interrupt enable */
+#define CRS_CR_ERRIE_Pos (2U)
+#define CRS_CR_ERRIE_Msk (0x1UL << CRS_CR_ERRIE_Pos) /*!< 0x00000004 */
+#define CRS_CR_ERRIE CRS_CR_ERRIE_Msk /*!< SYNC error or trimming error interrupt enable */
+#define CRS_CR_ESYNCIE_Pos (3U)
+#define CRS_CR_ESYNCIE_Msk (0x1UL << CRS_CR_ESYNCIE_Pos) /*!< 0x00000008 */
+#define CRS_CR_ESYNCIE CRS_CR_ESYNCIE_Msk /*!< Expected SYNC interrupt enable */
+#define CRS_CR_CEN_Pos (5U)
+#define CRS_CR_CEN_Msk (0x1UL << CRS_CR_CEN_Pos) /*!< 0x00000020 */
+#define CRS_CR_CEN CRS_CR_CEN_Msk /*!< Frequency error counter enable */
+#define CRS_CR_AUTOTRIMEN_Pos (6U)
+#define CRS_CR_AUTOTRIMEN_Msk (0x1UL << CRS_CR_AUTOTRIMEN_Pos) /*!< 0x00000040 */
+#define CRS_CR_AUTOTRIMEN CRS_CR_AUTOTRIMEN_Msk /*!< Automatic trimming enable */
+#define CRS_CR_SWSYNC_Pos (7U)
+#define CRS_CR_SWSYNC_Msk (0x1UL << CRS_CR_SWSYNC_Pos) /*!< 0x00000080 */
+#define CRS_CR_SWSYNC CRS_CR_SWSYNC_Msk /*!< Generate software SYNC event */
+#define CRS_CR_TRIM_Pos (8U)
+#define CRS_CR_TRIM_Msk (0x3FUL << CRS_CR_TRIM_Pos) /*!< 0x00003F00 */
+#define CRS_CR_TRIM CRS_CR_TRIM_Msk /*!< HSI48 oscillator smooth trimming */
+
+/******************* Bit definition for CRS_CFGR register *********************/
+#define CRS_CFGR_RELOAD_Pos (0U)
+#define CRS_CFGR_RELOAD_Msk (0xFFFFUL << CRS_CFGR_RELOAD_Pos) /*!< 0x0000FFFF */
+#define CRS_CFGR_RELOAD CRS_CFGR_RELOAD_Msk /*!< Counter reload value */
+#define CRS_CFGR_FELIM_Pos (16U)
+#define CRS_CFGR_FELIM_Msk (0xFFUL << CRS_CFGR_FELIM_Pos) /*!< 0x00FF0000 */
+#define CRS_CFGR_FELIM CRS_CFGR_FELIM_Msk /*!< Frequency error limit */
+#define CRS_CFGR_SYNCDIV_Pos (24U)
+#define CRS_CFGR_SYNCDIV_Msk (0x7UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x07000000 */
+#define CRS_CFGR_SYNCDIV CRS_CFGR_SYNCDIV_Msk /*!< SYNC divider */
+#define CRS_CFGR_SYNCDIV_0 (0x1UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x01000000 */
+#define CRS_CFGR_SYNCDIV_1 (0x2UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x02000000 */
+#define CRS_CFGR_SYNCDIV_2 (0x4UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x04000000 */
+#define CRS_CFGR_SYNCSRC_Pos (28U)
+#define CRS_CFGR_SYNCSRC_Msk (0x3UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x30000000 */
+#define CRS_CFGR_SYNCSRC CRS_CFGR_SYNCSRC_Msk /*!< SYNC signal source selection */
+#define CRS_CFGR_SYNCSRC_0 (0x1UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x10000000 */
+#define CRS_CFGR_SYNCSRC_1 (0x2UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x20000000 */
+#define CRS_CFGR_SYNCPOL_Pos (31U)
+#define CRS_CFGR_SYNCPOL_Msk (0x1UL << CRS_CFGR_SYNCPOL_Pos) /*!< 0x80000000 */
+#define CRS_CFGR_SYNCPOL CRS_CFGR_SYNCPOL_Msk /*!< SYNC polarity selection */
+
+/******************* Bit definition for CRS_ISR register *********************/
+#define CRS_ISR_SYNCOKF_Pos (0U)
+#define CRS_ISR_SYNCOKF_Msk (0x1UL << CRS_ISR_SYNCOKF_Pos) /*!< 0x00000001 */
+#define CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF_Msk /*!< SYNC event OK flag */
+#define CRS_ISR_SYNCWARNF_Pos (1U)
+#define CRS_ISR_SYNCWARNF_Msk (0x1UL << CRS_ISR_SYNCWARNF_Pos) /*!< 0x00000002 */
+#define CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF_Msk /*!< SYNC warning flag */
+#define CRS_ISR_ERRF_Pos (2U)
+#define CRS_ISR_ERRF_Msk (0x1UL << CRS_ISR_ERRF_Pos) /*!< 0x00000004 */
+#define CRS_ISR_ERRF CRS_ISR_ERRF_Msk /*!< Error flag */
+#define CRS_ISR_ESYNCF_Pos (3U)
+#define CRS_ISR_ESYNCF_Msk (0x1UL << CRS_ISR_ESYNCF_Pos) /*!< 0x00000008 */
+#define CRS_ISR_ESYNCF CRS_ISR_ESYNCF_Msk /*!< Expected SYNC flag */
+#define CRS_ISR_SYNCERR_Pos (8U)
+#define CRS_ISR_SYNCERR_Msk (0x1UL << CRS_ISR_SYNCERR_Pos) /*!< 0x00000100 */
+#define CRS_ISR_SYNCERR CRS_ISR_SYNCERR_Msk /*!< SYNC error */
+#define CRS_ISR_SYNCMISS_Pos (9U)
+#define CRS_ISR_SYNCMISS_Msk (0x1UL << CRS_ISR_SYNCMISS_Pos) /*!< 0x00000200 */
+#define CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS_Msk /*!< SYNC missed */
+#define CRS_ISR_TRIMOVF_Pos (10U)
+#define CRS_ISR_TRIMOVF_Msk (0x1UL << CRS_ISR_TRIMOVF_Pos) /*!< 0x00000400 */
+#define CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF_Msk /*!< Trimming overflow or underflow */
+#define CRS_ISR_FEDIR_Pos (15U)
+#define CRS_ISR_FEDIR_Msk (0x1UL << CRS_ISR_FEDIR_Pos) /*!< 0x00008000 */
+#define CRS_ISR_FEDIR CRS_ISR_FEDIR_Msk /*!< Frequency error direction */
+#define CRS_ISR_FECAP_Pos (16U)
+#define CRS_ISR_FECAP_Msk (0xFFFFUL << CRS_ISR_FECAP_Pos) /*!< 0xFFFF0000 */
+#define CRS_ISR_FECAP CRS_ISR_FECAP_Msk /*!< Frequency error capture */
+
+/******************* Bit definition for CRS_ICR register *********************/
+#define CRS_ICR_SYNCOKC_Pos (0U)
+#define CRS_ICR_SYNCOKC_Msk (0x1UL << CRS_ICR_SYNCOKC_Pos) /*!< 0x00000001 */
+#define CRS_ICR_SYNCOKC CRS_ICR_SYNCOKC_Msk /*!< SYNC event OK clear flag */
+#define CRS_ICR_SYNCWARNC_Pos (1U)
+#define CRS_ICR_SYNCWARNC_Msk (0x1UL << CRS_ICR_SYNCWARNC_Pos) /*!< 0x00000002 */
+#define CRS_ICR_SYNCWARNC CRS_ICR_SYNCWARNC_Msk /*!< SYNC warning clear flag */
+#define CRS_ICR_ERRC_Pos (2U)
+#define CRS_ICR_ERRC_Msk (0x1UL << CRS_ICR_ERRC_Pos) /*!< 0x00000004 */
+#define CRS_ICR_ERRC CRS_ICR_ERRC_Msk /*!< Error clear flag */
+#define CRS_ICR_ESYNCC_Pos (3U)
+#define CRS_ICR_ESYNCC_Msk (0x1UL << CRS_ICR_ESYNCC_Pos) /*!< 0x00000008 */
+#define CRS_ICR_ESYNCC CRS_ICR_ESYNCC_Msk /*!< Expected SYNC clear flag */
+
+
+/******************************************************************************/
+/* */
+/* RNG */
+/* */
+/******************************************************************************/
+/******************** Bits definition for RNG_CR register *******************/
+#define RNG_CR_RNGEN_Pos (2U)
+#define RNG_CR_RNGEN_Msk (0x1UL << RNG_CR_RNGEN_Pos) /*!< 0x00000004 */
+#define RNG_CR_RNGEN RNG_CR_RNGEN_Msk
+#define RNG_CR_IE_Pos (3U)
+#define RNG_CR_IE_Msk (0x1UL << RNG_CR_IE_Pos) /*!< 0x00000008 */
+#define RNG_CR_IE RNG_CR_IE_Msk
+#define RNG_CR_CED_Pos (5U)
+#define RNG_CR_CED_Msk (0x1UL << RNG_CR_CED_Pos) /*!< 0x00000020 */
+#define RNG_CR_CED RNG_CR_CED_Msk
+#define RNG_CR_ARDIS_Pos (7U)
+#define RNG_CR_ARDIS_Msk (0x1UL << RNG_CR_ARDIS_Pos)
+#define RNG_CR_ARDIS RNG_CR_ARDIS_Msk
+#define RNG_CR_RNG_CONFIG3_Pos (8U)
+#define RNG_CR_RNG_CONFIG3_Msk (0xFUL << RNG_CR_RNG_CONFIG3_Pos)
+#define RNG_CR_RNG_CONFIG3 RNG_CR_RNG_CONFIG3_Msk
+#define RNG_CR_NISTC_Pos (12U)
+#define RNG_CR_NISTC_Msk (0x1UL << RNG_CR_NISTC_Pos)
+#define RNG_CR_NISTC RNG_CR_NISTC_Msk
+#define RNG_CR_RNG_CONFIG2_Pos (13U)
+#define RNG_CR_RNG_CONFIG2_Msk (0x7UL << RNG_CR_RNG_CONFIG2_Pos)
+#define RNG_CR_RNG_CONFIG2 RNG_CR_RNG_CONFIG2_Msk
+#define RNG_CR_CLKDIV_Pos (16U)
+#define RNG_CR_CLKDIV_Msk (0xFUL << RNG_CR_CLKDIV_Pos)
+#define RNG_CR_CLKDIV RNG_CR_CLKDIV_Msk
+#define RNG_CR_CLKDIV_0 (0x1UL << RNG_CR_CLKDIV_Pos) /*!< 0x00010000 */
+#define RNG_CR_CLKDIV_1 (0x2UL << RNG_CR_CLKDIV_Pos) /*!< 0x00020000 */
+#define RNG_CR_CLKDIV_2 (0x4UL << RNG_CR_CLKDIV_Pos) /*!< 0x00040000 */
+#define RNG_CR_CLKDIV_3 (0x8UL << RNG_CR_CLKDIV_Pos) /*!< 0x00080000 */
+#define RNG_CR_RNG_CONFIG1_Pos (20U)
+#define RNG_CR_RNG_CONFIG1_Msk (0x3FUL << RNG_CR_RNG_CONFIG1_Pos)
+#define RNG_CR_RNG_CONFIG1 RNG_CR_RNG_CONFIG1_Msk
+#define RNG_CR_CONDRST_Pos (30U)
+#define RNG_CR_CONDRST_Msk (0x1UL << RNG_CR_CONDRST_Pos)
+#define RNG_CR_CONDRST RNG_CR_CONDRST_Msk
+#define RNG_CR_CONFIGLOCK_Pos (31U)
+#define RNG_CR_CONFIGLOCK_Msk (0x1UL << RNG_CR_CONFIGLOCK_Pos)
+#define RNG_CR_CONFIGLOCK RNG_CR_CONFIGLOCK_Msk
+
+/******************** Bits definition for RNG_SR register *******************/
+#define RNG_SR_DRDY_Pos (0U)
+#define RNG_SR_DRDY_Msk (0x1UL << RNG_SR_DRDY_Pos) /*!< 0x00000001 */
+#define RNG_SR_DRDY RNG_SR_DRDY_Msk
+#define RNG_SR_CECS_Pos (1U)
+#define RNG_SR_CECS_Msk (0x1UL << RNG_SR_CECS_Pos) /*!< 0x00000002 */
+#define RNG_SR_CECS RNG_SR_CECS_Msk
+#define RNG_SR_SECS_Pos (2U)
+#define RNG_SR_SECS_Msk (0x1UL << RNG_SR_SECS_Pos) /*!< 0x00000004 */
+#define RNG_SR_SECS RNG_SR_SECS_Msk
+#define RNG_SR_CEIS_Pos (5U)
+#define RNG_SR_CEIS_Msk (0x1UL << RNG_SR_CEIS_Pos) /*!< 0x00000020 */
+#define RNG_SR_CEIS RNG_SR_CEIS_Msk
+#define RNG_SR_SEIS_Pos (6U)
+#define RNG_SR_SEIS_Msk (0x1UL << RNG_SR_SEIS_Pos) /*!< 0x00000040 */
+#define RNG_SR_SEIS RNG_SR_SEIS_Msk
+
+
+/******************** Bits definition for RNG_HTCR register *******************/
+#define RNG_HTCR_HTCFG_Pos (0U)
+#define RNG_HTCR_HTCFG_Msk (0xFFFFFFFFUL << RNG_HTCR_HTCFG_Pos) /*!< 0xFFFFFFFF */
+#define RNG_HTCR_HTCFG RNG_HTCR_HTCFG_Msk
+
+/******************** RNG Nist Compliance Values ******************************/
+#define RNG_CR_NIST_VALUE (0x00F00D00U)
+#define RNG_HTCR_NIST_VALUE (0xAAC7U)
+
+/******************************************************************************/
+/* */
+/* Digital to Analog Converter */
+/* */
+/******************************************************************************/
+#define DAC_CHANNEL2_SUPPORT /*!< DAC feature available only on specific devices: DAC channel 2 available */
+
+/******************** Bit definition for DAC_CR register ********************/
+#define DAC_CR_EN1_Pos (0U)
+#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */
+#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!*/
+#define DAC_CR_CEN1_Pos (14U)
+#define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */
+#define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!*/
+#define DAC_CR_EN2_Pos (16U)
+#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */
+#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!*/
+#define DAC_CR_CEN2_Pos (30U)
+#define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */
+#define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!*/
+
+/***************** Bit definition for DAC_SWTRIGR register ******************/
+#define DAC_SWTRIGR_SWTRIG1_Pos (0U)
+#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */
+#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!> 1U) /*!< FLASH Bank Size */
+#define FLASH_SECTOR_SIZE 0x2000U /*!< Flash Sector Size: 8 KB */
+
+/******************* Bits definition for FLASH_ACR register *****************/
+#define FLASH_ACR_LATENCY_Pos (0U)
+#define FLASH_ACR_LATENCY_Msk (0xFUL << FLASH_ACR_LATENCY_Pos) /*!< 0x0000000F */
+#define FLASH_ACR_LATENCY FLASH_ACR_LATENCY_Msk /*!< Latency */
+#define FLASH_ACR_LATENCY_0WS (0x00000000U)
+#define FLASH_ACR_LATENCY_1WS (0x00000001U)
+#define FLASH_ACR_LATENCY_2WS (0x00000002U)
+#define FLASH_ACR_LATENCY_3WS (0x00000003U)
+#define FLASH_ACR_LATENCY_4WS (0x00000004U)
+#define FLASH_ACR_LATENCY_5WS (0x00000005U)
+#define FLASH_ACR_LATENCY_6WS (0x00000006U)
+#define FLASH_ACR_LATENCY_7WS (0x00000007U)
+#define FLASH_ACR_LATENCY_8WS (0x00000008U)
+#define FLASH_ACR_LATENCY_9WS (0x00000009U)
+#define FLASH_ACR_LATENCY_10WS (0x0000000AU)
+#define FLASH_ACR_LATENCY_11WS (0x0000000BU)
+#define FLASH_ACR_LATENCY_12WS (0x0000000CU)
+#define FLASH_ACR_LATENCY_13WS (0x0000000DU)
+#define FLASH_ACR_LATENCY_14WS (0x0000000EU)
+#define FLASH_ACR_LATENCY_15WS (0x0000000FU)
+#define FLASH_ACR_WRHIGHFREQ_Pos (4U)
+#define FLASH_ACR_WRHIGHFREQ_Msk (0x3UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000030 */
+#define FLASH_ACR_WRHIGHFREQ FLASH_ACR_WRHIGHFREQ_Msk /*!< Flash signal delay */
+#define FLASH_ACR_WRHIGHFREQ_0 (0x1UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000010 */
+#define FLASH_ACR_WRHIGHFREQ_1 (0x2UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000020 */
+#define FLASH_ACR_PRFTEN_Pos (8U)
+#define FLASH_ACR_PRFTEN_Msk (0x1UL << FLASH_ACR_PRFTEN_Pos) /*!< 0x00000100 */
+#define FLASH_ACR_PRFTEN FLASH_ACR_PRFTEN_Msk /*!< Prefetch enable */
+
+/******************* Bits definition for FLASH_OPSR register ***************/
+#define FLASH_OPSR_ADDR_OP_Pos (0U)
+#define FLASH_OPSR_ADDR_OP_Msk (0xFFFFFUL << FLASH_OPSR_ADDR_OP_Pos) /*!< 0x000FFFFF */
+#define FLASH_OPSR_ADDR_OP FLASH_OPSR_ADDR_OP_Msk /*!< Interrupted operation address */
+#define FLASH_OPSR_BK_OP_Pos (22U)
+#define FLASH_OPSR_BK_OP_Msk (0x1UL << FLASH_OPSR_BK_OP_Pos) /*!< 0x00400000 */
+#define FLASH_OPSR_BK_OP FLASH_OPSR_BK_OP_Msk /*!< Interrupted operation bank */
+#define FLASH_OPSR_SYSF_OP_Pos (23U)
+#define FLASH_OPSR_SYSF_OP_Msk (0x1UL << FLASH_OPSR_SYSF_OP_Pos) /*!< 0x00800000 */
+#define FLASH_OPSR_SYSF_OP FLASH_OPSR_SYSF_OP_Msk /*!< Operation in System Flash interrupted */
+#define FLASH_OPSR_OTP_OP_Pos (24U)
+#define FLASH_OPSR_OTP_OP_Msk (0x1UL << FLASH_OPSR_OTP_OP_Pos) /*!< 0x01000000 */
+#define FLASH_OPSR_OTP_OP FLASH_OPSR_OTP_OP_Msk /*!< Operation in OTP area interrupted */
+#define FLASH_OPSR_CODE_OP_Pos (29U)
+#define FLASH_OPSR_CODE_OP_Msk (0x7UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0xE0000000 */
+#define FLASH_OPSR_CODE_OP FLASH_OPSR_CODE_OP_Msk /*!< Flash memory operation code */
+#define FLASH_OPSR_CODE_OP_0 (0x1UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x20000000 */
+#define FLASH_OPSR_CODE_OP_1 (0x2UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x40000000 */
+#define FLASH_OPSR_CODE_OP_2 (0x4UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x80000000 */
+
+/******************* Bits definition for FLASH_OPTCR register *******************/
+#define FLASH_OPTCR_OPTLOCK_Pos (0U)
+#define FLASH_OPTCR_OPTLOCK_Msk (0x1UL << FLASH_OPTCR_OPTLOCK_Pos) /*!< 0x00000001 */
+#define FLASH_OPTCR_OPTLOCK FLASH_OPTCR_OPTLOCK_Msk /*!< FLASH_OPTCR lock option configuration bit */
+#define FLASH_OPTCR_OPTSTART_Pos (1U)
+#define FLASH_OPTCR_OPTSTART_Msk (0x1UL << FLASH_OPTCR_OPTSTART_Pos) /*!< 0x00000002 */
+#define FLASH_OPTCR_OPTSTART FLASH_OPTCR_OPTSTART_Msk /*!< Option byte start change option configuration bit */
+#define FLASH_OPTCR_SWAP_BANK_Pos (31U)
+#define FLASH_OPTCR_SWAP_BANK_Msk (0x1UL << FLASH_OPTCR_SWAP_BANK_Pos) /*!< 0x80000000 */
+#define FLASH_OPTCR_SWAP_BANK FLASH_OPTCR_SWAP_BANK_Msk /*!< Bank swapping option configuration bit */
+
+/******************* Bits definition for FLASH_SR register ***********************/
+#define FLASH_SR_BSY_Pos (0U)
+#define FLASH_SR_BSY_Msk (0x1UL << FLASH_SR_BSY_Pos) /*!< 0x00000001 */
+#define FLASH_SR_BSY FLASH_SR_BSY_Msk /*!< Busy flag */
+#define FLASH_SR_WBNE_Pos (1U)
+#define FLASH_SR_WBNE_Msk (0x1UL << FLASH_SR_WBNE_Pos) /*!< 0x00000002 */
+#define FLASH_SR_WBNE FLASH_SR_WBNE_Msk /*!< Write buffer not empty flag */
+#define FLASH_SR_DBNE_Pos (3U)
+#define FLASH_SR_DBNE_Msk (0x1UL << FLASH_SR_DBNE_Pos) /*!< 0x00000008 */
+#define FLASH_SR_DBNE FLASH_SR_DBNE_Msk /*!< Data buffer not empty flag */
+#define FLASH_SR_EOP_Pos (16U)
+#define FLASH_SR_EOP_Msk (0x1UL << FLASH_SR_EOP_Pos) /*!< 0x00010000 */
+#define FLASH_SR_EOP FLASH_SR_EOP_Msk /*!< End-of-program flag */
+#define FLASH_SR_WRPERR_Pos (17U)
+#define FLASH_SR_WRPERR_Msk (0x1UL << FLASH_SR_WRPERR_Pos) /*!< 0x00020000 */
+#define FLASH_SR_WRPERR FLASH_SR_WRPERR_Msk /*!< Write protection error flag */
+#define FLASH_SR_PGSERR_Pos (18U)
+#define FLASH_SR_PGSERR_Msk (0x1UL << FLASH_SR_PGSERR_Pos) /*!< 0x00040000 */
+#define FLASH_SR_PGSERR FLASH_SR_PGSERR_Msk /*!< Programming sequence error flag */
+#define FLASH_SR_STRBERR_Pos (19U)
+#define FLASH_SR_STRBERR_Msk (0x1UL << FLASH_SR_STRBERR_Pos) /*!< 0x00080000 */
+#define FLASH_SR_STRBERR FLASH_SR_STRBERR_Msk /*!< Strobe error flag */
+#define FLASH_SR_INCERR_Pos (20U)
+#define FLASH_SR_INCERR_Msk (0x1UL << FLASH_SR_INCERR_Pos) /*!< 0x00100000 */
+#define FLASH_SR_INCERR FLASH_SR_INCERR_Msk /*!< Inconsistency error flag */
+#define FLASH_SR_OPTCHANGEERR_Pos (23U)
+#define FLASH_SR_OPTCHANGEERR_Msk (0x1UL << FLASH_SR_OPTCHANGEERR_Pos) /*!< 0x00800000 */
+#define FLASH_SR_OPTCHANGEERR FLASH_SR_OPTCHANGEERR_Msk /*!< Option byte change error flag */
+
+/******************* Bits definition for FLASH_CR register ***********************/
+#define FLASH_CR_LOCK_Pos (0U)
+#define FLASH_CR_LOCK_Msk (0x1UL << FLASH_CR_LOCK_Pos) /*!< 0x00000001 */
+#define FLASH_CR_LOCK FLASH_CR_LOCK_Msk /*!< Configuration lock bit */
+#define FLASH_CR_PG_Pos (1U)
+#define FLASH_CR_PG_Msk (0x1UL << FLASH_CR_PG_Pos) /*!< 0x00000002 */
+#define FLASH_CR_PG FLASH_CR_PG_Msk /*!< Programming control bit */
+#define FLASH_CR_SER_Pos (2U)
+#define FLASH_CR_SER_Msk (0x1UL << FLASH_CR_SER_Pos) /*!< 0x00000004 */
+#define FLASH_CR_SER FLASH_CR_SER_Msk /*!< Sector erase request */
+#define FLASH_CR_BER_Pos (3U)
+#define FLASH_CR_BER_Msk (0x1UL << FLASH_CR_BER_Pos) /*!< 0x00000008 */
+#define FLASH_CR_BER FLASH_CR_BER_Msk /*!< Bank erase request */
+#define FLASH_CR_FW_Pos (4U)
+#define FLASH_CR_FW_Msk (0x1UL << FLASH_CR_FW_Pos) /*!< 0x00000010 */
+#define FLASH_CR_FW FLASH_CR_FW_Msk /*!< Write forcing control bit */
+#define FLASH_CR_START_Pos (5U)
+#define FLASH_CR_START_Msk (0x1UL << FLASH_CR_START_Pos) /*!< 0x00000020 */
+#define FLASH_CR_START FLASH_CR_START_Msk /*!< Erase start control bit */
+#define FLASH_CR_SNB_Pos (6U)
+#define FLASH_CR_SNB_Msk (0x7FUL << FLASH_CR_SNB_Pos) /*!< 0x00001FC0 */
+#define FLASH_CR_SNB FLASH_CR_SNB_Msk /*!< Sector erase selection number */
+#define FLASH_CR_SNB_0 (0x01UL << FLASH_CR_SNB_Pos) /*!< 0x00000040 */
+#define FLASH_CR_SNB_1 (0x02UL << FLASH_CR_SNB_Pos) /*!< 0x00000080 */
+#define FLASH_CR_SNB_2 (0x04UL << FLASH_CR_SNB_Pos) /*!< 0x00000100 */
+#define FLASH_CR_SNB_3 (0x08UL << FLASH_CR_SNB_Pos) /*!< 0x00000200 */
+#define FLASH_CR_SNB_4 (0x10UL << FLASH_CR_SNB_Pos) /*!< 0x00000400 */
+#define FLASH_CR_SNB_5 (0x20UL << FLASH_CR_SNB_Pos) /*!< 0x00000800 */
+#define FLASH_CR_SNB_6 (0x40UL << FLASH_CR_SNB_Pos) /*!< 0x00001000 */
+#define FLASH_CR_MER_Pos (15U)
+#define FLASH_CR_MER_Msk (0x1UL << FLASH_CR_MER_Pos) /*!< 0x00008000 */
+#define FLASH_CR_MER FLASH_CR_MER_Msk /*!< Mass erase */
+#define FLASH_CR_EOPIE_Pos (16U)
+#define FLASH_CR_EOPIE_Msk (0x1UL << FLASH_CR_EOPIE_Pos) /*!< 0x00010000 */
+#define FLASH_CR_EOPIE FLASH_CR_EOPIE_Msk /*!< End-of-operation interrupt control bit */
+#define FLASH_CR_WRPERRIE_Pos (17U)
+#define FLASH_CR_WRPERRIE_Msk (0x1UL << FLASH_CR_WRPERRIE_Pos) /*!< 0x00020000 */
+#define FLASH_CR_WRPERRIE FLASH_CR_WRPERRIE_Msk /*!< Write protection error interrupt enable bit */
+#define FLASH_CR_PGSERRIE_Pos (18U)
+#define FLASH_CR_PGSERRIE_Msk (0x1UL << FLASH_CR_PGSERRIE_Pos) /*!< 0x00040000 */
+#define FLASH_CR_PGSERRIE FLASH_CR_PGSERRIE_Msk /*!< Programming sequence error interrupt enable bit */
+#define FLASH_CR_STRBERRIE_Pos (19U)
+#define FLASH_CR_STRBERRIE_Msk (0x1UL << FLASH_CR_STRBERRIE_Pos) /*!< 0x00080000 */
+#define FLASH_CR_STRBERRIE FLASH_CR_STRBERRIE_Msk /*!< Strobe error interrupt enable bit */
+#define FLASH_CR_INCERRIE_Pos (20U)
+#define FLASH_CR_INCERRIE_Msk (0x1UL << FLASH_CR_INCERRIE_Pos) /*!< 0x00100000 */
+#define FLASH_CR_INCERRIE FLASH_CR_INCERRIE_Msk /*!< Inconsistency error interrupt enable bit */
+#define FLASH_CR_OPTCHANGEERRIE_Pos (23U)
+#define FLASH_CR_OPTCHANGEERRIE_Msk (0x1UL << FLASH_CR_OPTCHANGEERRIE_Pos) /*!< 0x00800000 */
+#define FLASH_CR_OPTCHANGEERRIE FLASH_CR_OPTCHANGEERRIE_Msk /*!< Option byte change error interrupt enable bit */
+#define FLASH_CR_INV_Pos (29U)
+#define FLASH_CR_INV_Msk (0x1UL << FLASH_CR_INV_Pos) /*!< 0x20000000 */
+#define FLASH_CR_INV FLASH_CR_INV_Msk /*!< Flash Security State Invert */
+#define FLASH_CR_BKSEL_Pos (31U)
+#define FLASH_CR_BKSEL_Msk (0x1UL << FLASH_CR_BKSEL_Pos) /*!< 0x10000000 */
+#define FLASH_CR_BKSEL FLASH_CR_BKSEL_Msk /*!< Bank selector */
+
+/******************* Bits definition for FLASH_CCR register *******************/
+#define FLASH_CCR_CLR_EOP_Pos (16U)
+#define FLASH_CCR_CLR_EOP_Msk (0x1UL << FLASH_CCR_CLR_EOP_Pos) /*!< 0x00010000 */
+#define FLASH_CCR_CLR_EOP FLASH_CCR_CLR_EOP_Msk /*!< EOP flag clear bit */
+#define FLASH_CCR_CLR_WRPERR_Pos (17U)
+#define FLASH_CCR_CLR_WRPERR_Msk (0x1UL << FLASH_CCR_CLR_WRPERR_Pos) /*!< 0x00020000 */
+#define FLASH_CCR_CLR_WRPERR FLASH_CCR_CLR_WRPERR_Msk /*!< WRPERR flag clear bit */
+#define FLASH_CCR_CLR_PGSERR_Pos (18U)
+#define FLASH_CCR_CLR_PGSERR_Msk (0x1UL << FLASH_CCR_CLR_PGSERR_Pos) /*!< 0x00040000 */
+#define FLASH_CCR_CLR_PGSERR FLASH_CCR_CLR_PGSERR_Msk /*!< PGSERR flag clear bit */
+#define FLASH_CCR_CLR_STRBERR_Pos (19U)
+#define FLASH_CCR_CLR_STRBERR_Msk (0x1UL << FLASH_CCR_CLR_STRBERR_Pos) /*!< 0x00080000 */
+#define FLASH_CCR_CLR_STRBERR FLASH_CCR_CLR_STRBERR_Msk /*!< STRBERR flag clear bit */
+#define FLASH_CCR_CLR_INCERR_Pos (20U)
+#define FLASH_CCR_CLR_INCERR_Msk (0x1UL << FLASH_CCR_CLR_INCERR_Pos) /*!< 0x00100000 */
+#define FLASH_CCR_CLR_INCERR FLASH_CCR_CLR_INCERR_Msk /*!< INCERR flag clear bit */
+#define FLASH_CCR_CLR_OPTCHANGEERR_Pos (23U)
+#define FLASH_CCR_CLR_OPTCHANGEERR_Msk (0x1UL << FLASH_CCR_CLR_OPTCHANGEERR_Pos) /*!< 0x00800000 */
+#define FLASH_CCR_CLR_OPTCHANGEERR FLASH_CCR_CLR_OPTCHANGEERR_Msk /*!< Option byte change error clear bit */
+
+/****************** Bits definition for FLASH_PRIVCFGR register ***********/
+#define FLASH_PRIVCFGR_NSPRIV_Pos (1U)
+#define FLASH_PRIVCFGR_NSPRIV_Msk (0x1UL << FLASH_PRIVCFGR_NSPRIV_Pos) /*!< 0x00000002 */
+#define FLASH_PRIVCFGR_NSPRIV FLASH_PRIVCFGR_NSPRIV_Msk /*!< Privilege protection for non-secure registers */
+
+
+/****************** Bits definition for FLASH_HDPEXTR register *****************/
+#define FLASH_HDPEXTR_HDP1_EXT_Pos (0U)
+#define FLASH_HDPEXTR_HDP1_EXT_Msk (0x7UL << FLASH_HDPEXTR_HDP1_EXT_Pos) /*!< 0x00000007 */
+#define FLASH_HDPEXTR_HDP1_EXT FLASH_HDPEXTR_HDP1_EXT_Msk /*!< HDP area extension in 8kB sectors in bank 1 */
+#define FLASH_HDPEXTR_HDP2_EXT_Pos (16U)
+#define FLASH_HDPEXTR_HDP2_EXT_Msk (0x7UL << FLASH_HDPEXTR_HDP2_EXT_Pos) /*!< 0x00070000 */
+#define FLASH_HDPEXTR_HDP2_EXT FLASH_HDPEXTR_HDP2_EXT_Msk /*!< HDP area extension in 8kB sectors in bank 2 */
+
+/******************* Bits definition for FLASH_OPTSR register ***************/
+#define FLASH_OPTSR_BOR_LEV_Pos (0U)
+#define FLASH_OPTSR_BOR_LEV_Msk (0x3UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000003 */
+#define FLASH_OPTSR_BOR_LEV FLASH_OPTSR_BOR_LEV_Msk /*!< Brownout level option bit */
+#define FLASH_OPTSR_BOR_LEV_0 (0x1UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000001 */
+#define FLASH_OPTSR_BOR_LEV_1 (0x2UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000002 */
+#define FLASH_OPTSR_BORH_EN_Pos (2U)
+#define FLASH_OPTSR_BORH_EN_Msk (0x1UL << FLASH_OPTSR_BORH_EN_Pos) /*!< 0x00000004 */
+#define FLASH_OPTSR_BORH_EN FLASH_OPTSR_BORH_EN_Msk /*!< Brownout high enable configuration bit */
+#define FLASH_OPTSR_IWDG_SW_Pos (3U)
+#define FLASH_OPTSR_IWDG_SW_Msk (0x1UL << FLASH_OPTSR_IWDG_SW_Pos) /*!< 0x00000008 */
+#define FLASH_OPTSR_IWDG_SW FLASH_OPTSR_IWDG_SW_Msk /*!< IWDG control mode option bit */
+#define FLASH_OPTSR_WWDG_SW_Pos (4U)
+#define FLASH_OPTSR_WWDG_SW_Msk (0x1UL << FLASH_OPTSR_WWDG_SW_Pos) /*!< 0x00000010 */
+#define FLASH_OPTSR_WWDG_SW FLASH_OPTSR_WWDG_SW_Msk /*!< WWDG control mode option bit */
+#define FLASH_OPTSR_NRST_STOP_Pos (6U)
+#define FLASH_OPTSR_NRST_STOP_Msk (0x1UL << FLASH_OPTSR_NRST_STOP_Pos) /*!< 0x00000040 */
+#define FLASH_OPTSR_NRST_STOP FLASH_OPTSR_NRST_STOP_Msk /*!< Stop mode entry reset option bit */
+#define FLASH_OPTSR_NRST_STDBY_Pos (7U)
+#define FLASH_OPTSR_NRST_STDBY_Msk (0x1UL << FLASH_OPTSR_NRST_STDBY_Pos) /*!< 0x00000080 */
+#define FLASH_OPTSR_NRST_STDBY FLASH_OPTSR_NRST_STDBY_Msk /*!< Standby mode entry reset option bit */
+#define FLASH_OPTSR_PRODUCT_STATE_Pos (8U)
+#define FLASH_OPTSR_PRODUCT_STATE_Msk (0xFFUL << FLASH_OPTSR_PRODUCT_STATE_Pos) /*!< 0x0000FF00 */
+#define FLASH_OPTSR_PRODUCT_STATE FLASH_OPTSR_PRODUCT_STATE_Msk /*!< Life state code option byte */
+#define FLASH_OPTSR_IO_VDD_HSLV_Pos (16U)
+#define FLASH_OPTSR_IO_VDD_HSLV_Msk (0x1UL << FLASH_OPTSR_IO_VDD_HSLV_Pos) /*!< 0x00010000 */
+#define FLASH_OPTSR_IO_VDD_HSLV FLASH_OPTSR_IO_VDD_HSLV_Msk /*!< VDD I/O high-speed at low-voltage option bit */
+#define FLASH_OPTSR_IO_VDDIO2_HSLV_Pos (17U)
+#define FLASH_OPTSR_IO_VDDIO2_HSLV_Msk (0x1UL << FLASH_OPTSR_IO_VDDIO2_HSLV_Pos) /*!< 0x00020000 */
+#define FLASH_OPTSR_IO_VDDIO2_HSLV FLASH_OPTSR_IO_VDDIO2_HSLV_Msk /*!< VDDIO2 I/O high-speed at low-voltage option bit */
+#define FLASH_OPTSR_IWDG_STOP_Pos (20U)
+#define FLASH_OPTSR_IWDG_STOP_Msk (0x1UL << FLASH_OPTSR_IWDG_STOP_Pos) /*!< 0x00100000 */
+#define FLASH_OPTSR_IWDG_STOP FLASH_OPTSR_IWDG_STOP_Msk /*!< Independent watchdog counter freeze in Stop mode */
+#define FLASH_OPTSR_IWDG_STDBY_Pos (21U)
+#define FLASH_OPTSR_IWDG_STDBY_Msk (0x1UL << FLASH_OPTSR_IWDG_STDBY_Pos) /*!< 0x00200000 */
+#define FLASH_OPTSR_IWDG_STDBY FLASH_OPTSR_IWDG_STDBY_Msk /*!< Independent watchdog counter freeze in Standby mode */
+#define FLASH_OPTSR_SWAP_BANK_Pos (31U)
+#define FLASH_OPTSR_SWAP_BANK_Msk (0x1UL << FLASH_OPTSR_SWAP_BANK_Pos) /*!< 0x80000000 */
+#define FLASH_OPTSR_SWAP_BANK FLASH_OPTSR_SWAP_BANK_Msk /*!< Bank swapping option bit */
+
+/******************* Bits definition for FLASH_EPOCHR register ***************/
+#define FLASH_EPOCHR_EPOCH_Pos (0U)
+#define FLASH_EPOCHR_EPOCH_Msk (0xFFFFFFUL << FLASH_EPOCHR_EPOCH_Pos) /*!< 0x00FFFFFF */
+#define FLASH_EPOCHR_EPOCH FLASH_EPOCHR_EPOCH_Msk /*!< EPOCH counter */
+
+/******************* Bits definition for FLASH_OPTSR2 register ***************/
+#define FLASH_OPTSR2_SRAM2_RST_Pos (3U)
+#define FLASH_OPTSR2_SRAM2_RST_Msk (0x1UL << FLASH_OPTSR2_SRAM2_RST_Pos) /*!< 0x00000008 */
+#define FLASH_OPTSR2_SRAM2_RST FLASH_OPTSR2_SRAM2_RST_Msk /*!< SRAM2 erased when a system reset occurs*/
+#define FLASH_OPTSR2_BKPRAM_ECC_Pos (4U)
+#define FLASH_OPTSR2_BKPRAM_ECC_Msk (0x1UL << FLASH_OPTSR2_BKPRAM_ECC_Pos) /*!< 0x00000010 */
+#define FLASH_OPTSR2_BKPRAM_ECC FLASH_OPTSR2_BKPRAM_ECC_Msk /*!< Backup RAM ECC detection and correction enable */
+#define FLASH_OPTSR2_SRAM2_ECC_Pos (6U)
+#define FLASH_OPTSR2_SRAM2_ECC_Msk (0x1UL << FLASH_OPTSR2_SRAM2_ECC_Pos) /*!< 0x00000040 */
+#define FLASH_OPTSR2_SRAM2_ECC FLASH_OPTSR2_SRAM2_ECC_Msk /*!< SRAM2 ECC detection and correction disable */
+#define FLASH_OPTSR2_SRAM1_RST_Pos (9U)
+#define FLASH_OPTSR2_SRAM1_RST_Msk (0x1UL << FLASH_OPTSR2_SRAM1_RST_Pos) /*!< 0x00000200 */
+#define FLASH_OPTSR2_SRAM1_RST FLASH_OPTSR2_SRAM1_RST_Msk /*!< SRAM1 erase upon a system reset */
+#define FLASH_OPTSR2_SRAM1_ECC_Pos (10U)
+#define FLASH_OPTSR2_SRAM1_ECC_Msk (0x1UL << FLASH_OPTSR2_SRAM1_ECC_Pos) /*!< 0x00000400 */
+#define FLASH_OPTSR2_SRAM1_ECC FLASH_OPTSR2_SRAM1_ECC_Msk /*!< SRAM1 ECC detection and correction disable */
+
+/**************** Bits definition for FLASH_BOOTR register **********************/
+#define FLASH_BOOTR_BOOT_LOCK_Pos (0U)
+#define FLASH_BOOTR_BOOT_LOCK_Msk (0xFFUL << FLASH_BOOTR_BOOT_LOCK_Pos) /*!< 0x000000FF */
+#define FLASH_BOOTR_BOOT_LOCK FLASH_BOOTR_BOOT_LOCK_Msk /*!< Boot Lock */
+#define FLASH_BOOTR_BOOTADD_Pos (8U)
+#define FLASH_BOOTR_BOOTADD_Msk (0xFFFFFFUL << FLASH_BOOTR_BOOTADD_Pos) /*!< 0xFFFFFF00 */
+#define FLASH_BOOTR_BOOTADD FLASH_BOOTR_BOOTADD_Msk /*!< Boot address */
+
+/**************** Bits definition for FLASH_PRIVBBR register *******************/
+#define FLASH_PRIVBBR_PRIVBB_Pos (0U)
+#define FLASH_PRIVBBR_PRIVBB_Msk (0x000000FFUL << FLASH_PRIVBBR_PRIVBB_Pos) /*!< 0x000000FF */
+#define FLASH_PRIVBBR_PRIVBB FLASH_PRIVBBR_PRIVBB_Msk /*!< Privileged/unprivileged 8-Kbyte Flash sector attribute */
+
+
+/***************** Bits definition for FLASH_WRPR register *********************/
+#define FLASH_WRPR_WRPSG_Pos (0U)
+#define FLASH_WRPR_WRPSG_Msk (0x000000FFUL << FLASH_WRPR_WRPSG_Pos) /*!< 0x000000FF */
+#define FLASH_WRPR_WRPSG FLASH_WRPR_WRPSG_Msk /*!< Sector group protection option status */
+
+
+/***************** Bits definition for FLASH_HDPR register ********************/
+#define FLASH_HDPR_HDP_STRT_Pos (0U)
+#define FLASH_HDPR_HDP_STRT_Msk (0x07UL << FLASH_HDPR_HDP_STRT_Pos) /*!< 0x00000007 */
+#define FLASH_HDPR_HDP_STRT FLASH_HDPR_HDP_STRT_Msk /*!< Start sector of hide protection area */
+#define FLASH_HDPR_HDP_END_Pos (16U)
+#define FLASH_HDPR_HDP_END_Msk (0x07UL << FLASH_HDPR_HDP_END_Pos) /*!< 0x00070000 */
+#define FLASH_HDPR_HDP_END FLASH_HDPR_HDP_END_Msk /*!< End sector of hide protection area */
+
+/******************* Bits definition for FLASH_ECCR register ***************/
+#define FLASH_ECCR_ADDR_ECC_Pos (0U)
+#define FLASH_ECCR_ADDR_ECC_Msk (0xFFFFUL << FLASH_ECCR_ADDR_ECC_Pos) /*!< 0x0000FFFF */
+#define FLASH_ECCR_ADDR_ECC FLASH_ECCR_ADDR_ECC_Msk /*!< ECC fail address */
+#define FLASH_ECCR_BK_ECC_Pos (22U)
+#define FLASH_ECCR_BK_ECC_Msk (0x1UL << FLASH_ECCR_BK_ECC_Pos) /*!< 0x00400000 */
+#define FLASH_ECCR_BK_ECC FLASH_ECCR_BK_ECC_Msk /*!< ECC fail bank */
+#define FLASH_ECCR_SYSF_ECC_Pos (23U)
+#define FLASH_ECCR_SYSF_ECC_Msk (0x1UL << FLASH_ECCR_SYSF_ECC_Pos) /*!< 0x00800000 */
+#define FLASH_ECCR_SYSF_ECC FLASH_ECCR_SYSF_ECC_Msk /*!< System Flash ECC fail */
+#define FLASH_ECCR_OTP_ECC_Pos (24U)
+#define FLASH_ECCR_OTP_ECC_Msk (0x1UL << FLASH_ECCR_OTP_ECC_Pos) /*!< 0x01000000 */
+#define FLASH_ECCR_OTP_ECC FLASH_ECCR_OTP_ECC_Msk /*!< Flash OTP ECC fail */
+#define FLASH_ECCR_ECCIE_Pos (25U)
+#define FLASH_ECCR_ECCIE_Msk (0x1UL << FLASH_ECCR_ECCIE_Pos) /*!< 0x02000000 */
+#define FLASH_ECCR_ECCIE FLASH_ECCR_ECCIE_Msk /*!< ECC correction interrupt enable */
+#define FLASH_ECCR_ECCC_Pos (30U)
+#define FLASH_ECCR_ECCC_Msk (0x1UL << FLASH_ECCR_ECCC_Pos) /*!< 0x40000000 */
+#define FLASH_ECCR_ECCC FLASH_ECCR_ECCC_Msk /*!< ECC correction */
+#define FLASH_ECCR_ECCD_Pos (31U)
+#define FLASH_ECCR_ECCD_Msk (0x1UL << FLASH_ECCR_ECCD_Pos) /*!< 0x80000000 */
+#define FLASH_ECCR_ECCD FLASH_ECCR_ECCD_Msk /*!< ECC detection */
+
+/******************* Bits definition for FLASH_ECCDR register ***************/
+#define FLASH_ECCDR_FAIL_DATA_Pos (0U)
+#define FLASH_ECCDR_FAIL_DATA_Msk (0xFFFFUL << FLASH_ECCDR_FAIL_DATA_Pos) /*!< 0x0000FFFF */
+#define FLASH_ECCDR_FAIL_DATA FLASH_ECCDR_FAIL_DATA_Msk /*!< ECC fail data */
+
+
+/******************************************************************************/
+/* */
+/* General Purpose IOs (GPIO) */
+/* */
+/******************************************************************************/
+/****************** Bits definition for GPIO_MODER register *****************/
+#define GPIO_MODER_MODE0_Pos (0U)
+#define GPIO_MODER_MODE0_Msk (0x3UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000003 */
+#define GPIO_MODER_MODE0 GPIO_MODER_MODE0_Msk
+#define GPIO_MODER_MODE0_0 (0x1UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000001 */
+#define GPIO_MODER_MODE0_1 (0x2UL << GPIO_MODER_MODE0_Pos) /*!< 0x00000002 */
+#define GPIO_MODER_MODE1_Pos (2U)
+#define GPIO_MODER_MODE1_Msk (0x3UL << GPIO_MODER_MODE1_Pos) /*!< 0x0000000C */
+#define GPIO_MODER_MODE1 GPIO_MODER_MODE1_Msk
+#define GPIO_MODER_MODE1_0 (0x1UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000004 */
+#define GPIO_MODER_MODE1_1 (0x2UL << GPIO_MODER_MODE1_Pos) /*!< 0x00000008 */
+#define GPIO_MODER_MODE2_Pos (4U)
+#define GPIO_MODER_MODE2_Msk (0x3UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000030 */
+#define GPIO_MODER_MODE2 GPIO_MODER_MODE2_Msk
+#define GPIO_MODER_MODE2_0 (0x1UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000010 */
+#define GPIO_MODER_MODE2_1 (0x2UL << GPIO_MODER_MODE2_Pos) /*!< 0x00000020 */
+#define GPIO_MODER_MODE3_Pos (6U)
+#define GPIO_MODER_MODE3_Msk (0x3UL << GPIO_MODER_MODE3_Pos) /*!< 0x000000C0 */
+#define GPIO_MODER_MODE3 GPIO_MODER_MODE3_Msk
+#define GPIO_MODER_MODE3_0 (0x1UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000040 */
+#define GPIO_MODER_MODE3_1 (0x2UL << GPIO_MODER_MODE3_Pos) /*!< 0x00000080 */
+#define GPIO_MODER_MODE4_Pos (8U)
+#define GPIO_MODER_MODE4_Msk (0x3UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000300 */
+#define GPIO_MODER_MODE4 GPIO_MODER_MODE4_Msk
+#define GPIO_MODER_MODE4_0 (0x1UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000100 */
+#define GPIO_MODER_MODE4_1 (0x2UL << GPIO_MODER_MODE4_Pos) /*!< 0x00000200 */
+#define GPIO_MODER_MODE5_Pos (10U)
+#define GPIO_MODER_MODE5_Msk (0x3UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000C00 */
+#define GPIO_MODER_MODE5 GPIO_MODER_MODE5_Msk
+#define GPIO_MODER_MODE5_0 (0x1UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000400 */
+#define GPIO_MODER_MODE5_1 (0x2UL << GPIO_MODER_MODE5_Pos) /*!< 0x00000800 */
+#define GPIO_MODER_MODE6_Pos (12U)
+#define GPIO_MODER_MODE6_Msk (0x3UL << GPIO_MODER_MODE6_Pos) /*!< 0x00003000 */
+#define GPIO_MODER_MODE6 GPIO_MODER_MODE6_Msk
+#define GPIO_MODER_MODE6_0 (0x1UL << GPIO_MODER_MODE6_Pos) /*!< 0x00001000 */
+#define GPIO_MODER_MODE6_1 (0x2UL << GPIO_MODER_MODE6_Pos) /*!< 0x00002000 */
+#define GPIO_MODER_MODE7_Pos (14U)
+#define GPIO_MODER_MODE7_Msk (0x3UL << GPIO_MODER_MODE7_Pos) /*!< 0x0000C000 */
+#define GPIO_MODER_MODE7 GPIO_MODER_MODE7_Msk
+#define GPIO_MODER_MODE7_0 (0x1UL << GPIO_MODER_MODE7_Pos) /*!< 0x00004000 */
+#define GPIO_MODER_MODE7_1 (0x2UL << GPIO_MODER_MODE7_Pos) /*!< 0x00008000 */
+#define GPIO_MODER_MODE8_Pos (16U)
+#define GPIO_MODER_MODE8_Msk (0x3UL << GPIO_MODER_MODE8_Pos) /*!< 0x00030000 */
+#define GPIO_MODER_MODE8 GPIO_MODER_MODE8_Msk
+#define GPIO_MODER_MODE8_0 (0x1UL << GPIO_MODER_MODE8_Pos) /*!< 0x00010000 */
+#define GPIO_MODER_MODE8_1 (0x2UL << GPIO_MODER_MODE8_Pos) /*!< 0x00020000 */
+#define GPIO_MODER_MODE9_Pos (18U)
+#define GPIO_MODER_MODE9_Msk (0x3UL << GPIO_MODER_MODE9_Pos) /*!< 0x000C0000 */
+#define GPIO_MODER_MODE9 GPIO_MODER_MODE9_Msk
+#define GPIO_MODER_MODE9_0 (0x1UL << GPIO_MODER_MODE9_Pos) /*!< 0x00040000 */
+#define GPIO_MODER_MODE9_1 (0x2UL << GPIO_MODER_MODE9_Pos) /*!< 0x00080000 */
+#define GPIO_MODER_MODE10_Pos (20U)
+#define GPIO_MODER_MODE10_Msk (0x3UL << GPIO_MODER_MODE10_Pos) /*!< 0x00300000 */
+#define GPIO_MODER_MODE10 GPIO_MODER_MODE10_Msk
+#define GPIO_MODER_MODE10_0 (0x1UL << GPIO_MODER_MODE10_Pos) /*!< 0x00100000 */
+#define GPIO_MODER_MODE10_1 (0x2UL << GPIO_MODER_MODE10_Pos) /*!< 0x00200000 */
+#define GPIO_MODER_MODE11_Pos (22U)
+#define GPIO_MODER_MODE11_Msk (0x3UL << GPIO_MODER_MODE11_Pos) /*!< 0x00C00000 */
+#define GPIO_MODER_MODE11 GPIO_MODER_MODE11_Msk
+#define GPIO_MODER_MODE11_0 (0x1UL << GPIO_MODER_MODE11_Pos) /*!< 0x00400000 */
+#define GPIO_MODER_MODE11_1 (0x2UL << GPIO_MODER_MODE11_Pos) /*!< 0x00800000 */
+#define GPIO_MODER_MODE12_Pos (24U)
+#define GPIO_MODER_MODE12_Msk (0x3UL << GPIO_MODER_MODE12_Pos) /*!< 0x03000000 */
+#define GPIO_MODER_MODE12 GPIO_MODER_MODE12_Msk
+#define GPIO_MODER_MODE12_0 (0x1UL << GPIO_MODER_MODE12_Pos) /*!< 0x01000000 */
+#define GPIO_MODER_MODE12_1 (0x2UL << GPIO_MODER_MODE12_Pos) /*!< 0x02000000 */
+#define GPIO_MODER_MODE13_Pos (26U)
+#define GPIO_MODER_MODE13_Msk (0x3UL << GPIO_MODER_MODE13_Pos) /*!< 0x0C000000 */
+#define GPIO_MODER_MODE13 GPIO_MODER_MODE13_Msk
+#define GPIO_MODER_MODE13_0 (0x1UL << GPIO_MODER_MODE13_Pos) /*!< 0x04000000 */
+#define GPIO_MODER_MODE13_1 (0x2UL << GPIO_MODER_MODE13_Pos) /*!< 0x08000000 */
+#define GPIO_MODER_MODE14_Pos (28U)
+#define GPIO_MODER_MODE14_Msk (0x3UL << GPIO_MODER_MODE14_Pos) /*!< 0x30000000 */
+#define GPIO_MODER_MODE14 GPIO_MODER_MODE14_Msk
+#define GPIO_MODER_MODE14_0 (0x1UL << GPIO_MODER_MODE14_Pos) /*!< 0x10000000 */
+#define GPIO_MODER_MODE14_1 (0x2UL << GPIO_MODER_MODE14_Pos) /*!< 0x20000000 */
+#define GPIO_MODER_MODE15_Pos (30U)
+#define GPIO_MODER_MODE15_Msk (0x3UL << GPIO_MODER_MODE15_Pos) /*!< 0xC0000000 */
+#define GPIO_MODER_MODE15 GPIO_MODER_MODE15_Msk
+#define GPIO_MODER_MODE15_0 (0x1UL << GPIO_MODER_MODE15_Pos) /*!< 0x40000000 */
+#define GPIO_MODER_MODE15_1 (0x2UL << GPIO_MODER_MODE15_Pos) /*!< 0x80000000 */
+
+/****************** Bits definition for GPIO_OTYPER register ****************/
+#define GPIO_OTYPER_OT0_Pos (0U)
+#define GPIO_OTYPER_OT0_Msk (0x1UL << GPIO_OTYPER_OT0_Pos) /*!< 0x00000001 */
+#define GPIO_OTYPER_OT0 GPIO_OTYPER_OT0_Msk
+#define GPIO_OTYPER_OT1_Pos (1U)
+#define GPIO_OTYPER_OT1_Msk (0x1UL << GPIO_OTYPER_OT1_Pos) /*!< 0x00000002 */
+#define GPIO_OTYPER_OT1 GPIO_OTYPER_OT1_Msk
+#define GPIO_OTYPER_OT2_Pos (2U)
+#define GPIO_OTYPER_OT2_Msk (0x1UL << GPIO_OTYPER_OT2_Pos) /*!< 0x00000004 */
+#define GPIO_OTYPER_OT2 GPIO_OTYPER_OT2_Msk
+#define GPIO_OTYPER_OT3_Pos (3U)
+#define GPIO_OTYPER_OT3_Msk (0x1UL << GPIO_OTYPER_OT3_Pos) /*!< 0x00000008 */
+#define GPIO_OTYPER_OT3 GPIO_OTYPER_OT3_Msk
+#define GPIO_OTYPER_OT4_Pos (4U)
+#define GPIO_OTYPER_OT4_Msk (0x1UL << GPIO_OTYPER_OT4_Pos) /*!< 0x00000010 */
+#define GPIO_OTYPER_OT4 GPIO_OTYPER_OT4_Msk
+#define GPIO_OTYPER_OT5_Pos (5U)
+#define GPIO_OTYPER_OT5_Msk (0x1UL << GPIO_OTYPER_OT5_Pos) /*!< 0x00000020 */
+#define GPIO_OTYPER_OT5 GPIO_OTYPER_OT5_Msk
+#define GPIO_OTYPER_OT6_Pos (6U)
+#define GPIO_OTYPER_OT6_Msk (0x1UL << GPIO_OTYPER_OT6_Pos) /*!< 0x00000040 */
+#define GPIO_OTYPER_OT6 GPIO_OTYPER_OT6_Msk
+#define GPIO_OTYPER_OT7_Pos (7U)
+#define GPIO_OTYPER_OT7_Msk (0x1UL << GPIO_OTYPER_OT7_Pos) /*!< 0x00000080 */
+#define GPIO_OTYPER_OT7 GPIO_OTYPER_OT7_Msk
+#define GPIO_OTYPER_OT8_Pos (8U)
+#define GPIO_OTYPER_OT8_Msk (0x1UL << GPIO_OTYPER_OT8_Pos) /*!< 0x00000100 */
+#define GPIO_OTYPER_OT8 GPIO_OTYPER_OT8_Msk
+#define GPIO_OTYPER_OT9_Pos (9U)
+#define GPIO_OTYPER_OT9_Msk (0x1UL << GPIO_OTYPER_OT9_Pos) /*!< 0x00000200 */
+#define GPIO_OTYPER_OT9 GPIO_OTYPER_OT9_Msk
+#define GPIO_OTYPER_OT10_Pos (10U)
+#define GPIO_OTYPER_OT10_Msk (0x1UL << GPIO_OTYPER_OT10_Pos) /*!< 0x00000400 */
+#define GPIO_OTYPER_OT10 GPIO_OTYPER_OT10_Msk
+#define GPIO_OTYPER_OT11_Pos (11U)
+#define GPIO_OTYPER_OT11_Msk (0x1UL << GPIO_OTYPER_OT11_Pos) /*!< 0x00000800 */
+#define GPIO_OTYPER_OT11 GPIO_OTYPER_OT11_Msk
+#define GPIO_OTYPER_OT12_Pos (12U)
+#define GPIO_OTYPER_OT12_Msk (0x1UL << GPIO_OTYPER_OT12_Pos) /*!< 0x00001000 */
+#define GPIO_OTYPER_OT12 GPIO_OTYPER_OT12_Msk
+#define GPIO_OTYPER_OT13_Pos (13U)
+#define GPIO_OTYPER_OT13_Msk (0x1UL << GPIO_OTYPER_OT13_Pos) /*!< 0x00002000 */
+#define GPIO_OTYPER_OT13 GPIO_OTYPER_OT13_Msk
+#define GPIO_OTYPER_OT14_Pos (14U)
+#define GPIO_OTYPER_OT14_Msk (0x1UL << GPIO_OTYPER_OT14_Pos) /*!< 0x00004000 */
+#define GPIO_OTYPER_OT14 GPIO_OTYPER_OT14_Msk
+#define GPIO_OTYPER_OT15_Pos (15U)
+#define GPIO_OTYPER_OT15_Msk (0x1UL << GPIO_OTYPER_OT15_Pos) /*!< 0x00008000 */
+#define GPIO_OTYPER_OT15 GPIO_OTYPER_OT15_Msk
+
+/****************** Bits definition for GPIO_OSPEEDR register ***************/
+#define GPIO_OSPEEDR_OSPEED0_Pos (0U)
+#define GPIO_OSPEEDR_OSPEED0_Msk (0x3UL << GPIO_OSPEEDR_OSPEED0_Pos) /*!< 0x00000003 */
+#define GPIO_OSPEEDR_OSPEED0 GPIO_OSPEEDR_OSPEED0_Msk
+#define GPIO_OSPEEDR_OSPEED0_0 (0x1UL << GPIO_OSPEEDR_OSPEED0_Pos) /*!< 0x00000001 */
+#define GPIO_OSPEEDR_OSPEED0_1 (0x2UL << GPIO_OSPEEDR_OSPEED0_Pos) /*!< 0x00000002 */
+#define GPIO_OSPEEDR_OSPEED1_Pos (2U)
+#define GPIO_OSPEEDR_OSPEED1_Msk (0x3UL << GPIO_OSPEEDR_OSPEED1_Pos) /*!< 0x0000000C */
+#define GPIO_OSPEEDR_OSPEED1 GPIO_OSPEEDR_OSPEED1_Msk
+#define GPIO_OSPEEDR_OSPEED1_0 (0x1UL << GPIO_OSPEEDR_OSPEED1_Pos) /*!< 0x00000004 */
+#define GPIO_OSPEEDR_OSPEED1_1 (0x2UL << GPIO_OSPEEDR_OSPEED1_Pos) /*!< 0x00000008 */
+#define GPIO_OSPEEDR_OSPEED2_Pos (4U)
+#define GPIO_OSPEEDR_OSPEED2_Msk (0x3UL << GPIO_OSPEEDR_OSPEED2_Pos) /*!< 0x00000030 */
+#define GPIO_OSPEEDR_OSPEED2 GPIO_OSPEEDR_OSPEED2_Msk
+#define GPIO_OSPEEDR_OSPEED2_0 (0x1UL << GPIO_OSPEEDR_OSPEED2_Pos) /*!< 0x00000010 */
+#define GPIO_OSPEEDR_OSPEED2_1 (0x2UL << GPIO_OSPEEDR_OSPEED2_Pos) /*!< 0x00000020 */
+#define GPIO_OSPEEDR_OSPEED3_Pos (6U)
+#define GPIO_OSPEEDR_OSPEED3_Msk (0x3UL << GPIO_OSPEEDR_OSPEED3_Pos) /*!< 0x000000C0 */
+#define GPIO_OSPEEDR_OSPEED3 GPIO_OSPEEDR_OSPEED3_Msk
+#define GPIO_OSPEEDR_OSPEED3_0 (0x1UL << GPIO_OSPEEDR_OSPEED3_Pos) /*!< 0x00000040 */
+#define GPIO_OSPEEDR_OSPEED3_1 (0x2UL << GPIO_OSPEEDR_OSPEED3_Pos) /*!< 0x00000080 */
+#define GPIO_OSPEEDR_OSPEED4_Pos (8U)
+#define GPIO_OSPEEDR_OSPEED4_Msk (0x3UL << GPIO_OSPEEDR_OSPEED4_Pos) /*!< 0x00000300 */
+#define GPIO_OSPEEDR_OSPEED4 GPIO_OSPEEDR_OSPEED4_Msk
+#define GPIO_OSPEEDR_OSPEED4_0 (0x1UL << GPIO_OSPEEDR_OSPEED4_Pos) /*!< 0x00000100 */
+#define GPIO_OSPEEDR_OSPEED4_1 (0x2UL << GPIO_OSPEEDR_OSPEED4_Pos) /*!< 0x00000200 */
+#define GPIO_OSPEEDR_OSPEED5_Pos (10U)
+#define GPIO_OSPEEDR_OSPEED5_Msk (0x3UL << GPIO_OSPEEDR_OSPEED5_Pos) /*!< 0x00000C00 */
+#define GPIO_OSPEEDR_OSPEED5 GPIO_OSPEEDR_OSPEED5_Msk
+#define GPIO_OSPEEDR_OSPEED5_0 (0x1UL << GPIO_OSPEEDR_OSPEED5_Pos) /*!< 0x00000400 */
+#define GPIO_OSPEEDR_OSPEED5_1 (0x2UL << GPIO_OSPEEDR_OSPEED5_Pos) /*!< 0x00000800 */
+#define GPIO_OSPEEDR_OSPEED6_Pos (12U)
+#define GPIO_OSPEEDR_OSPEED6_Msk (0x3UL << GPIO_OSPEEDR_OSPEED6_Pos) /*!< 0x00003000 */
+#define GPIO_OSPEEDR_OSPEED6 GPIO_OSPEEDR_OSPEED6_Msk
+#define GPIO_OSPEEDR_OSPEED6_0 (0x1UL << GPIO_OSPEEDR_OSPEED6_Pos) /*!< 0x00001000 */
+#define GPIO_OSPEEDR_OSPEED6_1 (0x2UL << GPIO_OSPEEDR_OSPEED6_Pos) /*!< 0x00002000 */
+#define GPIO_OSPEEDR_OSPEED7_Pos (14U)
+#define GPIO_OSPEEDR_OSPEED7_Msk (0x3UL << GPIO_OSPEEDR_OSPEED7_Pos) /*!< 0x0000C000 */
+#define GPIO_OSPEEDR_OSPEED7 GPIO_OSPEEDR_OSPEED7_Msk
+#define GPIO_OSPEEDR_OSPEED7_0 (0x1UL << GPIO_OSPEEDR_OSPEED7_Pos) /*!< 0x00004000 */
+#define GPIO_OSPEEDR_OSPEED7_1 (0x2UL << GPIO_OSPEEDR_OSPEED7_Pos) /*!< 0x00008000 */
+#define GPIO_OSPEEDR_OSPEED8_Pos (16U)
+#define GPIO_OSPEEDR_OSPEED8_Msk (0x3UL << GPIO_OSPEEDR_OSPEED8_Pos) /*!< 0x00030000 */
+#define GPIO_OSPEEDR_OSPEED8 GPIO_OSPEEDR_OSPEED8_Msk
+#define GPIO_OSPEEDR_OSPEED8_0 (0x1UL << GPIO_OSPEEDR_OSPEED8_Pos) /*!< 0x00010000 */
+#define GPIO_OSPEEDR_OSPEED8_1 (0x2UL << GPIO_OSPEEDR_OSPEED8_Pos) /*!< 0x00020000 */
+#define GPIO_OSPEEDR_OSPEED9_Pos (18U)
+#define GPIO_OSPEEDR_OSPEED9_Msk (0x3UL << GPIO_OSPEEDR_OSPEED9_Pos) /*!< 0x000C0000 */
+#define GPIO_OSPEEDR_OSPEED9 GPIO_OSPEEDR_OSPEED9_Msk
+#define GPIO_OSPEEDR_OSPEED9_0 (0x1UL << GPIO_OSPEEDR_OSPEED9_Pos) /*!< 0x00040000 */
+#define GPIO_OSPEEDR_OSPEED9_1 (0x2UL << GPIO_OSPEEDR_OSPEED9_Pos) /*!< 0x00080000 */
+#define GPIO_OSPEEDR_OSPEED10_Pos (20U)
+#define GPIO_OSPEEDR_OSPEED10_Msk (0x3UL << GPIO_OSPEEDR_OSPEED10_Pos) /*!< 0x00300000 */
+#define GPIO_OSPEEDR_OSPEED10 GPIO_OSPEEDR_OSPEED10_Msk
+#define GPIO_OSPEEDR_OSPEED10_0 (0x1UL << GPIO_OSPEEDR_OSPEED10_Pos) /*!< 0x00100000 */
+#define GPIO_OSPEEDR_OSPEED10_1 (0x2UL << GPIO_OSPEEDR_OSPEED10_Pos) /*!< 0x00200000 */
+#define GPIO_OSPEEDR_OSPEED11_Pos (22U)
+#define GPIO_OSPEEDR_OSPEED11_Msk (0x3UL << GPIO_OSPEEDR_OSPEED11_Pos) /*!< 0x00C00000 */
+#define GPIO_OSPEEDR_OSPEED11 GPIO_OSPEEDR_OSPEED11_Msk
+#define GPIO_OSPEEDR_OSPEED11_0 (0x1UL << GPIO_OSPEEDR_OSPEED11_Pos) /*!< 0x00400000 */
+#define GPIO_OSPEEDR_OSPEED11_1 (0x2UL << GPIO_OSPEEDR_OSPEED11_Pos) /*!< 0x00800000 */
+#define GPIO_OSPEEDR_OSPEED12_Pos (24U)
+#define GPIO_OSPEEDR_OSPEED12_Msk (0x3UL << GPIO_OSPEEDR_OSPEED12_Pos) /*!< 0x03000000 */
+#define GPIO_OSPEEDR_OSPEED12 GPIO_OSPEEDR_OSPEED12_Msk
+#define GPIO_OSPEEDR_OSPEED12_0 (0x1UL << GPIO_OSPEEDR_OSPEED12_Pos) /*!< 0x01000000 */
+#define GPIO_OSPEEDR_OSPEED12_1 (0x2UL << GPIO_OSPEEDR_OSPEED12_Pos) /*!< 0x02000000 */
+#define GPIO_OSPEEDR_OSPEED13_Pos (26U)
+#define GPIO_OSPEEDR_OSPEED13_Msk (0x3UL << GPIO_OSPEEDR_OSPEED13_Pos) /*!< 0x0C000000 */
+#define GPIO_OSPEEDR_OSPEED13 GPIO_OSPEEDR_OSPEED13_Msk
+#define GPIO_OSPEEDR_OSPEED13_0 (0x1UL << GPIO_OSPEEDR_OSPEED13_Pos) /*!< 0x04000000 */
+#define GPIO_OSPEEDR_OSPEED13_1 (0x2UL << GPIO_OSPEEDR_OSPEED13_Pos) /*!< 0x08000000 */
+#define GPIO_OSPEEDR_OSPEED14_Pos (28U)
+#define GPIO_OSPEEDR_OSPEED14_Msk (0x3UL << GPIO_OSPEEDR_OSPEED14_Pos) /*!< 0x30000000 */
+#define GPIO_OSPEEDR_OSPEED14 GPIO_OSPEEDR_OSPEED14_Msk
+#define GPIO_OSPEEDR_OSPEED14_0 (0x1UL << GPIO_OSPEEDR_OSPEED14_Pos) /*!< 0x10000000 */
+#define GPIO_OSPEEDR_OSPEED14_1 (0x2UL << GPIO_OSPEEDR_OSPEED14_Pos) /*!< 0x20000000 */
+#define GPIO_OSPEEDR_OSPEED15_Pos (30U)
+#define GPIO_OSPEEDR_OSPEED15_Msk (0x3UL << GPIO_OSPEEDR_OSPEED15_Pos) /*!< 0xC0000000 */
+#define GPIO_OSPEEDR_OSPEED15 GPIO_OSPEEDR_OSPEED15_Msk
+#define GPIO_OSPEEDR_OSPEED15_0 (0x1UL << GPIO_OSPEEDR_OSPEED15_Pos) /*!< 0x40000000 */
+#define GPIO_OSPEEDR_OSPEED15_1 (0x2UL << GPIO_OSPEEDR_OSPEED15_Pos) /*!< 0x80000000 */
+
+/****************** Bits definition for GPIO_PUPDR register *****************/
+#define GPIO_PUPDR_PUPD0_Pos (0U)
+#define GPIO_PUPDR_PUPD0_Msk (0x3UL << GPIO_PUPDR_PUPD0_Pos) /*!< 0x00000003 */
+#define GPIO_PUPDR_PUPD0 GPIO_PUPDR_PUPD0_Msk
+#define GPIO_PUPDR_PUPD0_0 (0x1UL << GPIO_PUPDR_PUPD0_Pos) /*!< 0x00000001 */
+#define GPIO_PUPDR_PUPD0_1 (0x2UL << GPIO_PUPDR_PUPD0_Pos) /*!< 0x00000002 */
+#define GPIO_PUPDR_PUPD1_Pos (2U)
+#define GPIO_PUPDR_PUPD1_Msk (0x3UL << GPIO_PUPDR_PUPD1_Pos) /*!< 0x0000000C */
+#define GPIO_PUPDR_PUPD1 GPIO_PUPDR_PUPD1_Msk
+#define GPIO_PUPDR_PUPD1_0 (0x1UL << GPIO_PUPDR_PUPD1_Pos) /*!< 0x00000004 */
+#define GPIO_PUPDR_PUPD1_1 (0x2UL << GPIO_PUPDR_PUPD1_Pos) /*!< 0x00000008 */
+#define GPIO_PUPDR_PUPD2_Pos (4U)
+#define GPIO_PUPDR_PUPD2_Msk (0x3UL << GPIO_PUPDR_PUPD2_Pos) /*!< 0x00000030 */
+#define GPIO_PUPDR_PUPD2 GPIO_PUPDR_PUPD2_Msk
+#define GPIO_PUPDR_PUPD2_0 (0x1UL << GPIO_PUPDR_PUPD2_Pos) /*!< 0x00000010 */
+#define GPIO_PUPDR_PUPD2_1 (0x2UL << GPIO_PUPDR_PUPD2_Pos) /*!< 0x00000020 */
+#define GPIO_PUPDR_PUPD3_Pos (6U)
+#define GPIO_PUPDR_PUPD3_Msk (0x3UL << GPIO_PUPDR_PUPD3_Pos) /*!< 0x000000C0 */
+#define GPIO_PUPDR_PUPD3 GPIO_PUPDR_PUPD3_Msk
+#define GPIO_PUPDR_PUPD3_0 (0x1UL << GPIO_PUPDR_PUPD3_Pos) /*!< 0x00000040 */
+#define GPIO_PUPDR_PUPD3_1 (0x2UL << GPIO_PUPDR_PUPD3_Pos) /*!< 0x00000080 */
+#define GPIO_PUPDR_PUPD4_Pos (8U)
+#define GPIO_PUPDR_PUPD4_Msk (0x3UL << GPIO_PUPDR_PUPD4_Pos) /*!< 0x00000300 */
+#define GPIO_PUPDR_PUPD4 GPIO_PUPDR_PUPD4_Msk
+#define GPIO_PUPDR_PUPD4_0 (0x1UL << GPIO_PUPDR_PUPD4_Pos) /*!< 0x00000100 */
+#define GPIO_PUPDR_PUPD4_1 (0x2UL << GPIO_PUPDR_PUPD4_Pos) /*!< 0x00000200 */
+#define GPIO_PUPDR_PUPD5_Pos (10U)
+#define GPIO_PUPDR_PUPD5_Msk (0x3UL << GPIO_PUPDR_PUPD5_Pos) /*!< 0x00000C00 */
+#define GPIO_PUPDR_PUPD5 GPIO_PUPDR_PUPD5_Msk
+#define GPIO_PUPDR_PUPD5_0 (0x1UL << GPIO_PUPDR_PUPD5_Pos) /*!< 0x00000400 */
+#define GPIO_PUPDR_PUPD5_1 (0x2UL << GPIO_PUPDR_PUPD5_Pos) /*!< 0x00000800 */
+#define GPIO_PUPDR_PUPD6_Pos (12U)
+#define GPIO_PUPDR_PUPD6_Msk (0x3UL << GPIO_PUPDR_PUPD6_Pos) /*!< 0x00003000 */
+#define GPIO_PUPDR_PUPD6 GPIO_PUPDR_PUPD6_Msk
+#define GPIO_PUPDR_PUPD6_0 (0x1UL << GPIO_PUPDR_PUPD6_Pos) /*!< 0x00001000 */
+#define GPIO_PUPDR_PUPD6_1 (0x2UL << GPIO_PUPDR_PUPD6_Pos) /*!< 0x00002000 */
+#define GPIO_PUPDR_PUPD7_Pos (14U)
+#define GPIO_PUPDR_PUPD7_Msk (0x3UL << GPIO_PUPDR_PUPD7_Pos) /*!< 0x0000C000 */
+#define GPIO_PUPDR_PUPD7 GPIO_PUPDR_PUPD7_Msk
+#define GPIO_PUPDR_PUPD7_0 (0x1UL << GPIO_PUPDR_PUPD7_Pos) /*!< 0x00004000 */
+#define GPIO_PUPDR_PUPD7_1 (0x2UL << GPIO_PUPDR_PUPD7_Pos) /*!< 0x00008000 */
+#define GPIO_PUPDR_PUPD8_Pos (16U)
+#define GPIO_PUPDR_PUPD8_Msk (0x3UL << GPIO_PUPDR_PUPD8_Pos) /*!< 0x00030000 */
+#define GPIO_PUPDR_PUPD8 GPIO_PUPDR_PUPD8_Msk
+#define GPIO_PUPDR_PUPD8_0 (0x1UL << GPIO_PUPDR_PUPD8_Pos) /*!< 0x00010000 */
+#define GPIO_PUPDR_PUPD8_1 (0x2UL << GPIO_PUPDR_PUPD8_Pos) /*!< 0x00020000 */
+#define GPIO_PUPDR_PUPD9_Pos (18U)
+#define GPIO_PUPDR_PUPD9_Msk (0x3UL << GPIO_PUPDR_PUPD9_Pos) /*!< 0x000C0000 */
+#define GPIO_PUPDR_PUPD9 GPIO_PUPDR_PUPD9_Msk
+#define GPIO_PUPDR_PUPD9_0 (0x1UL << GPIO_PUPDR_PUPD9_Pos) /*!< 0x00040000 */
+#define GPIO_PUPDR_PUPD9_1 (0x2UL << GPIO_PUPDR_PUPD9_Pos) /*!< 0x00080000 */
+#define GPIO_PUPDR_PUPD10_Pos (20U)
+#define GPIO_PUPDR_PUPD10_Msk (0x3UL << GPIO_PUPDR_PUPD10_Pos) /*!< 0x00300000 */
+#define GPIO_PUPDR_PUPD10 GPIO_PUPDR_PUPD10_Msk
+#define GPIO_PUPDR_PUPD10_0 (0x1UL << GPIO_PUPDR_PUPD10_Pos) /*!< 0x00100000 */
+#define GPIO_PUPDR_PUPD10_1 (0x2UL << GPIO_PUPDR_PUPD10_Pos) /*!< 0x00200000 */
+#define GPIO_PUPDR_PUPD11_Pos (22U)
+#define GPIO_PUPDR_PUPD11_Msk (0x3UL << GPIO_PUPDR_PUPD11_Pos) /*!< 0x00C00000 */
+#define GPIO_PUPDR_PUPD11 GPIO_PUPDR_PUPD11_Msk
+#define GPIO_PUPDR_PUPD11_0 (0x1UL << GPIO_PUPDR_PUPD11_Pos) /*!< 0x00400000 */
+#define GPIO_PUPDR_PUPD11_1 (0x2UL << GPIO_PUPDR_PUPD11_Pos) /*!< 0x00800000 */
+#define GPIO_PUPDR_PUPD12_Pos (24U)
+#define GPIO_PUPDR_PUPD12_Msk (0x3UL << GPIO_PUPDR_PUPD12_Pos) /*!< 0x03000000 */
+#define GPIO_PUPDR_PUPD12 GPIO_PUPDR_PUPD12_Msk
+#define GPIO_PUPDR_PUPD12_0 (0x1UL << GPIO_PUPDR_PUPD12_Pos) /*!< 0x01000000 */
+#define GPIO_PUPDR_PUPD12_1 (0x2UL << GPIO_PUPDR_PUPD12_Pos) /*!< 0x02000000 */
+#define GPIO_PUPDR_PUPD13_Pos (26U)
+#define GPIO_PUPDR_PUPD13_Msk (0x3UL << GPIO_PUPDR_PUPD13_Pos) /*!< 0x0C000000 */
+#define GPIO_PUPDR_PUPD13 GPIO_PUPDR_PUPD13_Msk
+#define GPIO_PUPDR_PUPD13_0 (0x1UL << GPIO_PUPDR_PUPD13_Pos) /*!< 0x04000000 */
+#define GPIO_PUPDR_PUPD13_1 (0x2UL << GPIO_PUPDR_PUPD13_Pos) /*!< 0x08000000 */
+#define GPIO_PUPDR_PUPD14_Pos (28U)
+#define GPIO_PUPDR_PUPD14_Msk (0x3UL << GPIO_PUPDR_PUPD14_Pos) /*!< 0x30000000 */
+#define GPIO_PUPDR_PUPD14 GPIO_PUPDR_PUPD14_Msk
+#define GPIO_PUPDR_PUPD14_0 (0x1UL << GPIO_PUPDR_PUPD14_Pos) /*!< 0x10000000 */
+#define GPIO_PUPDR_PUPD14_1 (0x2UL << GPIO_PUPDR_PUPD14_Pos) /*!< 0x20000000 */
+#define GPIO_PUPDR_PUPD15_Pos (30U)
+#define GPIO_PUPDR_PUPD15_Msk (0x3UL << GPIO_PUPDR_PUPD15_Pos) /*!< 0xC0000000 */
+#define GPIO_PUPDR_PUPD15 GPIO_PUPDR_PUPD15_Msk
+#define GPIO_PUPDR_PUPD15_0 (0x1UL << GPIO_PUPDR_PUPD15_Pos) /*!< 0x40000000 */
+#define GPIO_PUPDR_PUPD15_1 (0x2UL << GPIO_PUPDR_PUPD15_Pos) /*!< 0x80000000 */
+
+/****************** Bits definition for GPIO_IDR register *******************/
+#define GPIO_IDR_ID0_Pos (0U)
+#define GPIO_IDR_ID0_Msk (0x1UL << GPIO_IDR_ID0_Pos) /*!< 0x00000001 */
+#define GPIO_IDR_ID0 GPIO_IDR_ID0_Msk
+#define GPIO_IDR_ID1_Pos (1U)
+#define GPIO_IDR_ID1_Msk (0x1UL << GPIO_IDR_ID1_Pos) /*!< 0x00000002 */
+#define GPIO_IDR_ID1 GPIO_IDR_ID1_Msk
+#define GPIO_IDR_ID2_Pos (2U)
+#define GPIO_IDR_ID2_Msk (0x1UL << GPIO_IDR_ID2_Pos) /*!< 0x00000004 */
+#define GPIO_IDR_ID2 GPIO_IDR_ID2_Msk
+#define GPIO_IDR_ID3_Pos (3U)
+#define GPIO_IDR_ID3_Msk (0x1UL << GPIO_IDR_ID3_Pos) /*!< 0x00000008 */
+#define GPIO_IDR_ID3 GPIO_IDR_ID3_Msk
+#define GPIO_IDR_ID4_Pos (4U)
+#define GPIO_IDR_ID4_Msk (0x1UL << GPIO_IDR_ID4_Pos) /*!< 0x00000010 */
+#define GPIO_IDR_ID4 GPIO_IDR_ID4_Msk
+#define GPIO_IDR_ID5_Pos (5U)
+#define GPIO_IDR_ID5_Msk (0x1UL << GPIO_IDR_ID5_Pos) /*!< 0x00000020 */
+#define GPIO_IDR_ID5 GPIO_IDR_ID5_Msk
+#define GPIO_IDR_ID6_Pos (6U)
+#define GPIO_IDR_ID6_Msk (0x1UL << GPIO_IDR_ID6_Pos) /*!< 0x00000040 */
+#define GPIO_IDR_ID6 GPIO_IDR_ID6_Msk
+#define GPIO_IDR_ID7_Pos (7U)
+#define GPIO_IDR_ID7_Msk (0x1UL << GPIO_IDR_ID7_Pos) /*!< 0x00000080 */
+#define GPIO_IDR_ID7 GPIO_IDR_ID7_Msk
+#define GPIO_IDR_ID8_Pos (8U)
+#define GPIO_IDR_ID8_Msk (0x1UL << GPIO_IDR_ID8_Pos) /*!< 0x00000100 */
+#define GPIO_IDR_ID8 GPIO_IDR_ID8_Msk
+#define GPIO_IDR_ID9_Pos (9U)
+#define GPIO_IDR_ID9_Msk (0x1UL << GPIO_IDR_ID9_Pos) /*!< 0x00000200 */
+#define GPIO_IDR_ID9 GPIO_IDR_ID9_Msk
+#define GPIO_IDR_ID10_Pos (10U)
+#define GPIO_IDR_ID10_Msk (0x1UL << GPIO_IDR_ID10_Pos) /*!< 0x00000400 */
+#define GPIO_IDR_ID10 GPIO_IDR_ID10_Msk
+#define GPIO_IDR_ID11_Pos (11U)
+#define GPIO_IDR_ID11_Msk (0x1UL << GPIO_IDR_ID11_Pos) /*!< 0x00000800 */
+#define GPIO_IDR_ID11 GPIO_IDR_ID11_Msk
+#define GPIO_IDR_ID12_Pos (12U)
+#define GPIO_IDR_ID12_Msk (0x1UL << GPIO_IDR_ID12_Pos) /*!< 0x00001000 */
+#define GPIO_IDR_ID12 GPIO_IDR_ID12_Msk
+#define GPIO_IDR_ID13_Pos (13U)
+#define GPIO_IDR_ID13_Msk (0x1UL << GPIO_IDR_ID13_Pos) /*!< 0x00002000 */
+#define GPIO_IDR_ID13 GPIO_IDR_ID13_Msk
+#define GPIO_IDR_ID14_Pos (14U)
+#define GPIO_IDR_ID14_Msk (0x1UL << GPIO_IDR_ID14_Pos) /*!< 0x00004000 */
+#define GPIO_IDR_ID14 GPIO_IDR_ID14_Msk
+#define GPIO_IDR_ID15_Pos (15U)
+#define GPIO_IDR_ID15_Msk (0x1UL << GPIO_IDR_ID15_Pos) /*!< 0x00008000 */
+#define GPIO_IDR_ID15 GPIO_IDR_ID15_Msk
+
+/****************** Bits definition for GPIO_ODR register *******************/
+#define GPIO_ODR_OD0_Pos (0U)
+#define GPIO_ODR_OD0_Msk (0x1UL << GPIO_ODR_OD0_Pos) /*!< 0x00000001 */
+#define GPIO_ODR_OD0 GPIO_ODR_OD0_Msk
+#define GPIO_ODR_OD1_Pos (1U)
+#define GPIO_ODR_OD1_Msk (0x1UL << GPIO_ODR_OD1_Pos) /*!< 0x00000002 */
+#define GPIO_ODR_OD1 GPIO_ODR_OD1_Msk
+#define GPIO_ODR_OD2_Pos (2U)
+#define GPIO_ODR_OD2_Msk (0x1UL << GPIO_ODR_OD2_Pos) /*!< 0x00000004 */
+#define GPIO_ODR_OD2 GPIO_ODR_OD2_Msk
+#define GPIO_ODR_OD3_Pos (3U)
+#define GPIO_ODR_OD3_Msk (0x1UL << GPIO_ODR_OD3_Pos) /*!< 0x00000008 */
+#define GPIO_ODR_OD3 GPIO_ODR_OD3_Msk
+#define GPIO_ODR_OD4_Pos (4U)
+#define GPIO_ODR_OD4_Msk (0x1UL << GPIO_ODR_OD4_Pos) /*!< 0x00000010 */
+#define GPIO_ODR_OD4 GPIO_ODR_OD4_Msk
+#define GPIO_ODR_OD5_Pos (5U)
+#define GPIO_ODR_OD5_Msk (0x1UL << GPIO_ODR_OD5_Pos) /*!< 0x00000020 */
+#define GPIO_ODR_OD5 GPIO_ODR_OD5_Msk
+#define GPIO_ODR_OD6_Pos (6U)
+#define GPIO_ODR_OD6_Msk (0x1UL << GPIO_ODR_OD6_Pos) /*!< 0x00000040 */
+#define GPIO_ODR_OD6 GPIO_ODR_OD6_Msk
+#define GPIO_ODR_OD7_Pos (7U)
+#define GPIO_ODR_OD7_Msk (0x1UL << GPIO_ODR_OD7_Pos) /*!< 0x00000080 */
+#define GPIO_ODR_OD7 GPIO_ODR_OD7_Msk
+#define GPIO_ODR_OD8_Pos (8U)
+#define GPIO_ODR_OD8_Msk (0x1UL << GPIO_ODR_OD8_Pos) /*!< 0x00000100 */
+#define GPIO_ODR_OD8 GPIO_ODR_OD8_Msk
+#define GPIO_ODR_OD9_Pos (9U)
+#define GPIO_ODR_OD9_Msk (0x1UL << GPIO_ODR_OD9_Pos) /*!< 0x00000200 */
+#define GPIO_ODR_OD9 GPIO_ODR_OD9_Msk
+#define GPIO_ODR_OD10_Pos (10U)
+#define GPIO_ODR_OD10_Msk (0x1UL << GPIO_ODR_OD10_Pos) /*!< 0x00000400 */
+#define GPIO_ODR_OD10 GPIO_ODR_OD10_Msk
+#define GPIO_ODR_OD11_Pos (11U)
+#define GPIO_ODR_OD11_Msk (0x1UL << GPIO_ODR_OD11_Pos) /*!< 0x00000800 */
+#define GPIO_ODR_OD11 GPIO_ODR_OD11_Msk
+#define GPIO_ODR_OD12_Pos (12U)
+#define GPIO_ODR_OD12_Msk (0x1UL << GPIO_ODR_OD12_Pos) /*!< 0x00001000 */
+#define GPIO_ODR_OD12 GPIO_ODR_OD12_Msk
+#define GPIO_ODR_OD13_Pos (13U)
+#define GPIO_ODR_OD13_Msk (0x1UL << GPIO_ODR_OD13_Pos) /*!< 0x00002000 */
+#define GPIO_ODR_OD13 GPIO_ODR_OD13_Msk
+#define GPIO_ODR_OD14_Pos (14U)
+#define GPIO_ODR_OD14_Msk (0x1UL << GPIO_ODR_OD14_Pos) /*!< 0x00004000 */
+#define GPIO_ODR_OD14 GPIO_ODR_OD14_Msk
+#define GPIO_ODR_OD15_Pos (15U)
+#define GPIO_ODR_OD15_Msk (0x1UL << GPIO_ODR_OD15_Pos) /*!< 0x00008000 */
+#define GPIO_ODR_OD15 GPIO_ODR_OD15_Msk
+
+/****************** Bits 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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+
+/****************** 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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+
+/****************** Bit definition for GPIO_AFRL register *********************/
+#define GPIO_AFRL_AFSEL0_Pos (0U)
+#define GPIO_AFRL_AFSEL0_Msk (0xFUL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x0000000F */
+#define GPIO_AFRL_AFSEL0 GPIO_AFRL_AFSEL0_Msk
+#define GPIO_AFRL_AFSEL0_0 (0x1UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000001 */
+#define GPIO_AFRL_AFSEL0_1 (0x2UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000002 */
+#define GPIO_AFRL_AFSEL0_2 (0x4UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000004 */
+#define GPIO_AFRL_AFSEL0_3 (0x8UL << GPIO_AFRL_AFSEL0_Pos) /*!< 0x00000008 */
+#define GPIO_AFRL_AFSEL1_Pos (4U)
+#define GPIO_AFRL_AFSEL1_Msk (0xFUL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x000000F0 */
+#define GPIO_AFRL_AFSEL1 GPIO_AFRL_AFSEL1_Msk
+#define GPIO_AFRL_AFSEL1_0 (0x1UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000010 */
+#define GPIO_AFRL_AFSEL1_1 (0x2UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000020 */
+#define GPIO_AFRL_AFSEL1_2 (0x4UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000040 */
+#define GPIO_AFRL_AFSEL1_3 (0x8UL << GPIO_AFRL_AFSEL1_Pos) /*!< 0x00000080 */
+#define GPIO_AFRL_AFSEL2_Pos (8U)
+#define GPIO_AFRL_AFSEL2_Msk (0xFUL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000F00 */
+#define GPIO_AFRL_AFSEL2 GPIO_AFRL_AFSEL2_Msk
+#define GPIO_AFRL_AFSEL2_0 (0x1UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000100 */
+#define GPIO_AFRL_AFSEL2_1 (0x2UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000200 */
+#define GPIO_AFRL_AFSEL2_2 (0x4UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000400 */
+#define GPIO_AFRL_AFSEL2_3 (0x8UL << GPIO_AFRL_AFSEL2_Pos) /*!< 0x00000800 */
+#define GPIO_AFRL_AFSEL3_Pos (12U)
+#define GPIO_AFRL_AFSEL3_Msk (0xFUL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x0000F000 */
+#define GPIO_AFRL_AFSEL3 GPIO_AFRL_AFSEL3_Msk
+#define GPIO_AFRL_AFSEL3_0 (0x1UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00001000 */
+#define GPIO_AFRL_AFSEL3_1 (0x2UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00002000 */
+#define GPIO_AFRL_AFSEL3_2 (0x4UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00004000 */
+#define GPIO_AFRL_AFSEL3_3 (0x8UL << GPIO_AFRL_AFSEL3_Pos) /*!< 0x00008000 */
+#define GPIO_AFRL_AFSEL4_Pos (16U)
+#define GPIO_AFRL_AFSEL4_Msk (0xFUL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x000F0000 */
+#define GPIO_AFRL_AFSEL4 GPIO_AFRL_AFSEL4_Msk
+#define GPIO_AFRL_AFSEL4_0 (0x1UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00010000 */
+#define GPIO_AFRL_AFSEL4_1 (0x2UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00020000 */
+#define GPIO_AFRL_AFSEL4_2 (0x4UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00040000 */
+#define GPIO_AFRL_AFSEL4_3 (0x8UL << GPIO_AFRL_AFSEL4_Pos) /*!< 0x00080000 */
+#define GPIO_AFRL_AFSEL5_Pos (20U)
+#define GPIO_AFRL_AFSEL5_Msk (0xFUL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00F00000 */
+#define GPIO_AFRL_AFSEL5 GPIO_AFRL_AFSEL5_Msk
+#define GPIO_AFRL_AFSEL5_0 (0x1UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00100000 */
+#define GPIO_AFRL_AFSEL5_1 (0x2UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00200000 */
+#define GPIO_AFRL_AFSEL5_2 (0x4UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00400000 */
+#define GPIO_AFRL_AFSEL5_3 (0x8UL << GPIO_AFRL_AFSEL5_Pos) /*!< 0x00800000 */
+#define GPIO_AFRL_AFSEL6_Pos (24U)
+#define GPIO_AFRL_AFSEL6_Msk (0xFUL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x0F000000 */
+#define GPIO_AFRL_AFSEL6 GPIO_AFRL_AFSEL6_Msk
+#define GPIO_AFRL_AFSEL6_0 (0x1UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x01000000 */
+#define GPIO_AFRL_AFSEL6_1 (0x2UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x02000000 */
+#define GPIO_AFRL_AFSEL6_2 (0x4UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x04000000 */
+#define GPIO_AFRL_AFSEL6_3 (0x8UL << GPIO_AFRL_AFSEL6_Pos) /*!< 0x08000000 */
+#define GPIO_AFRL_AFSEL7_Pos (28U)
+#define GPIO_AFRL_AFSEL7_Msk (0xFUL << GPIO_AFRL_AFSEL7_Pos) /*!< 0xF0000000 */
+#define GPIO_AFRL_AFSEL7 GPIO_AFRL_AFSEL7_Msk
+#define GPIO_AFRL_AFSEL7_0 (0x1UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x10000000 */
+#define GPIO_AFRL_AFSEL7_1 (0x2UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x20000000 */
+#define GPIO_AFRL_AFSEL7_2 (0x4UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x40000000 */
+#define GPIO_AFRL_AFSEL7_3 (0x8UL << GPIO_AFRL_AFSEL7_Pos) /*!< 0x80000000 */
+
+/****************** Bit definition for GPIO_AFRH register *********************/
+#define GPIO_AFRH_AFSEL8_Pos (0U)
+#define GPIO_AFRH_AFSEL8_Msk (0xFUL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x0000000F */
+#define GPIO_AFRH_AFSEL8 GPIO_AFRH_AFSEL8_Msk
+#define GPIO_AFRH_AFSEL8_0 (0x1UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000001 */
+#define GPIO_AFRH_AFSEL8_1 (0x2UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000002 */
+#define GPIO_AFRH_AFSEL8_2 (0x4UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000004 */
+#define GPIO_AFRH_AFSEL8_3 (0x8UL << GPIO_AFRH_AFSEL8_Pos) /*!< 0x00000008 */
+#define GPIO_AFRH_AFSEL9_Pos (4U)
+#define GPIO_AFRH_AFSEL9_Msk (0xFUL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x000000F0 */
+#define GPIO_AFRH_AFSEL9 GPIO_AFRH_AFSEL9_Msk
+#define GPIO_AFRH_AFSEL9_0 (0x1UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000010 */
+#define GPIO_AFRH_AFSEL9_1 (0x2UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000020 */
+#define GPIO_AFRH_AFSEL9_2 (0x4UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000040 */
+#define GPIO_AFRH_AFSEL9_3 (0x8UL << GPIO_AFRH_AFSEL9_Pos) /*!< 0x00000080 */
+#define GPIO_AFRH_AFSEL10_Pos (8U)
+#define GPIO_AFRH_AFSEL10_Msk (0xFUL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000F00 */
+#define GPIO_AFRH_AFSEL10 GPIO_AFRH_AFSEL10_Msk
+#define GPIO_AFRH_AFSEL10_0 (0x1UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000100 */
+#define GPIO_AFRH_AFSEL10_1 (0x2UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000200 */
+#define GPIO_AFRH_AFSEL10_2 (0x4UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000400 */
+#define GPIO_AFRH_AFSEL10_3 (0x8UL << GPIO_AFRH_AFSEL10_Pos) /*!< 0x00000800 */
+#define GPIO_AFRH_AFSEL11_Pos (12U)
+#define GPIO_AFRH_AFSEL11_Msk (0xFUL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x0000F000 */
+#define GPIO_AFRH_AFSEL11 GPIO_AFRH_AFSEL11_Msk
+#define GPIO_AFRH_AFSEL11_0 (0x1UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00001000 */
+#define GPIO_AFRH_AFSEL11_1 (0x2UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00002000 */
+#define GPIO_AFRH_AFSEL11_2 (0x4UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00004000 */
+#define GPIO_AFRH_AFSEL11_3 (0x8UL << GPIO_AFRH_AFSEL11_Pos) /*!< 0x00008000 */
+#define GPIO_AFRH_AFSEL12_Pos (16U)
+#define GPIO_AFRH_AFSEL12_Msk (0xFUL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x000F0000 */
+#define GPIO_AFRH_AFSEL12 GPIO_AFRH_AFSEL12_Msk
+#define GPIO_AFRH_AFSEL12_0 (0x1UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00010000 */
+#define GPIO_AFRH_AFSEL12_1 (0x2UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00020000 */
+#define GPIO_AFRH_AFSEL12_2 (0x4UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00040000 */
+#define GPIO_AFRH_AFSEL12_3 (0x8UL << GPIO_AFRH_AFSEL12_Pos) /*!< 0x00080000 */
+#define GPIO_AFRH_AFSEL13_Pos (20U)
+#define GPIO_AFRH_AFSEL13_Msk (0xFUL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00F00000 */
+#define GPIO_AFRH_AFSEL13 GPIO_AFRH_AFSEL13_Msk
+#define GPIO_AFRH_AFSEL13_0 (0x1UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00100000 */
+#define GPIO_AFRH_AFSEL13_1 (0x2UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00200000 */
+#define GPIO_AFRH_AFSEL13_2 (0x4UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00400000 */
+#define GPIO_AFRH_AFSEL13_3 (0x8UL << GPIO_AFRH_AFSEL13_Pos) /*!< 0x00800000 */
+#define GPIO_AFRH_AFSEL14_Pos (24U)
+#define GPIO_AFRH_AFSEL14_Msk (0xFUL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x0F000000 */
+#define GPIO_AFRH_AFSEL14 GPIO_AFRH_AFSEL14_Msk
+#define GPIO_AFRH_AFSEL14_0 (0x1UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x01000000 */
+#define GPIO_AFRH_AFSEL14_1 (0x2UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x02000000 */
+#define GPIO_AFRH_AFSEL14_2 (0x4UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x04000000 */
+#define GPIO_AFRH_AFSEL14_3 (0x8UL << GPIO_AFRH_AFSEL14_Pos) /*!< 0x08000000 */
+#define GPIO_AFRH_AFSEL15_Pos (28U)
+#define GPIO_AFRH_AFSEL15_Msk (0xFUL << GPIO_AFRH_AFSEL15_Pos) /*!< 0xF0000000 */
+#define GPIO_AFRH_AFSEL15 GPIO_AFRH_AFSEL15_Msk
+#define GPIO_AFRH_AFSEL15_0 (0x1UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x10000000 */
+#define GPIO_AFRH_AFSEL15_1 (0x2UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x20000000 */
+#define GPIO_AFRH_AFSEL15_2 (0x4UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x40000000 */
+#define GPIO_AFRH_AFSEL15_3 (0x8UL << GPIO_AFRH_AFSEL15_Pos) /*!< 0x80000000 */
+
+/****************** Bits 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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+#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
+
+/****************** Bits definition for GPIO_HSLVR register ******************/
+#define GPIO_HSLVR_HSLV0_Pos (0U)
+#define GPIO_HSLVR_HSLV0_Msk (0x1UL << GPIO_HSLVR_HSLV0_Pos) /*!< 0x00000001 */
+#define GPIO_HSLVR_HSLV0 GPIO_HSLVR_HSLV0_Msk
+#define GPIO_HSLVR_HSLV1_Pos (1U)
+#define GPIO_HSLVR_HSLV1_Msk (0x1UL << GPIO_HSLVR_HSLV1_Pos) /*!< 0x00000002 */
+#define GPIO_HSLVR_HSLV1 GPIO_HSLVR_HSLV1_Msk
+#define GPIO_HSLVR_HSLV2_Pos (2U)
+#define GPIO_HSLVR_HSLV2_Msk (0x1UL << GPIO_HSLVR_HSLV2_Pos) /*!< 0x00000004 */
+#define GPIO_HSLVR_HSLV2 GPIO_HSLVR_HSLV2_Msk
+#define GPIO_HSLVR_HSLV3_Pos (3U)
+#define GPIO_HSLVR_HSLV3_Msk (0x1UL << GPIO_HSLVR_HSLV3_Pos) /*!< 0x00000008 */
+#define GPIO_HSLVR_HSLV3 GPIO_HSLVR_HSLV3_Msk
+#define GPIO_HSLVR_HSLV4_Pos (4U)
+#define GPIO_HSLVR_HSLV4_Msk (0x1UL << GPIO_HSLVR_HSLV4_Pos) /*!< 0x00000010 */
+#define GPIO_HSLVR_HSLV4 GPIO_HSLVR_HSLV4_Msk
+#define GPIO_HSLVR_HSLV5_Pos (5U)
+#define GPIO_HSLVR_HSLV5_Msk (0x1UL << GPIO_HSLVR_HSLV5_Pos) /*!< 0x00000020 */
+#define GPIO_HSLVR_HSLV5 GPIO_HSLVR_HSLV5_Msk
+#define GPIO_HSLVR_HSLV6_Pos (6U)
+#define GPIO_HSLVR_HSLV6_Msk (0x1UL << GPIO_HSLVR_HSLV6_Pos) /*!< 0x00000040 */
+#define GPIO_HSLVR_HSLV6 GPIO_HSLVR_HSLV6_Msk
+#define GPIO_HSLVR_HSLV7_Pos (7U)
+#define GPIO_HSLVR_HSLV7_Msk (0x1UL << GPIO_HSLVR_HSLV7_Pos) /*!< 0x00000080 */
+#define GPIO_HSLVR_HSLV7 GPIO_HSLVR_HSLV7_Msk
+#define GPIO_HSLVR_HSLV8_Pos (8U)
+#define GPIO_HSLVR_HSLV8_Msk (0x1UL << GPIO_HSLVR_HSLV8_Pos) /*!< 0x00000100 */
+#define GPIO_HSLVR_HSLV8 GPIO_HSLVR_HSLV8_Msk
+#define GPIO_HSLVR_HSLV9_Pos (9U)
+#define GPIO_HSLVR_HSLV9_Msk (0x1UL << GPIO_HSLVR_HSLV9_Pos) /*!< 0x00000200 */
+#define GPIO_HSLVR_HSLV9 GPIO_HSLVR_HSLV9_Msk
+#define GPIO_HSLVR_HSLV10_Pos (10U)
+#define GPIO_HSLVR_HSLV10_Msk (0x1UL << GPIO_HSLVR_HSLV10_Pos) /*!< 0x00000400 */
+#define GPIO_HSLVR_HSLV10 GPIO_HSLVR_HSLV10_Msk
+#define GPIO_HSLVR_HSLV11_Pos (11U)
+#define GPIO_HSLVR_HSLV11_Msk (x1UL << GPIO_HSLVR_HSLV11_Pos) /*!< 0x00000800 */
+#define GPIO_HSLVR_HSLV11 GPIO_HSLVR_HSLV11_Msk
+#define GPIO_HSLVR_HSLV12_Pos (12U)
+#define GPIO_HSLVR_HSLV12_Msk (0x1UL << GPIO_HSLVR_HSLV12_Pos) /*!< 0x00001000 */
+#define GPIO_HSLVR_HSLV12 GPIO_HSLVR_HSLV12_Msk
+#define GPIO_HSLVR_HSLV13_Pos (13U)
+#define GPIO_HSLVR_HSLV13_Msk (0x1UL << GPIO_HSLVR_HSLV13_Pos) /*!< 0x00002000 */
+#define GPIO_HSLVR_HSLV13 GPIO_HSLVR_HSLV13_Msk
+#define GPIO_HSLVR_HSLV14_Pos (14U)
+#define GPIO_HSLVR_HSLV14_Msk (0x1UL << GPIO_HSLVR_HSLV14_Pos) /*!< 0x00004000 */
+#define GPIO_HSLVR_HSLV14 GPIO_HSLVR_HSLV14_Msk
+#define GPIO_HSLVR_HSLV15_Pos (15U)
+#define GPIO_HSLVR_HSLV15_Msk (0x1UL << GPIO_HSLVR_HSLV15_Pos) /*!< 0x00008000 */
+#define GPIO_HSLVR_HSLV15 GPIO_HSLVR_HSLV15_Msk
+
+/****************** Bits definition for GPIO_SECCFGR register ******************/
+#define GPIO_SECCFGR_SEC0_Pos (0U)
+#define GPIO_SECCFGR_SEC0_Msk (0x1UL << GPIO_SECCFGR_SEC0_Pos) /*!< 0x00000001 */
+#define GPIO_SECCFGR_SEC0 GPIO_SECCFGR_SEC0_Msk
+#define GPIO_SECCFGR_SEC1_Pos (1U)
+#define GPIO_SECCFGR_SEC1_Msk (0x1UL << GPIO_SECCFGR_SEC1_Pos) /*!< 0x00000002 */
+#define GPIO_SECCFGR_SEC1 GPIO_SECCFGR_SEC1_Msk
+#define GPIO_SECCFGR_SEC2_Pos (2U)
+#define GPIO_SECCFGR_SEC2_Msk (0x1UL << GPIO_SECCFGR_SEC2_Pos) /*!< 0x00000004 */
+#define GPIO_SECCFGR_SEC2 GPIO_SECCFGR_SEC2_Msk
+#define GPIO_SECCFGR_SEC3_Pos (3U)
+#define GPIO_SECCFGR_SEC3_Msk (0x1UL << GPIO_SECCFGR_SEC3_Pos) /*!< 0x00000008 */
+#define GPIO_SECCFGR_SEC3 GPIO_SECCFGR_SEC3_Msk
+#define GPIO_SECCFGR_SEC4_Pos (4U)
+#define GPIO_SECCFGR_SEC4_Msk (0x1UL << GPIO_SECCFGR_SEC4_Pos) /*!< 0x00000010 */
+#define GPIO_SECCFGR_SEC4 GPIO_SECCFGR_SEC4_Msk
+#define GPIO_SECCFGR_SEC5_Pos (5U)
+#define GPIO_SECCFGR_SEC5_Msk (0x1UL << GPIO_SECCFGR_SEC5_Pos) /*!< 0x00000020 */
+#define GPIO_SECCFGR_SEC5 GPIO_SECCFGR_SEC5_Msk
+#define GPIO_SECCFGR_SEC6_Pos (6U)
+#define GPIO_SECCFGR_SEC6_Msk (0x1UL << GPIO_SECCFGR_SEC6_Pos) /*!< 0x00000040 */
+#define GPIO_SECCFGR_SEC6 GPIO_SECCFGR_SEC6_Msk
+#define GPIO_SECCFGR_SEC7_Pos (7U)
+#define GPIO_SECCFGR_SEC7_Msk (0x1UL << GPIO_SECCFGR_SEC7_Pos) /*!< 0x00000080 */
+#define GPIO_SECCFGR_SEC7 GPIO_SECCFGR_SEC7_Msk
+#define GPIO_SECCFGR_SEC8_Pos (8U)
+#define GPIO_SECCFGR_SEC8_Msk (0x1UL << GPIO_SECCFGR_SEC8_Pos) /*!< 0x00000100 */
+#define GPIO_SECCFGR_SEC8 GPIO_SECCFGR_SEC8_Msk
+#define GPIO_SECCFGR_SEC9_Pos (9U)
+#define GPIO_SECCFGR_SEC9_Msk (0x1UL << GPIO_SECCFGR_SEC9_Pos) /*!< 0x00000200 */
+#define GPIO_SECCFGR_SEC9 GPIO_SECCFGR_SEC9_Msk
+#define GPIO_SECCFGR_SEC10_Pos (10U)
+#define GPIO_SECCFGR_SEC10_Msk (0x1UL << GPIO_SECCFGR_SEC10_Pos) /*!< 0x00000400 */
+#define GPIO_SECCFGR_SEC10 GPIO_SECCFGR_SEC10_Msk
+#define GPIO_SECCFGR_SEC11_Pos (11U)
+#define GPIO_SECCFGR_SEC11_Msk (x1UL << GPIO_SECCFGR_SEC11_Pos) /*!< 0x00000800 */
+#define GPIO_SECCFGR_SEC11 GPIO_SECCFGR_SEC11_Msk
+#define GPIO_SECCFGR_SEC12_Pos (12U)
+#define GPIO_SECCFGR_SEC12_Msk (0x1UL << GPIO_SECCFGR_SEC12_Pos) /*!< 0x00001000 */
+#define GPIO_SECCFGR_SEC12 GPIO_SECCFGR_SEC12_Msk
+#define GPIO_SECCFGR_SEC13_Pos (13U)
+#define GPIO_SECCFGR_SEC13_Msk (0x1UL << GPIO_SECCFGR_SEC13_Pos) /*!< 0x00002000 */
+#define GPIO_SECCFGR_SEC13 GPIO_SECCFGR_SEC13_Msk
+#define GPIO_SECCFGR_SEC14_Pos (14U)
+#define GPIO_SECCFGR_SEC14_Msk (0x1UL << GPIO_SECCFGR_SEC14_Pos) /*!< 0x00004000 */
+#define GPIO_SECCFGR_SEC14 GPIO_SECCFGR_SEC14_Msk
+#define GPIO_SECCFGR_SEC15_Pos (15U)
+#define GPIO_SECCFGR_SEC15_Msk (0x1UL << GPIO_SECCFGR_SEC15_Pos) /*!< 0x00008000 */
+#define GPIO_SECCFGR_SEC15 GPIO_SECCFGR_SEC15_Msk
+
+/******************************************************************************/
+/* */
+/* ICACHE */
+/* */
+/******************************************************************************/
+/****************** Bit definition for ICACHE_CR register *******************/
+#define ICACHE_CR_EN_Pos (0U)
+#define ICACHE_CR_EN_Msk (0x1UL << ICACHE_CR_EN_Pos) /*!< 0x00000001 */
+#define ICACHE_CR_EN ICACHE_CR_EN_Msk /*!< Enable */
+#define ICACHE_CR_CACHEINV_Pos (1U)
+#define ICACHE_CR_CACHEINV_Msk (0x1UL << ICACHE_CR_CACHEINV_Pos) /*!< 0x00000002 */
+#define ICACHE_CR_CACHEINV ICACHE_CR_CACHEINV_Msk /*!< Cache invalidation */
+#define ICACHE_CR_WAYSEL_Pos (2U)
+#define ICACHE_CR_WAYSEL_Msk (0x1UL << ICACHE_CR_WAYSEL_Pos) /*!< 0x00000004 */
+#define ICACHE_CR_WAYSEL ICACHE_CR_WAYSEL_Msk /*!< Ways selection */
+#define ICACHE_CR_HITMEN_Pos (16U)
+#define ICACHE_CR_HITMEN_Msk (0x1UL << ICACHE_CR_HITMEN_Pos) /*!< 0x00010000 */
+#define ICACHE_CR_HITMEN ICACHE_CR_HITMEN_Msk /*!< Hit monitor enable */
+#define ICACHE_CR_MISSMEN_Pos (17U)
+#define ICACHE_CR_MISSMEN_Msk (0x1UL << ICACHE_CR_MISSMEN_Pos) /*!< 0x00020000 */
+#define ICACHE_CR_MISSMEN ICACHE_CR_MISSMEN_Msk /*!< Miss monitor enable */
+#define ICACHE_CR_HITMRST_Pos (18U)
+#define ICACHE_CR_HITMRST_Msk (0x1UL << ICACHE_CR_HITMRST_Pos) /*!< 0x00040000 */
+#define ICACHE_CR_HITMRST ICACHE_CR_HITMRST_Msk /*!< Hit monitor reset */
+#define ICACHE_CR_MISSMRST_Pos (19U)
+#define ICACHE_CR_MISSMRST_Msk (0x1UL << ICACHE_CR_MISSMRST_Pos) /*!< 0x00080000 */
+#define ICACHE_CR_MISSMRST ICACHE_CR_MISSMRST_Msk /*!< Miss monitor reset */
+
+/****************** Bit definition for ICACHE_SR register *******************/
+#define ICACHE_SR_BUSYF_Pos (0U)
+#define ICACHE_SR_BUSYF_Msk (0x1UL << ICACHE_SR_BUSYF_Pos) /*!< 0x00000001 */
+#define ICACHE_SR_BUSYF ICACHE_SR_BUSYF_Msk /*!< Busy flag */
+#define ICACHE_SR_BSYENDF_Pos (1U)
+#define ICACHE_SR_BSYENDF_Msk (0x1UL << ICACHE_SR_BSYENDF_Pos) /*!< 0x00000002 */
+#define ICACHE_SR_BSYENDF ICACHE_SR_BSYENDF_Msk /*!< Busy end flag */
+#define ICACHE_SR_ERRF_Pos (2U)
+#define ICACHE_SR_ERRF_Msk (0x1UL << ICACHE_SR_ERRF_Pos) /*!< 0x00000004 */
+#define ICACHE_SR_ERRF ICACHE_SR_ERRF_Msk /*!< Cache error flag */
+
+/****************** Bit definition for ICACHE_IER register ******************/
+#define ICACHE_IER_BSYENDIE_Pos (1U)
+#define ICACHE_IER_BSYENDIE_Msk (0x1UL << ICACHE_IER_BSYENDIE_Pos) /*!< 0x00000002 */
+#define ICACHE_IER_BSYENDIE ICACHE_IER_BSYENDIE_Msk /*!< Busy end interrupt enable */
+#define ICACHE_IER_ERRIE_Pos (2U)
+#define ICACHE_IER_ERRIE_Msk (0x1UL << ICACHE_IER_ERRIE_Pos) /*!< 0x00000004 */
+#define ICACHE_IER_ERRIE ICACHE_IER_ERRIE_Msk /*!< Cache error interrupt enable */
+
+/****************** Bit definition for ICACHE_FCR register ******************/
+#define ICACHE_FCR_CBSYENDF_Pos (1U)
+#define ICACHE_FCR_CBSYENDF_Msk (0x1UL << ICACHE_FCR_CBSYENDF_Pos) /*!< 0x00000002 */
+#define ICACHE_FCR_CBSYENDF ICACHE_FCR_CBSYENDF_Msk /*!< Busy end flag clear */
+#define ICACHE_FCR_CERRF_Pos (2U)
+#define ICACHE_FCR_CERRF_Msk (0x1UL << ICACHE_FCR_CERRF_Pos) /*!< 0x00000004 */
+#define ICACHE_FCR_CERRF ICACHE_FCR_CERRF_Msk /*!< Cache error flag clear */
+
+/****************** Bit definition for ICACHE_HMONR register ****************/
+#define ICACHE_HMONR_HITMON_Pos (0U)
+#define ICACHE_HMONR_HITMON_Msk (0xFFFFFFFFUL << ICACHE_HMONR_HITMON_Pos) /*!< 0xFFFFFFFF */
+#define ICACHE_HMONR_HITMON ICACHE_HMONR_HITMON_Msk /*!< Cache hit monitor register */
+
+/****************** Bit definition for ICACHE_MMONR register ****************/
+#define ICACHE_MMONR_MISSMON_Pos (0U)
+#define ICACHE_MMONR_MISSMON_Msk (0xFFFFUL << ICACHE_MMONR_MISSMON_Pos) /*!< 0x0000FFFF */
+#define ICACHE_MMONR_MISSMON ICACHE_MMONR_MISSMON_Msk /*!< Cache miss monitor register */
+
+
+/******************************************************************************/
+/* */
+/* Digital Temperature Sensor (DTS) */
+/* */
+/******************************************************************************/
+
+/****************** Bit definition for DTS_CFGR1 register ******************/
+#define DTS_CFGR1_TS1_EN_Pos (0U)
+#define DTS_CFGR1_TS1_EN_Msk (0x1UL << DTS_CFGR1_TS1_EN_Pos) /*!< 0x00000001 */
+#define DTS_CFGR1_TS1_EN DTS_CFGR1_TS1_EN_Msk /*!< DTS Enable */
+#define DTS_CFGR1_TS1_START_Pos (4U)
+#define DTS_CFGR1_TS1_START_Msk (0x1UL << DTS_CFGR1_TS1_START_Pos) /*!< 0x00000010 */
+#define DTS_CFGR1_TS1_START DTS_CFGR1_TS1_START_Msk /*!< Proceed to a frequency measurement on DTS */
+#define DTS_CFGR1_TS1_INTRIG_SEL_Pos (8U)
+#define DTS_CFGR1_TS1_INTRIG_SEL_Msk (0xFUL << DTS_CFGR1_TS1_INTRIG_SEL_Pos) /*!< 0x00000F00 */
+#define DTS_CFGR1_TS1_INTRIG_SEL DTS_CFGR1_TS1_INTRIG_SEL_Msk /*!< Input triggers selection bits [3:0] for DTS */
+#define DTS_CFGR1_TS1_INTRIG_SEL_0 (0x1UL << DTS_CFGR1_TS1_INTRIG_SEL_Pos) /*!< 0x00000100 */
+#define DTS_CFGR1_TS1_INTRIG_SEL_1 (0x2UL << DTS_CFGR1_TS1_INTRIG_SEL_Pos) /*!< 0x00000200 */
+#define DTS_CFGR1_TS1_INTRIG_SEL_2 (0x4UL << DTS_CFGR1_TS1_INTRIG_SEL_Pos) /*!< 0x00000400 */
+#define DTS_CFGR1_TS1_INTRIG_SEL_3 (0x8UL << DTS_CFGR1_TS1_INTRIG_SEL_Pos) /*!< 0x00000800 */
+#define DTS_CFGR1_TS1_SMP_TIME_Pos (16U)
+#define DTS_CFGR1_TS1_SMP_TIME_Msk (0xFUL << DTS_CFGR1_TS1_SMP_TIME_Pos) /*!< 0x000F0000 */
+#define DTS_CFGR1_TS1_SMP_TIME DTS_CFGR1_TS1_SMP_TIME_Msk /*!< Sample time [3:0] for DTS */
+#define DTS_CFGR1_TS1_SMP_TIME_0 (0x1UL << DTS_CFGR1_TS1_SMP_TIME_Pos) /*!< 0x00010000 */
+#define DTS_CFGR1_TS1_SMP_TIME_1 (0x2UL << DTS_CFGR1_TS1_SMP_TIME_Pos) /*!< 0x00020000 */
+#define DTS_CFGR1_TS1_SMP_TIME_2 (0x4UL << DTS_CFGR1_TS1_SMP_TIME_Pos) /*!< 0x00040000 */
+#define DTS_CFGR1_TS1_SMP_TIME_3 (0x8UL << DTS_CFGR1_TS1_SMP_TIME_Pos) /*!< 0x00080000 */
+#define DTS_CFGR1_REFCLK_SEL_Pos (20U)
+#define DTS_CFGR1_REFCLK_SEL_Msk (0x1UL << DTS_CFGR1_REFCLK_SEL_Pos) /*!< 0x00100000 */
+#define DTS_CFGR1_REFCLK_SEL DTS_CFGR1_REFCLK_SEL_Msk /*!< Reference Clock Selection */
+#define DTS_CFGR1_Q_MEAS_OPT_Pos (21U)
+#define DTS_CFGR1_Q_MEAS_OPT_Msk (0x1UL << DTS_CFGR1_Q_MEAS_OPT_Pos) /*!< 0x00200000 */
+#define DTS_CFGR1_Q_MEAS_OPT DTS_CFGR1_Q_MEAS_OPT_Msk /*!< Quick measure option bit */
+#define DTS_CFGR1_HSREF_CLK_DIV_Pos (24U)
+#define DTS_CFGR1_HSREF_CLK_DIV_Msk (0x7FUL << DTS_CFGR1_HSREF_CLK_DIV_Pos) /*!< 0x7F000000 */
+#define DTS_CFGR1_HSREF_CLK_DIV DTS_CFGR1_HSREF_CLK_DIV_Msk /*!< High Speed Clock Divider Ratio [6:0]*/
+
+/****************** Bit definition for DTS_T0VALR1 register ******************/
+#define DTS_T0VALR1_TS1_FMT0_Pos (0U)
+#define DTS_T0VALR1_TS1_FMT0_Msk (0xFFFFUL << DTS_T0VALR1_TS1_FMT0_Pos) /*!< 0x0000FFFF */
+#define DTS_T0VALR1_TS1_FMT0 DTS_T0VALR1_TS1_FMT0_Msk /*!< Engineering value of the measured frequency at T0 for DTS */
+#define DTS_T0VALR1_TS1_T0_Pos (16U)
+#define DTS_T0VALR1_TS1_T0_Msk (0x3UL << DTS_T0VALR1_TS1_T0_Pos) /*!< 0x00030000 */
+#define DTS_T0VALR1_TS1_T0 DTS_T0VALR1_TS1_T0_Msk /*!< Engineering value of the DTSerature T0 for DTS */
+
+/****************** Bit definition for DTS_RAMPVALR register ******************/
+#define DTS_RAMPVALR_TS1_RAMP_COEFF_Pos (0U)
+#define DTS_RAMPVALR_TS1_RAMP_COEFF_Msk (0xFFFFUL << DTS_RAMPVALR_TS1_RAMP_COEFF_Pos) /*!< 0x0000FFFF */
+#define DTS_RAMPVALR_TS1_RAMP_COEFF DTS_RAMPVALR_TS1_RAMP_COEFF_Msk /*!< Engineering value of the ramp coefficient for DTS */
+
+/****************** Bit definition for DTS_ITR1 register ******************/
+#define DTS_ITR1_TS1_LITTHD_Pos (0U)
+#define DTS_ITR1_TS1_LITTHD_Msk (0xFFFFUL << DTS_ITR1_TS1_LITTHD_Pos) /*!< 0x0000FFFF */
+#define DTS_ITR1_TS1_LITTHD DTS_ITR1_TS1_LITTHD_Msk /*!< Low interrupt threshold[15:0] for DTS */
+#define DTS_ITR1_TS1_HITTHD_Pos (16U)
+#define DTS_ITR1_TS1_HITTHD_Msk (0xFFFFUL << DTS_ITR1_TS1_HITTHD_Pos) /*!< 0xFFFF0000 */
+#define DTS_ITR1_TS1_HITTHD DTS_ITR1_TS1_HITTHD_Msk /*!< High interrupt threshold[15:0] for DTS */
+
+/****************** Bit definition for DTS_DR register ******************/
+#define DTS_DR_TS1_MFREQ_Pos (0U)
+#define DTS_DR_TS1_MFREQ_Msk (0xFFFFUL << DTS_DR_TS1_MFREQ_Pos) /*!< 0x0000FFFF */
+#define DTS_DR_TS1_MFREQ DTS_DR_TS1_MFREQ_Msk /*!< Measured Frequency[15:0] for DTS */
+
+/****************** Bit definition for DTS_SR register ******************/
+#define DTS_SR_TS1_ITEF_Pos (0U)
+#define DTS_SR_TS1_ITEF_Msk (0x1UL << DTS_SR_TS1_ITEF_Pos) /*!< 0x00000001 */
+#define DTS_SR_TS1_ITEF DTS_SR_TS1_ITEF_Msk /*!< Interrupt flag for end of measure for DTS */
+#define DTS_SR_TS1_ITLF_Pos (1U)
+#define DTS_SR_TS1_ITLF_Msk (0x1UL << DTS_SR_TS1_ITLF_Pos) /*!< 0x00000002 */
+#define DTS_SR_TS1_ITLF DTS_SR_TS1_ITLF_Msk /*!< Interrupt flag for low threshold for DTS */
+#define DTS_SR_TS1_ITHF_Pos (2U)
+#define DTS_SR_TS1_ITHF_Msk (0x1UL << DTS_SR_TS1_ITHF_Pos) /*!< 0x00000004 */
+#define DTS_SR_TS1_ITHF DTS_SR_TS1_ITHF_Msk /*!< Interrupt flag for high threshold for DTS */
+#define DTS_SR_TS1_AITEF_Pos (4U)
+#define DTS_SR_TS1_AITEF_Msk (0x1UL << DTS_SR_TS1_AITEF_Pos) /*!< 0x00000010 */
+#define DTS_SR_TS1_AITEF DTS_SR_TS1_AITEF_Msk /*!< Asynchronous interrupt flag for end of measure for DTS */
+#define DTS_SR_TS1_AITLF_Pos (5U)
+#define DTS_SR_TS1_AITLF_Msk (0x1UL << DTS_SR_TS1_AITLF_Pos) /*!< 0x00000020 */
+#define DTS_SR_TS1_AITLF DTS_SR_TS1_AITLF_Msk /*!< Asynchronous interrupt flag for low threshold for DTS */
+#define DTS_SR_TS1_AITHF_Pos (6U)
+#define DTS_SR_TS1_AITHF_Msk (0x1UL << DTS_SR_TS1_AITHF_Pos) /*!< 0x00000040 */
+#define DTS_SR_TS1_AITHF DTS_SR_TS1_AITHF_Msk /*!< Asynchronous interrupt flag for high threshold for DTS */
+#define DTS_SR_TS1_RDY_Pos (15U)
+#define DTS_SR_TS1_RDY_Msk (0x1UL << DTS_SR_TS1_RDY_Pos) /*!< 0x00008000 */
+#define DTS_SR_TS1_RDY DTS_SR_TS1_RDY_Msk /*!< DTS ready flag */
+
+/****************** Bit definition for DTS_ITENR register ******************/
+#define DTS_ITENR_TS1_ITEEN_Pos (0U)
+#define DTS_ITENR_TS1_ITEEN_Msk (0x1UL << DTS_ITENR_TS1_ITEEN_Pos) /*!< 0x00000001 */
+#define DTS_ITENR_TS1_ITEEN DTS_ITENR_TS1_ITEEN_Msk /*!< Enable interrupt flag for end of measure for DTS */
+#define DTS_ITENR_TS1_ITLEN_Pos (1U)
+#define DTS_ITENR_TS1_ITLEN_Msk (0x1UL << DTS_ITENR_TS1_ITLEN_Pos) /*!< 0x00000002 */
+#define DTS_ITENR_TS1_ITLEN DTS_ITENR_TS1_ITLEN_Msk /*!< Enable interrupt flag for low threshold for DTS */
+#define DTS_ITENR_TS1_ITHEN_Pos (2U)
+#define DTS_ITENR_TS1_ITHEN_Msk (0x1UL << DTS_ITENR_TS1_ITHEN_Pos) /*!< 0x00000004 */
+#define DTS_ITENR_TS1_ITHEN DTS_ITENR_TS1_ITHEN_Msk /*!< Enable interrupt flag for high threshold for DTS */
+#define DTS_ITENR_TS1_AITEEN_Pos (4U)
+#define DTS_ITENR_TS1_AITEEN_Msk (0x1UL << DTS_ITENR_TS1_AITEEN_Pos) /*!< 0x00000010 */
+#define DTS_ITENR_TS1_AITEEN DTS_ITENR_TS1_AITEEN_Msk /*!< Enable asynchronous interrupt flag for end of measure for DTS */
+#define DTS_ITENR_TS1_AITLEN_Pos (5U)
+#define DTS_ITENR_TS1_AITLEN_Msk (0x1UL << DTS_ITENR_TS1_AITLEN_Pos) /*!< 0x00000020 */
+#define DTS_ITENR_TS1_AITLEN DTS_ITENR_TS1_AITLEN_Msk /*!< Enable Asynchronous interrupt flag for low threshold for DTS */
+#define DTS_ITENR_TS1_AITHEN_Pos (6U)
+#define DTS_ITENR_TS1_AITHEN_Msk (0x1UL << DTS_ITENR_TS1_AITHEN_Pos) /*!< 0x00000040 */
+#define DTS_ITENR_TS1_AITHEN DTS_ITENR_TS1_AITHEN_Msk /*!< Enable asynchronous interrupt flag for high threshold for DTS */
+
+/****************** Bit definition for DTS_ICIFR register ******************/
+#define DTS_ICIFR_TS1_CITEF_Pos (0U)
+#define DTS_ICIFR_TS1_CITEF_Msk (0x1UL << DTS_ICIFR_TS1_CITEF_Pos) /*!< 0x00000001 */
+#define DTS_ICIFR_TS1_CITEF DTS_ICIFR_TS1_CITEF_Msk /*!< Clear the IT flag for End Of Measure for DTS */
+#define DTS_ICIFR_TS1_CITLF_Pos (1U)
+#define DTS_ICIFR_TS1_CITLF_Msk (0x1UL << DTS_ICIFR_TS1_CITLF_Pos) /*!< 0x00000002 */
+#define DTS_ICIFR_TS1_CITLF DTS_ICIFR_TS1_CITLF_Msk /*!< Clear the IT flag for low threshold for DTS */
+#define DTS_ICIFR_TS1_CITHF_Pos (2U)
+#define DTS_ICIFR_TS1_CITHF_Msk (0x1UL << DTS_ICIFR_TS1_CITHF_Pos) /*!< 0x00000004 */
+#define DTS_ICIFR_TS1_CITHF DTS_ICIFR_TS1_CITHF_Msk /*!< Clear the IT flag for high threshold on DTS */
+#define DTS_ICIFR_TS1_CAITEF_Pos (4U)
+#define DTS_ICIFR_TS1_CAITEF_Msk (0x1UL << DTS_ICIFR_TS1_CAITEF_Pos) /*!< 0x00000010 */
+#define DTS_ICIFR_TS1_CAITEF DTS_ICIFR_TS1_CAITEF_Msk /*!< Clear the asynchronous IT flag for End Of Measure for DTS */
+#define DTS_ICIFR_TS1_CAITLF_Pos (5U)
+#define DTS_ICIFR_TS1_CAITLF_Msk (0x1UL << DTS_ICIFR_TS1_CAITLF_Pos) /*!< 0x00000020 */
+#define DTS_ICIFR_TS1_CAITLF DTS_ICIFR_TS1_CAITLF_Msk /*!< Clear the asynchronous IT flag for low threshold for DTS */
+#define DTS_ICIFR_TS1_CAITHF_Pos (6U)
+#define DTS_ICIFR_TS1_CAITHF_Msk (0x1UL << DTS_ICIFR_TS1_CAITHF_Pos) /*!< 0x00000040 */
+#define DTS_ICIFR_TS1_CAITHF DTS_ICIFR_TS1_CAITHF_Msk /*!< Clear the asynchronous IT flag for high threshold on DTS */
+
+/******************************************************************************/
+/* */
+/* 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 /*! */
+
+/******************** Bits definition for RTC_ALRMAR register ***************/
+#define RTC_ALRMAR_SU_Pos (0U)
+#define RTC_ALRMAR_SU_Msk (0xFUL << RTC_ALRMAR_SU_Pos) /*!< 0x0000000F */
+#define RTC_ALRMAR_SU RTC_ALRMAR_SU_Msk
+#define RTC_ALRMAR_SU_0 (0x1UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000001 */
+#define RTC_ALRMAR_SU_1 (0x2UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000002 */
+#define RTC_ALRMAR_SU_2 (0x4UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000004 */
+#define RTC_ALRMAR_SU_3 (0x8UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000008 */
+#define RTC_ALRMAR_ST_Pos (4U)
+#define RTC_ALRMAR_ST_Msk (0x7UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000070 */
+#define RTC_ALRMAR_ST RTC_ALRMAR_ST_Msk
+#define RTC_ALRMAR_ST_0 (0x1UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000010 */
+#define RTC_ALRMAR_ST_1 (0x2UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000020 */
+#define RTC_ALRMAR_ST_2 (0x4UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000040 */
+#define RTC_ALRMAR_MSK1_Pos (7U)
+#define RTC_ALRMAR_MSK1_Msk (0x1UL << RTC_ALRMAR_MSK1_Pos) /*!< 0x00000080 */
+#define RTC_ALRMAR_MSK1 RTC_ALRMAR_MSK1_Msk
+#define RTC_ALRMAR_MNU_Pos (8U)
+#define RTC_ALRMAR_MNU_Msk (0xFUL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000F00 */
+#define RTC_ALRMAR_MNU RTC_ALRMAR_MNU_Msk
+#define RTC_ALRMAR_MNU_0 (0x1UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000100 */
+#define RTC_ALRMAR_MNU_1 (0x2UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000200 */
+#define RTC_ALRMAR_MNU_2 (0x4UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000400 */
+#define RTC_ALRMAR_MNU_3 (0x8UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000800 */
+#define RTC_ALRMAR_MNT_Pos (12U)
+#define RTC_ALRMAR_MNT_Msk (0x7UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00007000 */
+#define RTC_ALRMAR_MNT RTC_ALRMAR_MNT_Msk
+#define RTC_ALRMAR_MNT_0 (0x1UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00001000 */
+#define RTC_ALRMAR_MNT_1 (0x2UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00002000 */
+#define RTC_ALRMAR_MNT_2 (0x4UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00004000 */
+#define RTC_ALRMAR_MSK2_Pos (15U)
+#define RTC_ALRMAR_MSK2_Msk (0x1UL << RTC_ALRMAR_MSK2_Pos) /*!< 0x00008000 */
+#define RTC_ALRMAR_MSK2 RTC_ALRMAR_MSK2_Msk
+#define RTC_ALRMAR_HU_Pos (16U)
+#define RTC_ALRMAR_HU_Msk (0xFUL << RTC_ALRMAR_HU_Pos) /*!< 0x000F0000 */
+#define RTC_ALRMAR_HU RTC_ALRMAR_HU_Msk
+#define RTC_ALRMAR_HU_0 (0x1UL << RTC_ALRMAR_HU_Pos) /*!< 0x00010000 */
+#define RTC_ALRMAR_HU_1 (0x2UL << RTC_ALRMAR_HU_Pos) /*!< 0x00020000 */
+#define RTC_ALRMAR_HU_2 (0x4UL << RTC_ALRMAR_HU_Pos) /*!< 0x00040000 */
+#define RTC_ALRMAR_HU_3 (0x8UL << RTC_ALRMAR_HU_Pos) /*!< 0x00080000 */
+#define RTC_ALRMAR_HT_Pos (20U)
+#define RTC_ALRMAR_HT_Msk (0x3UL << RTC_ALRMAR_HT_Pos) /*!< 0x00300000 */
+#define RTC_ALRMAR_HT RTC_ALRMAR_HT_Msk
+#define RTC_ALRMAR_HT_0 (0x1UL << RTC_ALRMAR_HT_Pos) /*!< 0x00100000 */
+#define RTC_ALRMAR_HT_1 (0x2UL << RTC_ALRMAR_HT_Pos) /*!< 0x00200000 */
+#define RTC_ALRMAR_PM_Pos (22U)
+#define RTC_ALRMAR_PM_Msk (0x1UL << RTC_ALRMAR_PM_Pos) /*!< 0x00400000 */
+#define RTC_ALRMAR_PM RTC_ALRMAR_PM_Msk
+#define RTC_ALRMAR_MSK3_Pos (23U)
+#define RTC_ALRMAR_MSK3_Msk (0x1UL << RTC_ALRMAR_MSK3_Pos) /*!< 0x00800000 */
+#define RTC_ALRMAR_MSK3 RTC_ALRMAR_MSK3_Msk
+#define RTC_ALRMAR_DU_Pos (24U)
+#define RTC_ALRMAR_DU_Msk (0xFUL << RTC_ALRMAR_DU_Pos) /*!< 0x0F000000 */
+#define RTC_ALRMAR_DU RTC_ALRMAR_DU_Msk
+#define RTC_ALRMAR_DU_0 (0x1UL << RTC_ALRMAR_DU_Pos) /*!< 0x01000000 */
+#define RTC_ALRMAR_DU_1 (0x2UL << RTC_ALRMAR_DU_Pos) /*!< 0x02000000 */
+#define RTC_ALRMAR_DU_2 (0x4UL << RTC_ALRMAR_DU_Pos) /*!< 0x04000000 */
+#define RTC_ALRMAR_DU_3 (0x8UL << RTC_ALRMAR_DU_Pos) /*!< 0x08000000 */
+#define RTC_ALRMAR_DT_Pos (28U)
+#define RTC_ALRMAR_DT_Msk (0x3UL << RTC_ALRMAR_DT_Pos) /*!< 0x30000000 */
+#define RTC_ALRMAR_DT RTC_ALRMAR_DT_Msk
+#define RTC_ALRMAR_DT_0 (0x1UL << RTC_ALRMAR_DT_Pos) /*!< 0x10000000 */
+#define RTC_ALRMAR_DT_1 (0x2UL << RTC_ALRMAR_DT_Pos) /*!< 0x20000000 */
+#define RTC_ALRMAR_WDSEL_Pos (30U)
+#define RTC_ALRMAR_WDSEL_Msk (0x1UL << RTC_ALRMAR_WDSEL_Pos) /*!< 0x40000000 */
+#define RTC_ALRMAR_WDSEL RTC_ALRMAR_WDSEL_Msk
+#define RTC_ALRMAR_MSK4_Pos (31U)
+#define RTC_ALRMAR_MSK4_Msk (0x1UL << RTC_ALRMAR_MSK4_Pos) /*!< 0x80000000 */
+#define RTC_ALRMAR_MSK4 RTC_ALRMAR_MSK4_Msk
+
+/******************** Bits definition for RTC_ALRMASSR register *************/
+#define RTC_ALRMASSR_SS_Pos (0U)
+#define RTC_ALRMASSR_SS_Msk (0x7FFFUL << RTC_ALRMASSR_SS_Pos) /*!< 0x00007FFF */
+#define RTC_ALRMASSR_SS RTC_ALRMASSR_SS_Msk
+#define RTC_ALRMASSR_MASKSS_Pos (24U)
+#define RTC_ALRMASSR_MASKSS_Msk (0x3FUL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x3F000000 */
+#define RTC_ALRMASSR_MASKSS RTC_ALRMASSR_MASKSS_Msk
+#define RTC_ALRMASSR_MASKSS_0 (0x1UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x01000000 */
+#define RTC_ALRMASSR_MASKSS_1 (0x2UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x02000000 */
+#define RTC_ALRMASSR_MASKSS_2 (0x4UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x04000000 */
+#define RTC_ALRMASSR_MASKSS_3 (0x8UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x08000000 */
+#define RTC_ALRMASSR_MASKSS_4 (0x10UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x10000000 */
+#define RTC_ALRMASSR_MASKSS_5 (0x20UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x20000000 */
+#define RTC_ALRMASSR_SSCLR_Pos (31U)
+#define RTC_ALRMASSR_SSCLR_Msk (0x1UL << RTC_ALRMASSR_SSCLR_Pos) /*!< 0x80000000 */
+#define RTC_ALRMASSR_SSCLR RTC_ALRMASSR_SSCLR_Msk
+
+/******************** Bits definition for RTC_ALRMBR register ***************/
+#define RTC_ALRMBR_SU_Pos (0U)
+#define RTC_ALRMBR_SU_Msk (0xFUL << RTC_ALRMBR_SU_Pos) /*!< 0x0000000F */
+#define RTC_ALRMBR_SU RTC_ALRMBR_SU_Msk
+#define RTC_ALRMBR_SU_0 (0x1UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000001 */
+#define RTC_ALRMBR_SU_1 (0x2UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000002 */
+#define RTC_ALRMBR_SU_2 (0x4UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000004 */
+#define RTC_ALRMBR_SU_3 (0x8UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000008 */
+#define RTC_ALRMBR_ST_Pos (4U)
+#define RTC_ALRMBR_ST_Msk (0x7UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000070 */
+#define RTC_ALRMBR_ST RTC_ALRMBR_ST_Msk
+#define RTC_ALRMBR_ST_0 (0x1UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000010 */
+#define RTC_ALRMBR_ST_1 (0x2UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000020 */
+#define RTC_ALRMBR_ST_2 (0x4UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000040 */
+#define RTC_ALRMBR_MSK1_Pos (7U)
+#define RTC_ALRMBR_MSK1_Msk (0x1UL << RTC_ALRMBR_MSK1_Pos) /*!< 0x00000080 */
+#define RTC_ALRMBR_MSK1 RTC_ALRMBR_MSK1_Msk
+#define RTC_ALRMBR_MNU_Pos (8U)
+#define RTC_ALRMBR_MNU_Msk (0xFUL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000F00 */
+#define RTC_ALRMBR_MNU RTC_ALRMBR_MNU_Msk
+#define RTC_ALRMBR_MNU_0 (0x1UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000100 */
+#define RTC_ALRMBR_MNU_1 (0x2UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000200 */
+#define RTC_ALRMBR_MNU_2 (0x4UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000400 */
+#define RTC_ALRMBR_MNU_3 (0x8UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000800 */
+#define RTC_ALRMBR_MNT_Pos (12U)
+#define RTC_ALRMBR_MNT_Msk (0x7UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00007000 */
+#define RTC_ALRMBR_MNT RTC_ALRMBR_MNT_Msk
+#define RTC_ALRMBR_MNT_0 (0x1UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00001000 */
+#define RTC_ALRMBR_MNT_1 (0x2UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00002000 */
+#define RTC_ALRMBR_MNT_2 (0x4UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00004000 */
+#define RTC_ALRMBR_MSK2_Pos (15U)
+#define RTC_ALRMBR_MSK2_Msk (0x1UL << RTC_ALRMBR_MSK2_Pos) /*!< 0x00008000 */
+#define RTC_ALRMBR_MSK2 RTC_ALRMBR_MSK2_Msk
+#define RTC_ALRMBR_HU_Pos (16U)
+#define RTC_ALRMBR_HU_Msk (0xFUL << RTC_ALRMBR_HU_Pos) /*!< 0x000F0000 */
+#define RTC_ALRMBR_HU RTC_ALRMBR_HU_Msk
+#define RTC_ALRMBR_HU_0 (0x1UL << RTC_ALRMBR_HU_Pos) /*!< 0x00010000 */
+#define RTC_ALRMBR_HU_1 (0x2UL << RTC_ALRMBR_HU_Pos) /*!< 0x00020000 */
+#define RTC_ALRMBR_HU_2 (0x4UL << RTC_ALRMBR_HU_Pos) /*!< 0x00040000 */
+#define RTC_ALRMBR_HU_3 (0x8UL << RTC_ALRMBR_HU_Pos) /*!< 0x00080000 */
+#define RTC_ALRMBR_HT_Pos (20U)
+#define RTC_ALRMBR_HT_Msk (0x3UL << RTC_ALRMBR_HT_Pos) /*!< 0x00300000 */
+#define RTC_ALRMBR_HT RTC_ALRMBR_HT_Msk
+#define RTC_ALRMBR_HT_0 (0x1UL << RTC_ALRMBR_HT_Pos) /*!< 0x00100000 */
+#define RTC_ALRMBR_HT_1 (0x2UL << RTC_ALRMBR_HT_Pos) /*!< 0x00200000 */
+#define RTC_ALRMBR_PM_Pos (22U)
+#define RTC_ALRMBR_PM_Msk (0x1UL << RTC_ALRMBR_PM_Pos) /*!< 0x00400000 */
+#define RTC_ALRMBR_PM RTC_ALRMBR_PM_Msk
+#define RTC_ALRMBR_MSK3_Pos (23U)
+#define RTC_ALRMBR_MSK3_Msk (0x1UL << RTC_ALRMBR_MSK3_Pos) /*!< 0x00800000 */
+#define RTC_ALRMBR_MSK3 RTC_ALRMBR_MSK3_Msk
+#define RTC_ALRMBR_DU_Pos (24U)
+#define RTC_ALRMBR_DU_Msk (0xFUL << RTC_ALRMBR_DU_Pos) /*!< 0x0F000000 */
+#define RTC_ALRMBR_DU RTC_ALRMBR_DU_Msk
+#define RTC_ALRMBR_DU_0 (0x1UL << RTC_ALRMBR_DU_Pos) /*!< 0x01000000 */
+#define RTC_ALRMBR_DU_1 (0x2UL << RTC_ALRMBR_DU_Pos) /*!< 0x02000000 */
+#define RTC_ALRMBR_DU_2 (0x4UL << RTC_ALRMBR_DU_Pos) /*!< 0x04000000 */
+#define RTC_ALRMBR_DU_3 (0x8UL << RTC_ALRMBR_DU_Pos) /*!< 0x08000000 */
+#define RTC_ALRMBR_DT_Pos (28U)
+#define RTC_ALRMBR_DT_Msk (0x3UL << RTC_ALRMBR_DT_Pos) /*!< 0x30000000 */
+#define RTC_ALRMBR_DT RTC_ALRMBR_DT_Msk
+#define RTC_ALRMBR_DT_0 (0x1UL << RTC_ALRMBR_DT_Pos) /*!< 0x10000000 */
+#define RTC_ALRMBR_DT_1 (0x2UL << RTC_ALRMBR_DT_Pos) /*!< 0x20000000 */
+#define RTC_ALRMBR_WDSEL_Pos (30U)
+#define RTC_ALRMBR_WDSEL_Msk (0x1UL << RTC_ALRMBR_WDSEL_Pos) /*!< 0x40000000 */
+#define RTC_ALRMBR_WDSEL RTC_ALRMBR_WDSEL_Msk
+#define RTC_ALRMBR_MSK4_Pos (31U)
+#define RTC_ALRMBR_MSK4_Msk (0x1UL << RTC_ALRMBR_MSK4_Pos) /*!< 0x80000000 */
+#define RTC_ALRMBR_MSK4 RTC_ALRMBR_MSK4_Msk
+
+/******************** Bits definition for RTC_ALRMBSSR register *************/
+#define RTC_ALRMBSSR_SS_Pos (0U)
+#define RTC_ALRMBSSR_SS_Msk (0x7FFFUL << RTC_ALRMBSSR_SS_Pos) /*!< 0x00007FFF */
+#define RTC_ALRMBSSR_SS RTC_ALRMBSSR_SS_Msk
+#define RTC_ALRMBSSR_MASKSS_Pos (24U)
+#define RTC_ALRMBSSR_MASKSS_Msk (0x3FUL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x3F000000 */
+#define RTC_ALRMBSSR_MASKSS RTC_ALRMBSSR_MASKSS_Msk
+#define RTC_ALRMBSSR_MASKSS_0 (0x1UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x01000000 */
+#define RTC_ALRMBSSR_MASKSS_1 (0x2UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x02000000 */
+#define RTC_ALRMBSSR_MASKSS_2 (0x4UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x04000000 */
+#define RTC_ALRMBSSR_MASKSS_3 (0x8UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x08000000 */
+#define RTC_ALRMBSSR_MASKSS_4 (0x10UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x10000000 */
+#define RTC_ALRMBSSR_MASKSS_5 (0x20UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x20000000 */
+#define RTC_ALRMBSSR_SSCLR_Pos (31U)
+#define RTC_ALRMBSSR_SSCLR_Msk (0x1UL << RTC_ALRMBSSR_SSCLR_Pos) /*!< 0x80000000 */
+#define RTC_ALRMBSSR_SSCLR RTC_ALRMBSSR_SSCLR_Msk
+
+/******************** Bits definition for RTC_SR register *******************/
+#define RTC_SR_ALRAF_Pos (0U)
+#define RTC_SR_ALRAF_Msk (0x1UL << RTC_SR_ALRAF_Pos) /*!< 0x00000001 */
+#define RTC_SR_ALRAF RTC_SR_ALRAF_Msk
+#define RTC_SR_ALRBF_Pos (1U)
+#define RTC_SR_ALRBF_Msk (0x1UL << RTC_SR_ALRBF_Pos) /*!< 0x00000002 */
+#define RTC_SR_ALRBF RTC_SR_ALRBF_Msk
+#define RTC_SR_WUTF_Pos (2U)
+#define RTC_SR_WUTF_Msk (0x1UL << RTC_SR_WUTF_Pos) /*!< 0x00000004 */
+#define RTC_SR_WUTF RTC_SR_WUTF_Msk
+#define RTC_SR_TSF_Pos (3U)
+#define RTC_SR_TSF_Msk (0x1UL << RTC_SR_TSF_Pos) /*!< 0x00000008 */
+#define RTC_SR_TSF RTC_SR_TSF_Msk
+#define RTC_SR_TSOVF_Pos (4U)
+#define RTC_SR_TSOVF_Msk (0x1UL << RTC_SR_TSOVF_Pos) /*!< 0x00000010 */
+#define RTC_SR_TSOVF RTC_SR_TSOVF_Msk
+#define RTC_SR_ITSF_Pos (5U)
+#define RTC_SR_ITSF_Msk (0x1UL << RTC_SR_ITSF_Pos) /*!< 0x00000020 */
+#define RTC_SR_ITSF RTC_SR_ITSF_Msk
+#define RTC_SR_SSRUF_Pos (6U)
+#define RTC_SR_SSRUF_Msk (0x1UL << RTC_SR_SSRUF_Pos) /*!< 0x00000040 */
+#define RTC_SR_SSRUF RTC_SR_SSRUF_Msk
+
+/******************** Bits definition for RTC_MISR register *****************/
+#define RTC_MISR_ALRAMF_Pos (0U)
+#define RTC_MISR_ALRAMF_Msk (0x1UL << RTC_MISR_ALRAMF_Pos) /*!< 0x00000001 */
+#define RTC_MISR_ALRAMF RTC_MISR_ALRAMF_Msk
+#define RTC_MISR_ALRBMF_Pos (1U)
+#define RTC_MISR_ALRBMF_Msk (0x1UL << RTC_MISR_ALRBMF_Pos) /*!< 0x00000002 */
+#define RTC_MISR_ALRBMF RTC_MISR_ALRBMF_Msk
+#define RTC_MISR_WUTMF_Pos (2U)
+#define RTC_MISR_WUTMF_Msk (0x1UL << RTC_MISR_WUTMF_Pos) /*!< 0x00000004 */
+#define RTC_MISR_WUTMF RTC_MISR_WUTMF_Msk
+#define RTC_MISR_TSMF_Pos (3U)
+#define RTC_MISR_TSMF_Msk (0x1UL << RTC_MISR_TSMF_Pos) /*!< 0x00000008 */
+#define RTC_MISR_TSMF RTC_MISR_TSMF_Msk
+#define RTC_MISR_TSOVMF_Pos (4U)
+#define RTC_MISR_TSOVMF_Msk (0x1UL << RTC_MISR_TSOVMF_Pos) /*!< 0x00000010 */
+#define RTC_MISR_TSOVMF RTC_MISR_TSOVMF_Msk
+#define RTC_MISR_ITSMF_Pos (5U)
+#define RTC_MISR_ITSMF_Msk (0x1UL << RTC_MISR_ITSMF_Pos) /*!< 0x00000020 */
+#define RTC_MISR_ITSMF RTC_MISR_ITSMF_Msk
+#define RTC_MISR_SSRUMF_Pos (6U)
+#define RTC_MISR_SSRUMF_Msk (0x1UL << RTC_MISR_SSRUMF_Pos) /*!< 0x00000040 */
+#define RTC_MISR_SSRUMF RTC_MISR_SSRUMF_Msk
+
+
+/******************** Bits definition for RTC_SCR register ******************/
+#define RTC_SCR_CALRAF_Pos (0U)
+#define RTC_SCR_CALRAF_Msk (0x1UL << RTC_SCR_CALRAF_Pos) /*!< 0x00000001 */
+#define RTC_SCR_CALRAF RTC_SCR_CALRAF_Msk
+#define RTC_SCR_CALRBF_Pos (1U)
+#define RTC_SCR_CALRBF_Msk (0x1UL << RTC_SCR_CALRBF_Pos) /*!< 0x00000002 */
+#define RTC_SCR_CALRBF RTC_SCR_CALRBF_Msk
+#define RTC_SCR_CWUTF_Pos (2U)
+#define RTC_SCR_CWUTF_Msk (0x1UL << RTC_SCR_CWUTF_Pos) /*!< 0x00000004 */
+#define RTC_SCR_CWUTF RTC_SCR_CWUTF_Msk
+#define RTC_SCR_CTSF_Pos (3U)
+#define RTC_SCR_CTSF_Msk (0x1UL << RTC_SCR_CTSF_Pos) /*!< 0x00000008 */
+#define RTC_SCR_CTSF RTC_SCR_CTSF_Msk
+#define RTC_SCR_CTSOVF_Pos (4U)
+#define RTC_SCR_CTSOVF_Msk (0x1UL << RTC_SCR_CTSOVF_Pos) /*!< 0x00000010 */
+#define RTC_SCR_CTSOVF RTC_SCR_CTSOVF_Msk
+#define RTC_SCR_CITSF_Pos (5U)
+#define RTC_SCR_CITSF_Msk (0x1UL << RTC_SCR_CITSF_Pos) /*!< 0x00000020 */
+#define RTC_SCR_CITSF RTC_SCR_CITSF_Msk
+#define RTC_SCR_CSSRUF_Pos (6U)
+#define RTC_SCR_CSSRUF_Msk (0x1UL << RTC_SCR_CSSRUF_Pos) /*!< 0x00000040 */
+#define RTC_SCR_CSSRUF RTC_SCR_CSSRUF_Msk
+
+
+/******************** Bits definition for RTC_ALRABINR register ******************/
+#define RTC_ALRABINR_SS_Pos (0U)
+#define RTC_ALRABINR_SS_Msk (0xFFFFFFFFUL << RTC_ALRABINR_SS_Pos) /*!< 0xFFFFFFFF */
+#define RTC_ALRABINR_SS RTC_ALRABINR_SS_Msk
+
+/******************** Bits definition for RTC_ALRBBINR register ******************/
+#define RTC_ALRBBINR_SS_Pos (0U)
+#define RTC_ALRBBINR_SS_Msk (0xFFFFFFFFUL << RTC_ALRBBINR_SS_Pos) /*!< 0xFFFFFFFF */
+#define RTC_ALRBBINR_SS RTC_ALRBBINR_SS_Msk
+
+/******************************************************************************/
+/* */
+/* Tamper and backup register (TAMP) */
+/* */
+/******************************************************************************/
+/******************** Bits definition for TAMP_CR1 register *****************/
+#define TAMP_CR1_TAMP1E_Pos (0U)
+#define TAMP_CR1_TAMP1E_Msk (0x1UL << TAMP_CR1_TAMP1E_Pos) /*!< 0x00000001 */
+#define TAMP_CR1_TAMP1E TAMP_CR1_TAMP1E_Msk
+#define TAMP_CR1_TAMP2E_Pos (1U)
+#define TAMP_CR1_TAMP2E_Msk (0x1UL << TAMP_CR1_TAMP2E_Pos) /*!< 0x00000002 */
+#define TAMP_CR1_TAMP2E TAMP_CR1_TAMP2E_Msk
+#define TAMP_CR1_ITAMP1E_Pos (16U)
+#define TAMP_CR1_ITAMP1E_Msk (0x1UL << TAMP_CR1_ITAMP1E_Pos) /*!< 0x00010000 */
+#define TAMP_CR1_ITAMP1E TAMP_CR1_ITAMP1E_Msk
+#define TAMP_CR1_ITAMP2E_Pos (17U)
+#define TAMP_CR1_ITAMP2E_Msk (0x1UL << TAMP_CR1_ITAMP2E_Pos) /*!< 0x00020000 */
+#define TAMP_CR1_ITAMP2E TAMP_CR1_ITAMP2E_Msk
+#define TAMP_CR1_ITAMP3E_Pos (18U)
+#define TAMP_CR1_ITAMP3E_Msk (0x1UL << TAMP_CR1_ITAMP3E_Pos) /*!< 0x00040000 */
+#define TAMP_CR1_ITAMP3E TAMP_CR1_ITAMP3E_Msk
+#define TAMP_CR1_ITAMP4E_Pos (19U)
+#define TAMP_CR1_ITAMP4E_Msk (0x1UL << TAMP_CR1_ITAMP4E_Pos) /*!< 0x00080000 */
+#define TAMP_CR1_ITAMP4E TAMP_CR1_ITAMP4E_Msk
+#define TAMP_CR1_ITAMP5E_Pos (20U)
+#define TAMP_CR1_ITAMP5E_Msk (0x1UL << TAMP_CR1_ITAMP5E_Pos) /*!< 0x00100000 */
+#define TAMP_CR1_ITAMP5E TAMP_CR1_ITAMP5E_Msk
+#define TAMP_CR1_ITAMP6E_Pos (21U)
+#define TAMP_CR1_ITAMP6E_Msk (0x1UL << TAMP_CR1_ITAMP6E_Pos) /*!< 0x00200000 */
+#define TAMP_CR1_ITAMP6E TAMP_CR1_ITAMP6E_Msk
+#define TAMP_CR1_ITAMP7E_Pos (22U)
+#define TAMP_CR1_ITAMP7E_Msk (0x1UL << TAMP_CR1_ITAMP7E_Pos) /*!< 0x00400000 */
+#define TAMP_CR1_ITAMP7E TAMP_CR1_ITAMP7E_Msk
+#define TAMP_CR1_ITAMP8E_Pos (23U)
+#define TAMP_CR1_ITAMP8E_Msk (0x1UL << TAMP_CR1_ITAMP8E_Pos) /*!< 0x00800000 */
+#define TAMP_CR1_ITAMP8E TAMP_CR1_ITAMP8E_Msk
+#define TAMP_CR1_ITAMP9E_Pos (24U)
+#define TAMP_CR1_ITAMP9E_Msk (0x1UL << TAMP_CR1_ITAMP9E_Pos) /*!< 0x01000000 */
+#define TAMP_CR1_ITAMP9E TAMP_CR1_ITAMP9E_Msk
+#define TAMP_CR1_ITAMP11E_Pos (26U)
+#define TAMP_CR1_ITAMP11E_Msk (0x1UL << TAMP_CR1_ITAMP11E_Pos) /*!< 0x04000000 */
+#define TAMP_CR1_ITAMP11E TAMP_CR1_ITAMP11E_Msk
+#define TAMP_CR1_ITAMP12E_Pos (27U)
+#define TAMP_CR1_ITAMP12E_Msk (0x1UL << TAMP_CR1_ITAMP12E_Pos) /*!< 0x08000000 */
+#define TAMP_CR1_ITAMP12E TAMP_CR1_ITAMP12E_Msk
+#define TAMP_CR1_ITAMP13E_Pos (28U)
+#define TAMP_CR1_ITAMP13E_Msk (0x1UL << TAMP_CR1_ITAMP13E_Pos) /*!< 0x10000000 */
+#define TAMP_CR1_ITAMP13E TAMP_CR1_ITAMP13E_Msk
+#define TAMP_CR1_ITAMP15E_Pos (30U)
+#define TAMP_CR1_ITAMP15E_Msk (0x1UL << TAMP_CR1_ITAMP15E_Pos) /*!< 0x40000000 */
+#define TAMP_CR1_ITAMP15E TAMP_CR1_ITAMP15E_Msk
+
+/******************** Bits definition for TAMP_CR2 register *****************/
+#define TAMP_CR2_TAMP1NOERASE_Pos (0U)
+#define TAMP_CR2_TAMP1NOERASE_Msk (0x1UL << TAMP_CR2_TAMP1NOERASE_Pos) /*!< 0x00000001 */
+#define TAMP_CR2_TAMP1NOERASE TAMP_CR2_TAMP1NOERASE_Msk
+#define TAMP_CR2_TAMP2NOERASE_Pos (1U)
+#define TAMP_CR2_TAMP2NOERASE_Msk (0x1UL << TAMP_CR2_TAMP2NOERASE_Pos) /*!< 0x00000002 */
+#define TAMP_CR2_TAMP2NOERASE TAMP_CR2_TAMP2NOERASE_Msk
+#define TAMP_CR2_TAMP1MSK_Pos (16U)
+#define TAMP_CR2_TAMP1MSK_Msk (0x1UL << TAMP_CR2_TAMP1MSK_Pos) /*!< 0x00010000 */
+#define TAMP_CR2_TAMP1MSK TAMP_CR2_TAMP1MSK_Msk
+#define TAMP_CR2_TAMP2MSK_Pos (17U)
+#define TAMP_CR2_TAMP2MSK_Msk (0x1UL << TAMP_CR2_TAMP2MSK_Pos) /*!< 0x00020000 */
+#define TAMP_CR2_TAMP2MSK TAMP_CR2_TAMP2MSK_Msk
+#define TAMP_CR2_BKBLOCK_Pos (22U)
+#define TAMP_CR2_BKBLOCK_Msk (0x1UL << TAMP_CR2_BKBLOCK_Pos) /*!< 0x00400000 */
+#define TAMP_CR2_BKBLOCK TAMP_CR2_BKBLOCK_Msk
+#define TAMP_CR2_BKERASE_Pos (23U)
+#define TAMP_CR2_BKERASE_Msk (0x1UL << TAMP_CR2_BKERASE_Pos) /*!< 0x00800000 */
+#define TAMP_CR2_BKERASE TAMP_CR2_BKERASE_Msk
+#define TAMP_CR2_TAMP1TRG_Pos (24U)
+#define TAMP_CR2_TAMP1TRG_Msk (0x1UL << TAMP_CR2_TAMP1TRG_Pos) /*!< 0x01000000 */
+#define TAMP_CR2_TAMP1TRG TAMP_CR2_TAMP1TRG_Msk
+#define TAMP_CR2_TAMP2TRG_Pos (25U)
+#define TAMP_CR2_TAMP2TRG_Msk (0x1UL << TAMP_CR2_TAMP2TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP2TRG TAMP_CR2_TAMP2TRG_Msk
+
+/******************** Bits definition for TAMP_CR3 register *****************/
+#define TAMP_CR3_ITAMP1NOER_Pos (0U)
+#define TAMP_CR3_ITAMP1NOER_Msk (0x1UL << TAMP_CR3_ITAMP1NOER_Pos) /*!< 0x00000001 */
+#define TAMP_CR3_ITAMP1NOER TAMP_CR3_ITAMP1NOER_Msk
+#define TAMP_CR3_ITAMP2NOER_Pos (1U)
+#define TAMP_CR3_ITAMP2NOER_Msk (0x1UL << TAMP_CR3_ITAMP2NOER_Pos) /*!< 0x00000002 */
+#define TAMP_CR3_ITAMP2NOER TAMP_CR3_ITAMP2NOER_Msk
+#define TAMP_CR3_ITAMP3NOER_Pos (2U)
+#define TAMP_CR3_ITAMP3NOER_Msk (0x1UL << TAMP_CR3_ITAMP3NOER_Pos) /*!< 0x00000004 */
+#define TAMP_CR3_ITAMP3NOER TAMP_CR3_ITAMP3NOER_Msk
+#define TAMP_CR3_ITAMP4NOER_Pos (3U)
+#define TAMP_CR3_ITAMP4NOER_Msk (0x1UL << TAMP_CR3_ITAMP4NOER_Pos) /*!< 0x00000008 */
+#define TAMP_CR3_ITAMP4NOER TAMP_CR3_ITAMP4NOER_Msk
+#define TAMP_CR3_ITAMP5NOER_Pos (4U)
+#define TAMP_CR3_ITAMP5NOER_Msk (0x1UL << TAMP_CR3_ITAMP5NOER_Pos) /*!< 0x00000010 */
+#define TAMP_CR3_ITAMP5NOER TAMP_CR3_ITAMP5NOER_Msk
+#define TAMP_CR3_ITAMP6NOER_Pos (5U)
+#define TAMP_CR3_ITAMP6NOER_Msk (0x1UL << TAMP_CR3_ITAMP6NOER_Pos) /*!< 0x00000020 */
+#define TAMP_CR3_ITAMP6NOER TAMP_CR3_ITAMP6NOER_Msk
+#define TAMP_CR3_ITAMP7NOER_Pos (6U)
+#define TAMP_CR3_ITAMP7NOER_Msk (0x1UL << TAMP_CR3_ITAMP7NOER_Pos) /*!< 0x00000040 */
+#define TAMP_CR3_ITAMP7NOER TAMP_CR3_ITAMP7NOER_Msk
+#define TAMP_CR3_ITAMP8NOER_Pos (7U)
+#define TAMP_CR3_ITAMP8NOER_Msk (0x1UL << TAMP_CR3_ITAMP8NOER_Pos) /*!< 0x00000080 */
+#define TAMP_CR3_ITAMP8NOER TAMP_CR3_ITAMP8NOER_Msk
+#define TAMP_CR3_ITAMP9NOER_Pos (8U)
+#define TAMP_CR3_ITAMP9NOER_Msk (0x1UL << TAMP_CR3_ITAMP9NOER_Pos) /*!< 0x00000100 */
+#define TAMP_CR3_ITAMP9NOER TAMP_CR3_ITAMP9NOER_Msk
+#define TAMP_CR3_ITAMP11NOER_Pos (10U)
+#define TAMP_CR3_ITAMP11NOER_Msk (0x1UL << TAMP_CR3_ITAMP11NOER_Pos) /*!< 0x00000400 */
+#define TAMP_CR3_ITAMP11NOER TAMP_CR3_ITAMP11NOER_Msk
+#define TAMP_CR3_ITAMP12NOER_Pos (11U)
+#define TAMP_CR3_ITAMP12NOER_Msk (0x1UL << TAMP_CR3_ITAMP12NOER_Pos) /*!< 0x00000800 */
+#define TAMP_CR3_ITAMP12NOER TAMP_CR3_ITAMP12NOER_Msk
+#define TAMP_CR3_ITAMP13NOER_Pos (12U)
+#define TAMP_CR3_ITAMP13NOER_Msk (0x1UL << TAMP_CR3_ITAMP13NOER_Pos) /*!< 0x00001000 */
+#define TAMP_CR3_ITAMP13NOER TAMP_CR3_ITAMP13NOER_Msk
+#define TAMP_CR3_ITAMP15NOER_Pos (14U)
+#define TAMP_CR3_ITAMP15NOER_Msk (0x1UL << TAMP_CR3_ITAMP15NOER_Pos) /*!< 0x00004000 */
+#define TAMP_CR3_ITAMP15NOER TAMP_CR3_ITAMP15NOER_Msk
+
+/******************** Bits definition for TAMP_FLTCR register ***************/
+#define TAMP_FLTCR_TAMPFREQ_Pos (0U)
+#define TAMP_FLTCR_TAMPFREQ_Msk (0x7UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000007 */
+#define TAMP_FLTCR_TAMPFREQ TAMP_FLTCR_TAMPFREQ_Msk
+#define TAMP_FLTCR_TAMPFREQ_0 (0x1UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000001 */
+#define TAMP_FLTCR_TAMPFREQ_1 (0x2UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000002 */
+#define TAMP_FLTCR_TAMPFREQ_2 (0x4UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000004 */
+#define TAMP_FLTCR_TAMPFLT_Pos (3U)
+#define TAMP_FLTCR_TAMPFLT_Msk (0x3UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000018 */
+#define TAMP_FLTCR_TAMPFLT TAMP_FLTCR_TAMPFLT_Msk
+#define TAMP_FLTCR_TAMPFLT_0 (0x1UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000008 */
+#define TAMP_FLTCR_TAMPFLT_1 (0x2UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000010 */
+#define TAMP_FLTCR_TAMPPRCH_Pos (5U)
+#define TAMP_FLTCR_TAMPPRCH_Msk (0x3UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000060 */
+#define TAMP_FLTCR_TAMPPRCH TAMP_FLTCR_TAMPPRCH_Msk
+#define TAMP_FLTCR_TAMPPRCH_0 (0x1UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000020 */
+#define TAMP_FLTCR_TAMPPRCH_1 (0x2UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000040 */
+#define TAMP_FLTCR_TAMPPUDIS_Pos (7U)
+#define TAMP_FLTCR_TAMPPUDIS_Msk (0x1UL << TAMP_FLTCR_TAMPPUDIS_Pos) /*!< 0x00000080 */
+#define TAMP_FLTCR_TAMPPUDIS TAMP_FLTCR_TAMPPUDIS_Msk
+
+/******************** Bits definition for TAMP_ATCR1 register ***************/
+#define TAMP_ATCR1_TAMP1AM_Pos (0U)
+#define TAMP_ATCR1_TAMP1AM_Msk (0x1UL << TAMP_ATCR1_TAMP1AM_Pos) /*!< 0x00000001 */
+#define TAMP_ATCR1_TAMP1AM TAMP_ATCR1_TAMP1AM_Msk
+#define TAMP_ATCR1_TAMP2AM_Pos (1U)
+#define TAMP_ATCR1_TAMP2AM_Msk (0x1UL << TAMP_ATCR1_TAMP2AM_Pos) /*!< 0x00000002 */
+#define TAMP_ATCR1_TAMP2AM TAMP_ATCR1_TAMP2AM_Msk
+#define TAMP_ATCR1_ATOSEL1_Pos (8U)
+#define TAMP_ATCR1_ATOSEL1_Msk (0x3UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000300 */
+#define TAMP_ATCR1_ATOSEL1 TAMP_ATCR1_ATOSEL1_Msk
+#define TAMP_ATCR1_ATOSEL1_0 (0x1UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000100 */
+#define TAMP_ATCR1_ATOSEL1_1 (0x2UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000200 */
+#define TAMP_ATCR1_ATOSEL2_Pos (10U)
+#define TAMP_ATCR1_ATOSEL2_Msk (0x3UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000C00 */
+#define TAMP_ATCR1_ATOSEL2 TAMP_ATCR1_ATOSEL2_Msk
+#define TAMP_ATCR1_ATOSEL2_0 (0x1UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000400 */
+#define TAMP_ATCR1_ATOSEL2_1 (0x2UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000800 */
+#define TAMP_ATCR1_ATCKSEL_Pos (16U)
+#define TAMP_ATCR1_ATCKSEL_Msk (0xFUL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x000F0000 */
+#define TAMP_ATCR1_ATCKSEL TAMP_ATCR1_ATCKSEL_Msk
+#define TAMP_ATCR1_ATCKSEL_0 (0x1UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00010000 */
+#define TAMP_ATCR1_ATCKSEL_1 (0x2UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00020000 */
+#define TAMP_ATCR1_ATCKSEL_2 (0x4UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00040000 */
+#define TAMP_ATCR1_ATCKSEL_3 (0x8UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00080000 */
+#define TAMP_ATCR1_ATPER_Pos (24U)
+#define TAMP_ATCR1_ATPER_Msk (0x7UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x07000000 */
+#define TAMP_ATCR1_ATPER TAMP_ATCR1_ATPER_Msk
+#define TAMP_ATCR1_ATPER_0 (0x1UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x01000000 */
+#define TAMP_ATCR1_ATPER_1 (0x2UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x02000000 */
+#define TAMP_ATCR1_ATPER_2 (0x4UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x04000000 */
+#define TAMP_ATCR1_ATOSHARE_Pos (30U)
+#define TAMP_ATCR1_ATOSHARE_Msk (0x1UL << TAMP_ATCR1_ATOSHARE_Pos) /*!< 0x40000000 */
+#define TAMP_ATCR1_ATOSHARE TAMP_ATCR1_ATOSHARE_Msk
+#define TAMP_ATCR1_FLTEN_Pos (31U)
+#define TAMP_ATCR1_FLTEN_Msk (0x1UL << TAMP_ATCR1_FLTEN_Pos) /*!< 0x80000000 */
+#define TAMP_ATCR1_FLTEN TAMP_ATCR1_FLTEN_Msk
+
+/******************** Bits definition for TAMP_ATSEEDR register ******************/
+#define TAMP_ATSEEDR_SEED_Pos (0U)
+#define TAMP_ATSEEDR_SEED_Msk (0xFFFFFFFFUL << TAMP_ATSEEDR_SEED_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_ATSEEDR_SEED TAMP_ATSEEDR_SEED_Msk
+
+/******************** Bits definition for TAMP_ATOR register ******************/
+#define TAMP_ATOR_PRNG_Pos (0U)
+#define TAMP_ATOR_PRNG_Msk (0xFFUL << TAMP_ATOR_PRNG_Pos) /*!< 0x000000FF */
+#define TAMP_ATOR_PRNG TAMP_ATOR_PRNG_Msk
+#define TAMP_ATOR_PRNG_0 (0x1UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000001 */
+#define TAMP_ATOR_PRNG_1 (0x2UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000002 */
+#define TAMP_ATOR_PRNG_2 (0x4UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000004 */
+#define TAMP_ATOR_PRNG_3 (0x8UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000008 */
+#define TAMP_ATOR_PRNG_4 (0x10UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000010 */
+#define TAMP_ATOR_PRNG_5 (0x20UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000020 */
+#define TAMP_ATOR_PRNG_6 (0x40UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000040 */
+#define TAMP_ATOR_PRNG_7 (0x80UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000080 */
+#define TAMP_ATOR_SEEDF_Pos (14U)
+#define TAMP_ATOR_SEEDF_Msk (1UL << TAMP_ATOR_SEEDF_Pos) /*!< 0x00004000 */
+#define TAMP_ATOR_SEEDF TAMP_ATOR_SEEDF_Msk
+#define TAMP_ATOR_INITS_Pos (15U)
+#define TAMP_ATOR_INITS_Msk (1UL << TAMP_ATOR_INITS_Pos) /*!< 0x00008000 */
+#define TAMP_ATOR_INITS TAMP_ATOR_INITS_Msk
+
+/******************** Bits definition for TAMP_ATCR2 register ***************/
+#define TAMP_ATCR2_ATOSEL1_Pos (8U)
+#define TAMP_ATCR2_ATOSEL1_Msk (0x7UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000700 */
+#define TAMP_ATCR2_ATOSEL1 TAMP_ATCR2_ATOSEL1_Msk
+#define TAMP_ATCR2_ATOSEL1_0 (0x1UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000100 */
+#define TAMP_ATCR2_ATOSEL1_1 (0x2UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000200 */
+#define TAMP_ATCR2_ATOSEL1_2 (0x4UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000400 */
+#define TAMP_ATCR2_ATOSEL2_Pos (11U)
+#define TAMP_ATCR2_ATOSEL2_Msk (0x7UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00003800 */
+#define TAMP_ATCR2_ATOSEL2 TAMP_ATCR2_ATOSEL2_Msk
+#define TAMP_ATCR2_ATOSEL2_0 (0x1UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00000800 */
+#define TAMP_ATCR2_ATOSEL2_1 (0x2UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00001000 */
+#define TAMP_ATCR2_ATOSEL2_2 (0x4UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00002000 */
+
+/******************** Bits definition for TAMP_SECCFGR register *************/
+/* Keep SEC acronym name as following devices (STM32H562xx, STM32H563xx, STM32H573xx) with secure
+ acronym to avoid duplicated bits definitions */
+#define TAMP_SECCFGR_BKPRWSEC_Pos (0U)
+#define TAMP_SECCFGR_BKPRWSEC_Msk (0xFFUL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x000000FF */
+#define TAMP_SECCFGR_BKPRWSEC TAMP_SECCFGR_BKPRWSEC_Msk
+#define TAMP_SECCFGR_BKPRWSEC_0 (0x1UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000001 */
+#define TAMP_SECCFGR_BKPRWSEC_1 (0x2UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000002 */
+#define TAMP_SECCFGR_BKPRWSEC_2 (0x4UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000004 */
+#define TAMP_SECCFGR_BKPRWSEC_3 (0x8UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000008 */
+#define TAMP_SECCFGR_BKPRWSEC_4 (0x10UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000010 */
+#define TAMP_SECCFGR_BKPRWSEC_5 (0x20UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000020 */
+#define TAMP_SECCFGR_BKPRWSEC_6 (0x40UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000040 */
+#define TAMP_SECCFGR_BKPRWSEC_7 (0x80UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000080 */
+#define TAMP_SECCFGR_BKPWSEC_Pos (16U)
+#define TAMP_SECCFGR_BKPWSEC_Msk (0xFFUL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00FF0000 */
+#define TAMP_SECCFGR_BKPWSEC TAMP_SECCFGR_BKPWSEC_Msk
+#define TAMP_SECCFGR_BKPWSEC_0 (0x1UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00010000 */
+#define TAMP_SECCFGR_BKPWSEC_1 (0x2UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00020000 */
+#define TAMP_SECCFGR_BKPWSEC_2 (0x4UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00040000 */
+#define TAMP_SECCFGR_BKPWSEC_3 (0x8UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00080000 */
+#define TAMP_SECCFGR_BKPWSEC_4 (0x10UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00100000 */
+#define TAMP_SECCFGR_BKPWSEC_5 (0x20UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00200000 */
+#define TAMP_SECCFGR_BKPWSEC_6 (0x40UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00400000 */
+#define TAMP_SECCFGR_BKPWSEC_7 (0x80UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00800000 */
+
+/******************** Bits definition for TAMP_PRIVCFGR register ************/
+#define TAMP_PRIVCFGR_CNT1PRIV_Pos (15U)
+#define TAMP_PRIVCFGR_CNT1PRIV_Msk (0x1UL << TAMP_PRIVCFGR_CNT1PRIV_Pos) /*!< 0x20000000 */
+#define TAMP_PRIVCFGR_CNT1PRIV TAMP_PRIVCFGR_CNT1PRIV_Msk
+#define TAMP_PRIVCFGR_BKPRWPRIV_Pos (29U)
+#define TAMP_PRIVCFGR_BKPRWPRIV_Msk (0x1UL << TAMP_PRIVCFGR_BKPRWPRIV_Pos) /*!< 0x20000000 */
+#define TAMP_PRIVCFGR_BKPRWPRIV TAMP_PRIVCFGR_BKPRWPRIV_Msk
+#define TAMP_PRIVCFGR_BKPWPRIV_Pos (30U)
+#define TAMP_PRIVCFGR_BKPWPRIV_Msk (0x1UL << TAMP_PRIVCFGR_BKPWPRIV_Pos) /*!< 0x40000000 */
+#define TAMP_PRIVCFGR_BKPWPRIV TAMP_PRIVCFGR_BKPWPRIV_Msk
+#define TAMP_PRIVCFGR_TAMPPRIV_Pos (31U)
+#define TAMP_PRIVCFGR_TAMPPRIV_Msk (0x1UL << TAMP_PRIVCFGR_TAMPPRIV_Pos) /*!< 0x80000000 */
+#define TAMP_PRIVCFGR_TAMPPRIV TAMP_PRIVCFGR_TAMPPRIV_Msk
+
+/******************** Bits definition for TAMP_IER register *****************/
+#define TAMP_IER_TAMP1IE_Pos (0U)
+#define TAMP_IER_TAMP1IE_Msk (0x1UL << TAMP_IER_TAMP1IE_Pos) /*!< 0x00000001 */
+#define TAMP_IER_TAMP1IE TAMP_IER_TAMP1IE_Msk
+#define TAMP_IER_TAMP2IE_Pos (1U)
+#define TAMP_IER_TAMP2IE_Msk (0x1UL << TAMP_IER_TAMP2IE_Pos) /*!< 0x00000002 */
+#define TAMP_IER_TAMP2IE TAMP_IER_TAMP2IE_Msk
+#define TAMP_IER_ITAMP1IE_Pos (16U)
+#define TAMP_IER_ITAMP1IE_Msk (0x1UL << TAMP_IER_ITAMP1IE_Pos) /*!< 0x00010000 */
+#define TAMP_IER_ITAMP1IE TAMP_IER_ITAMP1IE_Msk
+#define TAMP_IER_ITAMP2IE_Pos (17U)
+#define TAMP_IER_ITAMP2IE_Msk (0x1UL << TAMP_IER_ITAMP2IE_Pos) /*!< 0x00020000 */
+#define TAMP_IER_ITAMP2IE TAMP_IER_ITAMP2IE_Msk
+#define TAMP_IER_ITAMP3IE_Pos (18U)
+#define TAMP_IER_ITAMP3IE_Msk (0x1UL << TAMP_IER_ITAMP3IE_Pos) /*!< 0x00040000 */
+#define TAMP_IER_ITAMP3IE TAMP_IER_ITAMP3IE_Msk
+#define TAMP_IER_ITAMP4IE_Pos (19U)
+#define TAMP_IER_ITAMP4IE_Msk (0x1UL << TAMP_IER_ITAMP4IE_Pos) /*!< 0x00080000 */
+#define TAMP_IER_ITAMP4IE TAMP_IER_ITAMP4IE_Msk
+#define TAMP_IER_ITAMP5IE_Pos (20U)
+#define TAMP_IER_ITAMP5IE_Msk (0x1UL << TAMP_IER_ITAMP5IE_Pos) /*!< 0x00100000 */
+#define TAMP_IER_ITAMP5IE TAMP_IER_ITAMP5IE_Msk
+#define TAMP_IER_ITAMP6IE_Pos (21U)
+#define TAMP_IER_ITAMP6IE_Msk (0x1UL << TAMP_IER_ITAMP6IE_Pos) /*!< 0x00200000 */
+#define TAMP_IER_ITAMP6IE TAMP_IER_ITAMP6IE_Msk
+#define TAMP_IER_ITAMP7IE_Pos (22U)
+#define TAMP_IER_ITAMP7IE_Msk (0x1UL << TAMP_IER_ITAMP7IE_Pos) /*!< 0x00400000 */
+#define TAMP_IER_ITAMP7IE TAMP_IER_ITAMP7IE_Msk
+#define TAMP_IER_ITAMP8IE_Pos (23U)
+#define TAMP_IER_ITAMP8IE_Msk (0x1UL << TAMP_IER_ITAMP8IE_Pos) /*!< 0x00800000 */
+#define TAMP_IER_ITAMP8IE TAMP_IER_ITAMP8IE_Msk
+#define TAMP_IER_ITAMP9IE_Pos (24U)
+#define TAMP_IER_ITAMP9IE_Msk (0x1UL << TAMP_IER_ITAMP9IE_Pos) /*!< 0x01000000 */
+#define TAMP_IER_ITAMP9IE TAMP_IER_ITAMP9IE_Msk
+#define TAMP_IER_ITAMP11IE_Pos (26U)
+#define TAMP_IER_ITAMP11IE_Msk (0x1UL << TAMP_IER_ITAMP11IE_Pos) /*!< 0x04000000 */
+#define TAMP_IER_ITAMP11IE TAMP_IER_ITAMP11IE_Msk
+#define TAMP_IER_ITAMP12IE_Pos (27U)
+#define TAMP_IER_ITAMP12IE_Msk (0x1UL << TAMP_IER_ITAMP12IE_Pos) /*!< 0x08000000 */
+#define TAMP_IER_ITAMP12IE TAMP_IER_ITAMP12IE_Msk
+#define TAMP_IER_ITAMP13IE_Pos (28U)
+#define TAMP_IER_ITAMP13IE_Msk (0x1UL << TAMP_IER_ITAMP13IE_Pos) /*!< 0x10000000 */
+#define TAMP_IER_ITAMP13IE TAMP_IER_ITAMP13IE_Msk
+#define TAMP_IER_ITAMP15IE_Pos (30U)
+#define TAMP_IER_ITAMP15IE_Msk (0x1UL << TAMP_IER_ITAMP15IE_Pos) /*!< 0x40000000 */
+#define TAMP_IER_ITAMP15IE TAMP_IER_ITAMP15IE_Msk
+
+/******************** Bits definition for TAMP_SR register *****************/
+#define TAMP_SR_TAMP1F_Pos (0U)
+#define TAMP_SR_TAMP1F_Msk (0x1UL << TAMP_SR_TAMP1F_Pos) /*!< 0x00000001 */
+#define TAMP_SR_TAMP1F TAMP_SR_TAMP1F_Msk
+#define TAMP_SR_TAMP2F_Pos (1U)
+#define TAMP_SR_TAMP2F_Msk (0x1UL << TAMP_SR_TAMP2F_Pos) /*!< 0x00000002 */
+#define TAMP_SR_TAMP2F TAMP_SR_TAMP2F_Msk
+#define TAMP_SR_ITAMP1F_Pos (16U)
+#define TAMP_SR_ITAMP1F_Msk (0x1UL << TAMP_SR_ITAMP1F_Pos) /*!< 0x00010000 */
+#define TAMP_SR_ITAMP1F TAMP_SR_ITAMP1F_Msk
+#define TAMP_SR_ITAMP2F_Pos (17U)
+#define TAMP_SR_ITAMP2F_Msk (0x1UL << TAMP_SR_ITAMP2F_Pos) /*!< 0x00020000 */
+#define TAMP_SR_ITAMP2F TAMP_SR_ITAMP2F_Msk
+#define TAMP_SR_ITAMP3F_Pos (18U)
+#define TAMP_SR_ITAMP3F_Msk (0x1UL << TAMP_SR_ITAMP3F_Pos) /*!< 0x00040000 */
+#define TAMP_SR_ITAMP3F TAMP_SR_ITAMP3F_Msk
+#define TAMP_SR_ITAMP4F_Pos (19U)
+#define TAMP_SR_ITAMP4F_Msk (0x1UL << TAMP_SR_ITAMP4F_Pos) /*!< 0x00080000 */
+#define TAMP_SR_ITAMP4F TAMP_SR_ITAMP4F_Msk
+#define TAMP_SR_ITAMP5F_Pos (20U)
+#define TAMP_SR_ITAMP5F_Msk (0x1UL << TAMP_SR_ITAMP5F_Pos) /*!< 0x00100000 */
+#define TAMP_SR_ITAMP5F TAMP_SR_ITAMP5F_Msk
+#define TAMP_SR_ITAMP6F_Pos (21U)
+#define TAMP_SR_ITAMP6F_Msk (0x1UL << TAMP_SR_ITAMP6F_Pos) /*!< 0x00200000 */
+#define TAMP_SR_ITAMP6F TAMP_SR_ITAMP6F_Msk
+#define TAMP_SR_ITAMP7F_Pos (22U)
+#define TAMP_SR_ITAMP7F_Msk (0x1UL << TAMP_SR_ITAMP7F_Pos) /*!< 0x00400000 */
+#define TAMP_SR_ITAMP7F TAMP_SR_ITAMP7F_Msk
+#define TAMP_SR_ITAMP8F_Pos (23U)
+#define TAMP_SR_ITAMP8F_Msk (0x1UL << TAMP_SR_ITAMP8F_Pos) /*!< 0x00800000 */
+#define TAMP_SR_ITAMP8F TAMP_SR_ITAMP8F_Msk
+#define TAMP_SR_ITAMP9F_Pos (24U)
+#define TAMP_SR_ITAMP9F_Msk (0x1UL << TAMP_SR_ITAMP9F_Pos) /*!< 0x01000000 */
+#define TAMP_SR_ITAMP9F TAMP_SR_ITAMP9F_Msk
+#define TAMP_SR_ITAMP11F_Pos (26U)
+#define TAMP_SR_ITAMP11F_Msk (0x1UL << TAMP_SR_ITAMP11F_Pos) /*!< 0x04000000 */
+#define TAMP_SR_ITAMP11F TAMP_SR_ITAMP11F_Msk
+#define TAMP_SR_ITAMP12F_Pos (27U)
+#define TAMP_SR_ITAMP12F_Msk (0x1UL << TAMP_SR_ITAMP12F_Pos) /*!< 0x08000000 */
+#define TAMP_SR_ITAMP12F TAMP_SR_ITAMP12F_Msk
+#define TAMP_SR_ITAMP13F_Pos (28U)
+#define TAMP_SR_ITAMP13F_Msk (0x1UL << TAMP_SR_ITAMP13F_Pos) /*!< 0x10000000 */
+#define TAMP_SR_ITAMP13F TAMP_SR_ITAMP13F_Msk
+#define TAMP_SR_ITAMP15F_Pos (30U)
+#define TAMP_SR_ITAMP15F_Msk (0x1UL << TAMP_SR_ITAMP15F_Pos) /*!< 0x40000000 */
+#define TAMP_SR_ITAMP15F TAMP_SR_ITAMP15F_Msk
+
+/******************** Bits definition for TAMP_MISR register ****************/
+#define TAMP_MISR_TAMP1MF_Pos (0U)
+#define TAMP_MISR_TAMP1MF_Msk (0x1UL << TAMP_MISR_TAMP1MF_Pos) /*!< 0x00000001 */
+#define TAMP_MISR_TAMP1MF TAMP_MISR_TAMP1MF_Msk
+#define TAMP_MISR_TAMP2MF_Pos (1U)
+#define TAMP_MISR_TAMP2MF_Msk (0x1UL << TAMP_MISR_TAMP2MF_Pos) /*!< 0x00000002 */
+#define TAMP_MISR_TAMP2MF TAMP_MISR_TAMP2MF_Msk
+#define TAMP_MISR_ITAMP1MF_Pos (16U)
+#define TAMP_MISR_ITAMP1MF_Msk (0x1UL << TAMP_MISR_ITAMP1MF_Pos) /*!< 0x00010000 */
+#define TAMP_MISR_ITAMP1MF TAMP_MISR_ITAMP1MF_Msk
+#define TAMP_MISR_ITAMP2MF_Pos (17U)
+#define TAMP_MISR_ITAMP2MF_Msk (0x1UL << TAMP_MISR_ITAMP2MF_Pos) /*!< 0x00020000 */
+#define TAMP_MISR_ITAMP2MF TAMP_MISR_ITAMP2MF_Msk
+#define TAMP_MISR_ITAMP3MF_Pos (18U)
+#define TAMP_MISR_ITAMP3MF_Msk (0x1UL << TAMP_MISR_ITAMP3MF_Pos) /*!< 0x00040000 */
+#define TAMP_MISR_ITAMP3MF TAMP_MISR_ITAMP3MF_Msk
+#define TAMP_MISR_ITAMP4MF_Pos (19U)
+#define TAMP_MISR_ITAMP4MF_Msk (0x1UL << TAMP_MISR_ITAMP4MF_Pos) /*!< 0x00080000 */
+#define TAMP_MISR_ITAMP4MF TAMP_MISR_ITAMP4MF_Msk
+#define TAMP_MISR_ITAMP5MF_Pos (20U)
+#define TAMP_MISR_ITAMP5MF_Msk (0x1UL << TAMP_MISR_ITAMP5MF_Pos) /*!< 0x00100000 */
+#define TAMP_MISR_ITAMP5MF TAMP_MISR_ITAMP5MF_Msk
+#define TAMP_MISR_ITAMP6MF_Pos (21U)
+#define TAMP_MISR_ITAMP6MF_Msk (0x1UL << TAMP_MISR_ITAMP6MF_Pos) /*!< 0x00200000 */
+#define TAMP_MISR_ITAMP6MF TAMP_MISR_ITAMP6MF_Msk
+#define TAMP_MISR_ITAMP7MF_Pos (22U)
+#define TAMP_MISR_ITAMP7MF_Msk (0x1UL << TAMP_MISR_ITAMP7MF_Pos) /*!< 0x00400000 */
+#define TAMP_MISR_ITAMP7MF TAMP_MISR_ITAMP7MF_Msk
+#define TAMP_MISR_ITAMP8MF_Pos (23U)
+#define TAMP_MISR_ITAMP8MF_Msk (0x1UL << TAMP_MISR_ITAMP8MF_Pos) /*!< 0x00800000 */
+#define TAMP_MISR_ITAMP8MF TAMP_MISR_ITAMP8MF_Msk
+#define TAMP_MISR_ITAMP9MF_Pos (24U)
+#define TAMP_MISR_ITAMP9MF_Msk (0x1UL << TAMP_MISR_ITAMP9MF_Pos) /*!< 0x01000000 */
+#define TAMP_MISR_ITAMP9MF TAMP_MISR_ITAMP9MF_Msk
+#define TAMP_MISR_ITAMP11MF_Pos (26U)
+#define TAMP_MISR_ITAMP11MF_Msk (0x1UL << TAMP_MISR_ITAMP11MF_Pos) /*!< 0x04000000 */
+#define TAMP_MISR_ITAMP11MF TAMP_MISR_ITAMP11MF_Msk
+#define TAMP_MISR_ITAMP12MF_Pos (27U)
+#define TAMP_MISR_ITAMP12MF_Msk (0x1UL << TAMP_MISR_ITAMP12MF_Pos) /*!< 0x08000000 */
+#define TAMP_MISR_ITAMP12MF TAMP_MISR_ITAMP12MF_Msk
+#define TAMP_MISR_ITAMP13MF_Pos (28U)
+#define TAMP_MISR_ITAMP13MF_Msk (0x1UL << TAMP_MISR_ITAMP13MF_Pos) /*!< 0x10000000 */
+#define TAMP_MISR_ITAMP13MF TAMP_MISR_ITAMP13MF_Msk
+#define TAMP_MISR_ITAMP15MF_Pos (30U)
+#define TAMP_MISR_ITAMP15MF_Msk (0x1UL << TAMP_MISR_ITAMP15MF_Pos) /*!< 0x40000000 */
+#define TAMP_MISR_ITAMP15MF TAMP_MISR_ITAMP15MF_Msk
+
+
+/******************** Bits definition for TAMP_SCR register *****************/
+#define TAMP_SCR_CTAMP1F_Pos (0U)
+#define TAMP_SCR_CTAMP1F_Msk (0x1UL << TAMP_SCR_CTAMP1F_Pos) /*!< 0x00000001 */
+#define TAMP_SCR_CTAMP1F TAMP_SCR_CTAMP1F_Msk
+#define TAMP_SCR_CTAMP2F_Pos (1U)
+#define TAMP_SCR_CTAMP2F_Msk (0x1UL << TAMP_SCR_CTAMP2F_Pos) /*!< 0x00000002 */
+#define TAMP_SCR_CTAMP2F TAMP_SCR_CTAMP2F_Msk
+#define TAMP_SCR_CITAMP1F_Pos (16U)
+#define TAMP_SCR_CITAMP1F_Msk (0x1UL << TAMP_SCR_CITAMP1F_Pos) /*!< 0x00010000 */
+#define TAMP_SCR_CITAMP1F TAMP_SCR_CITAMP1F_Msk
+#define TAMP_SCR_CITAMP2F_Pos (17U)
+#define TAMP_SCR_CITAMP2F_Msk (0x1UL << TAMP_SCR_CITAMP2F_Pos) /*!< 0x00020000 */
+#define TAMP_SCR_CITAMP2F TAMP_SCR_CITAMP2F_Msk
+#define TAMP_SCR_CITAMP3F_Pos (18U)
+#define TAMP_SCR_CITAMP3F_Msk (0x1UL << TAMP_SCR_CITAMP3F_Pos) /*!< 0x00040000 */
+#define TAMP_SCR_CITAMP3F TAMP_SCR_CITAMP3F_Msk
+#define TAMP_SCR_CITAMP4F_Pos (19U)
+#define TAMP_SCR_CITAMP4F_Msk (0x1UL << TAMP_SCR_CITAMP4F_Pos) /*!< 0x00080000 */
+#define TAMP_SCR_CITAMP4F TAMP_SCR_CITAMP4F_Msk
+#define TAMP_SCR_CITAMP5F_Pos (20U)
+#define TAMP_SCR_CITAMP5F_Msk (0x1UL << TAMP_SCR_CITAMP5F_Pos) /*!< 0x00100000 */
+#define TAMP_SCR_CITAMP5F TAMP_SCR_CITAMP5F_Msk
+#define TAMP_SCR_CITAMP6F_Pos (21U)
+#define TAMP_SCR_CITAMP6F_Msk (0x1UL << TAMP_SCR_CITAMP6F_Pos) /*!< 0x00200000 */
+#define TAMP_SCR_CITAMP6F TAMP_SCR_CITAMP6F_Msk
+#define TAMP_SCR_CITAMP7F_Pos (22U)
+#define TAMP_SCR_CITAMP7F_Msk (0x1UL << TAMP_SCR_CITAMP7F_Pos) /*!< 0x00400000 */
+#define TAMP_SCR_CITAMP7F TAMP_SCR_CITAMP7F_Msk
+#define TAMP_SCR_CITAMP8F_Pos (23U)
+#define TAMP_SCR_CITAMP8F_Msk (0x1UL << TAMP_SCR_CITAMP8F_Pos) /*!< 0x00800000 */
+#define TAMP_SCR_CITAMP8F TAMP_SCR_CITAMP8F_Msk
+#define TAMP_SCR_CITAMP9F_Pos (24U)
+#define TAMP_SCR_CITAMP9F_Msk (0x1UL << TAMP_SCR_CITAMP9F_Pos) /*!< 0x00100000 */
+#define TAMP_SCR_CITAMP9F TAMP_SCR_CITAMP9F_Msk
+#define TAMP_SCR_CITAMP11F_Pos (26U)
+#define TAMP_SCR_CITAMP11F_Msk (0x1UL << TAMP_SCR_CITAMP11F_Pos) /*!< 0x00400000 */
+#define TAMP_SCR_CITAMP11F TAMP_SCR_CITAMP11F_Msk
+#define TAMP_SCR_CITAMP12F_Pos (27U)
+#define TAMP_SCR_CITAMP12F_Msk (0x1UL << TAMP_SCR_CITAMP12F_Pos) /*!< 0x08000000 */
+#define TAMP_SCR_CITAMP12F TAMP_SCR_CITAMP12F_Msk
+#define TAMP_SCR_CITAMP13F_Pos (28U)
+#define TAMP_SCR_CITAMP13F_Msk (0x1UL << TAMP_SCR_CITAMP13F_Pos) /*!< 0x10000000 */
+#define TAMP_SCR_CITAMP13F TAMP_SCR_CITAMP13F_Msk
+#define TAMP_SCR_CITAMP15F_Pos (30U)
+#define TAMP_SCR_CITAMP15F_Msk (0x1UL << TAMP_SCR_CITAMP15F_Pos) /*!< 0x40000000 */
+#define TAMP_SCR_CITAMP15F TAMP_SCR_CITAMP15F_Msk
+/******************** Bits definition for TAMP_COUNT1R register ***************/
+#define TAMP_COUNT1R_COUNT_Pos (0U)
+#define TAMP_COUNT1R_COUNT_Msk (0xFFFFFFFFUL << TAMP_COUNT1R_COUNT_Pos)/*!< 0xFFFFFFFF */
+#define TAMP_COUNT1R_COUNT TAMP_COUNT1R_COUNT_Msk
+
+
+/******************** Bits definition for TAMP_ERCFG register ***************/
+#define TAMP_ERCFGR_ERCFG0_Pos (0U)
+#define TAMP_ERCFGR_ERCFG0_Msk (0x1UL << TAMP_ERCFGR_ERCFG0_Pos) /*!< 0x00000001 */
+#define TAMP_ERCFGR_ERCFG0 TAMP_ERCFGR_ERCFG0_Msk
+
+/******************** Bits definition for TAMP_BKP0R register ***************/
+#define TAMP_BKP0R_Pos (0U)
+#define TAMP_BKP0R_Msk (0xFFFFFFFFUL << TAMP_BKP0R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP0R TAMP_BKP0R_Msk
+
+/******************** Bits definition for TAMP_BKP1R register ****************/
+#define TAMP_BKP1R_Pos (0U)
+#define TAMP_BKP1R_Msk (0xFFFFFFFFUL << TAMP_BKP1R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP1R TAMP_BKP1R_Msk
+
+/******************** Bits definition for TAMP_BKP2R register ****************/
+#define TAMP_BKP2R_Pos (0U)
+#define TAMP_BKP2R_Msk (0xFFFFFFFFUL << TAMP_BKP2R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP2R TAMP_BKP2R_Msk
+
+/******************** Bits definition for TAMP_BKP3R register ****************/
+#define TAMP_BKP3R_Pos (0U)
+#define TAMP_BKP3R_Msk (0xFFFFFFFFUL << TAMP_BKP3R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP3R TAMP_BKP3R_Msk
+
+/******************** Bits definition for TAMP_BKP4R register ****************/
+#define TAMP_BKP4R_Pos (0U)
+#define TAMP_BKP4R_Msk (0xFFFFFFFFUL << TAMP_BKP4R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP4R TAMP_BKP4R_Msk
+
+/******************** Bits definition for TAMP_BKP5R register ****************/
+#define TAMP_BKP5R_Pos (0U)
+#define TAMP_BKP5R_Msk (0xFFFFFFFFUL << TAMP_BKP5R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP5R TAMP_BKP5R_Msk
+
+/******************** Bits definition for TAMP_BKP6R register ****************/
+#define TAMP_BKP6R_Pos (0U)
+#define TAMP_BKP6R_Msk (0xFFFFFFFFUL << TAMP_BKP6R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP6R TAMP_BKP6R_Msk
+
+/******************** Bits definition for TAMP_BKP7R register ****************/
+#define TAMP_BKP7R_Pos (0U)
+#define TAMP_BKP7R_Msk (0xFFFFFFFFUL << TAMP_BKP7R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP7R TAMP_BKP7R_Msk
+
+/******************** Bits definition for TAMP_BKP8R register ****************/
+#define TAMP_BKP8R_Pos (0U)
+#define TAMP_BKP8R_Msk (0xFFFFFFFFUL << TAMP_BKP8R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP8R TAMP_BKP8R_Msk
+
+/******************** Bits definition for TAMP_BKP9R register ****************/
+#define TAMP_BKP9R_Pos (0U)
+#define TAMP_BKP9R_Msk (0xFFFFFFFFUL << TAMP_BKP9R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP9R TAMP_BKP9R_Msk
+
+/******************** Bits definition for TAMP_BKP10R register ***************/
+#define TAMP_BKP10R_Pos (0U)
+#define TAMP_BKP10R_Msk (0xFFFFFFFFUL << TAMP_BKP10R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP10R TAMP_BKP10R_Msk
+
+/******************** Bits definition for TAMP_BKP11R register ***************/
+#define TAMP_BKP11R_Pos (0U)
+#define TAMP_BKP11R_Msk (0xFFFFFFFFUL << TAMP_BKP11R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP11R TAMP_BKP11R_Msk
+
+/******************** Bits definition for TAMP_BKP12R register ***************/
+#define TAMP_BKP12R_Pos (0U)
+#define TAMP_BKP12R_Msk (0xFFFFFFFFUL << TAMP_BKP12R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP12R TAMP_BKP12R_Msk
+
+/******************** Bits definition for TAMP_BKP13R register ***************/
+#define TAMP_BKP13R_Pos (0U)
+#define TAMP_BKP13R_Msk (0xFFFFFFFFUL << TAMP_BKP13R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP13R TAMP_BKP13R_Msk
+
+/******************** Bits definition for TAMP_BKP14R register ***************/
+#define TAMP_BKP14R_Pos (0U)
+#define TAMP_BKP14R_Msk (0xFFFFFFFFUL << TAMP_BKP14R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP14R TAMP_BKP14R_Msk
+
+/******************** Bits definition for TAMP_BKP15R register ***************/
+#define TAMP_BKP15R_Pos (0U)
+#define TAMP_BKP15R_Msk (0xFFFFFFFFUL << TAMP_BKP15R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP15R TAMP_BKP15R_Msk
+
+/******************** Bits definition for TAMP_BKP16R register ***************/
+#define TAMP_BKP16R_Pos (0U)
+#define TAMP_BKP16R_Msk (0xFFFFFFFFUL << TAMP_BKP16R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP16R TAMP_BKP16R_Msk
+
+/******************** Bits definition for TAMP_BKP17R register ***************/
+#define TAMP_BKP17R_Pos (0U)
+#define TAMP_BKP17R_Msk (0xFFFFFFFFUL << TAMP_BKP17R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP17R TAMP_BKP17R_Msk
+
+/******************** Bits definition for TAMP_BKP18R register ***************/
+#define TAMP_BKP18R_Pos (0U)
+#define TAMP_BKP18R_Msk (0xFFFFFFFFUL << TAMP_BKP18R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP18R TAMP_BKP18R_Msk
+
+/******************** Bits definition for TAMP_BKP19R register ***************/
+#define TAMP_BKP19R_Pos (0U)
+#define TAMP_BKP19R_Msk (0xFFFFFFFFUL << TAMP_BKP19R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP19R TAMP_BKP19R_Msk
+
+/******************** Bits definition for TAMP_BKP20R register ***************/
+#define TAMP_BKP20R_Pos (0U)
+#define TAMP_BKP20R_Msk (0xFFFFFFFFUL << TAMP_BKP20R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP20R TAMP_BKP20R_Msk
+
+/******************** Bits definition for TAMP_BKP21R register ***************/
+#define TAMP_BKP21R_Pos (0U)
+#define TAMP_BKP21R_Msk (0xFFFFFFFFUL << TAMP_BKP21R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP21R TAMP_BKP21R_Msk
+
+/******************** Bits definition for TAMP_BKP22R register ***************/
+#define TAMP_BKP22R_Pos (0U)
+#define TAMP_BKP22R_Msk (0xFFFFFFFFUL << TAMP_BKP22R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP22R TAMP_BKP22R_Msk
+
+/******************** Bits definition for TAMP_BKP23R register ***************/
+#define TAMP_BKP23R_Pos (0U)
+#define TAMP_BKP23R_Msk (0xFFFFFFFFUL << TAMP_BKP23R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP23R TAMP_BKP23R_Msk
+
+/******************** Bits definition for TAMP_BKP24R register ***************/
+#define TAMP_BKP24R_Pos (0U)
+#define TAMP_BKP24R_Msk (0xFFFFFFFFUL << TAMP_BKP24R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP24R TAMP_BKP24R_Msk
+
+/******************** Bits definition for TAMP_BKP25R register ***************/
+#define TAMP_BKP25R_Pos (0U)
+#define TAMP_BKP25R_Msk (0xFFFFFFFFUL << TAMP_BKP25R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP25R TAMP_BKP25R_Msk
+
+/******************** Bits definition for TAMP_BKP26R register ***************/
+#define TAMP_BKP26R_Pos (0U)
+#define TAMP_BKP26R_Msk (0xFFFFFFFFUL << TAMP_BKP26R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP26R TAMP_BKP26R_Msk
+
+/******************** Bits definition for TAMP_BKP27R register ***************/
+#define TAMP_BKP27R_Pos (0U)
+#define TAMP_BKP27R_Msk (0xFFFFFFFFUL << TAMP_BKP27R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP27R TAMP_BKP27R_Msk
+
+/******************** Bits definition for TAMP_BKP28R register ***************/
+#define TAMP_BKP28R_Pos (0U)
+#define TAMP_BKP28R_Msk (0xFFFFFFFFUL << TAMP_BKP28R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP28R TAMP_BKP28R_Msk
+
+/******************** Bits definition for TAMP_BKP29R register ***************/
+#define TAMP_BKP29R_Pos (0U)
+#define TAMP_BKP29R_Msk (0xFFFFFFFFUL << TAMP_BKP29R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP29R TAMP_BKP29R_Msk
+
+/******************** Bits definition for TAMP_BKP30R register ***************/
+#define TAMP_BKP30R_Pos (0U)
+#define TAMP_BKP30R_Msk (0xFFFFFFFFUL << TAMP_BKP30R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP30R TAMP_BKP30R_Msk
+
+/******************** Bits definition for TAMP_BKP31R register ***************/
+#define TAMP_BKP31R_Pos (0U)
+#define TAMP_BKP31R_Msk (0xFFFFFFFFUL << TAMP_BKP31R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP31R TAMP_BKP31R_Msk
+
+/******************************************************************************/
+/* */
+/* SBS */
+/* */
+/******************************************************************************/
+/******************** Bit definition for SBS_HDPLCR register *****************/
+#define SBS_HDPLCR_INCR_HDPL_Pos (0U)
+#define SBS_HDPLCR_INCR_HDPL_Msk (0xFFUL << SBS_HDPLCR_INCR_HDPL_Pos) /*!< 0x000000FF */
+#define SBS_HDPLCR_INCR_HDPL SBS_HDPLCR_INCR_HDPL_Msk /*!< Increment HDPL value. */
+
+/******************** Bit definition for SBS_HDPLSR register *****************/
+#define SBS_HDPLSR_HDPL_Pos (0U)
+#define SBS_HDPLSR_HDPL_Msk (0xFFUL << SBS_HDPLSR_HDPL_Pos) /*!< 0x000000FF */
+#define SBS_HDPLSR_HDPL SBS_HDPLSR_HDPL_Msk /*!< HDPL value. */
+
+/******************** Bit definition for SBS_DBGCR register *****************/
+#define SBS_DBGCR_AP_UNLOCK_Pos (0U)
+#define SBS_DBGCR_AP_UNLOCK_Msk (0xFFUL << SBS_DBGCR_AP_UNLOCK_Pos) /*!< 0x000000FF */
+#define SBS_DBGCR_AP_UNLOCK SBS_DBGCR_AP_UNLOCK_Msk /*!< Open the Access Port. */
+
+#define SBS_DBGCR_DBG_UNLOCK_Pos (8U)
+#define SBS_DBGCR_DBG_UNLOCK_Msk (0xFFUL << SBS_DBGCR_DBG_UNLOCK_Pos) /*!< 0x0000FF00 */
+#define SBS_DBGCR_DBG_UNLOCK SBS_DBGCR_DBG_UNLOCK_Msk /*!< Open the debug when DBG_AUTH_HDPL is reached. */
+
+#define SBS_DBGCR_DBG_AUTH_HDPL_Pos (16U)
+#define SBS_DBGCR_DBG_AUTH_HDPL_Msk (0xFFUL << SBS_DBGCR_DBG_AUTH_HDPL_Pos) /*!< 0x00FF0000 */
+#define SBS_DBGCR_DBG_AUTH_HDPL SBS_DBGCR_DBG_AUTH_HDPL_Msk /*!< HDPL value when the debug should be effectively opened. */
+
+/******************** Bit definition for SBS_DBGLCKR register *****************/
+#define SBS_DBGLOCKR_DBGCFG_LOCK_Pos (0U)
+#define SBS_DBGLOCKR_DBGCFG_LOCK_Msk (0xFFUL << SBS_DBGLOCKR_DBGCFG_LOCK_Pos) /*!< 0x000000FF */
+#define SBS_DBGLOCKR_DBGCFG_LOCK SBS_DBGLOCKR_DBGCFG_LOCK_Msk /*!< SBS_DBGLOCKR_DBGCFG_LOCK value. */
+
+/****************** Bit definition for SBS_PMCR register ****************/
+#define SBS_PMCR_PB6_FMP_Pos (16U)
+#define SBS_PMCR_PB6_FMP_Msk (0x1UL << SBS_PMCR_PB6_FMP_Pos) /*!< 0x00010000 */
+#define SBS_PMCR_PB6_FMP SBS_PMCR_PB6_FMP_Msk /*!< Fast-mode Plus command on PB(6) */
+#define SBS_PMCR_PB7_FMP_Pos (17U)
+#define SBS_PMCR_PB7_FMP_Msk (0x1UL << SBS_PMCR_PB7_FMP_Pos) /*!< 0x00020000 */
+#define SBS_PMCR_PB7_FMP SBS_PMCR_PB7_FMP_Msk /*!< Fast-mode Plus command on PB(7) */
+#define SBS_PMCR_PB8_FMP_Pos (18U)
+#define SBS_PMCR_PB8_FMP_Msk (0x1UL << SBS_PMCR_PB8_FMP_Pos) /*!< 0x00040000 */
+#define SBS_PMCR_PB8_FMP SBS_PMCR_PB8_FMP_Msk /*!< Fast-mode Plus command on PB(8) */
+
+/****************** Bit definition for SBS_FPUIMR register ***************/
+#define SBS_FPUIMR_FPU_IE_Pos (0U)
+#define SBS_FPUIMR_FPU_IE_Msk (0x3FUL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x0000003F - */
+#define SBS_FPUIMR_FPU_IE SBS_FPUIMR_FPU_IE_Msk /*!< All FPU interrupts enable */
+#define SBS_FPUIMR_FPU_IE_0 (0x1UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000001 - Invalid operation Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_1 (0x2UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000002 - Divide-by-zero Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_2 (0x4UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000004 - Underflow Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_3 (0x8UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000008 - Overflow Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_4 (0x10UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000010 - Input denormal Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_5 (0x20UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000020 - Inexact Interrupt enable (interrupt disabled at reset) */
+
+/****************** Bit definition for SBS_MESR register ****************/
+#define SBS_MESR_MCLR_Pos (0U)
+#define SBS_MESR_MCLR_Msk (0x1UL << SBS_MESR_MCLR_Pos) /*!< 0x00000001 */
+#define SBS_MESR_MCLR SBS_MESR_MCLR_Msk /*!< Status of Erase after Reset */
+#define SBS_MESR_IPMEE_Pos (16U)
+#define SBS_MESR_IPMEE_Msk (0x1UL << SBS_MESR_IPMEE_Pos) /*!< 0x00010000 */
+#define SBS_MESR_IPMEE SBS_MESR_IPMEE_Msk /*!< Status of End of Erase for ICache and PKA RAMs */
+
+/****************** Bit definition for SBS_CCCSR register ****************/
+#define SBS_CCCSR_EN1_Pos (0U)
+#define SBS_CCCSR_EN1_Msk (0x1UL << SBS_CCCSR_EN1_Pos) /*!< 0x00000001 */
+#define SBS_CCCSR_EN1 SBS_CCCSR_EN1_Msk /*!< Enable compensation cell for VDD power rail */
+#define SBS_CCCSR_CS1_Pos (1U)
+#define SBS_CCCSR_CS1_Msk (0x1UL << SBS_CCCSR_CS1_Pos) /*!< 0x00000002 */
+#define SBS_CCCSR_CS1 SBS_CCCSR_CS1_Msk /*!< Code selection for VDD power rail */
+#define SBS_CCCSR_EN2_Pos (2U)
+#define SBS_CCCSR_EN2_Msk (0x1UL << SBS_CCCSR_EN2_Pos) /*!< 0x00000004 */
+#define SBS_CCCSR_EN2 SBS_CCCSR_EN2_Msk /*!< Enable compensation cell for VDDIO power rail */
+#define SBS_CCCSR_CS2_Pos (3U)
+#define SBS_CCCSR_CS2_Msk (0x1UL << SBS_CCCSR_CS2_Pos) /*!< 0x00000008 */
+#define SBS_CCCSR_CS2 SBS_CCCSR_CS2_Msk /*!< Code selection for VDDIO power rail */
+#define SBS_CCCSR_RDY1_Pos (8U)
+#define SBS_CCCSR_RDY1_Msk (0x1UL << SBS_CCCSR_RDY1_Pos) /*!< 0x00000100 */
+#define SBS_CCCSR_RDY1 SBS_CCCSR_RDY1_Msk /*!< VDD compensation cell ready flag */
+#define SBS_CCCSR_RDY2_Pos (9U)
+#define SBS_CCCSR_RDY2_Msk (0x1UL << SBS_CCCSR_RDY2_Pos) /*!< 0x00000200 */
+#define SBS_CCCSR_RDY2 SBS_CCCSR_RDY2_Msk /*!< VDDIO compensation cell ready flag */
+
+/****************** Bit definition for SBS_CCVALR register ****************/
+#define SBS_CCVALR_ANSRC1_Pos (0U)
+#define SBS_CCVALR_ANSRC1_Msk (0xFUL << SBS_CCVALR_ANSRC1_Pos) /*!< 0x0000000F */
+#define SBS_CCVALR_ANSRC1 SBS_CCVALR_ANSRC1_Msk /*!< NMOS compensation value */
+#define SBS_CCVALR_APSRC1_Pos (4U)
+#define SBS_CCVALR_APSRC1_Msk (0xFUL << SBS_CCVALR_APSRC1_Pos) /*!< 0x000000F0 */
+#define SBS_CCVALR_APSRC1 SBS_CCVALR_APSRC1_Msk /*!< PMOS compensation value */
+#define SBS_CCVALR_ANSRC2_Pos (8U)
+#define SBS_CCVALR_ANSRC2_Msk (0xFUL << SBS_CCVALR_ANSRC2_Pos) /*!< 0x00000F00 */
+#define SBS_CCVALR_ANSRC2 SBS_CCVALR_ANSRC2_Msk /*!< NMOS compensation value */
+#define SBS_CCVALR_APSRC2_Pos (12U)
+#define SBS_CCVALR_APSRC2_Msk (0xFUL << SBS_CCVALR_APSRC2_Pos) /*!< 0x0000F000 */
+#define SBS_CCVALR_APSRC2 SBS_CCVALR_APSRC2_Msk /*!< PMOS compensation value */
+
+/****************** Bit definition for SBS_CCSWCR register ****************/
+#define SBS_CCSWCR_SW_ANSRC1_Pos (0U)
+#define SBS_CCSWCR_SW_ANSRC1_Msk (0xFUL << SBS_CCSWCR_SW_ANSRC1_Pos) /*!< 0x0000000F */
+#define SBS_CCSWCR_SW_ANSRC1 SBS_CCSWCR_SW_ANSRC1_Msk /*!< NMOS compensation code for VDD Power Rail */
+#define SBS_CCSWCR_SW_APSRC1_Pos (4U)
+#define SBS_CCSWCR_SW_APSRC1_Msk (0xFUL << SBS_CCSWCR_SW_APSRC1_Pos) /*!< 0x000000F0 */
+#define SBS_CCSWCR_SW_APSRC1 SBS_CCSWCR_SW_APSRC1_Msk /*!< PMOS compensation code for VDD Power Rail */
+#define SBS_CCSWCR_SW_ANSRC2_Pos (8U)
+#define SBS_CCSWCR_SW_ANSRC2_Msk (0xFUL << SBS_CCSWCR_SW_ANSRC2_Pos) /*!< 0x00000F00 */
+#define SBS_CCSWCR_SW_ANSRC2 SBS_CCSWCR_SW_ANSRC2_Msk /*!< NMOS compensation code for VDDIO Power Rail */
+#define SBS_CCSWCR_SW_APSRC2_Pos (12U)
+#define SBS_CCSWCR_SW_APSRC2_Msk (0xFUL << SBS_CCSWCR_SW_APSRC2_Pos) /*!< 0x0000F000 */
+#define SBS_CCSWCR_SW_APSRC2 SBS_CCSWCR_SW_APSRC2_Msk /*!< PMOS compensation code for VDDIO Power Rail */
+
+/****************** Bit definition for SBS_CFGR2 register ****************/
+#define SBS_CFGR2_CLL_Pos (0U)
+#define SBS_CFGR2_CLL_Msk (0x1UL << SBS_CFGR2_CLL_Pos) /*!< 0x00000001 */
+#define SBS_CFGR2_CLL SBS_CFGR2_CLL_Msk /*!< Core Lockup Lock */
+#define SBS_CFGR2_SEL_Pos (1U)
+#define SBS_CFGR2_SEL_Msk (0x1UL << SBS_CFGR2_SEL_Pos) /*!< 0x00000002 */
+#define SBS_CFGR2_SEL SBS_CFGR2_SEL_Msk /*!< SRAM ECC Lock */
+#define SBS_CFGR2_PVDL_Pos (2U)
+#define SBS_CFGR2_PVDL_Msk (0x1UL << SBS_CFGR2_PVDL_Pos) /*!< 0x00000004 */
+#define SBS_CFGR2_PVDL SBS_CFGR2_PVDL_Msk /*!< PVD Lock */
+#define SBS_CFGR2_ECCL_Pos (3U)
+#define SBS_CFGR2_ECCL_Msk (0x1UL << SBS_CFGR2_ECCL_Pos) /*!< 0x00000008 */
+#define SBS_CFGR2_ECCL SBS_CFGR2_ECCL_Msk /*!< Flash ECC Lock*/
+
+/****************** Bit definition for SBS_CNSLCKR register **************/
+#define SBS_CNSLCKR_LOCKNSVTOR_Pos (0U)
+#define SBS_CNSLCKR_LOCKNSVTOR_Msk (0x1UL << SBS_CNSLCKR_LOCKNSVTOR_Pos) /*!< 0x00000001 */
+#define SBS_CNSLCKR_LOCKNSVTOR SBS_CNSLCKR_LOCKNSVTOR_Msk /*!< Disable VTOR_NS register writes by SW or debug agent */
+#define SBS_CNSLCKR_LOCKNSMPU_Pos (1U)
+#define SBS_CNSLCKR_LOCKNSMPU_Msk (0x1UL << SBS_CNSLCKR_LOCKNSMPU_Pos) /*!< 0x00000002 */
+#define SBS_CNSLCKR_LOCKNSMPU SBS_CNSLCKR_LOCKNSMPU_Msk /*!< Disable Non-Secure MPU registers writes by SW or debug agent */
+
+/****************** Bit definition for SBS_ECCNMIR register ***************/
+#define SBS_ECCNMIR_ECCNMI_MASK_EN_Pos (0U)
+#define SBS_ECCNMIR_ECCNMI_MASK_EN_Msk (0x1UL << SBS_ECCNMIR_ECCNMI_MASK_EN_Pos) /*!< 0x00000001 */
+#define SBS_ECCNMIR_ECCNMI_MASK_EN SBS_ECCNMIR_ECCNMI_MASK_EN_Msk /*!< Disable NMI in case of double ECC error in flash interface */
+
+/*****************************************************************************/
+/* */
+/* Global TrustZone Control */
+/* */
+/*****************************************************************************/
+
+/******************* Bits definition for GTZC_TZSC_MPCWM_CFGR register **********/
+#define GTZC_TZSC_MPCWM_CFGR_SREN_Pos (0U)
+#define GTZC_TZSC_MPCWM_CFGR_SREN_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_SREN_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_SREN GTZC_TZSC_MPCWM_CFGR_SREN_Msk
+#define GTZC_TZSC_MPCWM_CFGR_SRLOCK_Pos (1U)
+#define GTZC_TZSC_MPCWM_CFGR_SRLOCK_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_SRLOCK_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_SRLOCK GTZC_TZSC_MPCWM_CFGR_SRLOCK_Msk
+#define GTZC_TZSC_MPCWM_CFGR_PRIV_Pos (9U)
+#define GTZC_TZSC_MPCWM_CFGR_PRIV_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_PRIV_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_PRIV GTZC_TZSC_MPCWM_CFGR_PRIV_Msk
+
+/******************* Bits definition for GTZC_TZSC_MPCWMR register **************/
+#define GTZC_TZSC_MPCWMR_SUBZ_START_Pos (0U)
+#define GTZC_TZSC_MPCWMR_SUBZ_START_Msk (0x7FFUL << GTZC_TZSC_MPCWMR_SUBZ_START_Pos)
+#define GTZC_TZSC_MPCWMR_SUBZ_START GTZC_TZSC_MPCWMR_SUBZ_START_Msk
+#define GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Pos (16U)
+#define GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Msk (0xFFFUL << GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Pos)
+#define GTZC_TZSC_MPCWMR_SUBZ_LENGTH GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Msk
+
+/******* Bits definition for TZSC _SECCFGRx/_PRIVCFGRx registers *****/
+
+/*************** Bits definition for register x=1 (TZSC1) *************/
+#define GTZC_CFGR1_TIM2_Pos (0U)
+#define GTZC_CFGR1_TIM2_Msk (0x01UL << GTZC_CFGR1_TIM2_Pos)
+#define GTZC_CFGR1_TIM3_Pos (1U)
+#define GTZC_CFGR1_TIM3_Msk (0x01UL << GTZC_CFGR1_TIM3_Pos)
+#define GTZC_CFGR1_TIM6_Pos (4U)
+#define GTZC_CFGR1_TIM6_Msk (0x01UL << GTZC_CFGR1_TIM6_Pos)
+#define GTZC_CFGR1_TIM7_Pos (5U)
+#define GTZC_CFGR1_TIM7_Msk (0x01UL << GTZC_CFGR1_TIM7_Pos)
+#define GTZC_CFGR1_WWDG_Pos (9U)
+#define GTZC_CFGR1_WWDG_Msk (0x01UL << GTZC_CFGR1_WWDG_Pos)
+#define GTZC_CFGR1_IWDG_Pos (10U)
+#define GTZC_CFGR1_IWDG_Msk (0x01UL << GTZC_CFGR1_IWDG_Pos)
+#define GTZC_CFGR1_SPI2_Pos (11U)
+#define GTZC_CFGR1_SPI2_Msk (0x01UL << GTZC_CFGR1_SPI2_Pos)
+#define GTZC_CFGR1_SPI3_Pos (12U)
+#define GTZC_CFGR1_SPI3_Msk (0x01UL << GTZC_CFGR1_SPI3_Pos)
+#define GTZC_CFGR1_USART2_Pos (13U)
+#define GTZC_CFGR1_USART2_Msk (0x01UL << GTZC_CFGR1_USART2_Pos)
+#define GTZC_CFGR1_USART3_Pos (14U)
+#define GTZC_CFGR1_USART3_Msk (0x01UL << GTZC_CFGR1_USART3_Pos)
+#define GTZC_CFGR1_I2C1_Pos (17U)
+#define GTZC_CFGR1_I2C1_Msk (0x01UL << GTZC_CFGR1_I2C1_Pos)
+#define GTZC_CFGR1_I2C2_Pos (18U)
+#define GTZC_CFGR1_I2C2_Msk (0x01UL << GTZC_CFGR1_I2C2_Pos)
+#define GTZC_CFGR1_I3C1_Pos (19U)
+#define GTZC_CFGR1_I3C1_Msk (0x01UL << GTZC_CFGR1_I3C1_Pos)
+#define GTZC_CFGR1_CRS_Pos (20U)
+#define GTZC_CFGR1_CRS_Msk (0x01UL << GTZC_CFGR1_CRS_Pos)
+#define GTZC_CFGR1_DAC1_Pos (25U)
+#define GTZC_CFGR1_DAC1_Msk (0x01UL << GTZC_CFGR1_DAC1_Pos)
+#define GTZC_CFGR1_DTS_Pos (30U)
+#define GTZC_CFGR1_DTS_Msk (0x01UL << GTZC_CFGR1_DTS_Pos)
+#define GTZC_CFGR1_LPTIM2_Pos (31U)
+#define GTZC_CFGR1_LPTIM2_Msk (0x01UL << GTZC_CFGR1_LPTIM2_Pos)
+
+/*************** Bits definition for register x=2 (TZSC1) *************/
+#define GTZC_CFGR2_FDCAN1_Pos (0U)
+#define GTZC_CFGR2_FDCAN1_Msk (0x01UL << GTZC_CFGR2_FDCAN1_Pos)
+#define GTZC_CFGR2_OPAMP_Pos (3U)
+#define GTZC_CFGR2_OPAMP_Msk (0x01UL << GTZC_CFGR2_OPAMP_Pos)
+#define GTZC_CFGR2_COMP_Pos (4U)
+#define GTZC_CFGR2_COMP_Msk (0x01UL << GTZC_CFGR2_COMP_Pos)
+#define GTZC_CFGR2_TIM1_Pos (8U)
+#define GTZC_CFGR2_TIM1_Msk (0x01UL << GTZC_CFGR2_TIM1_Pos)
+#define GTZC_CFGR2_SPI1_Pos (9U)
+#define GTZC_CFGR2_SPI1_Msk (0x01UL << GTZC_CFGR2_SPI1_Pos)
+#define GTZC_CFGR2_USART1_Pos (11U)
+#define GTZC_CFGR2_USART1_Msk (0x01UL << GTZC_CFGR2_USART1_Pos)
+#define GTZC_CFGR2_USB_Pos (19U)
+#define GTZC_CFGR2_USB_Msk (0x01UL << GTZC_CFGR2_USB_Pos)
+#define GTZC_CFGR2_LPUART1_Pos (25U)
+#define GTZC_CFGR2_LPUART1_Msk (0x01UL << GTZC_CFGR2_LPUART1_Pos)
+#define GTZC_CFGR2_LPTIM1_Pos (28U)
+#define GTZC_CFGR2_LPTIM1_Msk (0x01UL << GTZC_CFGR2_LPTIM1_Pos)
+
+/*************** Bits definition for register x=3 (TZSC1) *************/
+#define GTZC_CFGR3_I3C2_Pos (2U)
+#define GTZC_CFGR3_I3C2_Msk (0x01UL << GTZC_CFGR3_I3C2_Pos)
+#define GTZC_CFGR3_CRC_Pos (8U)
+#define GTZC_CFGR3_CRC_Msk (0x01UL << GTZC_CFGR3_CRC_Pos)
+#define GTZC_CFGR3_ICACHE_REG_Pos (12U)
+#define GTZC_CFGR3_ICACHE_REG_Msk (0x01UL << GTZC_CFGR3_ICACHE_REG_Pos)
+#define GTZC_CFGR3_ADC_Pos (14U)
+#define GTZC_CFGR3_ADC_Msk (0x01UL << GTZC_CFGR3_ADC_Pos)
+#define GTZC_CFGR3_HASH_Pos (17U)
+#define GTZC_CFGR3_HASH_Msk (0x01UL << GTZC_CFGR3_HASH_Pos)
+#define GTZC_CFGR3_RNG_Pos (18U)
+#define GTZC_CFGR3_RNG_Msk (0x01UL << GTZC_CFGR3_RNG_Pos)
+#define GTZC_CFGR3_RAMCFG_Pos (26U)
+#define GTZC_CFGR3_RAMCFG_Msk (0x01UL << GTZC_CFGR3_RAMCFG_Pos)
+
+/*************** Bits definition for register x=4 (TZSC1) *************/
+#define GTZC_CFGR4_GPDMA1_Pos (0U)
+#define GTZC_CFGR4_GPDMA1_Msk (0x01UL << GTZC_CFGR4_GPDMA1_Pos)
+#define GTZC_CFGR4_GPDMA2_Pos (1U)
+#define GTZC_CFGR4_GPDMA2_Msk (0x01UL << GTZC_CFGR4_GPDMA2_Pos)
+#define GTZC_CFGR4_FLASH_Pos (2U)
+#define GTZC_CFGR4_FLASH_Msk (0x01UL << GTZC_CFGR4_FLASH_Pos)
+#define GTZC_CFGR4_FLASH_REG_Pos (3U)
+#define GTZC_CFGR4_FLASH_REG_Msk (0x01UL << GTZC_CFGR4_FLASH_REG_Pos)
+
+#define GTZC_CFGR4_SBS_Pos (6U)
+#define GTZC_CFGR4_SBS_Msk (0x01UL << GTZC_CFGR4_SBS_Pos)
+#define GTZC_CFGR4_RTC_Pos (7U)
+#define GTZC_CFGR4_RTC_Msk (0x01UL << GTZC_CFGR4_RTC_Pos)
+#define GTZC_CFGR4_TAMP_Pos (8U)
+#define GTZC_CFGR4_TAMP_Msk (0x01UL << GTZC_CFGR4_TAMP_Pos)
+#define GTZC_CFGR4_PWR_Pos (9U)
+#define GTZC_CFGR4_PWR_Msk (0x01UL << GTZC_CFGR4_PWR_Pos)
+#define GTZC_CFGR4_RCC_Pos (10U)
+#define GTZC_CFGR4_RCC_Msk (0x01UL << GTZC_CFGR4_RCC_Pos)
+#define GTZC_CFGR4_EXTI_Pos (11U)
+#define GTZC_CFGR4_EXTI_Msk (0x01UL << GTZC_CFGR4_EXTI_Pos)
+#define GTZC_CFGR4_TZSC_Pos (16U)
+#define GTZC_CFGR4_TZSC_Msk (0x01UL << GTZC_CFGR4_TZSC_Pos)
+#define GTZC_CFGR4_BKPSRAM_Pos (20U)
+#define GTZC_CFGR4_BKPSRAM_Msk (0x01UL << GTZC_CFGR4_BKPSRAM_Pos)
+#define GTZC_CFGR4_SRAM1_Pos (24U)
+#define GTZC_CFGR4_SRAM1_Msk (0x01UL << GTZC_CFGR4_SRAM1_Pos)
+#define GTZC_CFGR4_MPCBB1_REG_Pos (25U)
+#define GTZC_CFGR4_MPCBB1_REG_Msk (0x01UL << GTZC_CFGR4_MPCBB1_REG_Pos)
+#define GTZC_CFGR4_SRAM2_Pos (26U)
+#define GTZC_CFGR4_SRAM2_Msk (0x01UL << GTZC_CFGR4_SRAM2_Pos)
+#define GTZC_CFGR4_MPCBB2_REG_Pos (27U)
+#define GTZC_CFGR4_MPCBB2_REG_Msk (0x01UL << GTZC_CFGR4_MPCBB2_REG_Pos)
+
+
+
+/******************* Bits definition for GTZC_TZSC_PRIVCFGR1 register ***************/
+#define GTZC_TZSC1_PRIVCFGR1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZSC1_PRIVCFGR1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZSC1_PRIVCFGR1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZSC1_PRIVCFGR1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZSC1_PRIVCFGR1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZSC1_PRIVCFGR1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZSC1_PRIVCFGR1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZSC1_PRIVCFGR1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZSC1_PRIVCFGR1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZSC1_PRIVCFGR1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZSC1_PRIVCFGR1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZSC1_PRIVCFGR1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZSC1_PRIVCFGR1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZSC1_PRIVCFGR1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZSC1_PRIVCFGR1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZSC1_PRIVCFGR1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZSC1_PRIVCFGR1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZSC1_PRIVCFGR1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZSC_PRIVCFGR2 register ***************/
+#define GTZC_TZSC1_PRIVCFGR2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZSC1_PRIVCFGR2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZSC1_PRIVCFGR2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/******************* Bits definition for GTZC_TZSC_PRIVCFGR3 register ***************/
+#define GTZC_TZSC1_PRIVCFGR3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZSC1_PRIVCFGR3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZSC1_PRIVCFGR3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZSC1_PRIVCFGR3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZSC1_PRIVCFGR3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZSC1_PRIVCFGR3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZSC1_PRIVCFGR3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZSC1_PRIVCFGR3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZSC1_PRIVCFGR3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZSC1_PRIVCFGR3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZSC1_PRIVCFGR3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+
+
+
+
+/******************************************************************************/
+/* */
+/* Universal Synchronous Asynchronous Receiver Transmitter (USART) */
+/* */
+/******************************************************************************/
+#define USART_DMAREQUESTS_SW_WA
+/****************** Bit definition for USART_CR1 register *******************/
+#define USART_CR1_UE_Pos (0U)
+#define USART_CR1_UE_Msk (0x1UL << USART_CR1_UE_Pos) /*!< 0x00000001 */
+#define USART_CR1_UE USART_CR1_UE_Msk /*!< USART Enable */
+#define USART_CR1_UESM_Pos (1U)
+#define USART_CR1_UESM_Msk (0x1UL << USART_CR1_UESM_Pos) /*!< 0x00000002 */
+#define USART_CR1_UESM USART_CR1_UESM_Msk /*!< USART Enable in STOP Mode */
+#define USART_CR1_RE_Pos (2U)
+#define USART_CR1_RE_Msk (0x1UL << USART_CR1_RE_Pos) /*!< 0x00000004 */
+#define USART_CR1_RE USART_CR1_RE_Msk /*!< Receiver Enable */
+#define USART_CR1_TE_Pos (3U)
+#define USART_CR1_TE_Msk (0x1UL << USART_CR1_TE_Pos) /*!< 0x00000008 */
+#define USART_CR1_TE USART_CR1_TE_Msk /*!< Transmitter Enable */
+#define USART_CR1_IDLEIE_Pos (4U)
+#define USART_CR1_IDLEIE_Msk (0x1UL << USART_CR1_IDLEIE_Pos) /*!< 0x00000010 */
+#define USART_CR1_IDLEIE USART_CR1_IDLEIE_Msk /*!< IDLE Interrupt Enable */
+#define USART_CR1_RXNEIE_Pos (5U)
+#define USART_CR1_RXNEIE_Msk (0x1UL << USART_CR1_RXNEIE_Pos) /*!< 0x00000020 */
+#define USART_CR1_RXNEIE USART_CR1_RXNEIE_Msk /*!< RXNE Interrupt Enable */
+#define USART_CR1_RXNEIE_RXFNEIE_Pos USART_CR1_RXNEIE_Pos
+#define USART_CR1_RXNEIE_RXFNEIE_Msk USART_CR1_RXNEIE_Msk /*!< 0x00000020 */
+#define USART_CR1_RXNEIE_RXFNEIE USART_CR1_RXNEIE_Msk /*!< RXNE and RX FIFO Not Empty Interrupt Enable */
+#define USART_CR1_TCIE_Pos (6U)
+#define USART_CR1_TCIE_Msk (0x1UL << USART_CR1_TCIE_Pos) /*!< 0x00000040 */
+#define USART_CR1_TCIE USART_CR1_TCIE_Msk /*!< Transmission Complete Interrupt Enable */
+#define USART_CR1_TXEIE_Pos (7U)
+#define USART_CR1_TXEIE_Msk (0x1UL << USART_CR1_TXEIE_Pos) /*!< 0x00000080 */
+#define USART_CR1_TXEIE USART_CR1_TXEIE_Msk /*!< TXE Interrupt Enable */
+#define USART_CR1_TXEIE_TXFNFIE_Pos (7U)
+#define USART_CR1_TXEIE_TXFNFIE_Msk (0x1UL << USART_CR1_TXEIE_Pos) /*!< 0x00000080 */
+#define USART_CR1_TXEIE_TXFNFIE USART_CR1_TXEIE /*!< TXE and TX FIFO Not Full Interrupt Enable */
+#define USART_CR1_PEIE_Pos (8U)
+#define USART_CR1_PEIE_Msk (0x1UL << USART_CR1_PEIE_Pos) /*!< 0x00000100 */
+#define USART_CR1_PEIE USART_CR1_PEIE_Msk /*!< PE Interrupt Enable */
+#define USART_CR1_PS_Pos (9U)
+#define USART_CR1_PS_Msk (0x1UL << USART_CR1_PS_Pos) /*!< 0x00000200 */
+#define USART_CR1_PS USART_CR1_PS_Msk /*!< Parity Selection */
+#define USART_CR1_PCE_Pos (10U)
+#define USART_CR1_PCE_Msk (0x1UL << USART_CR1_PCE_Pos) /*!< 0x00000400 */
+#define USART_CR1_PCE USART_CR1_PCE_Msk /*!< Parity Control Enable */
+#define USART_CR1_WAKE_Pos (11U)
+#define USART_CR1_WAKE_Msk (0x1UL << USART_CR1_WAKE_Pos) /*!< 0x00000800 */
+#define USART_CR1_WAKE USART_CR1_WAKE_Msk /*!< Receiver Wakeup method */
+#define USART_CR1_M_Pos (12U)
+#define USART_CR1_M_Msk (0x10001UL << USART_CR1_M_Pos) /*!< 0x10001000 */
+#define USART_CR1_M USART_CR1_M_Msk /*!< Word length */
+#define USART_CR1_M0_Pos (12U)
+#define USART_CR1_M0_Msk (0x1UL << USART_CR1_M0_Pos) /*!< 0x00001000 */
+#define USART_CR1_M0 USART_CR1_M0_Msk /*!< Word length - Bit 0 */
+#define USART_CR1_MME_Pos (13U)
+#define USART_CR1_MME_Msk (0x1UL << USART_CR1_MME_Pos) /*!< 0x00002000 */
+#define USART_CR1_MME USART_CR1_MME_Msk /*!< Mute Mode Enable */
+#define USART_CR1_CMIE_Pos (14U)
+#define USART_CR1_CMIE_Msk (0x1UL << USART_CR1_CMIE_Pos) /*!< 0x00004000 */
+#define USART_CR1_CMIE USART_CR1_CMIE_Msk /*!< Character match interrupt enable */
+#define USART_CR1_OVER8_Pos (15U)
+#define USART_CR1_OVER8_Msk (0x1UL << USART_CR1_OVER8_Pos) /*!< 0x00008000 */
+#define USART_CR1_OVER8 USART_CR1_OVER8_Msk /*!< Oversampling by 8-bit or 16-bit mode */
+#define USART_CR1_DEDT_Pos (16U)
+#define USART_CR1_DEDT_Msk (0x1FUL << USART_CR1_DEDT_Pos) /*!< 0x001F0000 */
+#define USART_CR1_DEDT USART_CR1_DEDT_Msk /*!< DEDT[4:0] bits (Driver Enable Deassertion Time) */
+#define USART_CR1_DEDT_0 (0x01UL << USART_CR1_DEDT_Pos) /*!< 0x00010000 */
+#define USART_CR1_DEDT_1 (0x02UL << USART_CR1_DEDT_Pos) /*!< 0x00020000 */
+#define USART_CR1_DEDT_2 (0x04UL << USART_CR1_DEDT_Pos) /*!< 0x00040000 */
+#define USART_CR1_DEDT_3 (0x08UL << USART_CR1_DEDT_Pos) /*!< 0x00080000 */
+#define USART_CR1_DEDT_4 (0x10UL << USART_CR1_DEDT_Pos) /*!< 0x00100000 */
+#define USART_CR1_DEAT_Pos (21U)
+#define USART_CR1_DEAT_Msk (0x1FUL << USART_CR1_DEAT_Pos) /*!< 0x03E00000 */
+#define USART_CR1_DEAT USART_CR1_DEAT_Msk /*!< DEAT[4:0] bits (Driver Enable Assertion Time) */
+#define USART_CR1_DEAT_0 (0x01UL << USART_CR1_DEAT_Pos) /*!< 0x00200000 */
+#define USART_CR1_DEAT_1 (0x02UL << USART_CR1_DEAT_Pos) /*!< 0x00400000 */
+#define USART_CR1_DEAT_2 (0x04UL << USART_CR1_DEAT_Pos) /*!< 0x00800000 */
+#define USART_CR1_DEAT_3 (0x08UL << USART_CR1_DEAT_Pos) /*!< 0x01000000 */
+#define USART_CR1_DEAT_4 (0x10UL << USART_CR1_DEAT_Pos) /*!< 0x02000000 */
+#define USART_CR1_RTOIE_Pos (26U)
+#define USART_CR1_RTOIE_Msk (0x1UL << USART_CR1_RTOIE_Pos) /*!< 0x04000000 */
+#define USART_CR1_RTOIE USART_CR1_RTOIE_Msk /*!< Receive Time Out interrupt enable */
+#define USART_CR1_EOBIE_Pos (27U)
+#define USART_CR1_EOBIE_Msk (0x1UL << USART_CR1_EOBIE_Pos) /*!< 0x08000000 */
+#define USART_CR1_EOBIE USART_CR1_EOBIE_Msk /*!< End of Block interrupt enable */
+#define USART_CR1_M1_Pos (28U)
+#define USART_CR1_M1_Msk (0x1UL << USART_CR1_M1_Pos) /*!< 0x10000000 */
+#define USART_CR1_M1 USART_CR1_M1_Msk /*!< Word length - Bit 1 */
+#define USART_CR1_FIFOEN_Pos (29U)
+#define USART_CR1_FIFOEN_Msk (0x1UL << USART_CR1_FIFOEN_Pos) /*!< 0x20000000 */
+#define USART_CR1_FIFOEN USART_CR1_FIFOEN_Msk /*!< FIFO mode enable */
+#define USART_CR1_TXFEIE_Pos (30U)
+#define USART_CR1_TXFEIE_Msk (0x1UL << USART_CR1_TXFEIE_Pos) /*!< 0x40000000 */
+#define USART_CR1_TXFEIE USART_CR1_TXFEIE_Msk /*!< TXFIFO empty interrupt enable */
+#define USART_CR1_RXFFIE_Pos (31U)
+#define USART_CR1_RXFFIE_Msk (0x1UL << USART_CR1_RXFFIE_Pos) /*!< 0x80000000 */
+#define USART_CR1_RXFFIE USART_CR1_RXFFIE_Msk /*!< RXFIFO Full interrupt enable */
+
+/****************** Bit definition for USART_CR2 register *******************/
+#define USART_CR2_SLVEN_Pos (0U)
+#define USART_CR2_SLVEN_Msk (0x1UL << USART_CR2_SLVEN_Pos) /*!< 0x00000001 */
+#define USART_CR2_SLVEN USART_CR2_SLVEN_Msk /*!< Synchronous Slave mode enable */
+#define USART_CR2_DIS_NSS_Pos (3U)
+#define USART_CR2_DIS_NSS_Msk (0x1UL << USART_CR2_DIS_NSS_Pos) /*!< 0x00000008 */
+#define USART_CR2_DIS_NSS USART_CR2_DIS_NSS_Msk /*!< Slave Select (NSS) pin management */
+#define USART_CR2_ADDM7_Pos (4U)
+#define USART_CR2_ADDM7_Msk (0x1UL << USART_CR2_ADDM7_Pos) /*!< 0x00000010 */
+#define USART_CR2_ADDM7 USART_CR2_ADDM7_Msk /*!< 7-bit or 4-bit Address Detection */
+#define USART_CR2_LBDL_Pos (5U)
+#define USART_CR2_LBDL_Msk (0x1UL << USART_CR2_LBDL_Pos) /*!< 0x00000020 */
+#define USART_CR2_LBDL USART_CR2_LBDL_Msk /*!< LIN Break Detection Length */
+#define USART_CR2_LBDIE_Pos (6U)
+#define USART_CR2_LBDIE_Msk (0x1UL << USART_CR2_LBDIE_Pos) /*!< 0x00000040 */
+#define USART_CR2_LBDIE USART_CR2_LBDIE_Msk /*!< LIN Break Detection Interrupt Enable */
+#define USART_CR2_LBCL_Pos (8U)
+#define USART_CR2_LBCL_Msk (0x1UL << USART_CR2_LBCL_Pos) /*!< 0x00000100 */
+#define USART_CR2_LBCL USART_CR2_LBCL_Msk /*!< Last Bit Clock pulse */
+#define USART_CR2_CPHA_Pos (9U)
+#define USART_CR2_CPHA_Msk (0x1UL << USART_CR2_CPHA_Pos) /*!< 0x00000200 */
+#define USART_CR2_CPHA USART_CR2_CPHA_Msk /*!< Clock Phase */
+#define USART_CR2_CPOL_Pos (10U)
+#define USART_CR2_CPOL_Msk (0x1UL << USART_CR2_CPOL_Pos) /*!< 0x00000400 */
+#define USART_CR2_CPOL USART_CR2_CPOL_Msk /*!< Clock Polarity */
+#define USART_CR2_CLKEN_Pos (11U)
+#define USART_CR2_CLKEN_Msk (0x1UL << USART_CR2_CLKEN_Pos) /*!< 0x00000800 */
+#define USART_CR2_CLKEN USART_CR2_CLKEN_Msk /*!< Clock Enable */
+#define USART_CR2_STOP_Pos (12U)
+#define USART_CR2_STOP_Msk (0x3UL << USART_CR2_STOP_Pos) /*!< 0x00003000 */
+#define USART_CR2_STOP USART_CR2_STOP_Msk /*!< STOP[1:0] bits (STOP bits) */
+#define USART_CR2_STOP_0 (0x1UL << USART_CR2_STOP_Pos) /*!< 0x00001000 */
+#define USART_CR2_STOP_1 (0x2UL << USART_CR2_STOP_Pos) /*!< 0x00002000 */
+#define USART_CR2_LINEN_Pos (14U)
+#define USART_CR2_LINEN_Msk (0x1UL << USART_CR2_LINEN_Pos) /*!< 0x00004000 */
+#define USART_CR2_LINEN USART_CR2_LINEN_Msk /*!< LIN mode enable */
+#define USART_CR2_SWAP_Pos (15U)
+#define USART_CR2_SWAP_Msk (0x1UL << USART_CR2_SWAP_Pos) /*!< 0x00008000 */
+#define USART_CR2_SWAP USART_CR2_SWAP_Msk /*!< SWAP TX/RX pins */
+#define USART_CR2_RXINV_Pos (16U)
+#define USART_CR2_RXINV_Msk (0x1UL << USART_CR2_RXINV_Pos) /*!< 0x00010000 */
+#define USART_CR2_RXINV USART_CR2_RXINV_Msk /*!< RX pin active level inversion */
+#define USART_CR2_TXINV_Pos (17U)
+#define USART_CR2_TXINV_Msk (0x1UL << USART_CR2_TXINV_Pos) /*!< 0x00020000 */
+#define USART_CR2_TXINV USART_CR2_TXINV_Msk /*!< TX pin active level inversion */
+#define USART_CR2_DATAINV_Pos (18U)
+#define USART_CR2_DATAINV_Msk (0x1UL << USART_CR2_DATAINV_Pos) /*!< 0x00040000 */
+#define USART_CR2_DATAINV USART_CR2_DATAINV_Msk /*!< Binary data inversion */
+#define USART_CR2_MSBFIRST_Pos (19U)
+#define USART_CR2_MSBFIRST_Msk (0x1UL << USART_CR2_MSBFIRST_Pos) /*!< 0x00080000 */
+#define USART_CR2_MSBFIRST USART_CR2_MSBFIRST_Msk /*!< Most Significant Bit First */
+#define USART_CR2_ABREN_Pos (20U)
+#define USART_CR2_ABREN_Msk (0x1UL << USART_CR2_ABREN_Pos) /*!< 0x00100000 */
+#define USART_CR2_ABREN USART_CR2_ABREN_Msk /*!< Auto Baud-Rate Enable*/
+#define USART_CR2_ABRMODE_Pos (21U)
+#define USART_CR2_ABRMODE_Msk (0x3UL << USART_CR2_ABRMODE_Pos) /*!< 0x00600000 */
+#define USART_CR2_ABRMODE USART_CR2_ABRMODE_Msk /*!< ABRMOD[1:0] bits (Auto Baud-Rate Mode) */
+#define USART_CR2_ABRMODE_0 (0x1UL << USART_CR2_ABRMODE_Pos) /*!< 0x00200000 */
+#define USART_CR2_ABRMODE_1 (0x2UL << USART_CR2_ABRMODE_Pos) /*!< 0x00400000 */
+#define USART_CR2_RTOEN_Pos (23U)
+#define USART_CR2_RTOEN_Msk (0x1UL << USART_CR2_RTOEN_Pos) /*!< 0x00800000 */
+#define USART_CR2_RTOEN USART_CR2_RTOEN_Msk /*!< Receiver Time-Out enable */
+#define USART_CR2_ADD_Pos (24U)
+#define USART_CR2_ADD_Msk (0xFFUL << USART_CR2_ADD_Pos) /*!< 0xFF000000 */
+#define USART_CR2_ADD USART_CR2_ADD_Msk /*!< Address of the USART node */
+
+/****************** Bit definition for USART_CR3 register *******************/
+#define USART_CR3_EIE_Pos (0U)
+#define USART_CR3_EIE_Msk (0x1UL << USART_CR3_EIE_Pos) /*!< 0x00000001 */
+#define USART_CR3_EIE USART_CR3_EIE_Msk /*!< Error Interrupt Enable */
+#define USART_CR3_IREN_Pos (1U)
+#define USART_CR3_IREN_Msk (0x1UL << USART_CR3_IREN_Pos) /*!< 0x00000002 */
+#define USART_CR3_IREN USART_CR3_IREN_Msk /*!< IrDA mode Enable */
+#define USART_CR3_IRLP_Pos (2U)
+#define USART_CR3_IRLP_Msk (0x1UL << USART_CR3_IRLP_Pos) /*!< 0x00000004 */
+#define USART_CR3_IRLP USART_CR3_IRLP_Msk /*!< IrDA Low-Power */
+#define USART_CR3_HDSEL_Pos (3U)
+#define USART_CR3_HDSEL_Msk (0x1UL << USART_CR3_HDSEL_Pos) /*!< 0x00000008 */
+#define USART_CR3_HDSEL USART_CR3_HDSEL_Msk /*!< Half-Duplex Selection */
+#define USART_CR3_NACK_Pos (4U)
+#define USART_CR3_NACK_Msk (0x1UL << USART_CR3_NACK_Pos) /*!< 0x00000010 */
+#define USART_CR3_NACK USART_CR3_NACK_Msk /*!< SmartCard NACK enable */
+#define USART_CR3_SCEN_Pos (5U)
+#define USART_CR3_SCEN_Msk (0x1UL << USART_CR3_SCEN_Pos) /*!< 0x00000020 */
+#define USART_CR3_SCEN USART_CR3_SCEN_Msk /*!< SmartCard mode enable */
+#define USART_CR3_DMAR_Pos (6U)
+#define USART_CR3_DMAR_Msk (0x1UL << USART_CR3_DMAR_Pos) /*!< 0x00000040 */
+#define USART_CR3_DMAR USART_CR3_DMAR_Msk /*!< DMA Enable Receiver */
+#define USART_CR3_DMAT_Pos (7U)
+#define USART_CR3_DMAT_Msk (0x1UL << USART_CR3_DMAT_Pos) /*!< 0x00000080 */
+#define USART_CR3_DMAT USART_CR3_DMAT_Msk /*!< DMA Enable Transmitter */
+#define USART_CR3_RTSE_Pos (8U)
+#define USART_CR3_RTSE_Msk (0x1UL << USART_CR3_RTSE_Pos) /*!< 0x00000100 */
+#define USART_CR3_RTSE USART_CR3_RTSE_Msk /*!< RTS Enable */
+#define USART_CR3_CTSE_Pos (9U)
+#define USART_CR3_CTSE_Msk (0x1UL << USART_CR3_CTSE_Pos) /*!< 0x00000200 */
+#define USART_CR3_CTSE USART_CR3_CTSE_Msk /*!< CTS Enable */
+#define USART_CR3_CTSIE_Pos (10U)
+#define USART_CR3_CTSIE_Msk (0x1UL << USART_CR3_CTSIE_Pos) /*!< 0x00000400 */
+#define USART_CR3_CTSIE USART_CR3_CTSIE_Msk /*!< CTS Interrupt Enable */
+#define USART_CR3_ONEBIT_Pos (11U)
+#define USART_CR3_ONEBIT_Msk (0x1UL << USART_CR3_ONEBIT_Pos) /*!< 0x00000800 */
+#define USART_CR3_ONEBIT USART_CR3_ONEBIT_Msk /*!< One sample bit method enable */
+#define USART_CR3_OVRDIS_Pos (12U)
+#define USART_CR3_OVRDIS_Msk (0x1UL << USART_CR3_OVRDIS_Pos) /*!< 0x00001000 */
+#define USART_CR3_OVRDIS USART_CR3_OVRDIS_Msk /*!< Overrun Disable */
+#define USART_CR3_DDRE_Pos (13U)
+#define USART_CR3_DDRE_Msk (0x1UL << USART_CR3_DDRE_Pos) /*!< 0x00002000 */
+#define USART_CR3_DDRE USART_CR3_DDRE_Msk /*!< DMA Disable on Reception Error */
+#define USART_CR3_DEM_Pos (14U)
+#define USART_CR3_DEM_Msk (0x1UL << USART_CR3_DEM_Pos) /*!< 0x00004000 */
+#define USART_CR3_DEM USART_CR3_DEM_Msk /*!< Driver Enable Mode */
+#define USART_CR3_DEP_Pos (15U)
+#define USART_CR3_DEP_Msk (0x1UL << USART_CR3_DEP_Pos) /*!< 0x00008000 */
+#define USART_CR3_DEP USART_CR3_DEP_Msk /*!< Driver Enable Polarity Selection */
+#define USART_CR3_SCARCNT_Pos (17U)
+#define USART_CR3_SCARCNT_Msk (0x7UL << USART_CR3_SCARCNT_Pos) /*!< 0x000E0000 */
+#define USART_CR3_SCARCNT USART_CR3_SCARCNT_Msk /*!< SCARCNT[2:0] bits (SmartCard Auto-Retry Count) */
+#define USART_CR3_SCARCNT_0 (0x1UL << USART_CR3_SCARCNT_Pos) /*!< 0x00020000 */
+#define USART_CR3_SCARCNT_1 (0x2UL << USART_CR3_SCARCNT_Pos) /*!< 0x00040000 */
+#define USART_CR3_SCARCNT_2 (0x4UL << USART_CR3_SCARCNT_Pos) /*!< 0x00080000 */
+#define USART_CR3_WUS_Pos (20U)
+#define USART_CR3_WUS_Msk (0x3UL << USART_CR3_WUS_Pos) /*!< 0x00300000 */
+#define USART_CR3_WUS USART_CR3_WUS_Msk /*!< WUS[1:0] bits (Wake UP Interrupt Flag Selection) */
+#define USART_CR3_WUS_0 (0x1UL << USART_CR3_WUS_Pos) /*!< 0x00100000 */
+#define USART_CR3_WUS_1 (0x2UL << USART_CR3_WUS_Pos) /*!< 0x00200000 */
+#define USART_CR3_WUFIE_Pos (22U)
+#define USART_CR3_WUFIE_Msk (0x1UL << USART_CR3_WUFIE_Pos) /*!< 0x00400000 */
+#define USART_CR3_WUFIE USART_CR3_WUFIE_Msk /*!< Wake Up Interrupt Enable */
+#define USART_CR3_TXFTIE_Pos (23U)
+#define USART_CR3_TXFTIE_Msk (0x1UL << USART_CR3_TXFTIE_Pos) /*!< 0x00800000 */
+#define USART_CR3_TXFTIE USART_CR3_TXFTIE_Msk /*!< TXFIFO threshold interrupt enable */
+#define USART_CR3_TCBGTIE_Pos (24U)
+#define USART_CR3_TCBGTIE_Msk (0x1UL << USART_CR3_TCBGTIE_Pos) /*!< 0x01000000 */
+#define USART_CR3_TCBGTIE USART_CR3_TCBGTIE_Msk /*!< Transmission Complete Before Guard Time Interrupt Enable */
+#define USART_CR3_RXFTCFG_Pos (25U)
+#define USART_CR3_RXFTCFG_Msk (0x7UL << USART_CR3_RXFTCFG_Pos) /*!< 0x0E000000 */
+#define USART_CR3_RXFTCFG USART_CR3_RXFTCFG_Msk /*!< RXFIFO FIFO threshold configuration */
+#define USART_CR3_RXFTCFG_0 (0x1UL << USART_CR3_RXFTCFG_Pos) /*!< 0x02000000 */
+#define USART_CR3_RXFTCFG_1 (0x2UL << USART_CR3_RXFTCFG_Pos) /*!< 0x04000000 */
+#define USART_CR3_RXFTCFG_2 (0x4UL << USART_CR3_RXFTCFG_Pos) /*!< 0x08000000 */
+#define USART_CR3_RXFTIE_Pos (28U)
+#define USART_CR3_RXFTIE_Msk (0x1UL << USART_CR3_RXFTIE_Pos) /*!< 0x10000000 */
+#define USART_CR3_RXFTIE USART_CR3_RXFTIE_Msk /*!< RXFIFO threshold interrupt enable */
+#define USART_CR3_TXFTCFG_Pos (29U)
+#define USART_CR3_TXFTCFG_Msk (0x7UL << USART_CR3_TXFTCFG_Pos) /*!< 0xE0000000 */
+#define USART_CR3_TXFTCFG USART_CR3_TXFTCFG_Msk /*!< TXFIFO threshold configuration */
+#define USART_CR3_TXFTCFG_0 (0x1UL << USART_CR3_TXFTCFG_Pos) /*!< 0x20000000 */
+#define USART_CR3_TXFTCFG_1 (0x2UL << USART_CR3_TXFTCFG_Pos) /*!< 0x40000000 */
+#define USART_CR3_TXFTCFG_2 (0x4UL << USART_CR3_TXFTCFG_Pos) /*!< 0x80000000 */
+
+/****************** Bit definition for USART_BRR register *******************/
+#define USART_BRR_LPUART_Pos (0U)
+#define USART_BRR_LPUART_Msk (0xFFFFFUL << USART_BRR_LPUART_Pos) /*!< 0x000FFFFF */
+#define USART_BRR_LPUART USART_BRR_LPUART_Msk /*!< LPUART Baud rate register [19:0] */
+#define USART_BRR_BRR ((uint16_t)0xFFFF) /*!< USART Baud rate register [15:0] */
+
+/****************** Bit definition for USART_GTPR register ******************/
+#define USART_GTPR_PSC_Pos (0U)
+#define USART_GTPR_PSC_Msk (0xFFUL << USART_GTPR_PSC_Pos) /*!< 0x000000FF */
+#define USART_GTPR_PSC USART_GTPR_PSC_Msk /*!< PSC[7:0] bits (Prescaler value) */
+#define USART_GTPR_GT_Pos (8U)
+#define USART_GTPR_GT_Msk (0xFFUL << USART_GTPR_GT_Pos) /*!< 0x0000FF00 */
+#define USART_GTPR_GT USART_GTPR_GT_Msk /*!< GT[7:0] bits (Guard time value) */
+
+/******************* Bit definition for USART_RTOR register *****************/
+#define USART_RTOR_RTO_Pos (0U)
+#define USART_RTOR_RTO_Msk (0xFFFFFFUL << USART_RTOR_RTO_Pos) /*!< 0x00FFFFFF */
+#define USART_RTOR_RTO USART_RTOR_RTO_Msk /*!< Receiver Time Out Value */
+#define USART_RTOR_BLEN_Pos (24U)
+#define USART_RTOR_BLEN_Msk (0xFFUL << USART_RTOR_BLEN_Pos) /*!< 0xFF000000 */
+#define USART_RTOR_BLEN USART_RTOR_BLEN_Msk /*!< Block Length */
+
+/******************* Bit definition for USART_RQR register ******************/
+#define USART_RQR_ABRRQ ((uint16_t)0x0001) /*!< Auto-Baud Rate Request */
+#define USART_RQR_SBKRQ ((uint16_t)0x0002) /*!< Send Break Request */
+#define USART_RQR_MMRQ ((uint16_t)0x0004) /*!< Mute Mode Request */
+#define USART_RQR_RXFRQ ((uint16_t)0x0008) /*!< Receive Data flush Request */
+#define USART_RQR_TXFRQ ((uint16_t)0x0010) /*!< Transmit data flush Request */
+
+/******************* Bit definition for USART_ISR register ******************/
+#define USART_ISR_PE_Pos (0U)
+#define USART_ISR_PE_Msk (0x1UL << USART_ISR_PE_Pos) /*!< 0x00000001 */
+#define USART_ISR_PE USART_ISR_PE_Msk /*!< Parity Error */
+#define USART_ISR_FE_Pos (1U)
+#define USART_ISR_FE_Msk (0x1UL << USART_ISR_FE_Pos) /*!< 0x00000002 */
+#define USART_ISR_FE USART_ISR_FE_Msk /*!< Framing Error */
+#define USART_ISR_NE_Pos (2U)
+#define USART_ISR_NE_Msk (0x1UL << USART_ISR_NE_Pos) /*!< 0x00000004 */
+#define USART_ISR_NE USART_ISR_NE_Msk /*!< Noise detected Flag */
+#define USART_ISR_ORE_Pos (3U)
+#define USART_ISR_ORE_Msk (0x1UL << USART_ISR_ORE_Pos) /*!< 0x00000008 */
+#define USART_ISR_ORE USART_ISR_ORE_Msk /*!< OverRun Error */
+#define USART_ISR_IDLE_Pos (4U)
+#define USART_ISR_IDLE_Msk (0x1UL << USART_ISR_IDLE_Pos) /*!< 0x00000010 */
+#define USART_ISR_IDLE USART_ISR_IDLE_Msk /*!< IDLE line detected */
+#define USART_ISR_RXNE_Pos (5U)
+#define USART_ISR_RXNE_Msk (0x1UL << USART_ISR_RXNE_Pos) /*!< 0x00000020 */
+#define USART_ISR_RXNE USART_ISR_RXNE_Msk /*!< Read Data Register Not Empty */
+#define USART_ISR_RXNE_RXFNE_Pos USART_ISR_RXNE_Pos
+#define USART_ISR_RXNE_RXFNE_Msk USART_ISR_RXNE_Msk /*!< 0x00000020 */
+#define USART_ISR_RXNE_RXFNE USART_ISR_RXNE_Msk /*!< Read Data Register or RX FIFO Not Empty */
+#define USART_ISR_TC_Pos (6U)
+#define USART_ISR_TC_Msk (0x1UL << USART_ISR_TC_Pos) /*!< 0x00000040 */
+#define USART_ISR_TC USART_ISR_TC_Msk /*!< Transmission Complete */
+#define USART_ISR_TXE_Pos (7U)
+#define USART_ISR_TXE_Msk (0x1UL << USART_ISR_TXE_Pos) /*!< 0x00000080 */
+#define USART_ISR_TXE USART_ISR_TXE_Msk /*!< Transmit Data Register Empty */
+#define USART_ISR_TXE_TXFNF_Pos USART_ISR_TXE_Pos
+#define USART_ISR_TXE_TXFNF_Msk USART_ISR_TXE_Msk /*!< 0x00000080 */
+#define USART_ISR_TXE_TXFNF USART_ISR_TXE_Msk /*!< Transmit Data Register Empty or TX FIFO Not Full Flag */
+#define USART_ISR_LBDF_Pos (8U)
+#define USART_ISR_LBDF_Msk (0x1UL << USART_ISR_LBDF_Pos) /*!< 0x00000100 */
+#define USART_ISR_LBDF USART_ISR_LBDF_Msk /*!< LIN Break Detection Flag */
+#define USART_ISR_CTSIF_Pos (9U)
+#define USART_ISR_CTSIF_Msk (0x1UL << USART_ISR_CTSIF_Pos) /*!< 0x00000200 */
+#define USART_ISR_CTSIF USART_ISR_CTSIF_Msk /*!< CTS interrupt flag */
+#define USART_ISR_CTS_Pos (10U)
+#define USART_ISR_CTS_Msk (0x1UL << USART_ISR_CTS_Pos) /*!< 0x00000400 */
+#define USART_ISR_CTS USART_ISR_CTS_Msk /*!< CTS flag */
+#define USART_ISR_RTOF_Pos (11U)
+#define USART_ISR_RTOF_Msk (0x1UL << USART_ISR_RTOF_Pos) /*!< 0x00000800 */
+#define USART_ISR_RTOF USART_ISR_RTOF_Msk /*!< Receiver Time Out */
+#define USART_ISR_EOBF_Pos (12U)
+#define USART_ISR_EOBF_Msk (0x1UL << USART_ISR_EOBF_Pos) /*!< 0x00001000 */
+#define USART_ISR_EOBF USART_ISR_EOBF_Msk /*!< End Of Block Flag */
+#define USART_ISR_UDR_Pos (13U)
+#define USART_ISR_UDR_Msk (0x1UL << USART_ISR_UDR_Pos) /*!< 0x00002000 */
+#define USART_ISR_UDR USART_ISR_UDR_Msk /*!< SPI slave underrun error flag */
+#define USART_ISR_ABRE_Pos (14U)
+#define USART_ISR_ABRE_Msk (0x1UL << USART_ISR_ABRE_Pos) /*!< 0x00004000 */
+#define USART_ISR_ABRE USART_ISR_ABRE_Msk /*!< Auto-Baud Rate Error */
+#define USART_ISR_ABRF_Pos (15U)
+#define USART_ISR_ABRF_Msk (0x1UL << USART_ISR_ABRF_Pos) /*!< 0x00008000 */
+#define USART_ISR_ABRF USART_ISR_ABRF_Msk /*!< Auto-Baud Rate Flag */
+#define USART_ISR_BUSY_Pos (16U)
+#define USART_ISR_BUSY_Msk (0x1UL << USART_ISR_BUSY_Pos) /*!< 0x00010000 */
+#define USART_ISR_BUSY USART_ISR_BUSY_Msk /*!< Busy Flag */
+#define USART_ISR_CMF_Pos (17U)
+#define USART_ISR_CMF_Msk (0x1UL << USART_ISR_CMF_Pos) /*!< 0x00020000 */
+#define USART_ISR_CMF USART_ISR_CMF_Msk /*!< Character Match Flag */
+#define USART_ISR_SBKF_Pos (18U)
+#define USART_ISR_SBKF_Msk (0x1UL << USART_ISR_SBKF_Pos) /*!< 0x00040000 */
+#define USART_ISR_SBKF USART_ISR_SBKF_Msk /*!< Send Break Flag */
+#define USART_ISR_RWU_Pos (19U)
+#define USART_ISR_RWU_Msk (0x1UL << USART_ISR_RWU_Pos) /*!< 0x00080000 */
+#define USART_ISR_RWU USART_ISR_RWU_Msk /*!< Receive Wake Up from mute mode Flag */
+#define USART_ISR_WUF_Pos (20U)
+#define USART_ISR_WUF_Msk (0x1UL << USART_ISR_WUF_Pos) /*!< 0x00100000 */
+#define USART_ISR_WUF USART_ISR_WUF_Msk /*!< Wake Up from low power mode Flag */
+#define USART_ISR_TEACK_Pos (21U)
+#define USART_ISR_TEACK_Msk (0x1UL << USART_ISR_TEACK_Pos) /*!< 0x00200000 */
+#define USART_ISR_TEACK USART_ISR_TEACK_Msk /*!< Transmit Enable Acknowledge Flag */
+#define USART_ISR_REACK_Pos (22U)
+#define USART_ISR_REACK_Msk (0x1UL << USART_ISR_REACK_Pos) /*!< 0x00400000 */
+#define USART_ISR_REACK USART_ISR_REACK_Msk /*!< Receive Enable Acknowledge Flag */
+#define USART_ISR_TXFE_Pos (23U)
+#define USART_ISR_TXFE_Msk (0x1UL << USART_ISR_TXFE_Pos) /*!< 0x00800000 */
+#define USART_ISR_TXFE USART_ISR_TXFE_Msk /*!< TXFIFO Empty */
+#define USART_ISR_RXFF_Pos (24U)
+#define USART_ISR_RXFF_Msk (0x1UL << USART_ISR_RXFF_Pos) /*!< 0x01000000 */
+#define USART_ISR_RXFF USART_ISR_RXFF_Msk /*!< RXFIFO Full */
+#define USART_ISR_TCBGT_Pos (25U)
+#define USART_ISR_TCBGT_Msk (0x1UL << USART_ISR_TCBGT_Pos) /*!< 0x02000000 */
+#define USART_ISR_TCBGT USART_ISR_TCBGT_Msk /*!< Transmission Complete Before Guard Time completion */
+#define USART_ISR_RXFT_Pos (26U)
+#define USART_ISR_RXFT_Msk (0x1UL << USART_ISR_RXFT_Pos) /*!< 0x04000000 */
+#define USART_ISR_RXFT USART_ISR_RXFT_Msk /*!< RXFIFO threshold flag */
+#define USART_ISR_TXFT_Pos (27U)
+#define USART_ISR_TXFT_Msk (0x1UL << USART_ISR_TXFT_Pos) /*!< 0x08000000 */
+#define USART_ISR_TXFT USART_ISR_TXFT_Msk /*!< TXFIFO threshold flag */
+
+/******************* Bit definition for USART_ICR register ******************/
+#define USART_ICR_PECF_Pos (0U)
+#define USART_ICR_PECF_Msk (0x1UL << USART_ICR_PECF_Pos) /*!< 0x00000001 */
+#define USART_ICR_PECF USART_ICR_PECF_Msk /*!< Parity Error Clear Flag */
+#define USART_ICR_FECF_Pos (1U)
+#define USART_ICR_FECF_Msk (0x1UL << USART_ICR_FECF_Pos) /*!< 0x00000002 */
+#define USART_ICR_FECF USART_ICR_FECF_Msk /*!< Framing Error Clear Flag */
+#define USART_ICR_NECF_Pos (2U)
+#define USART_ICR_NECF_Msk (0x1UL << USART_ICR_NECF_Pos) /*!< 0x00000004 */
+#define USART_ICR_NECF USART_ICR_NECF_Msk /*!< Noise detected Clear Flag */
+#define USART_ICR_ORECF_Pos (3U)
+#define USART_ICR_ORECF_Msk (0x1UL << USART_ICR_ORECF_Pos) /*!< 0x00000008 */
+#define USART_ICR_ORECF USART_ICR_ORECF_Msk /*!< OverRun Error Clear Flag */
+#define USART_ICR_IDLECF_Pos (4U)
+#define USART_ICR_IDLECF_Msk (0x1UL << USART_ICR_IDLECF_Pos) /*!< 0x00000010 */
+#define USART_ICR_IDLECF USART_ICR_IDLECF_Msk /*!< IDLE line detected Clear Flag */
+#define USART_ICR_TXFECF_Pos (5U)
+#define USART_ICR_TXFECF_Msk (0x1UL << USART_ICR_TXFECF_Pos) /*!< 0x00000020 */
+#define USART_ICR_TXFECF USART_ICR_TXFECF_Msk /*!< TXFIFO empty Clear flag */
+#define USART_ICR_TCCF_Pos (6U)
+#define USART_ICR_TCCF_Msk (0x1UL << USART_ICR_TCCF_Pos) /*!< 0x00000040 */
+#define USART_ICR_TCCF USART_ICR_TCCF_Msk /*!< Transmission Complete Clear Flag */
+#define USART_ICR_TCBGTCF_Pos (7U)
+#define USART_ICR_TCBGTCF_Msk (0x1UL << USART_ICR_TCBGTCF_Pos) /*!< 0x00000080 */
+#define USART_ICR_TCBGTCF USART_ICR_TCBGTCF_Msk /*!< Transmission Complete Before Guard Time Clear Flag */
+#define USART_ICR_LBDCF_Pos (8U)
+#define USART_ICR_LBDCF_Msk (0x1UL << USART_ICR_LBDCF_Pos) /*!< 0x00000100 */
+#define USART_ICR_LBDCF USART_ICR_LBDCF_Msk /*!< LIN Break Detection Clear Flag */
+#define USART_ICR_CTSCF_Pos (9U)
+#define USART_ICR_CTSCF_Msk (0x1UL << USART_ICR_CTSCF_Pos) /*!< 0x00000200 */
+#define USART_ICR_CTSCF USART_ICR_CTSCF_Msk /*!< CTS Interrupt Clear Flag */
+#define USART_ICR_RTOCF_Pos (11U)
+#define USART_ICR_RTOCF_Msk (0x1UL << USART_ICR_RTOCF_Pos) /*!< 0x00000800 */
+#define USART_ICR_RTOCF USART_ICR_RTOCF_Msk /*!< Receiver Time Out Clear Flag */
+#define USART_ICR_EOBCF_Pos (12U)
+#define USART_ICR_EOBCF_Msk (0x1UL << USART_ICR_EOBCF_Pos) /*!< 0x00001000 */
+#define USART_ICR_EOBCF USART_ICR_EOBCF_Msk /*!< End Of Block Clear Flag */
+#define USART_ICR_UDRCF_Pos (13U)
+#define USART_ICR_UDRCF_Msk (0x1UL << USART_ICR_UDRCF_Pos) /*!< 0x00002000 */
+#define USART_ICR_UDRCF USART_ICR_UDRCF_Msk /*!< SPI Slave Underrun Clear Flag */
+#define USART_ICR_CMCF_Pos (17U)
+#define USART_ICR_CMCF_Msk (0x1UL << USART_ICR_CMCF_Pos) /*!< 0x00020000 */
+#define USART_ICR_CMCF USART_ICR_CMCF_Msk /*!< Character Match Clear Flag */
+#define USART_ICR_WUCF_Pos (20U)
+#define USART_ICR_WUCF_Msk (0x1UL << USART_ICR_WUCF_Pos) /*!< 0x00100000 */
+#define USART_ICR_WUCF USART_ICR_WUCF_Msk /*!< Wake Up from stop mode Clear Flag */
+
+/******************* Bit definition for USART_RDR register ******************/
+#define USART_RDR_RDR ((uint16_t)0x01FF) /*!< RDR[8:0] bits (Receive Data value) */
+
+/******************* Bit definition for USART_TDR register ******************/
+#define USART_TDR_TDR ((uint16_t)0x01FF) /*!< TDR[8:0] bits (Transmit Data value) */
+
+/******************* Bit definition for USART_PRESC register ****************/
+#define USART_PRESC_PRESCALER_Pos (0U)
+#define USART_PRESC_PRESCALER_Msk (0xFUL << USART_PRESC_PRESCALER_Pos) /*!< 0x0000000F */
+#define USART_PRESC_PRESCALER USART_PRESC_PRESCALER_Msk /*!< PRESCALER[3:0] bits (Clock prescaler) */
+#define USART_PRESC_PRESCALER_0 (0x1UL << USART_PRESC_PRESCALER_Pos) /*!< 0x00000001 */
+#define USART_PRESC_PRESCALER_1 (0x2UL << USART_PRESC_PRESCALER_Pos) /*!< 0x00000002 */
+#define USART_PRESC_PRESCALER_2 (0x4UL << USART_PRESC_PRESCALER_Pos) /*!< 0x00000004 */
+#define USART_PRESC_PRESCALER_3 (0x8UL << USART_PRESC_PRESCALER_Pos) /*!< 0x00000008 */
+
+/******************* Bit definition for USART_HWCFGR2 register **************/
+#define USART_HWCFGR2_CFG1_Pos (0U)
+#define USART_HWCFGR2_CFG1_Msk (0xFUL << USART_HWCFGR2_CFG1_Pos) /*!< 0x0000000F */
+#define USART_HWCFGR2_CFG1 USART_HWCFGR2_CFG1_Msk /*!< CFG1[3:0] bits (USART hardware configuration 1) */
+#define USART_HWCFGR2_CFG2_Pos (4U)
+#define USART_HWCFGR2_CFG2_Msk (0xFUL << USART_HWCFGR2_CFG2_Pos) /*!< 0x000000F0 */
+#define USART_HWCFGR2_CFG2 USART_HWCFGR2_CFG2_Msk /*!< CFG2[7:4] bits (USART hardware configuration 2) */
+
+/******************* Bit definition for USART_HWCFGR1 register **************/
+#define USART_HWCFGR1_CFG1_Pos (0U)
+#define USART_HWCFGR1_CFG1_Msk (0xFUL << USART_HWCFGR1_CFG1_Pos) /*!< 0x0000000F */
+#define USART_HWCFGR1_CFG1 USART_HWCFGR1_CFG1_Msk /*!< CFG1[3:0] bits (USART hardware configuration 1) */
+#define USART_HWCFGR1_CFG2_Pos (4U)
+#define USART_HWCFGR1_CFG2_Msk (0xFUL << USART_HWCFGR1_CFG2_Pos) /*!< 0x000000F0 */
+#define USART_HWCFGR1_CFG2 USART_HWCFGR1_CFG2_Msk /*!< CFG2[7:4] bits (USART hardware configuration 2) */
+#define USART_HWCFGR1_CFG3_Pos (8U)
+#define USART_HWCFGR1_CFG3_Msk (0xFUL << USART_HWCFGR1_CFG3_Pos) /*!< 0x00000F00 */
+#define USART_HWCFGR1_CFG3 USART_HWCFGR1_CFG3_Msk /*!< CFG3[11:8] bits (USART hardware configuration 3) */
+#define USART_HWCFGR1_CFG4_Pos (12U)
+#define USART_HWCFGR1_CFG4_Msk (0xFUL << USART_HWCFGR1_CFG4_Pos) /*!< 0x0000F000 */
+#define USART_HWCFGR1_CFG4 USART_HWCFGR1_CFG4_Msk /*!< CFG4[15:12] bits (USART hardware configuration 4) */
+#define USART_HWCFGR1_CFG5_Pos (16U)
+#define USART_HWCFGR1_CFG5_Msk (0xFUL << USART_HWCFGR1_CFG5_Pos) /*!< 0x000F0000 */
+#define USART_HWCFGR1_CFG5 USART_HWCFGR1_CFG5_Msk /*!< CFG5[19:16] bits (USART hardware configuration 5) */
+#define USART_HWCFGR1_CFG6_Pos (20U)
+#define USART_HWCFGR1_CFG6_Msk (0xFUL << USART_HWCFGR1_CFG6_Pos) /*!< 0x00F00000 */
+#define USART_HWCFGR1_CFG6 USART_HWCFGR1_CFG6_Msk /*!< CFG6[23:20] bits (USART hardware configuration 6) */
+#define USART_HWCFGR1_CFG7_Pos (24U)
+#define USART_HWCFGR1_CFG7_Msk (0xFUL << USART_HWCFGR1_CFG7_Pos) /*!< 0x0F000000 */
+#define USART_HWCFGR1_CFG7 USART_HWCFGR1_CFG7_Msk /*!< CFG7[27:24] bits (USART hardware configuration 7) */
+#define USART_HWCFGR1_CFG8_Pos (28U)
+#define USART_HWCFGR1_CFG8_Msk (0xFUL << USART_HWCFGR1_CFG8_Pos) /*!< 0xF0000000 */
+#define USART_HWCFGR1_CFG8 USART_HWCFGR1_CFG8_Msk /*!< CFG8[31:28] bits (USART hardware configuration 8) */
+
+/******************* Bit definition for USART_VERR register *****************/
+#define USART_VERR_MINREV_Pos (0U)
+#define USART_VERR_MINREV_Msk (0xFUL << USART_VERR_MINREV_Pos) /*!< 0x0000000F */
+#define USART_VERR_MINREV USART_VERR_MINREV_Msk /*!< MAJREV[3:0] bits (Minor revision) */
+#define USART_VERR_MAJREV_Pos (4U)
+#define USART_VERR_MAJREV_Msk (0xFUL << USART_VERR_MAJREV_Pos) /*!< 0x000000F0 */
+#define USART_VERR_MAJREV USART_VERR_MAJREV_Msk /*!< MINREV[3:0] bits (Major revision) */
+
+/******************* Bit definition for USART_IPIDR register ****************/
+#define USART_IPIDR_ID_Pos (0U)
+#define USART_IPIDR_ID_Msk (0xFFFFFFFFUL << USART_IPIDR_ID_Pos) /*!< 0xFFFFFFFF */
+#define USART_IPIDR_ID USART_IPIDR_ID_Msk /*!< ID[31:0] bits (Peripheral identifier) */
+
+/******************* Bit definition for USART_SIDR register ****************/
+#define USART_SIDR_ID_Pos (0U)
+#define USART_SIDR_ID_Msk (0xFFFFFFFFUL << USART_SIDR_ID_Pos) /*!< 0xFFFFFFFF */
+#define USART_SIDR_ID USART_SIDR_ID_Msk /*!< SID[31:0] bits (Size identification) */
+
+
+/******************************************************************************/
+/* */
+/* Inter-integrated Circuit Interface (I2C) */
+/* */
+/******************************************************************************/
+/******************* Bit definition for I2C_CR1 register *******************/
+#define I2C_CR1_PE_Pos (0U)
+#define I2C_CR1_PE_Msk (0x1UL << I2C_CR1_PE_Pos) /*!< 0x00000001 */
+#define I2C_CR1_PE I2C_CR1_PE_Msk /*!< Peripheral enable */
+#define I2C_CR1_TXIE_Pos (1U)
+#define I2C_CR1_TXIE_Msk (0x1UL << I2C_CR1_TXIE_Pos) /*!< 0x00000002 */
+#define I2C_CR1_TXIE I2C_CR1_TXIE_Msk /*!< TX interrupt enable */
+#define I2C_CR1_RXIE_Pos (2U)
+#define I2C_CR1_RXIE_Msk (0x1UL << I2C_CR1_RXIE_Pos) /*!< 0x00000004 */
+#define I2C_CR1_RXIE I2C_CR1_RXIE_Msk /*!< RX interrupt enable */
+#define I2C_CR1_ADDRIE_Pos (3U)
+#define I2C_CR1_ADDRIE_Msk (0x1UL << I2C_CR1_ADDRIE_Pos) /*!< 0x00000008 */
+#define I2C_CR1_ADDRIE I2C_CR1_ADDRIE_Msk /*!< Address match interrupt enable */
+#define I2C_CR1_NACKIE_Pos (4U)
+#define I2C_CR1_NACKIE_Msk (0x1UL << I2C_CR1_NACKIE_Pos) /*!< 0x00000010 */
+#define I2C_CR1_NACKIE I2C_CR1_NACKIE_Msk /*!< NACK received interrupt enable */
+#define I2C_CR1_STOPIE_Pos (5U)
+#define I2C_CR1_STOPIE_Msk (0x1UL << I2C_CR1_STOPIE_Pos) /*!< 0x00000020 */
+#define I2C_CR1_STOPIE I2C_CR1_STOPIE_Msk /*!< STOP detection interrupt enable */
+#define I2C_CR1_TCIE_Pos (6U)
+#define I2C_CR1_TCIE_Msk (0x1UL << I2C_CR1_TCIE_Pos) /*!< 0x00000040 */
+#define I2C_CR1_TCIE I2C_CR1_TCIE_Msk /*!< Transfer complete interrupt enable */
+#define I2C_CR1_ERRIE_Pos (7U)
+#define I2C_CR1_ERRIE_Msk (0x1UL << I2C_CR1_ERRIE_Pos) /*!< 0x00000080 */
+#define I2C_CR1_ERRIE I2C_CR1_ERRIE_Msk /*!< Errors interrupt enable */
+#define I2C_CR1_DNF_Pos (8U)
+#define I2C_CR1_DNF_Msk (0xFUL << I2C_CR1_DNF_Pos) /*!< 0x00000F00 */
+#define I2C_CR1_DNF I2C_CR1_DNF_Msk /*!< Digital noise filter */
+#define I2C_CR1_ANFOFF_Pos (12U)
+#define I2C_CR1_ANFOFF_Msk (0x1UL << I2C_CR1_ANFOFF_Pos) /*!< 0x00001000 */
+#define I2C_CR1_ANFOFF I2C_CR1_ANFOFF_Msk /*!< Analog noise filter OFF */
+#define I2C_CR1_SWRST_Pos (13U)
+#define I2C_CR1_SWRST_Msk (0x1UL << I2C_CR1_SWRST_Pos) /*!< 0x00002000 */
+#define I2C_CR1_SWRST I2C_CR1_SWRST_Msk /*!< Software reset */
+#define I2C_CR1_TXDMAEN_Pos (14U)
+#define I2C_CR1_TXDMAEN_Msk (0x1UL << I2C_CR1_TXDMAEN_Pos) /*!< 0x00004000 */
+#define I2C_CR1_TXDMAEN I2C_CR1_TXDMAEN_Msk /*!< DMA transmission requests enable */
+#define I2C_CR1_RXDMAEN_Pos (15U)
+#define I2C_CR1_RXDMAEN_Msk (0x1UL << I2C_CR1_RXDMAEN_Pos) /*!< 0x00008000 */
+#define I2C_CR1_RXDMAEN I2C_CR1_RXDMAEN_Msk /*!< DMA reception requests enable */
+#define I2C_CR1_SBC_Pos (16U)
+#define I2C_CR1_SBC_Msk (0x1UL << I2C_CR1_SBC_Pos) /*!< 0x00010000 */
+#define I2C_CR1_SBC I2C_CR1_SBC_Msk /*!< Slave byte control */
+#define I2C_CR1_NOSTRETCH_Pos (17U)
+#define I2C_CR1_NOSTRETCH_Msk (0x1UL << I2C_CR1_NOSTRETCH_Pos) /*!< 0x00020000 */
+#define I2C_CR1_NOSTRETCH I2C_CR1_NOSTRETCH_Msk /*!< Clock stretching disable */
+#define I2C_CR1_WUPEN_Pos (18U)
+#define I2C_CR1_WUPEN_Msk (0x1UL << I2C_CR1_WUPEN_Pos) /*!< 0x00040000 */
+#define I2C_CR1_WUPEN I2C_CR1_WUPEN_Msk /*!< Wakeup from STOP enable */
+#define I2C_CR1_GCEN_Pos (19U)
+#define I2C_CR1_GCEN_Msk (0x1UL << I2C_CR1_GCEN_Pos) /*!< 0x00080000 */
+#define I2C_CR1_GCEN I2C_CR1_GCEN_Msk /*!< General call enable */
+#define I2C_CR1_SMBHEN_Pos (20U)
+#define I2C_CR1_SMBHEN_Msk (0x1UL << I2C_CR1_SMBHEN_Pos) /*!< 0x00100000 */
+#define I2C_CR1_SMBHEN I2C_CR1_SMBHEN_Msk /*!< SMBus host address enable */
+#define I2C_CR1_SMBDEN_Pos (21U)
+#define I2C_CR1_SMBDEN_Msk (0x1UL << I2C_CR1_SMBDEN_Pos) /*!< 0x00200000 */
+#define I2C_CR1_SMBDEN I2C_CR1_SMBDEN_Msk /*!< SMBus device default address enable */
+#define I2C_CR1_ALERTEN_Pos (22U)
+#define I2C_CR1_ALERTEN_Msk (0x1UL << I2C_CR1_ALERTEN_Pos) /*!< 0x00400000 */
+#define I2C_CR1_ALERTEN I2C_CR1_ALERTEN_Msk /*!< SMBus alert enable */
+#define I2C_CR1_PECEN_Pos (23U)
+#define I2C_CR1_PECEN_Msk (0x1UL << I2C_CR1_PECEN_Pos) /*!< 0x00800000 */
+#define I2C_CR1_PECEN I2C_CR1_PECEN_Msk /*!< PEC enable */
+#define I2C_CR1_FMP_Pos (24U)
+#define I2C_CR1_FMP_Msk (0x1UL << I2C_CR1_FMP_Pos) /*!< 0x01000000 */
+#define I2C_CR1_FMP I2C_CR1_FMP_Msk /*!< Fast-mode Plus 20 mA drive enable */
+#define I2C_CR1_ADDRACLR_Pos (30U)
+#define I2C_CR1_ADDRACLR_Msk (0x1UL << I2C_CR1_ADDRACLR_Pos) /*!< 0x40000000 */
+#define I2C_CR1_ADDRACLR I2C_CR1_ADDRACLR_Msk /*!< ADDRACLR enable */
+#define I2C_CR1_STOPFACLR_Pos (31U)
+#define I2C_CR1_STOPFACLR_Msk (0x1UL << I2C_CR1_STOPFACLR_Pos) /*!< 0x80000000 */
+#define I2C_CR1_STOPFACLR I2C_CR1_STOPFACLR_Msk /*!< STOPFACLR enable */
+
+/****************** Bit definition for I2C_CR2 register ********************/
+#define I2C_CR2_SADD_Pos (0U)
+#define I2C_CR2_SADD_Msk (0x3FFUL << I2C_CR2_SADD_Pos) /*!< 0x000003FF */
+#define I2C_CR2_SADD I2C_CR2_SADD_Msk /*!< Slave address (master mode) */
+#define I2C_CR2_RD_WRN_Pos (10U)
+#define I2C_CR2_RD_WRN_Msk (0x1UL << I2C_CR2_RD_WRN_Pos) /*!< 0x00000400 */
+#define I2C_CR2_RD_WRN I2C_CR2_RD_WRN_Msk /*!< Transfer direction (master mode) */
+#define I2C_CR2_ADD10_Pos (11U)
+#define I2C_CR2_ADD10_Msk (0x1UL << I2C_CR2_ADD10_Pos) /*!< 0x00000800 */
+#define I2C_CR2_ADD10 I2C_CR2_ADD10_Msk /*!< 10-bit addressing mode (master mode) */
+#define I2C_CR2_HEAD10R_Pos (12U)
+#define I2C_CR2_HEAD10R_Msk (0x1UL << I2C_CR2_HEAD10R_Pos) /*!< 0x00001000 */
+#define I2C_CR2_HEAD10R I2C_CR2_HEAD10R_Msk /*!< 10-bit address header only read direction (master mode) */
+#define I2C_CR2_START_Pos (13U)
+#define I2C_CR2_START_Msk (0x1UL << I2C_CR2_START_Pos) /*!< 0x00002000 */
+#define I2C_CR2_START I2C_CR2_START_Msk /*!< START generation */
+#define I2C_CR2_STOP_Pos (14U)
+#define I2C_CR2_STOP_Msk (0x1UL << I2C_CR2_STOP_Pos) /*!< 0x00004000 */
+#define I2C_CR2_STOP I2C_CR2_STOP_Msk /*!< STOP generation (master mode) */
+#define I2C_CR2_NACK_Pos (15U)
+#define I2C_CR2_NACK_Msk (0x1UL << I2C_CR2_NACK_Pos) /*!< 0x00008000 */
+#define I2C_CR2_NACK I2C_CR2_NACK_Msk /*!< NACK generation (slave mode) */
+#define I2C_CR2_NBYTES_Pos (16U)
+#define I2C_CR2_NBYTES_Msk (0xFFUL << I2C_CR2_NBYTES_Pos) /*!< 0x00FF0000 */
+#define I2C_CR2_NBYTES I2C_CR2_NBYTES_Msk /*!< Number of bytes */
+#define I2C_CR2_RELOAD_Pos (24U)
+#define I2C_CR2_RELOAD_Msk (0x1UL << I2C_CR2_RELOAD_Pos) /*!< 0x01000000 */
+#define I2C_CR2_RELOAD I2C_CR2_RELOAD_Msk /*!< NBYTES reload mode */
+#define I2C_CR2_AUTOEND_Pos (25U)
+#define I2C_CR2_AUTOEND_Msk (0x1UL << I2C_CR2_AUTOEND_Pos) /*!< 0x02000000 */
+#define I2C_CR2_AUTOEND I2C_CR2_AUTOEND_Msk /*!< Automatic end mode (master mode) */
+#define I2C_CR2_PECBYTE_Pos (26U)
+#define I2C_CR2_PECBYTE_Msk (0x1UL << I2C_CR2_PECBYTE_Pos) /*!< 0x04000000 */
+#define I2C_CR2_PECBYTE I2C_CR2_PECBYTE_Msk /*!< Packet error checking byte */
+
+/******************* Bit definition for I2C_OAR1 register ******************/
+#define I2C_OAR1_OA1_Pos (0U)
+#define I2C_OAR1_OA1_Msk (0x3FFUL << I2C_OAR1_OA1_Pos) /*!< 0x000003FF */
+#define I2C_OAR1_OA1 I2C_OAR1_OA1_Msk /*!< Interface own address 1 */
+#define I2C_OAR1_OA1MODE_Pos (10U)
+#define I2C_OAR1_OA1MODE_Msk (0x1UL << I2C_OAR1_OA1MODE_Pos) /*!< 0x00000400 */
+#define I2C_OAR1_OA1MODE I2C_OAR1_OA1MODE_Msk /*!< Own address 1 10-bit mode */
+#define I2C_OAR1_OA1EN_Pos (15U)
+#define I2C_OAR1_OA1EN_Msk (0x1UL << I2C_OAR1_OA1EN_Pos) /*!< 0x00008000 */
+#define I2C_OAR1_OA1EN I2C_OAR1_OA1EN_Msk /*!< Own address 1 enable */
+
+/******************* Bit definition for I2C_OAR2 register ******************/
+#define I2C_OAR2_OA2_Pos (1U)
+#define I2C_OAR2_OA2_Msk (0x7FUL << I2C_OAR2_OA2_Pos) /*!< 0x000000FE */
+#define I2C_OAR2_OA2 I2C_OAR2_OA2_Msk /*!< Interface own address 2 */
+#define I2C_OAR2_OA2MSK_Pos (8U)
+#define I2C_OAR2_OA2MSK_Msk (0x7UL << I2C_OAR2_OA2MSK_Pos) /*!< 0x00000700 */
+#define I2C_OAR2_OA2MSK I2C_OAR2_OA2MSK_Msk /*!< Own address 2 masks */
+#define I2C_OAR2_OA2NOMASK (0x00000000UL) /*!< No mask */
+#define I2C_OAR2_OA2MASK01_Pos (8U)
+#define I2C_OAR2_OA2MASK01_Msk (0x1UL << I2C_OAR2_OA2MASK01_Pos) /*!< 0x00000100 */
+#define I2C_OAR2_OA2MASK01 I2C_OAR2_OA2MASK01_Msk /*!< OA2[1] is masked, Only OA2[7:2] are compared */
+#define I2C_OAR2_OA2MASK02_Pos (9U)
+#define I2C_OAR2_OA2MASK02_Msk (0x1UL << I2C_OAR2_OA2MASK02_Pos) /*!< 0x00000200 */
+#define I2C_OAR2_OA2MASK02 I2C_OAR2_OA2MASK02_Msk /*!< OA2[2:1] is masked, Only OA2[7:3] are compared */
+#define I2C_OAR2_OA2MASK03_Pos (8U)
+#define I2C_OAR2_OA2MASK03_Msk (0x3UL << I2C_OAR2_OA2MASK03_Pos) /*!< 0x00000300 */
+#define I2C_OAR2_OA2MASK03 I2C_OAR2_OA2MASK03_Msk /*!< OA2[3:1] is masked, Only OA2[7:4] are compared */
+#define I2C_OAR2_OA2MASK04_Pos (10U)
+#define I2C_OAR2_OA2MASK04_Msk (0x1UL << I2C_OAR2_OA2MASK04_Pos) /*!< 0x00000400 */
+#define I2C_OAR2_OA2MASK04 I2C_OAR2_OA2MASK04_Msk /*!< OA2[4:1] is masked, Only OA2[7:5] are compared */
+#define I2C_OAR2_OA2MASK05_Pos (8U)
+#define I2C_OAR2_OA2MASK05_Msk (0x5UL << I2C_OAR2_OA2MASK05_Pos) /*!< 0x00000500 */
+#define I2C_OAR2_OA2MASK05 I2C_OAR2_OA2MASK05_Msk /*!< OA2[5:1] is masked, Only OA2[7:6] are compared */
+#define I2C_OAR2_OA2MASK06_Pos (9U)
+#define I2C_OAR2_OA2MASK06_Msk (0x3UL << I2C_OAR2_OA2MASK06_Pos) /*!< 0x00000600 */
+#define I2C_OAR2_OA2MASK06 I2C_OAR2_OA2MASK06_Msk /*!< OA2[6:1] is masked, Only OA2[7] are compared */
+#define I2C_OAR2_OA2MASK07_Pos (8U)
+#define I2C_OAR2_OA2MASK07_Msk (0x7UL << I2C_OAR2_OA2MASK07_Pos) /*!< 0x00000700 */
+#define I2C_OAR2_OA2MASK07 I2C_OAR2_OA2MASK07_Msk /*!< OA2[7:1] is masked, No comparison is done */
+#define I2C_OAR2_OA2EN_Pos (15U)
+#define I2C_OAR2_OA2EN_Msk (0x1UL << I2C_OAR2_OA2EN_Pos) /*!< 0x00008000 */
+#define I2C_OAR2_OA2EN I2C_OAR2_OA2EN_Msk /*!< Own address 2 enable */
+
+/******************* Bit definition for I2C_TIMINGR register *******************/
+#define I2C_TIMINGR_SCLL_Pos (0U)
+#define I2C_TIMINGR_SCLL_Msk (0xFFUL << I2C_TIMINGR_SCLL_Pos) /*!< 0x000000FF */
+#define I2C_TIMINGR_SCLL I2C_TIMINGR_SCLL_Msk /*!< SCL low period (master mode) */
+#define I2C_TIMINGR_SCLH_Pos (8U)
+#define I2C_TIMINGR_SCLH_Msk (0xFFUL << I2C_TIMINGR_SCLH_Pos) /*!< 0x0000FF00 */
+#define I2C_TIMINGR_SCLH I2C_TIMINGR_SCLH_Msk /*!< SCL high period (master mode) */
+#define I2C_TIMINGR_SDADEL_Pos (16U)
+#define I2C_TIMINGR_SDADEL_Msk (0xFUL << I2C_TIMINGR_SDADEL_Pos) /*!< 0x000F0000 */
+#define I2C_TIMINGR_SDADEL I2C_TIMINGR_SDADEL_Msk /*!< Data hold time */
+#define I2C_TIMINGR_SCLDEL_Pos (20U)
+#define I2C_TIMINGR_SCLDEL_Msk (0xFUL << I2C_TIMINGR_SCLDEL_Pos) /*!< 0x00F00000 */
+#define I2C_TIMINGR_SCLDEL I2C_TIMINGR_SCLDEL_Msk /*!< Data setup time */
+#define I2C_TIMINGR_PRESC_Pos (28U)
+#define I2C_TIMINGR_PRESC_Msk (0xFUL << I2C_TIMINGR_PRESC_Pos) /*!< 0xF0000000 */
+#define I2C_TIMINGR_PRESC I2C_TIMINGR_PRESC_Msk /*!< Timings prescaler */
+
+/******************* Bit definition for I2C_TIMEOUTR register *******************/
+#define I2C_TIMEOUTR_TIMEOUTA_Pos (0U)
+#define I2C_TIMEOUTR_TIMEOUTA_Msk (0xFFFUL << I2C_TIMEOUTR_TIMEOUTA_Pos) /*!< 0x00000FFF */
+#define I2C_TIMEOUTR_TIMEOUTA I2C_TIMEOUTR_TIMEOUTA_Msk /*!< Bus timeout A */
+#define I2C_TIMEOUTR_TIDLE_Pos (12U)
+#define I2C_TIMEOUTR_TIDLE_Msk (0x1UL << I2C_TIMEOUTR_TIDLE_Pos) /*!< 0x00001000 */
+#define I2C_TIMEOUTR_TIDLE I2C_TIMEOUTR_TIDLE_Msk /*!< Idle clock timeout detection */
+#define I2C_TIMEOUTR_TIMOUTEN_Pos (15U)
+#define I2C_TIMEOUTR_TIMOUTEN_Msk (0x1UL << I2C_TIMEOUTR_TIMOUTEN_Pos) /*!< 0x00008000 */
+#define I2C_TIMEOUTR_TIMOUTEN I2C_TIMEOUTR_TIMOUTEN_Msk /*!< Clock timeout enable */
+#define I2C_TIMEOUTR_TIMEOUTB_Pos (16U)
+#define I2C_TIMEOUTR_TIMEOUTB_Msk (0xFFFUL << I2C_TIMEOUTR_TIMEOUTB_Pos) /*!< 0x0FFF0000 */
+#define I2C_TIMEOUTR_TIMEOUTB I2C_TIMEOUTR_TIMEOUTB_Msk /*!< Bus timeout B*/
+#define I2C_TIMEOUTR_TEXTEN_Pos (31U)
+#define I2C_TIMEOUTR_TEXTEN_Msk (0x1UL << I2C_TIMEOUTR_TEXTEN_Pos) /*!< 0x80000000 */
+#define I2C_TIMEOUTR_TEXTEN I2C_TIMEOUTR_TEXTEN_Msk /*!< Extended clock timeout enable */
+
+/****************** Bit definition for I2C_ISR register *********************/
+#define I2C_ISR_TXE_Pos (0U)
+#define I2C_ISR_TXE_Msk (0x1UL << I2C_ISR_TXE_Pos) /*!< 0x00000001 */
+#define I2C_ISR_TXE I2C_ISR_TXE_Msk /*!< Transmit data register empty */
+#define I2C_ISR_TXIS_Pos (1U)
+#define I2C_ISR_TXIS_Msk (0x1UL << I2C_ISR_TXIS_Pos) /*!< 0x00000002 */
+#define I2C_ISR_TXIS I2C_ISR_TXIS_Msk /*!< Transmit interrupt status */
+#define I2C_ISR_RXNE_Pos (2U)
+#define I2C_ISR_RXNE_Msk (0x1UL << I2C_ISR_RXNE_Pos) /*!< 0x00000004 */
+#define I2C_ISR_RXNE I2C_ISR_RXNE_Msk /*!< Receive data register not empty */
+#define I2C_ISR_ADDR_Pos (3U)
+#define I2C_ISR_ADDR_Msk (0x1UL << I2C_ISR_ADDR_Pos) /*!< 0x00000008 */
+#define I2C_ISR_ADDR I2C_ISR_ADDR_Msk /*!< Address matched (slave mode)*/
+#define I2C_ISR_NACKF_Pos (4U)
+#define I2C_ISR_NACKF_Msk (0x1UL << I2C_ISR_NACKF_Pos) /*!< 0x00000010 */
+#define I2C_ISR_NACKF I2C_ISR_NACKF_Msk /*!< NACK received flag */
+#define I2C_ISR_STOPF_Pos (5U)
+#define I2C_ISR_STOPF_Msk (0x1UL << I2C_ISR_STOPF_Pos) /*!< 0x00000020 */
+#define I2C_ISR_STOPF I2C_ISR_STOPF_Msk /*!< STOP detection flag */
+#define I2C_ISR_TC_Pos (6U)
+#define I2C_ISR_TC_Msk (0x1UL << I2C_ISR_TC_Pos) /*!< 0x00000040 */
+#define I2C_ISR_TC I2C_ISR_TC_Msk /*!< Transfer complete (master mode) */
+#define I2C_ISR_TCR_Pos (7U)
+#define I2C_ISR_TCR_Msk (0x1UL << I2C_ISR_TCR_Pos) /*!< 0x00000080 */
+#define I2C_ISR_TCR I2C_ISR_TCR_Msk /*!< Transfer complete reload */
+#define I2C_ISR_BERR_Pos (8U)
+#define I2C_ISR_BERR_Msk (0x1UL << I2C_ISR_BERR_Pos) /*!< 0x00000100 */
+#define I2C_ISR_BERR I2C_ISR_BERR_Msk /*!< Bus error */
+#define I2C_ISR_ARLO_Pos (9U)
+#define I2C_ISR_ARLO_Msk (0x1UL << I2C_ISR_ARLO_Pos) /*!< 0x00000200 */
+#define I2C_ISR_ARLO I2C_ISR_ARLO_Msk /*!< Arbitration lost */
+#define I2C_ISR_OVR_Pos (10U)
+#define I2C_ISR_OVR_Msk (0x1UL << I2C_ISR_OVR_Pos) /*!< 0x00000400 */
+#define I2C_ISR_OVR I2C_ISR_OVR_Msk /*!< Overrun/Underrun */
+#define I2C_ISR_PECERR_Pos (11U)
+#define I2C_ISR_PECERR_Msk (0x1UL << I2C_ISR_PECERR_Pos) /*!< 0x00000800 */
+#define I2C_ISR_PECERR I2C_ISR_PECERR_Msk /*!< PEC error in reception */
+#define I2C_ISR_TIMEOUT_Pos (12U)
+#define I2C_ISR_TIMEOUT_Msk (0x1UL << I2C_ISR_TIMEOUT_Pos) /*!< 0x00001000 */
+#define I2C_ISR_TIMEOUT I2C_ISR_TIMEOUT_Msk /*!< Timeout or Tlow detection flag */
+#define I2C_ISR_ALERT_Pos (13U)
+#define I2C_ISR_ALERT_Msk (0x1UL << I2C_ISR_ALERT_Pos) /*!< 0x00002000 */
+#define I2C_ISR_ALERT I2C_ISR_ALERT_Msk /*!< SMBus alert */
+#define I2C_ISR_BUSY_Pos (15U)
+#define I2C_ISR_BUSY_Msk (0x1UL << I2C_ISR_BUSY_Pos) /*!< 0x00008000 */
+#define I2C_ISR_BUSY I2C_ISR_BUSY_Msk /*!< Bus busy */
+#define I2C_ISR_DIR_Pos (16U)
+#define I2C_ISR_DIR_Msk (0x1UL << I2C_ISR_DIR_Pos) /*!< 0x00010000 */
+#define I2C_ISR_DIR I2C_ISR_DIR_Msk /*!< Transfer direction (slave mode) */
+#define I2C_ISR_ADDCODE_Pos (17U)
+#define I2C_ISR_ADDCODE_Msk (0x7FUL << I2C_ISR_ADDCODE_Pos) /*!< 0x00FE0000 */
+#define I2C_ISR_ADDCODE I2C_ISR_ADDCODE_Msk /*!< Address match code (slave mode) */
+
+/****************** Bit definition for I2C_ICR register *********************/
+#define I2C_ICR_ADDRCF_Pos (3U)
+#define I2C_ICR_ADDRCF_Msk (0x1UL << I2C_ICR_ADDRCF_Pos) /*!< 0x00000008 */
+#define I2C_ICR_ADDRCF I2C_ICR_ADDRCF_Msk /*!< Address matched clear flag */
+#define I2C_ICR_NACKCF_Pos (4U)
+#define I2C_ICR_NACKCF_Msk (0x1UL << I2C_ICR_NACKCF_Pos) /*!< 0x00000010 */
+#define I2C_ICR_NACKCF I2C_ICR_NACKCF_Msk /*!< NACK clear flag */
+#define I2C_ICR_STOPCF_Pos (5U)
+#define I2C_ICR_STOPCF_Msk (0x1UL << I2C_ICR_STOPCF_Pos) /*!< 0x00000020 */
+#define I2C_ICR_STOPCF I2C_ICR_STOPCF_Msk /*!< STOP detection clear flag */
+#define I2C_ICR_BERRCF_Pos (8U)
+#define I2C_ICR_BERRCF_Msk (0x1UL << I2C_ICR_BERRCF_Pos) /*!< 0x00000100 */
+#define I2C_ICR_BERRCF I2C_ICR_BERRCF_Msk /*!< Bus error clear flag */
+#define I2C_ICR_ARLOCF_Pos (9U)
+#define I2C_ICR_ARLOCF_Msk (0x1UL << I2C_ICR_ARLOCF_Pos) /*!< 0x00000200 */
+#define I2C_ICR_ARLOCF I2C_ICR_ARLOCF_Msk /*!< Arbitration lost clear flag */
+#define I2C_ICR_OVRCF_Pos (10U)
+#define I2C_ICR_OVRCF_Msk (0x1UL << I2C_ICR_OVRCF_Pos) /*!< 0x00000400 */
+#define I2C_ICR_OVRCF I2C_ICR_OVRCF_Msk /*!< Overrun/Underrun clear flag */
+#define I2C_ICR_PECCF_Pos (11U)
+#define I2C_ICR_PECCF_Msk (0x1UL << I2C_ICR_PECCF_Pos) /*!< 0x00000800 */
+#define I2C_ICR_PECCF I2C_ICR_PECCF_Msk /*!< PAC error clear flag */
+#define I2C_ICR_TIMOUTCF_Pos (12U)
+#define I2C_ICR_TIMOUTCF_Msk (0x1UL << I2C_ICR_TIMOUTCF_Pos) /*!< 0x00001000 */
+#define I2C_ICR_TIMOUTCF I2C_ICR_TIMOUTCF_Msk /*!< Timeout clear flag */
+#define I2C_ICR_ALERTCF_Pos (13U)
+#define I2C_ICR_ALERTCF_Msk (0x1UL << I2C_ICR_ALERTCF_Pos) /*!< 0x00002000 */
+#define I2C_ICR_ALERTCF I2C_ICR_ALERTCF_Msk /*!< Alert clear flag */
+
+/****************** Bit definition for I2C_PECR register *********************/
+#define I2C_PECR_PEC_Pos (0U)
+#define I2C_PECR_PEC_Msk (0xFFUL << I2C_PECR_PEC_Pos) /*!< 0x000000FF */
+#define I2C_PECR_PEC I2C_PECR_PEC_Msk /*!< PEC register */
+
+/****************** Bit definition for I2C_RXDR register *********************/
+#define I2C_RXDR_RXDATA_Pos (0U)
+#define I2C_RXDR_RXDATA_Msk (0xFFUL << I2C_RXDR_RXDATA_Pos) /*!< 0x000000FF */
+#define I2C_RXDR_RXDATA I2C_RXDR_RXDATA_Msk /*!< 8-bit receive data */
+
+/****************** Bit definition for I2C_TXDR register *********************/
+#define I2C_TXDR_TXDATA_Pos (0U)
+#define I2C_TXDR_TXDATA_Msk (0xFFUL << I2C_TXDR_TXDATA_Pos) /*!< 0x000000FF */
+#define I2C_TXDR_TXDATA I2C_TXDR_TXDATA_Msk /*!< 8-bit transmit data */
+
+
+/******************************************************************************/
+/* */
+/* Improved Inter-integrated Circuit Interface (I3C) */
+/* */
+/******************************************************************************/
+/******************* Bit definition for I3C_CR register *********************/
+#define I3C_CR_DCNT_Pos (0U)
+#define I3C_CR_DCNT_Msk (0xFFFFUL << I3C_CR_DCNT_Pos) /*!< 0x0000FFFF */
+#define I3C_CR_DCNT I3C_CR_DCNT_Msk /*!< Data Byte Count */
+#define I3C_CR_RNW_Pos (16U)
+#define I3C_CR_RNW_Msk (0x1UL << I3C_CR_RNW_Pos) /*!< 0x00010000 */
+#define I3C_CR_RNW I3C_CR_RNW_Msk /*!< Read Not Write */
+#define I3C_CR_CCC_Pos (16U)
+#define I3C_CR_CCC_Msk (0xFFUL << I3C_CR_CCC_Pos) /*!< 0x00FF0000 */
+#define I3C_CR_CCC I3C_CR_CCC_Msk /*!< 8-Bit CCC code */
+#define I3C_CR_ADD_Pos (17U)
+#define I3C_CR_ADD_Msk (0x7FUL << I3C_CR_ADD_Pos) /*!< 0x00FE0000 */
+#define I3C_CR_ADD I3C_CR_ADD_Msk /*!< Target Address */
+#define I3C_CR_MTYPE_Pos (27U)
+#define I3C_CR_MTYPE_Msk (0xFUL << I3C_CR_MTYPE_Pos) /*!< 0xF8000000 */
+#define I3C_CR_MTYPE I3C_CR_MTYPE_Msk /*!< Message Type */
+#define I3C_CR_MTYPE_0 (0x1UL << I3C_CR_MTYPE_Pos) /*!< 0x08000000 */
+#define I3C_CR_MTYPE_1 (0x2UL << I3C_CR_MTYPE_Pos) /*!< 0x10000000 */
+#define I3C_CR_MTYPE_2 (0x4UL << I3C_CR_MTYPE_Pos) /*!< 0x20000000 */
+#define I3C_CR_MTYPE_3 (0x8UL << I3C_CR_MTYPE_Pos) /*!< 0x40000000 */
+#define I3C_CR_MEND_Pos (31U)
+#define I3C_CR_MEND_Msk (0x1UL << I3C_CR_MEND_Pos) /*!< 0x80000000 */
+#define I3C_CR_MEND I3C_CR_MEND_Msk /*!< Message End */
+
+/******************* Bit definition for I3C_CFGR register *******************/
+#define I3C_CFGR_EN_Pos (0U)
+#define I3C_CFGR_EN_Msk (0x1UL << I3C_CFGR_EN_Pos) /*!< 0x00000001 */
+#define I3C_CFGR_EN I3C_CFGR_EN_Msk /*!< Peripheral Enable */
+#define I3C_CFGR_CRINIT_Pos (1U)
+#define I3C_CFGR_CRINIT_Msk (0x1UL << I3C_CFGR_CRINIT_Pos) /*!< 0x00000002 */
+#define I3C_CFGR_CRINIT I3C_CFGR_CRINIT_Msk /*!< Peripheral Init mode (Target/Controller) */
+#define I3C_CFGR_NOARBH_Pos (2U)
+#define I3C_CFGR_NOARBH_Msk (0x1UL << I3C_CFGR_NOARBH_Pos) /*!< 0x00000004 */
+#define I3C_CFGR_NOARBH I3C_CFGR_NOARBH_Msk /*!< No Arbitration Header (7'h7E)*/
+#define I3C_CFGR_RSTPTRN_Pos (3U)
+#define I3C_CFGR_RSTPTRN_Msk (0x1UL << I3C_CFGR_RSTPTRN_Pos) /*!< 0x00000008 */
+#define I3C_CFGR_RSTPTRN I3C_CFGR_RSTPTRN_Msk /*!< Reset Pattern enable */
+#define I3C_CFGR_EXITPTRN_Pos (4U)
+#define I3C_CFGR_EXITPTRN_Msk (0x1UL << I3C_CFGR_EXITPTRN_Pos) /*!< 0x00000010 */
+#define I3C_CFGR_EXITPTRN I3C_CFGR_EXITPTRN_Msk /*!< Exit Pattern enable */
+#define I3C_CFGR_HKSDAEN_Pos (5U)
+#define I3C_CFGR_HKSDAEN_Msk (0x1UL << I3C_CFGR_HKSDAEN_Pos) /*!< 0x00000020 */
+#define I3C_CFGR_HKSDAEN I3C_CFGR_HKSDAEN_Msk /*!< High-Keeper on SDA Enable */
+#define I3C_CFGR_HJACK_Pos (7U)
+#define I3C_CFGR_HJACK_Msk (0x1UL << I3C_CFGR_HJACK_Pos) /*!< 0x00000080 */
+#define I3C_CFGR_HJACK I3C_CFGR_HJACK_Msk /*!< Hot Join Acknowledgment */
+#define I3C_CFGR_RXDMAEN_Pos (8U)
+#define I3C_CFGR_RXDMAEN_Msk (0x1UL << I3C_CFGR_RXDMAEN_Pos) /*!< 0x00000100 */
+#define I3C_CFGR_RXDMAEN I3C_CFGR_RXDMAEN_Msk /*!< RX FIFO DMA mode Enable */
+#define I3C_CFGR_RXFLUSH_Pos (9U)
+#define I3C_CFGR_RXFLUSH_Msk (0x1UL << I3C_CFGR_RXFLUSH_Pos) /*!< 0x00000200 */
+#define I3C_CFGR_RXFLUSH I3C_CFGR_RXFLUSH_Msk /*!< RX FIFO Flush */
+#define I3C_CFGR_RXTHRES_Pos (10U)
+#define I3C_CFGR_RXTHRES_Msk (0x1UL << I3C_CFGR_RXTHRES_Pos) /*!< 0x00000400 */
+#define I3C_CFGR_RXTHRES I3C_CFGR_RXTHRES_Msk /*!< RX FIFO Threshold */
+#define I3C_CFGR_TXDMAEN_Pos (12U)
+#define I3C_CFGR_TXDMAEN_Msk (0x1UL << I3C_CFGR_TXDMAEN_Pos) /*!< 0x00001000 */
+#define I3C_CFGR_TXDMAEN I3C_CFGR_TXDMAEN_Msk /*!< TX FIFO DMA mode Enable */
+#define I3C_CFGR_TXFLUSH_Pos (13U)
+#define I3C_CFGR_TXFLUSH_Msk (0x1UL << I3C_CFGR_TXFLUSH_Pos) /*!< 0x00002000 */
+#define I3C_CFGR_TXFLUSH I3C_CFGR_TXFLUSH_Msk /*!< TX FIFO Flush */
+#define I3C_CFGR_TXTHRES_Pos (14U)
+#define I3C_CFGR_TXTHRES_Msk (0x1UL << I3C_CFGR_TXTHRES_Pos) /*!< 0x00004000 */
+#define I3C_CFGR_TXTHRES I3C_CFGR_TXTHRES_Msk /*!< TX FIFO Threshold */
+#define I3C_CFGR_SDMAEN_Pos (16U)
+#define I3C_CFGR_SDMAEN_Msk (0x1UL << I3C_CFGR_SDMAEN_Pos) /*!< 0x00010000 */
+#define I3C_CFGR_SDMAEN I3C_CFGR_SDMAEN_Msk /*!< Status FIFO DMA mode Enable */
+#define I3C_CFGR_SFLUSH_Pos (17U)
+#define I3C_CFGR_SFLUSH_Msk (0x1UL << I3C_CFGR_SFLUSH_Pos) /*!< 0x00020000 */
+#define I3C_CFGR_SFLUSH I3C_CFGR_SFLUSH_Msk /*!< Status FIFO Flush */
+#define I3C_CFGR_SMODE_Pos (18U)
+#define I3C_CFGR_SMODE_Msk (0x1UL << I3C_CFGR_SMODE_Pos) /*!< 0x00040000 */
+#define I3C_CFGR_SMODE I3C_CFGR_SMODE_Msk /*!< Status FIFO mode Enable */
+#define I3C_CFGR_TMODE_Pos (19U)
+#define I3C_CFGR_TMODE_Msk (0x1UL << I3C_CFGR_TMODE_Pos) /*!< 0x00080000 */
+#define I3C_CFGR_TMODE I3C_CFGR_TMODE_Msk /*!< Control FIFO mode Enable */
+#define I3C_CFGR_CDMAEN_Pos (20U)
+#define I3C_CFGR_CDMAEN_Msk (0x1UL << I3C_CFGR_CDMAEN_Pos) /*!< 0x00100000 */
+#define I3C_CFGR_CDMAEN I3C_CFGR_CDMAEN_Msk /*!< Control FIFO DMA mode Enable */
+#define I3C_CFGR_CFLUSH_Pos (21U)
+#define I3C_CFGR_CFLUSH_Msk (0x1UL << I3C_CFGR_CFLUSH_Pos) /*!< 0x00200000 */
+#define I3C_CFGR_CFLUSH I3C_CFGR_CFLUSH_Msk /*!< Control FIFO Flush */
+#define I3C_CFGR_TSFSET_Pos (30U)
+#define I3C_CFGR_TSFSET_Msk (0x1UL << I3C_CFGR_TSFSET_Pos) /*!< 0x40000000 */
+#define I3C_CFGR_TSFSET I3C_CFGR_TSFSET_Msk /*!< Transfer Set */
+
+/******************* Bit definition for I3C_RDR register ********************/
+#define I3C_RDR_RDB0_Pos (0U)
+#define I3C_RDR_RDB0_Msk (0xFFUL << I3C_RDR_RDB0_Pos) /*!< 0x000000FF */
+#define I3C_RDR_RDB0 I3C_RDR_RDB0_Msk /*!< Receive Data Byte */
+
+/****************** Bit definition for I3C_RDWR register ********************/
+#define I3C_RDWR_RDBx_Pos (0U)
+#define I3C_RDWR_RDBx_Msk (0xFFFFFFFFUL << I3C_RDWR_RDBx_Pos) /*!< 0xFFFFFFFF */
+#define I3C_RDWR_RDBx I3C_RDWR_RDBx_Msk /*!< Receive Data Byte, full double word */
+#define I3C_RDWR_RDB0_Pos (0U)
+#define I3C_RDWR_RDB0_Msk (0xFFUL << I3C_RDWR_RDB0_Pos) /*!< 0x000000FF */
+#define I3C_RDWR_RDB0 I3C_RDWR_RDB0_Msk /*!< Receive Data Byte 0 */
+#define I3C_RDWR_RDB1_Pos (8U)
+#define I3C_RDWR_RDB1_Msk (0xFFUL << I3C_RDWR_RDB1_Pos) /*!< 0x0000FF00 */
+#define I3C_RDWR_RDB1 I3C_RDWR_RDB1_Msk /*!< Receive Data Byte 1 */
+#define I3C_RDWR_RDB2_Pos (16U)
+#define I3C_RDWR_RDB2_Msk (0xFFUL << I3C_RDWR_RDB2_Pos) /*!< 0x00FF0000 */
+#define I3C_RDWR_RDB2 I3C_RDWR_RDB2_Msk /*!< Receive Data Byte 2 */
+#define I3C_RDWR_RDB3_Pos (24U)
+#define I3C_RDWR_RDB3_Msk (0xFFUL << I3C_RDWR_RDB3_Pos) /*!< 0xFF000000 */
+#define I3C_RDWR_RDB3 I3C_RDWR_RDB3_Msk /*!< Receive Data Byte 3 */
+
+/******************* Bit definition for I3C_TDR register ********************/
+#define I3C_TDR_TDB0_Pos (0U)
+#define I3C_TDR_TDB0_Msk (0xFFUL << I3C_TDR_TDB0_Pos) /*!< 0x000000FF */
+#define I3C_TDR_TDB0 I3C_TDR_TDB0_Msk /*!< Transmit Data Byte */
+
+/****************** Bit definition for I3C_TDWR register ********************/
+#define I3C_TDWR_TDBx_Pos (0U)
+#define I3C_TDWR_TDBx_Msk (0xFFFFFFFFUL << I3C_TDWR_TDBx_Pos) /*!< 0xFFFFFFFF */
+#define I3C_TDWR_TDBx I3C_TDWR_TDBx_Msk /*!< Transmit Data Byte, full double word */
+#define I3C_TDWR_TDB0_Pos (0U)
+#define I3C_TDWR_TDB0_Msk (0xFFUL << I3C_TDWR_TDB0_Pos) /*!< 0x000000FF */
+#define I3C_TDWR_TDB0 I3C_TDWR_TDB0_Msk /*!< Transmit Data Byte 0 */
+#define I3C_TDWR_TDB1_Pos (8U)
+#define I3C_TDWR_TDB1_Msk (0xFFUL << I3C_TDWR_TDB1_Pos) /*!< 0x0000FF00 */
+#define I3C_TDWR_TDB1 I3C_TDWR_TDB1_Msk /*!< Transmit Data Byte 1 */
+#define I3C_TDWR_TDB2_Pos (16U)
+#define I3C_TDWR_TDB2_Msk (0xFFUL << I3C_TDWR_TDB2_Pos) /*!< 0x00FF0000 */
+#define I3C_TDWR_TDB2 I3C_TDWR_TDB2_Msk /*!< Transmit Data Byte 2 */
+#define I3C_TDWR_TDB3_Pos (24U)
+#define I3C_TDWR_TDB3_Msk (0xFFUL << I3C_TDWR_TDB3_Pos) /*!< 0xFF000000 */
+#define I3C_TDWR_TDB3 I3C_TDWR_TDB3_Msk /*!< Transmit Data Byte 3 */
+
+/******************* Bit definition for I3C_IBIDR register ******************/
+#define I3C_IBIDR_IBIDBx_Pos (0U)
+#define I3C_IBIDR_IBIDBx_Msk (0xFFFFFFFFUL << I3C_IBIDR_IBIDBx_Pos) /*!< 0xFFFFFFFF */
+#define I3C_IBIDR_IBIDBx I3C_IBIDR_IBIDBx_Msk /*!< IBI Data Byte, full double word */
+#define I3C_IBIDR_IBIDB0_Pos (0U)
+#define I3C_IBIDR_IBIDB0_Msk (0xFFUL << I3C_IBIDR_IBIDB0_Pos) /*!< 0x000000FF */
+#define I3C_IBIDR_IBIDB0 I3C_IBIDR_IBIDB0_Msk /*!< IBI Data Byte 0 */
+#define I3C_IBIDR_IBIDB1_Pos (8U)
+#define I3C_IBIDR_IBIDB1_Msk (0xFFUL << I3C_IBIDR_IBIDB1_Pos) /*!< 0x0000FF00 */
+#define I3C_IBIDR_IBIDB1 I3C_IBIDR_IBIDB1_Msk /*!< IBI Data Byte 1 */
+#define I3C_IBIDR_IBIDB2_Pos (16U)
+#define I3C_IBIDR_IBIDB2_Msk (0xFFUL << I3C_IBIDR_IBIDB2_Pos) /*!< 0x00FF0000 */
+#define I3C_IBIDR_IBIDB2 I3C_IBIDR_IBIDB2_Msk /*!< IBI Data Byte 2 */
+#define I3C_IBIDR_IBIDB3_Pos (24U)
+#define I3C_IBIDR_IBIDB3_Msk (0xFFUL << I3C_IBIDR_IBIDB3_Pos) /*!< 0xFF000000 */
+#define I3C_IBIDR_IBIDB3 I3C_IBIDR_IBIDB3_Msk /*!< IBI Data Byte 3 */
+
+/****************** Bit definition for I3C_TGTTDR register ******************/
+#define I3C_TGTTDR_TGTTDCNT_Pos (0U)
+#define I3C_TGTTDR_TGTTDCNT_Msk (0xFFFFUL << I3C_TGTTDR_TGTTDCNT_Pos) /*!< 0x0000FFFF */
+#define I3C_TGTTDR_TGTTDCNT I3C_TGTTDR_TGTTDCNT_Msk /*!< Target Transmit Data Counter */
+#define I3C_TGTTDR_PRELOAD_Pos (16U)
+#define I3C_TGTTDR_PRELOAD_Msk (0x1UL << I3C_TGTTDR_PRELOAD_Pos) /*!< 0x00010000 */
+#define I3C_TGTTDR_PRELOAD I3C_TGTTDR_PRELOAD_Msk /*!< Transmit FIFO Preload Enable/Status */
+
+/******************* Bit definition for I3C_SR register *********************/
+#define I3C_SR_XDCNT_Pos (0U)
+#define I3C_SR_XDCNT_Msk (0xFFFFUL << I3C_SR_XDCNT_Pos) /*!< 0x0000FFFF */
+#define I3C_SR_XDCNT I3C_SR_XDCNT_Msk /*!< Transfer Data Byte Count status */
+#define I3C_SR_ABT_Pos (17U)
+#define I3C_SR_ABT_Msk (0x1UL << I3C_SR_ABT_Pos) /*!< 0x00020000 */
+#define I3C_SR_ABT I3C_SR_ABT_Msk /*!< Target Abort Indication */
+#define I3C_SR_DIR_Pos (18U)
+#define I3C_SR_DIR_Msk (0x1UL << I3C_SR_DIR_Pos) /*!< 0x00040000 */
+#define I3C_SR_DIR I3C_SR_DIR_Msk /*!< Message Direction */
+#define I3C_SR_MID_Pos (24U)
+#define I3C_SR_MID_Msk (0xFFUL << I3C_SR_MID_Pos) /*!< 0xFF000000 */
+#define I3C_SR_MID I3C_SR_MID_Msk /*!< Message Identifier */
+
+/******************* Bit definition for I3C_SER register ********************/
+#define I3C_SER_CODERR_Pos (0U)
+#define I3C_SER_CODERR_Msk (0xFUL << I3C_SER_CODERR_Pos) /*!< 0x0000000F */
+#define I3C_SER_CODERR I3C_SER_CODERR_Msk /*!< Protocol Error Code */
+#define I3C_SER_CODERR_0 (0x1UL << I3C_SER_CODERR_Pos) /*!< 0x00000001 */
+#define I3C_SER_CODERR_1 (0x2UL << I3C_SER_CODERR_Pos) /*!< 0x00000002 */
+#define I3C_SER_CODERR_2 (0x4UL << I3C_SER_CODERR_Pos) /*!< 0x00000004 */
+#define I3C_SER_CODERR_3 (0x8UL << I3C_SER_CODERR_Pos) /*!< 0x00000008 */
+#define I3C_SER_PERR_Pos (4U)
+#define I3C_SER_PERR_Msk (0x1UL << I3C_SER_PERR_Pos) /*!< 0x00000010 */
+#define I3C_SER_PERR I3C_SER_PERR_Msk /*!< Protocol Error */
+#define I3C_SER_STALL_Pos (5U)
+#define I3C_SER_STALL_Msk (0x1UL << I3C_SER_STALL_Pos) /*!< 0x00000020 */
+#define I3C_SER_STALL I3C_SER_STALL_Msk /*!< SCL Stall Error */
+#define I3C_SER_DOVR_Pos (6U)
+#define I3C_SER_DOVR_Msk (0x1UL << I3C_SER_DOVR_Pos) /*!< 0x00000040 */
+#define I3C_SER_DOVR I3C_SER_DOVR_Msk /*!< RX/TX FIFO Overrun */
+#define I3C_SER_COVR_Pos (7U)
+#define I3C_SER_COVR_Msk (0x1UL << I3C_SER_COVR_Pos) /*!< 0x00000080 */
+#define I3C_SER_COVR I3C_SER_COVR_Msk /*!< Status/Control FIFO Overrun */
+#define I3C_SER_ANACK_Pos (8U)
+#define I3C_SER_ANACK_Msk (0x1UL << I3C_SER_ANACK_Pos) /*!< 0x00000100 */
+#define I3C_SER_ANACK I3C_SER_ANACK_Msk /*!< Address Not Acknowledged */
+#define I3C_SER_DNACK_Pos (9U)
+#define I3C_SER_DNACK_Msk (0x1UL << I3C_SER_DNACK_Pos) /*!< 0x00000200 */
+#define I3C_SER_DNACK I3C_SER_DNACK_Msk /*!< Data Not Acknowledged */
+#define I3C_SER_DERR_Pos (10U)
+#define I3C_SER_DERR_Msk (0x1UL << I3C_SER_DERR_Pos) /*!< 0x00000400 */
+#define I3C_SER_DERR I3C_SER_DERR_Msk /*!< Data Error during the controller-role hand-off procedure */
+
+/******************* Bit definition for I3C_RMR register ********************/
+#define I3C_RMR_IBIRDCNT_Pos (0U)
+#define I3C_RMR_IBIRDCNT_Msk (0x7UL << I3C_RMR_IBIRDCNT_Pos) /*!< 0x00000007 */
+#define I3C_RMR_IBIRDCNT I3C_RMR_IBIRDCNT_Msk /*!< Data Count when reading IBI data */
+#define I3C_RMR_RCODE_Pos (8U)
+#define I3C_RMR_RCODE_Msk (0xFFUL << I3C_RMR_RCODE_Pos) /*!< 0x0000FF00 */
+#define I3C_RMR_RCODE I3C_RMR_RCODE_Msk /*!< CCC code of received command */
+#define I3C_RMR_RADD_Pos (17U)
+#define I3C_RMR_RADD_Msk (0x7FUL << I3C_RMR_RADD_Pos) /*!< 0x00FE0000 */
+#define I3C_RMR_RADD I3C_RMR_RADD_Msk /*!< Target Address Received during accepted IBI or Controller-role request */
+
+/******************* Bit definition for I3C_EVR register ********************/
+#define I3C_EVR_CFEF_Pos (0U)
+#define I3C_EVR_CFEF_Msk (0x1UL << I3C_EVR_CFEF_Pos) /*!< 0x00000001 */
+#define I3C_EVR_CFEF I3C_EVR_CFEF_Msk /*!< Control FIFO Empty Flag */
+#define I3C_EVR_TXFEF_Pos (1U)
+#define I3C_EVR_TXFEF_Msk (0x1UL << I3C_EVR_TXFEF_Pos) /*!< 0x00000002 */
+#define I3C_EVR_TXFEF I3C_EVR_TXFEF_Msk /*!< TX FIFO Empty Flag */
+#define I3C_EVR_CFNFF_Pos (2U)
+#define I3C_EVR_CFNFF_Msk (0x1UL << I3C_EVR_CFNFF_Pos) /*!< 0x00000004 */
+#define I3C_EVR_CFNFF I3C_EVR_CFNFF_Msk /*!< Control FIFO Not Full Flag */
+#define I3C_EVR_SFNEF_Pos (3U)
+#define I3C_EVR_SFNEF_Msk (0x1UL << I3C_EVR_SFNEF_Pos) /*!< 0x00000008 */
+#define I3C_EVR_SFNEF I3C_EVR_SFNEF_Msk /*!< Status FIFO Not Empty Flag */
+#define I3C_EVR_TXFNFF_Pos (4U)
+#define I3C_EVR_TXFNFF_Msk (0x1UL << I3C_EVR_TXFNFF_Pos) /*!< 0x00000010 */
+#define I3C_EVR_TXFNFF I3C_EVR_TXFNFF_Msk /*!< TX FIFO Not Full Flag */
+#define I3C_EVR_RXFNEF_Pos (5U)
+#define I3C_EVR_RXFNEF_Msk (0x1UL << I3C_EVR_RXFNEF_Pos) /*!< 0x00000020 */
+#define I3C_EVR_RXFNEF I3C_EVR_RXFNEF_Msk /*!< RX FIFO Not Empty Flag */
+#define I3C_EVR_TXLASTF_Pos (6U)
+#define I3C_EVR_TXLASTF_Msk (0x1UL << I3C_EVR_TXLASTF_Pos) /*!< 0x00000040 */
+#define I3C_EVR_TXLASTF I3C_EVR_TXLASTF_Msk /*!< Last TX byte available in FIFO */
+#define I3C_EVR_RXLASTF_Pos (7U)
+#define I3C_EVR_RXLASTF_Msk (0x1UL << I3C_EVR_RXLASTF_Pos) /*!< 0x00000080 */
+#define I3C_EVR_RXLASTF I3C_EVR_RXLASTF_Msk /*!< Last RX byte read from FIFO */
+#define I3C_EVR_FCF_Pos (9U)
+#define I3C_EVR_FCF_Msk (0x1UL << I3C_EVR_FCF_Pos) /*!< 0x00000200 */
+#define I3C_EVR_FCF I3C_EVR_FCF_Msk /*!< Frame Complete Flag */
+#define I3C_EVR_RXTGTENDF_Pos (10U)
+#define I3C_EVR_RXTGTENDF_Msk (0x1UL << I3C_EVR_RXTGTENDF_Pos) /*!< 0x00000400 */
+#define I3C_EVR_RXTGTENDF I3C_EVR_RXTGTENDF_Msk /*!< Reception Target End Flag */
+#define I3C_EVR_ERRF_Pos (11U)
+#define I3C_EVR_ERRF_Msk (0x1UL << I3C_EVR_ERRF_Pos) /*!< 0x00000800 */
+#define I3C_EVR_ERRF I3C_EVR_ERRF_Msk /*!< Error Flag */
+#define I3C_EVR_IBIF_Pos (15U)
+#define I3C_EVR_IBIF_Msk (0x1UL << I3C_EVR_IBIF_Pos) /*!< 0x00008000 */
+#define I3C_EVR_IBIF I3C_EVR_IBIF_Msk /*!< IBI Flag */
+#define I3C_EVR_IBIENDF_Pos (16U)
+#define I3C_EVR_IBIENDF_Msk (0x1UL << I3C_EVR_IBIENDF_Pos) /*!< 0x00010000 */
+#define I3C_EVR_IBIENDF I3C_EVR_IBIENDF_Msk /*!< IBI End Flag */
+#define I3C_EVR_CRF_Pos (17U)
+#define I3C_EVR_CRF_Msk (0x1UL << I3C_EVR_CRF_Pos) /*!< 0x00020000 */
+#define I3C_EVR_CRF I3C_EVR_CRF_Msk /*!< Controller-role Request Flag */
+#define I3C_EVR_CRUPDF_Pos (18U)
+#define I3C_EVR_CRUPDF_Msk (0x1UL << I3C_EVR_CRUPDF_Pos) /*!< 0x00040000 */
+#define I3C_EVR_CRUPDF I3C_EVR_CRUPDF_Msk /*!< Controller-role Update Flag */
+#define I3C_EVR_HJF_Pos (19U)
+#define I3C_EVR_HJF_Msk (0x1UL << I3C_EVR_HJF_Pos) /*!< 0x00080000 */
+#define I3C_EVR_HJF I3C_EVR_HJF_Msk /*!< Hot Join Flag */
+#define I3C_EVR_WKPF_Pos (21U)
+#define I3C_EVR_WKPF_Msk (0x1UL << I3C_EVR_WKPF_Pos) /*!< 0x00200000 */
+#define I3C_EVR_WKPF I3C_EVR_WKPF_Msk /*!< Wake Up Flag */
+#define I3C_EVR_GETF_Pos (22U)
+#define I3C_EVR_GETF_Msk (0x1UL << I3C_EVR_GETF_Pos) /*!< 0x00400000 */
+#define I3C_EVR_GETF I3C_EVR_GETF_Msk /*!< Get type CCC received Flag */
+#define I3C_EVR_STAF_Pos (23U)
+#define I3C_EVR_STAF_Msk (0x1UL << I3C_EVR_STAF_Pos) /*!< 0x00800000 */
+#define I3C_EVR_STAF I3C_EVR_STAF_Msk /*!< Get Status Flag */
+#define I3C_EVR_DAUPDF_Pos (24U)
+#define I3C_EVR_DAUPDF_Msk (0x1UL << I3C_EVR_DAUPDF_Pos) /*!< 0x01000000 */
+#define I3C_EVR_DAUPDF I3C_EVR_DAUPDF_Msk /*!< Dynamic Address Update Flag */
+#define I3C_EVR_MWLUPDF_Pos (25U)
+#define I3C_EVR_MWLUPDF_Msk (0x1UL << I3C_EVR_MWLUPDF_Pos) /*!< 0x02000000 */
+#define I3C_EVR_MWLUPDF I3C_EVR_MWLUPDF_Msk /*!< Max Write Length Update Flag */
+#define I3C_EVR_MRLUPDF_Pos (26U)
+#define I3C_EVR_MRLUPDF_Msk (0x1UL << I3C_EVR_MRLUPDF_Pos) /*!< 0x04000000 */
+#define I3C_EVR_MRLUPDF I3C_EVR_MRLUPDF_Msk /*!< Max Read Length Update Flag */
+#define I3C_EVR_RSTF_Pos (27U)
+#define I3C_EVR_RSTF_Msk (0x1UL << I3C_EVR_RSTF_Pos) /*!< 0x08000000 */
+#define I3C_EVR_RSTF I3C_EVR_RSTF_Msk /*!< Reset Flag, due to Reset pattern received */
+#define I3C_EVR_ASUPDF_Pos (28U)
+#define I3C_EVR_ASUPDF_Msk (0x1UL << I3C_EVR_ASUPDF_Pos) /*!< 0x10000000 */
+#define I3C_EVR_ASUPDF I3C_EVR_ASUPDF_Msk /*!< Activity State Flag */
+#define I3C_EVR_INTUPDF_Pos (29U)
+#define I3C_EVR_INTUPDF_Msk (0x1UL << I3C_EVR_INTUPDF_Pos) /*!< 0x20000000 */
+#define I3C_EVR_INTUPDF I3C_EVR_INTUPDF_Msk /*!< Interrupt Update Flag */
+#define I3C_EVR_DEFF_Pos (30U)
+#define I3C_EVR_DEFF_Msk (0x1UL << I3C_EVR_DEFF_Pos) /*!< 0x40000000 */
+#define I3C_EVR_DEFF I3C_EVR_DEFF_Msk /*!< List of Targets Command Received Flag */
+#define I3C_EVR_GRPF_Pos (31U)
+#define I3C_EVR_GRPF_Msk (0x1UL << I3C_EVR_GRPF_Pos) /*!< 0x80000000 */
+#define I3C_EVR_GRPF I3C_EVR_GRPF_Msk /*!< List of Group Addresses Command Received Flag */
+
+/******************* Bit definition for I3C_IER register ********************/
+#define I3C_IER_CFNFIE_Pos (2U)
+#define I3C_IER_CFNFIE_Msk (0x1UL << I3C_IER_CFNFIE_Pos) /*!< 0x00000004 */
+#define I3C_IER_CFNFIE I3C_IER_CFNFIE_Msk /*!< Control FIFO Not Full Interrupt Enable */
+#define I3C_IER_SFNEIE_Pos (3U)
+#define I3C_IER_SFNEIE_Msk (0x1UL << I3C_IER_SFNEIE_Pos) /*!< 0x00000008 */
+#define I3C_IER_SFNEIE I3C_IER_SFNEIE_Msk /*!< Status FIFO Not Empty Interrupt Enable */
+#define I3C_IER_TXFNFIE_Pos (4U)
+#define I3C_IER_TXFNFIE_Msk (0x1UL << I3C_IER_TXFNFIE_Pos) /*!< 0x00000010 */
+#define I3C_IER_TXFNFIE I3C_IER_TXFNFIE_Msk /*!< TX FIFO Not Full Interrupt Enable */
+#define I3C_IER_RXFNEIE_Pos (5U)
+#define I3C_IER_RXFNEIE_Msk (0x1UL << I3C_IER_RXFNEIE_Pos) /*!< 0x00000020 */
+#define I3C_IER_RXFNEIE I3C_IER_RXFNEIE_Msk /*!< RX FIFO Not Empty Interrupt Enable */
+#define I3C_IER_FCIE_Pos (9U)
+#define I3C_IER_FCIE_Msk (0x1UL << I3C_IER_FCIE_Pos) /*!< 0x00000200 */
+#define I3C_IER_FCIE I3C_IER_FCIE_Msk /*!< Frame Complete Interrupt Enable */
+#define I3C_IER_RXTGTENDIE_Pos (10U)
+#define I3C_IER_RXTGTENDIE_Msk (0x1UL << I3C_IER_RXTGTENDIE_Pos) /*!< 0x00000400 */
+#define I3C_IER_RXTGTENDIE I3C_IER_RXTGTENDIE_Msk /*!< Reception Target End Interrupt Enable */
+#define I3C_IER_ERRIE_Pos (11U)
+#define I3C_IER_ERRIE_Msk (0x1UL << I3C_IER_ERRIE_Pos) /*!< 0x00000800 */
+#define I3C_IER_ERRIE I3C_IER_ERRIE_Msk /*!< Error Interrupt Enable */
+#define I3C_IER_IBIIE_Pos (15U)
+#define I3C_IER_IBIIE_Msk (0x1UL << I3C_IER_IBIIE_Pos) /*!< 0x00008000 */
+#define I3C_IER_IBIIE I3C_IER_IBIIE_Msk /*!< IBI Interrupt Enable */
+#define I3C_IER_IBIENDIE_Pos (16U)
+#define I3C_IER_IBIENDIE_Msk (0x1UL << I3C_IER_IBIENDIE_Pos) /*!< 0x00010000 */
+#define I3C_IER_IBIENDIE I3C_IER_IBIENDIE_Msk /*!< IBI End Interrupt Enable */
+#define I3C_IER_CRIE_Pos (17U)
+#define I3C_IER_CRIE_Msk (0x1UL << I3C_IER_CRIE_Pos) /*!< 0x00020000 */
+#define I3C_IER_CRIE I3C_IER_CRIE_Msk /*!< Controller-role Interrupt Enable */
+#define I3C_IER_CRUPDIE_Pos (18U)
+#define I3C_IER_CRUPDIE_Msk (0x1UL << I3C_IER_CRUPDIE_Pos) /*!< 0x00040000 */
+#define I3C_IER_CRUPDIE I3C_IER_CRUPDIE_Msk /*!< Controller-role Update Interrupt Enable */
+#define I3C_IER_HJIE_Pos (19U)
+#define I3C_IER_HJIE_Msk (0x1UL << I3C_IER_HJIE_Pos) /*!< 0x00080000 */
+#define I3C_IER_HJIE I3C_IER_HJIE_Msk /*!< Hot Join Interrupt Enable */
+#define I3C_IER_WKPIE_Pos (21U)
+#define I3C_IER_WKPIE_Msk (0x1UL << I3C_IER_WKPIE_Pos) /*!< 0x00200000 */
+#define I3C_IER_WKPIE I3C_IER_WKPIE_Msk /*!< Wake Up Interrupt Enable */
+#define I3C_IER_GETIE_Pos (22U)
+#define I3C_IER_GETIE_Msk (0x1UL << I3C_IER_GETIE_Pos) /*!< 0x00400000 */
+#define I3C_IER_GETIE I3C_IER_GETIE_Msk /*!< Get type CCC received Interrupt Enable */
+#define I3C_IER_STAIE_Pos (23U)
+#define I3C_IER_STAIE_Msk (0x1UL << I3C_IER_STAIE_Pos) /*!< 0x00800000 */
+#define I3C_IER_STAIE I3C_IER_STAIE_Msk /*!< Get Status Interrupt Enable */
+#define I3C_IER_DAUPDIE_Pos (24U)
+#define I3C_IER_DAUPDIE_Msk (0x1UL << I3C_IER_DAUPDIE_Pos) /*!< 0x01000000 */
+#define I3C_IER_DAUPDIE I3C_IER_DAUPDIE_Msk /*!< Dynamic Address Update Interrupt Enable */
+#define I3C_IER_MWLUPDIE_Pos (25U)
+#define I3C_IER_MWLUPDIE_Msk (0x1UL << I3C_IER_MWLUPDIE_Pos) /*!< 0x02000000 */
+#define I3C_IER_MWLUPDIE I3C_IER_MWLUPDIE_Msk /*!< Max Write Length Update Interrupt Enable */
+#define I3C_IER_MRLUPDIE_Pos (26U)
+#define I3C_IER_MRLUPDIE_Msk (0x1UL << I3C_IER_MRLUPDIE_Pos) /*!< 0x04000000 */
+#define I3C_IER_MRLUPDIE I3C_IER_MRLUPDIE_Msk /*!< Max Read Length Update Interrupt Enable */
+#define I3C_IER_RSTIE_Pos (27U)
+#define I3C_IER_RSTIE_Msk (0x1UL << I3C_IER_RSTIE_Pos) /*!< 0x08000000 */
+#define I3C_IER_RSTIE I3C_IER_RSTIE_Msk /*!< Reset Interrupt Enabled, due to Reset pattern received */
+#define I3C_IER_ASUPDIE_Pos (28U)
+#define I3C_IER_ASUPDIE_Msk (0x1UL << I3C_IER_ASUPDIE_Pos) /*!< 0x10000000 */
+#define I3C_IER_ASUPDIE I3C_IER_ASUPDIE_Msk /*!< Activity State Interrupt Enable */
+#define I3C_IER_INTUPDIE_Pos (29U)
+#define I3C_IER_INTUPDIE_Msk (0x1UL << I3C_IER_INTUPDIE_Pos) /*!< 0x20000000 */
+#define I3C_IER_INTUPDIE I3C_IER_INTUPDIE_Msk /*!< Interrupt Update Interrupt Enable */
+#define I3C_IER_DEFIE_Pos (30U)
+#define I3C_IER_DEFIE_Msk (0x1UL << I3C_IER_DEFIE_Pos) /*!< 0x40000000 */
+#define I3C_IER_DEFIE I3C_IER_DEFIE_Msk /*!< List of Targets Command Received Interrupt Enable */
+#define I3C_IER_GRPIE_Pos (31U)
+#define I3C_IER_GRPIE_Msk (0x1UL << I3C_IER_GRPIE_Pos) /*!< 0x80000000 */
+#define I3C_IER_GRPIE I3C_IER_GRPIE_Msk /*!< List of Group Addresses Command Received Interrupt Enable */
+
+/******************* Bit definition for I3C_CEVR register *******************/
+#define I3C_CEVR_CFCF_Pos (9U)
+#define I3C_CEVR_CFCF_Msk (0x1UL << I3C_CEVR_CFCF_Pos) /*!< 0x00000200 */
+#define I3C_CEVR_CFCF I3C_CEVR_CFCF_Msk /*!< Frame Complete Clear Flag */
+#define I3C_CEVR_CRXTGTENDF_Pos (10U)
+#define I3C_CEVR_CRXTGTENDF_Msk (0x1UL << I3C_CEVR_CRXTGTENDF_Pos) /*!< 0x00000400 */
+#define I3C_CEVR_CRXTGTENDF I3C_CEVR_CRXTGTENDF_Msk /*!< Reception Target End Clear Flag */
+#define I3C_CEVR_CERRF_Pos (11U)
+#define I3C_CEVR_CERRF_Msk (0x1UL << I3C_CEVR_CERRF_Pos) /*!< 0x00000800 */
+#define I3C_CEVR_CERRF I3C_CEVR_CERRF_Msk /*!< Error Clear Flag */
+#define I3C_CEVR_CIBIF_Pos (15U)
+#define I3C_CEVR_CIBIF_Msk (0x1UL << I3C_CEVR_CIBIF_Pos) /*!< 0x00008000 */
+#define I3C_CEVR_CIBIF I3C_CEVR_CIBIF_Msk /*!< IBI Clear Flag */
+#define I3C_CEVR_CIBIENDF_Pos (16U)
+#define I3C_CEVR_CIBIENDF_Msk (0x1UL << I3C_CEVR_CIBIENDF_Pos) /*!< 0x00010000 */
+#define I3C_CEVR_CIBIENDF I3C_CEVR_CIBIENDF_Msk /*!< IBI End Clear Flag */
+#define I3C_CEVR_CCRF_Pos (17U)
+#define I3C_CEVR_CCRF_Msk (0x1UL << I3C_CEVR_CCRF_Pos) /*!< 0x00020000 */
+#define I3C_CEVR_CCRF I3C_CEVR_CCRF_Msk /*!< Controller-role Clear Flag */
+#define I3C_CEVR_CCRUPDF_Pos (18U)
+#define I3C_CEVR_CCRUPDF_Msk (0x1UL << I3C_CEVR_CCRUPDF_Pos) /*!< 0x00040000 */
+#define I3C_CEVR_CCRUPDF I3C_CEVR_CCRUPDF_Msk /*!< Controller-role Update Clear Flag */
+#define I3C_CEVR_CHJF_Pos (19U)
+#define I3C_CEVR_CHJF_Msk (0x1UL << I3C_CEVR_CHJF_Pos) /*!< 0x00080000 */
+#define I3C_CEVR_CHJF I3C_CEVR_CHJF_Msk /*!< Hot Join Clear Flag */
+#define I3C_CEVR_CWKPF_Pos (21U)
+#define I3C_CEVR_CWKPF_Msk (0x1UL << I3C_CEVR_CWKPF_Pos) /*!< 0x00200000 */
+#define I3C_CEVR_CWKPF I3C_CEVR_CWKPF_Msk /*!< Wake Up Clear Flag */
+#define I3C_CEVR_CGETF_Pos (22U)
+#define I3C_CEVR_CGETF_Msk (0x1UL << I3C_CEVR_CGETF_Pos) /*!< 0x00400000 */
+#define I3C_CEVR_CGETF I3C_CEVR_CGETF_Msk /*!< Get type CCC received Clear Flag */
+#define I3C_CEVR_CSTAF_Pos (23U)
+#define I3C_CEVR_CSTAF_Msk (0x1UL << I3C_CEVR_CSTAF_Pos) /*!< 0x00800000 */
+#define I3C_CEVR_CSTAF I3C_CEVR_CSTAF_Msk /*!< Get Status Clear Flag */
+#define I3C_CEVR_CDAUPDF_Pos (24U)
+#define I3C_CEVR_CDAUPDF_Msk (0x1UL << I3C_CEVR_CDAUPDF_Pos) /*!< 0x01000000 */
+#define I3C_CEVR_CDAUPDF I3C_CEVR_CDAUPDF_Msk /*!< Dynamic Address Update Clear Flag */
+#define I3C_CEVR_CMWLUPDF_Pos (25U)
+#define I3C_CEVR_CMWLUPDF_Msk (0x1UL << I3C_CEVR_CMWLUPDF_Pos) /*!< 0x02000000 */
+#define I3C_CEVR_CMWLUPDF I3C_CEVR_CMWLUPDF_Msk /*!< Max Write Length Update Clear Flag */
+#define I3C_CEVR_CMRLUPDF_Pos (26U)
+#define I3C_CEVR_CMRLUPDF_Msk (0x1UL << I3C_CEVR_CMRLUPDF_Pos) /*!< 0x04000000 */
+#define I3C_CEVR_CMRLUPDF I3C_CEVR_CMRLUPDF_Msk /*!< Max Read Length Update Clear Flag */
+#define I3C_CEVR_CRSTF_Pos (27U)
+#define I3C_CEVR_CRSTF_Msk (0x1UL << I3C_CEVR_CRSTF_Pos) /*!< 0x08000000 */
+#define I3C_CEVR_CRSTF I3C_CEVR_CRSTF_Msk /*!< Reset Flag, due to Reset pattern received */
+#define I3C_CEVR_CASUPDF_Pos (28U)
+#define I3C_CEVR_CASUPDF_Msk (0x1UL << I3C_CEVR_CASUPDF_Pos) /*!< 0x10000000 */
+#define I3C_CEVR_CASUPDF I3C_CEVR_CASUPDF_Msk /*!< Activity State Clear Flag */
+#define I3C_CEVR_CINTUPDF_Pos (29U)
+#define I3C_CEVR_CINTUPDF_Msk (0x1UL << I3C_CEVR_CINTUPDF_Pos) /*!< 0x20000000 */
+#define I3C_CEVR_CINTUPDF I3C_CEVR_CINTUPDF_Msk /*!< Interrupt Update Clear Flag */
+#define I3C_CEVR_CDEFF_Pos (30U)
+#define I3C_CEVR_CDEFF_Msk (0x1UL << I3C_CEVR_CDEFF_Pos) /*!< 0x40000000 */
+#define I3C_CEVR_CDEFF I3C_CEVR_CDEFF_Msk /*!< List of Targets Command Received Clear Flag */
+#define I3C_CEVR_CGRPF_Pos (31U)
+#define I3C_CEVR_CGRPF_Msk (0x1UL << I3C_CEVR_CGRPF_Pos) /*!< 0x80000000 */
+#define I3C_CEVR_CGRPF I3C_CEVR_CGRPF_Msk /*!< List of Group Addresses Command Received Clear Flag */
+
+/****************** Bit definition for I3C_DEVR0 register *******************/
+#define I3C_DEVR0_DAVAL_Pos (0U)
+#define I3C_DEVR0_DAVAL_Msk (0x1UL << I3C_DEVR0_DAVAL_Pos) /*!< 0x00000001 */
+#define I3C_DEVR0_DAVAL I3C_DEVR0_DAVAL_Msk /*!< Dynamic Address Validity */
+#define I3C_DEVR0_DA_Pos (1U)
+#define I3C_DEVR0_DA_Msk (0x7FUL << I3C_DEVR0_DA_Pos) /*!< 0x000000FE */
+#define I3C_DEVR0_DA I3C_DEVR0_DA_Msk /*!< Own Target Device Address */
+#define I3C_DEVR0_IBIEN_Pos (16U)
+#define I3C_DEVR0_IBIEN_Msk (0x1UL << I3C_DEVR0_IBIEN_Pos) /*!< 0x00010000 */
+#define I3C_DEVR0_IBIEN I3C_DEVR0_IBIEN_Msk /*!< IBI Enable */
+#define I3C_DEVR0_CREN_Pos (17U)
+#define I3C_DEVR0_CREN_Msk (0x1UL << I3C_DEVR0_CREN_Pos) /*!< 0x00020000 */
+#define I3C_DEVR0_CREN I3C_DEVR0_CREN_Msk /*!< Controller-role Enable */
+#define I3C_DEVR0_HJEN_Pos (19U)
+#define I3C_DEVR0_HJEN_Msk (0x1UL << I3C_DEVR0_HJEN_Pos) /*!< 0x00080000 */
+#define I3C_DEVR0_HJEN I3C_DEVR0_HJEN_Msk /*!< Hot Join Enable */
+#define I3C_DEVR0_AS_Pos (20U)
+#define I3C_DEVR0_AS_Msk (0x3UL << I3C_DEVR0_AS_Pos) /*!< 0x00300000 */
+#define I3C_DEVR0_AS I3C_DEVR0_AS_Msk /*!< Activity State value update after ENTAx received */
+#define I3C_DEVR0_AS_0 (0x1UL << I3C_DEVR0_AS_Pos) /*!< 0x00100000 */
+#define I3C_DEVR0_AS_1 (0x2UL << I3C_DEVR0_AS_Pos) /*!< 0x00200000 */
+#define I3C_DEVR0_RSTACT_Pos (22U)
+#define I3C_DEVR0_RSTACT_Msk (0x3UL << I3C_DEVR0_RSTACT_Pos) /*!< 0x00C000000 */
+#define I3C_DEVR0_RSTACT I3C_DEVR0_RSTACT_Msk /*!< Reset Action value update after RSTACT received */
+#define I3C_DEVR0_RSTACT_0 (0x1UL << I3C_DEVR0_RSTACT_Pos) /*!< 0x00400000 */
+#define I3C_DEVR0_RSTACT_1 (0x2UL << I3C_DEVR0_RSTACT_Pos) /*!< 0x00800000 */
+#define I3C_DEVR0_RSTVAL_Pos (24U)
+#define I3C_DEVR0_RSTVAL_Msk (0x1UL << I3C_DEVR0_RSTVAL_Pos) /*!< 0x01000000 */
+#define I3C_DEVR0_RSTVAL I3C_DEVR0_RSTVAL_Msk /*!< Reset Action Valid */
+
+/****************** Bit definition for I3C_DEVRX register *******************/
+#define I3C_DEVRX_DA_Pos (1U)
+#define I3C_DEVRX_DA_Msk (0x7FUL << I3C_DEVRX_DA_Pos) /*!< 0x000000FE */
+#define I3C_DEVRX_DA I3C_DEVRX_DA_Msk /*!< Dynamic Address Target x */
+#define I3C_DEVRX_IBIACK_Pos (16U)
+#define I3C_DEVRX_IBIACK_Msk (0x1UL << I3C_DEVRX_IBIACK_Pos) /*!< 0x00010000 */
+#define I3C_DEVRX_IBIACK I3C_DEVRX_IBIACK_Msk /*!< IBI Acknowledge from Target x */
+#define I3C_DEVRX_CRACK_Pos (17U)
+#define I3C_DEVRX_CRACK_Msk (0x1UL << I3C_DEVRX_CRACK_Pos) /*!< 0x00020000 */
+#define I3C_DEVRX_CRACK I3C_DEVRX_CRACK_Msk /*!< Controller-role Acknowledge from Target x */
+#define I3C_DEVRX_IBIDEN_Pos (18U)
+#define I3C_DEVRX_IBIDEN_Msk (0x1UL << I3C_DEVRX_IBIDEN_Pos) /*!< 0x00040000 */
+#define I3C_DEVRX_IBIDEN I3C_DEVRX_IBIDEN_Msk /*!< IBI Additional Data Enable */
+#define I3C_DEVRX_SUSP_Pos (19U)
+#define I3C_DEVRX_SUSP_Msk (0x1UL << I3C_DEVRX_SUSP_Pos) /*!< 0x00080000 */
+#define I3C_DEVRX_SUSP I3C_DEVRX_SUSP_Msk /*!< Suspended Transfer */
+#define I3C_DEVRX_DIS_Pos (31U)
+#define I3C_DEVRX_DIS_Msk (0x1UL << I3C_DEVRX_DIS_Pos) /*!< 0x80000000 */
+#define I3C_DEVRX_DIS I3C_DEVRX_DIS_Msk /*!< Disable Register access */
+
+/****************** Bit definition for I3C_MAXRLR register ******************/
+#define I3C_MAXRLR_MRL_Pos (0U)
+#define I3C_MAXRLR_MRL_Msk (0xFFFFUL << I3C_MAXRLR_MRL_Pos) /*!< 0x0000FFFF */
+#define I3C_MAXRLR_MRL I3C_MAXRLR_MRL_Msk /*!< Maximum Read Length */
+#define I3C_MAXRLR_IBIP_Pos (16U)
+#define I3C_MAXRLR_IBIP_Msk (0x7UL << I3C_MAXRLR_IBIP_Pos) /*!< 0x00070000 */
+#define I3C_MAXRLR_IBIP I3C_MAXRLR_IBIP_Msk /*!< IBI Payload size */
+#define I3C_MAXRLR_IBIP_0 (0x1UL << I3C_MAXRLR_IBIP_Pos) /*!< 0x00010000 */
+#define I3C_MAXRLR_IBIP_1 (0x2UL << I3C_MAXRLR_IBIP_Pos) /*!< 0x00020000 */
+#define I3C_MAXRLR_IBIP_2 (0x4UL << I3C_MAXRLR_IBIP_Pos) /*!< 0x00040000 */
+
+/****************** Bit definition for I3C_MAXWLR register ******************/
+#define I3C_MAXWLR_MWL_Pos (0U)
+#define I3C_MAXWLR_MWL_Msk (0xFFFFUL << I3C_MAXWLR_MWL_Pos) /*!< 0x0000FFFF */
+#define I3C_MAXWLR_MWL I3C_MAXWLR_MWL_Msk /*!< Maximum Write Length */
+
+/**************** Bit definition for I3C_TIMINGR0 register ******************/
+#define I3C_TIMINGR0_SCLL_PP_Pos (0U)
+#define I3C_TIMINGR0_SCLL_PP_Msk (0xFFUL << I3C_TIMINGR0_SCLL_PP_Pos) /*!< 0x000000FF */
+#define I3C_TIMINGR0_SCLL_PP I3C_TIMINGR0_SCLL_PP_Msk /*!< SCL Low duration during I3C Push-Pull phases */
+#define I3C_TIMINGR0_SCLH_I3C_Pos (8U)
+#define I3C_TIMINGR0_SCLH_I3C_Msk (0xFFUL << I3C_TIMINGR0_SCLH_I3C_Pos) /*!< 0x0000FF00 */
+#define I3C_TIMINGR0_SCLH_I3C I3C_TIMINGR0_SCLH_I3C_Msk /*!< SCL High duration during I3C Open-drain and Push-Pull phases */
+#define I3C_TIMINGR0_SCLL_OD_Pos (16U)
+#define I3C_TIMINGR0_SCLL_OD_Msk (0xFFUL << I3C_TIMINGR0_SCLL_OD_Pos) /*!< 0x00FF0000 */
+#define I3C_TIMINGR0_SCLL_OD I3C_TIMINGR0_SCLL_OD_Msk /*!< SCL Low duration during I3C Open-drain phases and I2C transfer */
+#define I3C_TIMINGR0_SCLH_I2C_Pos (24U)
+#define I3C_TIMINGR0_SCLH_I2C_Msk (0xFFUL << I3C_TIMINGR0_SCLH_I2C_Pos) /*!< 0xFF000000 */
+#define I3C_TIMINGR0_SCLH_I2C I3C_TIMINGR0_SCLH_I2C_Msk /*!< SCL High duration during I2C transfer */
+
+/**************** Bit definition for I3C_TIMINGR1 register ******************/
+#define I3C_TIMINGR1_AVAL_Pos (0U)
+#define I3C_TIMINGR1_AVAL_Msk (0xFFUL << I3C_TIMINGR1_AVAL_Pos) /*!< 0x000000FF */
+#define I3C_TIMINGR1_AVAL I3C_TIMINGR1_AVAL_Msk /*!< Timing for I3C Bus Idle or Available condition */
+#define I3C_TIMINGR1_ASNCR_Pos (8U)
+#define I3C_TIMINGR1_ASNCR_Msk (0x3UL << I3C_TIMINGR1_ASNCR_Pos) /*!< 0x00000300 */
+#define I3C_TIMINGR1_ASNCR I3C_TIMINGR1_ASNCR_Msk /*!< Activity State of the New Controller */
+#define I3C_TIMINGR1_ASNCR_0 (0x1UL << I3C_TIMINGR1_ASNCR_Pos) /*!< 0x00000100 */
+#define I3C_TIMINGR1_ASNCR_1 (0x2UL << I3C_TIMINGR1_ASNCR_Pos) /*!< 0x00000200 */
+#define I3C_TIMINGR1_FREE_Pos (16U)
+#define I3C_TIMINGR1_FREE_Msk (0x7FUL << I3C_TIMINGR1_FREE_Pos) /*!< 0x007F0000 */
+#define I3C_TIMINGR1_FREE I3C_TIMINGR1_FREE_Msk /*!< Timing for I3C Bus Free condition */
+#define I3C_TIMINGR1_SDA_HD_Pos (28U)
+#define I3C_TIMINGR1_SDA_HD_Msk (0x1UL << I3C_TIMINGR1_SDA_HD_Pos) /*!< 0x00010000 */
+#define I3C_TIMINGR1_SDA_HD I3C_TIMINGR1_SDA_HD_Msk /*!< SDA Hold Duration */
+
+/**************** Bit definition for I3C_TIMINGR2 register ******************/
+#define I3C_TIMINGR2_STALLT_Pos (0U)
+#define I3C_TIMINGR2_STALLT_Msk (0x1UL << I3C_TIMINGR2_STALLT_Pos) /*!< 0x00000001 */
+#define I3C_TIMINGR2_STALLT I3C_TIMINGR2_STALLT_Msk /*!< Stall on T bit */
+#define I3C_TIMINGR2_STALLD_Pos (1U)
+#define I3C_TIMINGR2_STALLD_Msk (0x1UL << I3C_TIMINGR2_STALLD_Pos) /*!< 0x00000002 */
+#define I3C_TIMINGR2_STALLD I3C_TIMINGR2_STALLD_Msk /*!< Stall on PAR bit of data bytes */
+#define I3C_TIMINGR2_STALLC_Pos (2U)
+#define I3C_TIMINGR2_STALLC_Msk (0x1UL << I3C_TIMINGR2_STALLC_Pos) /*!< 0x00000004 */
+#define I3C_TIMINGR2_STALLC I3C_TIMINGR2_STALLC_Msk /*!< Stall on PAR bit of CCC byte */
+#define I3C_TIMINGR2_STALLA_Pos (3U)
+#define I3C_TIMINGR2_STALLA_Msk (0x1UL << I3C_TIMINGR2_STALLA_Pos) /*!< 0x00000008 */
+#define I3C_TIMINGR2_STALLA I3C_TIMINGR2_STALLA_Msk /*!< Stall on ACK bit */
+#define I3C_TIMINGR2_STALL_Pos (8U)
+#define I3C_TIMINGR2_STALL_Msk (0xFFUL << I3C_TIMINGR2_STALL_Pos) /*!< 0x0000FF00 */
+#define I3C_TIMINGR2_STALL I3C_TIMINGR2_STALL_Msk /*!< Controller Stall duration */
+
+/******************* Bit definition for I3C_BCR register ********************/
+#define I3C_BCR_BCR_Pos (0U)
+#define I3C_BCR_BCR_Msk (0xFFUL << I3C_BCR_BCR_Pos) /*!< 0x000000FF */
+#define I3C_BCR_BCR I3C_BCR_BCR_Msk /*!< Bus Characteristics */
+#define I3C_BCR_BCR0_Pos (0U)
+#define I3C_BCR_BCR0_Msk (0x1UL << I3C_BCR_BCR0_Pos) /*!< 0x00000001 */
+#define I3C_BCR_BCR0 I3C_BCR_BCR0_Msk /*!< Max Data Speed Limitation */
+#define I3C_BCR_BCR1_Pos (1U)
+#define I3C_BCR_BCR1_Msk (0x1UL << I3C_BCR_BCR1_Pos) /*!< 0x00000002 */
+#define I3C_BCR_BCR1 I3C_BCR_BCR1_Msk /*!< IBI Request capable */
+#define I3C_BCR_BCR2_Pos (2U)
+#define I3C_BCR_BCR2_Msk (0x1UL << I3C_BCR_BCR2_Pos) /*!< 0x00000004 */
+#define I3C_BCR_BCR2 I3C_BCR_BCR2_Msk /*!< IBI Payload additional Mandatory Data Byte */
+#define I3C_BCR_BCR3_Pos (3U)
+#define I3C_BCR_BCR3_Msk (0x1UL << I3C_BCR_BCR3_Pos) /*!< 0x00000008 */
+#define I3C_BCR_BCR3 I3C_BCR_BCR3_Msk /*!< Offline capable */
+#define I3C_BCR_BCR4_Pos (4U)
+#define I3C_BCR_BCR4_Msk (0x1UL << I3C_BCR_BCR4_Pos) /*!< 0x00000010 */
+#define I3C_BCR_BCR4 I3C_BCR_BCR4_Msk /*!< Virtual target support */
+#define I3C_BCR_BCR5_Pos (5U)
+#define I3C_BCR_BCR5_Msk (0x1UL << I3C_BCR_BCR5_Pos) /*!< 0x00000020 */
+#define I3C_BCR_BCR5 I3C_BCR_BCR5_Msk /*!< Advanced capabilities */
+#define I3C_BCR_BCR6_Pos (6U)
+#define I3C_BCR_BCR6_Msk (0x1UL << I3C_BCR_BCR6_Pos) /*!< 0x00000040 */
+#define I3C_BCR_BCR6 I3C_BCR_BCR6_Msk /*!< Device Role shared during Dynamic Address Assignment */
+
+/******************* Bit definition for I3C_DCR register ********************/
+#define I3C_DCR_DCR_Pos (0U)
+#define I3C_DCR_DCR_Msk (0xFFUL << I3C_DCR_DCR_Pos) /*!< 0x000000FF */
+#define I3C_DCR_DCR I3C_DCR_DCR_Msk /*!< Devices Characteristics */
+
+/***************** Bit definition for I3C_GETCAPR register ******************/
+#define I3C_GETCAPR_CAPPEND_Pos (14U)
+#define I3C_GETCAPR_CAPPEND_Msk (0x1UL << I3C_GETCAPR_CAPPEND_Pos) /*!< 0x00004000 */
+#define I3C_GETCAPR_CAPPEND I3C_GETCAPR_CAPPEND_Msk /*!< IBI Request with Mandatory Data Byte */
+
+/***************** Bit definition for I3C_CRCAPR register *******************/
+#define I3C_CRCAPR_CAPDHOFF_Pos (3U)
+#define I3C_CRCAPR_CAPDHOFF_Msk (0x1UL << I3C_CRCAPR_CAPDHOFF_Pos) /*!< 0x00000008 */
+#define I3C_CRCAPR_CAPDHOFF I3C_CRCAPR_CAPDHOFF_Msk /*!< Controller-role handoff needed */
+#define I3C_CRCAPR_CAPGRP_Pos (9U)
+#define I3C_CRCAPR_CAPGRP_Msk (0x1UL << I3C_CRCAPR_CAPGRP_Pos) /*!< 0x00000200 */
+#define I3C_CRCAPR_CAPGRP I3C_CRCAPR_CAPGRP_Msk /*!< Group Address handoff supported */
+
+/**************** Bit definition for I3C_GETMXDSR register ******************/
+#define I3C_GETMXDSR_HOFFAS_Pos (0U)
+#define I3C_GETMXDSR_HOFFAS_Msk (0x3UL << I3C_GETMXDSR_HOFFAS_Pos) /*!< 0x00000003 */
+#define I3C_GETMXDSR_HOFFAS I3C_GETMXDSR_HOFFAS_Msk /*!< Handoff Activity State */
+#define I3C_GETMXDSR_HOFFAS_0 (0x1UL << I3C_GETMXDSR_HOFFAS_Pos) /*!< 0x00000001 */
+#define I3C_GETMXDSR_HOFFAS_1 (0x2UL << I3C_GETMXDSR_HOFFAS_Pos) /*!< 0x00000002 */
+#define I3C_GETMXDSR_FMT_Pos (8U)
+#define I3C_GETMXDSR_FMT_Msk (0x3UL << I3C_GETMXDSR_FMT_Pos) /*!< 0x00000300 */
+#define I3C_GETMXDSR_FMT I3C_GETMXDSR_FMT_Msk /*!< Get Max Data Speed response in format 2 */
+#define I3C_GETMXDSR_FMT_0 (0x1UL << I3C_GETMXDSR_FMT_Pos) /*!< 0x00000100 */
+#define I3C_GETMXDSR_FMT_1 (0x2UL << I3C_GETMXDSR_FMT_Pos) /*!< 0x00000200 */
+#define I3C_GETMXDSR_RDTURN_Pos (16U)
+#define I3C_GETMXDSR_RDTURN_Msk (0xFFUL << I3C_GETMXDSR_RDTURN_Pos) /*!< 0x00FF0000 */
+#define I3C_GETMXDSR_RDTURN I3C_GETMXDSR_RDTURN_Msk /*!< Max Read Turnaround Middle Byte */
+#define I3C_GETMXDSR_TSCO_Pos (24U)
+#define I3C_GETMXDSR_TSCO_Msk (0x1UL << I3C_GETMXDSR_TSCO_Pos) /*!< 0x01000000 */
+#define I3C_GETMXDSR_TSCO I3C_GETMXDSR_TSCO_Msk /*!< Clock-to-data Turnaround time */
+
+/****************** Bit definition for I3C_EPIDR register *******************/
+#define I3C_EPIDR_MIPIID_Pos (12U)
+#define I3C_EPIDR_MIPIID_Msk (0xFUL << I3C_EPIDR_MIPIID_Pos) /*!< 0x0000F000 */
+#define I3C_EPIDR_MIPIID I3C_EPIDR_MIPIID_Msk /*!< MIPI Instance ID */
+#define I3C_EPIDR_IDTSEL_Pos (16U)
+#define I3C_EPIDR_IDTSEL_Msk (0x1UL << I3C_EPIDR_IDTSEL_Pos) /*!< 0x00010000 */
+#define I3C_EPIDR_IDTSEL I3C_EPIDR_IDTSEL_Msk /*!< ID Type Selector */
+#define I3C_EPIDR_MIPIMID_Pos (17U)
+#define I3C_EPIDR_MIPIMID_Msk (0x7FFFUL << I3C_EPIDR_MIPIMID_Pos) /*!< 0xFFFE0000 */
+#define I3C_EPIDR_MIPIMID I3C_EPIDR_MIPIMID_Msk /*!< MIPI Manufacturer ID */
+
+/******************************************************************************/
+/* */
+/* Independent WATCHDOG */
+/* */
+/******************************************************************************/
+/******************* Bit definition for IWDG_KR register ********************/
+#define IWDG_KR_KEY_Pos (0U)
+#define IWDG_KR_KEY_Msk (0xFFFFUL << IWDG_KR_KEY_Pos) /*!< 0x0000FFFF */
+#define IWDG_KR_KEY IWDG_KR_KEY_Msk /*!= 6010050)
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wc11-extensions"
+ #pragma clang diagnostic ignored "-Wreserved-id-macro"
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning 586
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+
+/* -------- Configuration of the Cortex-M33 Processor and Core Peripherals ------ */
+#define __CM33_REV 0x0000U /* Core revision r0p1 */
+#define __SAUREGION_PRESENT 1U /* SAU regions present */
+#define __MPU_PRESENT 1U /* MPU present */
+#define __VTOR_PRESENT 1U /* VTOR present */
+#define __NVIC_PRIO_BITS 4U /* Number of Bits used for Priority Levels */
+#define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */
+#define __FPU_PRESENT 1U /* FPU present */
+#define __DSP_PRESENT 1U /* DSP extension present */
+
+/** @} */ /* End of group Configuration_of_CMSIS */
+
+
+#include /*!< ARM Cortex-M33 processor and core peripherals */
+#include "system_stm32h5xx.h" /*!< STM32H5xx System */
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_peripherals
+ * @{
+ */
+
+/**
+ * @brief CRC calculation unit
+ */
+typedef struct
+{
+ __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */
+ __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */
+ __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */
+ uint32_t RESERVED2; /*!< Reserved, 0x0C */
+ __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */
+ __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */
+ uint32_t RESERVED3[246]; /*!< Reserved, */
+ __IO uint32_t HWCFGR; /*!< CRC IP HWCFGR register, Address offset: 0x3F0 */
+ __IO uint32_t VERR; /*!< CRC IP version register, Address offset: 0x3F4 */
+ __IO uint32_t PIDR; /*!< CRC IP type identification register, Address offset: 0x3F8 */
+ __IO uint32_t SIDR; /*!< CRC IP map Size ID register, Address offset: 0x3FC */
+} CRC_TypeDef;
+
+/**
+ * @brief Inter-integrated Circuit Interface
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */
+ __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */
+ __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */
+ __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */
+ __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */
+ __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */
+ __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */
+ __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */
+ __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */
+ __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */
+} I2C_TypeDef;
+
+/**
+ * @brief Improved Inter-integrated Circuit Interface
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< I3C Control register, Address offset: 0x00 */
+ __IO uint32_t CFGR; /*!< I3C Controller Configuration register, Address offset: 0x04 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x08-0x0C */
+ __IO uint32_t RDR; /*!< I3C Received Data register, Address offset: 0x10 */
+ __IO uint32_t RDWR; /*!< I3C Received Data Word register, Address offset: 0x14 */
+ __IO uint32_t TDR; /*!< I3C Transmit Data register, Address offset: 0x18 */
+ __IO uint32_t TDWR; /*!< I3C Transmit Data Word register, Address offset: 0x1C */
+ __IO uint32_t IBIDR; /*!< I3C IBI payload Data register, Address offset: 0x20 */
+ __IO uint32_t TGTTDR; /*!< I3C Target Transmit register, Address offset: 0x24 */
+ uint32_t RESERVED2[2]; /*!< Reserved, Address offset: 0x28-0x2C */
+ __IO uint32_t SR; /*!< I3C Status register, Address offset: 0x30 */
+ __IO uint32_t SER; /*!< I3C Status Error register, Address offset: 0x34 */
+ uint32_t RESERVED3[2]; /*!< Reserved, Address offset: 0x38-0x3C */
+ __IO uint32_t RMR; /*!< I3C Received Message register, Address offset: 0x40 */
+ uint32_t RESERVED4[3]; /*!< Reserved, Address offset: 0x44-0x4C */
+ __IO uint32_t EVR; /*!< I3C Event register, Address offset: 0x50 */
+ __IO uint32_t IER; /*!< I3C Interrupt Enable register, Address offset: 0x54 */
+ __IO uint32_t CEVR; /*!< I3C Clear Event register, Address offset: 0x58 */
+ uint32_t RESERVED5; /*!< Reserved, Address offset: 0x5C */
+ __IO uint32_t DEVR0; /*!< I3C own Target characteristics register, Address offset: 0x60 */
+ __IO uint32_t DEVRX[4]; /*!< I3C Target x (1<=x<=4) register, Address offset: 0x64-0x70 */
+ uint32_t RESERVED6[7]; /*!< Reserved, Address offset: 0x74-0x8C */
+ __IO uint32_t MAXRLR; /*!< I3C Maximum Read Length register, Address offset: 0x90 */
+ __IO uint32_t MAXWLR; /*!< I3C Maximum Write Length register, Address offset: 0x94 */
+ uint32_t RESERVED7[2]; /*!< Reserved, Address offset: 0x98-0x9C */
+ __IO uint32_t TIMINGR0; /*!< I3C Timing 0 register, Address offset: 0xA0 */
+ __IO uint32_t TIMINGR1; /*!< I3C Timing 1 register, Address offset: 0xA4 */
+ __IO uint32_t TIMINGR2; /*!< I3C Timing 2 register, Address offset: 0xA8 */
+ uint32_t RESERVED9[5]; /*!< Reserved, Address offset: 0xAC-0xBC */
+ __IO uint32_t BCR; /*!< I3C Bus Characteristics register, Address offset: 0xC0 */
+ __IO uint32_t DCR; /*!< I3C Device Characteristics register, Address offset: 0xC4 */
+ __IO uint32_t GETCAPR; /*!< I3C GET CAPabilities register, Address offset: 0xC8 */
+ __IO uint32_t CRCAPR; /*!< I3C Controller CAPabilities register, Address offset: 0xCC */
+ __IO uint32_t GETMXDSR; /*!< I3C GET Max Data Speed register, Address offset: 0xD0 */
+ __IO uint32_t EPIDR; /*!< I3C Extended Provisioned ID register, Address offset: 0xD4 */
+} I3C_TypeDef;
+
+/**
+ * @brief DAC
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */
+ __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */
+ __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */
+ __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */
+ __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */
+ __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */
+ __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */
+ __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */
+ __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */
+ __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */
+ __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */
+ __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */
+ __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */
+ __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */
+ __IO uint32_t CCR; /*!< DAC calibration control register, Address offset: 0x38 */
+ __IO uint32_t MCR; /*!< DAC mode control register, Address offset: 0x3C */
+ __IO uint32_t SHSR1; /*!< DAC Sample and Hold sample time register 1, Address offset: 0x40 */
+ __IO uint32_t SHSR2; /*!< DAC Sample and Hold sample time register 2, Address offset: 0x44 */
+ __IO uint32_t SHHR; /*!< DAC Sample and Hold hold time register, Address offset: 0x48 */
+ __IO uint32_t SHRR; /*!< DAC Sample and Hold refresh time register, Address offset: 0x4C */
+ __IO uint32_t RESERVED[1];
+ __IO uint32_t AUTOCR; /*!< DAC Autonomous mode register, Address offset: 0x54 */
+} DAC_TypeDef;
+
+/**
+ * @brief Clock Recovery System
+ */
+typedef struct
+{
+__IO uint32_t CR; /*!< CRS ccontrol register, Address offset: 0x00 */
+__IO uint32_t CFGR; /*!< CRS configuration register, Address offset: 0x04 */
+__IO uint32_t ISR; /*!< CRS interrupt and status register, Address offset: 0x08 */
+__IO uint32_t ICR; /*!< CRS interrupt flag clear register, Address offset: 0x0C */
+} CRS_TypeDef;
+
+
+/**
+ * @brief HASH
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< HASH control register, Address offset: 0x00 */
+ __IO uint32_t DIN; /*!< HASH data input register, Address offset: 0x04 */
+ __IO uint32_t STR; /*!< HASH start register, Address offset: 0x08 */
+ __IO uint32_t HR[5]; /*!< HASH digest registers, Address offset: 0x0C-0x1C */
+ __IO uint32_t IMR; /*!< HASH interrupt enable register, Address offset: 0x20 */
+ __IO uint32_t SR; /*!< HASH status register, Address offset: 0x24 */
+ uint32_t RESERVED[52]; /*!< Reserved, 0x28-0xF4 */
+ __IO uint32_t CSR[103]; /*!< HASH context swap registers, Address offset: 0x0F8-0x290 */
+} HASH_TypeDef;
+
+/**
+ * @brief HASH_DIGEST
+ */
+typedef struct
+{
+ __IO uint32_t HR[16]; /*!< HASH digest registers, Address offset: 0x310-0x34C */
+} HASH_DIGEST_TypeDef;
+
+/**
+ * @brief RNG
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */
+ __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */
+ __IO uint32_t HTCR; /*!< RNG health test configuration register, Address offset: 0x10 */
+} RNG_TypeDef;
+
+/**
+ * @brief Debug MCU
+ */
+typedef struct
+{
+ __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */
+ __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */
+ __IO uint32_t APB1FZR1; /*!< Debug MCU APB1 freeze register 1, Address offset: 0x08 */
+ __IO uint32_t APB1FZR2; /*!< Debug MCU APB1 freeze register 2, Address offset: 0x0C */
+ __IO uint32_t APB2FZR; /*!< Debug MCU APB2 freeze register, Address offset: 0x10 */
+ __IO uint32_t APB3FZR; /*!< Debug MCU APB3 freeze register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, 0x18 - 0x1C */
+ __IO uint32_t AHB1FZR; /*!< Debug MCU AHB1 freeze register, Address offset: 0x20 */
+ uint32_t RESERVED2[54]; /*!< Reserved, 0x24 - 0xF8 */
+ __IO uint32_t SR; /*!< Debug MCU SR register, Address offset: 0xFC */
+ __IO uint32_t DBG_AUTH_HOST; /*!< Debug DBG_AUTH_HOST register, Address offset: 0x100 */
+ __IO uint32_t DBG_AUTH_DEV; /*!< Debug DBG_AUTH_DEV register, Address offset: 0x104 */
+ __IO uint32_t DBG_AUTH_ACK; /*!< Debug DBG_AUTH_ACK register, Address offset: 0x108 */
+ uint32_t RESERVED3[945]; /*!< Reserved, 0x10C - 0xFCC */
+ __IO uint32_t PIDR4; /*!< Debug MCU Peripheral ID register 4, Address offset: 0xFD0 */
+ __IO uint32_t PIDR5; /*!< Debug MCU Peripheral ID register 5, Address offset: 0xFD4 */
+ __IO uint32_t PIDR6; /*!< Debug MCU Peripheral ID register 6, Address offset: 0xFD8 */
+ __IO uint32_t PIDR7; /*!< Debug MCU Peripheral ID register 7, Address offset: 0xFDC */
+ __IO uint32_t PIDR0; /*!< Debug MCU Peripheral ID register 0, Address offset: 0xFE0 */
+ __IO uint32_t PIDR1; /*!< Debug MCU Peripheral ID register 1, Address offset: 0xFE4 */
+ __IO uint32_t PIDR2; /*!< Debug MCU Peripheral ID register 2, Address offset: 0xFE8 */
+ __IO uint32_t PIDR3; /*!< Debug MCU Peripheral ID register 3, Address offset: 0xFEC */
+ __IO uint32_t CIDR0; /*!< Debug MCU Component ID register 0, Address offset: 0xFF0 */
+ __IO uint32_t CIDR1; /*!< Debug MCU Component ID register 1, Address offset: 0xFF4 */
+ __IO uint32_t CIDR2; /*!< Debug MCU Component ID register 2, Address offset: 0xFF8 */
+ __IO uint32_t CIDR3; /*!< Debug MCU Component ID register 3, Address offset: 0xFFC */
+} DBGMCU_TypeDef;
+
+/**
+ * @brief DCMI
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DCMI control register 1, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< DCMI status register, Address offset: 0x04 */
+ __IO uint32_t RISR; /*!< DCMI raw interrupt status register, Address offset: 0x08 */
+ __IO uint32_t IER; /*!< DCMI interrupt enable register, Address offset: 0x0C */
+ __IO uint32_t MISR; /*!< DCMI masked interrupt status register, Address offset: 0x10 */
+ __IO uint32_t ICR; /*!< DCMI interrupt clear register, Address offset: 0x14 */
+ __IO uint32_t ESCR; /*!< DCMI embedded synchronization code register, Address offset: 0x18 */
+ __IO uint32_t ESUR; /*!< DCMI embedded synchronization unmask register, Address offset: 0x1C */
+ __IO uint32_t CWSTRTR; /*!< DCMI crop window start, Address offset: 0x20 */
+ __IO uint32_t CWSIZER; /*!< DCMI crop window size, Address offset: 0x24 */
+ __IO uint32_t DR; /*!< DCMI data register, Address offset: 0x28 */
+} DCMI_TypeDef;
+
+/**
+ * @brief PSSI
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< PSSI control register, Address offset: 0x000 */
+ __IO uint32_t SR; /*!< PSSI status register, Address offset: 0x004 */
+ __IO uint32_t RIS; /*!< PSSI raw interrupt status register, Address offset: 0x008 */
+ __IO uint32_t IER; /*!< PSSI interrupt enable register, Address offset: 0x00C */
+ __IO uint32_t MIS; /*!< PSSI masked interrupt status register, Address offset: 0x010 */
+ __IO uint32_t ICR; /*!< PSSI interrupt clear register, Address offset: 0x014 */
+ __IO uint32_t RESERVED1[4]; /*!< Reserved, 0x018 - 0x024 */
+ __IO uint32_t DR; /*!< PSSI data register, Address offset: 0x028 */
+} PSSI_TypeDef;
+
+/**
+ * @brief DMA Controller
+ */
+typedef struct
+{
+ __IO uint32_t SECCFGR; /*!< DMA secure configuration register, Address offset: 0x00 */
+ __IO uint32_t PRIVCFGR; /*!< DMA privileged configuration register, Address offset: 0x04 */
+ __IO uint32_t RCFGLOCKR; /*!< DMA lock configuration register, Address offset: 0x08 */
+ __IO uint32_t MISR; /*!< DMA non secure masked interrupt status register, Address offset: 0x0C */
+ __IO uint32_t SMISR; /*!< DMA secure masked interrupt status register, Address offset: 0x10 */
+} DMA_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CLBAR; /*!< DMA channel x linked-list base address register, Address offset: 0x50 + (x * 0x80) */
+ uint32_t RESERVED1[2]; /*!< Reserved 1, Address offset: 0x54 -- 0x58 */
+ __IO uint32_t CFCR; /*!< DMA channel x flag clear register, Address offset: 0x5C + (x * 0x80) */
+ __IO uint32_t CSR; /*!< DMA channel x flag status register, Address offset: 0x60 + (x * 0x80) */
+ __IO uint32_t CCR; /*!< DMA channel x control register, Address offset: 0x64 + (x * 0x80) */
+ uint32_t RESERVED2[10];/*!< Reserved 2, Address offset: 0x68 -- 0x8C */
+ __IO uint32_t CTR1; /*!< DMA channel x transfer register 1, Address offset: 0x90 + (x * 0x80) */
+ __IO uint32_t CTR2; /*!< DMA channel x transfer register 2, Address offset: 0x94 + (x * 0x80) */
+ __IO uint32_t CBR1; /*!< DMA channel x block register 1, Address offset: 0x98 + (x * 0x80) */
+ __IO uint32_t CSAR; /*!< DMA channel x source address register, Address offset: 0x9C + (x * 0x80) */
+ __IO uint32_t CDAR; /*!< DMA channel x destination address register, Address offset: 0xA0 + (x * 0x80) */
+ __IO uint32_t CTR3; /*!< DMA channel x transfer register 3, Address offset: 0xA4 + (x * 0x80) */
+ __IO uint32_t CBR2; /*!< DMA channel x block register 2, Address offset: 0xA8 + (x * 0x80) */
+ uint32_t RESERVED3[8]; /*!< Reserved 3, Address offset: 0xAC -- 0xC8 */
+ __IO uint32_t CLLR; /*!< DMA channel x linked-list address register, Address offset: 0xCC + (x * 0x80) */
+} DMA_Channel_TypeDef;
+
+
+/**
+ * @brief Asynch Interrupt/Event Controller (EXTI)
+ */
+typedef struct
+{
+ __IO uint32_t RTSR1; /*!< EXTI Rising Trigger Selection Register 1, Address offset: 0x00 */
+ __IO uint32_t FTSR1; /*!< EXTI Falling Trigger Selection Register 1, Address offset: 0x04 */
+ __IO uint32_t SWIER1; /*!< EXTI Software Interrupt event Register 1, Address offset: 0x08 */
+ __IO uint32_t RPR1; /*!< EXTI Rising Pending Register 1, Address offset: 0x0C */
+ __IO uint32_t FPR1; /*!< EXTI Falling Pending Register 1, Address offset: 0x10 */
+ __IO uint32_t SECCFGR1; /*!< EXTI Security Configuration Register 1, Address offset: 0x14 */
+ __IO uint32_t PRIVCFGR1; /*!< EXTI Privilege Configuration Register 1, Address offset: 0x18 */
+ uint32_t RESERVED1; /*!< Reserved 1, Address offset: 0x1C */
+ __IO uint32_t RTSR2; /*!< EXTI Rising Trigger Selection Register 2, Address offset: 0x20 */
+ __IO uint32_t FTSR2; /*!< EXTI Falling Trigger Selection Register 2, Address offset: 0x24 */
+ __IO uint32_t SWIER2; /*!< EXTI Software Interrupt event Register 2, Address offset: 0x28 */
+ __IO uint32_t RPR2; /*!< EXTI Rising Pending Register 2, Address offset: 0x2C */
+ __IO uint32_t FPR2; /*!< EXTI Falling Pending Register 2, Address offset: 0x30 */
+ __IO uint32_t SECCFGR2; /*!< EXTI Security Configuration Register 2, Address offset: 0x34 */
+ __IO uint32_t PRIVCFGR2; /*!< EXTI Privilege Configuration Register 2, Address offset: 0x38 */
+ uint32_t RESERVED2[9]; /*!< Reserved 2, 0x3C-- 0x5C */
+ __IO uint32_t EXTICR[4]; /*!< EXIT External Interrupt Configuration Register, 0x60 -- 0x6C */
+ __IO uint32_t LOCKR; /*!< EXTI Lock Register, Address offset: 0x70 */
+ uint32_t RESERVED3[3]; /*!< Reserved 3, 0x74 -- 0x7C */
+ __IO uint32_t IMR1; /*!< EXTI Interrupt Mask Register 1, Address offset: 0x80 */
+ __IO uint32_t EMR1; /*!< EXTI Event Mask Register 1, Address offset: 0x84 */
+ uint32_t RESERVED4[2]; /*!< Reserved 4, 0x88 -- 0x8C */
+ __IO uint32_t IMR2; /*!< EXTI Interrupt Mask Register 2, Address offset: 0x90 */
+ __IO uint32_t EMR2; /*!< EXTI Event Mask Register 2, Address offset: 0x94 */
+} EXTI_TypeDef;
+
+/**
+ * @brief FLASH Registers
+ */
+typedef struct
+{
+ __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */
+ __IO uint32_t NSKEYR; /*!< FLASH non-secure key register, Address offset: 0x04 */
+ __IO uint32_t SECKEYR; /*!< FLASH secure key register, Address offset: 0x08 */
+ __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x0C */
+ __IO uint32_t NSOBKKEYR; /*!< FLASH non-secure option bytes keys key register, Address offset: 0x10 */
+ __IO uint32_t SECOBKKEYR; /*!< FLASH secure option bytes keys key register, Address offset: 0x14 */
+ __IO uint32_t OPSR; /*!< FLASH OPSR register, Address offset: 0x18 */
+ __IO uint32_t OPTCR; /*!< Flash Option Control Register, Address offset: 0x1C */
+ __IO uint32_t NSSR; /*!< FLASH non-secure status register, Address offset: 0x20 */
+ __IO uint32_t SECSR; /*!< FLASH secure status register, Address offset: 0x24 */
+ __IO uint32_t NSCR; /*!< FLASH non-secure control register, Address offset: 0x28 */
+ __IO uint32_t SECCR; /*!< FLASH secure control register, Address offset: 0x2C */
+ __IO uint32_t NSCCR; /*!< FLASH non-secure clear control register, Address offset: 0x30 */
+ __IO uint32_t SECCCR; /*!< FLASH secure clear control register, Address offset: 0x34 */
+ uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x38 */
+ __IO uint32_t PRIVCFGR; /*!< FLASH privilege configuration register, Address offset: 0x3C */
+ __IO uint32_t NSOBKCFGR; /*!< FLASH non-secure option byte key configuration register, Address offset: 0x40 */
+ __IO uint32_t SECOBKCFGR; /*!< FLASH secure option byte key configuration register, Address offset: 0x44 */
+ __IO uint32_t HDPEXTR; /*!< FLASH HDP extension register, Address offset: 0x48 */
+ uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x4C */
+ __IO uint32_t OPTSR_CUR; /*!< FLASH option status current register, Address offset: 0x50 */
+ __IO uint32_t OPTSR_PRG; /*!< FLASH option status to program register, Address offset: 0x54 */
+ uint32_t RESERVED3[2]; /*!< Reserved3, Address offset: 0x58-0x5C */
+ __IO uint32_t NSEPOCHR_CUR; /*!< FLASH non-secure epoch current register, Address offset: 0x60 */
+ __IO uint32_t NSEPOCHR_PRG; /*!< FLASH non-secure epoch to program register, Address offset: 0x64 */
+ __IO uint32_t SECEPOCHR_CUR; /*!< FLASH secure epoch current register, Address offset: 0x68 */
+ __IO uint32_t SECEPOCHR_PRG; /*!< FLASH secure epoch to program register, Address offset: 0x6C */
+ __IO uint32_t OPTSR2_CUR; /*!< FLASH option status current register 2, Address offset: 0x70 */
+ __IO uint32_t OPTSR2_PRG; /*!< FLASH option status to program register 2, Address offset: 0x74 */
+ uint32_t RESERVED4[2]; /*!< Reserved4, Address offset: 0x78-0x7C */
+ __IO uint32_t NSBOOTR_CUR; /*!< FLASH non-secure unique boot entry current register, Address offset: 0x80 */
+ __IO uint32_t NSBOOTR_PRG; /*!< FLASH non-secure unique boot entry to program register, Address offset: 0x84 */
+ __IO uint32_t SECBOOTR_CUR; /*!< FLASH secure unique boot entry current register, Address offset: 0x88 */
+ __IO uint32_t SECBOOTR_PRG; /*!< FLASH secure unique boot entry to program register, Address offset: 0x8C */
+ __IO uint32_t OTPBLR_CUR; /*!< FLASH OTP block lock current register, Address offset: 0x90 */
+ __IO uint32_t OTPBLR_PRG; /*!< FLASH OTP block Lock to program register, Address offset: 0x94 */
+ uint32_t RESERVED5[2]; /*!< Reserved5, Address offset: 0x98-0x9C */
+ __IO uint32_t SECBB1R1; /*!< FLASH secure block-based bank 1 register 1, Address offset: 0xA0 */
+ uint32_t RESERVED6[7]; /*!< Reserved6, Address offset: 0xA4-0xBF */
+ __IO uint32_t PRIVBB1R1; /*!< FLASH privilege block-based bank 1 register 1, Address offset: 0xC0 */
+ uint32_t RESERVED7[7]; /*!< Reserved7, Address offset: 0xC4-0xDC */
+ __IO uint32_t SECWM1R_CUR; /*!< FLASH secure watermark 1 current register, Address offset: 0xE0 */
+ __IO uint32_t SECWM1R_PRG; /*!< FLASH secure watermark 1 to program register, Address offset: 0xE4 */
+ __IO uint32_t WRP1R_CUR; /*!< FLASH write sector group protection current register for bank1, Address offset: 0xE8 */
+ __IO uint32_t WRP1R_PRG; /*!< FLASH write sector group protection to program register for bank1, Address offset: 0xEC */
+ __IO uint32_t EDATA1R_CUR; /*!< FLASH data sectors configuration current register for bank1, Address offset: 0xF0 */
+ __IO uint32_t EDATA1R_PRG; /*!< FLASH data sectors configuration to program register for bank1, Address offset: 0xF4 */
+ __IO uint32_t HDP1R_CUR; /*!< FLASH HDP configuration current register for bank1, Address offset: 0xF8 */
+ __IO uint32_t HDP1R_PRG; /*!< FLASH HDP configuration to program register for bank1, Address offset: 0xFC */
+ __IO uint32_t ECCCORR; /*!< FLASH ECC correction register, Address offset: 0x100 */
+ __IO uint32_t ECCDETR; /*!< FLASH ECC detection register, Address offset: 0x104 */
+ __IO uint32_t ECCDR; /*!< FLASH ECC data register, Address offset: 0x108 */
+ uint32_t RESERVED8[37]; /*!< Reserved8, Address offset: 0x10C-0x19C */
+ __IO uint32_t SECBB2R1; /*!< FLASH secure block-based bank 2 register 1, Address offset: 0x1A0 */
+ uint32_t RESERVED9[7]; /*!< Reserved9, Address offset: 0x1A4-0x1BF */
+ __IO uint32_t PRIVBB2R1; /*!< FLASH privilege block-based bank 2 register 1, Address offset: 0x1C0 */
+ uint32_t RESERVED10[7]; /*!< Reserved10, Address offset: 0x1C4-0x1DC */
+ __IO uint32_t SECWM2R_CUR; /*!< FLASH secure watermark 2 current register, Address offset: 0x1E0 */
+ __IO uint32_t SECWM2R_PRG; /*!< FLASH secure watermark 2 to program register, Address offset: 0x1E4 */
+ __IO uint32_t WRP2R_CUR; /*!< FLASH write sector group protection current register for bank2, Address offset: 0x1E8 */
+ __IO uint32_t WRP2R_PRG; /*!< FLASH write sector group protection to program register for bank2, Address offset: 0x1EC */
+ __IO uint32_t EDATA2R_CUR; /*!< FLASH data sectors configuration current register for bank2, Address offset: 0x1F0 */
+ __IO uint32_t EDATA2R_PRG; /*!< FLASH data sectors configuration to program register for bank2, Address offset: 0x1F4 */
+ __IO uint32_t HDP2R_CUR; /*!< FLASH HDP configuration current register for bank2, Address offset: 0x1F8 */
+ __IO uint32_t HDP2R_PRG; /*!< FLASH HDP configuration to program register for bank2, Address offset: 0x1FC */
+} FLASH_TypeDef;
+
+/**
+ * @brief General Purpose I/O
+ */
+typedef struct
+{
+ __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */
+ __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */
+ __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */
+ __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */
+ __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */
+ __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */
+ __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */
+ __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */
+ __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */
+ __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */
+ __IO uint32_t HSLVR; /*!< GPIO high-speed low voltage register, Address offset: 0x2C */
+ __IO uint32_t SECCFGR; /*!< GPIO secure configuration register, Address offset: 0x30 */
+} GPIO_TypeDef;
+
+/**
+ * @brief Global TrustZone Controller
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< TZSC control register, Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved1, Address offset: 0x04-0x0C */
+ __IO uint32_t SECCFGR1; /*!< TZSC secure configuration register 1, Address offset: 0x10 */
+ __IO uint32_t SECCFGR2; /*!< TZSC secure configuration register 2, Address offset: 0x14 */
+ __IO uint32_t SECCFGR3; /*!< TZSC secure configuration register 3, Address offset: 0x18 */
+ uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x1C */
+ __IO uint32_t PRIVCFGR1; /*!< TZSC privilege configuration register 1, Address offset: 0x20 */
+ __IO uint32_t PRIVCFGR2; /*!< TZSC privilege configuration register 2, Address offset: 0x24 */
+ __IO uint32_t PRIVCFGR3; /*!< TZSC privilege configuration register 3, Address offset: 0x28 */
+ uint32_t RESERVED3[5]; /*!< Reserved3, Address offset: 0x2C-0x3C */
+ __IO uint32_t MPCWM1ACFGR; /*!< TZSC memory 1 sub-region A watermark configuration register, Address offset: 0x40 */
+ __IO uint32_t MPCWM1AR; /*!< TZSC memory 1 sub-region A watermark register, Address offset: 0x44 */
+ __IO uint32_t MPCWM1BCFGR; /*!< TZSC memory 1 sub-region B watermark configuration register, Address offset: 0x48 */
+ __IO uint32_t MPCWM1BR; /*!< TZSC memory 1 sub-region B watermark register, Address offset: 0x4C */
+ __IO uint32_t MPCWM2ACFGR; /*!< TZSC memory 2 sub-region A watermark configuration register, Address offset: 0x50 */
+ __IO uint32_t MPCWM2AR; /*!< TZSC memory 2 sub-region A watermark register, Address offset: 0x54 */
+ __IO uint32_t MPCWM2BCFGR; /*!< TZSC memory 2 sub-region B watermark configuration register, Address offset: 0x58 */
+ __IO uint32_t MPCWM2BR; /*!< TZSC memory 2 sub-region B watermark register, Address offset: 0x5C */
+ __IO uint32_t MPCWM3ACFGR; /*!< TZSC memory 3 sub-region A watermark configuration register, Address offset: 0x60 */
+ __IO uint32_t MPCWM3AR; /*!< TZSC memory 3 sub-region A watermark register, Address offset: 0x64 */
+ __IO uint32_t MPCWM3BCFGR; /*!< TZSC memory 3 sub-region B watermark configuration register, Address offset: 0x68 */
+ __IO uint32_t MPCWM3BR; /*!< TZSC memory 3 sub-region B watermark register, Address offset: 0x6C */
+ __IO uint32_t MPCWM4ACFGR; /*!< TZSC memory 4 sub-region A watermark configuration register, Address offset: 0x70 */
+ __IO uint32_t MPCWM4AR; /*!< TZSC memory 4 sub-region A watermark register, Address offset: 0x74 */
+ __IO uint32_t MPCWM4BCFGR; /*!< TZSC memory 4 sub-region B watermark configuration register, Address offset: 0x78 */
+ __IO uint32_t MPCWM4BR; /*!< TZSC memory 4 sub-region B watermark register, Address offset: 0x7c */
+} GTZC_TZSC_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< MPCBBx control register, Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved1, Address offset: 0x04-0x0C */
+ __IO uint32_t CFGLOCKR1; /*!< MPCBBx lock register, Address offset: 0x10 */
+ uint32_t RESERVED2[59]; /*!< Reserved2, Address offset: 0x14-0xFC */
+ __IO uint32_t SECCFGR[32]; /*!< MPCBBx security configuration registers, Address offset: 0x100-0x17C */
+ uint32_t RESERVED3[32]; /*!< Reserved3, Address offset: 0x180-0x1FC */
+ __IO uint32_t PRIVCFGR[32]; /*!< MPCBBx privilege configuration registers, Address offset: 0x200-0x280 */
+} GTZC_MPCBB_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t IER1; /*!< TZIC interrupt enable register 1, Address offset: 0x00 */
+ __IO uint32_t IER2; /*!< TZIC interrupt enable register 2, Address offset: 0x04 */
+ __IO uint32_t IER3; /*!< TZIC interrupt enable register 3, Address offset: 0x08 */
+ __IO uint32_t IER4; /*!< TZIC interrupt enable register 4, Address offset: 0x0C */
+ __IO uint32_t SR1; /*!< TZIC status register 1, Address offset: 0x10 */
+ __IO uint32_t SR2; /*!< TZIC status register 2, Address offset: 0x14 */
+ __IO uint32_t SR3; /*!< TZIC status register 3, Address offset: 0x18 */
+ __IO uint32_t SR4; /*!< TZIC status register 4, Address offset: 0x1C */
+ __IO uint32_t FCR1; /*!< TZIC flag clear register 1, Address offset: 0x20 */
+ __IO uint32_t FCR2; /*!< TZIC flag clear register 2, Address offset: 0x24 */
+ __IO uint32_t FCR3; /*!< TZIC flag clear register 3, Address offset: 0x28 */
+ __IO uint32_t FCR4; /*!< TZIC flag clear register 3, Address offset: 0x2C */
+} GTZC_TZIC_TypeDef;
+
+/**
+ * @brief Instruction Cache
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< ICACHE control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< ICACHE status register, Address offset: 0x04 */
+ __IO uint32_t IER; /*!< ICACHE interrupt enable register, Address offset: 0x08 */
+ __IO uint32_t FCR; /*!< ICACHE Flag clear register, Address offset: 0x0C */
+ __IO uint32_t HMONR; /*!< ICACHE hit monitor register, Address offset: 0x10 */
+ __IO uint32_t MMONR; /*!< ICACHE miss monitor register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x018-0x01C */
+ __IO uint32_t CRR0; /*!< ICACHE region 0 configuration register, Address offset: 0x20 */
+ __IO uint32_t CRR1; /*!< ICACHE region 1 configuration register, Address offset: 0x24 */
+ __IO uint32_t CRR2; /*!< ICACHE region 2 configuration register, Address offset: 0x28 */
+ __IO uint32_t CRR3; /*!< ICACHE region 3 configuration register, Address offset: 0x2C */
+} ICACHE_TypeDef;
+
+/**
+ * @brief Data Cache
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DCACHE control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< DCACHE status register, Address offset: 0x04 */
+ __IO uint32_t IER; /*!< DCACHE interrupt enable register, Address offset: 0x08 */
+ __IO uint32_t FCR; /*!< DCACHE Flag clear register, Address offset: 0x0C */
+ __IO uint32_t RHMONR; /*!< DCACHE Read hit monitor register, Address offset: 0x10 */
+ __IO uint32_t RMMONR; /*!< DCACHE Read miss monitor register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x18-0x1C */
+ __IO uint32_t WHMONR; /*!< DCACHE Write hit monitor register, Address offset: 0x20 */
+ __IO uint32_t WMMONR; /*!< DCACHE Write miss monitor register, Address offset: 0x24 */
+ __IO uint32_t CMDRSADDRR; /*!< DCACHE Command Start Address register, Address offset: 0x28 */
+ __IO uint32_t CMDREADDRR; /*!< DCACHE Command End Address register, Address offset: 0x2C */
+} DCACHE_TypeDef;
+
+/**
+ * @brief TIM
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */
+ __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */
+ __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */
+ __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */
+ __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */
+ __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */
+ __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */
+ __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */
+ __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */
+ __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */
+ __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */
+ __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */
+ __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */
+ __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */
+ __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */
+ __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */
+ __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */
+ __IO uint32_t CCR5; /*!< TIM capture/compare register 5, Address offset: 0x48 */
+ __IO uint32_t CCR6; /*!< TIM capture/compare register 6, Address offset: 0x4C */
+ __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x50 */
+ __IO uint32_t DTR2; /*!< TIM deadtime register 2, Address offset: 0x54 */
+ __IO uint32_t ECR; /*!< TIM encoder control register, Address offset: 0x58 */
+ __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x5C */
+ __IO uint32_t AF1; /*!< TIM alternate function option register 1, Address offset: 0x60 */
+ __IO uint32_t AF2; /*!< TIM alternate function option register 2, Address offset: 0x64 */
+ __IO uint32_t OR1 ; /*!< TIM option register, Address offset: 0x68 */
+ uint32_t RESERVED0[220];/*!< Reserved, Address offset: 0x6C */
+ __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x3DC */
+ __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x3E0 */
+} TIM_TypeDef;
+
+/**
+ * @brief LPTIMER
+ */
+typedef struct
+{
+ __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */
+ __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */
+ __IO uint32_t DIER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */
+ __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */
+ __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */
+ __IO uint32_t CCR1; /*!< LPTIM Capture/Compare register 1, Address offset: 0x14 */
+ __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */
+ __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */
+ __IO uint32_t RESERVED0; /*!< Reserved, Address offset: 0x20 */
+ __IO uint32_t CFGR2; /*!< LPTIM Configuration register 2, Address offset: 0x24 */
+ __IO uint32_t RCR; /*!< LPTIM Repetition register, Address offset: 0x28 */
+ __IO uint32_t CCMR1; /*!< LPTIM Capture/Compare mode register, Address offset: 0x2C */
+ __IO uint32_t RESERVED1; /*!< Reserved, Address offset: 0x30 */
+ __IO uint32_t CCR2; /*!< LPTIM Capture/Compare register 2, Address offset: 0x34 */
+} LPTIM_TypeDef;
+
+/**
+ * @brief OCTO Serial Peripheral Interface
+ */
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< OCTOSPI Control register, Address offset: 0x000 */
+ uint32_t RESERVED; /*!< Reserved, Address offset: 0x004 */
+ __IO uint32_t DCR1; /*!< OCTOSPI Device Configuration register 1, Address offset: 0x008 */
+ __IO uint32_t DCR2; /*!< OCTOSPI Device Configuration register 2, Address offset: 0x00C */
+ __IO uint32_t DCR3; /*!< OCTOSPI Device Configuration register 3, Address offset: 0x010 */
+ __IO uint32_t DCR4; /*!< OCTOSPI Device Configuration register 4, Address offset: 0x014 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x018-0x01C */
+ __IO uint32_t SR; /*!< OCTOSPI Status register, Address offset: 0x020 */
+ __IO uint32_t FCR; /*!< OCTOSPI Flag Clear register, Address offset: 0x024 */
+ uint32_t RESERVED2[6]; /*!< Reserved, Address offset: 0x028-0x03C */
+ __IO uint32_t DLR; /*!< OCTOSPI Data Length register, Address offset: 0x040 */
+ uint32_t RESERVED3; /*!< Reserved, Address offset: 0x044 */
+ __IO uint32_t AR; /*!< OCTOSPI Address register, Address offset: 0x048 */
+ uint32_t RESERVED4; /*!< Reserved, Address offset: 0x04C */
+ __IO uint32_t DR; /*!< OCTOSPI Data register, Address offset: 0x050 */
+ uint32_t RESERVED5[11]; /*!< Reserved, Address offset: 0x054-0x07C */
+ __IO uint32_t PSMKR; /*!< OCTOSPI Polling Status Mask register, Address offset: 0x080 */
+ uint32_t RESERVED6; /*!< Reserved, Address offset: 0x084 */
+ __IO uint32_t PSMAR; /*!< OCTOSPI Polling Status Match register, Address offset: 0x088 */
+ uint32_t RESERVED7; /*!< Reserved, Address offset: 0x08C */
+ __IO uint32_t PIR; /*!< OCTOSPI Polling Interval register, Address offset: 0x090 */
+ uint32_t RESERVED8[27]; /*!< Reserved, Address offset: 0x094-0x0FC */
+ __IO uint32_t CCR; /*!< OCTOSPI Communication Configuration register, Address offset: 0x100 */
+ uint32_t RESERVED9; /*!< Reserved, Address offset: 0x104 */
+ __IO uint32_t TCR; /*!< OCTOSPI Timing Configuration register, Address offset: 0x108 */
+ uint32_t RESERVED10; /*!< Reserved, Address offset: 0x10C */
+ __IO uint32_t IR; /*!< OCTOSPI Instruction register, Address offset: 0x110 */
+ uint32_t RESERVED11[3]; /*!< Reserved, Address offset: 0x114-0x11C */
+ __IO uint32_t ABR; /*!< OCTOSPI Alternate Bytes register, Address offset: 0x120 */
+ uint32_t RESERVED12[3]; /*!< Reserved, Address offset: 0x124-0x12C */
+ __IO uint32_t LPTR; /*!< OCTOSPI Low Power Timeout register, Address offset: 0x130 */
+ uint32_t RESERVED13[3]; /*!< Reserved, Address offset: 0x134-0x13C */
+ __IO uint32_t WPCCR; /*!< OCTOSPI Wrap Communication Configuration register, Address offset: 0x140 */
+ uint32_t RESERVED14; /*!< Reserved, Address offset: 0x144 */
+ __IO uint32_t WPTCR; /*!< OCTOSPI Wrap Timing Configuration register, Address offset: 0x148 */
+ uint32_t RESERVED15; /*!< Reserved, Address offset: 0x14C */
+ __IO uint32_t WPIR; /*!< OCTOSPI Wrap Instruction register, Address offset: 0x150 */
+ uint32_t RESERVED16[3]; /*!< Reserved, Address offset: 0x154-0x15C */
+ __IO uint32_t WPABR; /*!< OCTOSPI Wrap Alternate Bytes register, Address offset: 0x160 */
+ uint32_t RESERVED17[7]; /*!< Reserved, Address offset: 0x164-0x17C */
+ __IO uint32_t WCCR; /*!< OCTOSPI Write Communication Configuration register, Address offset: 0x180 */
+ uint32_t RESERVED18; /*!< Reserved, Address offset: 0x184 */
+ __IO uint32_t WTCR; /*!< OCTOSPI Write Timing Configuration register, Address offset: 0x188 */
+ uint32_t RESERVED19; /*!< Reserved, Address offset: 0x18C */
+ __IO uint32_t WIR; /*!< OCTOSPI Write Instruction register, Address offset: 0x190 */
+ uint32_t RESERVED20[3]; /*!< Reserved, Address offset: 0x194-0x19C */
+ __IO uint32_t WABR; /*!< OCTOSPI Write Alternate Bytes register, Address offset: 0x1A0 */
+ uint32_t RESERVED21[23]; /*!< Reserved, Address offset: 0x1A4-0x1FC */
+ __IO uint32_t HLCR; /*!< OCTOSPI Hyperbus Latency Configuration register, Address offset: 0x200 */
+} XSPI_TypeDef;
+
+typedef XSPI_TypeDef OCTOSPI_TypeDef;
+
+/**
+ * @brief Power Control
+ */
+typedef struct
+{
+ __IO uint32_t PMCR; /*!< Power mode control register , Address offset: 0x00 */
+ __IO uint32_t PMSR; /*!< Power mode status register , Address offset: 0x04 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x08-0x0C */
+ __IO uint32_t VOSCR; /*!< Voltage scaling control register , Address offset: 0x10 */
+ __IO uint32_t VOSSR; /*!< Voltage sacling status register , Address offset: 0x14 */
+ uint32_t RESERVED2[2]; /*!< Reserved, Address offset: 0x18-0x1C */
+ __IO uint32_t BDCR; /*!< BacKup domain control register , Address offset: 0x20 */
+ __IO uint32_t DBPCR; /*!< DBP control register, Address offset: 0x24 */
+ __IO uint32_t BDSR; /*!< BacKup domain status register, Address offset: 0x28 */
+ __IO uint32_t UCPDR; /*!< Usb typeC and Power Delivery Register, Address offset: 0x2C */
+ __IO uint32_t SCCR; /*!< Supply configuration control register, Address offset: 0x30 */
+ __IO uint32_t VMCR; /*!< Voltage Monitor Control Register, Address offset: 0x34 */
+ __IO uint32_t USBSCR; /*!< USB Supply Control Register Address offset: 0x38 */
+ __IO uint32_t VMSR; /*!< Status Register Voltage Monitoring, Address offset: 0x3C */
+ __IO uint32_t WUSCR; /*!< WakeUP status clear register, Address offset: 0x40 */
+ __IO uint32_t WUSR; /*!< WakeUP status Register, Address offset: 0x44 */
+ __IO uint32_t WUCR; /*!< WakeUP configuration register, Address offset: 0x48 */
+ uint32_t RESERVED3; /*!< Reserved, Address offset: 0x4C */
+ __IO uint32_t IORETR; /*!< IO RETention Register, Address offset: 0x50 */
+ uint32_t RESERVED4[43];/*!< Reserved, Address offset: 0x54-0xFC */
+ __IO uint32_t SECCFGR; /*!< Security configuration register, Address offset: 0x100 */
+ __IO uint32_t PRIVCFGR; /*!< Privilege configuration register, Address offset: 0x104 */
+}PWR_TypeDef;
+
+/**
+ * @brief SRAMs configuration controller
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< Control Register, Address offset: 0x00 */
+ __IO uint32_t IER; /*!< Interrupt Enable Register, Address offset: 0x04 */
+ __IO uint32_t ISR; /*!< Interrupt Status Register, Address offset: 0x08 */
+ __IO uint32_t SEAR; /*!< ECC Single Error Address Register, Address offset: 0x0C */
+ __IO uint32_t DEAR; /*!< ECC Double Error Address Register, Address offset: 0x10 */
+ __IO uint32_t ICR; /*!< Interrupt Clear Register, Address offset: 0x14 */
+ __IO uint32_t WPR1; /*!< SRAM Write Protection Register 1, Address offset: 0x18 */
+ __IO uint32_t WPR2; /*!< SRAM Write Protection Register 2, Address offset: 0x1C */
+ __IO uint32_t WPR3; /*!< SRAM Write Protection Register 3, Address offset: 0x20 */
+ __IO uint32_t ECCKEY; /*!< SRAM ECC Key Register, Address offset: 0x24 */
+ __IO uint32_t ERKEYR; /*!< SRAM Erase Key Register, Address offset: 0x28 */
+}RAMCFG_TypeDef;
+
+/**
+ * @brief Reset and Clock Control
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< RCC clock control register Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved, Address offset: 0x04 */
+ __IO uint32_t HSICFGR; /*!< RCC HSI Clock Calibration Register, Address offset: 0x10 */
+ __IO uint32_t CRRCR; /*!< RCC Clock Recovery RC Register, Address offset: 0x14 */
+ __IO uint32_t CSICFGR; /*!< RCC CSI Clock Calibration Register, Address offset: 0x18 */
+ __IO uint32_t CFGR1; /*!< RCC clock configuration register 1 Address offset: 0x1C */
+ __IO uint32_t CFGR2; /*!< RCC clock configuration register 2 Address offset: 0x20 */
+ uint32_t RESERVED2; /*!< Reserved, Address offset: 0x24 */
+ __IO uint32_t PLL1CFGR; /*!< RCC PLL1 Configuration Register Address offset: 0x28 */
+ __IO uint32_t PLL2CFGR; /*!< RCC PLL2 Configuration Register Address offset: 0x2C */
+ __IO uint32_t PLL3CFGR; /*!< RCC PLL3 Configuration Register Address offset: 0x30 */
+ __IO uint32_t PLL1DIVR; /*!< RCC PLL1 Dividers Configuration Register Address offset: 0x34 */
+ __IO uint32_t PLL1FRACR; /*!< RCC PLL1 Fractional Divider Configuration Register Address offset: 0x38 */
+ __IO uint32_t PLL2DIVR; /*!< RCC PLL2 Dividers Configuration Register Address offset: 0x3C */
+ __IO uint32_t PLL2FRACR; /*!< RCC PLL2 Fractional Divider Configuration Register Address offset: 0x40 */
+ __IO uint32_t PLL3DIVR; /*!< RCC PLL3 Dividers Configuration Register Address offset: 0x44 */
+ __IO uint32_t PLL3FRACR; /*!< RCC PLL3 Fractional Divider Configuration Register Address offset: 0x48 */
+ uint32_t RESERVED5; /*!< Reserved Address offset: 0x4C */
+ __IO uint32_t CIER; /*!< RCC Clock Interrupt Enable Register Address offset: 0x50 */
+ __IO uint32_t CIFR; /*!< RCC Clock Interrupt Flag Register Address offset: 0x54 */
+ __IO uint32_t CICR; /*!< RCC Clock Interrupt Clear Register Address offset: 0x58 */
+ uint32_t RESERVED6; /*!< Reserved Address offset: 0x5C */
+ __IO uint32_t AHB1RSTR; /*!< RCC AHB1 Peripherals Reset Register Address offset: 0x60 */
+ __IO uint32_t AHB2RSTR; /*!< RCC AHB2 Peripherals Reset Register Address offset: 0x64 */
+ uint32_t RESERVED7; /*!< Reserved Address offset: 0x68 */
+ __IO uint32_t AHB4RSTR; /*!< RCC AHB4 Peripherals Reset Register Address offset: 0x6C */
+ uint32_t RESERVED9; /*!< Reserved Address offset: 0x70 */
+ __IO uint32_t APB1LRSTR; /*!< RCC APB1 Peripherals reset Low Word register Address offset: 0x74 */
+ __IO uint32_t APB1HRSTR; /*!< RCC APB1 Peripherals reset High Word register Address offset: 0x78 */
+ __IO uint32_t APB2RSTR; /*!< RCC APB2 Peripherals Reset Register Address offset: 0x7C */
+ __IO uint32_t APB3RSTR; /*!< RCC APB3 Peripherals Reset Register Address offset: 0x80 */
+ uint32_t RESERVED10; /*!< Reserved Address offset: 0x84 */
+ __IO uint32_t AHB1ENR; /*!< RCC AHB1 Peripherals Clock Enable Register Address offset: 0x88 */
+ __IO uint32_t AHB2ENR; /*!< RCC AHB2 Peripherals Clock Enable Register Address offset: 0x8C */
+ uint32_t RESERVED11; /*!< Reserved Address offset: 0x90 */
+ __IO uint32_t AHB4ENR; /*!< RCC AHB4 Peripherals Clock Enable Register Address offset: 0x94 */
+ uint32_t RESERVED13; /*!< Reserved Address offset: 0x98 */
+ __IO uint32_t APB1LENR; /*!< RCC APB1 Peripherals clock Enable Low Word register Address offset: 0x9C */
+ __IO uint32_t APB1HENR; /*!< RCC APB1 Peripherals clock Enable High Word register Address offset: 0xA0 */
+ __IO uint32_t APB2ENR; /*!< RCC APB2 Peripherals Clock Enable Register Address offset: 0xA4 */
+ __IO uint32_t APB3ENR; /*!< RCC APB3 Peripherals Clock Enable Register Address offset: 0xA8 */
+ uint32_t RESERVED14; /*!< Reserved Address offset: 0xAC */
+ __IO uint32_t AHB1LPENR; /*!< RCC AHB1 Peripheral sleep clock Register Address offset: 0xB0 */
+ __IO uint32_t AHB2LPENR; /*!< RCC AHB2 Peripheral sleep clock Register Address offset: 0xB4 */
+ uint32_t RESERVED15; /*!< Reserved Address offset: 0xB8 */
+ __IO uint32_t AHB4LPENR; /*!< RCC AHB4 Peripherals sleep clock Register Address offset: 0xBC */
+ uint32_t RESERVED17; /*!< Reserved Address offset: 0xC0 */
+ __IO uint32_t APB1LLPENR; /*!< RCC APB1 Peripherals sleep clock Low Word Register Address offset: 0xC4 */
+ __IO uint32_t APB1HLPENR; /*!< RCC APB1 Peripherals sleep clock High Word Register Address offset: 0xC8 */
+ __IO uint32_t APB2LPENR; /*!< RCC APB2 Peripherals sleep clock Register Address offset: 0xCC */
+ __IO uint32_t APB3LPENR; /*!< RCC APB3 Peripherals Clock Low Power Enable Register Address offset: 0xD0 */
+ uint32_t RESERVED18; /*!< Reserved Address offset: 0xD4 */
+ __IO uint32_t CCIPR1; /*!< RCC IPs Clocks Configuration Register 1 Address offset: 0xD8 */
+ __IO uint32_t CCIPR2; /*!< RCC IPs Clocks Configuration Register 2 Address offset: 0xDC */
+ __IO uint32_t CCIPR3; /*!< RCC IPs Clocks Configuration Register 3 Address offset: 0xE0 */
+ __IO uint32_t CCIPR4; /*!< RCC IPs Clocks Configuration Register 4 Address offset: 0xE4 */
+ __IO uint32_t CCIPR5; /*!< RCC IPs Clocks Configuration Register 5 Address offset: 0xE8 */
+ uint32_t RESERVED19; /*!< Reserved, Address offset: 0xEC */
+ __IO uint32_t BDCR; /*!< RCC VSW Backup Domain & V33 Domain Control Register Address offset: 0xF0 */
+ __IO uint32_t RSR; /*!< RCC Reset status Register Address offset: 0xF4 */
+ uint32_t RESERVED20[6]; /*!< Reserved Address offset: 0xF8 */
+ __IO uint32_t SECCFGR; /*!< RCC Secure mode configuration register Address offset: 0x110 */
+ __IO uint32_t PRIVCFGR; /*!< RCC Privilege configuration register Address offset: 0x114 */
+} RCC_TypeDef;
+
+/**
+ * @brief PKA
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< PKA control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< PKA status register, Address offset: 0x04 */
+ __IO uint32_t CLRFR; /*!< PKA clear flag register, Address offset: 0x08 */
+ uint32_t Reserved[253]; /*!< Reserved memory area Address offset: 0x0C -> 0x03FC */
+ __IO uint32_t RAM[1334]; /*!< PKA RAM Address offset: 0x400 -> 0x18D4 */
+} PKA_TypeDef;
+
+/*
+* @brief RTC Specific device feature definitions
+*/
+#define RTC_BKP_NB 32U
+#define RTC_TAMP_NB 8U
+
+/**
+ * @brief Real-Time Clock
+ */
+typedef struct
+{
+ __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */
+ __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */
+ __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */
+ __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */
+ __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */
+ __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */
+ __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */
+ __IO uint32_t PRIVCFGR; /*!< RTC privilege mode control register, Address offset: 0x1C */
+ __IO uint32_t SECCFGR; /*!< RTC secure mode control register, Address offset: 0x20 */
+ __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */
+ __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */
+ __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */
+ __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */
+ __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */
+ __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */
+ uint32_t RESERVED0; /*!< Reserved, Address offset: 0x3C */
+ __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */
+ __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */
+ __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */
+ __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */
+ __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */
+ __IO uint32_t MISR; /*!< RTC masked interrupt status register, Address offset: 0x54 */
+ __IO uint32_t SMISR; /*!< RTC secure masked interrupt status register, Address offset: 0x58 */
+ __IO uint32_t SCR; /*!< RTC status Clear register, Address offset: 0x5C */
+ __IO uint32_t OR; /*!< RTC option register, Address offset: 0x60 */
+ uint32_t RESERVED1[3];/*!< Reserved, Address offset: 0x64 */
+ __IO uint32_t ALRABINR; /*!< RTC alarm A binary mode register, Address offset: 0x70 */
+ __IO uint32_t ALRBBINR; /*!< RTC alarm B binary mode register, Address offset: 0x74 */
+} RTC_TypeDef;
+
+/**
+ * @brief Tamper and backup registers
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< TAMP control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< TAMP control register 2, Address offset: 0x04 */
+ __IO uint32_t CR3; /*!< TAMP control register 3, Address offset: 0x08 */
+ __IO uint32_t FLTCR; /*!< TAMP filter control register, Address offset: 0x0C */
+ __IO uint32_t ATCR1; /*!< TAMP filter control register 1 Address offset: 0x10 */
+ __IO uint32_t ATSEEDR; /*!< TAMP active tamper seed register, Address offset: 0x14 */
+ __IO uint32_t ATOR; /*!< TAMP active tamper output register, Address offset: 0x18 */
+ __IO uint32_t ATCR2; /*!< TAMP filter control register 2, Address offset: 0x1C */
+ __IO uint32_t SECCFGR; /*!< TAMP secure mode control register, Address offset: 0x20 */
+ __IO uint32_t PRIVCFGR; /*!< TAMP privilege mode control register, Address offset: 0x24 */
+ uint32_t RESERVED0; /*!< Reserved, Address offset: 0x28 */
+ __IO uint32_t IER; /*!< TAMP interrupt enable register, Address offset: 0x2C */
+ __IO uint32_t SR; /*!< TAMP status register, Address offset: 0x30 */
+ __IO uint32_t MISR; /*!< TAMP masked interrupt status register, Address offset: 0x34 */
+ __IO uint32_t SMISR; /*!< TAMP secure masked interrupt status register, Address offset: 0x38 */
+ __IO uint32_t SCR; /*!< TAMP status clear register, Address offset: 0x3C */
+ __IO uint32_t COUNT1R; /*!< TAMP monotonic counter register, Address offset: 0x40 */
+ uint32_t RESERVED1[3];/*!< Reserved, Address offset: 0x44 -- 0x4C */
+ __IO uint32_t OR; /*!< TAMP option register, Address offset: 0x50 */
+ __IO uint32_t ERCFGR; /*!< TAMP erase configuration register, Address offset: 0x54 */
+ uint32_t RESERVED2[42];/*!< Reserved, Address offset: 0x58 -- 0xFC */
+ __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */
+ __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */
+ __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */
+ __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */
+ __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */
+ __IO uint32_t BKP5R; /*!< TAMP backup register 5, Address offset: 0x114 */
+ __IO uint32_t BKP6R; /*!< TAMP backup register 6, Address offset: 0x118 */
+ __IO uint32_t BKP7R; /*!< TAMP backup register 7, Address offset: 0x11C */
+ __IO uint32_t BKP8R; /*!< TAMP backup register 8, Address offset: 0x120 */
+ __IO uint32_t BKP9R; /*!< TAMP backup register 9, Address offset: 0x124 */
+ __IO uint32_t BKP10R; /*!< TAMP backup register 10, Address offset: 0x128 */
+ __IO uint32_t BKP11R; /*!< TAMP backup register 11, Address offset: 0x12C */
+ __IO uint32_t BKP12R; /*!< TAMP backup register 12, Address offset: 0x130 */
+ __IO uint32_t BKP13R; /*!< TAMP backup register 13, Address offset: 0x134 */
+ __IO uint32_t BKP14R; /*!< TAMP backup register 14, Address offset: 0x138 */
+ __IO uint32_t BKP15R; /*!< TAMP backup register 15, Address offset: 0x13C */
+ __IO uint32_t BKP16R; /*!< TAMP backup register 16, Address offset: 0x140 */
+ __IO uint32_t BKP17R; /*!< TAMP backup register 17, Address offset: 0x144 */
+ __IO uint32_t BKP18R; /*!< TAMP backup register 18, Address offset: 0x148 */
+ __IO uint32_t BKP19R; /*!< TAMP backup register 19, Address offset: 0x14C */
+ __IO uint32_t BKP20R; /*!< TAMP backup register 20, Address offset: 0x150 */
+ __IO uint32_t BKP21R; /*!< TAMP backup register 21, Address offset: 0x154 */
+ __IO uint32_t BKP22R; /*!< TAMP backup register 22, Address offset: 0x158 */
+ __IO uint32_t BKP23R; /*!< TAMP backup register 23, Address offset: 0x15C */
+ __IO uint32_t BKP24R; /*!< TAMP backup register 24, Address offset: 0x160 */
+ __IO uint32_t BKP25R; /*!< TAMP backup register 25, Address offset: 0x164 */
+ __IO uint32_t BKP26R; /*!< TAMP backup register 26, Address offset: 0x168 */
+ __IO uint32_t BKP27R; /*!< TAMP backup register 27, Address offset: 0x16C */
+ __IO uint32_t BKP28R; /*!< TAMP backup register 28, Address offset: 0x170 */
+ __IO uint32_t BKP29R; /*!< TAMP backup register 29, Address offset: 0x174 */
+ __IO uint32_t BKP30R; /*!< TAMP backup register 30, Address offset: 0x178 */
+ __IO uint32_t BKP31R; /*!< TAMP backup register 31, Address offset: 0x17C */
+} TAMP_TypeDef;
+
+/**
+ * @brief Universal Synchronous Asynchronous Receiver Transmitter
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */
+ __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */
+ __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */
+ __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */
+ __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */
+ __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */
+ __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */
+ __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */
+ __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */
+ __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */
+ __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */
+} USART_TypeDef;
+
+/**
+ * @brief System configuration, Boot and Security
+ */
+typedef struct
+{
+ uint32_t RESERVED1[4]; /*!< RESERVED1, Address offset: 0x00 - 0x0C */
+ __IO uint32_t HDPLCR; /*!< SBS HDPL Control Register, Address offset: 0x10 */
+ __IO uint32_t HDPLSR; /*!< SBS HDPL Status Register, Address offset: 0x14 */
+ __IO uint32_t NEXTHDPLCR; /*!< NEXT HDPL Control Register, Address offset: 0x18 */
+ __IO uint32_t RESERVED2; /*!< RESERVED2, Address offset: 0x1C */
+ __IO uint32_t DBGCR; /*!< SBS Debug Control Register, Address offset: 0x20 */
+ __IO uint32_t DBGLOCKR; /*!< SBS Debug Lock Register, Address offset: 0x24 */
+ uint32_t RESERVED3[3]; /*!< RESERVED3, Address offset: 0x28 - 0x30 */
+ __IO uint32_t RSSCMDR; /*!< SBS RSS Command Register, Address offset: 0x34 */
+ uint32_t RESERVED4[26]; /*!< RESERVED4, Address offset: 0x38 - 0x9C */
+ __IO uint32_t EPOCHSELCR; /*!< EPOCH Selection Register, Address offset: 0xA0 */
+ uint32_t RESERVED5[7]; /*!< RESERVED5, Address offset: 0xA4 - 0xBC */
+ __IO uint32_t SECCFGR; /*!< SBS Security Mode Configuration, Address offset: 0xC0 */
+ uint32_t RESERVED6[15]; /*!< RESERVED6, Address offset: 0xC4 - 0xFC */
+ __IO uint32_t PMCR; /*!< SBS Product Mode & Config Register, Address offset: 0x100 */
+ __IO uint32_t FPUIMR; /*!< SBS FPU Interrupt Mask Register, Address offset: 0x104 */
+ __IO uint32_t MESR; /*!< SBS Memory Erase Status Register, Address offset: 0x108 */
+ uint32_t RESERVED7; /*!< RESERVED7, Address offset: 0x10C */
+ __IO uint32_t CCCSR; /*!< SBS Compensation Cell Control & Status Register, Address offset: 0x110 */
+ __IO uint32_t CCVALR; /*!< SBS Compensation Cell Value Register, Address offset: 0x114 */
+ __IO uint32_t CCSWCR; /*!< SBS Compensation Cell for I/Os sw code Register, Address offset: 0x118 */
+ __IO uint32_t RESERVED8; /*!< RESERVED8, Address offset: 0x11C */
+ __IO uint32_t CFGR2; /*!< SBS Class B Register, Address offset: 0x120 */
+ uint32_t RESERVED9[8]; /*!< RESERVED9, Address offset: 0x124 - 0x140 */
+ __IO uint32_t CNSLCKR; /*!< SBS CPU Non-secure Lock Register, Address offset: 0x144 */
+ __IO uint32_t CSLCKR; /*!< SBS CPU Secure Lock Register, Address offset: 0x148 */
+ __IO uint32_t ECCNMIR; /*!< SBS FLITF ECC NMI MASK Register, Address offset: 0x14C */
+} SBS_TypeDef;
+
+/**
+ * @brief Secure digital input/output Interface
+ */
+typedef struct
+{
+ __IO uint32_t POWER; /*!< SDMMC power control register, Address offset: 0x00 */
+ __IO uint32_t CLKCR; /*!< SDMMC clock control register, Address offset: 0x04 */
+ __IO uint32_t ARG; /*!< SDMMC argument register, Address offset: 0x08 */
+ __IO uint32_t CMD; /*!< SDMMC command register, Address offset: 0x0C */
+ __I uint32_t RESPCMD; /*!< SDMMC command response register, Address offset: 0x10 */
+ __I uint32_t RESP1; /*!< SDMMC response 1 register, Address offset: 0x14 */
+ __I uint32_t RESP2; /*!< SDMMC response 2 register, Address offset: 0x18 */
+ __I uint32_t RESP3; /*!< SDMMC response 3 register, Address offset: 0x1C */
+ __I uint32_t RESP4; /*!< SDMMC response 4 register, Address offset: 0x20 */
+ __IO uint32_t DTIMER; /*!< SDMMC data timer register, Address offset: 0x24 */
+ __IO uint32_t DLEN; /*!< SDMMC data length register, Address offset: 0x28 */
+ __IO uint32_t DCTRL; /*!< SDMMC data control register, Address offset: 0x2C */
+ __I uint32_t DCOUNT; /*!< SDMMC data counter register, Address offset: 0x30 */
+ __I uint32_t STA; /*!< SDMMC status register, Address offset: 0x34 */
+ __IO uint32_t ICR; /*!< SDMMC interrupt clear register, Address offset: 0x38 */
+ __IO uint32_t MASK; /*!< SDMMC mask register, Address offset: 0x3C */
+ __IO uint32_t ACKTIME; /*!< SDMMC Acknowledgement timer register, Address offset: 0x40 */
+ uint32_t RESERVED0[3]; /*!< Reserved, 0x44 - 0x4C - 0x4C */
+ __IO uint32_t IDMACTRL; /*!< SDMMC DMA control register, Address offset: 0x50 */
+ __IO uint32_t IDMABSIZE; /*!< SDMMC DMA buffer size register, Address offset: 0x54 */
+ __IO uint32_t IDMABASER; /*!< SDMMC DMA buffer base address register, Address offset: 0x58 */
+ uint32_t RESERVED1[2]; /*!< Reserved, 0x60 */
+ __IO uint32_t IDMALAR; /*!< SDMMC DMA linked list address register, Address offset: 0x64 */
+ __IO uint32_t IDMABAR; /*!< SDMMC DMA linked list memory base register,Address offset: 0x68 */
+ uint32_t RESERVED2[5]; /*!< Reserved, 0x6C-0x7C */
+ __IO uint32_t FIFO; /*!< SDMMC data FIFO register, Address offset: 0x80 */
+} SDMMC_TypeDef;
+
+
+
+/**
+ * @brief Delay Block DLYB
+ */
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< DELAY BLOCK control register, Address offset: 0x00 */
+ __IO uint32_t CFGR; /*!< DELAY BLOCK configuration register, Address offset: 0x04 */
+} DLYB_TypeDef;
+
+/**
+ * @brief UCPD
+ */
+typedef struct
+{
+ __IO uint32_t CFG1; /*!< UCPD configuration register 1, Address offset: 0x00 */
+ __IO uint32_t CFG2; /*!< UCPD configuration register 2, Address offset: 0x04 */
+ __IO uint32_t CFG3; /*!< UCPD configuration register 3, Address offset: 0x08 */
+ __IO uint32_t CR; /*!< UCPD control register, Address offset: 0x0C */
+ __IO uint32_t IMR; /*!< UCPD interrupt mask register, Address offset: 0x10 */
+ __IO uint32_t SR; /*!< UCPD status register, Address offset: 0x14 */
+ __IO uint32_t ICR; /*!< UCPD interrupt flag clear register Address offset: 0x18 */
+ __IO uint32_t TX_ORDSET; /*!< UCPD Tx ordered set type register, Address offset: 0x1C */
+ __IO uint32_t TX_PAYSZ; /*!< UCPD Tx payload size register, Address offset: 0x20 */
+ __IO uint32_t TXDR; /*!< UCPD Tx data register, Address offset: 0x24 */
+ __IO uint32_t RX_ORDSET; /*!< UCPD Rx ordered set type register, Address offset: 0x28 */
+ __IO uint32_t RX_PAYSZ; /*!< UCPD Rx payload size register, Address offset: 0x2C */
+ __IO uint32_t RXDR; /*!< UCPD Rx data register, Address offset: 0x30 */
+ __IO uint32_t RX_ORDEXT1; /*!< UCPD Rx ordered set extension 1 register, Address offset: 0x34 */
+ __IO uint32_t RX_ORDEXT2; /*!< UCPD Rx ordered set extension 2 register, Address offset: 0x38 */
+ uint32_t RESERVED[949];/*!< Reserved, Address offset: 0x3C -- 0x3F0 */
+ __IO uint32_t IPVER; /*!< UCPD IP version register, Address offset: 0x3F4 */
+ __IO uint32_t IPID; /*!< UCPD IP Identification register, Address offset: 0x3F8 */
+ __IO uint32_t MID; /*!< UCPD Magic Identification register, Address offset: 0x3FC */
+} UCPD_TypeDef;
+
+/**
+ * @brief Universal Serial Bus Full Speed Dual Role Device
+ */
+typedef struct
+{
+ __IO uint32_t CHEP0R; /*!< USB Channel/Endpoint 0 register, Address offset: 0x00 */
+ __IO uint32_t CHEP1R; /*!< USB Channel/Endpoint 1 register, Address offset: 0x04 */
+ __IO uint32_t CHEP2R; /*!< USB Channel/Endpoint 2 register, Address offset: 0x08 */
+ __IO uint32_t CHEP3R; /*!< USB Channel/Endpoint 3 register, Address offset: 0x0C */
+ __IO uint32_t CHEP4R; /*!< USB Channel/Endpoint 4 register, Address offset: 0x10 */
+ __IO uint32_t CHEP5R; /*!< USB Channel/Endpoint 5 register, Address offset: 0x14 */
+ __IO uint32_t CHEP6R; /*!< USB Channel/Endpoint 6 register, Address offset: 0x18 */
+ __IO uint32_t CHEP7R; /*!< USB Channel/Endpoint 7 register, Address offset: 0x1C */
+ __IO uint32_t RESERVED0[8]; /*!< Reserved, */
+ __IO uint32_t CNTR; /*!< Control register, Address offset: 0x40 */
+ __IO uint32_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */
+ __IO uint32_t FNR; /*!< Frame number register, Address offset: 0x48 */
+ __IO uint32_t DADDR; /*!< Device address register, Address offset: 0x4C */
+ __IO uint32_t RESERVED1; /*!< Reserved */
+ __IO uint32_t LPMCSR; /*!< LPM Control and Status register, Address offset: 0x54 */
+ __IO uint32_t BCDR; /*!< Battery Charging detector register, Address offset: 0x58 */
+} USB_DRD_TypeDef;
+
+/**
+ * @brief Universal Serial Bus PacketMemoryArea Buffer Descriptor Table
+ */
+typedef struct
+{
+ __IO uint32_t TXBD; /*!= 6010050)
+ #pragma clang diagnostic pop
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning restore
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Address Map ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_Peripheral_peripheralAddr
+ * @{
+ */
+
+/* Internal SRAMs size */
+
+#define SRAM1_SIZE (0x20000UL) /*!< SRAM1=128k */
+#define SRAM2_SIZE (0x14000UL) /*!< SRAM2=80k */
+#define SRAM3_SIZE (0x10000UL) /*!< SRAM3=64k */
+#define BKPSRAM_SIZE (0x00800UL) /*!< BKPSRAM=2k */
+
+/* Flash, Peripheral and internal SRAMs base addresses - Non secure */
+#define FLASH_BASE_NS (0x08000000UL) /*!< FLASH (up to 512 KB) non-secure base address */
+#define SRAM1_BASE_NS (0x20000000UL) /*!< SRAM1 (128 KB) non-secure base address */
+#define SRAM2_BASE_NS (0x20020000UL) /*!< SRAM2 (80 KB) non-secure base address */
+#define SRAM3_BASE_NS (0x20034000UL) /*!< SRAM3 (64 KB) non-secure base address */
+#define PERIPH_BASE_NS (0x40000000UL) /*!< Peripheral non-secure base address */
+
+/* External memories base addresses - Not aliased */
+#define FMC_BASE (0x60000000UL) /*!< FMC base address */
+#define OCTOSPI1_BASE (0x90000000UL) /*!< OCTOSPI1 memories accessible over AHB base address */
+
+#define FMC_BANK1 FMC_BASE
+#define FMC_BANK1_1 FMC_BANK1
+#define FMC_BANK1_2 (FMC_BANK1 + 0x04000000UL) /*!< FMC Memory Bank1 for SRAM, NOR and PSRAM */
+#define FMC_BANK1_3 (FMC_BANK1 + 0x08000000UL)
+#define FMC_BANK1_4 (FMC_BANK1 + 0x0C000000UL)
+#define FMC_BANK3 (FMC_BASE + 0x20000000UL) /*!< FMC Memory Bank3 for NAND */
+#define FMC_SDRAM_BANK_1 (FMC_BASE + 0x60000000UL) /*!< FMC Memory SDRAM Bank1 */
+#define FMC_SDRAM_BANK_2 (FMC_BASE + 0x70000000UL) /*!< FMC Memory SDRAM Bank2 */
+
+
+/* Peripheral memory map - Non secure */
+#define APB1PERIPH_BASE_NS PERIPH_BASE_NS
+#define APB2PERIPH_BASE_NS (PERIPH_BASE_NS + 0x00010000UL)
+#define AHB1PERIPH_BASE_NS (PERIPH_BASE_NS + 0x00020000UL)
+#define AHB2PERIPH_BASE_NS (PERIPH_BASE_NS + 0x02020000UL)
+#define APB3PERIPH_BASE_NS (PERIPH_BASE_NS + 0x04000000UL)
+#define AHB3PERIPH_BASE_NS (PERIPH_BASE_NS + 0x04020000UL)
+#define AHB4PERIPH_BASE_NS (PERIPH_BASE_NS + 0x06000000UL)
+
+/*!< APB1 Non secure peripherals */
+#define TIM2_BASE_NS (APB1PERIPH_BASE_NS + 0x0000UL)
+#define TIM3_BASE_NS (APB1PERIPH_BASE_NS + 0x0400UL)
+#define TIM4_BASE_NS (APB1PERIPH_BASE_NS + 0x0800UL)
+#define TIM5_BASE_NS (APB1PERIPH_BASE_NS + 0x0C00UL)
+#define TIM6_BASE_NS (APB1PERIPH_BASE_NS + 0x1000UL)
+#define TIM7_BASE_NS (APB1PERIPH_BASE_NS + 0x1400UL)
+#define TIM12_BASE_NS (APB1PERIPH_BASE_NS + 0x1800UL)
+#define WWDG_BASE_NS (APB1PERIPH_BASE_NS + 0x2C00UL)
+#define IWDG_BASE_NS (APB1PERIPH_BASE_NS + 0x3000UL)
+#define SPI2_BASE_NS (APB1PERIPH_BASE_NS + 0x3800UL)
+#define SPI3_BASE_NS (APB1PERIPH_BASE_NS + 0x3C00UL)
+#define USART2_BASE_NS (APB1PERIPH_BASE_NS + 0x4400UL)
+#define USART3_BASE_NS (APB1PERIPH_BASE_NS + 0x4800UL)
+#define UART4_BASE_NS (APB1PERIPH_BASE_NS + 0x4C00UL)
+#define UART5_BASE_NS (APB1PERIPH_BASE_NS + 0x5000UL)
+#define I2C1_BASE_NS (APB1PERIPH_BASE_NS + 0x5400UL)
+#define I2C2_BASE_NS (APB1PERIPH_BASE_NS + 0x5800UL)
+#define I3C1_BASE_NS (APB1PERIPH_BASE_NS + 0x5C00UL)
+#define CRS_BASE_NS (APB1PERIPH_BASE_NS + 0x6000UL)
+#define USART6_BASE_NS (APB1PERIPH_BASE_NS + 0x6400UL)
+#define CEC_BASE_NS (APB1PERIPH_BASE_NS + 0x7000UL)
+#define DTS_BASE_NS (APB1PERIPH_BASE_NS + 0x8C00UL)
+#define LPTIM2_BASE_NS (APB1PERIPH_BASE_NS + 0x9400UL)
+#define FDCAN1_BASE_NS (APB1PERIPH_BASE_NS + 0xA400UL)
+#define FDCAN_CONFIG_BASE_NS (APB1PERIPH_BASE_NS + 0xA500UL)
+#define SRAMCAN_BASE_NS (APB1PERIPH_BASE_NS + 0xAC00UL)
+#define FDCAN2_BASE_NS (APB1PERIPH_BASE_NS + 0xA800UL)
+#define UCPD1_BASE_NS (APB1PERIPH_BASE_NS + 0xDC00UL)
+
+/*!< APB2 Non secure peripherals */
+#define TIM1_BASE_NS (APB2PERIPH_BASE_NS + 0x2C00UL)
+#define SPI1_BASE_NS (APB2PERIPH_BASE_NS + 0x3000UL)
+#define TIM8_BASE_NS (APB2PERIPH_BASE_NS + 0x3400UL)
+#define USART1_BASE_NS (APB2PERIPH_BASE_NS + 0x3800UL)
+#define TIM15_BASE_NS (APB2PERIPH_BASE_NS + 0x4000UL)
+#define SPI4_BASE_NS (APB2PERIPH_BASE_NS + 0x4C00UL)
+#define USB_DRD_BASE_NS (APB2PERIPH_BASE_NS + 0x6000UL)
+#define USB_DRD_PMAADDR_NS (APB2PERIPH_BASE_NS + 0x6400UL)
+
+/*!< AHB1 Non secure peripherals */
+#define GPDMA1_BASE_NS AHB1PERIPH_BASE_NS
+#define GPDMA2_BASE_NS (AHB1PERIPH_BASE_NS + 0x01000UL)
+#define FLASH_R_BASE_NS (AHB1PERIPH_BASE_NS + 0x02000UL)
+#define CRC_BASE_NS (AHB1PERIPH_BASE_NS + 0x03000UL)
+#define RAMCFG_BASE_NS (AHB1PERIPH_BASE_NS + 0x06000UL)
+#define ICACHE_BASE_NS (AHB1PERIPH_BASE_NS + 0x10400UL)
+#define DCACHE1_BASE_NS (AHB1PERIPH_BASE_NS + 0x11400UL)
+#define GTZC_TZSC1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12400UL)
+#define GTZC_TZIC1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12800UL)
+#define GTZC_MPCBB1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12C00UL)
+#define GTZC_MPCBB2_BASE_NS (AHB1PERIPH_BASE_NS + 0x13000UL)
+#define GTZC_MPCBB3_BASE_NS (AHB1PERIPH_BASE_NS + 0x13400UL)
+#define BKPSRAM_BASE_NS (AHB1PERIPH_BASE_NS + 0x16400UL)
+
+#define GPDMA1_Channel0_BASE_NS (GPDMA1_BASE_NS + 0x0050UL)
+#define GPDMA1_Channel1_BASE_NS (GPDMA1_BASE_NS + 0x00D0UL)
+#define GPDMA1_Channel2_BASE_NS (GPDMA1_BASE_NS + 0x0150UL)
+#define GPDMA1_Channel3_BASE_NS (GPDMA1_BASE_NS + 0x01D0UL)
+#define GPDMA1_Channel4_BASE_NS (GPDMA1_BASE_NS + 0x0250UL)
+#define GPDMA1_Channel5_BASE_NS (GPDMA1_BASE_NS + 0x02D0UL)
+#define GPDMA1_Channel6_BASE_NS (GPDMA1_BASE_NS + 0x0350UL)
+#define GPDMA1_Channel7_BASE_NS (GPDMA1_BASE_NS + 0x03D0UL)
+#define GPDMA2_Channel0_BASE_NS (GPDMA2_BASE_NS + 0x0050UL)
+#define GPDMA2_Channel1_BASE_NS (GPDMA2_BASE_NS + 0x00D0UL)
+#define GPDMA2_Channel2_BASE_NS (GPDMA2_BASE_NS + 0x0150UL)
+#define GPDMA2_Channel3_BASE_NS (GPDMA2_BASE_NS + 0x01D0UL)
+#define GPDMA2_Channel4_BASE_NS (GPDMA2_BASE_NS + 0x0250UL)
+#define GPDMA2_Channel5_BASE_NS (GPDMA2_BASE_NS + 0x02D0UL)
+#define GPDMA2_Channel6_BASE_NS (GPDMA2_BASE_NS + 0x0350UL)
+#define GPDMA2_Channel7_BASE_NS (GPDMA2_BASE_NS + 0x03D0UL)
+
+#define RAMCFG_SRAM1_BASE_NS (RAMCFG_BASE_NS)
+#define RAMCFG_SRAM2_BASE_NS (RAMCFG_BASE_NS + 0x0040UL)
+#define RAMCFG_SRAM3_BASE_NS (RAMCFG_BASE_NS + 0x0080UL)
+#define RAMCFG_BKPRAM_BASE_NS (RAMCFG_BASE_NS + 0x0100UL)
+
+/*!< AHB2 Non secure peripherals */
+#define GPIOA_BASE_NS (AHB2PERIPH_BASE_NS + 0x00000UL)
+#define GPIOB_BASE_NS (AHB2PERIPH_BASE_NS + 0x00400UL)
+#define GPIOC_BASE_NS (AHB2PERIPH_BASE_NS + 0x00800UL)
+#define GPIOD_BASE_NS (AHB2PERIPH_BASE_NS + 0x00C00UL)
+#define GPIOE_BASE_NS (AHB2PERIPH_BASE_NS + 0x01000UL)
+#define GPIOF_BASE_NS (AHB2PERIPH_BASE_NS + 0x01400UL)
+#define GPIOG_BASE_NS (AHB2PERIPH_BASE_NS + 0x01800UL)
+#define GPIOH_BASE_NS (AHB2PERIPH_BASE_NS + 0x01C00UL)
+#define ADC1_BASE_NS (AHB2PERIPH_BASE_NS + 0x08000UL)
+#define ADC2_BASE_NS (AHB2PERIPH_BASE_NS + 0x08100UL)
+#define ADC12_COMMON_BASE_NS (AHB2PERIPH_BASE_NS + 0x08300UL)
+#define DAC1_BASE_NS (AHB2PERIPH_BASE_NS + 0x08400UL)
+#define DCMI_BASE_NS (AHB2PERIPH_BASE_NS + 0x0C000UL)
+#define PSSI_BASE_NS (AHB2PERIPH_BASE_NS + 0x0C400UL)
+#define HASH_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0400UL)
+#define HASH_DIGEST_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0710UL)
+#define RNG_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0800UL)
+#define PKA_BASE_NS (AHB2PERIPH_BASE_NS + 0xA2000UL)
+#define PKA_RAM_BASE_NS (AHB2PERIPH_BASE_NS + 0xA2400UL)
+
+/*!< APB3 Non secure peripherals */
+#define SBS_BASE_NS (APB3PERIPH_BASE_NS + 0x0400UL)
+#define LPUART1_BASE_NS (APB3PERIPH_BASE_NS + 0x2400UL)
+#define I2C3_BASE_NS (APB3PERIPH_BASE_NS + 0x2800UL)
+#define I3C2_BASE_NS (APB3PERIPH_BASE_NS + 0x3000UL)
+#define LPTIM1_BASE_NS (APB3PERIPH_BASE_NS + 0x4400UL)
+#define VREFBUF_BASE_NS (APB3PERIPH_BASE_NS + 0x7400UL)
+#define RTC_BASE_NS (APB3PERIPH_BASE_NS + 0x7800UL)
+#define TAMP_BASE_NS (APB3PERIPH_BASE_NS + 0x7C00UL)
+
+/*!< AHB3 Non secure peripherals */
+#define PWR_BASE_NS (AHB3PERIPH_BASE_NS + 0x0800UL)
+#define RCC_BASE_NS (AHB3PERIPH_BASE_NS + 0x0C00UL)
+#define EXTI_BASE_NS (AHB3PERIPH_BASE_NS + 0x2000UL)
+#define DEBUG_BASE_NS (AHB3PERIPH_BASE_NS + 0x4000UL)
+
+/*!< AHB4 Non secure peripherals */
+#define SDMMC1_BASE_NS (AHB4PERIPH_BASE_NS + 0x8000UL)
+#define DLYB_SDMMC1_BASE_NS (AHB4PERIPH_BASE_NS + 0x8400UL)
+#define FMC_R_BASE_NS (AHB4PERIPH_BASE_NS + 0x1000400UL) /*!< FMC control registers base address */
+#define OCTOSPI1_R_BASE_NS (AHB4PERIPH_BASE_NS + 0x1001400UL) /*!< OCTOSPI1 control registers base address */
+#define DLYB_OCTOSPI1_BASE_NS (AHB4PERIPH_BASE_NS + 0x0F000UL)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_BASE_NS (FMC_R_BASE_NS + 0x0000UL)
+#define FMC_Bank1E_R_BASE_NS (FMC_R_BASE_NS + 0x0104UL)
+#define FMC_Bank3_R_BASE_NS (FMC_R_BASE_NS + 0x0080UL)
+
+/* Flash, Peripheral and internal SRAMs base addresses - Secure */
+#define FLASH_BASE_S (0x0C000000UL) /*!< FLASH (up to 512 KB) secure base address */
+#define SRAM1_BASE_S (0x30000000UL) /*!< SRAM1 (128 KB) secure base address */
+#define SRAM2_BASE_S (0x30020000UL) /*!< SRAM2 (80 KB) secure base address */
+#define SRAM3_BASE_S (0x30034000UL) /*!< SRAM3 (64 KB) secure base address */
+#define PERIPH_BASE_S (0x50000000UL) /*!< Peripheral secure base address */
+
+/* Peripheral memory map - Secure */
+#define APB1PERIPH_BASE_S PERIPH_BASE_S
+#define APB2PERIPH_BASE_S (PERIPH_BASE_S + 0x00010000UL)
+#define AHB1PERIPH_BASE_S (PERIPH_BASE_S + 0x00020000UL)
+#define AHB2PERIPH_BASE_S (PERIPH_BASE_S + 0x02020000UL)
+#define APB3PERIPH_BASE_S (PERIPH_BASE_S + 0x04000000UL)
+#define AHB3PERIPH_BASE_S (PERIPH_BASE_S + 0x04020000UL)
+#define AHB4PERIPH_BASE_S (PERIPH_BASE_S + 0x06000000UL)
+
+/*!< APB1 secure peripherals */
+#define TIM2_BASE_S (APB1PERIPH_BASE_S + 0x0000UL)
+#define TIM3_BASE_S (APB1PERIPH_BASE_S + 0x0400UL)
+#define TIM4_BASE_S (APB1PERIPH_BASE_S + 0x0800UL)
+#define TIM5_BASE_S (APB1PERIPH_BASE_S + 0x0C00UL)
+#define TIM6_BASE_S (APB1PERIPH_BASE_S + 0x1000UL)
+#define TIM7_BASE_S (APB1PERIPH_BASE_S + 0x1400UL)
+#define TIM12_BASE_S (APB1PERIPH_BASE_S + 0x1800UL)
+#define WWDG_BASE_S (APB1PERIPH_BASE_S + 0x2C00UL)
+#define IWDG_BASE_S (APB1PERIPH_BASE_S + 0x3000UL)
+#define SPI2_BASE_S (APB1PERIPH_BASE_S + 0x3800UL)
+#define SPI3_BASE_S (APB1PERIPH_BASE_S + 0x3C00UL)
+#define USART2_BASE_S (APB1PERIPH_BASE_S + 0x4400UL)
+#define USART3_BASE_S (APB1PERIPH_BASE_S + 0x4800UL)
+#define UART4_BASE_S (APB1PERIPH_BASE_S + 0x4C00UL)
+#define UART5_BASE_S (APB1PERIPH_BASE_S + 0x5000UL)
+#define I2C1_BASE_S (APB1PERIPH_BASE_S + 0x5400UL)
+#define I2C2_BASE_S (APB1PERIPH_BASE_S + 0x5800UL)
+#define I3C1_BASE_S (APB1PERIPH_BASE_S + 0x5C00UL)
+#define CRS_BASE_S (APB1PERIPH_BASE_S + 0x6000UL)
+#define USART6_BASE_S (APB1PERIPH_BASE_S + 0x6400UL)
+#define CEC_BASE_S (APB1PERIPH_BASE_S + 0x7000UL)
+#define DTS_BASE_S (APB1PERIPH_BASE_S + 0x8C00UL)
+#define LPTIM2_BASE_S (APB1PERIPH_BASE_S + 0x9400UL)
+#define FDCAN1_BASE_S (APB1PERIPH_BASE_S + 0xA400UL)
+#define FDCAN_CONFIG_BASE_S (APB1PERIPH_BASE_S + 0xA500UL)
+#define SRAMCAN_BASE_S (APB1PERIPH_BASE_S + 0xAC00UL)
+#define FDCAN2_BASE_S (APB1PERIPH_BASE_S + 0xA800UL)
+#define UCPD1_BASE_S (APB1PERIPH_BASE_S + 0xDC00UL)
+
+/*!< APB2 Secure peripherals */
+#define TIM1_BASE_S (APB2PERIPH_BASE_S + 0x2C00UL)
+#define SPI1_BASE_S (APB2PERIPH_BASE_S + 0x3000UL)
+#define TIM8_BASE_S (APB2PERIPH_BASE_S + 0x3400UL)
+#define USART1_BASE_S (APB2PERIPH_BASE_S + 0x3800UL)
+#define TIM15_BASE_S (APB2PERIPH_BASE_S + 0x4000UL)
+#define SPI4_BASE_S (APB2PERIPH_BASE_S + 0x4C00UL)
+#define USB_DRD_BASE_S (APB2PERIPH_BASE_S + 0x6000UL)
+#define USB_DRD_PMAADDR_S (APB2PERIPH_BASE_S + 0x6400UL)
+
+/*!< AHB1 secure peripherals */
+#define GPDMA1_BASE_S AHB1PERIPH_BASE_S
+#define GPDMA2_BASE_S (AHB1PERIPH_BASE_S + 0x01000UL)
+#define FLASH_R_BASE_S (AHB1PERIPH_BASE_S + 0x02000UL)
+#define CRC_BASE_S (AHB1PERIPH_BASE_S + 0x03000UL)
+#define RAMCFG_BASE_S (AHB1PERIPH_BASE_S + 0x06000UL)
+#define ICACHE_BASE_S (AHB1PERIPH_BASE_S + 0x10400UL)
+#define DCACHE1_BASE_S (AHB1PERIPH_BASE_S + 0x11400UL)
+#define GTZC_TZSC1_BASE_S (AHB1PERIPH_BASE_S + 0x12400UL)
+#define GTZC_TZIC1_BASE_S (AHB1PERIPH_BASE_S + 0x12800UL)
+#define GTZC_MPCBB1_BASE_S (AHB1PERIPH_BASE_S + 0x12C00UL)
+#define GTZC_MPCBB2_BASE_S (AHB1PERIPH_BASE_S + 0x13000UL)
+#define GTZC_MPCBB3_BASE_S (AHB1PERIPH_BASE_S + 0x13400UL)
+#define BKPSRAM_BASE_S (AHB1PERIPH_BASE_S + 0x16400UL)
+#define GPDMA1_Channel0_BASE_S (GPDMA1_BASE_S + 0x0050UL)
+#define GPDMA1_Channel1_BASE_S (GPDMA1_BASE_S + 0x00D0UL)
+#define GPDMA1_Channel2_BASE_S (GPDMA1_BASE_S + 0x0150UL)
+#define GPDMA1_Channel3_BASE_S (GPDMA1_BASE_S + 0x01D0UL)
+#define GPDMA1_Channel4_BASE_S (GPDMA1_BASE_S + 0x0250UL)
+#define GPDMA1_Channel5_BASE_S (GPDMA1_BASE_S + 0x02D0UL)
+#define GPDMA1_Channel6_BASE_S (GPDMA1_BASE_S + 0x0350UL)
+#define GPDMA1_Channel7_BASE_S (GPDMA1_BASE_S + 0x03D0UL)
+#define GPDMA2_Channel0_BASE_S (GPDMA2_BASE_S + 0x0050UL)
+#define GPDMA2_Channel1_BASE_S (GPDMA2_BASE_S + 0x00D0UL)
+#define GPDMA2_Channel2_BASE_S (GPDMA2_BASE_S + 0x0150UL)
+#define GPDMA2_Channel3_BASE_S (GPDMA2_BASE_S + 0x01D0UL)
+#define GPDMA2_Channel4_BASE_S (GPDMA2_BASE_S + 0x0250UL)
+#define GPDMA2_Channel5_BASE_S (GPDMA2_BASE_S + 0x02D0UL)
+#define GPDMA2_Channel6_BASE_S (GPDMA2_BASE_S + 0x0350UL)
+#define GPDMA2_Channel7_BASE_S (GPDMA2_BASE_S + 0x03D0UL)
+#define RAMCFG_SRAM1_BASE_S (RAMCFG_BASE_S)
+#define RAMCFG_SRAM2_BASE_S (RAMCFG_BASE_S + 0x0040UL)
+#define RAMCFG_SRAM3_BASE_S (RAMCFG_BASE_S + 0x0080UL)
+#define RAMCFG_BKPRAM_BASE_S (RAMCFG_BASE_S + 0x0100UL)
+
+/*!< AHB2 secure peripherals */
+#define GPIOA_BASE_S (AHB2PERIPH_BASE_S + 0x00000UL)
+#define GPIOB_BASE_S (AHB2PERIPH_BASE_S + 0x00400UL)
+#define GPIOC_BASE_S (AHB2PERIPH_BASE_S + 0x00800UL)
+#define GPIOD_BASE_S (AHB2PERIPH_BASE_S + 0x00C00UL)
+#define GPIOE_BASE_S (AHB2PERIPH_BASE_S + 0x01000UL)
+#define GPIOF_BASE_S (AHB2PERIPH_BASE_S + 0x01400UL)
+#define GPIOG_BASE_S (AHB2PERIPH_BASE_S + 0x01800UL)
+#define GPIOH_BASE_S (AHB2PERIPH_BASE_S + 0x01C00UL)
+#define ADC1_BASE_S (AHB2PERIPH_BASE_S + 0x08000UL)
+#define ADC2_BASE_S (AHB2PERIPH_BASE_S + 0x08100UL)
+#define ADC12_COMMON_BASE_S (AHB2PERIPH_BASE_S + 0x08300UL)
+#define DAC1_BASE_S (AHB2PERIPH_BASE_S + 0x08400UL)
+#define DCMI_BASE_S (AHB2PERIPH_BASE_S + 0x0C000UL)
+#define PSSI_BASE_S (AHB2PERIPH_BASE_S + 0x0C400UL)
+#define HASH_BASE_S (AHB2PERIPH_BASE_S + 0xA0400UL)
+#define HASH_DIGEST_BASE_S (AHB2PERIPH_BASE_S + 0xA0710UL)
+#define RNG_BASE_S (AHB2PERIPH_BASE_S + 0xA0800UL)
+#define PKA_BASE_S (AHB2PERIPH_BASE_S + 0xA2000UL)
+#define PKA_RAM_BASE_S (AHB2PERIPH_BASE_S + 0xA2400UL)
+
+/*!< APB3 secure peripherals */
+#define SBS_BASE_S (APB3PERIPH_BASE_S + 0x0400UL)
+#define LPUART1_BASE_S (APB3PERIPH_BASE_S + 0x2400UL)
+#define I2C3_BASE_S (APB3PERIPH_BASE_S + 0x2800UL)
+#define I3C2_BASE_S (APB3PERIPH_BASE_S + 0x3000UL)
+#define LPTIM1_BASE_S (APB3PERIPH_BASE_S + 0x4400UL)
+#define VREFBUF_BASE_S (APB3PERIPH_BASE_S + 0x7400UL)
+#define RTC_BASE_S (APB3PERIPH_BASE_S + 0x7800UL)
+#define TAMP_BASE_S (APB3PERIPH_BASE_S + 0x7C00UL)
+
+/*!< AHB3 secure peripherals */
+#define PWR_BASE_S (AHB3PERIPH_BASE_S + 0x0800UL)
+#define RCC_BASE_S (AHB3PERIPH_BASE_S + 0x0C00UL)
+#define EXTI_BASE_S (AHB3PERIPH_BASE_S + 0x2000UL)
+#define DEBUG_BASE_S (AHB3PERIPH_BASE_S + 0x4000UL)
+
+/*!< AHB4 secure peripherals */
+#define SDMMC1_BASE_S (AHB4PERIPH_BASE_S + 0x8000UL)
+#define DLYB_SDMMC1_BASE_S (AHB4PERIPH_BASE_S + 0x8400UL)
+#define FMC_R_BASE_S (AHB4PERIPH_BASE_S + 0x1000400UL) /*!< FMC control registers base address */
+#define OCTOSPI1_R_BASE_S (AHB4PERIPH_BASE_S + 0x1001400UL) /*!< OCTOSPI1 control registers base address */
+#define DLYB_OCTOSPI1_BASE_S (AHB4PERIPH_BASE_S + 0x0F000UL)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_BASE_S (FMC_R_BASE_S + 0x0000UL)
+#define FMC_Bank1E_R_BASE_S (FMC_R_BASE_S + 0x0104UL)
+#define FMC_Bank3_R_BASE_S (FMC_R_BASE_S + 0x0080UL)
+
+/* Debug MCU registers base address */
+#define DBGMCU_BASE (0x44024000UL)
+#define PACKAGE_BASE (0x08FFF80EUL) /*!< Package data register base address */
+#define UID_BASE (0x08FFF800UL) /*!< Unique device ID register base address */
+#define FLASHSIZE_BASE (0x08FFF80CUL) /*!< Flash size data register base address */
+
+/* Internal Flash OTP Area */
+#define FLASH_OTP_BASE (0x08FFF000UL) /*!< FLASH OTP (one-time programmable) base address */
+#define FLASH_OTP_SIZE (0x800U) /*!< 2048 bytes OTP (one-time programmable) */
+
+/* Flash system Area */
+#define FLASH_SYSTEM_BASE_NS (0x0BF80000UL) /*!< FLASH System non-secure base address */
+#define FLASH_SYSTEM_BASE_S (0x0FF80000UL) /*!< FLASH System secure base address */
+#define FLASH_SYSTEM_SIZE (0x10000U) /*!< 64 Kbytes system Flash */
+
+/* Internal Flash EDATA Area */
+#define FLASH_EDATA_BASE_NS (0x09000000UL) /*!< FLASH high-cycle data non-secure base address */
+#define FLASH_EDATA_BASE_S (0x0D000000UL) /*!< FLASH high-cycle data secure base address */
+#define FLASH_EDATA_SIZE (0x18000U) /*!< 96 KB of Flash high-cycle data */
+
+/* Internal Flash OBK Area */
+#define FLASH_OBK_BASE_NS (0x0BFD0000UL) /*!< FLASH OBK (option byte keys) non-secure base address */
+#define FLASH_OBK_BASE_S (0x0FFD0000UL) /*!< FLASH OBK (option byte keys) secure base address */
+#define FLASH_OBK_SIZE (0x2000U) /*!< 8 KB of option byte keys */
+#define FLASH_OBK_HDPL0_SIZE (0x100U) /*!< 256 Bytes of HDPL1 option byte keys */
+
+#define FLASH_OBK_HDPL1_BASE_NS (FLASH_OBK_BASE_NS + FLASH_OBK_HDPL0_SIZE) /*!< FLASH OBK HDPL1 non-secure base address */
+#define FLASH_OBK_HDPL1_BASE_S (FLASH_OBK_BASE_S + FLASH_OBK_HDPL0_SIZE) /*!< FLASH OBK HDPL1 secure base address */
+#define FLASH_OBK_HDPL1_SIZE (0x800U) /*!< 2 KB of HDPL1 option byte keys */
+
+#define FLASH_OBK_HDPL2_BASE_NS (FLASH_OBK_HDPL1_BASE_NS + FLASH_OBK_HDPL1_SIZE) /*!< FLASH OBK HDPL2 non-secure base address */
+#define FLASH_OBK_HDPL2_BASE_S (FLASH_OBK_HDPL1_BASE_S + FLASH_OBK_HDPL1_SIZE) /*!< FLASH OBK HDPL2 secure base address */
+#define FLASH_OBK_HDPL2_SIZE (0x300U) /*!< 768 Bytes of HDPL2 option byte keys */
+
+#define FLASH_OBK_HDPL3_BASE_NS (FLASH_OBK_HDPL2_BASE_NS + FLASH_OBK_HDPL2_SIZE) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3_BASE_S (FLASH_OBK_HDPL2_BASE_S + FLASH_OBK_HDPL2_SIZE) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3_SIZE (0x13F0U) /*!< 5104 Bytes HDPL3 option byte keys */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+#define FLASH_OBK_HDPL3S_BASE_NS (FLASH_OBK_HDPL3_BASE_NS) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3S_BASE_S (FLASH_OBK_HDPL3_BASE_S) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3S_SIZE (0x0C00U) /*!< 3072 Bytes of secure HDPL3 option byte keys */
+
+#define FLASH_OBK_HDPL3NS_BASE_NS (FLASH_OBK_HDPL3_BASE_NS + FLASH_OBK_HDPL3S_SIZE) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3NS_BASE_S (FLASH_OBK_HDPL3_BASE_S + FLASH_OBK_HDPL3S_SIZE) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3NS_SIZE (FLASH_OBK_HDPL3_SIZE - FLASH_OBK_HDPL3S_SIZE) /*!< 2032 Bytes of non-secure HDPL3 option byte keys */
+#endif /* CMSE */
+
+/*!< Root Secure Service Library */
+/************ RSSLIB SAU system Flash region definition constants *************/
+#define RSSLIB_SYS_FLASH_NS_PFUNC_START (0xBF9FB68UL)
+#define RSSLIB_SYS_FLASH_NS_PFUNC_END (0xBF9FB84UL)
+
+/************ RSSLIB function return constants ********************************/
+#define RSSLIB_ERROR (0xF5F5F5F5UL)
+#define RSSLIB_SUCCESS (0xEAEAEAEAUL)
+
+/*!< RSSLIB pointer function structure address definition */
+#define RSSLIB_PFUNC_BASE (0xBF9FB68UL)
+#define RSSLIB_PFUNC ((RSSLIB_pFunc_TypeDef *)RSSLIB_PFUNC_BASE)
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level2 Function
+ * @detail This function increments HDP level up to HDP level 2
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl2_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl3_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it jumps to the non-secure reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl3NS_TypeDef)(uint32_t VectorTableAddr);
+
+/**
+ * @brief Input parameter definition of RSSLIB_DataProvisioning
+ */
+typedef struct
+{
+ uint32_t *pSource; /*!< Address of the Data to be provisioned, shall be in SRAM3 */
+ uint32_t *pDestination; /*!< Address in OBKeys sections where to provision Data */
+ uint32_t Size; /*!< Size in bytes of the Data to be provisioned*/
+ uint32_t DoEncryption; /*!< Notifies RSSLIB_DataProvisioning to encrypt or not Data*/
+ uint32_t Crc; /*!< CRC over full Data buffer and previous field in the structure*/
+} RSSLIB_DataProvisioningConf_t;
+
+/**
+ * @brief Prototype of RSSLIB Data Provisioning Function
+ * @detail This function write Data within OBKeys sections.
+ * @param pointer on the structure defining Data to be provisioned and where to
+ * provision them within OBKeys sections.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_NSC_DataProvisioning_TypeDef)(RSSLIB_DataProvisioningConf_t *pConfig);
+
+
+/**
+ * @brief RSSLib secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM RSSLIB_S_JumpHDPlvl2_TypeDef JumpHDPLvl2;
+ __IM RSSLIB_S_JumpHDPlvl3_TypeDef JumpHDPLvl3;
+ __IM RSSLIB_S_JumpHDPlvl3NS_TypeDef JumpHDPLvl3NS;
+} S_pFuncTypeDef;
+
+/**
+ * @brief RSSLib Non-secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM RSSLIB_NSC_DataProvisioning_TypeDef DataProvisioning;
+} NSC_pFuncTypeDef;
+
+/**
+ * @brief RSSLib function pointer structure
+ */
+typedef struct
+{
+ NSC_pFuncTypeDef NSC;
+ uint32_t RESERVED1[3];
+ S_pFuncTypeDef S;
+}RSSLIB_pFunc_TypeDef;
+
+/*!< Non Secure Service Library */
+/************ RSSLIB SAU system Flash region definition constants *************/
+#define NSSLIB_SYS_FLASH_NS_PFUNC_START (0xBF9FB6CUL)
+#define NSSLIB_SYS_FLASH_NS_PFUNC_END (0xBF9FB74UL)
+
+/************ RSSLIB function return constants ********************************/
+#define NSSLIB_ERROR (0xF5F5F5F5UL)
+#define NSSLIB_SUCCESS (0xEAEAEAEAUL)
+
+/*!< RSSLIB pointer function structure address definition */
+#define NSSLIB_PFUNC_BASE (0xBF9FB6CUL)
+#define NSSLIB_PFUNC ((NSSLIB_pFunc_TypeDef *)NSSLIB_PFUNC_BASE)
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level2 Function
+ * @detail This function increments HDP level up to HDP level 2
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval NSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*NSSLIB_S_JumpHDPlvl2_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval NSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*NSSLIB_S_JumpHDPlvl3_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief RSSLib secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM NSSLIB_S_JumpHDPlvl2_TypeDef JumpHDPLvl2;
+ __IM NSSLIB_S_JumpHDPlvl3_TypeDef JumpHDPLvl3;
+} NSSLIB_pFunc_TypeDef;
+
+
+/** @} */ /* End of group STM32H5xx_Peripheral_peripheralAddr */
+
+
+/* =========================================================================================================================== */
+/* ================ Peripheral declaration ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_Peripheral_declaration
+ * @{
+ */
+
+/*!< APB1 Non secure peripherals */
+#define TIM2_NS ((TIM_TypeDef *)TIM2_BASE_NS)
+#define TIM3_NS ((TIM_TypeDef *)TIM3_BASE_NS)
+#define TIM4_NS ((TIM_TypeDef *)TIM4_BASE_NS)
+#define TIM5_NS ((TIM_TypeDef *)TIM5_BASE_NS)
+#define TIM6_NS ((TIM_TypeDef *)TIM6_BASE_NS)
+#define TIM7_NS ((TIM_TypeDef *)TIM7_BASE_NS)
+#define TIM12_NS ((TIM_TypeDef *)TIM12_BASE_NS)
+#define TIM13_NS ((TIM_TypeDef *)TIM13_BASE_NS)
+#define TIM14_NS ((TIM_TypeDef *)TIM14_BASE_NS)
+#define WWDG_NS ((WWDG_TypeDef *)WWDG_BASE_NS)
+#define IWDG_NS ((IWDG_TypeDef *)IWDG_BASE_NS)
+#define SPI2_NS ((SPI_TypeDef *)SPI2_BASE_NS)
+#define SPI3_NS ((SPI_TypeDef *)SPI3_BASE_NS)
+#define USART2_NS ((USART_TypeDef *)USART2_BASE_NS)
+#define USART3_NS ((USART_TypeDef *)USART3_BASE_NS)
+#define UART4_NS ((USART_TypeDef *)UART4_BASE_NS)
+#define UART5_NS ((USART_TypeDef *)UART5_BASE_NS)
+#define I2C1_NS ((I2C_TypeDef *)I2C1_BASE_NS)
+#define I2C2_NS ((I2C_TypeDef *)I2C2_BASE_NS)
+#define I3C1_NS ((I3C_TypeDef *)I3C1_BASE_NS)
+#define CRS_NS ((CRS_TypeDef *)CRS_BASE_NS)
+#define USART6_NS ((USART_TypeDef *)USART6_BASE_NS)
+#define CEC_NS ((CEC_TypeDef *)CEC_BASE_NS)
+#define DTS_NS ((DTS_TypeDef *)DTS_BASE_NS)
+#define LPTIM2_NS ((LPTIM_TypeDef *)LPTIM2_BASE_NS)
+#define FDCAN1_NS ((FDCAN_GlobalTypeDef *)FDCAN1_BASE_NS)
+#define FDCAN_CONFIG_NS ((FDCAN_Config_TypeDef *)FDCAN_CONFIG_BASE_NS)
+#define FDCAN2_NS ((FDCAN_GlobalTypeDef *)FDCAN2_BASE_NS)
+#define UCPD1_NS ((UCPD_TypeDef *)UCPD1_BASE_NS)
+
+/*!< APB2 Non secure peripherals */
+#define TIM1_NS ((TIM_TypeDef *) TIM1_BASE_NS)
+#define SPI1_NS ((SPI_TypeDef *) SPI1_BASE_NS)
+#define TIM8_NS ((TIM_TypeDef *) TIM8_BASE_NS)
+#define USART1_NS ((USART_TypeDef *) USART1_BASE_NS)
+#define TIM15_NS ((TIM_TypeDef *) TIM15_BASE_NS)
+#define SPI4_NS ((SPI_TypeDef *) SPI4_BASE_NS)
+#define USB_DRD_FS_NS ((USB_DRD_TypeDef *) USB_DRD_BASE_NS)
+#define USB_DRD_PMA_BUFF_NS ((USB_DRD_PMABuffDescTypeDef *) USB_DRD_PMAADDR_NS)
+
+/*!< AHB1 Non secure peripherals */
+#define GPDMA1_NS ((DMA_TypeDef *) GPDMA1_BASE_NS)
+#define GPDMA2_NS ((DMA_TypeDef *) GPDMA2_BASE_NS)
+#define FLASH_NS ((FLASH_TypeDef *) FLASH_R_BASE_NS)
+#define CRC_NS ((CRC_TypeDef *) CRC_BASE_NS)
+#define RAMCFG_SRAM1_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM1_BASE_NS)
+#define RAMCFG_SRAM2_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM2_BASE_NS)
+#define RAMCFG_SRAM3_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM3_BASE_NS)
+#define RAMCFG_BKPRAM_NS ((RAMCFG_TypeDef *) RAMCFG_BKPRAM_BASE_NS)
+#define ICACHE_NS ((ICACHE_TypeDef *) ICACHE_BASE_NS)
+#define DCACHE1_NS ((DCACHE_TypeDef *) DCACHE1_BASE_NS)
+#define GTZC_TZSC1_NS ((GTZC_TZSC_TypeDef *) GTZC_TZSC1_BASE_NS)
+#define GTZC_TZIC1_NS ((GTZC_TZIC_TypeDef *) GTZC_TZIC1_BASE_NS)
+#define GTZC_MPCBB1_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB1_BASE_NS)
+#define GTZC_MPCBB2_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB2_BASE_NS)
+#define GTZC_MPCBB3_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB3_BASE_NS)
+#define GPDMA1_Channel0_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel0_BASE_NS)
+#define GPDMA1_Channel1_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel1_BASE_NS)
+#define GPDMA1_Channel2_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel2_BASE_NS)
+#define GPDMA1_Channel3_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel3_BASE_NS)
+#define GPDMA1_Channel4_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel4_BASE_NS)
+#define GPDMA1_Channel5_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel5_BASE_NS)
+#define GPDMA1_Channel6_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel6_BASE_NS)
+#define GPDMA1_Channel7_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel7_BASE_NS)
+#define GPDMA2_Channel0_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel0_BASE_NS)
+#define GPDMA2_Channel1_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel1_BASE_NS)
+#define GPDMA2_Channel2_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel2_BASE_NS)
+#define GPDMA2_Channel3_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel3_BASE_NS)
+#define GPDMA2_Channel4_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel4_BASE_NS)
+#define GPDMA2_Channel5_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel5_BASE_NS)
+#define GPDMA2_Channel6_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel6_BASE_NS)
+#define GPDMA2_Channel7_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel7_BASE_NS)
+
+/*!< AHB2 Non secure peripherals */
+#define GPIOA_NS ((GPIO_TypeDef *) GPIOA_BASE_NS)
+#define GPIOB_NS ((GPIO_TypeDef *) GPIOB_BASE_NS)
+#define GPIOC_NS ((GPIO_TypeDef *) GPIOC_BASE_NS)
+#define GPIOD_NS ((GPIO_TypeDef *) GPIOD_BASE_NS)
+#define GPIOE_NS ((GPIO_TypeDef *) GPIOE_BASE_NS)
+#define GPIOF_NS ((GPIO_TypeDef *) GPIOF_BASE_NS)
+#define GPIOG_NS ((GPIO_TypeDef *) GPIOG_BASE_NS)
+#define GPIOH_NS ((GPIO_TypeDef *) GPIOH_BASE_NS)
+#define ADC1_NS ((ADC_TypeDef *) ADC1_BASE_NS)
+#define ADC2_NS ((ADC_TypeDef *) ADC2_BASE_NS)
+#define ADC12_COMMON_NS ((ADC_Common_TypeDef *) ADC12_COMMON_BASE_NS)
+#define DAC1_NS ((DAC_TypeDef *) DAC1_BASE_NS)
+#define DCMI_NS ((DCMI_TypeDef *) DCMI_BASE_NS)
+#define PSSI_NS ((PSSI_TypeDef *) PSSI_BASE_NS)
+#define HASH_NS ((HASH_TypeDef *) HASH_BASE_NS)
+#define HASH_DIGEST_NS ((HASH_DIGEST_TypeDef *) HASH_DIGEST_BASE_NS)
+#define RNG_NS ((RNG_TypeDef *) RNG_BASE_NS)
+#define PKA_NS ((PKA_TypeDef *) PKA_BASE_NS)
+
+
+/*!< APB3 Non secure peripherals */
+#define SBS_NS ((SBS_TypeDef *) SBS_BASE_NS)
+#define LPUART1_NS ((USART_TypeDef *) LPUART1_BASE_NS)
+#define I2C3_NS ((I2C_TypeDef *) I2C3_BASE_NS)
+#define I3C2_NS ((I3C_TypeDef *) I3C2_BASE_NS)
+#define LPTIM1_NS ((LPTIM_TypeDef *) LPTIM1_BASE_NS)
+#define VREFBUF_NS ((VREFBUF_TypeDef *) VREFBUF_BASE_NS)
+#define RTC_NS ((RTC_TypeDef *) RTC_BASE_NS)
+#define TAMP_NS ((TAMP_TypeDef *) TAMP_BASE_NS)
+
+/*!< AHB3 Non secure peripherals */
+#define PWR_NS ((PWR_TypeDef *) PWR_BASE_NS)
+#define RCC_NS ((RCC_TypeDef *) RCC_BASE_NS)
+#define EXTI_NS ((EXTI_TypeDef *) EXTI_BASE_NS)
+
+/*!< AHB4 Non secure peripherals */
+#define SDMMC1_NS ((SDMMC_TypeDef *) SDMMC1_BASE_NS)
+#define DLYB_SDMMC1_NS ((DLYB_TypeDef *) DLYB_SDMMC1_BASE_NS)
+
+#define OCTOSPI1_NS ((OCTOSPI_TypeDef *) OCTOSPI1_R_BASE_NS)
+#define DLYB_OCTOSPI1_NS ((DLYB_TypeDef *) DLYB_OCTOSPI1_BASE_NS)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_NS ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE_NS)
+#define FMC_Bank1E_R_NS ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE_NS)
+#define FMC_Bank3_R_NS ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE_NS)
+
+/*!< APB1 Secure peripherals */
+#define TIM2_S ((TIM_TypeDef *)TIM2_BASE_S)
+#define TIM3_S ((TIM_TypeDef *)TIM3_BASE_S)
+#define TIM4_S ((TIM_TypeDef *)TIM4_BASE_S)
+#define TIM5_S ((TIM_TypeDef *)TIM5_BASE_S)
+#define TIM6_S ((TIM_TypeDef *)TIM6_BASE_S)
+#define TIM7_S ((TIM_TypeDef *)TIM7_BASE_S)
+#define TIM12_S ((TIM_TypeDef *)TIM12_BASE_S)
+#define WWDG_S ((WWDG_TypeDef *)WWDG_BASE_S)
+#define IWDG_S ((IWDG_TypeDef *)IWDG_BASE_S)
+#define SPI2_S ((SPI_TypeDef *)SPI2_BASE_S)
+#define SPI3_S ((SPI_TypeDef *)SPI3_BASE_S)
+#define USART2_S ((USART_TypeDef *)USART2_BASE_S)
+#define USART3_S ((USART_TypeDef *)USART3_BASE_S)
+#define UART4_S ((USART_TypeDef *)UART4_BASE_S)
+#define UART5_S ((USART_TypeDef *)UART5_BASE_S)
+#define I2C1_S ((I2C_TypeDef *)I2C1_BASE_S)
+#define I2C2_S ((I2C_TypeDef *)I2C2_BASE_S)
+#define I3C1_S ((I3C_TypeDef *)I3C1_BASE_S)
+#define CRS_S ((CRS_TypeDef *)CRS_BASE_S)
+#define USART6_S ((USART_TypeDef *)USART6_BASE_S)
+#define CEC_S ((CEC_TypeDef *)CEC_BASE_S)
+#define DTS_S ((DTS_TypeDef *)DTS_BASE_S)
+#define LPTIM2_S ((LPTIM_TypeDef *)LPTIM2_BASE_S)
+#define FDCAN1_S ((FDCAN_GlobalTypeDef *)FDCAN1_BASE_S)
+#define FDCAN_CONFIG_S ((FDCAN_Config_TypeDef *)FDCAN_CONFIG_BASE_S)
+#define FDCAN2_S ((FDCAN_GlobalTypeDef *)FDCAN2_BASE_S)
+#define UCPD1_S ((UCPD_TypeDef *)UCPD1_BASE_S)
+
+/*!< APB2 secure peripherals */
+#define TIM1_S ((TIM_TypeDef *) TIM1_BASE_S)
+#define SPI1_S ((SPI_TypeDef *) SPI1_BASE_S)
+#define TIM8_S ((TIM_TypeDef *) TIM8_BASE_S)
+#define USART1_S ((USART_TypeDef *) USART1_BASE_S)
+#define TIM15_S ((TIM_TypeDef *) TIM15_BASE_S)
+#define SPI4_S ((SPI_TypeDef *) SPI4_BASE_S)
+#define USB_DRD_FS_S ((USB_DRD_TypeDef *)USB_DRD_BASE_S)
+#define USB_DRD_PMA_BUFF_S ((USB_DRD_PMABuffDescTypeDef *) USB_DRD_PMAADDR_S)
+
+/*!< AHB1 secure peripherals */
+#define GPDMA1_S ((DMA_TypeDef *) GPDMA1_BASE_S)
+#define GPDMA2_S ((DMA_TypeDef *) GPDMA2_BASE_S)
+#define FLASH_S ((FLASH_TypeDef *) FLASH_R_BASE_S)
+#define CRC_S ((CRC_TypeDef *) CRC_BASE_S)
+#define RAMCFG_SRAM1_S ((RAMCFG_TypeDef *) RAMCFG_SRAM1_BASE_S)
+#define RAMCFG_SRAM2_S ((RAMCFG_TypeDef *) RAMCFG_SRAM2_BASE_S)
+#define RAMCFG_SRAM3_S ((RAMCFG_TypeDef *) RAMCFG_SRAM3_BASE_S)
+#define RAMCFG_BKPRAM_S ((RAMCFG_TypeDef *) RAMCFG_BKPRAM_BASE_S)
+#define ICACHE_S ((ICACHE_TypeDef *) ICACHE_BASE_S)
+#define DCACHE1_S ((DCACHE_TypeDef *) DCACHE1_BASE_S)
+#define GTZC_TZSC1_S ((GTZC_TZSC_TypeDef *) GTZC_TZSC1_BASE_S)
+#define GTZC_TZIC1_S ((GTZC_TZIC_TypeDef *) GTZC_TZIC1_BASE_S)
+#define GTZC_MPCBB1_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB1_BASE_S)
+#define GTZC_MPCBB2_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB2_BASE_S)
+#define GTZC_MPCBB3_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB3_BASE_S)
+#define GPDMA1_Channel0_S ((DMA_Channel_TypeDef *) GPDMA1_Channel0_BASE_S)
+#define GPDMA1_Channel1_S ((DMA_Channel_TypeDef *) GPDMA1_Channel1_BASE_S)
+#define GPDMA1_Channel2_S ((DMA_Channel_TypeDef *) GPDMA1_Channel2_BASE_S)
+#define GPDMA1_Channel3_S ((DMA_Channel_TypeDef *) GPDMA1_Channel3_BASE_S)
+#define GPDMA1_Channel4_S ((DMA_Channel_TypeDef *) GPDMA1_Channel4_BASE_S)
+#define GPDMA1_Channel5_S ((DMA_Channel_TypeDef *) GPDMA1_Channel5_BASE_S)
+#define GPDMA1_Channel6_S ((DMA_Channel_TypeDef *) GPDMA1_Channel6_BASE_S)
+#define GPDMA1_Channel7_S ((DMA_Channel_TypeDef *) GPDMA1_Channel7_BASE_S)
+#define GPDMA2_Channel0_S ((DMA_Channel_TypeDef *) GPDMA2_Channel0_BASE_S)
+#define GPDMA2_Channel1_S ((DMA_Channel_TypeDef *) GPDMA2_Channel1_BASE_S)
+#define GPDMA2_Channel2_S ((DMA_Channel_TypeDef *) GPDMA2_Channel2_BASE_S)
+#define GPDMA2_Channel3_S ((DMA_Channel_TypeDef *) GPDMA2_Channel3_BASE_S)
+#define GPDMA2_Channel4_S ((DMA_Channel_TypeDef *) GPDMA2_Channel4_BASE_S)
+#define GPDMA2_Channel5_S ((DMA_Channel_TypeDef *) GPDMA2_Channel5_BASE_S)
+#define GPDMA2_Channel6_S ((DMA_Channel_TypeDef *) GPDMA2_Channel6_BASE_S)
+#define GPDMA2_Channel7_S ((DMA_Channel_TypeDef *) GPDMA2_Channel7_BASE_S)
+
+
+/*!< AHB2 secure peripherals */
+#define GPIOA_S ((GPIO_TypeDef *) GPIOA_BASE_S)
+#define GPIOB_S ((GPIO_TypeDef *) GPIOB_BASE_S)
+#define GPIOC_S ((GPIO_TypeDef *) GPIOC_BASE_S)
+#define GPIOD_S ((GPIO_TypeDef *) GPIOD_BASE_S)
+#define GPIOE_S ((GPIO_TypeDef *) GPIOE_BASE_S)
+#define GPIOF_S ((GPIO_TypeDef *) GPIOF_BASE_S)
+#define GPIOG_S ((GPIO_TypeDef *) GPIOG_BASE_S)
+#define GPIOH_S ((GPIO_TypeDef *) GPIOH_BASE_S)
+#define ADC1_S ((ADC_TypeDef *) ADC1_BASE_S)
+#define ADC2_S ((ADC_TypeDef *) ADC2_BASE_S)
+#define ADC12_COMMON_S ((ADC_Common_TypeDef *) ADC12_COMMON_BASE_S)
+#define DAC1_S ((DAC_TypeDef *) DAC1_BASE_S)
+#define DCMI_S ((DCMI_TypeDef *) DCMI_BASE_S)
+#define PSSI_S ((PSSI_TypeDef *) PSSI_BASE_S)
+#define HASH_S ((HASH_TypeDef *) HASH_BASE_S)
+#define HASH_DIGEST_S ((HASH_DIGEST_TypeDef *) HASH_DIGEST_BASE_S)
+#define RNG_S ((RNG_TypeDef *) RNG_BASE_S)
+#define PKA_S ((PKA_TypeDef *) PKA_BASE_S)
+
+/*!< APB3 secure peripherals */
+#define SBS_S ((SBS_TypeDef *) SBS_BASE_S)
+#define LPUART1_S ((USART_TypeDef *) LPUART1_BASE_S)
+#define I2C3_S ((I2C_TypeDef *) I2C3_BASE_S)
+#define I3C2_S ((I3C_TypeDef *) I3C2_BASE_S)
+#define LPTIM1_S ((LPTIM_TypeDef *) LPTIM1_BASE_S)
+#define VREFBUF_S ((VREFBUF_TypeDef *) VREFBUF_BASE_S)
+#define RTC_S ((RTC_TypeDef *) RTC_BASE_S)
+#define TAMP_S ((TAMP_TypeDef *) TAMP_BASE_S)
+
+/*!< AHB3 Secure peripherals */
+#define PWR_S ((PWR_TypeDef *) PWR_BASE_S)
+#define RCC_S ((RCC_TypeDef *) RCC_BASE_S)
+#define EXTI_S ((EXTI_TypeDef *) EXTI_BASE_S)
+
+/*!< AHB4 secure peripherals */
+#define SDMMC1_S ((SDMMC_TypeDef *) SDMMC1_BASE_S)
+#define DLYB_SDMMC1_S ((DLYB_TypeDef *) DLYB_SDMMC1_BASE_S)
+
+#define FMC_Bank1_R_S ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE_S)
+#define FMC_Bank1E_R_S ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE_S)
+#define FMC_Bank3_R_S ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE_S)
+
+#define OCTOSPI1_S ((OCTOSPI_TypeDef *) OCTOSPI1_R_BASE_S)
+#define DLYB_OCTOSPI1_S ((DLYB_TypeDef *) DLYB_OCTOSPI1_BASE_S)
+
+#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE)
+
+/*!< Memory & Instance aliases and base addresses for Non-Secure/Secure peripherals */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+
+/*!< Memory base addresses for Secure peripherals */
+#define FLASH_BASE FLASH_BASE_S
+#define FLASH_OBK_BASE FLASH_OBK_BASE_S
+#define FLASH_EDATA_BASE FLASH_EDATA_BASE_S
+#define FLASH_SYSTEM_BASE FLASH_SYSTEM_BASE_S
+#define SRAM1_BASE SRAM1_BASE_S
+#define SRAM2_BASE SRAM2_BASE_S
+#define SRAM3_BASE SRAM3_BASE_S
+#define BKPSRAM_BASE BKPSRAM_BASE_S
+#define PERIPH_BASE PERIPH_BASE_S
+#define APB1PERIPH_BASE APB1PERIPH_BASE_S
+#define APB2PERIPH_BASE APB2PERIPH_BASE_S
+#define APB3PERIPH_BASE APB3PERIPH_BASE_S
+#define AHB1PERIPH_BASE AHB1PERIPH_BASE_S
+#define AHB2PERIPH_BASE AHB2PERIPH_BASE_S
+#define AHB3PERIPH_BASE AHB3PERIPH_BASE_S
+#define AHB4PERIPH_BASE AHB4PERIPH_BASE_S
+
+/*!< Instance aliases and base addresses for Secure peripherals */
+#define RCC RCC_S
+#define RCC_BASE RCC_BASE_S
+
+#define DCMI DCMI_S
+#define DCMI_BASE DCMI_BASE_S
+
+#define PSSI PSSI_S
+#define PSSI_BASE PSSI_BASE_S
+
+#define DTS DTS_S
+#define DTS_BASE DTS_BASE_S
+
+#define FLASH FLASH_S
+#define FLASH_R_BASE FLASH_R_BASE_S
+
+#define GPDMA1 GPDMA1_S
+#define GPDMA1_BASE GPDMA1_BASE_S
+
+#define GPDMA1_Channel0 GPDMA1_Channel0_S
+#define GPDMA1_Channel0_BASE GPDMA1_Channel0_BASE_S
+
+#define GPDMA1_Channel1 GPDMA1_Channel1_S
+#define GPDMA1_Channel1_BASE GPDMA1_Channel1_BASE_S
+
+#define GPDMA1_Channel2 GPDMA1_Channel2_S
+#define GPDMA1_Channel2_BASE GPDMA1_Channel2_BASE_S
+
+#define GPDMA1_Channel3 GPDMA1_Channel3_S
+#define GPDMA1_Channel3_BASE GPDMA1_Channel3_BASE_S
+
+#define GPDMA1_Channel4 GPDMA1_Channel4_S
+#define GPDMA1_Channel4_BASE GPDMA1_Channel4_BASE_S
+
+#define GPDMA1_Channel5 GPDMA1_Channel5_S
+#define GPDMA1_Channel5_BASE GPDMA1_Channel5_BASE_S
+
+#define GPDMA1_Channel6 GPDMA1_Channel6_S
+#define GPDMA1_Channel6_BASE GPDMA1_Channel6_BASE_S
+
+#define GPDMA1_Channel7 GPDMA1_Channel7_S
+#define GPDMA1_Channel7_BASE GPDMA1_Channel7_BASE_S
+
+#define GPDMA2 GPDMA2_S
+#define GPDMA2_BASE GPDMA2_BASE_S
+
+#define GPDMA2_Channel0 GPDMA2_Channel0_S
+#define GPDMA2_Channel0_BASE GPDMA2_Channel0_BASE_S
+
+#define GPDMA2_Channel1 GPDMA2_Channel1_S
+#define GPDMA2_Channel1_BASE GPDMA2_Channel1_BASE_S
+
+#define GPDMA2_Channel2 GPDMA2_Channel2_S
+#define GPDMA2_Channel2_BASE GPDMA2_Channel2_BASE_S
+
+#define GPDMA2_Channel3 GPDMA2_Channel3_S
+#define GPDMA2_Channel3_BASE GPDMA2_Channel3_BASE_S
+
+#define GPDMA2_Channel4 GPDMA2_Channel4_S
+#define GPDMA2_Channel4_BASE GPDMA2_Channel4_BASE_S
+
+#define GPDMA2_Channel5 GPDMA2_Channel5_S
+#define GPDMA2_Channel5_BASE GPDMA2_Channel5_BASE_S
+
+#define GPDMA2_Channel6 GPDMA2_Channel6_S
+#define GPDMA2_Channel6_BASE GPDMA2_Channel6_BASE_S
+
+#define GPDMA2_Channel7 GPDMA2_Channel7_S
+#define GPDMA2_Channel7_BASE GPDMA2_Channel7_BASE_S
+
+#define GPIOA GPIOA_S
+#define GPIOA_BASE GPIOA_BASE_S
+
+#define GPIOB GPIOB_S
+#define GPIOB_BASE GPIOB_BASE_S
+
+#define GPIOC GPIOC_S
+#define GPIOC_BASE GPIOC_BASE_S
+
+#define GPIOD GPIOD_S
+#define GPIOD_BASE GPIOD_BASE_S
+
+#define GPIOE GPIOE_S
+#define GPIOE_BASE GPIOE_BASE_S
+
+#define GPIOF GPIOF_S
+#define GPIOF_BASE GPIOF_BASE_S
+
+#define GPIOG GPIOG_S
+#define GPIOG_BASE GPIOG_BASE_S
+
+#define GPIOH GPIOH_S
+#define GPIOH_BASE GPIOH_BASE_S
+
+#define PWR PWR_S
+#define PWR_BASE PWR_BASE_S
+
+#define RAMCFG_SRAM1 RAMCFG_SRAM1_S
+#define RAMCFG_SRAM1_BASE RAMCFG_SRAM1_BASE_S
+
+#define RAMCFG_SRAM2 RAMCFG_SRAM2_S
+#define RAMCFG_SRAM2_BASE RAMCFG_SRAM2_BASE_S
+
+#define RAMCFG_SRAM3 RAMCFG_SRAM3_S
+#define RAMCFG_SRAM3_BASE RAMCFG_SRAM3_BASE_S
+
+#define RAMCFG_BKPRAM RAMCFG_BKPRAM_S
+#define RAMCFG_BKPRAM_BASE RAMCFG_BKPRAM_BASE_S
+
+#define EXTI EXTI_S
+#define EXTI_BASE EXTI_BASE_S
+
+#define ICACHE ICACHE_S
+#define ICACHE_BASE ICACHE_BASE_S
+
+#define DCACHE1 DCACHE1_S
+#define DCACHE1_BASE DCACHE1_BASE_S
+
+#define GTZC_TZSC1 GTZC_TZSC1_S
+#define GTZC_TZSC1_BASE GTZC_TZSC1_BASE_S
+
+#define GTZC_TZIC1 GTZC_TZIC1_S
+#define GTZC_TZIC1_BASE GTZC_TZIC1_BASE_S
+
+#define GTZC_MPCBB1 GTZC_MPCBB1_S
+#define GTZC_MPCBB1_BASE GTZC_MPCBB1_BASE_S
+
+#define GTZC_MPCBB2 GTZC_MPCBB2_S
+#define GTZC_MPCBB2_BASE GTZC_MPCBB2_BASE_S
+
+#define GTZC_MPCBB3 GTZC_MPCBB3_S
+#define GTZC_MPCBB3_BASE GTZC_MPCBB3_BASE_S
+
+#define RTC RTC_S
+#define RTC_BASE RTC_BASE_S
+
+#define TAMP TAMP_S
+#define TAMP_BASE TAMP_BASE_S
+
+#define TIM1 TIM1_S
+#define TIM1_BASE TIM1_BASE_S
+
+#define TIM2 TIM2_S
+#define TIM2_BASE TIM2_BASE_S
+
+#define TIM3 TIM3_S
+#define TIM3_BASE TIM3_BASE_S
+
+#define TIM4 TIM4_S
+#define TIM4_BASE TIM4_BASE_S
+
+#define TIM5 TIM5_S
+#define TIM5_BASE TIM5_BASE_S
+
+#define TIM6 TIM6_S
+#define TIM6_BASE TIM6_BASE_S
+
+#define TIM7 TIM7_S
+#define TIM7_BASE TIM7_BASE_S
+
+#define TIM8 TIM8_S
+#define TIM8_BASE TIM8_BASE_S
+
+#define TIM15 TIM15_S
+#define TIM15_BASE TIM15_BASE_S
+
+#define TIM12 TIM12_S
+#define TIM12_BASE TIM12_BASE_S
+
+#define WWDG WWDG_S
+#define WWDG_BASE WWDG_BASE_S
+
+#define IWDG IWDG_S
+#define IWDG_BASE IWDG_BASE_S
+
+#define SPI1 SPI1_S
+#define SPI1_BASE SPI1_BASE_S
+
+#define SPI2 SPI2_S
+#define SPI2_BASE SPI2_BASE_S
+
+#define SPI3 SPI3_S
+#define SPI3_BASE SPI3_BASE_S
+
+#define SPI4 SPI4_S
+#define SPI4_BASE SPI4_BASE_S
+
+#define USART1 USART1_S
+#define USART1_BASE USART1_BASE_S
+
+#define USART2 USART2_S
+#define USART2_BASE USART2_BASE_S
+
+#define USART3 USART3_S
+#define USART3_BASE USART3_BASE_S
+
+#define UART4 UART4_S
+#define UART4_BASE UART4_BASE_S
+
+#define UART5 UART5_S
+#define UART5_BASE UART5_BASE_S
+
+#define USART6 USART6_S
+#define USART6_BASE USART6_BASE_S
+
+#define CEC CEC_S
+#define CEC_BASE CEC_BASE_S
+
+#define I2C1 I2C1_S
+#define I2C1_BASE I2C1_BASE_S
+
+#define I2C2 I2C2_S
+#define I2C2_BASE I2C2_BASE_S
+
+#define I2C3 I2C3_S
+#define I2C3_BASE I2C3_BASE_S
+
+#define I3C1 I3C1_S
+#define I3C1_BASE I3C1_BASE_S
+
+#define I3C2 I3C2_S
+#define I3C2_BASE I3C2_BASE_S
+
+#define CRS CRS_S
+#define CRS_BASE CRS_BASE_S
+
+#define FDCAN1 FDCAN1_S
+#define FDCAN1_BASE FDCAN1_BASE_S
+
+#define FDCAN_CONFIG FDCAN_CONFIG_S
+#define FDCAN_CONFIG_BASE FDCAN_CONFIG_BASE_S
+#define SRAMCAN_BASE SRAMCAN_BASE_S
+
+#define FDCAN2 FDCAN2_S
+#define FDCAN2_BASE FDCAN2_BASE_S
+
+#define DAC1 DAC1_S
+#define DAC1_BASE DAC1_BASE_S
+
+#define LPTIM1 LPTIM1_S
+#define LPTIM1_BASE LPTIM1_BASE_S
+
+#define LPTIM2 LPTIM2_S
+#define LPTIM2_BASE LPTIM2_BASE_S
+
+#define LPUART1 LPUART1_S
+#define LPUART1_BASE LPUART1_BASE_S
+
+#define UCPD1 UCPD1_S
+#define UCPD1_BASE UCPD1_BASE_S
+
+#define SBS SBS_S
+#define SBS_BASE SBS_BASE_S
+
+#define VREFBUF VREFBUF_S
+#define VREFBUF_BASE VREFBUF_BASE_S
+
+#define USB_DRD_FS USB_DRD_FS_S
+#define USB_DRD_BASE USB_DRD_BASE_S
+#define USB_DRD_PMAADDR USB_DRD_PMAADDR_S
+#define USB_DRD_PMA_BUFF USB_DRD_PMA_BUFF_S
+
+#define CRC CRC_S
+#define CRC_BASE CRC_BASE_S
+
+#define ADC1 ADC1_S
+#define ADC1_BASE ADC1_BASE_S
+
+#define ADC2 ADC2_S
+#define ADC2_BASE ADC2_BASE_S
+
+#define ADC12_COMMON ADC12_COMMON_S
+#define ADC12_COMMON_BASE ADC12_COMMON_BASE_S
+
+#define HASH HASH_S
+#define HASH_BASE HASH_BASE_S
+
+#define HASH_DIGEST HASH_DIGEST_S
+#define HASH_DIGEST_BASE HASH_DIGEST_BASE_S
+
+#define RNG RNG_S
+#define RNG_BASE RNG_BASE_S
+
+#define PKA PKA_S
+#define PKA_BASE PKA_BASE_S
+#define PKA_RAM_BASE PKA_RAM_BASE_S
+
+
+#define SDMMC1 SDMMC1_S
+#define SDMMC1_BASE SDMMC1_BASE_S
+
+
+#define FMC_Bank1_R FMC_Bank1_R_S
+#define FMC_Bank1_R_BASE FMC_Bank1_R_BASE_S
+
+#define FMC_Bank1E_R FMC_Bank1E_R_S
+#define FMC_Bank1E_R_BASE FMC_Bank1E_R_BASE_S
+
+#define FMC_Bank3_R FMC_Bank3_R_S
+#define FMC_Bank3_R_BASE FMC_Bank3_R_BASE_S
+
+#define OCTOSPI1 OCTOSPI1_S
+#define OCTOSPI1_R_BASE OCTOSPI1_R_BASE_S
+
+#define DLYB_SDMMC1 DLYB_SDMMC1_S
+#define DLYB_SDMMC1_BASE DLYB_SDMMC1_BASE_S
+
+#define DLYB_OCTOSPI1 DLYB_OCTOSPI1_S
+#define DLYB_OCTOSPI1_BASE DLYB_OCTOSPI1_BASE_S
+
+#else
+
+/*!< Memory base addresses for Non secure peripherals */
+#define FLASH_BASE FLASH_BASE_NS
+#define FLASH_OBK_BASE FLASH_OBK_BASE_NS
+#define FLASH_EDATA_BASE FLASH_EDATA_BASE_NS
+#define FLASH_SYSTEM_BASE FLASH_SYSTEM_BASE_NS
+
+#define SRAM1_BASE SRAM1_BASE_NS
+#define SRAM2_BASE SRAM2_BASE_NS
+
+#define SRAM3_BASE SRAM3_BASE_NS
+#define BKPSRAM_BASE BKPSRAM_BASE_NS
+
+#define PERIPH_BASE PERIPH_BASE_NS
+#define APB1PERIPH_BASE APB1PERIPH_BASE_NS
+#define APB2PERIPH_BASE APB2PERIPH_BASE_NS
+#define APB3PERIPH_BASE APB3PERIPH_BASE_NS
+#define AHB1PERIPH_BASE AHB1PERIPH_BASE_NS
+#define AHB2PERIPH_BASE AHB2PERIPH_BASE_NS
+#define AHB3PERIPH_BASE AHB3PERIPH_BASE_NS
+#define AHB4PERIPH_BASE AHB4PERIPH_BASE_NS
+
+/*!< Instance aliases and base addresses for Non secure peripherals */
+#define RCC RCC_NS
+#define RCC_BASE RCC_BASE_NS
+
+#define DCMI DCMI_NS
+#define DCMI_BASE DCMI_BASE_NS
+
+#define PSSI PSSI_NS
+#define PSSI_BASE PSSI_BASE_NS
+
+#define DTS DTS_NS
+#define DTS_BASE DTS_BASE_NS
+
+#define FLASH FLASH_NS
+#define FLASH_R_BASE FLASH_R_BASE_NS
+
+#define GPDMA1 GPDMA1_NS
+#define GPDMA1_BASE GPDMA1_BASE_NS
+
+#define GPDMA1_Channel0 GPDMA1_Channel0_NS
+#define GPDMA1_Channel0_BASE GPDMA1_Channel0_BASE_NS
+
+#define GPDMA1_Channel1 GPDMA1_Channel1_NS
+#define GPDMA1_Channel1_BASE GPDMA1_Channel1_BASE_NS
+
+#define GPDMA1_Channel2 GPDMA1_Channel2_NS
+#define GPDMA1_Channel2_BASE GPDMA1_Channel2_BASE_NS
+
+#define GPDMA1_Channel3 GPDMA1_Channel3_NS
+#define GPDMA1_Channel3_BASE GPDMA1_Channel3_BASE_NS
+
+#define GPDMA1_Channel4 GPDMA1_Channel4_NS
+#define GPDMA1_Channel4_BASE GPDMA1_Channel4_BASE_NS
+
+#define GPDMA1_Channel5 GPDMA1_Channel5_NS
+#define GPDMA1_Channel5_BASE GPDMA1_Channel5_BASE_NS
+
+#define GPDMA1_Channel6 GPDMA1_Channel6_NS
+#define GPDMA1_Channel6_BASE GPDMA1_Channel6_BASE_NS
+
+#define GPDMA1_Channel7 GPDMA1_Channel7_NS
+#define GPDMA1_Channel7_BASE GPDMA1_Channel7_BASE_NS
+
+#define GPDMA2 GPDMA2_NS
+#define GPDMA2_BASE GPDMA2_BASE_NS
+
+#define GPDMA2_Channel0 GPDMA2_Channel0_NS
+#define GPDMA2_Channel0_BASE GPDMA2_Channel0_BASE_NS
+
+#define GPDMA2_Channel1 GPDMA2_Channel1_NS
+#define GPDMA2_Channel1_BASE GPDMA2_Channel1_BASE_NS
+
+#define GPDMA2_Channel2 GPDMA2_Channel2_NS
+#define GPDMA2_Channel2_BASE GPDMA2_Channel2_BASE_NS
+
+#define GPDMA2_Channel3 GPDMA2_Channel3_NS
+#define GPDMA2_Channel3_BASE GPDMA2_Channel3_BASE_NS
+
+#define GPDMA2_Channel4 GPDMA2_Channel4_NS
+#define GPDMA2_Channel4_BASE GPDMA2_Channel4_BASE_NS
+
+#define GPDMA2_Channel5 GPDMA2_Channel5_NS
+#define GPDMA2_Channel5_BASE GPDMA2_Channel5_BASE_NS
+
+#define GPDMA2_Channel6 GPDMA2_Channel6_NS
+#define GPDMA2_Channel6_BASE GPDMA2_Channel6_BASE_NS
+
+#define GPDMA2_Channel7 GPDMA2_Channel7_NS
+#define GPDMA2_Channel7_BASE GPDMA2_Channel7_BASE_NS
+
+#define GPIOA GPIOA_NS
+#define GPIOA_BASE GPIOA_BASE_NS
+
+#define GPIOB GPIOB_NS
+#define GPIOB_BASE GPIOB_BASE_NS
+
+#define GPIOC GPIOC_NS
+#define GPIOC_BASE GPIOC_BASE_NS
+
+#define GPIOD GPIOD_NS
+#define GPIOD_BASE GPIOD_BASE_NS
+
+#define GPIOE GPIOE_NS
+#define GPIOE_BASE GPIOE_BASE_NS
+
+#define GPIOF GPIOF_NS
+#define GPIOF_BASE GPIOF_BASE_NS
+
+#define GPIOG GPIOG_NS
+#define GPIOG_BASE GPIOG_BASE_NS
+
+#define GPIOH GPIOH_NS
+#define GPIOH_BASE GPIOH_BASE_NS
+
+#define PWR PWR_NS
+#define PWR_BASE PWR_BASE_NS
+
+#define RAMCFG_SRAM1 RAMCFG_SRAM1_NS
+#define RAMCFG_SRAM1_BASE RAMCFG_SRAM1_BASE_NS
+
+#define RAMCFG_SRAM2 RAMCFG_SRAM2_NS
+#define RAMCFG_SRAM2_BASE RAMCFG_SRAM2_BASE_NS
+
+#define RAMCFG_SRAM3 RAMCFG_SRAM3_NS
+#define RAMCFG_SRAM3_BASE RAMCFG_SRAM3_BASE_NS
+
+#define RAMCFG_BKPRAM RAMCFG_BKPRAM_NS
+#define RAMCFG_BKPRAM_BASE RAMCFG_BKPRAM_BASE_NS
+
+#define EXTI EXTI_NS
+#define EXTI_BASE EXTI_BASE_NS
+
+#define ICACHE ICACHE_NS
+#define ICACHE_BASE ICACHE_BASE_NS
+
+#define DCACHE1 DCACHE1_NS
+#define DCACHE1_BASE DCACHE1_BASE_NS
+
+#define GTZC_TZSC1 GTZC_TZSC1_NS
+#define GTZC_TZSC1_BASE GTZC_TZSC1_BASE_NS
+
+#define GTZC_TZIC1 GTZC_TZIC1_NS
+#define GTZC_TZIC1_BASE GTZC_TZIC1_BASE_NS
+
+#define GTZC_MPCBB1 GTZC_MPCBB1_NS
+#define GTZC_MPCBB1_BASE GTZC_MPCBB1_BASE_NS
+
+#define GTZC_MPCBB2 GTZC_MPCBB2_NS
+#define GTZC_MPCBB2_BASE GTZC_MPCBB2_BASE_NS
+
+#define GTZC_MPCBB3 GTZC_MPCBB3_NS
+#define GTZC_MPCBB3_BASE GTZC_MPCBB3_BASE_NS
+
+#define RTC RTC_NS
+#define RTC_BASE RTC_BASE_NS
+
+#define TAMP TAMP_NS
+#define TAMP_BASE TAMP_BASE_NS
+
+#define TIM1 TIM1_NS
+#define TIM1_BASE TIM1_BASE_NS
+
+#define TIM2 TIM2_NS
+#define TIM2_BASE TIM2_BASE_NS
+
+#define TIM3 TIM3_NS
+#define TIM3_BASE TIM3_BASE_NS
+
+#define TIM4 TIM4_NS
+#define TIM4_BASE TIM4_BASE_NS
+
+#define TIM5 TIM5_NS
+#define TIM5_BASE TIM5_BASE_NS
+
+#define TIM6 TIM6_NS
+#define TIM6_BASE TIM6_BASE_NS
+
+#define TIM7 TIM7_NS
+#define TIM7_BASE TIM7_BASE_NS
+
+#define TIM8 TIM8_NS
+#define TIM8_BASE TIM8_BASE_NS
+
+#define TIM12 TIM12_NS
+#define TIM12_BASE TIM12_BASE_NS
+
+#define TIM15 TIM15_NS
+#define TIM15_BASE TIM15_BASE_NS
+
+#define WWDG WWDG_NS
+#define WWDG_BASE WWDG_BASE_NS
+
+#define IWDG IWDG_NS
+#define IWDG_BASE IWDG_BASE_NS
+
+#define SPI1 SPI1_NS
+#define SPI1_BASE SPI1_BASE_NS
+
+#define SPI2 SPI2_NS
+#define SPI2_BASE SPI2_BASE_NS
+
+#define SPI3 SPI3_NS
+#define SPI3_BASE SPI3_BASE_NS
+
+#define SPI4 SPI4_NS
+#define SPI4_BASE SPI4_BASE_NS
+
+#define USART1 USART1_NS
+#define USART1_BASE USART1_BASE_NS
+
+#define USART2 USART2_NS
+#define USART2_BASE USART2_BASE_NS
+
+#define USART3 USART3_NS
+#define USART3_BASE USART3_BASE_NS
+
+#define UART4 UART4_NS
+#define UART4_BASE UART4_BASE_NS
+
+#define UART5 UART5_NS
+#define UART5_BASE UART5_BASE_NS
+
+#define USART6 USART6_NS
+#define USART6_BASE USART6_BASE_NS
+
+#define CEC CEC_NS
+#define CEC_BASE CEC_BASE_NS
+
+#define I2C1 I2C1_NS
+#define I2C1_BASE I2C1_BASE_NS
+
+#define I2C2 I2C2_NS
+#define I2C2_BASE I2C2_BASE_NS
+
+#define I2C3 I2C3_NS
+#define I2C3_BASE I2C3_BASE_NS
+
+#define I3C1 I3C1_NS
+#define I3C1_BASE I3C1_BASE_NS
+
+#define I3C2 I3C2_NS
+#define I3C2_BASE I3C2_BASE_NS
+
+#define CRS CRS_NS
+#define CRS_BASE CRS_BASE_NS
+
+#define FDCAN1 FDCAN1_NS
+#define FDCAN1_BASE FDCAN1_BASE_NS
+
+#define FDCAN_CONFIG FDCAN_CONFIG_NS
+#define FDCAN_CONFIG_BASE FDCAN_CONFIG_BASE_NS
+#define SRAMCAN_BASE SRAMCAN_BASE_NS
+
+#define FDCAN2 FDCAN2_NS
+#define FDCAN2_BASE FDCAN2_BASE_NS
+
+#define DAC1 DAC1_NS
+#define DAC1_BASE DAC1_BASE_NS
+
+#define LPTIM1 LPTIM1_NS
+#define LPTIM1_BASE LPTIM1_BASE_NS
+
+#define LPTIM2 LPTIM2_NS
+#define LPTIM2_BASE LPTIM2_BASE_NS
+
+#define LPUART1 LPUART1_NS
+#define LPUART1_BASE LPUART1_BASE_NS
+
+#define UCPD1 UCPD1_NS
+#define UCPD1_BASE UCPD1_BASE_NS
+
+#define SBS SBS_NS
+#define SBS_BASE SBS_BASE_NS
+
+#define VREFBUF VREFBUF_NS
+#define VREFBUF_BASE VREFBUF_BASE_NS
+
+#define USB_DRD_FS USB_DRD_FS_NS
+#define USB_DRD_BASE USB_DRD_BASE_NS
+#define USB_DRD_PMAADDR USB_DRD_PMAADDR_NS
+#define USB_DRD_PMA_BUFF USB_DRD_PMA_BUFF_NS
+
+#define CRC CRC_NS
+#define CRC_BASE CRC_BASE_NS
+
+#define ADC1 ADC1_NS
+#define ADC1_BASE ADC1_BASE_NS
+
+#define ADC2 ADC2_NS
+#define ADC2_BASE ADC2_BASE_NS
+
+#define ADC12_COMMON ADC12_COMMON_NS
+#define ADC12_COMMON_BASE ADC12_COMMON_BASE_NS
+
+#define HASH HASH_NS
+#define HASH_BASE HASH_BASE_NS
+
+#define HASH_DIGEST HASH_DIGEST_NS
+#define HASH_DIGEST_BASE HASH_DIGEST_BASE_NS
+
+#define RNG RNG_NS
+#define RNG_BASE RNG_BASE_NS
+
+#define PKA PKA_NS
+#define PKA_BASE PKA_BASE_NS
+#define PKA_RAM_BASE PKA_RAM_BASE_NS
+
+
+
+#define SDMMC1 SDMMC1_NS
+#define SDMMC1_BASE SDMMC1_BASE_NS
+
+
+#define FMC_Bank1_R FMC_Bank1_R_NS
+#define FMC_Bank1_R_BASE FMC_Bank1_R_BASE_NS
+
+#define FMC_Bank1E_R FMC_Bank1E_R_NS
+#define FMC_Bank1E_R_BASE FMC_Bank1E_R_BASE_NS
+
+#define FMC_Bank3_R FMC_Bank3_R_NS
+#define FMC_Bank3_R_BASE FMC_Bank3_R_BASE_NS
+
+#define OCTOSPI1 OCTOSPI1_NS
+#define OCTOSPI1_R_BASE OCTOSPI1_R_BASE_NS
+
+#define DLYB_SDMMC1 DLYB_SDMMC1_NS
+#define DLYB_SDMMC1_BASE DLYB_SDMMC1_BASE_NS
+
+#define DLYB_OCTOSPI1 DLYB_OCTOSPI1_NS
+#define DLYB_OCTOSPI1_BASE DLYB_OCTOSPI1_BASE_NS
+
+#endif
+
+
+/******************************************************************************/
+/* */
+/* Analog to Digital Converter */
+/* */
+/******************************************************************************/
+#define ADC_MULTIMODE_SUPPORT /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */
+/******************** Bit definition for ADC_ISR register *******************/
+#define ADC_ISR_ADRDY_Pos (0U)
+#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */
+#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */
+#define ADC_ISR_EOSMP_Pos (1U)
+#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */
+#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */
+#define ADC_ISR_EOC_Pos (2U)
+#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */
+#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */
+#define ADC_ISR_EOS_Pos (3U)
+#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */
+#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */
+#define ADC_ISR_OVR_Pos (4U)
+#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */
+#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */
+#define ADC_ISR_JEOC_Pos (5U)
+#define ADC_ISR_JEOC_Msk (0x1UL << ADC_ISR_JEOC_Pos) /*!< 0x00000020 */
+#define ADC_ISR_JEOC ADC_ISR_JEOC_Msk /*!< ADC group injected end of unitary conversion flag */
+#define ADC_ISR_JEOS_Pos (6U)
+#define ADC_ISR_JEOS_Msk (0x1UL << ADC_ISR_JEOS_Pos) /*!< 0x00000040 */
+#define ADC_ISR_JEOS ADC_ISR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */
+#define ADC_ISR_AWD1_Pos (7U)
+#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */
+#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */
+#define ADC_ISR_AWD2_Pos (8U)
+#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */
+#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */
+#define ADC_ISR_AWD3_Pos (9U)
+#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */
+#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */
+#define ADC_ISR_JQOVF_Pos (10U)
+#define ADC_ISR_JQOVF_Msk (0x1UL << ADC_ISR_JQOVF_Pos) /*!< 0x00000400 */
+#define ADC_ISR_JQOVF ADC_ISR_JQOVF_Msk /*!< ADC group injected contexts queue overflow flag */
+
+/******************** Bit definition for ADC_IER register *******************/
+#define ADC_IER_ADRDYIE_Pos (0U)
+#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */
+#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */
+#define ADC_IER_EOSMPIE_Pos (1U)
+#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */
+#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */
+#define ADC_IER_EOCIE_Pos (2U)
+#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */
+#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */
+#define ADC_IER_EOSIE_Pos (3U)
+#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */
+#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */
+#define ADC_IER_OVRIE_Pos (4U)
+#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */
+#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */
+#define ADC_IER_JEOCIE_Pos (5U)
+#define ADC_IER_JEOCIE_Msk (0x1UL << ADC_IER_JEOCIE_Pos) /*!< 0x00000020 */
+#define ADC_IER_JEOCIE ADC_IER_JEOCIE_Msk /*!< ADC group injected end of unitary conversion interrupt */
+#define ADC_IER_JEOSIE_Pos (6U)
+#define ADC_IER_JEOSIE_Msk (0x1UL << ADC_IER_JEOSIE_Pos) /*!< 0x00000040 */
+#define ADC_IER_JEOSIE ADC_IER_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */
+#define ADC_IER_AWD1IE_Pos (7U)
+#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */
+#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */
+#define ADC_IER_AWD2IE_Pos (8U)
+#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */
+#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */
+#define ADC_IER_AWD3IE_Pos (9U)
+#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */
+#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */
+#define ADC_IER_JQOVFIE_Pos (10U)
+#define ADC_IER_JQOVFIE_Msk (0x1UL << ADC_IER_JQOVFIE_Pos) /*!< 0x00000400 */
+#define ADC_IER_JQOVFIE ADC_IER_JQOVFIE_Msk /*!< ADC group injected contexts queue overflow interrupt */
+
+/******************** Bit definition for ADC_CR register ********************/
+#define ADC_CR_ADEN_Pos (0U)
+#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */
+#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */
+#define ADC_CR_ADDIS_Pos (1U)
+#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */
+#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */
+#define ADC_CR_ADSTART_Pos (2U)
+#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */
+#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */
+#define ADC_CR_JADSTART_Pos (3U)
+#define ADC_CR_JADSTART_Msk (0x1UL << ADC_CR_JADSTART_Pos) /*!< 0x00000008 */
+#define ADC_CR_JADSTART ADC_CR_JADSTART_Msk /*!< ADC group injected conversion start */
+#define ADC_CR_ADSTP_Pos (4U)
+#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */
+#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */
+#define ADC_CR_JADSTP_Pos (5U)
+#define ADC_CR_JADSTP_Msk (0x1UL << ADC_CR_JADSTP_Pos) /*!< 0x00000020 */
+#define ADC_CR_JADSTP ADC_CR_JADSTP_Msk /*!< ADC group injected conversion stop */
+#define ADC_CR_ADVREGEN_Pos (28U)
+#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */
+#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */
+#define ADC_CR_DEEPPWD_Pos (29U)
+#define ADC_CR_DEEPPWD_Msk (0x1UL << ADC_CR_DEEPPWD_Pos) /*!< 0x20000000 */
+#define ADC_CR_DEEPPWD ADC_CR_DEEPPWD_Msk /*!< ADC deep power down enable */
+#define ADC_CR_ADCALDIF_Pos (30U)
+#define ADC_CR_ADCALDIF_Msk (0x1UL << ADC_CR_ADCALDIF_Pos) /*!< 0x40000000 */
+#define ADC_CR_ADCALDIF ADC_CR_ADCALDIF_Msk /*!< ADC differential mode for calibration */
+#define ADC_CR_ADCAL_Pos (31U)
+#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */
+#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */
+
+/******************** Bit definition for ADC_CFGR register ******************/
+#define ADC_CFGR_DMAEN_Pos (0U)
+#define ADC_CFGR_DMAEN_Msk (0x1UL << ADC_CFGR_DMAEN_Pos) /*!< 0x00000001 */
+#define ADC_CFGR_DMAEN ADC_CFGR_DMAEN_Msk /*!< ADC DMA transfer enable */
+#define ADC_CFGR_DMACFG_Pos (1U)
+#define ADC_CFGR_DMACFG_Msk (0x1UL << ADC_CFGR_DMACFG_Pos) /*!< 0x00000002 */
+#define ADC_CFGR_DMACFG ADC_CFGR_DMACFG_Msk /*!< ADC DMA transfer configuration */
+
+#define ADC_CFGR_RES_Pos (3U)
+#define ADC_CFGR_RES_Msk (0x3UL << ADC_CFGR_RES_Pos) /*!< 0x00000018 */
+#define ADC_CFGR_RES ADC_CFGR_RES_Msk /*!< ADC data resolution */
+#define ADC_CFGR_RES_0 (0x1UL << ADC_CFGR_RES_Pos) /*!< 0x00000008 */
+#define ADC_CFGR_RES_1 (0x2UL << ADC_CFGR_RES_Pos) /*!< 0x00000010 */
+
+#define ADC_CFGR_EXTSEL_Pos (5U)
+#define ADC_CFGR_EXTSEL_Msk (0x1FUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003E0 */
+#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */
+#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000020 */
+#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */
+#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */
+#define ADC_CFGR_EXTSEL_3 (0x8UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */
+#define ADC_CFGR_EXTSEL_4 (0x10UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000200 */
+
+#define ADC_CFGR_EXTEN_Pos (10U)
+#define ADC_CFGR_EXTEN_Msk (0x3UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000C00 */
+#define ADC_CFGR_EXTEN ADC_CFGR_EXTEN_Msk /*!< ADC group regular external trigger polarity */
+#define ADC_CFGR_EXTEN_0 (0x1UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000400 */
+#define ADC_CFGR_EXTEN_1 (0x2UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000800 */
+
+#define ADC_CFGR_OVRMOD_Pos (12U)
+#define ADC_CFGR_OVRMOD_Msk (0x1UL << ADC_CFGR_OVRMOD_Pos) /*!< 0x00001000 */
+#define ADC_CFGR_OVRMOD ADC_CFGR_OVRMOD_Msk /*!< ADC group regular overrun configuration */
+#define ADC_CFGR_CONT_Pos (13U)
+#define ADC_CFGR_CONT_Msk (0x1UL << ADC_CFGR_CONT_Pos) /*!< 0x00002000 */
+#define ADC_CFGR_CONT ADC_CFGR_CONT_Msk /*!< ADC group regular continuous conversion mode */
+#define ADC_CFGR_AUTDLY_Pos (14U)
+#define ADC_CFGR_AUTDLY_Msk (0x1UL << ADC_CFGR_AUTDLY_Pos) /*!< 0x00004000 */
+#define ADC_CFGR_AUTDLY ADC_CFGR_AUTDLY_Msk /*!< ADC low power auto wait */
+#define ADC_CFGR_ALIGN_Pos (15U)
+#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00008000 */
+#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignment */
+#define ADC_CFGR_DISCEN_Pos (16U)
+#define ADC_CFGR_DISCEN_Msk (0x1UL << ADC_CFGR_DISCEN_Pos) /*!< 0x00010000 */
+#define ADC_CFGR_DISCEN ADC_CFGR_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */
+
+#define ADC_CFGR_DISCNUM_Pos (17U)
+#define ADC_CFGR_DISCNUM_Msk (0x7UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x000E0000 */
+#define ADC_CFGR_DISCNUM ADC_CFGR_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */
+#define ADC_CFGR_DISCNUM_0 (0x1UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00020000 */
+#define ADC_CFGR_DISCNUM_1 (0x2UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00040000 */
+#define ADC_CFGR_DISCNUM_2 (0x4UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00080000 */
+
+#define ADC_CFGR_JDISCEN_Pos (20U)
+#define ADC_CFGR_JDISCEN_Msk (0x1UL << ADC_CFGR_JDISCEN_Pos) /*!< 0x00100000 */
+#define ADC_CFGR_JDISCEN ADC_CFGR_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */
+#define ADC_CFGR_JQM_Pos (21U)
+#define ADC_CFGR_JQM_Msk (0x1UL << ADC_CFGR_JQM_Pos) /*!< 0x00200000 */
+#define ADC_CFGR_JQM ADC_CFGR_JQM_Msk /*!< ADC group injected contexts queue mode */
+#define ADC_CFGR_AWD1SGL_Pos (22U)
+#define ADC_CFGR_AWD1SGL_Msk (0x1UL << ADC_CFGR_AWD1SGL_Pos) /*!< 0x00400000 */
+#define ADC_CFGR_AWD1SGL ADC_CFGR_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */
+#define ADC_CFGR_AWD1EN_Pos (23U)
+#define ADC_CFGR_AWD1EN_Msk (0x1UL << ADC_CFGR_AWD1EN_Pos) /*!< 0x00800000 */
+#define ADC_CFGR_AWD1EN ADC_CFGR_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */
+#define ADC_CFGR_JAWD1EN_Pos (24U)
+#define ADC_CFGR_JAWD1EN_Msk (0x1UL << ADC_CFGR_JAWD1EN_Pos) /*!< 0x01000000 */
+#define ADC_CFGR_JAWD1EN ADC_CFGR_JAWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */
+#define ADC_CFGR_JAUTO_Pos (25U)
+#define ADC_CFGR_JAUTO_Msk (0x1UL << ADC_CFGR_JAUTO_Pos) /*!< 0x02000000 */
+#define ADC_CFGR_JAUTO ADC_CFGR_JAUTO_Msk /*!< ADC group injected automatic trigger mode */
+
+#define ADC_CFGR_AWD1CH_Pos (26U)
+#define ADC_CFGR_AWD1CH_Msk (0x1FUL << ADC_CFGR_AWD1CH_Pos) /*!< 0x7C000000 */
+#define ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */
+#define ADC_CFGR_AWD1CH_0 (0x01UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x04000000 */
+#define ADC_CFGR_AWD1CH_1 (0x02UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x08000000 */
+#define ADC_CFGR_AWD1CH_2 (0x04UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x10000000 */
+#define ADC_CFGR_AWD1CH_3 (0x08UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x20000000 */
+#define ADC_CFGR_AWD1CH_4 (0x10UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x40000000 */
+
+#define ADC_CFGR_JQDIS_Pos (31U)
+#define ADC_CFGR_JQDIS_Msk (0x1UL << ADC_CFGR_JQDIS_Pos) /*!< 0x80000000 */
+#define ADC_CFGR_JQDIS ADC_CFGR_JQDIS_Msk /*!< ADC group injected contexts queue disable */
+
+/******************** Bit definition for ADC_CFGR2 register *****************/
+#define ADC_CFGR2_ROVSE_Pos (0U)
+#define ADC_CFGR2_ROVSE_Msk (0x1UL << ADC_CFGR2_ROVSE_Pos) /*!< 0x00000001 */
+#define ADC_CFGR2_ROVSE ADC_CFGR2_ROVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */
+#define ADC_CFGR2_JOVSE_Pos (1U)
+#define ADC_CFGR2_JOVSE_Msk (0x1UL << ADC_CFGR2_JOVSE_Pos) /*!< 0x00000002 */
+#define ADC_CFGR2_JOVSE ADC_CFGR2_JOVSE_Msk /*!< ADC oversampler enable on scope ADC group injected */
+
+#define ADC_CFGR2_OVSR_Pos (2U)
+#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */
+#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */
+#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */
+#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */
+#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */
+
+#define ADC_CFGR2_OVSS_Pos (5U)
+#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */
+#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */
+#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */
+#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */
+#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */
+#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */
+
+#define ADC_CFGR2_TROVS_Pos (9U)
+#define ADC_CFGR2_TROVS_Msk (0x1UL << ADC_CFGR2_TROVS_Pos) /*!< 0x00000200 */
+#define ADC_CFGR2_TROVS ADC_CFGR2_TROVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */
+#define ADC_CFGR2_ROVSM_Pos (10U)
+#define ADC_CFGR2_ROVSM_Msk (0x1UL << ADC_CFGR2_ROVSM_Pos) /*!< 0x00000400 */
+#define ADC_CFGR2_ROVSM ADC_CFGR2_ROVSM_Msk /*!< ADC oversampling mode managing interlaced conversions of ADC group regular and group injected */
+
+#define ADC_CFGR2_GCOMP_Pos (16U)
+#define ADC_CFGR2_GCOMP_Msk (0x1UL << ADC_CFGR2_GCOMP_Pos) /*!< 0x00010000 */
+#define ADC_CFGR2_GCOMP ADC_CFGR2_GCOMP_Msk /*!< ADC Gain Compensation mode */
+
+#define ADC_CFGR2_SWTRIG_Pos (25U)
+#define ADC_CFGR2_SWTRIG_Msk (0x1UL << ADC_CFGR2_SWTRIG_Pos) /*!< 0x02000000 */
+#define ADC_CFGR2_SWTRIG ADC_CFGR2_SWTRIG_Msk /*!< ADC Software Trigger Bit for Sample time control trigger mode */
+#define ADC_CFGR2_BULB_Pos (26U)
+#define ADC_CFGR2_BULB_Msk (0x1UL << ADC_CFGR2_BULB_Pos) /*!< 0x04000000 */
+#define ADC_CFGR2_BULB ADC_CFGR2_BULB_Msk /*!< ADC Bulb sampling mode */
+#define ADC_CFGR2_SMPTRIG_Pos (27U)
+#define ADC_CFGR2_SMPTRIG_Msk (0x1UL << ADC_CFGR2_SMPTRIG_Pos) /*!< 0x08000000 */
+#define ADC_CFGR2_SMPTRIG ADC_CFGR2_SMPTRIG_Msk /*!< ADC Sample Time Control Trigger mode */
+
+#define ADC_CFGR2_LFTRIG_Pos (29U)
+#define ADC_CFGR2_LFTRIG_Msk (0x1UL << ADC_CFGR2_LFTRIG_Pos) /*!< 0x20000000 */
+#define ADC_CFGR2_LFTRIG ADC_CFGR2_LFTRIG_Msk /*!< ADC Low Frequency Trigger */
+
+/******************** Bit definition for ADC_SMPR1 register *****************/
+#define ADC_SMPR1_SMP0_Pos (0U)
+#define ADC_SMPR1_SMP0_Msk (0x7UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000007 */
+#define ADC_SMPR1_SMP0 ADC_SMPR1_SMP0_Msk /*!< ADC channel 0 sampling time selection */
+#define ADC_SMPR1_SMP0_0 (0x1UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000001 */
+#define ADC_SMPR1_SMP0_1 (0x2UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000002 */
+#define ADC_SMPR1_SMP0_2 (0x4UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000004 */
+
+#define ADC_SMPR1_SMP1_Pos (3U)
+#define ADC_SMPR1_SMP1_Msk (0x7UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000038 */
+#define ADC_SMPR1_SMP1 ADC_SMPR1_SMP1_Msk /*!< ADC channel 1 sampling time selection */
+#define ADC_SMPR1_SMP1_0 (0x1UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000008 */
+#define ADC_SMPR1_SMP1_1 (0x2UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000010 */
+#define ADC_SMPR1_SMP1_2 (0x4UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000020 */
+
+#define ADC_SMPR1_SMP2_Pos (6U)
+#define ADC_SMPR1_SMP2_Msk (0x7UL << ADC_SMPR1_SMP2_Pos) /*!< 0x000001C0 */
+#define ADC_SMPR1_SMP2 ADC_SMPR1_SMP2_Msk /*!< ADC channel 2 sampling time selection */
+#define ADC_SMPR1_SMP2_0 (0x1UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000040 */
+#define ADC_SMPR1_SMP2_1 (0x2UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000080 */
+#define ADC_SMPR1_SMP2_2 (0x4UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000100 */
+
+#define ADC_SMPR1_SMP3_Pos (9U)
+#define ADC_SMPR1_SMP3_Msk (0x7UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000E00 */
+#define ADC_SMPR1_SMP3 ADC_SMPR1_SMP3_Msk /*!< ADC channel 3 sampling time selection */
+#define ADC_SMPR1_SMP3_0 (0x1UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000200 */
+#define ADC_SMPR1_SMP3_1 (0x2UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000400 */
+#define ADC_SMPR1_SMP3_2 (0x4UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000800 */
+
+#define ADC_SMPR1_SMP4_Pos (12U)
+#define ADC_SMPR1_SMP4_Msk (0x7UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00007000 */
+#define ADC_SMPR1_SMP4 ADC_SMPR1_SMP4_Msk /*!< ADC channel 4 sampling time selection */
+#define ADC_SMPR1_SMP4_0 (0x1UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00001000 */
+#define ADC_SMPR1_SMP4_1 (0x2UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00002000 */
+#define ADC_SMPR1_SMP4_2 (0x4UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00004000 */
+
+#define ADC_SMPR1_SMP5_Pos (15U)
+#define ADC_SMPR1_SMP5_Msk (0x7UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00038000 */
+#define ADC_SMPR1_SMP5 ADC_SMPR1_SMP5_Msk /*!< ADC channel 5 sampling time selection */
+#define ADC_SMPR1_SMP5_0 (0x1UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00008000 */
+#define ADC_SMPR1_SMP5_1 (0x2UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00010000 */
+#define ADC_SMPR1_SMP5_2 (0x4UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00020000 */
+
+#define ADC_SMPR1_SMP6_Pos (18U)
+#define ADC_SMPR1_SMP6_Msk (0x7UL << ADC_SMPR1_SMP6_Pos) /*!< 0x001C0000 */
+#define ADC_SMPR1_SMP6 ADC_SMPR1_SMP6_Msk /*!< ADC channel 6 sampling time selection */
+#define ADC_SMPR1_SMP6_0 (0x1UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00040000 */
+#define ADC_SMPR1_SMP6_1 (0x2UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00080000 */
+#define ADC_SMPR1_SMP6_2 (0x4UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00100000 */
+
+#define ADC_SMPR1_SMP7_Pos (21U)
+#define ADC_SMPR1_SMP7_Msk (0x7UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00E00000 */
+#define ADC_SMPR1_SMP7 ADC_SMPR1_SMP7_Msk /*!< ADC channel 7 sampling time selection */
+#define ADC_SMPR1_SMP7_0 (0x1UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00200000 */
+#define ADC_SMPR1_SMP7_1 (0x2UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00400000 */
+#define ADC_SMPR1_SMP7_2 (0x4UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00800000 */
+
+#define ADC_SMPR1_SMP8_Pos (24U)
+#define ADC_SMPR1_SMP8_Msk (0x7UL << ADC_SMPR1_SMP8_Pos) /*!< 0x07000000 */
+#define ADC_SMPR1_SMP8 ADC_SMPR1_SMP8_Msk /*!< ADC channel 8 sampling time selection */
+#define ADC_SMPR1_SMP8_0 (0x1UL << ADC_SMPR1_SMP8_Pos) /*!< 0x01000000 */
+#define ADC_SMPR1_SMP8_1 (0x2UL << ADC_SMPR1_SMP8_Pos) /*!< 0x02000000 */
+#define ADC_SMPR1_SMP8_2 (0x4UL << ADC_SMPR1_SMP8_Pos) /*!< 0x04000000 */
+
+#define ADC_SMPR1_SMP9_Pos (27U)
+#define ADC_SMPR1_SMP9_Msk (0x7UL << ADC_SMPR1_SMP9_Pos) /*!< 0x38000000 */
+#define ADC_SMPR1_SMP9 ADC_SMPR1_SMP9_Msk /*!< ADC channel 9 sampling time selection */
+#define ADC_SMPR1_SMP9_0 (0x1UL << ADC_SMPR1_SMP9_Pos) /*!< 0x08000000 */
+#define ADC_SMPR1_SMP9_1 (0x2UL << ADC_SMPR1_SMP9_Pos) /*!< 0x10000000 */
+#define ADC_SMPR1_SMP9_2 (0x4UL << ADC_SMPR1_SMP9_Pos) /*!< 0x20000000 */
+
+#define ADC_SMPR1_SMPPLUS_Pos (31U)
+#define ADC_SMPR1_SMPPLUS_Msk (0x1UL << ADC_SMPR1_SMPPLUS_Pos) /*!< 0x80000000 */
+#define ADC_SMPR1_SMPPLUS ADC_SMPR1_SMPPLUS_Msk /*!< ADC channels sampling time additional setting */
+
+/******************** Bit definition for ADC_SMPR2 register *****************/
+#define ADC_SMPR2_SMP10_Pos (0U)
+#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */
+#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< ADC channel 10 sampling time selection */
+#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */
+#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */
+#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000004 */
+
+#define ADC_SMPR2_SMP11_Pos (3U)
+#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000038 */
+#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< ADC channel 11 sampling time selection */
+#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000008 */
+#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000010 */
+#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000020 */
+
+#define ADC_SMPR2_SMP12_Pos (6U)
+#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x000001C0 */
+#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< ADC channel 12 sampling time selection */
+#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000040 */
+#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000080 */
+#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000100 */
+
+#define ADC_SMPR2_SMP13_Pos (9U)
+#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000E00 */
+#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< ADC channel 13 sampling time selection */
+#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000200 */
+#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000400 */
+#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000800 */
+
+#define ADC_SMPR2_SMP14_Pos (12U)
+#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00007000 */
+#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< ADC channel 14 sampling time selection */
+#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00001000 */
+#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00002000 */
+#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00004000 */
+
+#define ADC_SMPR2_SMP15_Pos (15U)
+#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */
+#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< ADC channel 15 sampling time selection */
+#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */
+#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */
+#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */
+
+#define ADC_SMPR2_SMP16_Pos (18U)
+#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x001C0000 */
+#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< ADC channel 16 sampling time selection */
+#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00040000 */
+#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00080000 */
+#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00100000 */
+
+#define ADC_SMPR2_SMP17_Pos (21U)
+#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00E00000 */
+#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< ADC channel 17 sampling time selection */
+#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00200000 */
+#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00400000 */
+#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00800000 */
+
+#define ADC_SMPR2_SMP18_Pos (24U)
+#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x07000000 */
+#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< ADC channel 18 sampling time selection */
+#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x01000000 */
+#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x02000000 */
+#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) /*!< 0x04000000 */
+
+/******************** Bit definition for ADC_TR1 register *******************/
+#define ADC_TR1_LT1_Pos (0U)
+#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */
+#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */
+
+#define ADC_TR1_AWDFILT_Pos (12U)
+#define ADC_TR1_AWDFILT_Msk (0x7UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00007000 */
+#define ADC_TR1_AWDFILT ADC_TR1_AWDFILT_Msk /*!< ADC analog watchdog filtering parameter */
+#define ADC_TR1_AWDFILT_0 (0x1UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00001000 */
+#define ADC_TR1_AWDFILT_1 (0x2UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00002000 */
+#define ADC_TR1_AWDFILT_2 (0x4UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00004000 */
+
+#define ADC_TR1_HT1_Pos (16U)
+#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */
+#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC analog watchdog 1 threshold high */
+
+/******************** Bit definition for ADC_TR2 register *******************/
+#define ADC_TR2_LT2_Pos (0U)
+#define ADC_TR2_LT2_Msk (0xFFUL << ADC_TR2_LT2_Pos) /*!< 0x000000FF */
+#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */
+
+#define ADC_TR2_HT2_Pos (16U)
+#define ADC_TR2_HT2_Msk (0xFFUL << ADC_TR2_HT2_Pos) /*!< 0x00FF0000 */
+#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */
+
+/******************** Bit definition for ADC_TR3 register *******************/
+#define ADC_TR3_LT3_Pos (0U)
+#define ADC_TR3_LT3_Msk (0xFFUL << ADC_TR3_LT3_Pos) /*!< 0x000000FF */
+#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */
+
+#define ADC_TR3_HT3_Pos (16U)
+#define ADC_TR3_HT3_Msk (0xFFUL << ADC_TR3_HT3_Pos) /*!< 0x00FF0000 */
+#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */
+
+/******************** Bit definition for ADC_SQR1 register ******************/
+#define ADC_SQR1_L_Pos (0U)
+#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x0000000F */
+#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */
+#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00000001 */
+#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00000002 */
+#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00000004 */
+#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00000008 */
+
+#define ADC_SQR1_SQ1_Pos (6U)
+#define ADC_SQR1_SQ1_Msk (0x1FUL << ADC_SQR1_SQ1_Pos) /*!< 0x000007C0 */
+#define ADC_SQR1_SQ1 ADC_SQR1_SQ1_Msk /*!< ADC group regular sequencer rank 1 */
+#define ADC_SQR1_SQ1_0 (0x01UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000040 */
+#define ADC_SQR1_SQ1_1 (0x02UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000080 */
+#define ADC_SQR1_SQ1_2 (0x04UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000100 */
+#define ADC_SQR1_SQ1_3 (0x08UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000200 */
+#define ADC_SQR1_SQ1_4 (0x10UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR1_SQ2_Pos (12U)
+#define ADC_SQR1_SQ2_Msk (0x1FUL << ADC_SQR1_SQ2_Pos) /*!< 0x0001F000 */
+#define ADC_SQR1_SQ2 ADC_SQR1_SQ2_Msk /*!< ADC group regular sequencer rank 2 */
+#define ADC_SQR1_SQ2_0 (0x01UL << ADC_SQR1_SQ2_Pos) /*!< 0x00001000 */
+#define ADC_SQR1_SQ2_1 (0x02UL << ADC_SQR1_SQ2_Pos) /*!< 0x00002000 */
+#define ADC_SQR1_SQ2_2 (0x04UL << ADC_SQR1_SQ2_Pos) /*!< 0x00004000 */
+#define ADC_SQR1_SQ2_3 (0x08UL << ADC_SQR1_SQ2_Pos) /*!< 0x00008000 */
+#define ADC_SQR1_SQ2_4 (0x10UL << ADC_SQR1_SQ2_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR1_SQ3_Pos (18U)
+#define ADC_SQR1_SQ3_Msk (0x1FUL << ADC_SQR1_SQ3_Pos) /*!< 0x007C0000 */
+#define ADC_SQR1_SQ3 ADC_SQR1_SQ3_Msk /*!< ADC group regular sequencer rank 3 */
+#define ADC_SQR1_SQ3_0 (0x01UL << ADC_SQR1_SQ3_Pos) /*!< 0x00040000 */
+#define ADC_SQR1_SQ3_1 (0x02UL << ADC_SQR1_SQ3_Pos) /*!< 0x00080000 */
+#define ADC_SQR1_SQ3_2 (0x04UL << ADC_SQR1_SQ3_Pos) /*!< 0x00100000 */
+#define ADC_SQR1_SQ3_3 (0x08UL << ADC_SQR1_SQ3_Pos) /*!< 0x00200000 */
+#define ADC_SQR1_SQ3_4 (0x10UL<< ADC_SQR1_SQ3_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR1_SQ4_Pos (24U)
+#define ADC_SQR1_SQ4_Msk (0x1FUL << ADC_SQR1_SQ4_Pos) /*!< 0x1F000000 */
+#define ADC_SQR1_SQ4 ADC_SQR1_SQ4_Msk /*!< ADC group regular sequencer rank 4 */
+#define ADC_SQR1_SQ4_0 (0x01UL << ADC_SQR1_SQ4_Pos) /*!< 0x01000000 */
+#define ADC_SQR1_SQ4_1 (0x02UL << ADC_SQR1_SQ4_Pos) /*!< 0x02000000 */
+#define ADC_SQR1_SQ4_2 (0x04UL << ADC_SQR1_SQ4_Pos) /*!< 0x04000000 */
+#define ADC_SQR1_SQ4_3 (0x08UL << ADC_SQR1_SQ4_Pos) /*!< 0x08000000 */
+#define ADC_SQR1_SQ4_4 (0x10UL << ADC_SQR1_SQ4_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR2 register ******************/
+#define ADC_SQR2_SQ5_Pos (0U)
+#define ADC_SQR2_SQ5_Msk (0x1FUL << ADC_SQR2_SQ5_Pos) /*!< 0x0000001F */
+#define ADC_SQR2_SQ5 ADC_SQR2_SQ5_Msk /*!< ADC group regular sequencer rank 5 */
+#define ADC_SQR2_SQ5_0 (0x01UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000001 */
+#define ADC_SQR2_SQ5_1 (0x02UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000002 */
+#define ADC_SQR2_SQ5_2 (0x04UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000004 */
+#define ADC_SQR2_SQ5_3 (0x08UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000008 */
+#define ADC_SQR2_SQ5_4 (0x10UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR2_SQ6_Pos (6U)
+#define ADC_SQR2_SQ6_Msk (0x1FUL << ADC_SQR2_SQ6_Pos) /*!< 0x000007C0 */
+#define ADC_SQR2_SQ6 ADC_SQR2_SQ6_Msk /*!< ADC group regular sequencer rank 6 */
+#define ADC_SQR2_SQ6_0 (0x01UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000040 */
+#define ADC_SQR2_SQ6_1 (0x02UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000080 */
+#define ADC_SQR2_SQ6_2 (0x04UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000100 */
+#define ADC_SQR2_SQ6_3 (0x08UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000200 */
+#define ADC_SQR2_SQ6_4 (0x10UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR2_SQ7_Pos (12U)
+#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0001F000 */
+#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */
+#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00001000 */
+#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00002000 */
+#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00004000 */
+#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00008000 */
+#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR2_SQ8_Pos (18U)
+#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x007C0000 */
+#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */
+#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00040000 */
+#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00080000 */
+#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00100000 */
+#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00200000 */
+#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR2_SQ9_Pos (24U)
+#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x1F000000 */
+#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */
+#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x01000000 */
+#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x02000000 */
+#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x04000000 */
+#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x08000000 */
+#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR3 register ******************/
+#define ADC_SQR3_SQ10_Pos (0U)
+#define ADC_SQR3_SQ10_Msk (0x1FUL << ADC_SQR3_SQ10_Pos) /*!< 0x0000001F */
+#define ADC_SQR3_SQ10 ADC_SQR3_SQ10_Msk /*!< ADC group regular sequencer rank 10 */
+#define ADC_SQR3_SQ10_0 (0x01UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000001 */
+#define ADC_SQR3_SQ10_1 (0x02UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000002 */
+#define ADC_SQR3_SQ10_2 (0x04UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000004 */
+#define ADC_SQR3_SQ10_3 (0x08UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000008 */
+#define ADC_SQR3_SQ10_4 (0x10UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR3_SQ11_Pos (6U)
+#define ADC_SQR3_SQ11_Msk (0x1FUL << ADC_SQR3_SQ11_Pos) /*!< 0x000007C0 */
+#define ADC_SQR3_SQ11 ADC_SQR3_SQ11_Msk /*!< ADC group regular sequencer rank 11 */
+#define ADC_SQR3_SQ11_0 (0x01UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000040 */
+#define ADC_SQR3_SQ11_1 (0x02UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000080 */
+#define ADC_SQR3_SQ11_2 (0x04UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000100 */
+#define ADC_SQR3_SQ11_3 (0x08UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000200 */
+#define ADC_SQR3_SQ11_4 (0x10UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR3_SQ12_Pos (12U)
+#define ADC_SQR3_SQ12_Msk (0x1FUL << ADC_SQR3_SQ12_Pos) /*!< 0x0001F000 */
+#define ADC_SQR3_SQ12 ADC_SQR3_SQ12_Msk /*!< ADC group regular sequencer rank 12 */
+#define ADC_SQR3_SQ12_0 (0x01UL << ADC_SQR3_SQ12_Pos) /*!< 0x00001000 */
+#define ADC_SQR3_SQ12_1 (0x02UL << ADC_SQR3_SQ12_Pos) /*!< 0x00002000 */
+#define ADC_SQR3_SQ12_2 (0x04UL << ADC_SQR3_SQ12_Pos) /*!< 0x00004000 */
+#define ADC_SQR3_SQ12_3 (0x08UL << ADC_SQR3_SQ12_Pos) /*!< 0x00008000 */
+#define ADC_SQR3_SQ12_4 (0x10UL << ADC_SQR3_SQ12_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR3_SQ13_Pos (18U)
+#define ADC_SQR3_SQ13_Msk (0x1FUL << ADC_SQR3_SQ13_Pos) /*!< 0x007C0000 */
+#define ADC_SQR3_SQ13 ADC_SQR3_SQ13_Msk /*!< ADC group regular sequencer rank 13 */
+#define ADC_SQR3_SQ13_0 (0x01UL << ADC_SQR3_SQ13_Pos) /*!< 0x00040000 */
+#define ADC_SQR3_SQ13_1 (0x02UL << ADC_SQR3_SQ13_Pos) /*!< 0x00080000 */
+#define ADC_SQR3_SQ13_2 (0x04UL << ADC_SQR3_SQ13_Pos) /*!< 0x00100000 */
+#define ADC_SQR3_SQ13_3 (0x08UL << ADC_SQR3_SQ13_Pos) /*!< 0x00200000 */
+#define ADC_SQR3_SQ13_4 (0x10UL << ADC_SQR3_SQ13_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR3_SQ14_Pos (24U)
+#define ADC_SQR3_SQ14_Msk (0x1FUL << ADC_SQR3_SQ14_Pos) /*!< 0x1F000000 */
+#define ADC_SQR3_SQ14 ADC_SQR3_SQ14_Msk /*!< ADC group regular sequencer rank 14 */
+#define ADC_SQR3_SQ14_0 (0x01UL << ADC_SQR3_SQ14_Pos) /*!< 0x01000000 */
+#define ADC_SQR3_SQ14_1 (0x02UL << ADC_SQR3_SQ14_Pos) /*!< 0x02000000 */
+#define ADC_SQR3_SQ14_2 (0x04UL << ADC_SQR3_SQ14_Pos) /*!< 0x04000000 */
+#define ADC_SQR3_SQ14_3 (0x08UL << ADC_SQR3_SQ14_Pos) /*!< 0x08000000 */
+#define ADC_SQR3_SQ14_4 (0x10UL << ADC_SQR3_SQ14_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR4 register ******************/
+#define ADC_SQR4_SQ15_Pos (0U)
+#define ADC_SQR4_SQ15_Msk (0x1FUL << ADC_SQR4_SQ15_Pos) /*!< 0x0000001F */
+#define ADC_SQR4_SQ15 ADC_SQR4_SQ15_Msk /*!< ADC group regular sequencer rank 15 */
+#define ADC_SQR4_SQ15_0 (0x01UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000001 */
+#define ADC_SQR4_SQ15_1 (0x02UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000002 */
+#define ADC_SQR4_SQ15_2 (0x04UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000004 */
+#define ADC_SQR4_SQ15_3 (0x08UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000008 */
+#define ADC_SQR4_SQ15_4 (0x10UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR4_SQ16_Pos (6U)
+#define ADC_SQR4_SQ16_Msk (0x1FUL << ADC_SQR4_SQ16_Pos) /*!< 0x000007C0 */
+#define ADC_SQR4_SQ16 ADC_SQR4_SQ16_Msk /*!< ADC group regular sequencer rank 16 */
+#define ADC_SQR4_SQ16_0 (0x01UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000040 */
+#define ADC_SQR4_SQ16_1 (0x02UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000080 */
+#define ADC_SQR4_SQ16_2 (0x04UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000100 */
+#define ADC_SQR4_SQ16_3 (0x08UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000200 */
+#define ADC_SQR4_SQ16_4 (0x10UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000400 */
+
+/******************** Bit definition for ADC_DR register ********************/
+#define ADC_DR_RDATA_Pos (0U)
+#define ADC_DR_RDATA_Msk (0xFFFFUL << ADC_DR_RDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_DR_RDATA ADC_DR_RDATA_Msk /*!< ADC group regular conversion data */
+
+/******************** Bit definition for ADC_JSQR register ******************/
+#define ADC_JSQR_JL_Pos (0U)
+#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00000003 */
+#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */
+#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00000001 */
+#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00000002 */
+
+#define ADC_JSQR_JEXTSEL_Pos (2U)
+#define ADC_JSQR_JEXTSEL_Msk (0x1FUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000007C */
+#define ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_Msk /*!< ADC group injected external trigger source */
+#define ADC_JSQR_JEXTSEL_0 (0x1UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000004 */
+#define ADC_JSQR_JEXTSEL_1 (0x2UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000008 */
+#define ADC_JSQR_JEXTSEL_2 (0x4UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000010 */
+#define ADC_JSQR_JEXTSEL_3 (0x8UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000020 */
+#define ADC_JSQR_JEXTSEL_4 (0x10UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000040 */
+
+#define ADC_JSQR_JEXTEN_Pos (7U)
+#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000180 */
+#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */
+#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */
+#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000100 */
+
+#define ADC_JSQR_JSQ1_Pos (9U)
+#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00003E00 */
+#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */
+#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */
+#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */
+#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */
+#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */
+#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00002000 */
+
+#define ADC_JSQR_JSQ2_Pos (15U)
+#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x0007C000 */
+#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */
+#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00004000 */
+#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00008000 */
+#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00010000 */
+#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00020000 */
+#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00040000 */
+
+#define ADC_JSQR_JSQ3_Pos (21U)
+#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x03E00000 */
+#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */
+#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */
+#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */
+#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */
+#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */
+#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x02000000 */
+
+#define ADC_JSQR_JSQ4_Pos (27U)
+#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0xF8000000 */
+#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */
+#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */
+#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */
+#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */
+#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */
+#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x80000000 */
+
+/******************** Bit definition for ADC_OFR1 register ******************/
+#define ADC_OFR1_OFFSET1_Pos (0U)
+#define ADC_OFR1_OFFSET1_Msk (0xFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000FFF */
+#define ADC_OFR1_OFFSET1 ADC_OFR1_OFFSET1_Msk /*!< ADC offset number 1 offset level */
+
+#define ADC_OFR1_OFFSETPOS_Pos (24U)
+#define ADC_OFR1_OFFSETPOS_Msk (0x1UL << ADC_OFR1_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR1_OFFSETPOS ADC_OFR1_OFFSETPOS_Msk /*!< ADC offset number 1 positive */
+#define ADC_OFR1_SATEN_Pos (25U)
+#define ADC_OFR1_SATEN_Msk (0x1UL << ADC_OFR1_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR1_SATEN ADC_OFR1_SATEN_Msk /*!< ADC offset number 1 saturation enable */
+
+#define ADC_OFR1_OFFSET1_CH_Pos (26U)
+#define ADC_OFR1_OFFSET1_CH_Msk (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR1_OFFSET1_CH ADC_OFR1_OFFSET1_CH_Msk /*!< ADC offset number 1 channel selection */
+#define ADC_OFR1_OFFSET1_CH_0 (0x01UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR1_OFFSET1_CH_1 (0x02UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR1_OFFSET1_CH_2 (0x04UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR1_OFFSET1_CH_3 (0x08UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR1_OFFSET1_CH_4 (0x10UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR1_OFFSET1_EN_Pos (31U)
+#define ADC_OFR1_OFFSET1_EN_Msk (0x1UL << ADC_OFR1_OFFSET1_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR1_OFFSET1_EN ADC_OFR1_OFFSET1_EN_Msk /*!< ADC offset number 1 enable */
+
+/******************** Bit definition for ADC_OFR2 register ******************/
+#define ADC_OFR2_OFFSET2_Pos (0U)
+#define ADC_OFR2_OFFSET2_Msk (0xFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000FFF */
+#define ADC_OFR2_OFFSET2 ADC_OFR2_OFFSET2_Msk /*!< ADC offset number 2 offset level */
+
+#define ADC_OFR2_OFFSETPOS_Pos (24U)
+#define ADC_OFR2_OFFSETPOS_Msk (0x1UL << ADC_OFR2_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR2_OFFSETPOS ADC_OFR2_OFFSETPOS_Msk /*!< ADC offset number 2 positive */
+#define ADC_OFR2_SATEN_Pos (25U)
+#define ADC_OFR2_SATEN_Msk (0x1UL << ADC_OFR2_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR2_SATEN ADC_OFR2_SATEN_Msk /*!< ADC offset number 2 saturation enable */
+
+#define ADC_OFR2_OFFSET2_CH_Pos (26U)
+#define ADC_OFR2_OFFSET2_CH_Msk (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR2_OFFSET2_CH ADC_OFR2_OFFSET2_CH_Msk /*!< ADC offset number 2 channel selection */
+#define ADC_OFR2_OFFSET2_CH_0 (0x01UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR2_OFFSET2_CH_1 (0x02UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR2_OFFSET2_CH_2 (0x04UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR2_OFFSET2_CH_3 (0x08UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR2_OFFSET2_CH_4 (0x10UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR2_OFFSET2_EN_Pos (31U)
+#define ADC_OFR2_OFFSET2_EN_Msk (0x1UL << ADC_OFR2_OFFSET2_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR2_OFFSET2_EN ADC_OFR2_OFFSET2_EN_Msk /*!< ADC offset number 2 enable */
+
+/******************** Bit definition for ADC_OFR3 register ******************/
+#define ADC_OFR3_OFFSET3_Pos (0U)
+#define ADC_OFR3_OFFSET3_Msk (0xFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000FFF */
+#define ADC_OFR3_OFFSET3 ADC_OFR3_OFFSET3_Msk /*!< ADC offset number 3 offset level */
+
+#define ADC_OFR3_OFFSETPOS_Pos (24U)
+#define ADC_OFR3_OFFSETPOS_Msk (0x1UL << ADC_OFR3_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR3_OFFSETPOS ADC_OFR3_OFFSETPOS_Msk /*!< ADC offset number 3 positive */
+#define ADC_OFR3_SATEN_Pos (25U)
+#define ADC_OFR3_SATEN_Msk (0x1UL << ADC_OFR3_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR3_SATEN ADC_OFR3_SATEN_Msk /*!< ADC offset number 3 saturation enable */
+
+#define ADC_OFR3_OFFSET3_CH_Pos (26U)
+#define ADC_OFR3_OFFSET3_CH_Msk (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR3_OFFSET3_CH ADC_OFR3_OFFSET3_CH_Msk /*!< ADC offset number 3 channel selection */
+#define ADC_OFR3_OFFSET3_CH_0 (0x01UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR3_OFFSET3_CH_1 (0x02UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR3_OFFSET3_CH_2 (0x04UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR3_OFFSET3_CH_3 (0x08UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR3_OFFSET3_CH_4 (0x10UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR3_OFFSET3_EN_Pos (31U)
+#define ADC_OFR3_OFFSET3_EN_Msk (0x1UL << ADC_OFR3_OFFSET3_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR3_OFFSET3_EN ADC_OFR3_OFFSET3_EN_Msk /*!< ADC offset number 3 enable */
+
+/******************** Bit definition for ADC_OFR4 register ******************/
+#define ADC_OFR4_OFFSET4_Pos (0U)
+#define ADC_OFR4_OFFSET4_Msk (0xFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000FFF */
+#define ADC_OFR4_OFFSET4 ADC_OFR4_OFFSET4_Msk /*!< ADC offset number 4 offset level */
+
+#define ADC_OFR4_OFFSETPOS_Pos (24U)
+#define ADC_OFR4_OFFSETPOS_Msk (0x1UL << ADC_OFR4_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR4_OFFSETPOS ADC_OFR4_OFFSETPOS_Msk /*!< ADC offset number 4 positive */
+#define ADC_OFR4_SATEN_Pos (25U)
+#define ADC_OFR4_SATEN_Msk (0x1UL << ADC_OFR4_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR4_SATEN ADC_OFR4_SATEN_Msk /*!< ADC offset number 4 saturation enable */
+
+#define ADC_OFR4_OFFSET4_CH_Pos (26U)
+#define ADC_OFR4_OFFSET4_CH_Msk (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR4_OFFSET4_CH ADC_OFR4_OFFSET4_CH_Msk /*!< ADC offset number 4 channel selection */
+#define ADC_OFR4_OFFSET4_CH_0 (0x01UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR4_OFFSET4_CH_1 (0x02UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR4_OFFSET4_CH_2 (0x04UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR4_OFFSET4_CH_3 (0x08UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR4_OFFSET4_CH_4 (0x10UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR4_OFFSET4_EN_Pos (31U)
+#define ADC_OFR4_OFFSET4_EN_Msk (0x1UL << ADC_OFR4_OFFSET4_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR4_OFFSET4_EN ADC_OFR4_OFFSET4_EN_Msk /*!< ADC offset number 4 enable */
+
+/******************** Bit definition for ADC_JDR1 register ******************/
+#define ADC_JDR1_JDATA_Pos (0U)
+#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */
+
+/******************** Bit definition for ADC_JDR2 register ******************/
+#define ADC_JDR2_JDATA_Pos (0U)
+#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */
+
+/******************** Bit definition for ADC_JDR3 register ******************/
+#define ADC_JDR3_JDATA_Pos (0U)
+#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */
+
+/******************** Bit definition for ADC_JDR4 register ******************/
+#define ADC_JDR4_JDATA_Pos (0U)
+#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */
+
+/******************** Bit definition for ADC_AWD2CR register ****************/
+#define ADC_AWD2CR_AWD2CH_Pos (0U)
+#define ADC_AWD2CR_AWD2CH_Msk (0xFFFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */
+#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */
+#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */
+#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */
+#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */
+#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */
+#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */
+#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */
+#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */
+#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */
+#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */
+#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */
+#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */
+#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */
+#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */
+#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */
+#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */
+#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */
+#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */
+#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */
+#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */
+#define ADC_AWD2CR_AWD2CH_19 (0x80000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_AWD3CR register ****************/
+#define ADC_AWD3CR_AWD3CH_Pos (0U)
+#define ADC_AWD3CR_AWD3CH_Msk (0xFFFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */
+#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */
+#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */
+#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */
+#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */
+#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */
+#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */
+#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */
+#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */
+#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */
+#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */
+#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */
+#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */
+#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */
+#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */
+#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */
+#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */
+#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */
+#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */
+#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */
+#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */
+#define ADC_AWD3CR_AWD2CH_19 (0x80000UL << ADC_AWD3CR_AWD2CH_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_DIFSEL register ****************/
+#define ADC_DIFSEL_DIFSEL_Pos (0U)
+#define ADC_DIFSEL_DIFSEL_Msk (0xFFFFFUL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x0007FFFF */
+#define ADC_DIFSEL_DIFSEL ADC_DIFSEL_DIFSEL_Msk /*!< ADC channel differential or single-ended mode */
+#define ADC_DIFSEL_DIFSEL_0 (0x00001UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000001 */
+#define ADC_DIFSEL_DIFSEL_1 (0x00002UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000002 */
+#define ADC_DIFSEL_DIFSEL_2 (0x00004UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000004 */
+#define ADC_DIFSEL_DIFSEL_3 (0x00008UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000008 */
+#define ADC_DIFSEL_DIFSEL_4 (0x00010UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000010 */
+#define ADC_DIFSEL_DIFSEL_5 (0x00020UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000020 */
+#define ADC_DIFSEL_DIFSEL_6 (0x00040UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000040 */
+#define ADC_DIFSEL_DIFSEL_7 (0x00080UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000080 */
+#define ADC_DIFSEL_DIFSEL_8 (0x00100UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000100 */
+#define ADC_DIFSEL_DIFSEL_9 (0x00200UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000200 */
+#define ADC_DIFSEL_DIFSEL_10 (0x00400UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000400 */
+#define ADC_DIFSEL_DIFSEL_11 (0x00800UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000800 */
+#define ADC_DIFSEL_DIFSEL_12 (0x01000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00001000 */
+#define ADC_DIFSEL_DIFSEL_13 (0x02000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00002000 */
+#define ADC_DIFSEL_DIFSEL_14 (0x04000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00004000 */
+#define ADC_DIFSEL_DIFSEL_15 (0x08000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00008000 */
+#define ADC_DIFSEL_DIFSEL_16 (0x10000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00010000 */
+#define ADC_DIFSEL_DIFSEL_17 (0x20000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00020000 */
+#define ADC_DIFSEL_DIFSEL_18 (0x40000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00040000 */
+#define ADC_DIFSEL_DIFSEL_19 (0x80000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_CALFACT register ***************/
+#define ADC_CALFACT_CALFACT_S_Pos (0U)
+#define ADC_CALFACT_CALFACT_S_Msk (0x7FUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x0000007F */
+#define ADC_CALFACT_CALFACT_S ADC_CALFACT_CALFACT_S_Msk /*!< ADC calibration factor in single-ended mode */
+#define ADC_CALFACT_CALFACT_S_0 (0x01UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */
+#define ADC_CALFACT_CALFACT_S_1 (0x02UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */
+#define ADC_CALFACT_CALFACT_S_2 (0x04UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */
+#define ADC_CALFACT_CALFACT_S_3 (0x08UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */
+#define ADC_CALFACT_CALFACT_S_4 (0x10UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */
+#define ADC_CALFACT_CALFACT_S_5 (0x20UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */
+#define ADC_CALFACT_CALFACT_S_6 (0x40UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000030 */
+
+#define ADC_CALFACT_CALFACT_D_Pos (16U)
+#define ADC_CALFACT_CALFACT_D_Msk (0x7FUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x007F0000 */
+#define ADC_CALFACT_CALFACT_D ADC_CALFACT_CALFACT_D_Msk /*!< ADC calibration factor in differential mode */
+#define ADC_CALFACT_CALFACT_D_0 (0x01UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */
+#define ADC_CALFACT_CALFACT_D_1 (0x02UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */
+#define ADC_CALFACT_CALFACT_D_2 (0x04UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */
+#define ADC_CALFACT_CALFACT_D_3 (0x08UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */
+#define ADC_CALFACT_CALFACT_D_4 (0x10UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */
+#define ADC_CALFACT_CALFACT_D_5 (0x20UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */
+#define ADC_CALFACT_CALFACT_D_6 (0x40UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00300000 */
+
+/******************** Bit definition for ADC_OR register *****************/
+#define ADC_OR_OP0_Pos (0U)
+#define ADC_OR_OP0_Msk (0x01UL << ADC_OR_OP0_Pos) /*!< 0x00000001 */
+#define ADC_OR_OP0 ADC_OR_OP0_Msk /*!< ADC Option bit 0 */
+#define ADC_OR_OP1_Pos (1U)
+#define ADC_OR_OP1_Msk (0x01UL << ADC_OR_OP1_Pos) /*!< 0x00000001 */
+#define ADC_OR_OP1 ADC_OR_OP1_Msk /*!< ADC Option bit 1 */
+
+/************************* ADC Common registers *****************************/
+/******************** Bit definition for ADC_CSR register *******************/
+#define ADC_CSR_ADRDY_MST_Pos (0U)
+#define ADC_CSR_ADRDY_MST_Msk (0x1UL << ADC_CSR_ADRDY_MST_Pos) /*!< 0x00000001 */
+#define ADC_CSR_ADRDY_MST ADC_CSR_ADRDY_MST_Msk /*!< ADC multimode master ready flag */
+#define ADC_CSR_EOSMP_MST_Pos (1U)
+#define ADC_CSR_EOSMP_MST_Msk (0x1UL << ADC_CSR_EOSMP_MST_Pos) /*!< 0x00000002 */
+#define ADC_CSR_EOSMP_MST ADC_CSR_EOSMP_MST_Msk /*!< ADC multimode master group regular end of sampling flag */
+#define ADC_CSR_EOC_MST_Pos (2U)
+#define ADC_CSR_EOC_MST_Msk (0x1UL << ADC_CSR_EOC_MST_Pos) /*!< 0x00000004 */
+#define ADC_CSR_EOC_MST ADC_CSR_EOC_MST_Msk /*!< ADC multimode master group regular end of unitary conversion flag */
+#define ADC_CSR_EOS_MST_Pos (3U)
+#define ADC_CSR_EOS_MST_Msk (0x1UL << ADC_CSR_EOS_MST_Pos) /*!< 0x00000008 */
+#define ADC_CSR_EOS_MST ADC_CSR_EOS_MST_Msk /*!< ADC multimode master group regular end of sequence conversions flag */
+#define ADC_CSR_OVR_MST_Pos (4U)
+#define ADC_CSR_OVR_MST_Msk (0x1UL << ADC_CSR_OVR_MST_Pos) /*!< 0x00000010 */
+#define ADC_CSR_OVR_MST ADC_CSR_OVR_MST_Msk /*!< ADC multimode master group regular overrun flag */
+#define ADC_CSR_JEOC_MST_Pos (5U)
+#define ADC_CSR_JEOC_MST_Msk (0x1UL << ADC_CSR_JEOC_MST_Pos) /*!< 0x00000020 */
+#define ADC_CSR_JEOC_MST ADC_CSR_JEOC_MST_Msk /*!< ADC multimode master group injected end of unitary conversion flag */
+#define ADC_CSR_JEOS_MST_Pos (6U)
+#define ADC_CSR_JEOS_MST_Msk (0x1UL << ADC_CSR_JEOS_MST_Pos) /*!< 0x00000040 */
+#define ADC_CSR_JEOS_MST ADC_CSR_JEOS_MST_Msk /*!< ADC multimode master group injected end of sequence conversions flag */
+#define ADC_CSR_AWD1_MST_Pos (7U)
+#define ADC_CSR_AWD1_MST_Msk (0x1UL << ADC_CSR_AWD1_MST_Pos) /*!< 0x00000080 */
+#define ADC_CSR_AWD1_MST ADC_CSR_AWD1_MST_Msk /*!< ADC multimode master analog watchdog 1 flag */
+#define ADC_CSR_AWD2_MST_Pos (8U)
+#define ADC_CSR_AWD2_MST_Msk (0x1UL << ADC_CSR_AWD2_MST_Pos) /*!< 0x00000100 */
+#define ADC_CSR_AWD2_MST ADC_CSR_AWD2_MST_Msk /*!< ADC multimode master analog watchdog 2 flag */
+#define ADC_CSR_AWD3_MST_Pos (9U)
+#define ADC_CSR_AWD3_MST_Msk (0x1UL << ADC_CSR_AWD3_MST_Pos) /*!< 0x00000200 */
+#define ADC_CSR_AWD3_MST ADC_CSR_AWD3_MST_Msk /*!< ADC multimode master analog watchdog 3 flag */
+#define ADC_CSR_JQOVF_MST_Pos (10U)
+#define ADC_CSR_JQOVF_MST_Msk (0x1UL << ADC_CSR_JQOVF_MST_Pos) /*!< 0x00000400 */
+#define ADC_CSR_JQOVF_MST ADC_CSR_JQOVF_MST_Msk /*!< ADC multimode master group injected contexts queue overflow flag */
+
+#define ADC_CSR_ADRDY_SLV_Pos (16U)
+#define ADC_CSR_ADRDY_SLV_Msk (0x1UL << ADC_CSR_ADRDY_SLV_Pos) /*!< 0x00010000 */
+#define ADC_CSR_ADRDY_SLV ADC_CSR_ADRDY_SLV_Msk /*!< ADC multimode slave ready flag */
+#define ADC_CSR_EOSMP_SLV_Pos (17U)
+#define ADC_CSR_EOSMP_SLV_Msk (0x1UL << ADC_CSR_EOSMP_SLV_Pos) /*!< 0x00020000 */
+#define ADC_CSR_EOSMP_SLV ADC_CSR_EOSMP_SLV_Msk /*!< ADC multimode slave group regular end of sampling flag */
+#define ADC_CSR_EOC_SLV_Pos (18U)
+#define ADC_CSR_EOC_SLV_Msk (0x1UL << ADC_CSR_EOC_SLV_Pos) /*!< 0x00040000 */
+#define ADC_CSR_EOC_SLV ADC_CSR_EOC_SLV_Msk /*!< ADC multimode slave group regular end of unitary conversion flag */
+#define ADC_CSR_EOS_SLV_Pos (19U)
+#define ADC_CSR_EOS_SLV_Msk (0x1UL << ADC_CSR_EOS_SLV_Pos) /*!< 0x00080000 */
+#define ADC_CSR_EOS_SLV ADC_CSR_EOS_SLV_Msk /*!< ADC multimode slave group regular end of sequence conversions flag */
+#define ADC_CSR_OVR_SLV_Pos (20U)
+#define ADC_CSR_OVR_SLV_Msk (0x1UL << ADC_CSR_OVR_SLV_Pos) /*!< 0x00100000 */
+#define ADC_CSR_OVR_SLV ADC_CSR_OVR_SLV_Msk /*!< ADC multimode slave group regular overrun flag */
+#define ADC_CSR_JEOC_SLV_Pos (21U)
+#define ADC_CSR_JEOC_SLV_Msk (0x1UL << ADC_CSR_JEOC_SLV_Pos) /*!< 0x00200000 */
+#define ADC_CSR_JEOC_SLV ADC_CSR_JEOC_SLV_Msk /*!< ADC multimode slave group injected end of unitary conversion flag */
+#define ADC_CSR_JEOS_SLV_Pos (22U)
+#define ADC_CSR_JEOS_SLV_Msk (0x1UL << ADC_CSR_JEOS_SLV_Pos) /*!< 0x00400000 */
+#define ADC_CSR_JEOS_SLV ADC_CSR_JEOS_SLV_Msk /*!< ADC multimode slave group injected end of sequence conversions flag */
+#define ADC_CSR_AWD1_SLV_Pos (23U)
+#define ADC_CSR_AWD1_SLV_Msk (0x1UL << ADC_CSR_AWD1_SLV_Pos) /*!< 0x00800000 */
+#define ADC_CSR_AWD1_SLV ADC_CSR_AWD1_SLV_Msk /*!< ADC multimode slave analog watchdog 1 flag */
+#define ADC_CSR_AWD2_SLV_Pos (24U)
+#define ADC_CSR_AWD2_SLV_Msk (0x1UL << ADC_CSR_AWD2_SLV_Pos) /*!< 0x01000000 */
+#define ADC_CSR_AWD2_SLV ADC_CSR_AWD2_SLV_Msk /*!< ADC multimode slave analog watchdog 2 flag */
+#define ADC_CSR_AWD3_SLV_Pos (25U)
+#define ADC_CSR_AWD3_SLV_Msk (0x1UL << ADC_CSR_AWD3_SLV_Pos) /*!< 0x02000000 */
+#define ADC_CSR_AWD3_SLV ADC_CSR_AWD3_SLV_Msk /*!< ADC multimode slave analog watchdog 3 flag */
+#define ADC_CSR_JQOVF_SLV_Pos (26U)
+#define ADC_CSR_JQOVF_SLV_Msk (0x1UL << ADC_CSR_JQOVF_SLV_Pos) /*!< 0x04000000 */
+#define ADC_CSR_JQOVF_SLV ADC_CSR_JQOVF_SLV_Msk /*!< ADC multimode slave group injected contexts queue overflow flag */
+
+/******************** Bit definition for ADC_CCR register *******************/
+#define ADC_CCR_DUAL_Pos (0U)
+#define ADC_CCR_DUAL_Msk (0x1FUL << ADC_CCR_DUAL_Pos) /*!< 0x0000001F */
+#define ADC_CCR_DUAL ADC_CCR_DUAL_Msk /*!< ADC multimode mode selection */
+#define ADC_CCR_DUAL_0 (0x01UL << ADC_CCR_DUAL_Pos) /*!< 0x00000001 */
+#define ADC_CCR_DUAL_1 (0x02UL << ADC_CCR_DUAL_Pos) /*!< 0x00000002 */
+#define ADC_CCR_DUAL_2 (0x04UL << ADC_CCR_DUAL_Pos) /*!< 0x00000004 */
+#define ADC_CCR_DUAL_3 (0x08UL << ADC_CCR_DUAL_Pos) /*!< 0x00000008 */
+#define ADC_CCR_DUAL_4 (0x10UL << ADC_CCR_DUAL_Pos) /*!< 0x00000010 */
+
+#define ADC_CCR_DELAY_Pos (8U)
+#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */
+#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!< ADC multimode delay between 2 sampling phases */
+#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */
+#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */
+#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */
+#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */
+
+#define ADC_CCR_DMACFG_Pos (13U)
+#define ADC_CCR_DMACFG_Msk (0x1UL << ADC_CCR_DMACFG_Pos) /*!< 0x00002000 */
+#define ADC_CCR_DMACFG ADC_CCR_DMACFG_Msk /*!< ADC multimode DMA transfer configuration */
+
+#define ADC_CCR_MDMA_Pos (14U)
+#define ADC_CCR_MDMA_Msk (0x3UL << ADC_CCR_MDMA_Pos) /*!< 0x0000C000 */
+#define ADC_CCR_MDMA ADC_CCR_MDMA_Msk /*!< ADC multimode DMA transfer enable */
+#define ADC_CCR_MDMA_0 (0x1UL << ADC_CCR_MDMA_Pos) /*!< 0x00004000 */
+#define ADC_CCR_MDMA_1 (0x2UL << ADC_CCR_MDMA_Pos) /*!< 0x00008000 */
+
+#define ADC_CCR_CKMODE_Pos (16U)
+#define ADC_CCR_CKMODE_Msk (0x3UL << ADC_CCR_CKMODE_Pos) /*!< 0x00030000 */
+#define ADC_CCR_CKMODE ADC_CCR_CKMODE_Msk /*!< ADC common clock source and prescaler (prescaler only for clock source synchronous) */
+#define ADC_CCR_CKMODE_0 (0x1UL << ADC_CCR_CKMODE_Pos) /*!< 0x00010000 */
+#define ADC_CCR_CKMODE_1 (0x2UL << ADC_CCR_CKMODE_Pos) /*!< 0x00020000 */
+
+#define ADC_CCR_PRESC_Pos (18U)
+#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */
+#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */
+#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */
+#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */
+#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */
+#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */
+
+#define ADC_CCR_VREFEN_Pos (22U)
+#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */
+#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */
+#define ADC_CCR_TSEN_Pos (23U)
+#define ADC_CCR_TSEN_Msk (0x1UL << ADC_CCR_TSEN_Pos) /*!< 0x00800000 */
+#define ADC_CCR_TSEN ADC_CCR_TSEN_Msk /*!< ADC internal path to temperature sensor enable */
+#define ADC_CCR_VBATEN_Pos (24U)
+#define ADC_CCR_VBATEN_Msk (0x1UL << ADC_CCR_VBATEN_Pos) /*!< 0x01000000 */
+#define ADC_CCR_VBATEN ADC_CCR_VBATEN_Msk /*!< ADC internal path to battery voltage enable */
+
+/******************** Bit definition for ADC_CDR register *******************/
+#define ADC_CDR_RDATA_MST_Pos (0U)
+#define ADC_CDR_RDATA_MST_Msk (0xFFFFUL << ADC_CDR_RDATA_MST_Pos) /*!< 0x0000FFFF */
+#define ADC_CDR_RDATA_MST ADC_CDR_RDATA_MST_Msk /*!< ADC multimode master group regular conversion data */
+
+#define ADC_CDR_RDATA_SLV_Pos (16U)
+#define ADC_CDR_RDATA_SLV_Msk (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos) /*!< 0xFFFF0000 */
+#define ADC_CDR_RDATA_SLV ADC_CDR_RDATA_SLV_Msk /*!< ADC multimode slave group regular conversion data */
+
+
+
+/******************************************************************************/
+/* */
+/* CRC calculation unit */
+/* */
+/******************************************************************************/
+/******************* Bit definition for CRC_DR register *********************/
+#define CRC_DR_DR_Pos (0U)
+#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */
+#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */
+
+/******************* Bit definition for CRC_IDR register ********************/
+#define CRC_IDR_IDR_Pos (0U)
+#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */
+#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bits data register bits */
+
+/******************** Bit definition for CRC_CR register ********************/
+#define CRC_CR_RESET_Pos (0U)
+#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */
+#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */
+#define CRC_CR_POLYSIZE_Pos (3U)
+#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */
+#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */
+#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */
+#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */
+#define CRC_CR_REV_IN_Pos (5U)
+#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */
+#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */
+#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */
+#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */
+#define CRC_CR_REV_OUT_Pos (7U)
+#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */
+#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */
+
+/******************* Bit definition for CRC_INIT register *******************/
+#define CRC_INIT_INIT_Pos (0U)
+#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */
+#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */
+
+/******************* Bit definition for CRC_POL register ********************/
+#define CRC_POL_POL_Pos (0U)
+#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */
+#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */
+
+
+/******************************************************************************/
+/* */
+/* CRS Clock Recovery System */
+/******************************************************************************/
+/******************* Bit definition for CRS_CR register *********************/
+#define CRS_CR_SYNCOKIE_Pos (0U)
+#define CRS_CR_SYNCOKIE_Msk (0x1UL << CRS_CR_SYNCOKIE_Pos) /*!< 0x00000001 */
+#define CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE_Msk /*!< SYNC event OK interrupt enable */
+#define CRS_CR_SYNCWARNIE_Pos (1U)
+#define CRS_CR_SYNCWARNIE_Msk (0x1UL << CRS_CR_SYNCWARNIE_Pos) /*!< 0x00000002 */
+#define CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE_Msk /*!< SYNC warning interrupt enable */
+#define CRS_CR_ERRIE_Pos (2U)
+#define CRS_CR_ERRIE_Msk (0x1UL << CRS_CR_ERRIE_Pos) /*!< 0x00000004 */
+#define CRS_CR_ERRIE CRS_CR_ERRIE_Msk /*!< SYNC error or trimming error interrupt enable */
+#define CRS_CR_ESYNCIE_Pos (3U)
+#define CRS_CR_ESYNCIE_Msk (0x1UL << CRS_CR_ESYNCIE_Pos) /*!< 0x00000008 */
+#define CRS_CR_ESYNCIE CRS_CR_ESYNCIE_Msk /*!< Expected SYNC interrupt enable */
+#define CRS_CR_CEN_Pos (5U)
+#define CRS_CR_CEN_Msk (0x1UL << CRS_CR_CEN_Pos) /*!< 0x00000020 */
+#define CRS_CR_CEN CRS_CR_CEN_Msk /*!< Frequency error counter enable */
+#define CRS_CR_AUTOTRIMEN_Pos (6U)
+#define CRS_CR_AUTOTRIMEN_Msk (0x1UL << CRS_CR_AUTOTRIMEN_Pos) /*!< 0x00000040 */
+#define CRS_CR_AUTOTRIMEN CRS_CR_AUTOTRIMEN_Msk /*!< Automatic trimming enable */
+#define CRS_CR_SWSYNC_Pos (7U)
+#define CRS_CR_SWSYNC_Msk (0x1UL << CRS_CR_SWSYNC_Pos) /*!< 0x00000080 */
+#define CRS_CR_SWSYNC CRS_CR_SWSYNC_Msk /*!< Generate software SYNC event */
+#define CRS_CR_TRIM_Pos (8U)
+#define CRS_CR_TRIM_Msk (0x3FUL << CRS_CR_TRIM_Pos) /*!< 0x00003F00 */
+#define CRS_CR_TRIM CRS_CR_TRIM_Msk /*!< HSI48 oscillator smooth trimming */
+
+/******************* Bit definition for CRS_CFGR register *********************/
+#define CRS_CFGR_RELOAD_Pos (0U)
+#define CRS_CFGR_RELOAD_Msk (0xFFFFUL << CRS_CFGR_RELOAD_Pos) /*!< 0x0000FFFF */
+#define CRS_CFGR_RELOAD CRS_CFGR_RELOAD_Msk /*!< Counter reload value */
+#define CRS_CFGR_FELIM_Pos (16U)
+#define CRS_CFGR_FELIM_Msk (0xFFUL << CRS_CFGR_FELIM_Pos) /*!< 0x00FF0000 */
+#define CRS_CFGR_FELIM CRS_CFGR_FELIM_Msk /*!< Frequency error limit */
+#define CRS_CFGR_SYNCDIV_Pos (24U)
+#define CRS_CFGR_SYNCDIV_Msk (0x7UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x07000000 */
+#define CRS_CFGR_SYNCDIV CRS_CFGR_SYNCDIV_Msk /*!< SYNC divider */
+#define CRS_CFGR_SYNCDIV_0 (0x1UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x01000000 */
+#define CRS_CFGR_SYNCDIV_1 (0x2UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x02000000 */
+#define CRS_CFGR_SYNCDIV_2 (0x4UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x04000000 */
+#define CRS_CFGR_SYNCSRC_Pos (28U)
+#define CRS_CFGR_SYNCSRC_Msk (0x3UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x30000000 */
+#define CRS_CFGR_SYNCSRC CRS_CFGR_SYNCSRC_Msk /*!< SYNC signal source selection */
+#define CRS_CFGR_SYNCSRC_0 (0x1UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x10000000 */
+#define CRS_CFGR_SYNCSRC_1 (0x2UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x20000000 */
+#define CRS_CFGR_SYNCPOL_Pos (31U)
+#define CRS_CFGR_SYNCPOL_Msk (0x1UL << CRS_CFGR_SYNCPOL_Pos) /*!< 0x80000000 */
+#define CRS_CFGR_SYNCPOL CRS_CFGR_SYNCPOL_Msk /*!< SYNC polarity selection */
+
+/******************* Bit definition for CRS_ISR register *********************/
+#define CRS_ISR_SYNCOKF_Pos (0U)
+#define CRS_ISR_SYNCOKF_Msk (0x1UL << CRS_ISR_SYNCOKF_Pos) /*!< 0x00000001 */
+#define CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF_Msk /*!< SYNC event OK flag */
+#define CRS_ISR_SYNCWARNF_Pos (1U)
+#define CRS_ISR_SYNCWARNF_Msk (0x1UL << CRS_ISR_SYNCWARNF_Pos) /*!< 0x00000002 */
+#define CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF_Msk /*!< SYNC warning flag */
+#define CRS_ISR_ERRF_Pos (2U)
+#define CRS_ISR_ERRF_Msk (0x1UL << CRS_ISR_ERRF_Pos) /*!< 0x00000004 */
+#define CRS_ISR_ERRF CRS_ISR_ERRF_Msk /*!< Error flag */
+#define CRS_ISR_ESYNCF_Pos (3U)
+#define CRS_ISR_ESYNCF_Msk (0x1UL << CRS_ISR_ESYNCF_Pos) /*!< 0x00000008 */
+#define CRS_ISR_ESYNCF CRS_ISR_ESYNCF_Msk /*!< Expected SYNC flag */
+#define CRS_ISR_SYNCERR_Pos (8U)
+#define CRS_ISR_SYNCERR_Msk (0x1UL << CRS_ISR_SYNCERR_Pos) /*!< 0x00000100 */
+#define CRS_ISR_SYNCERR CRS_ISR_SYNCERR_Msk /*!< SYNC error */
+#define CRS_ISR_SYNCMISS_Pos (9U)
+#define CRS_ISR_SYNCMISS_Msk (0x1UL << CRS_ISR_SYNCMISS_Pos) /*!< 0x00000200 */
+#define CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS_Msk /*!< SYNC missed */
+#define CRS_ISR_TRIMOVF_Pos (10U)
+#define CRS_ISR_TRIMOVF_Msk (0x1UL << CRS_ISR_TRIMOVF_Pos) /*!< 0x00000400 */
+#define CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF_Msk /*!< Trimming overflow or underflow */
+#define CRS_ISR_FEDIR_Pos (15U)
+#define CRS_ISR_FEDIR_Msk (0x1UL << CRS_ISR_FEDIR_Pos) /*!< 0x00008000 */
+#define CRS_ISR_FEDIR CRS_ISR_FEDIR_Msk /*!< Frequency error direction */
+#define CRS_ISR_FECAP_Pos (16U)
+#define CRS_ISR_FECAP_Msk (0xFFFFUL << CRS_ISR_FECAP_Pos) /*!< 0xFFFF0000 */
+#define CRS_ISR_FECAP CRS_ISR_FECAP_Msk /*!< Frequency error capture */
+
+/******************* Bit definition for CRS_ICR register *********************/
+#define CRS_ICR_SYNCOKC_Pos (0U)
+#define CRS_ICR_SYNCOKC_Msk (0x1UL << CRS_ICR_SYNCOKC_Pos) /*!< 0x00000001 */
+#define CRS_ICR_SYNCOKC CRS_ICR_SYNCOKC_Msk /*!< SYNC event OK clear flag */
+#define CRS_ICR_SYNCWARNC_Pos (1U)
+#define CRS_ICR_SYNCWARNC_Msk (0x1UL << CRS_ICR_SYNCWARNC_Pos) /*!< 0x00000002 */
+#define CRS_ICR_SYNCWARNC CRS_ICR_SYNCWARNC_Msk /*!< SYNC warning clear flag */
+#define CRS_ICR_ERRC_Pos (2U)
+#define CRS_ICR_ERRC_Msk (0x1UL << CRS_ICR_ERRC_Pos) /*!< 0x00000004 */
+#define CRS_ICR_ERRC CRS_ICR_ERRC_Msk /*!< Error clear flag */
+#define CRS_ICR_ESYNCC_Pos (3U)
+#define CRS_ICR_ESYNCC_Msk (0x1UL << CRS_ICR_ESYNCC_Pos) /*!< 0x00000008 */
+#define CRS_ICR_ESYNCC CRS_ICR_ESYNCC_Msk /*!< Expected SYNC clear flag */
+
+
+/******************************************************************************/
+/* */
+/* RNG */
+/* */
+/******************************************************************************/
+/******************** Bits definition for RNG_CR register *******************/
+#define RNG_CR_RNGEN_Pos (2U)
+#define RNG_CR_RNGEN_Msk (0x1UL << RNG_CR_RNGEN_Pos) /*!< 0x00000004 */
+#define RNG_CR_RNGEN RNG_CR_RNGEN_Msk
+#define RNG_CR_IE_Pos (3U)
+#define RNG_CR_IE_Msk (0x1UL << RNG_CR_IE_Pos) /*!< 0x00000008 */
+#define RNG_CR_IE RNG_CR_IE_Msk
+#define RNG_CR_CED_Pos (5U)
+#define RNG_CR_CED_Msk (0x1UL << RNG_CR_CED_Pos) /*!< 0x00000020 */
+#define RNG_CR_CED RNG_CR_CED_Msk
+#define RNG_CR_ARDIS_Pos (7U)
+#define RNG_CR_ARDIS_Msk (0x1UL << RNG_CR_ARDIS_Pos)
+#define RNG_CR_ARDIS RNG_CR_ARDIS_Msk
+#define RNG_CR_RNG_CONFIG3_Pos (8U)
+#define RNG_CR_RNG_CONFIG3_Msk (0xFUL << RNG_CR_RNG_CONFIG3_Pos)
+#define RNG_CR_RNG_CONFIG3 RNG_CR_RNG_CONFIG3_Msk
+#define RNG_CR_NISTC_Pos (12U)
+#define RNG_CR_NISTC_Msk (0x1UL << RNG_CR_NISTC_Pos)
+#define RNG_CR_NISTC RNG_CR_NISTC_Msk
+#define RNG_CR_RNG_CONFIG2_Pos (13U)
+#define RNG_CR_RNG_CONFIG2_Msk (0x7UL << RNG_CR_RNG_CONFIG2_Pos)
+#define RNG_CR_RNG_CONFIG2 RNG_CR_RNG_CONFIG2_Msk
+#define RNG_CR_CLKDIV_Pos (16U)
+#define RNG_CR_CLKDIV_Msk (0xFUL << RNG_CR_CLKDIV_Pos)
+#define RNG_CR_CLKDIV RNG_CR_CLKDIV_Msk
+#define RNG_CR_CLKDIV_0 (0x1UL << RNG_CR_CLKDIV_Pos) /*!< 0x00010000 */
+#define RNG_CR_CLKDIV_1 (0x2UL << RNG_CR_CLKDIV_Pos) /*!< 0x00020000 */
+#define RNG_CR_CLKDIV_2 (0x4UL << RNG_CR_CLKDIV_Pos) /*!< 0x00040000 */
+#define RNG_CR_CLKDIV_3 (0x8UL << RNG_CR_CLKDIV_Pos) /*!< 0x00080000 */
+#define RNG_CR_RNG_CONFIG1_Pos (20U)
+#define RNG_CR_RNG_CONFIG1_Msk (0x3FUL << RNG_CR_RNG_CONFIG1_Pos)
+#define RNG_CR_RNG_CONFIG1 RNG_CR_RNG_CONFIG1_Msk
+#define RNG_CR_CONDRST_Pos (30U)
+#define RNG_CR_CONDRST_Msk (0x1UL << RNG_CR_CONDRST_Pos)
+#define RNG_CR_CONDRST RNG_CR_CONDRST_Msk
+#define RNG_CR_CONFIGLOCK_Pos (31U)
+#define RNG_CR_CONFIGLOCK_Msk (0x1UL << RNG_CR_CONFIGLOCK_Pos)
+#define RNG_CR_CONFIGLOCK RNG_CR_CONFIGLOCK_Msk
+
+/******************** Bits definition for RNG_SR register *******************/
+#define RNG_SR_DRDY_Pos (0U)
+#define RNG_SR_DRDY_Msk (0x1UL << RNG_SR_DRDY_Pos) /*!< 0x00000001 */
+#define RNG_SR_DRDY RNG_SR_DRDY_Msk
+#define RNG_SR_CECS_Pos (1U)
+#define RNG_SR_CECS_Msk (0x1UL << RNG_SR_CECS_Pos) /*!< 0x00000002 */
+#define RNG_SR_CECS RNG_SR_CECS_Msk
+#define RNG_SR_SECS_Pos (2U)
+#define RNG_SR_SECS_Msk (0x1UL << RNG_SR_SECS_Pos) /*!< 0x00000004 */
+#define RNG_SR_SECS RNG_SR_SECS_Msk
+#define RNG_SR_CEIS_Pos (5U)
+#define RNG_SR_CEIS_Msk (0x1UL << RNG_SR_CEIS_Pos) /*!< 0x00000020 */
+#define RNG_SR_CEIS RNG_SR_CEIS_Msk
+#define RNG_SR_SEIS_Pos (6U)
+#define RNG_SR_SEIS_Msk (0x1UL << RNG_SR_SEIS_Pos) /*!< 0x00000040 */
+#define RNG_SR_SEIS RNG_SR_SEIS_Msk
+
+
+/******************** Bits definition for RNG_HTCR register *******************/
+#define RNG_HTCR_HTCFG_Pos (0U)
+#define RNG_HTCR_HTCFG_Msk (0xFFFFFFFFUL << RNG_HTCR_HTCFG_Pos) /*!< 0xFFFFFFFF */
+#define RNG_HTCR_HTCFG RNG_HTCR_HTCFG_Msk
+
+/******************** RNG Nist Compliance Values ******************************/
+#define RNG_CR_NIST_VALUE (0x00F00D00U)
+#define RNG_HTCR_NIST_VALUE (0xAAC7U)
+
+/******************************************************************************/
+/* */
+/* Digital to Analog Converter */
+/* */
+/******************************************************************************/
+#define DAC_CHANNEL2_SUPPORT /*!< DAC feature available only on specific devices: DAC channel 2 available */
+
+/******************** Bit definition for DAC_CR register ********************/
+#define DAC_CR_EN1_Pos (0U)
+#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */
+#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!*/
+#define DAC_CR_CEN1_Pos (14U)
+#define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */
+#define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!*/
+#define DAC_CR_EN2_Pos (16U)
+#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */
+#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!*/
+#define DAC_CR_CEN2_Pos (30U)
+#define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */
+#define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!*/
+
+/***************** Bit definition for DAC_SWTRIGR register ******************/
+#define DAC_SWTRIGR_SWTRIG1_Pos (0U)
+#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */
+#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!> 1U) /*!< FLASH Bank Size */
+#define FLASH_SECTOR_SIZE 0x2000U /*!< Flash Sector Size: 8 KB */
+
+/******************* Bits definition for FLASH_ACR register *****************/
+#define FLASH_ACR_LATENCY_Pos (0U)
+#define FLASH_ACR_LATENCY_Msk (0xFUL << FLASH_ACR_LATENCY_Pos) /*!< 0x0000000F */
+#define FLASH_ACR_LATENCY FLASH_ACR_LATENCY_Msk /*!< Latency */
+#define FLASH_ACR_LATENCY_0WS (0x00000000U)
+#define FLASH_ACR_LATENCY_1WS (0x00000001U)
+#define FLASH_ACR_LATENCY_2WS (0x00000002U)
+#define FLASH_ACR_LATENCY_3WS (0x00000003U)
+#define FLASH_ACR_LATENCY_4WS (0x00000004U)
+#define FLASH_ACR_LATENCY_5WS (0x00000005U)
+#define FLASH_ACR_LATENCY_6WS (0x00000006U)
+#define FLASH_ACR_LATENCY_7WS (0x00000007U)
+#define FLASH_ACR_LATENCY_8WS (0x00000008U)
+#define FLASH_ACR_LATENCY_9WS (0x00000009U)
+#define FLASH_ACR_LATENCY_10WS (0x0000000AU)
+#define FLASH_ACR_LATENCY_11WS (0x0000000BU)
+#define FLASH_ACR_LATENCY_12WS (0x0000000CU)
+#define FLASH_ACR_LATENCY_13WS (0x0000000DU)
+#define FLASH_ACR_LATENCY_14WS (0x0000000EU)
+#define FLASH_ACR_LATENCY_15WS (0x0000000FU)
+#define FLASH_ACR_WRHIGHFREQ_Pos (4U)
+#define FLASH_ACR_WRHIGHFREQ_Msk (0x3UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000030 */
+#define FLASH_ACR_WRHIGHFREQ FLASH_ACR_WRHIGHFREQ_Msk /*!< Flash signal delay */
+#define FLASH_ACR_WRHIGHFREQ_0 (0x1UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000010 */
+#define FLASH_ACR_WRHIGHFREQ_1 (0x2UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000020 */
+#define FLASH_ACR_PRFTEN_Pos (8U)
+#define FLASH_ACR_PRFTEN_Msk (0x1UL << FLASH_ACR_PRFTEN_Pos) /*!< 0x00000100 */
+#define FLASH_ACR_PRFTEN FLASH_ACR_PRFTEN_Msk /*!< Prefetch enable */
+
+/******************* Bits definition for FLASH_OPSR register ***************/
+#define FLASH_OPSR_ADDR_OP_Pos (0U)
+#define FLASH_OPSR_ADDR_OP_Msk (0xFFFFFUL << FLASH_OPSR_ADDR_OP_Pos) /*!< 0x000FFFFF */
+#define FLASH_OPSR_ADDR_OP FLASH_OPSR_ADDR_OP_Msk /*!< Interrupted operation address */
+#define FLASH_OPSR_DATA_OP_Pos (21U)
+#define FLASH_OPSR_DATA_OP_Msk (0x1UL << FLASH_OPSR_DATA_OP_Pos) /*!< 0x00200000 */
+#define FLASH_OPSR_DATA_OP FLASH_OPSR_DATA_OP_Msk /*!< Operation in Flash high-cycle data area interrupted */
+#define FLASH_OPSR_BK_OP_Pos (22U)
+#define FLASH_OPSR_BK_OP_Msk (0x1UL << FLASH_OPSR_BK_OP_Pos) /*!< 0x00400000 */
+#define FLASH_OPSR_BK_OP FLASH_OPSR_BK_OP_Msk /*!< Interrupted operation bank */
+#define FLASH_OPSR_SYSF_OP_Pos (23U)
+#define FLASH_OPSR_SYSF_OP_Msk (0x1UL << FLASH_OPSR_SYSF_OP_Pos) /*!< 0x00800000 */
+#define FLASH_OPSR_SYSF_OP FLASH_OPSR_SYSF_OP_Msk /*!< Operation in System Flash interrupted */
+#define FLASH_OPSR_OTP_OP_Pos (24U)
+#define FLASH_OPSR_OTP_OP_Msk (0x1UL << FLASH_OPSR_OTP_OP_Pos) /*!< 0x01000000 */
+#define FLASH_OPSR_OTP_OP FLASH_OPSR_OTP_OP_Msk /*!< Operation in OTP area interrupted */
+#define FLASH_OPSR_CODE_OP_Pos (29U)
+#define FLASH_OPSR_CODE_OP_Msk (0x7UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0xE0000000 */
+#define FLASH_OPSR_CODE_OP FLASH_OPSR_CODE_OP_Msk /*!< Flash memory operation code */
+#define FLASH_OPSR_CODE_OP_0 (0x1UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x20000000 */
+#define FLASH_OPSR_CODE_OP_1 (0x2UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x40000000 */
+#define FLASH_OPSR_CODE_OP_2 (0x4UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x80000000 */
+
+/******************* Bits definition for FLASH_OPTCR register *******************/
+#define FLASH_OPTCR_OPTLOCK_Pos (0U)
+#define FLASH_OPTCR_OPTLOCK_Msk (0x1UL << FLASH_OPTCR_OPTLOCK_Pos) /*!< 0x00000001 */
+#define FLASH_OPTCR_OPTLOCK FLASH_OPTCR_OPTLOCK_Msk /*!< FLASH_OPTCR lock option configuration bit */
+#define FLASH_OPTCR_OPTSTART_Pos (1U)
+#define FLASH_OPTCR_OPTSTART_Msk (0x1UL << FLASH_OPTCR_OPTSTART_Pos) /*!< 0x00000002 */
+#define FLASH_OPTCR_OPTSTART FLASH_OPTCR_OPTSTART_Msk /*!< Option byte start change option configuration bit */
+#define FLASH_OPTCR_SWAP_BANK_Pos (31U)
+#define FLASH_OPTCR_SWAP_BANK_Msk (0x1UL << FLASH_OPTCR_SWAP_BANK_Pos) /*!< 0x80000000 */
+#define FLASH_OPTCR_SWAP_BANK FLASH_OPTCR_SWAP_BANK_Msk /*!< Bank swapping option configuration bit */
+
+/******************* Bits definition for FLASH_SR register ***********************/
+#define FLASH_SR_BSY_Pos (0U)
+#define FLASH_SR_BSY_Msk (0x1UL << FLASH_SR_BSY_Pos) /*!< 0x00000001 */
+#define FLASH_SR_BSY FLASH_SR_BSY_Msk /*!< Busy flag */
+#define FLASH_SR_WBNE_Pos (1U)
+#define FLASH_SR_WBNE_Msk (0x1UL << FLASH_SR_WBNE_Pos) /*!< 0x00000002 */
+#define FLASH_SR_WBNE FLASH_SR_WBNE_Msk /*!< Write buffer not empty flag */
+#define FLASH_SR_DBNE_Pos (3U)
+#define FLASH_SR_DBNE_Msk (0x1UL << FLASH_SR_DBNE_Pos) /*!< 0x00000008 */
+#define FLASH_SR_DBNE FLASH_SR_DBNE_Msk /*!< Data buffer not empty flag */
+#define FLASH_SR_EOP_Pos (16U)
+#define FLASH_SR_EOP_Msk (0x1UL << FLASH_SR_EOP_Pos) /*!< 0x00010000 */
+#define FLASH_SR_EOP FLASH_SR_EOP_Msk /*!< End-of-program flag */
+#define FLASH_SR_WRPERR_Pos (17U)
+#define FLASH_SR_WRPERR_Msk (0x1UL << FLASH_SR_WRPERR_Pos) /*!< 0x00020000 */
+#define FLASH_SR_WRPERR FLASH_SR_WRPERR_Msk /*!< Write protection error flag */
+#define FLASH_SR_PGSERR_Pos (18U)
+#define FLASH_SR_PGSERR_Msk (0x1UL << FLASH_SR_PGSERR_Pos) /*!< 0x00040000 */
+#define FLASH_SR_PGSERR FLASH_SR_PGSERR_Msk /*!< Programming sequence error flag */
+#define FLASH_SR_STRBERR_Pos (19U)
+#define FLASH_SR_STRBERR_Msk (0x1UL << FLASH_SR_STRBERR_Pos) /*!< 0x00080000 */
+#define FLASH_SR_STRBERR FLASH_SR_STRBERR_Msk /*!< Strobe error flag */
+#define FLASH_SR_INCERR_Pos (20U)
+#define FLASH_SR_INCERR_Msk (0x1UL << FLASH_SR_INCERR_Pos) /*!< 0x00100000 */
+#define FLASH_SR_INCERR FLASH_SR_INCERR_Msk /*!< Inconsistency error flag */
+#define FLASH_SR_OBKERR_Pos (21U)
+#define FLASH_SR_OBKERR_Msk (0x1UL << FLASH_SR_OBKERR_Pos) /*!< 0x00200000 */
+#define FLASH_SR_OBKERR FLASH_SR_OBKERR_Msk /*!< OBK general error flag */
+#define FLASH_SR_OBKWERR_Pos (22U)
+#define FLASH_SR_OBKWERR_Msk (0x1UL << FLASH_SR_OBKWERR_Pos) /*!< 0x00400000 */
+#define FLASH_SR_OBKWERR FLASH_SR_OBKWERR_Msk /*!< OBK write error flag */
+#define FLASH_SR_OPTCHANGEERR_Pos (23U)
+#define FLASH_SR_OPTCHANGEERR_Msk (0x1UL << FLASH_SR_OPTCHANGEERR_Pos) /*!< 0x00800000 */
+#define FLASH_SR_OPTCHANGEERR FLASH_SR_OPTCHANGEERR_Msk /*!< Option byte change error flag */
+
+/******************* Bits definition for FLASH_CR register ***********************/
+#define FLASH_CR_LOCK_Pos (0U)
+#define FLASH_CR_LOCK_Msk (0x1UL << FLASH_CR_LOCK_Pos) /*!< 0x00000001 */
+#define FLASH_CR_LOCK FLASH_CR_LOCK_Msk /*!< Configuration lock bit */
+#define FLASH_CR_PG_Pos (1U)
+#define FLASH_CR_PG_Msk (0x1UL << FLASH_CR_PG_Pos) /*!< 0x00000002 */
+#define FLASH_CR_PG FLASH_CR_PG_Msk /*!< Programming control bit */
+#define FLASH_CR_SER_Pos (2U)
+#define FLASH_CR_SER_Msk (0x1UL << FLASH_CR_SER_Pos) /*!< 0x00000004 */
+#define FLASH_CR_SER FLASH_CR_SER_Msk /*!< Sector erase request */
+#define FLASH_CR_BER_Pos (3U)
+#define FLASH_CR_BER_Msk (0x1UL << FLASH_CR_BER_Pos) /*!< 0x00000008 */
+#define FLASH_CR_BER FLASH_CR_BER_Msk /*!< Bank erase request */
+#define FLASH_CR_FW_Pos (4U)
+#define FLASH_CR_FW_Msk (0x1UL << FLASH_CR_FW_Pos) /*!< 0x00000010 */
+#define FLASH_CR_FW FLASH_CR_FW_Msk /*!< Write forcing control bit */
+#define FLASH_CR_START_Pos (5U)
+#define FLASH_CR_START_Msk (0x1UL << FLASH_CR_START_Pos) /*!< 0x00000020 */
+#define FLASH_CR_START FLASH_CR_START_Msk /*!< Erase start control bit */
+#define FLASH_CR_SNB_Pos (6U)
+#define FLASH_CR_SNB_Msk (0x1FUL << FLASH_CR_SNB_Pos) /*!< 0x00001FC0 */
+#define FLASH_CR_SNB FLASH_CR_SNB_Msk /*!< Sector erase selection number */
+#define FLASH_CR_SNB_0 (0x01UL << FLASH_CR_SNB_Pos) /*!< 0x00000040 */
+#define FLASH_CR_SNB_1 (0x02UL << FLASH_CR_SNB_Pos) /*!< 0x00000080 */
+#define FLASH_CR_SNB_2 (0x04UL << FLASH_CR_SNB_Pos) /*!< 0x00000100 */
+#define FLASH_CR_SNB_3 (0x08UL << FLASH_CR_SNB_Pos) /*!< 0x00000200 */
+#define FLASH_CR_SNB_4 (0x10UL << FLASH_CR_SNB_Pos) /*!< 0x00000400 */
+#define FLASH_CR_SNB_5 (0x20UL << FLASH_CR_SNB_Pos) /*!< 0x00000800 */
+#define FLASH_CR_SNB_6 (0x40UL << FLASH_CR_SNB_Pos) /*!< 0x00001000 */
+#define FLASH_CR_MER_Pos (15U)
+#define FLASH_CR_MER_Msk (0x1UL << FLASH_CR_MER_Pos) /*!< 0x00008000 */
+#define FLASH_CR_MER FLASH_CR_MER_Msk /*!< Mass erase */
+#define FLASH_CR_EOPIE_Pos (16U)
+#define FLASH_CR_EOPIE_Msk (0x1UL << FLASH_CR_EOPIE_Pos) /*!< 0x00010000 */
+#define FLASH_CR_EOPIE FLASH_CR_EOPIE_Msk /*!< End-of-operation interrupt control bit */
+#define FLASH_CR_WRPERRIE_Pos (17U)
+#define FLASH_CR_WRPERRIE_Msk (0x1UL << FLASH_CR_WRPERRIE_Pos) /*!< 0x00020000 */
+#define FLASH_CR_WRPERRIE FLASH_CR_WRPERRIE_Msk /*!< Write protection error interrupt enable bit */
+#define FLASH_CR_PGSERRIE_Pos (18U)
+#define FLASH_CR_PGSERRIE_Msk (0x1UL << FLASH_CR_PGSERRIE_Pos) /*!< 0x00040000 */
+#define FLASH_CR_PGSERRIE FLASH_CR_PGSERRIE_Msk /*!< Programming sequence error interrupt enable bit */
+#define FLASH_CR_STRBERRIE_Pos (19U)
+#define FLASH_CR_STRBERRIE_Msk (0x1UL << FLASH_CR_STRBERRIE_Pos) /*!< 0x00080000 */
+#define FLASH_CR_STRBERRIE FLASH_CR_STRBERRIE_Msk /*!< Strobe error interrupt enable bit */
+#define FLASH_CR_INCERRIE_Pos (20U)
+#define FLASH_CR_INCERRIE_Msk (0x1UL << FLASH_CR_INCERRIE_Pos) /*!< 0x00100000 */
+#define FLASH_CR_INCERRIE FLASH_CR_INCERRIE_Msk /*!< Inconsistency error interrupt enable bit */
+#define FLASH_CR_OBKERRIE_Pos (21U)
+#define FLASH_CR_OBKERRIE_Msk (0x1UL << FLASH_CR_OBKERRIE_Pos) /*!< 0x00200000 */
+#define FLASH_CR_OBKERRIE FLASH_CR_OBKERRIE_Msk /*!< OBK general error interrupt enable bitt */
+#define FLASH_CR_OBKWERRIE_Pos (22U)
+#define FLASH_CR_OBKWERRIE_Msk (0x1UL << FLASH_CR_OBKWERRIE_Pos) /*!< 0x00400000 */
+#define FLASH_CR_OBKWERRIE FLASH_CR_OBKWERRIE_Msk /*!< OBK write error interrupt enable bit */
+#define FLASH_CR_OPTCHANGEERRIE_Pos (23U)
+#define FLASH_CR_OPTCHANGEERRIE_Msk (0x1UL << FLASH_CR_OPTCHANGEERRIE_Pos) /*!< 0x00800000 */
+#define FLASH_CR_OPTCHANGEERRIE FLASH_CR_OPTCHANGEERRIE_Msk /*!< Option byte change error interrupt enable bit */
+#define FLASH_CR_INV_Pos (29U)
+#define FLASH_CR_INV_Msk (0x1UL << FLASH_CR_INV_Pos) /*!< 0x20000000 */
+#define FLASH_CR_INV FLASH_CR_INV_Msk /*!< Flash Security State Invert */
+#define FLASH_CR_BKSEL_Pos (31U)
+#define FLASH_CR_BKSEL_Msk (0x1UL << FLASH_CR_BKSEL_Pos) /*!< 0x10000000 */
+#define FLASH_CR_BKSEL FLASH_CR_BKSEL_Msk /*!< Bank selector */
+
+/******************* Bits definition for FLASH_CCR register *******************/
+#define FLASH_CCR_CLR_EOP_Pos (16U)
+#define FLASH_CCR_CLR_EOP_Msk (0x1UL << FLASH_CCR_CLR_EOP_Pos) /*!< 0x00010000 */
+#define FLASH_CCR_CLR_EOP FLASH_CCR_CLR_EOP_Msk /*!< EOP flag clear bit */
+#define FLASH_CCR_CLR_WRPERR_Pos (17U)
+#define FLASH_CCR_CLR_WRPERR_Msk (0x1UL << FLASH_CCR_CLR_WRPERR_Pos) /*!< 0x00020000 */
+#define FLASH_CCR_CLR_WRPERR FLASH_CCR_CLR_WRPERR_Msk /*!< WRPERR flag clear bit */
+#define FLASH_CCR_CLR_PGSERR_Pos (18U)
+#define FLASH_CCR_CLR_PGSERR_Msk (0x1UL << FLASH_CCR_CLR_PGSERR_Pos) /*!< 0x00040000 */
+#define FLASH_CCR_CLR_PGSERR FLASH_CCR_CLR_PGSERR_Msk /*!< PGSERR flag clear bit */
+#define FLASH_CCR_CLR_STRBERR_Pos (19U)
+#define FLASH_CCR_CLR_STRBERR_Msk (0x1UL << FLASH_CCR_CLR_STRBERR_Pos) /*!< 0x00080000 */
+#define FLASH_CCR_CLR_STRBERR FLASH_CCR_CLR_STRBERR_Msk /*!< STRBERR flag clear bit */
+#define FLASH_CCR_CLR_INCERR_Pos (20U)
+#define FLASH_CCR_CLR_INCERR_Msk (0x1UL << FLASH_CCR_CLR_INCERR_Pos) /*!< 0x00100000 */
+#define FLASH_CCR_CLR_INCERR FLASH_CCR_CLR_INCERR_Msk /*!< INCERR flag clear bit */
+#define FLASH_CCR_CLR_OBKERR_Pos (21U)
+#define FLASH_CCR_CLR_OBKERR_Msk (0x1UL << FLASH_CCR_CLR_OBKERR_Pos) /*!< 0x00200000 */
+#define FLASH_CCR_CLR_OBKERR FLASH_CCR_CLR_OBKERR_Msk /*!< OBKERR flag clear bit */
+#define FLASH_CCR_CLR_OBKWERR_Pos (22U)
+#define FLASH_CCR_CLR_OBKWERR_Msk (0x1UL << FLASH_CCR_CLR_OBKWERR_Pos) /*!< 0x00400000 */
+#define FLASH_CCR_CLR_OBKWERR FLASH_CCR_CLR_OBKWERR_Msk /*!< OBKWERR flag clear bit */
+#define FLASH_CCR_CLR_OPTCHANGEERR_Pos (23U)
+#define FLASH_CCR_CLR_OPTCHANGEERR_Msk (0x1UL << FLASH_CCR_CLR_OPTCHANGEERR_Pos) /*!< 0x00800000 */
+#define FLASH_CCR_CLR_OPTCHANGEERR FLASH_CCR_CLR_OPTCHANGEERR_Msk /*!< Option byte change error clear bit */
+
+/****************** Bits definition for FLASH_PRIVCFGR register ***********/
+#define FLASH_PRIVCFGR_SPRIV_Pos (0U)
+#define FLASH_PRIVCFGR_SPRIV_Msk (0x1UL << FLASH_PRIVCFGR_SPRIV_Pos) /*!< 0x00000001 */
+#define FLASH_PRIVCFGR_SPRIV FLASH_PRIVCFGR_SPRIV_Msk /*!< Privilege protection for secure registers */
+#define FLASH_PRIVCFGR_NSPRIV_Pos (1U)
+#define FLASH_PRIVCFGR_NSPRIV_Msk (0x1UL << FLASH_PRIVCFGR_NSPRIV_Pos) /*!< 0x00000002 */
+#define FLASH_PRIVCFGR_NSPRIV FLASH_PRIVCFGR_NSPRIV_Msk /*!< Privilege protection for non-secure registers */
+
+/****************** Bits definition for FLASH_OBKCFGR register *****************/
+#define FLASH_OBKCFGR_LOCK_Pos (0U)
+#define FLASH_OBKCFGR_LOCK_Msk (0x1UL << FLASH_OBKCFGR_LOCK_Pos) /*!< 0x00000001 */
+#define FLASH_OBKCFGR_LOCK FLASH_OBKCFGR_LOCK_Msk /*!< OBKCFGR lock */
+#define FLASH_OBKCFGR_SWAP_SECT_REQ_Pos (1U)
+#define FLASH_OBKCFGR_SWAP_SECT_REQ_Msk (0x1UL << FLASH_OBKCFGR_SWAP_SECT_REQ_Pos) /*!< 0x00000002 */
+#define FLASH_OBKCFGR_SWAP_SECT_REQ FLASH_OBKCFGR_SWAP_SECT_REQ_Msk /*!< OBK swap sector request */
+#define FLASH_OBKCFGR_ALT_SECT_Pos (2U)
+#define FLASH_OBKCFGR_ALT_SECT_Msk (0x1UL << FLASH_OBKCFGR_ALT_SECT_Pos) /*!< 0x00000004 */
+#define FLASH_OBKCFGR_ALT_SECT FLASH_OBKCFGR_ALT_SECT_Msk /*!< Alternate sector */
+#define FLASH_OBKCFGR_ALT_SECT_ERASE_Pos (3U)
+#define FLASH_OBKCFGR_ALT_SECT_ERASE_Msk (0x1UL << FLASH_OBKCFGR_ALT_SECT_ERASE_Pos) /*!< 0x00000008 */
+#define FLASH_OBKCFGR_ALT_SECT_ERASE FLASH_OBKCFGR_ALT_SECT_ERASE_Msk /*!< Alternate sector erase */
+#define FLASH_OBKCFGR_SWAP_OFFSET_Pos (16U)
+#define FLASH_OBKCFGR_SWAP_OFFSET_Msk (0x1FFUL << FLASH_OBKCFGR_SWAP_OFFSET_Pos) /*!< 0x01FF0000 */
+#define FLASH_OBKCFGR_SWAP_OFFSET FLASH_OBKCFGR_SWAP_OFFSET_Msk /*!< Swap offset */
+
+/****************** Bits definition for FLASH_HDPEXTR register *****************/
+#define FLASH_HDPEXTR_HDP1_EXT_Pos (0U)
+#define FLASH_HDPEXTR_HDP1_EXT_Msk (0x1FUL << FLASH_HDPEXTR_HDP1_EXT_Pos) /*!< 0x0000001F */
+#define FLASH_HDPEXTR_HDP1_EXT FLASH_HDPEXTR_HDP1_EXT_Msk /*!< HDP area extension in 8kB sectors in bank 1 */
+#define FLASH_HDPEXTR_HDP2_EXT_Pos (16U)
+#define FLASH_HDPEXTR_HDP2_EXT_Msk (0x1FUL << FLASH_HDPEXTR_HDP2_EXT_Pos) /*!< 0x001F0000 */
+#define FLASH_HDPEXTR_HDP2_EXT FLASH_HDPEXTR_HDP2_EXT_Msk /*!< HDP area extension in 8kB sectors in bank 2 */
+
+/******************* Bits definition for FLASH_OPTSR register ***************/
+#define FLASH_OPTSR_BOR_LEV_Pos (0U)
+#define FLASH_OPTSR_BOR_LEV_Msk (0x3UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000003 */
+#define FLASH_OPTSR_BOR_LEV FLASH_OPTSR_BOR_LEV_Msk /*!< Brownout level option bit */
+#define FLASH_OPTSR_BOR_LEV_0 (0x1UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000001 */
+#define FLASH_OPTSR_BOR_LEV_1 (0x2UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000002 */
+#define FLASH_OPTSR_BORH_EN_Pos (2U)
+#define FLASH_OPTSR_BORH_EN_Msk (0x1UL << FLASH_OPTSR_BORH_EN_Pos) /*!< 0x00000004 */
+#define FLASH_OPTSR_BORH_EN FLASH_OPTSR_BORH_EN_Msk /*!< Brownout high enable configuration bit */
+#define FLASH_OPTSR_IWDG_SW_Pos (3U)
+#define FLASH_OPTSR_IWDG_SW_Msk (0x1UL << FLASH_OPTSR_IWDG_SW_Pos) /*!< 0x00000008 */
+#define FLASH_OPTSR_IWDG_SW FLASH_OPTSR_IWDG_SW_Msk /*!< IWDG control mode option bit */
+#define FLASH_OPTSR_WWDG_SW_Pos (4U)
+#define FLASH_OPTSR_WWDG_SW_Msk (0x1UL << FLASH_OPTSR_WWDG_SW_Pos) /*!< 0x00000010 */
+#define FLASH_OPTSR_WWDG_SW FLASH_OPTSR_WWDG_SW_Msk /*!< WWDG control mode option bit */
+#define FLASH_OPTSR_NRST_STOP_Pos (6U)
+#define FLASH_OPTSR_NRST_STOP_Msk (0x1UL << FLASH_OPTSR_NRST_STOP_Pos) /*!< 0x00000040 */
+#define FLASH_OPTSR_NRST_STOP FLASH_OPTSR_NRST_STOP_Msk /*!< Stop mode entry reset option bit */
+#define FLASH_OPTSR_NRST_STDBY_Pos (7U)
+#define FLASH_OPTSR_NRST_STDBY_Msk (0x1UL << FLASH_OPTSR_NRST_STDBY_Pos) /*!< 0x00000080 */
+#define FLASH_OPTSR_NRST_STDBY FLASH_OPTSR_NRST_STDBY_Msk /*!< Standby mode entry reset option bit */
+#define FLASH_OPTSR_PRODUCT_STATE_Pos (8U)
+#define FLASH_OPTSR_PRODUCT_STATE_Msk (0xFFUL << FLASH_OPTSR_PRODUCT_STATE_Pos) /*!< 0x0000FF00 */
+#define FLASH_OPTSR_PRODUCT_STATE FLASH_OPTSR_PRODUCT_STATE_Msk /*!< Life state code option byte */
+#define FLASH_OPTSR_IO_VDD_HSLV_Pos (16U)
+#define FLASH_OPTSR_IO_VDD_HSLV_Msk (0x1UL << FLASH_OPTSR_IO_VDD_HSLV_Pos) /*!< 0x00010000 */
+#define FLASH_OPTSR_IO_VDD_HSLV FLASH_OPTSR_IO_VDD_HSLV_Msk /*!< VDD I/O high-speed at low-voltage option bit */
+#define FLASH_OPTSR_IO_VDDIO2_HSLV_Pos (17U)
+#define FLASH_OPTSR_IO_VDDIO2_HSLV_Msk (0x1UL << FLASH_OPTSR_IO_VDDIO2_HSLV_Pos) /*!< 0x00020000 */
+#define FLASH_OPTSR_IO_VDDIO2_HSLV FLASH_OPTSR_IO_VDDIO2_HSLV_Msk /*!< VDDIO2 I/O high-speed at low-voltage option bit */
+#define FLASH_OPTSR_IWDG_STOP_Pos (20U)
+#define FLASH_OPTSR_IWDG_STOP_Msk (0x1UL << FLASH_OPTSR_IWDG_STOP_Pos) /*!< 0x00100000 */
+#define FLASH_OPTSR_IWDG_STOP FLASH_OPTSR_IWDG_STOP_Msk /*!< Independent watchdog counter freeze in Stop mode */
+#define FLASH_OPTSR_IWDG_STDBY_Pos (21U)
+#define FLASH_OPTSR_IWDG_STDBY_Msk (0x1UL << FLASH_OPTSR_IWDG_STDBY_Pos) /*!< 0x00200000 */
+#define FLASH_OPTSR_IWDG_STDBY FLASH_OPTSR_IWDG_STDBY_Msk /*!< Independent watchdog counter freeze in Standby mode */
+#define FLASH_OPTSR_BOOT_UBE_Pos (22U)
+#define FLASH_OPTSR_BOOT_UBE_Msk (0xFFUL << FLASH_OPTSR_BOOT_UBE_Pos) /*!< 0x3FC00000 */
+#define FLASH_OPTSR_BOOT_UBE FLASH_OPTSR_BOOT_UBE_Msk /*!< Unique boot entry option byte */
+#define FLASH_OPTSR_SWAP_BANK_Pos (31U)
+#define FLASH_OPTSR_SWAP_BANK_Msk (0x1UL << FLASH_OPTSR_SWAP_BANK_Pos) /*!< 0x80000000 */
+#define FLASH_OPTSR_SWAP_BANK FLASH_OPTSR_SWAP_BANK_Msk /*!< Bank swapping option bit */
+
+/******************* Bits definition for FLASH_EPOCHR register ***************/
+#define FLASH_EPOCHR_EPOCH_Pos (0U)
+#define FLASH_EPOCHR_EPOCH_Msk (0xFFFFFFUL << FLASH_EPOCHR_EPOCH_Pos) /*!< 0x00FFFFFF */
+#define FLASH_EPOCHR_EPOCH FLASH_EPOCHR_EPOCH_Msk /*!< EPOCH counter */
+
+/******************* Bits definition for FLASH_OPTSR2 register ***************/
+#define FLASH_OPTSR2_SRAM1_3_RST_Pos (2U)
+#define FLASH_OPTSR2_SRAM1_3_RST_Msk (0x1UL << FLASH_OPTSR2_SRAM1_3_RST_Pos) /*!< 0x00000004 */
+#define FLASH_OPTSR2_SRAM1_3_RST FLASH_OPTSR2_SRAM1_3_RST_Msk /*!< SRAM1 and SRAM3 erased when a system reset occurs */
+#define FLASH_OPTSR2_SRAM2_RST_Pos (3U)
+#define FLASH_OPTSR2_SRAM2_RST_Msk (0x1UL << FLASH_OPTSR2_SRAM2_RST_Pos) /*!< 0x00000008 */
+#define FLASH_OPTSR2_SRAM2_RST FLASH_OPTSR2_SRAM2_RST_Msk /*!< SRAM2 erased when a system reset occurs*/
+#define FLASH_OPTSR2_BKPRAM_ECC_Pos (4U)
+#define FLASH_OPTSR2_BKPRAM_ECC_Msk (0x1UL << FLASH_OPTSR2_BKPRAM_ECC_Pos) /*!< 0x00000010 */
+#define FLASH_OPTSR2_BKPRAM_ECC FLASH_OPTSR2_BKPRAM_ECC_Msk /*!< Backup RAM ECC detection and correction enable */
+#define FLASH_OPTSR2_SRAM2_ECC_Pos (6U)
+#define FLASH_OPTSR2_SRAM2_ECC_Msk (0x1UL << FLASH_OPTSR2_SRAM2_ECC_Pos) /*!< 0x00000040 */
+#define FLASH_OPTSR2_SRAM2_ECC FLASH_OPTSR2_SRAM2_ECC_Msk /*!< SRAM2 ECC detection and correction disable */
+#define FLASH_OPTSR2_USBPD_DIS_Pos (8U)
+#define FLASH_OPTSR2_USBPD_DIS_Msk (0x1UL << FLASH_OPTSR2_USBPD_DIS_Pos) /*!< 0x00000100 */
+#define FLASH_OPTSR2_USBPD_DIS FLASH_OPTSR2_USBPD_DIS_Msk /*!< USB power delivery configuration disable */
+#define FLASH_OPTSR2_TZEN_Pos (24U)
+#define FLASH_OPTSR2_TZEN_Msk (0xFFUL << FLASH_OPTSR2_TZEN_Pos) /*!< 0xFF000000 */
+#define FLASH_OPTSR2_TZEN FLASH_OPTSR2_TZEN_Msk /*!< TrustZone enable */
+
+/**************** Bits definition for FLASH_BOOTR register **********************/
+#define FLASH_BOOTR_BOOT_LOCK_Pos (0U)
+#define FLASH_BOOTR_BOOT_LOCK_Msk (0xFFUL << FLASH_BOOTR_BOOT_LOCK_Pos) /*!< 0x000000FF */
+#define FLASH_BOOTR_BOOT_LOCK FLASH_BOOTR_BOOT_LOCK_Msk /*!< Boot Lock */
+#define FLASH_BOOTR_BOOTADD_Pos (8U)
+#define FLASH_BOOTR_BOOTADD_Msk (0xFFFFFFUL << FLASH_BOOTR_BOOTADD_Pos) /*!< 0xFFFFFF00 */
+#define FLASH_BOOTR_BOOTADD FLASH_BOOTR_BOOTADD_Msk /*!< Boot address */
+
+/**************** Bits definition for FLASH_PRIVBBR register *******************/
+#define FLASH_PRIVBBR_PRIVBB_Pos (0U)
+#define FLASH_PRIVBBR_PRIVBB_Msk (0xFFFFFFFFUL << FLASH_PRIVBBR_PRIVBB_Pos) /*!< 0xFFFFFFFF */
+#define FLASH_PRIVBBR_PRIVBB FLASH_PRIVBBR_PRIVBB_Msk /*!< Privileged/unprivileged 8-Kbyte Flash sector attribute */
+
+/***************** Bits definition for FLASH_SECWMR register ********************/
+#define FLASH_SECWMR_SECWM_STRT_Pos (0U)
+#define FLASH_SECWMR_SECWM_STRT_Msk (0x1FUL << FLASH_SECWMR_SECWM_STRT_Pos) /*!< 0x0000001F */
+#define FLASH_SECWMR_SECWM_STRT FLASH_SECWMR_SECWM_STRT_Msk /*!< Start sector of secure area */
+#define FLASH_SECWMR_SECWM_END_Pos (16U)
+#define FLASH_SECWMR_SECWM_END_Msk (0x1FUL << FLASH_SECWMR_SECWM_END_Pos) /*!< 0x001F0000 */
+#define FLASH_SECWMR_SECWM_END FLASH_SECWMR_SECWM_END_Msk /*!< End sector of secure area */
+
+/***************** Bits definition for FLASH_WRPR register *********************/
+#define FLASH_WRPR_WRPSG_Pos (0U)
+#define FLASH_WRPR_WRPSG_Msk (0x000000FFUL << FLASH_WRPR_WRPSG_Pos) /*!< 0x000000FF */
+#define FLASH_WRPR_WRPSG FLASH_WRPR_WRPSG_Msk /*!< Sector group protection option status */
+
+/***************** Bits definition for FLASH_EDATA register ********************/
+#define FLASH_EDATAR_EDATA_STRT_Pos (0U)
+#define FLASH_EDATAR_EDATA_STRT_Msk (0x7UL << FLASH_EDATAR_EDATA_STRT_Pos) /*!< 0x00000007 */
+#define FLASH_EDATAR_EDATA_STRT FLASH_EDATAR_EDATA_STRT_Msk /*!< Flash high-cycle data start sector */
+#define FLASH_EDATAR_EDATA_EN_Pos (15U)
+#define FLASH_EDATAR_EDATA_EN_Msk (0x1UL << FLASH_EDATAR_EDATA_EN_Pos) /*!< 0x00008000 */
+#define FLASH_EDATAR_EDATA_EN FLASH_EDATAR_EDATA_EN_Msk /*!< Flash high-cycle data enable */
+
+/***************** Bits definition for FLASH_HDPR register ********************/
+#define FLASH_HDPR_HDP_STRT_Pos (0U)
+#define FLASH_HDPR_HDP_STRT_Msk (0x1FUL << FLASH_HDPR_HDP_STRT_Pos) /*!< 0x0000001F */
+#define FLASH_HDPR_HDP_STRT FLASH_HDPR_HDP_STRT_Msk /*!< Start sector of hide protection area */
+#define FLASH_HDPR_HDP_END_Pos (16U)
+#define FLASH_HDPR_HDP_END_Msk (0x1FUL << FLASH_HDPR_HDP_END_Pos) /*!< 0x001F0000 */
+#define FLASH_HDPR_HDP_END FLASH_HDPR_HDP_END_Msk /*!< End sector of hide protection area */
+
+/******************* Bits definition for FLASH_ECCR register ***************/
+#define FLASH_ECCR_ADDR_ECC_Pos (0U)
+#define FLASH_ECCR_ADDR_ECC_Msk (0xFFFFUL << FLASH_ECCR_ADDR_ECC_Pos) /*!< 0x0000FFFF */
+#define FLASH_ECCR_ADDR_ECC FLASH_ECCR_ADDR_ECC_Msk /*!< ECC fail address */
+#define FLASH_ECCR_OBK_ECC_Pos (20U)
+#define FLASH_ECCR_OBK_ECC_Msk (0x1UL << FLASH_ECCR_OBK_ECC_Pos) /*!< 0x00200000 */
+#define FLASH_ECCR_OBK_ECC FLASH_ECCR_OBK_ECC_Msk /*!< Flash OB Keys storage area ECC fail */
+#define FLASH_ECCR_DATA_ECC_Pos (21U)
+#define FLASH_ECCR_DATA_ECC_Msk (0x1UL << FLASH_ECCR_DATA_ECC_Pos) /*!< 0x00400000 */
+#define FLASH_ECCR_DATA_ECC FLASH_ECCR_DATA_ECC_Msk /*!< Flash high-cycle data ECC fail */
+#define FLASH_ECCR_BK_ECC_Pos (22U)
+#define FLASH_ECCR_BK_ECC_Msk (0x1UL << FLASH_ECCR_BK_ECC_Pos) /*!< 0x00400000 */
+#define FLASH_ECCR_BK_ECC FLASH_ECCR_BK_ECC_Msk /*!< ECC fail bank */
+#define FLASH_ECCR_SYSF_ECC_Pos (23U)
+#define FLASH_ECCR_SYSF_ECC_Msk (0x1UL << FLASH_ECCR_SYSF_ECC_Pos) /*!< 0x00800000 */
+#define FLASH_ECCR_SYSF_ECC FLASH_ECCR_SYSF_ECC_Msk /*!< System Flash ECC fail */
+#define FLASH_ECCR_OTP_ECC_Pos (24U)
+#define FLASH_ECCR_OTP_ECC_Msk (0x1UL << FLASH_ECCR_OTP_ECC_Pos) /*!< 0x01000000 */
+#define FLASH_ECCR_OTP_ECC FLASH_ECCR_OTP_ECC_Msk /*!< Flash OTP ECC fail */
+#define FLASH_ECCR_ECCIE_Pos (25U)
+#define FLASH_ECCR_ECCIE_Msk (0x1UL << FLASH_ECCR_ECCIE_Pos) /*!< 0x02000000 */
+#define FLASH_ECCR_ECCIE FLASH_ECCR_ECCIE_Msk /*!< ECC correction interrupt enable */
+#define FLASH_ECCR_ECCC_Pos (30U)
+#define FLASH_ECCR_ECCC_Msk (0x1UL << FLASH_ECCR_ECCC_Pos) /*!< 0x40000000 */
+#define FLASH_ECCR_ECCC FLASH_ECCR_ECCC_Msk /*!< ECC correction */
+#define FLASH_ECCR_ECCD_Pos (31U)
+#define FLASH_ECCR_ECCD_Msk (0x1UL << FLASH_ECCR_ECCD_Pos) /*!< 0x80000000 */
+#define FLASH_ECCR_ECCD FLASH_ECCR_ECCD_Msk /*!< ECC detection */
+
+/******************* Bits definition for FLASH_ECCDR register ***************/
+#define FLASH_ECCDR_FAIL_DATA_Pos (0U)
+#define FLASH_ECCDR_FAIL_DATA_Msk (0xFFFFUL << FLASH_ECCDR_FAIL_DATA_Pos) /*!< 0x0000FFFF */
+#define FLASH_ECCDR_FAIL_DATA FLASH_ECCDR_FAIL_DATA_Msk /*!< ECC fail data */
+
+/******************************************************************************/
+/* */
+/* Flexible Memory Controller */
+/* */
+/******************************************************************************/
+/****************** Bit definition for FMC_BCR1 register *******************/
+#define FMC_BCR1_CCLKEN_Pos (20U)
+#define FMC_BCR1_CCLKEN_Msk (0x1UL << FMC_BCR1_CCLKEN_Pos) /*!< 0x00100000 */
+#define FMC_BCR1_CCLKEN FMC_BCR1_CCLKEN_Msk /*! */
+
+/******************** Bits definition for RTC_ALRMAR register ***************/
+#define RTC_ALRMAR_SU_Pos (0U)
+#define RTC_ALRMAR_SU_Msk (0xFUL << RTC_ALRMAR_SU_Pos) /*!< 0x0000000F */
+#define RTC_ALRMAR_SU RTC_ALRMAR_SU_Msk
+#define RTC_ALRMAR_SU_0 (0x1UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000001 */
+#define RTC_ALRMAR_SU_1 (0x2UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000002 */
+#define RTC_ALRMAR_SU_2 (0x4UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000004 */
+#define RTC_ALRMAR_SU_3 (0x8UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000008 */
+#define RTC_ALRMAR_ST_Pos (4U)
+#define RTC_ALRMAR_ST_Msk (0x7UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000070 */
+#define RTC_ALRMAR_ST RTC_ALRMAR_ST_Msk
+#define RTC_ALRMAR_ST_0 (0x1UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000010 */
+#define RTC_ALRMAR_ST_1 (0x2UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000020 */
+#define RTC_ALRMAR_ST_2 (0x4UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000040 */
+#define RTC_ALRMAR_MSK1_Pos (7U)
+#define RTC_ALRMAR_MSK1_Msk (0x1UL << RTC_ALRMAR_MSK1_Pos) /*!< 0x00000080 */
+#define RTC_ALRMAR_MSK1 RTC_ALRMAR_MSK1_Msk
+#define RTC_ALRMAR_MNU_Pos (8U)
+#define RTC_ALRMAR_MNU_Msk (0xFUL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000F00 */
+#define RTC_ALRMAR_MNU RTC_ALRMAR_MNU_Msk
+#define RTC_ALRMAR_MNU_0 (0x1UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000100 */
+#define RTC_ALRMAR_MNU_1 (0x2UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000200 */
+#define RTC_ALRMAR_MNU_2 (0x4UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000400 */
+#define RTC_ALRMAR_MNU_3 (0x8UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000800 */
+#define RTC_ALRMAR_MNT_Pos (12U)
+#define RTC_ALRMAR_MNT_Msk (0x7UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00007000 */
+#define RTC_ALRMAR_MNT RTC_ALRMAR_MNT_Msk
+#define RTC_ALRMAR_MNT_0 (0x1UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00001000 */
+#define RTC_ALRMAR_MNT_1 (0x2UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00002000 */
+#define RTC_ALRMAR_MNT_2 (0x4UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00004000 */
+#define RTC_ALRMAR_MSK2_Pos (15U)
+#define RTC_ALRMAR_MSK2_Msk (0x1UL << RTC_ALRMAR_MSK2_Pos) /*!< 0x00008000 */
+#define RTC_ALRMAR_MSK2 RTC_ALRMAR_MSK2_Msk
+#define RTC_ALRMAR_HU_Pos (16U)
+#define RTC_ALRMAR_HU_Msk (0xFUL << RTC_ALRMAR_HU_Pos) /*!< 0x000F0000 */
+#define RTC_ALRMAR_HU RTC_ALRMAR_HU_Msk
+#define RTC_ALRMAR_HU_0 (0x1UL << RTC_ALRMAR_HU_Pos) /*!< 0x00010000 */
+#define RTC_ALRMAR_HU_1 (0x2UL << RTC_ALRMAR_HU_Pos) /*!< 0x00020000 */
+#define RTC_ALRMAR_HU_2 (0x4UL << RTC_ALRMAR_HU_Pos) /*!< 0x00040000 */
+#define RTC_ALRMAR_HU_3 (0x8UL << RTC_ALRMAR_HU_Pos) /*!< 0x00080000 */
+#define RTC_ALRMAR_HT_Pos (20U)
+#define RTC_ALRMAR_HT_Msk (0x3UL << RTC_ALRMAR_HT_Pos) /*!< 0x00300000 */
+#define RTC_ALRMAR_HT RTC_ALRMAR_HT_Msk
+#define RTC_ALRMAR_HT_0 (0x1UL << RTC_ALRMAR_HT_Pos) /*!< 0x00100000 */
+#define RTC_ALRMAR_HT_1 (0x2UL << RTC_ALRMAR_HT_Pos) /*!< 0x00200000 */
+#define RTC_ALRMAR_PM_Pos (22U)
+#define RTC_ALRMAR_PM_Msk (0x1UL << RTC_ALRMAR_PM_Pos) /*!< 0x00400000 */
+#define RTC_ALRMAR_PM RTC_ALRMAR_PM_Msk
+#define RTC_ALRMAR_MSK3_Pos (23U)
+#define RTC_ALRMAR_MSK3_Msk (0x1UL << RTC_ALRMAR_MSK3_Pos) /*!< 0x00800000 */
+#define RTC_ALRMAR_MSK3 RTC_ALRMAR_MSK3_Msk
+#define RTC_ALRMAR_DU_Pos (24U)
+#define RTC_ALRMAR_DU_Msk (0xFUL << RTC_ALRMAR_DU_Pos) /*!< 0x0F000000 */
+#define RTC_ALRMAR_DU RTC_ALRMAR_DU_Msk
+#define RTC_ALRMAR_DU_0 (0x1UL << RTC_ALRMAR_DU_Pos) /*!< 0x01000000 */
+#define RTC_ALRMAR_DU_1 (0x2UL << RTC_ALRMAR_DU_Pos) /*!< 0x02000000 */
+#define RTC_ALRMAR_DU_2 (0x4UL << RTC_ALRMAR_DU_Pos) /*!< 0x04000000 */
+#define RTC_ALRMAR_DU_3 (0x8UL << RTC_ALRMAR_DU_Pos) /*!< 0x08000000 */
+#define RTC_ALRMAR_DT_Pos (28U)
+#define RTC_ALRMAR_DT_Msk (0x3UL << RTC_ALRMAR_DT_Pos) /*!< 0x30000000 */
+#define RTC_ALRMAR_DT RTC_ALRMAR_DT_Msk
+#define RTC_ALRMAR_DT_0 (0x1UL << RTC_ALRMAR_DT_Pos) /*!< 0x10000000 */
+#define RTC_ALRMAR_DT_1 (0x2UL << RTC_ALRMAR_DT_Pos) /*!< 0x20000000 */
+#define RTC_ALRMAR_WDSEL_Pos (30U)
+#define RTC_ALRMAR_WDSEL_Msk (0x1UL << RTC_ALRMAR_WDSEL_Pos) /*!< 0x40000000 */
+#define RTC_ALRMAR_WDSEL RTC_ALRMAR_WDSEL_Msk
+#define RTC_ALRMAR_MSK4_Pos (31U)
+#define RTC_ALRMAR_MSK4_Msk (0x1UL << RTC_ALRMAR_MSK4_Pos) /*!< 0x80000000 */
+#define RTC_ALRMAR_MSK4 RTC_ALRMAR_MSK4_Msk
+
+/******************** Bits definition for RTC_ALRMASSR register *************/
+#define RTC_ALRMASSR_SS_Pos (0U)
+#define RTC_ALRMASSR_SS_Msk (0x7FFFUL << RTC_ALRMASSR_SS_Pos) /*!< 0x00007FFF */
+#define RTC_ALRMASSR_SS RTC_ALRMASSR_SS_Msk
+#define RTC_ALRMASSR_MASKSS_Pos (24U)
+#define RTC_ALRMASSR_MASKSS_Msk (0x3FUL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x3F000000 */
+#define RTC_ALRMASSR_MASKSS RTC_ALRMASSR_MASKSS_Msk
+#define RTC_ALRMASSR_MASKSS_0 (0x1UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x01000000 */
+#define RTC_ALRMASSR_MASKSS_1 (0x2UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x02000000 */
+#define RTC_ALRMASSR_MASKSS_2 (0x4UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x04000000 */
+#define RTC_ALRMASSR_MASKSS_3 (0x8UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x08000000 */
+#define RTC_ALRMASSR_MASKSS_4 (0x10UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x10000000 */
+#define RTC_ALRMASSR_MASKSS_5 (0x20UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x20000000 */
+#define RTC_ALRMASSR_SSCLR_Pos (31U)
+#define RTC_ALRMASSR_SSCLR_Msk (0x1UL << RTC_ALRMASSR_SSCLR_Pos) /*!< 0x80000000 */
+#define RTC_ALRMASSR_SSCLR RTC_ALRMASSR_SSCLR_Msk
+
+/******************** Bits definition for RTC_ALRMBR register ***************/
+#define RTC_ALRMBR_SU_Pos (0U)
+#define RTC_ALRMBR_SU_Msk (0xFUL << RTC_ALRMBR_SU_Pos) /*!< 0x0000000F */
+#define RTC_ALRMBR_SU RTC_ALRMBR_SU_Msk
+#define RTC_ALRMBR_SU_0 (0x1UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000001 */
+#define RTC_ALRMBR_SU_1 (0x2UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000002 */
+#define RTC_ALRMBR_SU_2 (0x4UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000004 */
+#define RTC_ALRMBR_SU_3 (0x8UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000008 */
+#define RTC_ALRMBR_ST_Pos (4U)
+#define RTC_ALRMBR_ST_Msk (0x7UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000070 */
+#define RTC_ALRMBR_ST RTC_ALRMBR_ST_Msk
+#define RTC_ALRMBR_ST_0 (0x1UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000010 */
+#define RTC_ALRMBR_ST_1 (0x2UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000020 */
+#define RTC_ALRMBR_ST_2 (0x4UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000040 */
+#define RTC_ALRMBR_MSK1_Pos (7U)
+#define RTC_ALRMBR_MSK1_Msk (0x1UL << RTC_ALRMBR_MSK1_Pos) /*!< 0x00000080 */
+#define RTC_ALRMBR_MSK1 RTC_ALRMBR_MSK1_Msk
+#define RTC_ALRMBR_MNU_Pos (8U)
+#define RTC_ALRMBR_MNU_Msk (0xFUL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000F00 */
+#define RTC_ALRMBR_MNU RTC_ALRMBR_MNU_Msk
+#define RTC_ALRMBR_MNU_0 (0x1UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000100 */
+#define RTC_ALRMBR_MNU_1 (0x2UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000200 */
+#define RTC_ALRMBR_MNU_2 (0x4UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000400 */
+#define RTC_ALRMBR_MNU_3 (0x8UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000800 */
+#define RTC_ALRMBR_MNT_Pos (12U)
+#define RTC_ALRMBR_MNT_Msk (0x7UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00007000 */
+#define RTC_ALRMBR_MNT RTC_ALRMBR_MNT_Msk
+#define RTC_ALRMBR_MNT_0 (0x1UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00001000 */
+#define RTC_ALRMBR_MNT_1 (0x2UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00002000 */
+#define RTC_ALRMBR_MNT_2 (0x4UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00004000 */
+#define RTC_ALRMBR_MSK2_Pos (15U)
+#define RTC_ALRMBR_MSK2_Msk (0x1UL << RTC_ALRMBR_MSK2_Pos) /*!< 0x00008000 */
+#define RTC_ALRMBR_MSK2 RTC_ALRMBR_MSK2_Msk
+#define RTC_ALRMBR_HU_Pos (16U)
+#define RTC_ALRMBR_HU_Msk (0xFUL << RTC_ALRMBR_HU_Pos) /*!< 0x000F0000 */
+#define RTC_ALRMBR_HU RTC_ALRMBR_HU_Msk
+#define RTC_ALRMBR_HU_0 (0x1UL << RTC_ALRMBR_HU_Pos) /*!< 0x00010000 */
+#define RTC_ALRMBR_HU_1 (0x2UL << RTC_ALRMBR_HU_Pos) /*!< 0x00020000 */
+#define RTC_ALRMBR_HU_2 (0x4UL << RTC_ALRMBR_HU_Pos) /*!< 0x00040000 */
+#define RTC_ALRMBR_HU_3 (0x8UL << RTC_ALRMBR_HU_Pos) /*!< 0x00080000 */
+#define RTC_ALRMBR_HT_Pos (20U)
+#define RTC_ALRMBR_HT_Msk (0x3UL << RTC_ALRMBR_HT_Pos) /*!< 0x00300000 */
+#define RTC_ALRMBR_HT RTC_ALRMBR_HT_Msk
+#define RTC_ALRMBR_HT_0 (0x1UL << RTC_ALRMBR_HT_Pos) /*!< 0x00100000 */
+#define RTC_ALRMBR_HT_1 (0x2UL << RTC_ALRMBR_HT_Pos) /*!< 0x00200000 */
+#define RTC_ALRMBR_PM_Pos (22U)
+#define RTC_ALRMBR_PM_Msk (0x1UL << RTC_ALRMBR_PM_Pos) /*!< 0x00400000 */
+#define RTC_ALRMBR_PM RTC_ALRMBR_PM_Msk
+#define RTC_ALRMBR_MSK3_Pos (23U)
+#define RTC_ALRMBR_MSK3_Msk (0x1UL << RTC_ALRMBR_MSK3_Pos) /*!< 0x00800000 */
+#define RTC_ALRMBR_MSK3 RTC_ALRMBR_MSK3_Msk
+#define RTC_ALRMBR_DU_Pos (24U)
+#define RTC_ALRMBR_DU_Msk (0xFUL << RTC_ALRMBR_DU_Pos) /*!< 0x0F000000 */
+#define RTC_ALRMBR_DU RTC_ALRMBR_DU_Msk
+#define RTC_ALRMBR_DU_0 (0x1UL << RTC_ALRMBR_DU_Pos) /*!< 0x01000000 */
+#define RTC_ALRMBR_DU_1 (0x2UL << RTC_ALRMBR_DU_Pos) /*!< 0x02000000 */
+#define RTC_ALRMBR_DU_2 (0x4UL << RTC_ALRMBR_DU_Pos) /*!< 0x04000000 */
+#define RTC_ALRMBR_DU_3 (0x8UL << RTC_ALRMBR_DU_Pos) /*!< 0x08000000 */
+#define RTC_ALRMBR_DT_Pos (28U)
+#define RTC_ALRMBR_DT_Msk (0x3UL << RTC_ALRMBR_DT_Pos) /*!< 0x30000000 */
+#define RTC_ALRMBR_DT RTC_ALRMBR_DT_Msk
+#define RTC_ALRMBR_DT_0 (0x1UL << RTC_ALRMBR_DT_Pos) /*!< 0x10000000 */
+#define RTC_ALRMBR_DT_1 (0x2UL << RTC_ALRMBR_DT_Pos) /*!< 0x20000000 */
+#define RTC_ALRMBR_WDSEL_Pos (30U)
+#define RTC_ALRMBR_WDSEL_Msk (0x1UL << RTC_ALRMBR_WDSEL_Pos) /*!< 0x40000000 */
+#define RTC_ALRMBR_WDSEL RTC_ALRMBR_WDSEL_Msk
+#define RTC_ALRMBR_MSK4_Pos (31U)
+#define RTC_ALRMBR_MSK4_Msk (0x1UL << RTC_ALRMBR_MSK4_Pos) /*!< 0x80000000 */
+#define RTC_ALRMBR_MSK4 RTC_ALRMBR_MSK4_Msk
+
+/******************** Bits definition for RTC_ALRMBSSR register *************/
+#define RTC_ALRMBSSR_SS_Pos (0U)
+#define RTC_ALRMBSSR_SS_Msk (0x7FFFUL << RTC_ALRMBSSR_SS_Pos) /*!< 0x00007FFF */
+#define RTC_ALRMBSSR_SS RTC_ALRMBSSR_SS_Msk
+#define RTC_ALRMBSSR_MASKSS_Pos (24U)
+#define RTC_ALRMBSSR_MASKSS_Msk (0x3FUL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x3F000000 */
+#define RTC_ALRMBSSR_MASKSS RTC_ALRMBSSR_MASKSS_Msk
+#define RTC_ALRMBSSR_MASKSS_0 (0x1UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x01000000 */
+#define RTC_ALRMBSSR_MASKSS_1 (0x2UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x02000000 */
+#define RTC_ALRMBSSR_MASKSS_2 (0x4UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x04000000 */
+#define RTC_ALRMBSSR_MASKSS_3 (0x8UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x08000000 */
+#define RTC_ALRMBSSR_MASKSS_4 (0x10UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x10000000 */
+#define RTC_ALRMBSSR_MASKSS_5 (0x20UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x20000000 */
+#define RTC_ALRMBSSR_SSCLR_Pos (31U)
+#define RTC_ALRMBSSR_SSCLR_Msk (0x1UL << RTC_ALRMBSSR_SSCLR_Pos) /*!< 0x80000000 */
+#define RTC_ALRMBSSR_SSCLR RTC_ALRMBSSR_SSCLR_Msk
+
+/******************** Bits definition for RTC_SR register *******************/
+#define RTC_SR_ALRAF_Pos (0U)
+#define RTC_SR_ALRAF_Msk (0x1UL << RTC_SR_ALRAF_Pos) /*!< 0x00000001 */
+#define RTC_SR_ALRAF RTC_SR_ALRAF_Msk
+#define RTC_SR_ALRBF_Pos (1U)
+#define RTC_SR_ALRBF_Msk (0x1UL << RTC_SR_ALRBF_Pos) /*!< 0x00000002 */
+#define RTC_SR_ALRBF RTC_SR_ALRBF_Msk
+#define RTC_SR_WUTF_Pos (2U)
+#define RTC_SR_WUTF_Msk (0x1UL << RTC_SR_WUTF_Pos) /*!< 0x00000004 */
+#define RTC_SR_WUTF RTC_SR_WUTF_Msk
+#define RTC_SR_TSF_Pos (3U)
+#define RTC_SR_TSF_Msk (0x1UL << RTC_SR_TSF_Pos) /*!< 0x00000008 */
+#define RTC_SR_TSF RTC_SR_TSF_Msk
+#define RTC_SR_TSOVF_Pos (4U)
+#define RTC_SR_TSOVF_Msk (0x1UL << RTC_SR_TSOVF_Pos) /*!< 0x00000010 */
+#define RTC_SR_TSOVF RTC_SR_TSOVF_Msk
+#define RTC_SR_ITSF_Pos (5U)
+#define RTC_SR_ITSF_Msk (0x1UL << RTC_SR_ITSF_Pos) /*!< 0x00000020 */
+#define RTC_SR_ITSF RTC_SR_ITSF_Msk
+#define RTC_SR_SSRUF_Pos (6U)
+#define RTC_SR_SSRUF_Msk (0x1UL << RTC_SR_SSRUF_Pos) /*!< 0x00000040 */
+#define RTC_SR_SSRUF RTC_SR_SSRUF_Msk
+
+/******************** Bits definition for RTC_MISR register *****************/
+#define RTC_MISR_ALRAMF_Pos (0U)
+#define RTC_MISR_ALRAMF_Msk (0x1UL << RTC_MISR_ALRAMF_Pos) /*!< 0x00000001 */
+#define RTC_MISR_ALRAMF RTC_MISR_ALRAMF_Msk
+#define RTC_MISR_ALRBMF_Pos (1U)
+#define RTC_MISR_ALRBMF_Msk (0x1UL << RTC_MISR_ALRBMF_Pos) /*!< 0x00000002 */
+#define RTC_MISR_ALRBMF RTC_MISR_ALRBMF_Msk
+#define RTC_MISR_WUTMF_Pos (2U)
+#define RTC_MISR_WUTMF_Msk (0x1UL << RTC_MISR_WUTMF_Pos) /*!< 0x00000004 */
+#define RTC_MISR_WUTMF RTC_MISR_WUTMF_Msk
+#define RTC_MISR_TSMF_Pos (3U)
+#define RTC_MISR_TSMF_Msk (0x1UL << RTC_MISR_TSMF_Pos) /*!< 0x00000008 */
+#define RTC_MISR_TSMF RTC_MISR_TSMF_Msk
+#define RTC_MISR_TSOVMF_Pos (4U)
+#define RTC_MISR_TSOVMF_Msk (0x1UL << RTC_MISR_TSOVMF_Pos) /*!< 0x00000010 */
+#define RTC_MISR_TSOVMF RTC_MISR_TSOVMF_Msk
+#define RTC_MISR_ITSMF_Pos (5U)
+#define RTC_MISR_ITSMF_Msk (0x1UL << RTC_MISR_ITSMF_Pos) /*!< 0x00000020 */
+#define RTC_MISR_ITSMF RTC_MISR_ITSMF_Msk
+#define RTC_MISR_SSRUMF_Pos (6U)
+#define RTC_MISR_SSRUMF_Msk (0x1UL << RTC_MISR_SSRUMF_Pos) /*!< 0x00000040 */
+#define RTC_MISR_SSRUMF RTC_MISR_SSRUMF_Msk
+
+/******************** Bits definition for RTC_SMISR register *****************/
+#define RTC_SMISR_ALRAMF_Pos (0U)
+#define RTC_SMISR_ALRAMF_Msk (0x1UL << RTC_SMISR_ALRAMF_Pos) /*!< 0x00000001 */
+#define RTC_SMISR_ALRAMF RTC_SMISR_ALRAMF_Msk
+#define RTC_SMISR_ALRBMF_Pos (1U)
+#define RTC_SMISR_ALRBMF_Msk (0x1UL << RTC_SMISR_ALRBMF_Pos) /*!< 0x00000002 */
+#define RTC_SMISR_ALRBMF RTC_SMISR_ALRBMF_Msk
+#define RTC_SMISR_WUTMF_Pos (2U)
+#define RTC_SMISR_WUTMF_Msk (0x1UL << RTC_SMISR_WUTMF_Pos) /*!< 0x00000004 */
+#define RTC_SMISR_WUTMF RTC_SMISR_WUTMF_Msk
+#define RTC_SMISR_TSMF_Pos (3U)
+#define RTC_SMISR_TSMF_Msk (0x1UL << RTC_SMISR_TSMF_Pos) /*!< 0x00000008 */
+#define RTC_SMISR_TSMF RTC_SMISR_TSMF_Msk
+#define RTC_SMISR_TSOVMF_Pos (4U)
+#define RTC_SMISR_TSOVMF_Msk (0x1UL << RTC_SMISR_TSOVMF_Pos) /*!< 0x00000010 */
+#define RTC_SMISR_TSOVMF RTC_SMISR_TSOVMF_Msk
+#define RTC_SMISR_ITSMF_Pos (5U)
+#define RTC_SMISR_ITSMF_Msk (0x1UL << RTC_SMISR_ITSMF_Pos) /*!< 0x00000020 */
+#define RTC_SMISR_ITSMF RTC_SMISR_ITSMF_Msk
+#define RTC_SMISR_SSRUMF_Pos (6U)
+#define RTC_SMISR_SSRUMF_Msk (0x1UL << RTC_SMISR_SSRUMF_Pos) /*!< 0x00000040 */
+#define RTC_SMISR_SSRUMF RTC_SMISR_SSRUMF_Msk
+
+/******************** Bits definition for RTC_SCR register ******************/
+#define RTC_SCR_CALRAF_Pos (0U)
+#define RTC_SCR_CALRAF_Msk (0x1UL << RTC_SCR_CALRAF_Pos) /*!< 0x00000001 */
+#define RTC_SCR_CALRAF RTC_SCR_CALRAF_Msk
+#define RTC_SCR_CALRBF_Pos (1U)
+#define RTC_SCR_CALRBF_Msk (0x1UL << RTC_SCR_CALRBF_Pos) /*!< 0x00000002 */
+#define RTC_SCR_CALRBF RTC_SCR_CALRBF_Msk
+#define RTC_SCR_CWUTF_Pos (2U)
+#define RTC_SCR_CWUTF_Msk (0x1UL << RTC_SCR_CWUTF_Pos) /*!< 0x00000004 */
+#define RTC_SCR_CWUTF RTC_SCR_CWUTF_Msk
+#define RTC_SCR_CTSF_Pos (3U)
+#define RTC_SCR_CTSF_Msk (0x1UL << RTC_SCR_CTSF_Pos) /*!< 0x00000008 */
+#define RTC_SCR_CTSF RTC_SCR_CTSF_Msk
+#define RTC_SCR_CTSOVF_Pos (4U)
+#define RTC_SCR_CTSOVF_Msk (0x1UL << RTC_SCR_CTSOVF_Pos) /*!< 0x00000010 */
+#define RTC_SCR_CTSOVF RTC_SCR_CTSOVF_Msk
+#define RTC_SCR_CITSF_Pos (5U)
+#define RTC_SCR_CITSF_Msk (0x1UL << RTC_SCR_CITSF_Pos) /*!< 0x00000020 */
+#define RTC_SCR_CITSF RTC_SCR_CITSF_Msk
+#define RTC_SCR_CSSRUF_Pos (6U)
+#define RTC_SCR_CSSRUF_Msk (0x1UL << RTC_SCR_CSSRUF_Pos) /*!< 0x00000040 */
+#define RTC_SCR_CSSRUF RTC_SCR_CSSRUF_Msk
+
+/******************** Bits definition for RTC_OR register ******************/
+#define RTC_OR_OUT2_RMP_Pos (0U)
+#define RTC_OR_OUT2_RMP_Msk (0x1UL << RTC_OR_OUT2_RMP_Pos) /*!< 0x00000001 */
+#define RTC_OR_OUT2_RMP RTC_OR_OUT2_RMP_Msk
+
+/******************** Bits definition for RTC_ALRABINR register ******************/
+#define RTC_ALRABINR_SS_Pos (0U)
+#define RTC_ALRABINR_SS_Msk (0xFFFFFFFFUL << RTC_ALRABINR_SS_Pos) /*!< 0xFFFFFFFF */
+#define RTC_ALRABINR_SS RTC_ALRABINR_SS_Msk
+
+/******************** Bits definition for RTC_ALRBBINR register ******************/
+#define RTC_ALRBBINR_SS_Pos (0U)
+#define RTC_ALRBBINR_SS_Msk (0xFFFFFFFFUL << RTC_ALRBBINR_SS_Pos) /*!< 0xFFFFFFFF */
+#define RTC_ALRBBINR_SS RTC_ALRBBINR_SS_Msk
+
+/******************************************************************************/
+/* */
+/* Tamper and backup register (TAMP) */
+/* */
+/******************************************************************************/
+/******************** Bits definition for TAMP_CR1 register *****************/
+#define TAMP_CR1_TAMP1E_Pos (0U)
+#define TAMP_CR1_TAMP1E_Msk (0x1UL << TAMP_CR1_TAMP1E_Pos) /*!< 0x00000001 */
+#define TAMP_CR1_TAMP1E TAMP_CR1_TAMP1E_Msk
+#define TAMP_CR1_TAMP2E_Pos (1U)
+#define TAMP_CR1_TAMP2E_Msk (0x1UL << TAMP_CR1_TAMP2E_Pos) /*!< 0x00000002 */
+#define TAMP_CR1_TAMP2E TAMP_CR1_TAMP2E_Msk
+#define TAMP_CR1_TAMP3E_Pos (2U)
+#define TAMP_CR1_TAMP3E_Msk (0x1UL << TAMP_CR1_TAMP3E_Pos) /*!< 0x00000004 */
+#define TAMP_CR1_TAMP3E TAMP_CR1_TAMP3E_Msk
+#define TAMP_CR1_TAMP4E_Pos (3U)
+#define TAMP_CR1_TAMP4E_Msk (0x1UL << TAMP_CR1_TAMP4E_Pos) /*!< 0x00000008 */
+#define TAMP_CR1_TAMP4E TAMP_CR1_TAMP4E_Msk
+#define TAMP_CR1_TAMP5E_Pos (4U)
+#define TAMP_CR1_TAMP5E_Msk (0x1UL << TAMP_CR1_TAMP5E_Pos) /*!< 0x00000010 */
+#define TAMP_CR1_TAMP5E TAMP_CR1_TAMP5E_Msk
+#define TAMP_CR1_TAMP6E_Pos (5U)
+#define TAMP_CR1_TAMP6E_Msk (0x1UL << TAMP_CR1_TAMP6E_Pos) /*!< 0x00000020 */
+#define TAMP_CR1_TAMP6E TAMP_CR1_TAMP6E_Msk
+#define TAMP_CR1_TAMP7E_Pos (6U)
+#define TAMP_CR1_TAMP7E_Msk (0x1UL << TAMP_CR1_TAMP7E_Pos) /*!< 0x00000040 */
+#define TAMP_CR1_TAMP7E TAMP_CR1_TAMP7E_Msk
+#define TAMP_CR1_TAMP8E_Pos (7U)
+#define TAMP_CR1_TAMP8E_Msk (0x1UL << TAMP_CR1_TAMP8E_Pos) /*!< 0x00000080 */
+#define TAMP_CR1_TAMP8E TAMP_CR1_TAMP8E_Msk
+#define TAMP_CR1_ITAMP1E_Pos (16U)
+#define TAMP_CR1_ITAMP1E_Msk (0x1UL << TAMP_CR1_ITAMP1E_Pos) /*!< 0x00010000 */
+#define TAMP_CR1_ITAMP1E TAMP_CR1_ITAMP1E_Msk
+#define TAMP_CR1_ITAMP2E_Pos (17U)
+#define TAMP_CR1_ITAMP2E_Msk (0x1UL << TAMP_CR1_ITAMP2E_Pos) /*!< 0x00020000 */
+#define TAMP_CR1_ITAMP2E TAMP_CR1_ITAMP2E_Msk
+#define TAMP_CR1_ITAMP3E_Pos (18U)
+#define TAMP_CR1_ITAMP3E_Msk (0x1UL << TAMP_CR1_ITAMP3E_Pos) /*!< 0x00040000 */
+#define TAMP_CR1_ITAMP3E TAMP_CR1_ITAMP3E_Msk
+#define TAMP_CR1_ITAMP4E_Pos (19U)
+#define TAMP_CR1_ITAMP4E_Msk (0x1UL << TAMP_CR1_ITAMP4E_Pos) /*!< 0x00080000 */
+#define TAMP_CR1_ITAMP4E TAMP_CR1_ITAMP4E_Msk
+#define TAMP_CR1_ITAMP5E_Pos (20U)
+#define TAMP_CR1_ITAMP5E_Msk (0x1UL << TAMP_CR1_ITAMP5E_Pos) /*!< 0x00100000 */
+#define TAMP_CR1_ITAMP5E TAMP_CR1_ITAMP5E_Msk
+#define TAMP_CR1_ITAMP6E_Pos (21U)
+#define TAMP_CR1_ITAMP6E_Msk (0x1UL << TAMP_CR1_ITAMP6E_Pos) /*!< 0x00200000 */
+#define TAMP_CR1_ITAMP6E TAMP_CR1_ITAMP6E_Msk
+#define TAMP_CR1_ITAMP7E_Pos (22U)
+#define TAMP_CR1_ITAMP7E_Msk (0x1UL << TAMP_CR1_ITAMP7E_Pos) /*!< 0x00400000 */
+#define TAMP_CR1_ITAMP7E TAMP_CR1_ITAMP7E_Msk
+#define TAMP_CR1_ITAMP8E_Pos (23U)
+#define TAMP_CR1_ITAMP8E_Msk (0x1UL << TAMP_CR1_ITAMP8E_Pos) /*!< 0x00800000 */
+#define TAMP_CR1_ITAMP8E TAMP_CR1_ITAMP8E_Msk
+#define TAMP_CR1_ITAMP9E_Pos (24U)
+#define TAMP_CR1_ITAMP9E_Msk (0x1UL << TAMP_CR1_ITAMP9E_Pos) /*!< 0x01000000 */
+#define TAMP_CR1_ITAMP9E TAMP_CR1_ITAMP9E_Msk
+#define TAMP_CR1_ITAMP11E_Pos (26U)
+#define TAMP_CR1_ITAMP11E_Msk (0x1UL << TAMP_CR1_ITAMP11E_Pos) /*!< 0x04000000 */
+#define TAMP_CR1_ITAMP11E TAMP_CR1_ITAMP11E_Msk
+#define TAMP_CR1_ITAMP12E_Pos (27U)
+#define TAMP_CR1_ITAMP12E_Msk (0x1UL << TAMP_CR1_ITAMP12E_Pos) /*!< 0x08000000 */
+#define TAMP_CR1_ITAMP12E TAMP_CR1_ITAMP12E_Msk
+#define TAMP_CR1_ITAMP13E_Pos (28U)
+#define TAMP_CR1_ITAMP13E_Msk (0x1UL << TAMP_CR1_ITAMP13E_Pos) /*!< 0x10000000 */
+#define TAMP_CR1_ITAMP13E TAMP_CR1_ITAMP13E_Msk
+#define TAMP_CR1_ITAMP15E_Pos (30U)
+#define TAMP_CR1_ITAMP15E_Msk (0x1UL << TAMP_CR1_ITAMP15E_Pos) /*!< 0x40000000 */
+#define TAMP_CR1_ITAMP15E TAMP_CR1_ITAMP15E_Msk
+
+/******************** Bits definition for TAMP_CR2 register *****************/
+#define TAMP_CR2_TAMP1NOERASE_Pos (0U)
+#define TAMP_CR2_TAMP1NOERASE_Msk (0x1UL << TAMP_CR2_TAMP1NOERASE_Pos) /*!< 0x00000001 */
+#define TAMP_CR2_TAMP1NOERASE TAMP_CR2_TAMP1NOERASE_Msk
+#define TAMP_CR2_TAMP2NOERASE_Pos (1U)
+#define TAMP_CR2_TAMP2NOERASE_Msk (0x1UL << TAMP_CR2_TAMP2NOERASE_Pos) /*!< 0x00000002 */
+#define TAMP_CR2_TAMP2NOERASE TAMP_CR2_TAMP2NOERASE_Msk
+#define TAMP_CR2_TAMP3NOERASE_Pos (2U)
+#define TAMP_CR2_TAMP3NOERASE_Msk (0x1UL << TAMP_CR2_TAMP3NOERASE_Pos) /*!< 0x00000004 */
+#define TAMP_CR2_TAMP3NOERASE TAMP_CR2_TAMP3NOERASE_Msk
+#define TAMP_CR2_TAMP4NOERASE_Pos (3U)
+#define TAMP_CR2_TAMP4NOERASE_Msk (0x1UL << TAMP_CR2_TAMP4NOERASE_Pos) /*!< 0x00000008 */
+#define TAMP_CR2_TAMP4NOERASE TAMP_CR2_TAMP4NOERASE_Msk
+#define TAMP_CR2_TAMP5NOERASE_Pos (4U)
+#define TAMP_CR2_TAMP5NOERASE_Msk (0x1UL << TAMP_CR2_TAMP5NOERASE_Pos) /*!< 0x00000010 */
+#define TAMP_CR2_TAMP5NOERASE TAMP_CR2_TAMP5NOERASE_Msk
+#define TAMP_CR2_TAMP6NOERASE_Pos (5U)
+#define TAMP_CR2_TAMP6NOERASE_Msk (0x1UL << TAMP_CR2_TAMP6NOERASE_Pos) /*!< 0x00000020 */
+#define TAMP_CR2_TAMP6NOERASE TAMP_CR2_TAMP6NOERASE_Msk
+#define TAMP_CR2_TAMP7NOERASE_Pos (6U)
+#define TAMP_CR2_TAMP7NOERASE_Msk (0x1UL << TAMP_CR2_TAMP7NOERASE_Pos) /*!< 0x00000040 */
+#define TAMP_CR2_TAMP7NOERASE TAMP_CR2_TAMP7NOERASE_Msk
+#define TAMP_CR2_TAMP8NOERASE_Pos (7U)
+#define TAMP_CR2_TAMP8NOERASE_Msk (0x1UL << TAMP_CR2_TAMP8NOERASE_Pos) /*!< 0x00000080 */
+#define TAMP_CR2_TAMP8NOERASE TAMP_CR2_TAMP8NOERASE_Msk
+#define TAMP_CR2_TAMP1MSK_Pos (16U)
+#define TAMP_CR2_TAMP1MSK_Msk (0x1UL << TAMP_CR2_TAMP1MSK_Pos) /*!< 0x00010000 */
+#define TAMP_CR2_TAMP1MSK TAMP_CR2_TAMP1MSK_Msk
+#define TAMP_CR2_TAMP2MSK_Pos (17U)
+#define TAMP_CR2_TAMP2MSK_Msk (0x1UL << TAMP_CR2_TAMP2MSK_Pos) /*!< 0x00020000 */
+#define TAMP_CR2_TAMP2MSK TAMP_CR2_TAMP2MSK_Msk
+#define TAMP_CR2_TAMP3MSK_Pos (18U)
+#define TAMP_CR2_TAMP3MSK_Msk (0x1UL << TAMP_CR2_TAMP3MSK_Pos) /*!< 0x00040000 */
+#define TAMP_CR2_TAMP3MSK TAMP_CR2_TAMP3MSK_Msk
+#define TAMP_CR2_BKBLOCK_Pos (22U)
+#define TAMP_CR2_BKBLOCK_Msk (0x1UL << TAMP_CR2_BKBLOCK_Pos) /*!< 0x00400000 */
+#define TAMP_CR2_BKBLOCK TAMP_CR2_BKBLOCK_Msk
+#define TAMP_CR2_BKERASE_Pos (23U)
+#define TAMP_CR2_BKERASE_Msk (0x1UL << TAMP_CR2_BKERASE_Pos) /*!< 0x00800000 */
+#define TAMP_CR2_BKERASE TAMP_CR2_BKERASE_Msk
+#define TAMP_CR2_TAMP1TRG_Pos (24U)
+#define TAMP_CR2_TAMP1TRG_Msk (0x1UL << TAMP_CR2_TAMP1TRG_Pos) /*!< 0x01000000 */
+#define TAMP_CR2_TAMP1TRG TAMP_CR2_TAMP1TRG_Msk
+#define TAMP_CR2_TAMP2TRG_Pos (25U)
+#define TAMP_CR2_TAMP2TRG_Msk (0x1UL << TAMP_CR2_TAMP2TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP2TRG TAMP_CR2_TAMP2TRG_Msk
+#define TAMP_CR2_TAMP3TRG_Pos (26U)
+#define TAMP_CR2_TAMP3TRG_Msk (0x1UL << TAMP_CR2_TAMP3TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP3TRG TAMP_CR2_TAMP3TRG_Msk
+#define TAMP_CR2_TAMP4TRG_Pos (27U)
+#define TAMP_CR2_TAMP4TRG_Msk (0x1UL << TAMP_CR2_TAMP4TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP4TRG TAMP_CR2_TAMP4TRG_Msk
+#define TAMP_CR2_TAMP5TRG_Pos (28U)
+#define TAMP_CR2_TAMP5TRG_Msk (0x1UL << TAMP_CR2_TAMP5TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP5TRG TAMP_CR2_TAMP5TRG_Msk
+#define TAMP_CR2_TAMP6TRG_Pos (29U)
+#define TAMP_CR2_TAMP6TRG_Msk (0x1UL << TAMP_CR2_TAMP6TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP6TRG TAMP_CR2_TAMP6TRG_Msk
+#define TAMP_CR2_TAMP7TRG_Pos (30U)
+#define TAMP_CR2_TAMP7TRG_Msk (0x1UL << TAMP_CR2_TAMP7TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP7TRG TAMP_CR2_TAMP7TRG_Msk
+#define TAMP_CR2_TAMP8TRG_Pos (31U)
+#define TAMP_CR2_TAMP8TRG_Msk (0x1UL << TAMP_CR2_TAMP8TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP8TRG TAMP_CR2_TAMP8TRG_Msk
+
+/******************** Bits definition for TAMP_CR3 register *****************/
+#define TAMP_CR3_ITAMP1NOER_Pos (0U)
+#define TAMP_CR3_ITAMP1NOER_Msk (0x1UL << TAMP_CR3_ITAMP1NOER_Pos) /*!< 0x00000001 */
+#define TAMP_CR3_ITAMP1NOER TAMP_CR3_ITAMP1NOER_Msk
+#define TAMP_CR3_ITAMP2NOER_Pos (1U)
+#define TAMP_CR3_ITAMP2NOER_Msk (0x1UL << TAMP_CR3_ITAMP2NOER_Pos) /*!< 0x00000002 */
+#define TAMP_CR3_ITAMP2NOER TAMP_CR3_ITAMP2NOER_Msk
+#define TAMP_CR3_ITAMP3NOER_Pos (2U)
+#define TAMP_CR3_ITAMP3NOER_Msk (0x1UL << TAMP_CR3_ITAMP3NOER_Pos) /*!< 0x00000004 */
+#define TAMP_CR3_ITAMP3NOER TAMP_CR3_ITAMP3NOER_Msk
+#define TAMP_CR3_ITAMP4NOER_Pos (3U)
+#define TAMP_CR3_ITAMP4NOER_Msk (0x1UL << TAMP_CR3_ITAMP4NOER_Pos) /*!< 0x00000008 */
+#define TAMP_CR3_ITAMP4NOER TAMP_CR3_ITAMP4NOER_Msk
+#define TAMP_CR3_ITAMP5NOER_Pos (4U)
+#define TAMP_CR3_ITAMP5NOER_Msk (0x1UL << TAMP_CR3_ITAMP5NOER_Pos) /*!< 0x00000010 */
+#define TAMP_CR3_ITAMP5NOER TAMP_CR3_ITAMP5NOER_Msk
+#define TAMP_CR3_ITAMP6NOER_Pos (5U)
+#define TAMP_CR3_ITAMP6NOER_Msk (0x1UL << TAMP_CR3_ITAMP6NOER_Pos) /*!< 0x00000020 */
+#define TAMP_CR3_ITAMP6NOER TAMP_CR3_ITAMP6NOER_Msk
+#define TAMP_CR3_ITAMP7NOER_Pos (6U)
+#define TAMP_CR3_ITAMP7NOER_Msk (0x1UL << TAMP_CR3_ITAMP7NOER_Pos) /*!< 0x00000040 */
+#define TAMP_CR3_ITAMP7NOER TAMP_CR3_ITAMP7NOER_Msk
+#define TAMP_CR3_ITAMP8NOER_Pos (7U)
+#define TAMP_CR3_ITAMP8NOER_Msk (0x1UL << TAMP_CR3_ITAMP8NOER_Pos) /*!< 0x00000080 */
+#define TAMP_CR3_ITAMP8NOER TAMP_CR3_ITAMP8NOER_Msk
+#define TAMP_CR3_ITAMP9NOER_Pos (8U)
+#define TAMP_CR3_ITAMP9NOER_Msk (0x1UL << TAMP_CR3_ITAMP9NOER_Pos) /*!< 0x00000100 */
+#define TAMP_CR3_ITAMP9NOER TAMP_CR3_ITAMP9NOER_Msk
+#define TAMP_CR3_ITAMP11NOER_Pos (10U)
+#define TAMP_CR3_ITAMP11NOER_Msk (0x1UL << TAMP_CR3_ITAMP11NOER_Pos) /*!< 0x00000400 */
+#define TAMP_CR3_ITAMP11NOER TAMP_CR3_ITAMP11NOER_Msk
+#define TAMP_CR3_ITAMP12NOER_Pos (11U)
+#define TAMP_CR3_ITAMP12NOER_Msk (0x1UL << TAMP_CR3_ITAMP12NOER_Pos) /*!< 0x00000800 */
+#define TAMP_CR3_ITAMP12NOER TAMP_CR3_ITAMP12NOER_Msk
+#define TAMP_CR3_ITAMP13NOER_Pos (12U)
+#define TAMP_CR3_ITAMP13NOER_Msk (0x1UL << TAMP_CR3_ITAMP13NOER_Pos) /*!< 0x00001000 */
+#define TAMP_CR3_ITAMP13NOER TAMP_CR3_ITAMP13NOER_Msk
+#define TAMP_CR3_ITAMP15NOER_Pos (14U)
+#define TAMP_CR3_ITAMP15NOER_Msk (0x1UL << TAMP_CR3_ITAMP15NOER_Pos) /*!< 0x00004000 */
+#define TAMP_CR3_ITAMP15NOER TAMP_CR3_ITAMP15NOER_Msk
+
+/******************** Bits definition for TAMP_FLTCR register ***************/
+#define TAMP_FLTCR_TAMPFREQ_Pos (0U)
+#define TAMP_FLTCR_TAMPFREQ_Msk (0x7UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000007 */
+#define TAMP_FLTCR_TAMPFREQ TAMP_FLTCR_TAMPFREQ_Msk
+#define TAMP_FLTCR_TAMPFREQ_0 (0x1UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000001 */
+#define TAMP_FLTCR_TAMPFREQ_1 (0x2UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000002 */
+#define TAMP_FLTCR_TAMPFREQ_2 (0x4UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000004 */
+#define TAMP_FLTCR_TAMPFLT_Pos (3U)
+#define TAMP_FLTCR_TAMPFLT_Msk (0x3UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000018 */
+#define TAMP_FLTCR_TAMPFLT TAMP_FLTCR_TAMPFLT_Msk
+#define TAMP_FLTCR_TAMPFLT_0 (0x1UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000008 */
+#define TAMP_FLTCR_TAMPFLT_1 (0x2UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000010 */
+#define TAMP_FLTCR_TAMPPRCH_Pos (5U)
+#define TAMP_FLTCR_TAMPPRCH_Msk (0x3UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000060 */
+#define TAMP_FLTCR_TAMPPRCH TAMP_FLTCR_TAMPPRCH_Msk
+#define TAMP_FLTCR_TAMPPRCH_0 (0x1UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000020 */
+#define TAMP_FLTCR_TAMPPRCH_1 (0x2UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000040 */
+#define TAMP_FLTCR_TAMPPUDIS_Pos (7U)
+#define TAMP_FLTCR_TAMPPUDIS_Msk (0x1UL << TAMP_FLTCR_TAMPPUDIS_Pos) /*!< 0x00000080 */
+#define TAMP_FLTCR_TAMPPUDIS TAMP_FLTCR_TAMPPUDIS_Msk
+
+/******************** Bits definition for TAMP_ATCR1 register ***************/
+#define TAMP_ATCR1_TAMP1AM_Pos (0U)
+#define TAMP_ATCR1_TAMP1AM_Msk (0x1UL << TAMP_ATCR1_TAMP1AM_Pos) /*!< 0x00000001 */
+#define TAMP_ATCR1_TAMP1AM TAMP_ATCR1_TAMP1AM_Msk
+#define TAMP_ATCR1_TAMP2AM_Pos (1U)
+#define TAMP_ATCR1_TAMP2AM_Msk (0x1UL << TAMP_ATCR1_TAMP2AM_Pos) /*!< 0x00000002 */
+#define TAMP_ATCR1_TAMP2AM TAMP_ATCR1_TAMP2AM_Msk
+#define TAMP_ATCR1_TAMP3AM_Pos (2U)
+#define TAMP_ATCR1_TAMP3AM_Msk (0x1UL << TAMP_ATCR1_TAMP3AM_Pos) /*!< 0x00000004 */
+#define TAMP_ATCR1_TAMP3AM TAMP_ATCR1_TAMP3AM_Msk
+#define TAMP_ATCR1_TAMP4AM_Pos (3U)
+#define TAMP_ATCR1_TAMP4AM_Msk (0x1UL << TAMP_ATCR1_TAMP4AM_Pos) /*!< 0x00000008 */
+#define TAMP_ATCR1_TAMP4AM TAMP_ATCR1_TAMP4AM_Msk
+#define TAMP_ATCR1_TAMP5AM_Pos (4U)
+#define TAMP_ATCR1_TAMP5AM_Msk (0x1UL << TAMP_ATCR1_TAMP5AM_Pos) /*!< 0x00000010 */
+#define TAMP_ATCR1_TAMP5AM TAMP_ATCR1_TAMP5AM_Msk
+#define TAMP_ATCR1_TAMP6AM_Pos (5U)
+#define TAMP_ATCR1_TAMP6AM_Msk (0x1UL << TAMP_ATCR1_TAMP6AM_Pos) /*!< 0x00000010 */
+#define TAMP_ATCR1_TAMP6AM TAMP_ATCR1_TAMP6AM_Msk
+#define TAMP_ATCR1_TAMP7AM_Pos (6U)
+#define TAMP_ATCR1_TAMP7AM_Msk (0x1UL << TAMP_ATCR1_TAMP7AM_Pos) /*!< 0x00000040 */
+#define TAMP_ATCR1_TAMP7AM TAMP_ATCR1_TAMP7AM_Msk
+#define TAMP_ATCR1_TAMP8AM_Pos (7U)
+#define TAMP_ATCR1_TAMP8AM_Msk (0x1UL << TAMP_ATCR1_TAMP8AM_Pos) /*!< 0x00000080 */
+#define TAMP_ATCR1_TAMP8AM TAMP_ATCR1_TAMP8AM_Msk
+#define TAMP_ATCR1_ATOSEL1_Pos (8U)
+#define TAMP_ATCR1_ATOSEL1_Msk (0x3UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000300 */
+#define TAMP_ATCR1_ATOSEL1 TAMP_ATCR1_ATOSEL1_Msk
+#define TAMP_ATCR1_ATOSEL1_0 (0x1UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000100 */
+#define TAMP_ATCR1_ATOSEL1_1 (0x2UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000200 */
+#define TAMP_ATCR1_ATOSEL2_Pos (10U)
+#define TAMP_ATCR1_ATOSEL2_Msk (0x3UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000C00 */
+#define TAMP_ATCR1_ATOSEL2 TAMP_ATCR1_ATOSEL2_Msk
+#define TAMP_ATCR1_ATOSEL2_0 (0x1UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000400 */
+#define TAMP_ATCR1_ATOSEL2_1 (0x2UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000800 */
+#define TAMP_ATCR1_ATOSEL3_Pos (12U)
+#define TAMP_ATCR1_ATOSEL3_Msk (0x3UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00003000 */
+#define TAMP_ATCR1_ATOSEL3 TAMP_ATCR1_ATOSEL3_Msk
+#define TAMP_ATCR1_ATOSEL3_0 (0x1UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00001000 */
+#define TAMP_ATCR1_ATOSEL3_1 (0x2UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00002000 */
+#define TAMP_ATCR1_ATOSEL4_Pos (14U)
+#define TAMP_ATCR1_ATOSEL4_Msk (0x3UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x0000C000 */
+#define TAMP_ATCR1_ATOSEL4 TAMP_ATCR1_ATOSEL4_Msk
+#define TAMP_ATCR1_ATOSEL4_0 (0x1UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x00004000 */
+#define TAMP_ATCR1_ATOSEL4_1 (0x2UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x00008000 */
+#define TAMP_ATCR1_ATCKSEL_Pos (16U)
+#define TAMP_ATCR1_ATCKSEL_Msk (0xFUL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x000F0000 */
+#define TAMP_ATCR1_ATCKSEL TAMP_ATCR1_ATCKSEL_Msk
+#define TAMP_ATCR1_ATCKSEL_0 (0x1UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00010000 */
+#define TAMP_ATCR1_ATCKSEL_1 (0x2UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00020000 */
+#define TAMP_ATCR1_ATCKSEL_2 (0x4UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00040000 */
+#define TAMP_ATCR1_ATCKSEL_3 (0x8UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00080000 */
+#define TAMP_ATCR1_ATPER_Pos (24U)
+#define TAMP_ATCR1_ATPER_Msk (0x7UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x07000000 */
+#define TAMP_ATCR1_ATPER TAMP_ATCR1_ATPER_Msk
+#define TAMP_ATCR1_ATPER_0 (0x1UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x01000000 */
+#define TAMP_ATCR1_ATPER_1 (0x2UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x02000000 */
+#define TAMP_ATCR1_ATPER_2 (0x4UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x04000000 */
+#define TAMP_ATCR1_ATOSHARE_Pos (30U)
+#define TAMP_ATCR1_ATOSHARE_Msk (0x1UL << TAMP_ATCR1_ATOSHARE_Pos) /*!< 0x40000000 */
+#define TAMP_ATCR1_ATOSHARE TAMP_ATCR1_ATOSHARE_Msk
+#define TAMP_ATCR1_FLTEN_Pos (31U)
+#define TAMP_ATCR1_FLTEN_Msk (0x1UL << TAMP_ATCR1_FLTEN_Pos) /*!< 0x80000000 */
+#define TAMP_ATCR1_FLTEN TAMP_ATCR1_FLTEN_Msk
+
+/******************** Bits definition for TAMP_ATSEEDR register ******************/
+#define TAMP_ATSEEDR_SEED_Pos (0U)
+#define TAMP_ATSEEDR_SEED_Msk (0xFFFFFFFFUL << TAMP_ATSEEDR_SEED_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_ATSEEDR_SEED TAMP_ATSEEDR_SEED_Msk
+
+/******************** Bits definition for TAMP_ATOR register ******************/
+#define TAMP_ATOR_PRNG_Pos (0U)
+#define TAMP_ATOR_PRNG_Msk (0xFFUL << TAMP_ATOR_PRNG_Pos) /*!< 0x000000FF */
+#define TAMP_ATOR_PRNG TAMP_ATOR_PRNG_Msk
+#define TAMP_ATOR_PRNG_0 (0x1UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000001 */
+#define TAMP_ATOR_PRNG_1 (0x2UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000002 */
+#define TAMP_ATOR_PRNG_2 (0x4UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000004 */
+#define TAMP_ATOR_PRNG_3 (0x8UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000008 */
+#define TAMP_ATOR_PRNG_4 (0x10UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000010 */
+#define TAMP_ATOR_PRNG_5 (0x20UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000020 */
+#define TAMP_ATOR_PRNG_6 (0x40UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000040 */
+#define TAMP_ATOR_PRNG_7 (0x80UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000080 */
+#define TAMP_ATOR_SEEDF_Pos (14U)
+#define TAMP_ATOR_SEEDF_Msk (1UL << TAMP_ATOR_SEEDF_Pos) /*!< 0x00004000 */
+#define TAMP_ATOR_SEEDF TAMP_ATOR_SEEDF_Msk
+#define TAMP_ATOR_INITS_Pos (15U)
+#define TAMP_ATOR_INITS_Msk (1UL << TAMP_ATOR_INITS_Pos) /*!< 0x00008000 */
+#define TAMP_ATOR_INITS TAMP_ATOR_INITS_Msk
+
+/******************** Bits definition for TAMP_ATCR2 register ***************/
+#define TAMP_ATCR2_ATOSEL1_Pos (8U)
+#define TAMP_ATCR2_ATOSEL1_Msk (0x7UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000700 */
+#define TAMP_ATCR2_ATOSEL1 TAMP_ATCR2_ATOSEL1_Msk
+#define TAMP_ATCR2_ATOSEL1_0 (0x1UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000100 */
+#define TAMP_ATCR2_ATOSEL1_1 (0x2UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000200 */
+#define TAMP_ATCR2_ATOSEL1_2 (0x4UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000400 */
+#define TAMP_ATCR2_ATOSEL2_Pos (11U)
+#define TAMP_ATCR2_ATOSEL2_Msk (0x7UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00003800 */
+#define TAMP_ATCR2_ATOSEL2 TAMP_ATCR2_ATOSEL2_Msk
+#define TAMP_ATCR2_ATOSEL2_0 (0x1UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00000800 */
+#define TAMP_ATCR2_ATOSEL2_1 (0x2UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00001000 */
+#define TAMP_ATCR2_ATOSEL2_2 (0x4UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00002000 */
+#define TAMP_ATCR2_ATOSEL3_Pos (14U)
+#define TAMP_ATCR2_ATOSEL3_Msk (0x7UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x0001C000 */
+#define TAMP_ATCR2_ATOSEL3 TAMP_ATCR2_ATOSEL3_Msk
+#define TAMP_ATCR2_ATOSEL3_0 (0x1UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00004000 */
+#define TAMP_ATCR2_ATOSEL3_1 (0x2UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00008000 */
+#define TAMP_ATCR2_ATOSEL3_2 (0x4UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00010000 */
+#define TAMP_ATCR2_ATOSEL4_Pos (17U)
+#define TAMP_ATCR2_ATOSEL4_Msk (0x7UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x000E0000 */
+#define TAMP_ATCR2_ATOSEL4 TAMP_ATCR2_ATOSEL4_Msk
+#define TAMP_ATCR2_ATOSEL4_0 (0x1UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00020000 */
+#define TAMP_ATCR2_ATOSEL4_1 (0x2UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00040000 */
+#define TAMP_ATCR2_ATOSEL4_2 (0x4UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00080000 */
+#define TAMP_ATCR2_ATOSEL5_Pos (20U)
+#define TAMP_ATCR2_ATOSEL5_Msk (0x7UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00700000 */
+#define TAMP_ATCR2_ATOSEL5 TAMP_ATCR2_ATOSEL5_Msk
+#define TAMP_ATCR2_ATOSEL5_0 (0x1UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00100000 */
+#define TAMP_ATCR2_ATOSEL5_1 (0x2UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00200000 */
+#define TAMP_ATCR2_ATOSEL5_2 (0x4UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00400000 */
+#define TAMP_ATCR2_ATOSEL6_Pos (23U)
+#define TAMP_ATCR2_ATOSEL6_Msk (0x7UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x03800000 */
+#define TAMP_ATCR2_ATOSEL6 TAMP_ATCR2_ATOSEL6_Msk
+#define TAMP_ATCR2_ATOSEL6_0 (0x1UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x00800000 */
+#define TAMP_ATCR2_ATOSEL6_1 (0x2UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x01000000 */
+#define TAMP_ATCR2_ATOSEL6_2 (0x4UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x02000000 */
+#define TAMP_ATCR2_ATOSEL7_Pos (26U)
+#define TAMP_ATCR2_ATOSEL7_Msk (0x7UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x1C000000 */
+#define TAMP_ATCR2_ATOSEL7 TAMP_ATCR2_ATOSEL7_Msk
+#define TAMP_ATCR2_ATOSEL7_0 (0x1UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x04000000 */
+#define TAMP_ATCR2_ATOSEL7_1 (0x2UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x08000000 */
+#define TAMP_ATCR2_ATOSEL7_2 (0x4UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x10000000 */
+#define TAMP_ATCR2_ATOSEL8_Pos (29U)
+#define TAMP_ATCR2_ATOSEL8_Msk (0x7UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0xE0000000 */
+#define TAMP_ATCR2_ATOSEL8 TAMP_ATCR2_ATOSEL8_Msk
+#define TAMP_ATCR2_ATOSEL8_0 (0x1UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x20000000 */
+#define TAMP_ATCR2_ATOSEL8_1 (0x2UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x40000000 */
+#define TAMP_ATCR2_ATOSEL8_2 (0x4UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x80000000 */
+
+/******************** Bits definition for TAMP_SECCFGR register *************/
+#define TAMP_SECCFGR_BKPRWSEC_Pos (0U)
+#define TAMP_SECCFGR_BKPRWSEC_Msk (0xFFUL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x000000FF */
+#define TAMP_SECCFGR_BKPRWSEC TAMP_SECCFGR_BKPRWSEC_Msk
+#define TAMP_SECCFGR_BKPRWSEC_0 (0x1UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000001 */
+#define TAMP_SECCFGR_BKPRWSEC_1 (0x2UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000002 */
+#define TAMP_SECCFGR_BKPRWSEC_2 (0x4UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000004 */
+#define TAMP_SECCFGR_BKPRWSEC_3 (0x8UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000008 */
+#define TAMP_SECCFGR_BKPRWSEC_4 (0x10UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000010 */
+#define TAMP_SECCFGR_BKPRWSEC_5 (0x20UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000020 */
+#define TAMP_SECCFGR_BKPRWSEC_6 (0x40UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000040 */
+#define TAMP_SECCFGR_BKPRWSEC_7 (0x80UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000080 */
+#define TAMP_SECCFGR_CNT1SEC_Pos (15U)
+#define TAMP_SECCFGR_CNT1SEC_Msk (0x1UL << TAMP_SECCFGR_CNT1SEC_Pos) /*!< 0x00008000 */
+#define TAMP_SECCFGR_CNT1SEC TAMP_SECCFGR_CNT1SEC_Msk
+#define TAMP_SECCFGR_BKPWSEC_Pos (16U)
+#define TAMP_SECCFGR_BKPWSEC_Msk (0xFFUL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00FF0000 */
+#define TAMP_SECCFGR_BKPWSEC TAMP_SECCFGR_BKPWSEC_Msk
+#define TAMP_SECCFGR_BKPWSEC_0 (0x1UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00010000 */
+#define TAMP_SECCFGR_BKPWSEC_1 (0x2UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00020000 */
+#define TAMP_SECCFGR_BKPWSEC_2 (0x4UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00040000 */
+#define TAMP_SECCFGR_BKPWSEC_3 (0x8UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00080000 */
+#define TAMP_SECCFGR_BKPWSEC_4 (0x10UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00100000 */
+#define TAMP_SECCFGR_BKPWSEC_5 (0x20UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00200000 */
+#define TAMP_SECCFGR_BKPWSEC_6 (0x40UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00400000 */
+#define TAMP_SECCFGR_BKPWSEC_7 (0x80UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00800000 */
+#define TAMP_SECCFGR_BHKLOCK_Pos (30U)
+#define TAMP_SECCFGR_BHKLOCK_Msk (0x1UL << TAMP_SECCFGR_BHKLOCK_Pos) /*!< 0x40000000 */
+#define TAMP_SECCFGR_BHKLOCK TAMP_SECCFGR_BHKLOCK_Msk
+#define TAMP_SECCFGR_TAMPSEC_Pos (31U)
+#define TAMP_SECCFGR_TAMPSEC_Msk (0x1UL << TAMP_SECCFGR_TAMPSEC_Pos) /*!< 0x80000000 */
+#define TAMP_SECCFGR_TAMPSEC TAMP_SECCFGR_TAMPSEC_Msk
+
+/******************** Bits definition for TAMP_PRIVCFGR register ************/
+#define TAMP_PRIVCFGR_CNT1PRIV_Pos (15U)
+#define TAMP_PRIVCFGR_CNT1PRIV_Msk (0x1UL << TAMP_PRIVCFGR_CNT1PRIV_Pos) /*!< 0x20000000 */
+#define TAMP_PRIVCFGR_CNT1PRIV TAMP_PRIVCFGR_CNT1PRIV_Msk
+#define TAMP_PRIVCFGR_BKPRWPRIV_Pos (29U)
+#define TAMP_PRIVCFGR_BKPRWPRIV_Msk (0x1UL << TAMP_PRIVCFGR_BKPRWPRIV_Pos) /*!< 0x20000000 */
+#define TAMP_PRIVCFGR_BKPRWPRIV TAMP_PRIVCFGR_BKPRWPRIV_Msk
+#define TAMP_PRIVCFGR_BKPWPRIV_Pos (30U)
+#define TAMP_PRIVCFGR_BKPWPRIV_Msk (0x1UL << TAMP_PRIVCFGR_BKPWPRIV_Pos) /*!< 0x40000000 */
+#define TAMP_PRIVCFGR_BKPWPRIV TAMP_PRIVCFGR_BKPWPRIV_Msk
+#define TAMP_PRIVCFGR_TAMPPRIV_Pos (31U)
+#define TAMP_PRIVCFGR_TAMPPRIV_Msk (0x1UL << TAMP_PRIVCFGR_TAMPPRIV_Pos) /*!< 0x80000000 */
+#define TAMP_PRIVCFGR_TAMPPRIV TAMP_PRIVCFGR_TAMPPRIV_Msk
+
+/******************** Bits definition for TAMP_IER register *****************/
+#define TAMP_IER_TAMP1IE_Pos (0U)
+#define TAMP_IER_TAMP1IE_Msk (0x1UL << TAMP_IER_TAMP1IE_Pos) /*!< 0x00000001 */
+#define TAMP_IER_TAMP1IE TAMP_IER_TAMP1IE_Msk
+#define TAMP_IER_TAMP2IE_Pos (1U)
+#define TAMP_IER_TAMP2IE_Msk (0x1UL << TAMP_IER_TAMP2IE_Pos) /*!< 0x00000002 */
+#define TAMP_IER_TAMP2IE TAMP_IER_TAMP2IE_Msk
+#define TAMP_IER_TAMP3IE_Pos (2U)
+#define TAMP_IER_TAMP3IE_Msk (0x1UL << TAMP_IER_TAMP3IE_Pos) /*!< 0x00000004 */
+#define TAMP_IER_TAMP3IE TAMP_IER_TAMP3IE_Msk
+#define TAMP_IER_TAMP4IE_Pos (3U)
+#define TAMP_IER_TAMP4IE_Msk (0x1UL << TAMP_IER_TAMP4IE_Pos) /*!< 0x00000008 */
+#define TAMP_IER_TAMP4IE TAMP_IER_TAMP4IE_Msk
+#define TAMP_IER_TAMP5IE_Pos (4U)
+#define TAMP_IER_TAMP5IE_Msk (0x1UL << TAMP_IER_TAMP5IE_Pos) /*!< 0x00000010 */
+#define TAMP_IER_TAMP5IE TAMP_IER_TAMP5IE_Msk
+#define TAMP_IER_TAMP6IE_Pos (5U)
+#define TAMP_IER_TAMP6IE_Msk (0x1UL << TAMP_IER_TAMP6IE_Pos) /*!< 0x00000020 */
+#define TAMP_IER_TAMP6IE TAMP_IER_TAMP6IE_Msk
+#define TAMP_IER_TAMP7IE_Pos (6U)
+#define TAMP_IER_TAMP7IE_Msk (0x1UL << TAMP_IER_TAMP7IE_Pos) /*!< 0x00000040 */
+#define TAMP_IER_TAMP7IE TAMP_IER_TAMP7IE_Msk
+#define TAMP_IER_TAMP8IE_Pos (7U)
+#define TAMP_IER_TAMP8IE_Msk (0x1UL << TAMP_IER_TAMP8IE_Pos) /*!< 0x00000080 */
+#define TAMP_IER_TAMP8IE TAMP_IER_TAMP8IE_Msk
+#define TAMP_IER_ITAMP1IE_Pos (16U)
+#define TAMP_IER_ITAMP1IE_Msk (0x1UL << TAMP_IER_ITAMP1IE_Pos) /*!< 0x00010000 */
+#define TAMP_IER_ITAMP1IE TAMP_IER_ITAMP1IE_Msk
+#define TAMP_IER_ITAMP2IE_Pos (17U)
+#define TAMP_IER_ITAMP2IE_Msk (0x1UL << TAMP_IER_ITAMP2IE_Pos) /*!< 0x00020000 */
+#define TAMP_IER_ITAMP2IE TAMP_IER_ITAMP2IE_Msk
+#define TAMP_IER_ITAMP3IE_Pos (18U)
+#define TAMP_IER_ITAMP3IE_Msk (0x1UL << TAMP_IER_ITAMP3IE_Pos) /*!< 0x00040000 */
+#define TAMP_IER_ITAMP3IE TAMP_IER_ITAMP3IE_Msk
+#define TAMP_IER_ITAMP4IE_Pos (19U)
+#define TAMP_IER_ITAMP4IE_Msk (0x1UL << TAMP_IER_ITAMP4IE_Pos) /*!< 0x00080000 */
+#define TAMP_IER_ITAMP4IE TAMP_IER_ITAMP4IE_Msk
+#define TAMP_IER_ITAMP5IE_Pos (20U)
+#define TAMP_IER_ITAMP5IE_Msk (0x1UL << TAMP_IER_ITAMP5IE_Pos) /*!< 0x00100000 */
+#define TAMP_IER_ITAMP5IE TAMP_IER_ITAMP5IE_Msk
+#define TAMP_IER_ITAMP6IE_Pos (21U)
+#define TAMP_IER_ITAMP6IE_Msk (0x1UL << TAMP_IER_ITAMP6IE_Pos) /*!< 0x00200000 */
+#define TAMP_IER_ITAMP6IE TAMP_IER_ITAMP6IE_Msk
+#define TAMP_IER_ITAMP7IE_Pos (22U)
+#define TAMP_IER_ITAMP7IE_Msk (0x1UL << TAMP_IER_ITAMP7IE_Pos) /*!< 0x00400000 */
+#define TAMP_IER_ITAMP7IE TAMP_IER_ITAMP7IE_Msk
+#define TAMP_IER_ITAMP8IE_Pos (23U)
+#define TAMP_IER_ITAMP8IE_Msk (0x1UL << TAMP_IER_ITAMP8IE_Pos) /*!< 0x00800000 */
+#define TAMP_IER_ITAMP8IE TAMP_IER_ITAMP8IE_Msk
+#define TAMP_IER_ITAMP9IE_Pos (24U)
+#define TAMP_IER_ITAMP9IE_Msk (0x1UL << TAMP_IER_ITAMP9IE_Pos) /*!< 0x01000000 */
+#define TAMP_IER_ITAMP9IE TAMP_IER_ITAMP9IE_Msk
+#define TAMP_IER_ITAMP11IE_Pos (26U)
+#define TAMP_IER_ITAMP11IE_Msk (0x1UL << TAMP_IER_ITAMP11IE_Pos) /*!< 0x04000000 */
+#define TAMP_IER_ITAMP11IE TAMP_IER_ITAMP11IE_Msk
+#define TAMP_IER_ITAMP12IE_Pos (27U)
+#define TAMP_IER_ITAMP12IE_Msk (0x1UL << TAMP_IER_ITAMP12IE_Pos) /*!< 0x08000000 */
+#define TAMP_IER_ITAMP12IE TAMP_IER_ITAMP12IE_Msk
+#define TAMP_IER_ITAMP13IE_Pos (28U)
+#define TAMP_IER_ITAMP13IE_Msk (0x1UL << TAMP_IER_ITAMP13IE_Pos) /*!< 0x10000000 */
+#define TAMP_IER_ITAMP13IE TAMP_IER_ITAMP13IE_Msk
+#define TAMP_IER_ITAMP15IE_Pos (30U)
+#define TAMP_IER_ITAMP15IE_Msk (0x1UL << TAMP_IER_ITAMP15IE_Pos) /*!< 0x40000000 */
+#define TAMP_IER_ITAMP15IE TAMP_IER_ITAMP15IE_Msk
+
+/******************** Bits definition for TAMP_SR register *****************/
+#define TAMP_SR_TAMP1F_Pos (0U)
+#define TAMP_SR_TAMP1F_Msk (0x1UL << TAMP_SR_TAMP1F_Pos) /*!< 0x00000001 */
+#define TAMP_SR_TAMP1F TAMP_SR_TAMP1F_Msk
+#define TAMP_SR_TAMP2F_Pos (1U)
+#define TAMP_SR_TAMP2F_Msk (0x1UL << TAMP_SR_TAMP2F_Pos) /*!< 0x00000002 */
+#define TAMP_SR_TAMP2F TAMP_SR_TAMP2F_Msk
+#define TAMP_SR_TAMP3F_Pos (2U)
+#define TAMP_SR_TAMP3F_Msk (0x1UL << TAMP_SR_TAMP3F_Pos) /*!< 0x00000004 */
+#define TAMP_SR_TAMP3F TAMP_SR_TAMP3F_Msk
+#define TAMP_SR_TAMP4F_Pos (3U)
+#define TAMP_SR_TAMP4F_Msk (0x1UL << TAMP_SR_TAMP4F_Pos) /*!< 0x00000008 */
+#define TAMP_SR_TAMP4F TAMP_SR_TAMP4F_Msk
+#define TAMP_SR_TAMP5F_Pos (4U)
+#define TAMP_SR_TAMP5F_Msk (0x1UL << TAMP_SR_TAMP5F_Pos) /*!< 0x00000010 */
+#define TAMP_SR_TAMP5F TAMP_SR_TAMP5F_Msk
+#define TAMP_SR_TAMP6F_Pos (5U)
+#define TAMP_SR_TAMP6F_Msk (0x1UL << TAMP_SR_TAMP6F_Pos) /*!< 0x00000020 */
+#define TAMP_SR_TAMP6F TAMP_SR_TAMP6F_Msk
+#define TAMP_SR_TAMP7F_Pos (6U)
+#define TAMP_SR_TAMP7F_Msk (0x1UL << TAMP_SR_TAMP7F_Pos) /*!< 0x00000040 */
+#define TAMP_SR_TAMP7F TAMP_SR_TAMP7F_Msk
+#define TAMP_SR_TAMP8F_Pos (7U)
+#define TAMP_SR_TAMP8F_Msk (0x1UL << TAMP_SR_TAMP8F_Pos) /*!< 0x00000080 */
+#define TAMP_SR_TAMP8F TAMP_SR_TAMP8F_Msk
+#define TAMP_SR_ITAMP1F_Pos (16U)
+#define TAMP_SR_ITAMP1F_Msk (0x1UL << TAMP_SR_ITAMP1F_Pos) /*!< 0x00010000 */
+#define TAMP_SR_ITAMP1F TAMP_SR_ITAMP1F_Msk
+#define TAMP_SR_ITAMP2F_Pos (17U)
+#define TAMP_SR_ITAMP2F_Msk (0x1UL << TAMP_SR_ITAMP2F_Pos) /*!< 0x00020000 */
+#define TAMP_SR_ITAMP2F TAMP_SR_ITAMP2F_Msk
+#define TAMP_SR_ITAMP3F_Pos (18U)
+#define TAMP_SR_ITAMP3F_Msk (0x1UL << TAMP_SR_ITAMP3F_Pos) /*!< 0x00040000 */
+#define TAMP_SR_ITAMP3F TAMP_SR_ITAMP3F_Msk
+#define TAMP_SR_ITAMP4F_Pos (19U)
+#define TAMP_SR_ITAMP4F_Msk (0x1UL << TAMP_SR_ITAMP4F_Pos) /*!< 0x00080000 */
+#define TAMP_SR_ITAMP4F TAMP_SR_ITAMP4F_Msk
+#define TAMP_SR_ITAMP5F_Pos (20U)
+#define TAMP_SR_ITAMP5F_Msk (0x1UL << TAMP_SR_ITAMP5F_Pos) /*!< 0x00100000 */
+#define TAMP_SR_ITAMP5F TAMP_SR_ITAMP5F_Msk
+#define TAMP_SR_ITAMP6F_Pos (21U)
+#define TAMP_SR_ITAMP6F_Msk (0x1UL << TAMP_SR_ITAMP6F_Pos) /*!< 0x00200000 */
+#define TAMP_SR_ITAMP6F TAMP_SR_ITAMP6F_Msk
+#define TAMP_SR_ITAMP7F_Pos (22U)
+#define TAMP_SR_ITAMP7F_Msk (0x1UL << TAMP_SR_ITAMP7F_Pos) /*!< 0x00400000 */
+#define TAMP_SR_ITAMP7F TAMP_SR_ITAMP7F_Msk
+#define TAMP_SR_ITAMP8F_Pos (23U)
+#define TAMP_SR_ITAMP8F_Msk (0x1UL << TAMP_SR_ITAMP8F_Pos) /*!< 0x00800000 */
+#define TAMP_SR_ITAMP8F TAMP_SR_ITAMP8F_Msk
+#define TAMP_SR_ITAMP9F_Pos (24U)
+#define TAMP_SR_ITAMP9F_Msk (0x1UL << TAMP_SR_ITAMP9F_Pos) /*!< 0x01000000 */
+#define TAMP_SR_ITAMP9F TAMP_SR_ITAMP9F_Msk
+#define TAMP_SR_ITAMP11F_Pos (26U)
+#define TAMP_SR_ITAMP11F_Msk (0x1UL << TAMP_SR_ITAMP11F_Pos) /*!< 0x04000000 */
+#define TAMP_SR_ITAMP11F TAMP_SR_ITAMP11F_Msk
+#define TAMP_SR_ITAMP12F_Pos (27U)
+#define TAMP_SR_ITAMP12F_Msk (0x1UL << TAMP_SR_ITAMP12F_Pos) /*!< 0x08000000 */
+#define TAMP_SR_ITAMP12F TAMP_SR_ITAMP12F_Msk
+#define TAMP_SR_ITAMP13F_Pos (28U)
+#define TAMP_SR_ITAMP13F_Msk (0x1UL << TAMP_SR_ITAMP13F_Pos) /*!< 0x10000000 */
+#define TAMP_SR_ITAMP13F TAMP_SR_ITAMP13F_Msk
+#define TAMP_SR_ITAMP15F_Pos (30U)
+#define TAMP_SR_ITAMP15F_Msk (0x1UL << TAMP_SR_ITAMP15F_Pos) /*!< 0x40000000 */
+#define TAMP_SR_ITAMP15F TAMP_SR_ITAMP15F_Msk
+
+/******************** Bits definition for TAMP_MISR register ****************/
+#define TAMP_MISR_TAMP1MF_Pos (0U)
+#define TAMP_MISR_TAMP1MF_Msk (0x1UL << TAMP_MISR_TAMP1MF_Pos) /*!< 0x00000001 */
+#define TAMP_MISR_TAMP1MF TAMP_MISR_TAMP1MF_Msk
+#define TAMP_MISR_TAMP2MF_Pos (1U)
+#define TAMP_MISR_TAMP2MF_Msk (0x1UL << TAMP_MISR_TAMP2MF_Pos) /*!< 0x00000002 */
+#define TAMP_MISR_TAMP2MF TAMP_MISR_TAMP2MF_Msk
+#define TAMP_MISR_TAMP3MF_Pos (2U)
+#define TAMP_MISR_TAMP3MF_Msk (0x1UL << TAMP_MISR_TAMP3MF_Pos) /*!< 0x00000004 */
+#define TAMP_MISR_TAMP3MF TAMP_MISR_TAMP3MF_Msk
+#define TAMP_MISR_TAMP4MF_Pos (3U)
+#define TAMP_MISR_TAMP4MF_Msk (0x1UL << TAMP_MISR_TAMP4MF_Pos) /*!< 0x00000008 */
+#define TAMP_MISR_TAMP4MF TAMP_MISR_TAMP4MF_Msk
+#define TAMP_MISR_TAMP5MF_Pos (4U)
+#define TAMP_MISR_TAMP5MF_Msk (0x1UL << TAMP_MISR_TAMP5MF_Pos) /*!< 0x00000010 */
+#define TAMP_MISR_TAMP5MF TAMP_MISR_TAMP5MF_Msk
+#define TAMP_MISR_TAMP6MF_Pos (5U)
+#define TAMP_MISR_TAMP6MF_Msk (0x1UL << TAMP_MISR_TAMP6MF_Pos) /*!< 0x00000020 */
+#define TAMP_MISR_TAMP6MF TAMP_MISR_TAMP6MF_Msk
+#define TAMP_MISR_TAMP7MF_Pos (6U)
+#define TAMP_MISR_TAMP7MF_Msk (0x1UL << TAMP_MISR_TAMP7MF_Pos) /*!< 0x00000040 */
+#define TAMP_MISR_TAMP7MF TAMP_MISR_TAMP7MF_Msk
+#define TAMP_MISR_TAMP8MF_Pos (7U)
+#define TAMP_MISR_TAMP8MF_Msk (0x1UL << TAMP_MISR_TAMP8MF_Pos) /*!< 0x00000080 */
+#define TAMP_MISR_TAMP8MF TAMP_MISR_TAMP8MF_Msk
+#define TAMP_MISR_ITAMP1MF_Pos (16U)
+#define TAMP_MISR_ITAMP1MF_Msk (0x1UL << TAMP_MISR_ITAMP1MF_Pos) /*!< 0x00010000 */
+#define TAMP_MISR_ITAMP1MF TAMP_MISR_ITAMP1MF_Msk
+#define TAMP_MISR_ITAMP2MF_Pos (17U)
+#define TAMP_MISR_ITAMP2MF_Msk (0x1UL << TAMP_MISR_ITAMP2MF_Pos) /*!< 0x00020000 */
+#define TAMP_MISR_ITAMP2MF TAMP_MISR_ITAMP2MF_Msk
+#define TAMP_MISR_ITAMP3MF_Pos (18U)
+#define TAMP_MISR_ITAMP3MF_Msk (0x1UL << TAMP_MISR_ITAMP3MF_Pos) /*!< 0x00040000 */
+#define TAMP_MISR_ITAMP3MF TAMP_MISR_ITAMP3MF_Msk
+#define TAMP_MISR_ITAMP4MF_Pos (19U)
+#define TAMP_MISR_ITAMP4MF_Msk (0x1UL << TAMP_MISR_ITAMP4MF_Pos) /*!< 0x00080000 */
+#define TAMP_MISR_ITAMP4MF TAMP_MISR_ITAMP4MF_Msk
+#define TAMP_MISR_ITAMP5MF_Pos (20U)
+#define TAMP_MISR_ITAMP5MF_Msk (0x1UL << TAMP_MISR_ITAMP5MF_Pos) /*!< 0x00100000 */
+#define TAMP_MISR_ITAMP5MF TAMP_MISR_ITAMP5MF_Msk
+#define TAMP_MISR_ITAMP6MF_Pos (21U)
+#define TAMP_MISR_ITAMP6MF_Msk (0x1UL << TAMP_MISR_ITAMP6MF_Pos) /*!< 0x00200000 */
+#define TAMP_MISR_ITAMP6MF TAMP_MISR_ITAMP6MF_Msk
+#define TAMP_MISR_ITAMP7MF_Pos (22U)
+#define TAMP_MISR_ITAMP7MF_Msk (0x1UL << TAMP_MISR_ITAMP7MF_Pos) /*!< 0x00400000 */
+#define TAMP_MISR_ITAMP7MF TAMP_MISR_ITAMP7MF_Msk
+#define TAMP_MISR_ITAMP8MF_Pos (23U)
+#define TAMP_MISR_ITAMP8MF_Msk (0x1UL << TAMP_MISR_ITAMP8MF_Pos) /*!< 0x00800000 */
+#define TAMP_MISR_ITAMP8MF TAMP_MISR_ITAMP8MF_Msk
+#define TAMP_MISR_ITAMP9MF_Pos (24U)
+#define TAMP_MISR_ITAMP9MF_Msk (0x1UL << TAMP_MISR_ITAMP9MF_Pos) /*!< 0x01000000 */
+#define TAMP_MISR_ITAMP9MF TAMP_MISR_ITAMP9MF_Msk
+#define TAMP_MISR_ITAMP11MF_Pos (26U)
+#define TAMP_MISR_ITAMP11MF_Msk (0x1UL << TAMP_MISR_ITAMP11MF_Pos) /*!< 0x04000000 */
+#define TAMP_MISR_ITAMP11MF TAMP_MISR_ITAMP11MF_Msk
+#define TAMP_MISR_ITAMP12MF_Pos (27U)
+#define TAMP_MISR_ITAMP12MF_Msk (0x1UL << TAMP_MISR_ITAMP12MF_Pos) /*!< 0x08000000 */
+#define TAMP_MISR_ITAMP12MF TAMP_MISR_ITAMP12MF_Msk
+#define TAMP_MISR_ITAMP13MF_Pos (28U)
+#define TAMP_MISR_ITAMP13MF_Msk (0x1UL << TAMP_MISR_ITAMP13MF_Pos) /*!< 0x10000000 */
+#define TAMP_MISR_ITAMP13MF TAMP_MISR_ITAMP13MF_Msk
+#define TAMP_MISR_ITAMP15MF_Pos (30U)
+#define TAMP_MISR_ITAMP15MF_Msk (0x1UL << TAMP_MISR_ITAMP15MF_Pos) /*!< 0x40000000 */
+#define TAMP_MISR_ITAMP15MF TAMP_MISR_ITAMP15MF_Msk
+
+/******************** Bits definition for TAMP_SMISR register ************ *****/
+#define TAMP_SMISR_TAMP1MF_Pos (0U)
+#define TAMP_SMISR_TAMP1MF_Msk (0x1UL << TAMP_SMISR_TAMP1MF_Pos) /*!< 0x00000001 */
+#define TAMP_SMISR_TAMP1MF TAMP_SMISR_TAMP1MF_Msk
+#define TAMP_SMISR_TAMP2MF_Pos (1U)
+#define TAMP_SMISR_TAMP2MF_Msk (0x1UL << TAMP_SMISR_TAMP2MF_Pos) /*!< 0x00000002 */
+#define TAMP_SMISR_TAMP2MF TAMP_SMISR_TAMP2MF_Msk
+#define TAMP_SMISR_TAMP3MF_Pos (2U)
+#define TAMP_SMISR_TAMP3MF_Msk (0x1UL << TAMP_SMISR_TAMP3MF_Pos) /*!< 0x00000004 */
+#define TAMP_SMISR_TAMP3MF TAMP_SMISR_TAMP3MF_Msk
+#define TAMP_SMISR_TAMP4MF_Pos (3U)
+#define TAMP_SMISR_TAMP4MF_Msk (0x1UL << TAMP_SMISR_TAMP4MF_Pos) /*!< 0x00000008 */
+#define TAMP_SMISR_TAMP4MF TAMP_SMISR_TAMP4MF_Msk
+#define TAMP_SMISR_TAMP5MF_Pos (4U)
+#define TAMP_SMISR_TAMP5MF_Msk (0x1UL << TAMP_SMISR_TAMP5MF_Pos) /*!< 0x00000010 */
+#define TAMP_SMISR_TAMP5MF TAMP_SMISR_TAMP5MF_Msk
+#define TAMP_SMISR_TAMP6MF_Pos (5U)
+#define TAMP_SMISR_TAMP6MF_Msk (0x1UL << TAMP_SMISR_TAMP6MF_Pos) /*!< 0x00000020 */
+#define TAMP_SMISR_TAMP6MF TAMP_SMISR_TAMP6MF_Msk
+#define TAMP_SMISR_TAMP7MF_Pos (6U)
+#define TAMP_SMISR_TAMP7MF_Msk (0x1UL << TAMP_SMISR_TAMP7MF_Pos) /*!< 0x00000040 */
+#define TAMP_SMISR_TAMP7MF TAMP_SMISR_TAMP7MF_Msk
+#define TAMP_SMISR_TAMP8MF_Pos (7U)
+#define TAMP_SMISR_TAMP8MF_Msk (0x1UL << TAMP_SMISR_TAMP8MF_Pos) /*!< 0x00000080 */
+#define TAMP_SMISR_TAMP8MF TAMP_SMISR_TAMP8MF_Msk
+#define TAMP_SMISR_ITAMP1MF_Pos (16U)
+#define TAMP_SMISR_ITAMP1MF_Msk (0x1UL << TAMP_SMISR_ITAMP1MF_Pos) /*!< 0x00010000 */
+#define TAMP_SMISR_ITAMP1MF TAMP_SMISR_ITAMP1MF_Msk
+#define TAMP_SMISR_ITAMP2MF_Pos (17U)
+#define TAMP_SMISR_ITAMP2MF_Msk (0x1UL << TAMP_SMISR_ITAMP2MF_Pos) /*!< 0x00020000 */
+#define TAMP_SMISR_ITAMP2MF TAMP_SMISR_ITAMP2MF_Msk
+#define TAMP_SMISR_ITAMP3MF_Pos (18U)
+#define TAMP_SMISR_ITAMP3MF_Msk (0x1UL << TAMP_SMISR_ITAMP3MF_Pos) /*!< 0x00040000 */
+#define TAMP_SMISR_ITAMP3MF TAMP_SMISR_ITAMP3MF_Msk
+#define TAMP_SMISR_ITAMP4MF_Pos (19U)
+#define TAMP_SMISR_ITAMP4MF_Msk (0x1UL << TAMP_SMISR_ITAMP4MF_Pos) /*!< 0x00080000 */
+#define TAMP_SMISR_ITAMP4MF TAMP_SMISR_ITAMP4MF_Msk
+#define TAMP_SMISR_ITAMP5MF_Pos (20U)
+#define TAMP_SMISR_ITAMP5MF_Msk (0x1UL << TAMP_SMISR_ITAMP5MF_Pos) /*!< 0x00100000 */
+#define TAMP_SMISR_ITAMP5MF TAMP_SMISR_ITAMP5MF_Msk
+#define TAMP_SMISR_ITAMP6MF_Pos (21U)
+#define TAMP_SMISR_ITAMP6MF_Msk (0x1UL << TAMP_SMISR_ITAMP6MF_Pos) /*!< 0x00200000 */
+#define TAMP_SMISR_ITAMP6MF TAMP_SMISR_ITAMP6MF_Msk
+#define TAMP_SMISR_ITAMP7MF_Pos (22U)
+#define TAMP_SMISR_ITAMP7MF_Msk (0x1UL << TAMP_SMISR_ITAMP7MF_Pos) /*!< 0x00400000 */
+#define TAMP_SMISR_ITAMP7MF TAMP_SMISR_ITAMP7MF_Msk
+#define TAMP_SMISR_ITAMP8MF_Pos (23U)
+#define TAMP_SMISR_ITAMP8MF_Msk (0x1UL << TAMP_SMISR_ITAMP8MF_Pos) /*!< 0x00800000 */
+#define TAMP_SMISR_ITAMP8MF TAMP_SMISR_ITAMP8MF_Msk
+#define TAMP_SMISR_ITAMP9MF_Pos (24U)
+#define TAMP_SMISR_ITAMP9MF_Msk (0x1UL << TAMP_SMISR_ITAMP9MF_Pos) /*!< 0x00100000 */
+#define TAMP_SMISR_ITAMP9MF TAMP_SMISR_ITAMP9MF_Msk
+#define TAMP_SMISR_ITAMP11MF_Pos (26U)
+#define TAMP_SMISR_ITAMP11MF_Msk (0x1UL << TAMP_SMISR_ITAMP11MF_Pos) /*!< 0x00400000 */
+#define TAMP_SMISR_ITAMP11MF TAMP_SMISR_ITAMP11MF_Msk
+#define TAMP_SMISR_ITAMP12MF_Pos (27U)
+#define TAMP_SMISR_ITAMP12MF_Msk (0x1UL << TAMP_SMISR_ITAMP12MF_Pos) /*!< 0x08000000 */
+#define TAMP_SMISR_ITAMP12MF TAMP_SMISR_ITAMP12MF_Msk
+#define TAMP_SMISR_ITAMP13MF_Pos (28U)
+#define TAMP_SMISR_ITAMP13MF_Msk (0x1UL << TAMP_SMISR_ITAMP13MF_Pos) /*!< 0x10000000 */
+#define TAMP_SMISR_ITAMP13MF TAMP_SMISR_ITAMP13MF_Msk
+#define TAMP_SMISR_ITAMP15MF_Pos (30U)
+#define TAMP_SMISR_ITAMP15MF_Msk (0x1UL << TAMP_SMISR_ITAMP15MF_Pos) /*!< 0x40000000 */
+#define TAMP_SMISR_ITAMP15MF TAMP_SMISR_ITAMP15MF_Msk
+
+/******************** Bits definition for TAMP_SCR register *****************/
+#define TAMP_SCR_CTAMP1F_Pos (0U)
+#define TAMP_SCR_CTAMP1F_Msk (0x1UL << TAMP_SCR_CTAMP1F_Pos) /*!< 0x00000001 */
+#define TAMP_SCR_CTAMP1F TAMP_SCR_CTAMP1F_Msk
+#define TAMP_SCR_CTAMP2F_Pos (1U)
+#define TAMP_SCR_CTAMP2F_Msk (0x1UL << TAMP_SCR_CTAMP2F_Pos) /*!< 0x00000002 */
+#define TAMP_SCR_CTAMP2F TAMP_SCR_CTAMP2F_Msk
+#define TAMP_SCR_CTAMP3F_Pos (2U)
+#define TAMP_SCR_CTAMP3F_Msk (0x1UL << TAMP_SCR_CTAMP3F_Pos) /*!< 0x00000004 */
+#define TAMP_SCR_CTAMP3F TAMP_SCR_CTAMP3F_Msk
+#define TAMP_SCR_CTAMP4F_Pos (3U)
+#define TAMP_SCR_CTAMP4F_Msk (0x1UL << TAMP_SCR_CTAMP4F_Pos) /*!< 0x00000008 */
+#define TAMP_SCR_CTAMP4F TAMP_SCR_CTAMP4F_Msk
+#define TAMP_SCR_CTAMP5F_Pos (4U)
+#define TAMP_SCR_CTAMP5F_Msk (0x1UL << TAMP_SCR_CTAMP5F_Pos) /*!< 0x00000010 */
+#define TAMP_SCR_CTAMP5F TAMP_SCR_CTAMP5F_Msk
+#define TAMP_SCR_CTAMP6F_Pos (5U)
+#define TAMP_SCR_CTAMP6F_Msk (0x1UL << TAMP_SCR_CTAMP6F_Pos) /*!< 0x00000020 */
+#define TAMP_SCR_CTAMP6F TAMP_SCR_CTAMP6F_Msk
+#define TAMP_SCR_CTAMP7F_Pos (6U)
+#define TAMP_SCR_CTAMP7F_Msk (0x1UL << TAMP_SCR_CTAMP7F_Pos) /*!< 0x00000040 */
+#define TAMP_SCR_CTAMP7F TAMP_SCR_CTAMP7F_Msk
+#define TAMP_SCR_CTAMP8F_Pos (7U)
+#define TAMP_SCR_CTAMP8F_Msk (0x1UL << TAMP_SCR_CTAMP8F_Pos) /*!< 0x00000080 */
+#define TAMP_SCR_CTAMP8F TAMP_SCR_CTAMP8F_Msk
+#define TAMP_SCR_CITAMP1F_Pos (16U)
+#define TAMP_SCR_CITAMP1F_Msk (0x1UL << TAMP_SCR_CITAMP1F_Pos) /*!< 0x00010000 */
+#define TAMP_SCR_CITAMP1F TAMP_SCR_CITAMP1F_Msk
+#define TAMP_SCR_CITAMP2F_Pos (17U)
+#define TAMP_SCR_CITAMP2F_Msk (0x1UL << TAMP_SCR_CITAMP2F_Pos) /*!< 0x00020000 */
+#define TAMP_SCR_CITAMP2F TAMP_SCR_CITAMP2F_Msk
+#define TAMP_SCR_CITAMP3F_Pos (18U)
+#define TAMP_SCR_CITAMP3F_Msk (0x1UL << TAMP_SCR_CITAMP3F_Pos) /*!< 0x00040000 */
+#define TAMP_SCR_CITAMP3F TAMP_SCR_CITAMP3F_Msk
+#define TAMP_SCR_CITAMP4F_Pos (19U)
+#define TAMP_SCR_CITAMP4F_Msk (0x1UL << TAMP_SCR_CITAMP4F_Pos) /*!< 0x00080000 */
+#define TAMP_SCR_CITAMP4F TAMP_SCR_CITAMP4F_Msk
+#define TAMP_SCR_CITAMP5F_Pos (20U)
+#define TAMP_SCR_CITAMP5F_Msk (0x1UL << TAMP_SCR_CITAMP5F_Pos) /*!< 0x00100000 */
+#define TAMP_SCR_CITAMP5F TAMP_SCR_CITAMP5F_Msk
+#define TAMP_SCR_CITAMP6F_Pos (21U)
+#define TAMP_SCR_CITAMP6F_Msk (0x1UL << TAMP_SCR_CITAMP6F_Pos) /*!< 0x00200000 */
+#define TAMP_SCR_CITAMP6F TAMP_SCR_CITAMP6F_Msk
+#define TAMP_SCR_CITAMP7F_Pos (22U)
+#define TAMP_SCR_CITAMP7F_Msk (0x1UL << TAMP_SCR_CITAMP7F_Pos) /*!< 0x00400000 */
+#define TAMP_SCR_CITAMP7F TAMP_SCR_CITAMP7F_Msk
+#define TAMP_SCR_CITAMP8F_Pos (23U)
+#define TAMP_SCR_CITAMP8F_Msk (0x1UL << TAMP_SCR_CITAMP8F_Pos) /*!< 0x00800000 */
+#define TAMP_SCR_CITAMP8F TAMP_SCR_CITAMP8F_Msk
+#define TAMP_SCR_CITAMP9F_Pos (24U)
+#define TAMP_SCR_CITAMP9F_Msk (0x1UL << TAMP_SCR_CITAMP9F_Pos) /*!< 0x00100000 */
+#define TAMP_SCR_CITAMP9F TAMP_SCR_CITAMP9F_Msk
+#define TAMP_SCR_CITAMP11F_Pos (26U)
+#define TAMP_SCR_CITAMP11F_Msk (0x1UL << TAMP_SCR_CITAMP11F_Pos) /*!< 0x00400000 */
+#define TAMP_SCR_CITAMP11F TAMP_SCR_CITAMP11F_Msk
+#define TAMP_SCR_CITAMP12F_Pos (27U)
+#define TAMP_SCR_CITAMP12F_Msk (0x1UL << TAMP_SCR_CITAMP12F_Pos) /*!< 0x08000000 */
+#define TAMP_SCR_CITAMP12F TAMP_SCR_CITAMP12F_Msk
+#define TAMP_SCR_CITAMP13F_Pos (28U)
+#define TAMP_SCR_CITAMP13F_Msk (0x1UL << TAMP_SCR_CITAMP13F_Pos) /*!< 0x10000000 */
+#define TAMP_SCR_CITAMP13F TAMP_SCR_CITAMP13F_Msk
+#define TAMP_SCR_CITAMP15F_Pos (30U)
+#define TAMP_SCR_CITAMP15F_Msk (0x1UL << TAMP_SCR_CITAMP15F_Pos) /*!< 0x40000000 */
+#define TAMP_SCR_CITAMP15F TAMP_SCR_CITAMP15F_Msk
+/******************** Bits definition for TAMP_COUNT1R register ***************/
+#define TAMP_COUNT1R_COUNT_Pos (0U)
+#define TAMP_COUNT1R_COUNT_Msk (0xFFFFFFFFUL << TAMP_COUNT1R_COUNT_Pos)/*!< 0xFFFFFFFF */
+#define TAMP_COUNT1R_COUNT TAMP_COUNT1R_COUNT_Msk
+
+/******************** Bits definition for TAMP_OR register ***************/
+#define TAMP_OR_OUT3_RMP_Pos (1U)
+#define TAMP_OR_OUT3_RMP_Msk (0x2UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00000006 */
+#define TAMP_OR_OUT3_RMP TAMP_OR_OUT3_RMP_Msk
+#define TAMP_OR_OUT3_RMP_0 (0x1UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00100000 */
+#define TAMP_OR_OUT3_RMP_1 (0x2UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00200000 */
+#define TAMP_OR_OUT5_RMP_Pos (3U)
+#define TAMP_OR_OUT5_RMP_Msk (0x1UL << TAMP_OR_OUT5_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_OUT5_RMP TAMP_OR_OUT5_RMP_Msk
+#define TAMP_OR_IN2_RMP_Pos (8U)
+#define TAMP_OR_IN2_RMP_Msk (0x1UL << TAMP_OR_IN2_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN2_RMP TAMP_OR_IN2_RMP_Msk
+#define TAMP_OR_IN3_RMP_Pos (9U)
+#define TAMP_OR_IN3_RMP_Msk (0x1UL << TAMP_OR_IN3_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN3_RMP TAMP_OR_IN3_RMP_Msk
+#define TAMP_OR_IN4_RMP_Pos (10U)
+#define TAMP_OR_IN4_RMP_Msk (0x1UL << TAMP_OR_IN4_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN4_RMP TAMP_OR_IN4_RMP_Msk
+
+/******************** Bits definition for TAMP_ERCFG register ***************/
+#define TAMP_ERCFGR_ERCFG0_Pos (0U)
+#define TAMP_ERCFGR_ERCFG0_Msk (0x1UL << TAMP_ERCFGR_ERCFG0_Pos) /*!< 0x00000001 */
+#define TAMP_ERCFGR_ERCFG0 TAMP_ERCFGR_ERCFG0_Msk
+
+/******************** Bits definition for TAMP_BKP0R register ***************/
+#define TAMP_BKP0R_Pos (0U)
+#define TAMP_BKP0R_Msk (0xFFFFFFFFUL << TAMP_BKP0R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP0R TAMP_BKP0R_Msk
+
+/******************** Bits definition for TAMP_BKP1R register ****************/
+#define TAMP_BKP1R_Pos (0U)
+#define TAMP_BKP1R_Msk (0xFFFFFFFFUL << TAMP_BKP1R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP1R TAMP_BKP1R_Msk
+
+/******************** Bits definition for TAMP_BKP2R register ****************/
+#define TAMP_BKP2R_Pos (0U)
+#define TAMP_BKP2R_Msk (0xFFFFFFFFUL << TAMP_BKP2R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP2R TAMP_BKP2R_Msk
+
+/******************** Bits definition for TAMP_BKP3R register ****************/
+#define TAMP_BKP3R_Pos (0U)
+#define TAMP_BKP3R_Msk (0xFFFFFFFFUL << TAMP_BKP3R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP3R TAMP_BKP3R_Msk
+
+/******************** Bits definition for TAMP_BKP4R register ****************/
+#define TAMP_BKP4R_Pos (0U)
+#define TAMP_BKP4R_Msk (0xFFFFFFFFUL << TAMP_BKP4R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP4R TAMP_BKP4R_Msk
+
+/******************** Bits definition for TAMP_BKP5R register ****************/
+#define TAMP_BKP5R_Pos (0U)
+#define TAMP_BKP5R_Msk (0xFFFFFFFFUL << TAMP_BKP5R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP5R TAMP_BKP5R_Msk
+
+/******************** Bits definition for TAMP_BKP6R register ****************/
+#define TAMP_BKP6R_Pos (0U)
+#define TAMP_BKP6R_Msk (0xFFFFFFFFUL << TAMP_BKP6R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP6R TAMP_BKP6R_Msk
+
+/******************** Bits definition for TAMP_BKP7R register ****************/
+#define TAMP_BKP7R_Pos (0U)
+#define TAMP_BKP7R_Msk (0xFFFFFFFFUL << TAMP_BKP7R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP7R TAMP_BKP7R_Msk
+
+/******************** Bits definition for TAMP_BKP8R register ****************/
+#define TAMP_BKP8R_Pos (0U)
+#define TAMP_BKP8R_Msk (0xFFFFFFFFUL << TAMP_BKP8R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP8R TAMP_BKP8R_Msk
+
+/******************** Bits definition for TAMP_BKP9R register ****************/
+#define TAMP_BKP9R_Pos (0U)
+#define TAMP_BKP9R_Msk (0xFFFFFFFFUL << TAMP_BKP9R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP9R TAMP_BKP9R_Msk
+
+/******************** Bits definition for TAMP_BKP10R register ***************/
+#define TAMP_BKP10R_Pos (0U)
+#define TAMP_BKP10R_Msk (0xFFFFFFFFUL << TAMP_BKP10R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP10R TAMP_BKP10R_Msk
+
+/******************** Bits definition for TAMP_BKP11R register ***************/
+#define TAMP_BKP11R_Pos (0U)
+#define TAMP_BKP11R_Msk (0xFFFFFFFFUL << TAMP_BKP11R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP11R TAMP_BKP11R_Msk
+
+/******************** Bits definition for TAMP_BKP12R register ***************/
+#define TAMP_BKP12R_Pos (0U)
+#define TAMP_BKP12R_Msk (0xFFFFFFFFUL << TAMP_BKP12R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP12R TAMP_BKP12R_Msk
+
+/******************** Bits definition for TAMP_BKP13R register ***************/
+#define TAMP_BKP13R_Pos (0U)
+#define TAMP_BKP13R_Msk (0xFFFFFFFFUL << TAMP_BKP13R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP13R TAMP_BKP13R_Msk
+
+/******************** Bits definition for TAMP_BKP14R register ***************/
+#define TAMP_BKP14R_Pos (0U)
+#define TAMP_BKP14R_Msk (0xFFFFFFFFUL << TAMP_BKP14R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP14R TAMP_BKP14R_Msk
+
+/******************** Bits definition for TAMP_BKP15R register ***************/
+#define TAMP_BKP15R_Pos (0U)
+#define TAMP_BKP15R_Msk (0xFFFFFFFFUL << TAMP_BKP15R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP15R TAMP_BKP15R_Msk
+
+/******************** Bits definition for TAMP_BKP16R register ***************/
+#define TAMP_BKP16R_Pos (0U)
+#define TAMP_BKP16R_Msk (0xFFFFFFFFUL << TAMP_BKP16R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP16R TAMP_BKP16R_Msk
+
+/******************** Bits definition for TAMP_BKP17R register ***************/
+#define TAMP_BKP17R_Pos (0U)
+#define TAMP_BKP17R_Msk (0xFFFFFFFFUL << TAMP_BKP17R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP17R TAMP_BKP17R_Msk
+
+/******************** Bits definition for TAMP_BKP18R register ***************/
+#define TAMP_BKP18R_Pos (0U)
+#define TAMP_BKP18R_Msk (0xFFFFFFFFUL << TAMP_BKP18R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP18R TAMP_BKP18R_Msk
+
+/******************** Bits definition for TAMP_BKP19R register ***************/
+#define TAMP_BKP19R_Pos (0U)
+#define TAMP_BKP19R_Msk (0xFFFFFFFFUL << TAMP_BKP19R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP19R TAMP_BKP19R_Msk
+
+/******************** Bits definition for TAMP_BKP20R register ***************/
+#define TAMP_BKP20R_Pos (0U)
+#define TAMP_BKP20R_Msk (0xFFFFFFFFUL << TAMP_BKP20R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP20R TAMP_BKP20R_Msk
+
+/******************** Bits definition for TAMP_BKP21R register ***************/
+#define TAMP_BKP21R_Pos (0U)
+#define TAMP_BKP21R_Msk (0xFFFFFFFFUL << TAMP_BKP21R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP21R TAMP_BKP21R_Msk
+
+/******************** Bits definition for TAMP_BKP22R register ***************/
+#define TAMP_BKP22R_Pos (0U)
+#define TAMP_BKP22R_Msk (0xFFFFFFFFUL << TAMP_BKP22R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP22R TAMP_BKP22R_Msk
+
+/******************** Bits definition for TAMP_BKP23R register ***************/
+#define TAMP_BKP23R_Pos (0U)
+#define TAMP_BKP23R_Msk (0xFFFFFFFFUL << TAMP_BKP23R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP23R TAMP_BKP23R_Msk
+
+/******************** Bits definition for TAMP_BKP24R register ***************/
+#define TAMP_BKP24R_Pos (0U)
+#define TAMP_BKP24R_Msk (0xFFFFFFFFUL << TAMP_BKP24R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP24R TAMP_BKP24R_Msk
+
+/******************** Bits definition for TAMP_BKP25R register ***************/
+#define TAMP_BKP25R_Pos (0U)
+#define TAMP_BKP25R_Msk (0xFFFFFFFFUL << TAMP_BKP25R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP25R TAMP_BKP25R_Msk
+
+/******************** Bits definition for TAMP_BKP26R register ***************/
+#define TAMP_BKP26R_Pos (0U)
+#define TAMP_BKP26R_Msk (0xFFFFFFFFUL << TAMP_BKP26R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP26R TAMP_BKP26R_Msk
+
+/******************** Bits definition for TAMP_BKP27R register ***************/
+#define TAMP_BKP27R_Pos (0U)
+#define TAMP_BKP27R_Msk (0xFFFFFFFFUL << TAMP_BKP27R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP27R TAMP_BKP27R_Msk
+
+/******************** Bits definition for TAMP_BKP28R register ***************/
+#define TAMP_BKP28R_Pos (0U)
+#define TAMP_BKP28R_Msk (0xFFFFFFFFUL << TAMP_BKP28R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP28R TAMP_BKP28R_Msk
+
+/******************** Bits definition for TAMP_BKP29R register ***************/
+#define TAMP_BKP29R_Pos (0U)
+#define TAMP_BKP29R_Msk (0xFFFFFFFFUL << TAMP_BKP29R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP29R TAMP_BKP29R_Msk
+
+/******************** Bits definition for TAMP_BKP30R register ***************/
+#define TAMP_BKP30R_Pos (0U)
+#define TAMP_BKP30R_Msk (0xFFFFFFFFUL << TAMP_BKP30R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP30R TAMP_BKP30R_Msk
+
+/******************** Bits definition for TAMP_BKP31R register ***************/
+#define TAMP_BKP31R_Pos (0U)
+#define TAMP_BKP31R_Msk (0xFFFFFFFFUL << TAMP_BKP31R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP31R TAMP_BKP31R_Msk
+
+/******************************************************************************/
+/* */
+/* SBS */
+/* */
+/******************************************************************************/
+/******************** Bit definition for SBS_HDPLCR register *****************/
+#define SBS_HDPLCR_INCR_HDPL_Pos (0U)
+#define SBS_HDPLCR_INCR_HDPL_Msk (0xFFUL << SBS_HDPLCR_INCR_HDPL_Pos) /*!< 0x000000FF */
+#define SBS_HDPLCR_INCR_HDPL SBS_HDPLCR_INCR_HDPL_Msk /*!< Increment HDPL value. */
+
+/******************** Bit definition for SBS_HDPLSR register *****************/
+#define SBS_HDPLSR_HDPL_Pos (0U)
+#define SBS_HDPLSR_HDPL_Msk (0xFFUL << SBS_HDPLSR_HDPL_Pos) /*!< 0x000000FF */
+#define SBS_HDPLSR_HDPL SBS_HDPLSR_HDPL_Msk /*!< HDPL value. */
+
+/******************** Bit definition for SBS_NEXTHDPLCR register *****************/
+#define SBS_NEXTHDPLCR_NEXTHDPL_Pos (0U)
+#define SBS_NEXTHDPLCR_NEXTHDPL_Msk (0x3UL << SBS_NEXTHDPLCR_NEXTHDPL_Pos) /*!< 0x00000003 */
+#define SBS_NEXTHDPLCR_NEXTHDPL SBS_NEXTHDPLCR_NEXTHDPL_Msk /*!< NEXTHDPL value. */
+#define SBS_NEXTHDPLCR_NEXTHDPL_0 (0x1UL << SBS_NEXTHDPLCR_NEXTHDPL_Pos) /*!< 0x00000001 */
+#define SBS_NEXTHDPLCR_NEXTHDPL_1 (0x2UL << SBS_NEXTHDPLCR_NEXTHDPL_Pos) /*!< 0x00000002 */
+
+/******************** Bit definition for SBS_DBGCR register *****************/
+#define SBS_DBGCR_AP_UNLOCK_Pos (0U)
+#define SBS_DBGCR_AP_UNLOCK_Msk (0xFFUL << SBS_DBGCR_AP_UNLOCK_Pos) /*!< 0x000000FF */
+#define SBS_DBGCR_AP_UNLOCK SBS_DBGCR_AP_UNLOCK_Msk /*!< Open the Access Port. */
+
+#define SBS_DBGCR_DBG_UNLOCK_Pos (8U)
+#define SBS_DBGCR_DBG_UNLOCK_Msk (0xFFUL << SBS_DBGCR_DBG_UNLOCK_Pos) /*!< 0x0000FF00 */
+#define SBS_DBGCR_DBG_UNLOCK SBS_DBGCR_DBG_UNLOCK_Msk /*!< Open the debug when DBG_AUTH_HDPL is reached. */
+
+#define SBS_DBGCR_DBG_AUTH_HDPL_Pos (16U)
+#define SBS_DBGCR_DBG_AUTH_HDPL_Msk (0xFFUL << SBS_DBGCR_DBG_AUTH_HDPL_Pos) /*!< 0x00FF0000 */
+#define SBS_DBGCR_DBG_AUTH_HDPL SBS_DBGCR_DBG_AUTH_HDPL_Msk /*!< HDPL value when the debug should be effectively opened. */
+
+#define SBS_DBGCR_DBG_AUTH_SEC_Pos (24U)
+#define SBS_DBGCR_DBG_AUTH_SEC_Msk (0xFFUL << SBS_DBGCR_DBG_AUTH_SEC_Pos) /*!< 0xFF000000 */
+#define SBS_DBGCR_DBG_AUTH_SEC SBS_DBGCR_DBG_AUTH_SEC_Msk /*!< Open the non-secured and secured debugs. */
+
+/******************** Bit definition for SBS_DBGLCKR register *****************/
+#define SBS_DBGLOCKR_DBGCFG_LOCK_Pos (0U)
+#define SBS_DBGLOCKR_DBGCFG_LOCK_Msk (0xFFUL << SBS_DBGLOCKR_DBGCFG_LOCK_Pos) /*!< 0x000000FF */
+#define SBS_DBGLOCKR_DBGCFG_LOCK SBS_DBGLOCKR_DBGCFG_LOCK_Msk /*!< SBS_DBGLOCKR_DBGCFG_LOCK value. */
+
+/******************** Bit definition for SBS_RSSCMDR register ***************/
+#define SBS_RSSCMDR_RSSCMD_Pos (0U)
+#define SBS_RSSCMDR_RSSCMD_Msk (0xFFFFUL << SBS_RSSCMDR_RSSCMD_Pos) /*!< 0x0000FFFF */
+#define SBS_RSSCMDR_RSSCMD SBS_RSSCMDR_RSSCMD_Msk /*!< command to be executed by the RSS. */
+
+/******************** Bit definition for SBS_EPOCHSELCR register ************/
+#define SBS_EPOCHSELCR_EPOCH_SEL_Pos (0U)
+#define SBS_EPOCHSELCR_EPOCH_SEL_Msk (0x3UL << SBS_EPOCHSELCR_EPOCH_SEL_Pos) /*!< 0x00000003 */
+#define SBS_EPOCHSELCR_EPOCH_SEL SBS_EPOCHSELCR_EPOCH_SEL_Msk /*!< Select EPOCH sent to SAES IP to encrypt/decrypt keys */
+#define SBS_EPOCHSELCR_EPOCH_SEL_0 (0x1UL << SBS_EPOCHSELCR_EPOCH_SEL_Pos) /*!< 0x00000001 */
+#define SBS_EPOCHSELCR_EPOCH_SEL_1 (0x2UL << SBS_EPOCHSELCR_EPOCH_SEL_Pos) /*!< 0x00000002 */
+
+/****************** Bit definition for SBS_PMCR register ****************/
+#define SBS_PMCR_PB6_FMP_Pos (16U)
+#define SBS_PMCR_PB6_FMP_Msk (0x1UL << SBS_PMCR_PB6_FMP_Pos) /*!< 0x00010000 */
+#define SBS_PMCR_PB6_FMP SBS_PMCR_PB6_FMP_Msk /*!< Fast-mode Plus command on PB(6) */
+#define SBS_PMCR_PB7_FMP_Pos (17U)
+#define SBS_PMCR_PB7_FMP_Msk (0x1UL << SBS_PMCR_PB7_FMP_Pos) /*!< 0x00020000 */
+#define SBS_PMCR_PB7_FMP SBS_PMCR_PB7_FMP_Msk /*!< Fast-mode Plus command on PB(7) */
+#define SBS_PMCR_PB8_FMP_Pos (18U)
+#define SBS_PMCR_PB8_FMP_Msk (0x1UL << SBS_PMCR_PB8_FMP_Pos) /*!< 0x00040000 */
+#define SBS_PMCR_PB8_FMP SBS_PMCR_PB8_FMP_Msk /*!< Fast-mode Plus command on PB(8) */
+#define SBS_PMCR_PB9_FMP_Pos (19U)
+#define SBS_PMCR_PB9_FMP_Msk (0x1UL << SBS_PMCR_PB9_FMP_Pos) /*!< 0x00080000 */
+#define SBS_PMCR_PB9_FMP SBS_PMCR_PB9_FMP_Msk /*!< Fast-mode Plus command on PB(9) */
+
+/****************** Bit definition for SBS_FPUIMR register ***************/
+#define SBS_FPUIMR_FPU_IE_Pos (0U)
+#define SBS_FPUIMR_FPU_IE_Msk (0x3FUL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x0000003F - */
+#define SBS_FPUIMR_FPU_IE SBS_FPUIMR_FPU_IE_Msk /*!< All FPU interrupts enable */
+#define SBS_FPUIMR_FPU_IE_0 (0x1UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000001 - Invalid operation Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_1 (0x2UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000002 - Divide-by-zero Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_2 (0x4UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000004 - Underflow Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_3 (0x8UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000008 - Overflow Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_4 (0x10UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000010 - Input denormal Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_5 (0x20UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000020 - Inexact Interrupt enable (interrupt disabled at reset) */
+
+/****************** Bit definition for SBS_MESR register ****************/
+#define SBS_MESR_MCLR_Pos (0U)
+#define SBS_MESR_MCLR_Msk (0x1UL << SBS_MESR_MCLR_Pos) /*!< 0x00000001 */
+#define SBS_MESR_MCLR SBS_MESR_MCLR_Msk /*!< Status of Erase after Reset */
+#define SBS_MESR_IPMEE_Pos (16U)
+#define SBS_MESR_IPMEE_Msk (0x1UL << SBS_MESR_IPMEE_Pos) /*!< 0x00010000 */
+#define SBS_MESR_IPMEE SBS_MESR_IPMEE_Msk /*!< Status of End of Erase for ICache and PKA RAMs */
+
+/****************** Bit definition for SBS_CCCSR register ****************/
+#define SBS_CCCSR_EN1_Pos (0U)
+#define SBS_CCCSR_EN1_Msk (0x1UL << SBS_CCCSR_EN1_Pos) /*!< 0x00000001 */
+#define SBS_CCCSR_EN1 SBS_CCCSR_EN1_Msk /*!< Enable compensation cell for VDD power rail */
+#define SBS_CCCSR_CS1_Pos (1U)
+#define SBS_CCCSR_CS1_Msk (0x1UL << SBS_CCCSR_CS1_Pos) /*!< 0x00000002 */
+#define SBS_CCCSR_CS1 SBS_CCCSR_CS1_Msk /*!< Code selection for VDD power rail */
+#define SBS_CCCSR_EN2_Pos (2U)
+#define SBS_CCCSR_EN2_Msk (0x1UL << SBS_CCCSR_EN2_Pos) /*!< 0x00000004 */
+#define SBS_CCCSR_EN2 SBS_CCCSR_EN2_Msk /*!< Enable compensation cell for VDDIO power rail */
+#define SBS_CCCSR_CS2_Pos (3U)
+#define SBS_CCCSR_CS2_Msk (0x1UL << SBS_CCCSR_CS2_Pos) /*!< 0x00000008 */
+#define SBS_CCCSR_CS2 SBS_CCCSR_CS2_Msk /*!< Code selection for VDDIO power rail */
+#define SBS_CCCSR_RDY1_Pos (8U)
+#define SBS_CCCSR_RDY1_Msk (0x1UL << SBS_CCCSR_RDY1_Pos) /*!< 0x00000100 */
+#define SBS_CCCSR_RDY1 SBS_CCCSR_RDY1_Msk /*!< VDD compensation cell ready flag */
+#define SBS_CCCSR_RDY2_Pos (9U)
+#define SBS_CCCSR_RDY2_Msk (0x1UL << SBS_CCCSR_RDY2_Pos) /*!< 0x00000200 */
+#define SBS_CCCSR_RDY2 SBS_CCCSR_RDY2_Msk /*!< VDDIO compensation cell ready flag */
+
+/****************** Bit definition for SBS_CCVALR register ****************/
+#define SBS_CCVALR_ANSRC1_Pos (0U)
+#define SBS_CCVALR_ANSRC1_Msk (0xFUL << SBS_CCVALR_ANSRC1_Pos) /*!< 0x0000000F */
+#define SBS_CCVALR_ANSRC1 SBS_CCVALR_ANSRC1_Msk /*!< NMOS compensation value */
+#define SBS_CCVALR_APSRC1_Pos (4U)
+#define SBS_CCVALR_APSRC1_Msk (0xFUL << SBS_CCVALR_APSRC1_Pos) /*!< 0x000000F0 */
+#define SBS_CCVALR_APSRC1 SBS_CCVALR_APSRC1_Msk /*!< PMOS compensation value */
+#define SBS_CCVALR_ANSRC2_Pos (8U)
+#define SBS_CCVALR_ANSRC2_Msk (0xFUL << SBS_CCVALR_ANSRC2_Pos) /*!< 0x00000F00 */
+#define SBS_CCVALR_ANSRC2 SBS_CCVALR_ANSRC2_Msk /*!< NMOS compensation value */
+#define SBS_CCVALR_APSRC2_Pos (12U)
+#define SBS_CCVALR_APSRC2_Msk (0xFUL << SBS_CCVALR_APSRC2_Pos) /*!< 0x0000F000 */
+#define SBS_CCVALR_APSRC2 SBS_CCVALR_APSRC2_Msk /*!< PMOS compensation value */
+
+/****************** Bit definition for SBS_CCSWCR register ****************/
+#define SBS_CCSWCR_SW_ANSRC1_Pos (0U)
+#define SBS_CCSWCR_SW_ANSRC1_Msk (0xFUL << SBS_CCSWCR_SW_ANSRC1_Pos) /*!< 0x0000000F */
+#define SBS_CCSWCR_SW_ANSRC1 SBS_CCSWCR_SW_ANSRC1_Msk /*!< NMOS compensation code for VDD Power Rail */
+#define SBS_CCSWCR_SW_APSRC1_Pos (4U)
+#define SBS_CCSWCR_SW_APSRC1_Msk (0xFUL << SBS_CCSWCR_SW_APSRC1_Pos) /*!< 0x000000F0 */
+#define SBS_CCSWCR_SW_APSRC1 SBS_CCSWCR_SW_APSRC1_Msk /*!< PMOS compensation code for VDD Power Rail */
+#define SBS_CCSWCR_SW_ANSRC2_Pos (8U)
+#define SBS_CCSWCR_SW_ANSRC2_Msk (0xFUL << SBS_CCSWCR_SW_ANSRC2_Pos) /*!< 0x00000F00 */
+#define SBS_CCSWCR_SW_ANSRC2 SBS_CCSWCR_SW_ANSRC2_Msk /*!< NMOS compensation code for VDDIO Power Rail */
+#define SBS_CCSWCR_SW_APSRC2_Pos (12U)
+#define SBS_CCSWCR_SW_APSRC2_Msk (0xFUL << SBS_CCSWCR_SW_APSRC2_Pos) /*!< 0x0000F000 */
+#define SBS_CCSWCR_SW_APSRC2 SBS_CCSWCR_SW_APSRC2_Msk /*!< PMOS compensation code for VDDIO Power Rail */
+
+/****************** Bit definition for SBS_CFGR2 register ****************/
+#define SBS_CFGR2_CLL_Pos (0U)
+#define SBS_CFGR2_CLL_Msk (0x1UL << SBS_CFGR2_CLL_Pos) /*!< 0x00000001 */
+#define SBS_CFGR2_CLL SBS_CFGR2_CLL_Msk /*!< Core Lockup Lock */
+#define SBS_CFGR2_SEL_Pos (1U)
+#define SBS_CFGR2_SEL_Msk (0x1UL << SBS_CFGR2_SEL_Pos) /*!< 0x00000002 */
+#define SBS_CFGR2_SEL SBS_CFGR2_SEL_Msk /*!< SRAM ECC Lock */
+#define SBS_CFGR2_PVDL_Pos (2U)
+#define SBS_CFGR2_PVDL_Msk (0x1UL << SBS_CFGR2_PVDL_Pos) /*!< 0x00000004 */
+#define SBS_CFGR2_PVDL SBS_CFGR2_PVDL_Msk /*!< PVD Lock */
+#define SBS_CFGR2_ECCL_Pos (3U)
+#define SBS_CFGR2_ECCL_Msk (0x1UL << SBS_CFGR2_ECCL_Pos) /*!< 0x00000008 */
+#define SBS_CFGR2_ECCL SBS_CFGR2_ECCL_Msk /*!< Flash ECC Lock*/
+
+/******************** Bit definition for SBS_SECCFGR register ***************/
+#define SBS_SECCFGR_SBSSEC_Pos (0U)
+#define SBS_SECCFGR_SBSSEC_Msk (0x1UL << SBS_SECCFGR_SBSSEC_Pos) /*!< 0x00000001 */
+#define SBS_SECCFGR_SBSSEC SBS_SECCFGR_SBSSEC_Msk /*!< SBS clock control security enable */
+#define SBS_SECCFGR_CLASSBSEC_Pos (1U)
+#define SBS_SECCFGR_CLASSBSEC_Msk (0x1UL << SBS_SECCFGR_CLASSBSEC_Pos) /*!< 0x00000002 */
+#define SBS_SECCFGR_CLASSBSEC SBS_SECCFGR_CLASSBSEC_Msk /*!< ClassB SBS security enable */
+#define SBS_SECCFGR_FPUSEC_Pos (3U)
+#define SBS_SECCFGR_FPUSEC_Msk (0x1UL << SBS_SECCFGR_FPUSEC_Pos) /*!< 0x00000008 */
+#define SBS_SECCFGR_FPUSEC SBS_SECCFGR_FPUSEC_Msk /*!< FPU SBS security enable */
+
+/****************** Bit definition for SBS_CNSLCKR register **************/
+#define SBS_CNSLCKR_LOCKNSVTOR_Pos (0U)
+#define SBS_CNSLCKR_LOCKNSVTOR_Msk (0x1UL << SBS_CNSLCKR_LOCKNSVTOR_Pos) /*!< 0x00000001 */
+#define SBS_CNSLCKR_LOCKNSVTOR SBS_CNSLCKR_LOCKNSVTOR_Msk /*!< Disable VTOR_NS register writes by SW or debug agent */
+#define SBS_CNSLCKR_LOCKNSMPU_Pos (1U)
+#define SBS_CNSLCKR_LOCKNSMPU_Msk (0x1UL << SBS_CNSLCKR_LOCKNSMPU_Pos) /*!< 0x00000002 */
+#define SBS_CNSLCKR_LOCKNSMPU SBS_CNSLCKR_LOCKNSMPU_Msk /*!< Disable Non-Secure MPU registers writes by SW or debug agent */
+
+/****************** Bit definition for SBS_CSLCKR register ***************/
+#define SBS_CSLCKR_LOCKSVTAIRCR_Pos (0U)
+#define SBS_CSLCKR_LOCKSVTAIRCR_Msk (0x1UL << SBS_CSLCKR_LOCKSVTAIRCR_Pos) /*!< 0x00000001 */
+#define SBS_CSLCKR_LOCKSVTAIRCR SBS_CSLCKR_LOCKSVTAIRCR_Msk /*!< Disable changes to the secure vector table address, handling of system faults */
+#define SBS_CSLCKR_LOCKSMPU_Pos (1U)
+#define SBS_CSLCKR_LOCKSMPU_Msk (0x1UL << SBS_CSLCKR_LOCKSMPU_Pos) /*!< 0x00000002 */
+#define SBS_CSLCKR_LOCKSMPU SBS_CSLCKR_LOCKSMPU_Msk /*!< Disable changes to the secure MPU registers writes by SW or debug agent */
+#define SBS_CSLCKR_LOCKSAU_Pos (2U)
+#define SBS_CSLCKR_LOCKSAU_Msk (0x1UL << SBS_CSLCKR_LOCKSAU_Pos) /*!< 0x00000004 */
+#define SBS_CSLCKR_LOCKSAU SBS_CSLCKR_LOCKSAU_Msk /*!< Disable changes to SAU registers */
+
+/****************** Bit definition for SBS_ECCNMIR register ***************/
+#define SBS_ECCNMIR_ECCNMI_MASK_EN_Pos (0U)
+#define SBS_ECCNMIR_ECCNMI_MASK_EN_Msk (0x1UL << SBS_ECCNMIR_ECCNMI_MASK_EN_Pos) /*!< 0x00000001 */
+#define SBS_ECCNMIR_ECCNMI_MASK_EN SBS_ECCNMIR_ECCNMI_MASK_EN_Msk /*!< Disable NMI in case of double ECC error in flash interface */
+
+/*****************************************************************************/
+/* */
+/* Global TrustZone Control */
+/* */
+/*****************************************************************************/
+/******************* Bits definition for GTZC_TZSC_CR register ******************/
+#define GTZC_TZSC_CR_LCK_Pos (0U)
+#define GTZC_TZSC_CR_LCK_Msk (0x01UL << GTZC_TZSC_CR_LCK_Pos) /*!< 0x00000001 */
+
+/******************* Bits definition for GTZC_TZSC_MPCWM_CFGR register **********/
+#define GTZC_TZSC_MPCWM_CFGR_SREN_Pos (0U)
+#define GTZC_TZSC_MPCWM_CFGR_SREN_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_SREN_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_SREN GTZC_TZSC_MPCWM_CFGR_SREN_Msk
+#define GTZC_TZSC_MPCWM_CFGR_SRLOCK_Pos (1U)
+#define GTZC_TZSC_MPCWM_CFGR_SRLOCK_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_SRLOCK_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_SRLOCK GTZC_TZSC_MPCWM_CFGR_SRLOCK_Msk
+#define GTZC_TZSC_MPCWM_CFGR_SEC_Pos (8U)
+#define GTZC_TZSC_MPCWM_CFGR_SEC_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_SEC_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_SEC GTZC_TZSC_MPCWM_CFGR_SEC_Msk
+#define GTZC_TZSC_MPCWM_CFGR_PRIV_Pos (9U)
+#define GTZC_TZSC_MPCWM_CFGR_PRIV_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_PRIV_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_PRIV GTZC_TZSC_MPCWM_CFGR_PRIV_Msk
+
+/******************* Bits definition for GTZC_TZSC_MPCWMR register **************/
+#define GTZC_TZSC_MPCWMR_SUBZ_START_Pos (0U)
+#define GTZC_TZSC_MPCWMR_SUBZ_START_Msk (0x7FFUL << GTZC_TZSC_MPCWMR_SUBZ_START_Pos)
+#define GTZC_TZSC_MPCWMR_SUBZ_START GTZC_TZSC_MPCWMR_SUBZ_START_Msk
+#define GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Pos (16U)
+#define GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Msk (0xFFFUL << GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Pos)
+#define GTZC_TZSC_MPCWMR_SUBZ_LENGTH GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Msk
+
+/******* Bits definition for TZSC _SECCFGRx/_PRIVCFGRx registers *****/
+/******* Bits definition for TZIC _IERx/_SRx/_IFCRx registers *****/
+
+/*************** Bits definition for register x=1 (TZSC1) *************/
+#define GTZC_CFGR1_TIM2_Pos (0U)
+#define GTZC_CFGR1_TIM2_Msk (0x01UL << GTZC_CFGR1_TIM2_Pos)
+#define GTZC_CFGR1_TIM3_Pos (1U)
+#define GTZC_CFGR1_TIM3_Msk (0x01UL << GTZC_CFGR1_TIM3_Pos)
+#define GTZC_CFGR1_TIM4_Pos (2U)
+#define GTZC_CFGR1_TIM4_Msk (0x01UL << GTZC_CFGR1_TIM4_Pos)
+#define GTZC_CFGR1_TIM5_Pos (3U)
+#define GTZC_CFGR1_TIM5_Msk (0x01UL << GTZC_CFGR1_TIM5_Pos)
+#define GTZC_CFGR1_TIM6_Pos (4U)
+#define GTZC_CFGR1_TIM6_Msk (0x01UL << GTZC_CFGR1_TIM6_Pos)
+#define GTZC_CFGR1_TIM7_Pos (5U)
+#define GTZC_CFGR1_TIM7_Msk (0x01UL << GTZC_CFGR1_TIM7_Pos)
+#define GTZC_CFGR1_TIM12_Pos (6U)
+#define GTZC_CFGR1_TIM12_Msk (0x01UL << GTZC_CFGR1_TIM12_Pos)
+#define GTZC_CFGR1_WWDG_Pos (9U)
+#define GTZC_CFGR1_WWDG_Msk (0x01UL << GTZC_CFGR1_WWDG_Pos)
+#define GTZC_CFGR1_IWDG_Pos (10U)
+#define GTZC_CFGR1_IWDG_Msk (0x01UL << GTZC_CFGR1_IWDG_Pos)
+#define GTZC_CFGR1_SPI2_Pos (11U)
+#define GTZC_CFGR1_SPI2_Msk (0x01UL << GTZC_CFGR1_SPI2_Pos)
+#define GTZC_CFGR1_SPI3_Pos (12U)
+#define GTZC_CFGR1_SPI3_Msk (0x01UL << GTZC_CFGR1_SPI3_Pos)
+#define GTZC_CFGR1_USART2_Pos (13U)
+#define GTZC_CFGR1_USART2_Msk (0x01UL << GTZC_CFGR1_USART2_Pos)
+#define GTZC_CFGR1_USART3_Pos (14U)
+#define GTZC_CFGR1_USART3_Msk (0x01UL << GTZC_CFGR1_USART3_Pos)
+#define GTZC_CFGR1_UART4_Pos (15U)
+#define GTZC_CFGR1_UART4_Msk (0x01UL << GTZC_CFGR1_UART4_Pos)
+#define GTZC_CFGR1_UART5_Pos (16U)
+#define GTZC_CFGR1_UART5_Msk (0x01UL << GTZC_CFGR1_UART5_Pos)
+#define GTZC_CFGR1_I2C1_Pos (17U)
+#define GTZC_CFGR1_I2C1_Msk (0x01UL << GTZC_CFGR1_I2C1_Pos)
+#define GTZC_CFGR1_I2C2_Pos (18U)
+#define GTZC_CFGR1_I2C2_Msk (0x01UL << GTZC_CFGR1_I2C2_Pos)
+#define GTZC_CFGR1_I3C1_Pos (19U)
+#define GTZC_CFGR1_I3C1_Msk (0x01UL << GTZC_CFGR1_I3C1_Pos)
+#define GTZC_CFGR1_CRS_Pos (20U)
+#define GTZC_CFGR1_CRS_Msk (0x01UL << GTZC_CFGR1_CRS_Pos)
+#define GTZC_CFGR1_USART6_Pos (21U)
+#define GTZC_CFGR1_USART6_Msk (0x01UL << GTZC_CFGR1_USART6_Pos)
+#define GTZC_CFGR1_HDMICEC_Pos (24U)
+#define GTZC_CFGR1_HDMICEC_Msk (0x01UL << GTZC_CFGR1_HDMICEC_Pos)
+#define GTZC_CFGR1_DAC1_Pos (25U)
+#define GTZC_CFGR1_DAC1_Msk (0x01UL << GTZC_CFGR1_DAC1_Pos)
+#define GTZC_CFGR1_DTS_Pos (30U)
+#define GTZC_CFGR1_DTS_Msk (0x01UL << GTZC_CFGR1_DTS_Pos)
+#define GTZC_CFGR1_LPTIM2_Pos (31U)
+#define GTZC_CFGR1_LPTIM2_Msk (0x01UL << GTZC_CFGR1_LPTIM2_Pos)
+
+/*************** Bits definition for register x=2 (TZSC1) *************/
+#define GTZC_CFGR2_FDCAN1_Pos (0U)
+#define GTZC_CFGR2_FDCAN1_Msk (0x01UL << GTZC_CFGR2_FDCAN1_Pos)
+#define GTZC_CFGR2_FDCAN2_Pos (1U)
+#define GTZC_CFGR2_FDCAN2_Msk (0x01UL << GTZC_CFGR2_FDCAN2_Pos)
+#define GTZC_CFGR2_UCPD1_Pos (2U)
+#define GTZC_CFGR2_UCPD1_Msk (0x01UL << GTZC_CFGR2_UCPD1_Pos)
+#define GTZC_CFGR2_TIM1_Pos (8U)
+#define GTZC_CFGR2_TIM1_Msk (0x01UL << GTZC_CFGR2_TIM1_Pos)
+#define GTZC_CFGR2_SPI1_Pos (9U)
+#define GTZC_CFGR2_SPI1_Msk (0x01UL << GTZC_CFGR2_SPI1_Pos)
+#define GTZC_CFGR2_TIM8_Pos (10U)
+#define GTZC_CFGR2_TIM8_Msk (0x01UL << GTZC_CFGR2_TIM8_Pos)
+#define GTZC_CFGR2_USART1_Pos (11U)
+#define GTZC_CFGR2_USART1_Msk (0x01UL << GTZC_CFGR2_USART1_Pos)
+#define GTZC_CFGR2_TIM15_Pos (12U)
+#define GTZC_CFGR2_TIM15_Msk (0x01UL << GTZC_CFGR2_TIM15_Pos)
+#define GTZC_CFGR2_SPI4_Pos (15U)
+#define GTZC_CFGR2_SPI4_Msk (0x01UL << GTZC_CFGR2_SPI4_Pos)
+#define GTZC_CFGR2_USB_Pos (19U)
+#define GTZC_CFGR2_USB_Msk (0x01UL << GTZC_CFGR2_USB_Pos)
+#define GTZC_CFGR2_LPUART1_Pos (25U)
+#define GTZC_CFGR2_LPUART1_Msk (0x01UL << GTZC_CFGR2_LPUART1_Pos)
+#define GTZC_CFGR2_I2C3_Pos (26U)
+#define GTZC_CFGR2_I2C3_Msk (0x01UL << GTZC_CFGR2_I2C3_Pos)
+#define GTZC_CFGR2_LPTIM1_Pos (28U)
+#define GTZC_CFGR2_LPTIM1_Msk (0x01UL << GTZC_CFGR2_LPTIM1_Pos)
+
+/*************** Bits definition for register x=3 (TZSC1) *************/
+#define GTZC_CFGR3_VREFBUF_Pos (1U)
+#define GTZC_CFGR3_VREFBUF_Msk (0x01UL << GTZC_CFGR3_VREFBUF_Pos)
+#define GTZC_CFGR3_I3C2_Pos (2U)
+#define GTZC_CFGR3_I3C2_Msk (0x01UL << GTZC_CFGR3_I3C2_Pos)
+#define GTZC_CFGR3_CRC_Pos (8U)
+#define GTZC_CFGR3_CRC_Msk (0x01UL << GTZC_CFGR3_CRC_Pos)
+#define GTZC_CFGR3_ICACHE_REG_Pos (12U)
+#define GTZC_CFGR3_ICACHE_REG_Msk (0x01UL << GTZC_CFGR3_ICACHE_REG_Pos)
+#define GTZC_CFGR3_DCACHE1_REG_Pos (13U)
+#define GTZC_CFGR3_DCACHE1_REG_Msk (0x01UL << GTZC_CFGR3_DCACHE1_REG_Pos)
+#define GTZC_CFGR3_ADC_Pos (14U)
+#define GTZC_CFGR3_ADC_Msk (0x01UL << GTZC_CFGR3_ADC_Pos)
+#define GTZC_CFGR3_DCMI_PSSI_Pos (15U)
+#define GTZC_CFGR3_DCMI_PSSI_Msk (0x01UL << GTZC_CFGR3_DCMI_PSSI_Pos)
+#define GTZC_CFGR3_HASH_Pos (17U)
+#define GTZC_CFGR3_HASH_Msk (0x01UL << GTZC_CFGR3_HASH_Pos)
+#define GTZC_CFGR3_RNG_Pos (18U)
+#define GTZC_CFGR3_RNG_Msk (0x01UL << GTZC_CFGR3_RNG_Pos)
+#define GTZC_CFGR3_SDMMC1_Pos (21U)
+#define GTZC_CFGR3_SDMMC1_Msk (0x01UL << GTZC_CFGR3_SDMMC1_Pos)
+#define GTZC_CFGR3_FMC_REG_Pos (23U)
+#define GTZC_CFGR3_FMC_REG_Msk (0x01UL << GTZC_CFGR3_FMC_REG_Pos)
+#define GTZC_CFGR3_OCTOSPI1_Pos (24U)
+#define GTZC_CFGR3_OCTOSPI1_Msk (0x01UL << GTZC_CFGR3_OCTOSPI1_Pos)
+#define GTZC_CFGR3_RAMCFG_Pos (26U)
+#define GTZC_CFGR3_RAMCFG_Msk (0x01UL << GTZC_CFGR3_RAMCFG_Pos)
+
+/*************** Bits definition for register x=4 (TZSC1) *************/
+#define GTZC_CFGR4_GPDMA1_Pos (0U)
+#define GTZC_CFGR4_GPDMA1_Msk (0x01UL << GTZC_CFGR4_GPDMA1_Pos)
+#define GTZC_CFGR4_GPDMA2_Pos (1U)
+#define GTZC_CFGR4_GPDMA2_Msk (0x01UL << GTZC_CFGR4_GPDMA2_Pos)
+#define GTZC_CFGR4_FLASH_Pos (2U)
+#define GTZC_CFGR4_FLASH_Msk (0x01UL << GTZC_CFGR4_FLASH_Pos)
+#define GTZC_CFGR4_FLASH_REG_Pos (3U)
+#define GTZC_CFGR4_FLASH_REG_Msk (0x01UL << GTZC_CFGR4_FLASH_REG_Pos)
+
+#define GTZC_CFGR4_SBS_Pos (6U)
+#define GTZC_CFGR4_SBS_Msk (0x01UL << GTZC_CFGR4_SBS_Pos)
+#define GTZC_CFGR4_RTC_Pos (7U)
+#define GTZC_CFGR4_RTC_Msk (0x01UL << GTZC_CFGR4_RTC_Pos)
+#define GTZC_CFGR4_TAMP_Pos (8U)
+#define GTZC_CFGR4_TAMP_Msk (0x01UL << GTZC_CFGR4_TAMP_Pos)
+#define GTZC_CFGR4_PWR_Pos (9U)
+#define GTZC_CFGR4_PWR_Msk (0x01UL << GTZC_CFGR4_PWR_Pos)
+#define GTZC_CFGR4_RCC_Pos (10U)
+#define GTZC_CFGR4_RCC_Msk (0x01UL << GTZC_CFGR4_RCC_Pos)
+#define GTZC_CFGR4_EXTI_Pos (11U)
+#define GTZC_CFGR4_EXTI_Msk (0x01UL << GTZC_CFGR4_EXTI_Pos)
+#define GTZC_CFGR4_TZSC_Pos (16U)
+#define GTZC_CFGR4_TZSC_Msk (0x01UL << GTZC_CFGR4_TZSC_Pos)
+#define GTZC_CFGR4_TZIC_Pos (17U)
+#define GTZC_CFGR4_TZIC_Msk (0x01UL << GTZC_CFGR4_TZIC_Pos)
+#define GTZC_CFGR4_OCTOSPI1_MEM_Pos (18U)
+#define GTZC_CFGR4_OCTOSPI1_MEM_Msk (0x01UL << GTZC_CFGR4_OCTOSPI1_MEM_Pos)
+#define GTZC_CFGR4_FMC_MEM_Pos (19U)
+#define GTZC_CFGR4_FMC_MEM_Msk (0x01UL << GTZC_CFGR4_FMC_MEM_Pos)
+#define GTZC_CFGR4_BKPSRAM_Pos (20U)
+#define GTZC_CFGR4_BKPSRAM_Msk (0x01UL << GTZC_CFGR4_BKPSRAM_Pos)
+#define GTZC_CFGR4_SRAM1_Pos (24U)
+#define GTZC_CFGR4_SRAM1_Msk (0x01UL << GTZC_CFGR4_SRAM1_Pos)
+#define GTZC_CFGR4_MPCBB1_REG_Pos (25U)
+#define GTZC_CFGR4_MPCBB1_REG_Msk (0x01UL << GTZC_CFGR4_MPCBB1_REG_Pos)
+#define GTZC_CFGR4_SRAM2_Pos (26U)
+#define GTZC_CFGR4_SRAM2_Msk (0x01UL << GTZC_CFGR4_SRAM2_Pos)
+#define GTZC_CFGR4_MPCBB2_REG_Pos (27U)
+#define GTZC_CFGR4_MPCBB2_REG_Msk (0x01UL << GTZC_CFGR4_MPCBB2_REG_Pos)
+#define GTZC_CFGR4_SRAM3_Pos (28U)
+#define GTZC_CFGR4_SRAM3_Msk (0x01UL << GTZC_CFGR4_SRAM3_Pos)
+#define GTZC_CFGR4_MPCBB3_REG_Pos (29U)
+#define GTZC_CFGR4_MPCBB3_REG_Msk (0x01UL << GTZC_CFGR4_MPCBB3_REG_Pos)
+
+/******************* Bits definition for GTZC_TZSC1_SECCFGR1 register ***************/
+#define GTZC_TZSC1_SECCFGR1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM4_Pos GTZC_CFGR1_TIM4_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM4_Msk GTZC_CFGR1_TIM4_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM5_Pos GTZC_CFGR1_TIM5_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM5_Msk GTZC_CFGR1_TIM5_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM12_Pos GTZC_CFGR1_TIM12_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM12_Msk GTZC_CFGR1_TIM12_Msk
+#define GTZC_TZSC1_SECCFGR1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZSC1_SECCFGR1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZSC1_SECCFGR1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZSC1_SECCFGR1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZSC1_SECCFGR1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZSC1_SECCFGR1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZSC1_SECCFGR1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZSC1_SECCFGR1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZSC1_SECCFGR1_USART2_Pos GTZC_CFGR1_USART2_Pos
+#define GTZC_TZSC1_SECCFGR1_USART2_Msk GTZC_CFGR1_USART2_Msk
+#define GTZC_TZSC1_SECCFGR1_USART3_Pos GTZC_CFGR1_USART3_Pos
+#define GTZC_TZSC1_SECCFGR1_USART3_Msk GTZC_CFGR1_USART3_Msk
+#define GTZC_TZSC1_SECCFGR1_UART4_Pos GTZC_CFGR1_UART4_Pos
+#define GTZC_TZSC1_SECCFGR1_UART4_Msk GTZC_CFGR1_UART4_Msk
+#define GTZC_TZSC1_SECCFGR1_UART5_Pos GTZC_CFGR1_UART5_Pos
+#define GTZC_TZSC1_SECCFGR1_UART5_Msk GTZC_CFGR1_UART5_Msk
+#define GTZC_TZSC1_SECCFGR1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZSC1_SECCFGR1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZSC1_SECCFGR1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZSC1_SECCFGR1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZSC1_SECCFGR1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZSC1_SECCFGR1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZSC1_SECCFGR1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZSC1_SECCFGR1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZSC1_SECCFGR1_USART6_Pos GTZC_CFGR1_USART6_Pos
+#define GTZC_TZSC1_SECCFGR1_USART6_Msk GTZC_CFGR1_USART6_Msk
+#define GTZC_TZSC1_SECCFGR1_HDMICEC_Pos GTZC_CFGR1_HDMICEC_Pos
+#define GTZC_TZSC1_SECCFGR1_HDMICEC_Msk GTZC_CFGR1_HDMICEC_Msk
+#define GTZC_TZSC1_SECCFGR1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZSC1_SECCFGR1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZSC1_SECCFGR1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZSC1_SECCFGR1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZSC1_SECCFGR1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZSC1_SECCFGR1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZSC_SECCFGR2 register ***************/
+#define GTZC_TZSC1_SECCFGR2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZSC1_SECCFGR2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZSC1_SECCFGR2_FDCAN2_Pos GTZC_CFGR2_FDCAN2_Pos
+#define GTZC_TZSC1_SECCFGR2_FDCAN2_Msk GTZC_CFGR2_FDCAN2_Msk
+#define GTZC_TZSC1_SECCFGR2_UCPD1_Pos GTZC_CFGR2_UCPD1_Pos
+#define GTZC_TZSC1_SECCFGR2_UCPD1_Msk GTZC_CFGR2_UCPD1_Msk
+#define GTZC_TZSC1_SECCFGR2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZSC1_SECCFGR2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZSC1_SECCFGR2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZSC1_SECCFGR2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZSC1_SECCFGR2_TIM8_Pos GTZC_CFGR2_TIM8_Pos
+#define GTZC_TZSC1_SECCFGR2_TIM8_Msk GTZC_CFGR2_TIM8_Msk
+#define GTZC_TZSC1_SECCFGR2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZSC1_SECCFGR2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZSC1_SECCFGR2_TIM15_Pos GTZC_CFGR2_TIM15_Pos
+#define GTZC_TZSC1_SECCFGR2_TIM15_Msk GTZC_CFGR2_TIM15_Msk
+#define GTZC_TZSC1_SECCFGR2_SPI4_Pos GTZC_CFGR2_SPI4_Pos
+#define GTZC_TZSC1_SECCFGR2_SPI4_Msk GTZC_CFGR2_SPI4_Msk
+#define GTZC_TZSC1_SECCFGR2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZSC1_SECCFGR2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZSC1_SECCFGR2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZSC1_SECCFGR2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZSC1_SECCFGR2_I2C3_Pos GTZC_CFGR2_I2C3_Pos
+#define GTZC_TZSC1_SECCFGR2_I2C3_Msk GTZC_CFGR2_I2C3_Msk
+#define GTZC_TZSC1_SECCFGR2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZSC1_SECCFGR2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/******************* Bits definition for GTZC_TZSC_SECCFGR3 register ***************/
+#define GTZC_TZSC1_SECCFGR3_VREFBUF_Pos GTZC_CFGR3_VREFBUF_Pos
+#define GTZC_TZSC1_SECCFGR3_VREFBUF_Msk GTZC_CFGR3_VREFBUF_Msk
+#define GTZC_TZSC1_SECCFGR3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZSC1_SECCFGR3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZSC1_SECCFGR3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZSC1_SECCFGR3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZSC1_SECCFGR3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZSC1_SECCFGR3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZSC1_SECCFGR3_DCACHE1_REG_Pos GTZC_CFGR3_DCACHE1_REG_Pos
+#define GTZC_TZSC1_SECCFGR3_DCACHE1_REG_Msk GTZC_CFGR3_DCACHE1_REG_Msk
+#define GTZC_TZSC1_SECCFGR3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZSC1_SECCFGR3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZSC1_SECCFGR3_DCMI_PSSI_Pos GTZC_CFGR3_DCMI_PSSI_Pos
+#define GTZC_TZSC1_SECCFGR3_DCMI_PSSI_Msk GTZC_CFGR3_DCMI_PSSI_Msk
+#define GTZC_TZSC1_SECCFGR3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZSC1_SECCFGR3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZSC1_SECCFGR3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZSC1_SECCFGR3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZSC1_SECCFGR3_SDMMC1_Pos GTZC_CFGR3_SDMMC1_Pos
+#define GTZC_TZSC1_SECCFGR3_SDMMC1_Msk GTZC_CFGR3_SDMMC1_Msk
+#define GTZC_TZSC1_SECCFGR3_FMC_REG_Pos GTZC_CFGR3_FMC_REG_Pos
+#define GTZC_TZSC1_SECCFGR3_FMC_REG_Msk GTZC_CFGR3_FMC_REG_Msk
+#define GTZC_TZSC1_SECCFGR3_OCTOSPI1_Pos GTZC_CFGR3_OCTOSPI1_Pos
+#define GTZC_TZSC1_SECCFGR3_OCTOSPI1_Msk GTZC_CFGR3_OCTOSPI1_Msk
+#define GTZC_TZSC1_SECCFGR3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZSC1_SECCFGR3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+
+/******************* Bits definition for GTZC_TZSC_PRIVCFGR1 register ***************/
+#define GTZC_TZSC1_PRIVCFGR1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM4_Pos GTZC_CFGR1_TIM4_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM4_Msk GTZC_CFGR1_TIM4_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM5_Pos GTZC_CFGR1_TIM5_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM5_Msk GTZC_CFGR1_TIM5_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM12_Pos GTZC_CFGR1_TIM12_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM12_Msk GTZC_CFGR1_TIM12_Msk
+#define GTZC_TZSC1_PRIVCFGR1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZSC1_PRIVCFGR1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZSC1_PRIVCFGR1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZSC1_PRIVCFGR1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZSC1_PRIVCFGR1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZSC1_PRIVCFGR1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZSC1_PRIVCFGR1_USART2_Pos GTZC_CFGR1_USART2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_USART2_Msk GTZC_CFGR1_USART2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_USART3_Pos GTZC_CFGR1_USART3_Pos
+#define GTZC_TZSC1_PRIVCFGR1_USART3_Msk GTZC_CFGR1_USART3_Msk
+#define GTZC_TZSC1_PRIVCFGR1_UART4_Pos GTZC_CFGR1_UART4_Pos
+#define GTZC_TZSC1_PRIVCFGR1_UART4_Msk GTZC_CFGR1_UART4_Msk
+#define GTZC_TZSC1_PRIVCFGR1_UART5_Pos GTZC_CFGR1_UART5_Pos
+#define GTZC_TZSC1_PRIVCFGR1_UART5_Msk GTZC_CFGR1_UART5_Msk
+#define GTZC_TZSC1_PRIVCFGR1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZSC1_PRIVCFGR1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZSC1_PRIVCFGR1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZSC1_PRIVCFGR1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZSC1_PRIVCFGR1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZSC1_PRIVCFGR1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZSC1_PRIVCFGR1_USART6_Pos GTZC_CFGR1_USART6_Pos
+#define GTZC_TZSC1_PRIVCFGR1_USART6_Msk GTZC_CFGR1_USART6_Msk
+#define GTZC_TZSC1_PRIVCFGR1_HDMICEC_Pos GTZC_CFGR1_HDMICEC_Pos
+#define GTZC_TZSC1_PRIVCFGR1_HDMICEC_Msk GTZC_CFGR1_HDMICEC_Msk
+#define GTZC_TZSC1_PRIVCFGR1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZSC1_PRIVCFGR1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZSC1_PRIVCFGR1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZSC1_PRIVCFGR1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZSC1_PRIVCFGR1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZSC_PRIVCFGR2 register ***************/
+#define GTZC_TZSC1_PRIVCFGR2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_FDCAN2_Pos GTZC_CFGR2_FDCAN2_Pos
+#define GTZC_TZSC1_PRIVCFGR2_FDCAN2_Msk GTZC_CFGR2_FDCAN2_Msk
+#define GTZC_TZSC1_PRIVCFGR2_UCPD1_Pos GTZC_CFGR2_UCPD1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_UCPD1_Msk GTZC_CFGR2_UCPD1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_TIM8_Pos GTZC_CFGR2_TIM8_Pos
+#define GTZC_TZSC1_PRIVCFGR2_TIM8_Msk GTZC_CFGR2_TIM8_Msk
+#define GTZC_TZSC1_PRIVCFGR2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_TIM15_Pos GTZC_CFGR2_TIM15_Pos
+#define GTZC_TZSC1_PRIVCFGR2_TIM15_Msk GTZC_CFGR2_TIM15_Msk
+#define GTZC_TZSC1_PRIVCFGR2_SPI4_Pos GTZC_CFGR2_SPI4_Pos
+#define GTZC_TZSC1_PRIVCFGR2_SPI4_Msk GTZC_CFGR2_SPI4_Msk
+#define GTZC_TZSC1_PRIVCFGR2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZSC1_PRIVCFGR2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZSC1_PRIVCFGR2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_I2C3_Pos GTZC_CFGR2_I2C3_Pos
+#define GTZC_TZSC1_PRIVCFGR2_I2C3_Msk GTZC_CFGR2_I2C3_Msk
+#define GTZC_TZSC1_PRIVCFGR2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/******************* Bits definition for GTZC_TZSC_PRIVCFGR3 register ***************/
+#define GTZC_TZSC1_PRIVCFGR3_VREFBUF_Pos GTZC_CFGR3_VREFBUF_Pos
+#define GTZC_TZSC1_PRIVCFGR3_VREFBUF_Msk GTZC_CFGR3_VREFBUF_Msk
+#define GTZC_TZSC1_PRIVCFGR3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZSC1_PRIVCFGR3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZSC1_PRIVCFGR3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZSC1_PRIVCFGR3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZSC1_PRIVCFGR3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZSC1_PRIVCFGR3_DCACHE1_REG_Pos GTZC_CFGR3_DCACHE1_REG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_DCACHE1_REG_Msk GTZC_CFGR3_DCACHE1_REG_Msk
+#define GTZC_TZSC1_PRIVCFGR3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZSC1_PRIVCFGR3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZSC1_PRIVCFGR3_DCMI_PSSI_Pos GTZC_CFGR3_DCMI_PSSI_Pos
+#define GTZC_TZSC1_PRIVCFGR3_DCMI_PSSI_Msk GTZC_CFGR3_DCMI_PSSI_Msk
+#define GTZC_TZSC1_PRIVCFGR3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZSC1_PRIVCFGR3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZSC1_PRIVCFGR3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZSC1_PRIVCFGR3_SDMMC1_Pos GTZC_CFGR3_SDMMC1_Pos
+#define GTZC_TZSC1_PRIVCFGR3_SDMMC1_Msk GTZC_CFGR3_SDMMC1_Msk
+#define GTZC_TZSC1_PRIVCFGR3_FMC_REG_Pos GTZC_CFGR3_FMC_REG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_FMC_REG_Msk GTZC_CFGR3_FMC_REG_Msk
+#define GTZC_TZSC1_PRIVCFGR3_OCTOSPI1_Pos GTZC_CFGR3_OCTOSPI1_Pos
+#define GTZC_TZSC1_PRIVCFGR3_OCTOSPI1_Msk GTZC_CFGR3_OCTOSPI1_Msk
+#define GTZC_TZSC1_PRIVCFGR3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+/******************* Bits definition for GTZC_TZIC_IER1 register ***************/
+#define GTZC_TZIC1_IER1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZIC1_IER1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZIC1_IER1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZIC1_IER1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZIC1_IER1_TIM4_Pos GTZC_CFGR1_TIM4_Pos
+#define GTZC_TZIC1_IER1_TIM4_Msk GTZC_CFGR1_TIM4_Msk
+#define GTZC_TZIC1_IER1_TIM5_Pos GTZC_CFGR1_TIM5_Pos
+#define GTZC_TZIC1_IER1_TIM5_Msk GTZC_CFGR1_TIM5_Msk
+#define GTZC_TZIC1_IER1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZIC1_IER1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZIC1_IER1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZIC1_IER1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZIC1_IER1_TIM12_Pos GTZC_CFGR1_TIM12_Pos
+#define GTZC_TZIC1_IER1_TIM12_Msk GTZC_CFGR1_TIM12_Msk
+#define GTZC_TZIC1_IER1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZIC1_IER1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZIC1_IER1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZIC1_IER1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZIC1_IER1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZIC1_IER1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZIC1_IER1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZIC1_IER1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZIC1_IER1_USART2_Pos GTZC_CFGR1_USART2_Pos
+#define GTZC_TZIC1_IER1_USART2_Msk GTZC_CFGR1_USART2_Msk
+#define GTZC_TZIC1_IER1_USART3_Pos GTZC_CFGR1_USART3_Pos
+#define GTZC_TZIC1_IER1_USART3_Msk GTZC_CFGR1_USART3_Msk
+#define GTZC_TZIC1_IER1_UART4_Pos GTZC_CFGR1_UART4_Pos
+#define GTZC_TZIC1_IER1_UART4_Msk GTZC_CFGR1_UART4_Msk
+#define GTZC_TZIC1_IER1_UART5_Pos GTZC_CFGR1_UART5_Pos
+#define GTZC_TZIC1_IER1_UART5_Msk GTZC_CFGR1_UART5_Msk
+#define GTZC_TZIC1_IER1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZIC1_IER1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZIC1_IER1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZIC1_IER1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZIC1_IER1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZIC1_IER1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZIC1_IER1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZIC1_IER1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZIC1_IER1_USART6_Pos GTZC_CFGR1_USART6_Pos
+#define GTZC_TZIC1_IER1_USART6_Msk GTZC_CFGR1_USART6_Msk
+#define GTZC_TZIC1_IER1_HDMICEC_Pos GTZC_CFGR1_HDMICEC_Pos
+#define GTZC_TZIC1_IER1_HDMICEC_Msk GTZC_CFGR1_HDMICEC_Msk
+#define GTZC_TZIC1_IER1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZIC1_IER1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZIC1_IER1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZIC1_IER1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZIC1_IER1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZIC1_IER1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZIC_IER2 register ***************/
+#define GTZC_TZIC1_IER2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZIC1_IER2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZIC1_IER2_FDCAN2_Pos GTZC_CFGR2_FDCAN2_Pos
+#define GTZC_TZIC1_IER2_FDCAN2_Msk GTZC_CFGR2_FDCAN2_Msk
+#define GTZC_TZIC1_IER2_UCPD1_Pos GTZC_CFGR2_UCPD1_Pos
+#define GTZC_TZIC1_IER2_UCPD1_Msk GTZC_CFGR2_UCPD1_Msk
+#define GTZC_TZIC1_IER2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZIC1_IER2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZIC1_IER2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZIC1_IER2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZIC1_IER2_TIM8_Pos GTZC_CFGR2_TIM8_Pos
+#define GTZC_TZIC1_IER2_TIM8_Msk GTZC_CFGR2_TIM8_Msk
+#define GTZC_TZIC1_IER2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZIC1_IER2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZIC1_IER2_TIM15_Pos GTZC_CFGR2_TIM15_Pos
+#define GTZC_TZIC1_IER2_TIM15_Msk GTZC_CFGR2_TIM15_Msk
+#define GTZC_TZIC1_IER2_SPI4_Pos GTZC_CFGR2_SPI4_Pos
+#define GTZC_TZIC1_IER2_SPI4_Msk GTZC_CFGR2_SPI4_Msk
+#define GTZC_TZIC1_IER2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZIC1_IER2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZIC1_IER2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZIC1_IER2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZIC1_IER2_I2C3_Pos GTZC_CFGR2_I2C3_Pos
+#define GTZC_TZIC1_IER2_I2C3_Msk GTZC_CFGR2_I2C3_Msk
+#define GTZC_TZIC1_IER2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZIC1_IER2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/******************* Bits definition for GTZC_TZIC_IER3 register ***************/
+#define GTZC_TZIC1_IER3_VREFBUF_Pos GTZC_CFGR3_VREFBUF_Pos
+#define GTZC_TZIC1_IER3_VREFBUF_Msk GTZC_CFGR3_VREFBUF_Msk
+#define GTZC_TZIC1_IER3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZIC1_IER3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZIC1_IER3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZIC1_IER3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZIC1_IER3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZIC1_IER3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZIC1_IER3_DCACHE1_REG_Pos GTZC_CFGR3_DCACHE1_REG_Pos
+#define GTZC_TZIC1_IER3_DCACHE1_REG_Msk GTZC_CFGR3_DCACHE1_REG_Msk
+#define GTZC_TZIC1_IER3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZIC1_IER3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZIC1_IER3_DCMI_PSSI_Pos GTZC_CFGR3_DCMI_PSSI_Pos
+#define GTZC_TZIC1_IER3_DCMI_PSSI_Msk GTZC_CFGR3_DCMI_PSSI_Msk
+#define GTZC_TZIC1_IER3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZIC1_IER3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZIC1_IER3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZIC1_IER3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZIC1_IER3_SDMMC1_Pos GTZC_CFGR3_SDMMC1_Pos
+#define GTZC_TZIC1_IER3_SDMMC1_Msk GTZC_CFGR3_SDMMC1_Msk
+#define GTZC_TZIC1_IER3_FMC_REG_Pos GTZC_CFGR3_FMC_REG_Pos
+#define GTZC_TZIC1_IER3_FMC_REG_Msk GTZC_CFGR3_FMC_REG_Msk
+#define GTZC_TZIC1_IER3_OCTOSPI1_Pos GTZC_CFGR3_OCTOSPI1_Pos
+#define GTZC_TZIC1_IER3_OCTOSPI1_Msk GTZC_CFGR3_OCTOSPI1_Msk
+#define GTZC_TZIC1_IER3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZIC1_IER3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+/******************* Bits definition for GTZC_TZIC_IER4 register ***************/
+#define GTZC_TZIC1_IER4_GPDMA1_Pos GTZC_CFGR4_GPDMA1_Pos
+#define GTZC_TZIC1_IER4_GPDMA1_Msk GTZC_CFGR4_GPDMA1_Msk
+#define GTZC_TZIC1_IER4_GPDMA2_Pos GTZC_CFGR4_GPDMA2_Pos
+#define GTZC_TZIC1_IER4_GPDMA2_Msk GTZC_CFGR4_GPDMA2_Msk
+#define GTZC_TZIC1_IER4_FLASH_Pos GTZC_CFGR4_FLASH_Pos
+#define GTZC_TZIC1_IER4_FLASH_Msk GTZC_CFGR4_FLASH_Msk
+#define GTZC_TZIC1_IER4_FLASH_REG_Pos GTZC_CFGR4_FLASH_REG_Pos
+#define GTZC_TZIC1_IER4_FLASH_REG_Msk GTZC_CFGR4_FLASH_REG_Msk
+#define GTZC_TZIC1_IER4_SBS_Pos GTZC_CFGR4_SBS_Pos
+#define GTZC_TZIC1_IER4_SBS_Msk GTZC_CFGR4_SBS_Msk
+#define GTZC_TZIC1_IER4_RTC_Pos GTZC_CFGR4_RTC_Pos
+#define GTZC_TZIC1_IER4_RTC_Msk GTZC_CFGR4_RTC_Msk
+#define GTZC_TZIC1_IER4_TAMP_Pos GTZC_CFGR4_TAMP_Pos
+#define GTZC_TZIC1_IER4_TAMP_Msk GTZC_CFGR4_TAMP_Msk
+#define GTZC_TZIC1_IER4_PWR_Pos GTZC_CFGR4_PWR_Pos
+#define GTZC_TZIC1_IER4_PWR_Msk GTZC_CFGR4_PWR_Msk
+#define GTZC_TZIC1_IER4_RCC_Pos GTZC_CFGR4_RCC_Pos
+#define GTZC_TZIC1_IER4_RCC_Msk GTZC_CFGR4_RCC_Msk
+#define GTZC_TZIC1_IER4_EXTI_Pos GTZC_CFGR4_EXTI_Pos
+#define GTZC_TZIC1_IER4_EXTI_Msk GTZC_CFGR4_EXTI_Msk
+#define GTZC_TZIC1_IER4_TZSC_Pos GTZC_CFGR4_TZSC_Pos
+#define GTZC_TZIC1_IER4_TZSC_Msk GTZC_CFGR4_TZSC_Msk
+#define GTZC_TZIC1_IER4_TZIC_Pos GTZC_CFGR4_TZIC_Pos
+#define GTZC_TZIC1_IER4_TZIC_Msk GTZC_CFGR4_TZIC_Msk
+#define GTZC_TZIC1_IER4_OCTOSPI1_MEM_Pos GTZC_CFGR4_OCTOSPI1_MEM_Pos
+#define GTZC_TZIC1_IER4_OCTOSPI1_MEM_Msk GTZC_CFGR4_OCTOSPI1_MEM_Msk
+#define GTZC_TZIC1_IER4_FMC_MEM_Pos GTZC_CFGR4_FMC_MEM_Pos
+#define GTZC_TZIC1_IER4_FMC_MEM_Msk GTZC_CFGR4_FMC_MEM_Msk
+#define GTZC_TZIC1_IER4_BKPSRAM_Pos GTZC_CFGR4_BKPSRAM_Pos
+#define GTZC_TZIC1_IER4_BKPSRAM_Msk GTZC_CFGR4_BKPSRAM_Msk
+#define GTZC_TZIC1_IER4_SRAM1_Pos GTZC_CFGR4_SRAM1_Pos
+#define GTZC_TZIC1_IER4_SRAM1_Msk GTZC_CFGR4_SRAM1_Msk
+#define GTZC_TZIC1_IER4_MPCBB1_REG_Pos GTZC_CFGR4_MPCBB1_REG_Pos
+#define GTZC_TZIC1_IER4_MPCBB1_REG_Msk GTZC_CFGR4_MPCBB1_REG_Msk
+#define GTZC_TZIC1_IER4_SRAM2_Pos GTZC_CFGR4_SRAM2_Pos
+#define GTZC_TZIC1_IER4_SRAM2_Msk GTZC_CFGR4_SRAM2_Msk
+#define GTZC_TZIC1_IER4_MPCBB2_REG_Pos GTZC_CFGR4_MPCBB2_REG_Pos
+#define GTZC_TZIC1_IER4_MPCBB2_REG_Msk GTZC_CFGR4_MPCBB2_REG_Msk
+#define GTZC_TZIC1_IER4_SRAM3_Pos GTZC_CFGR4_SRAM3_Pos
+#define GTZC_TZIC1_IER4_SRAM3_Msk GTZC_CFGR4_SRAM3_Msk
+#define GTZC_TZIC1_IER4_MPCBB3_REG_Pos GTZC_CFGR4_MPCBB3_REG_Pos
+#define GTZC_TZIC1_IER4_MPCBB3_REG_Msk GTZC_CFGR4_MPCBB3_REG_Msk
+
+/******************* Bits definition for GTZC_TZIC_SR1 register **************/
+#define GTZC_TZIC1_SR1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZIC1_SR1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZIC1_SR1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZIC1_SR1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZIC1_SR1_TIM4_Pos GTZC_CFGR1_TIM4_Pos
+#define GTZC_TZIC1_SR1_TIM4_Msk GTZC_CFGR1_TIM4_Msk
+#define GTZC_TZIC1_SR1_TIM5_Pos GTZC_CFGR1_TIM5_Pos
+#define GTZC_TZIC1_SR1_TIM5_Msk GTZC_CFGR1_TIM5_Msk
+#define GTZC_TZIC1_SR1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZIC1_SR1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZIC1_SR1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZIC1_SR1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZIC1_SR1_TIM12_Pos GTZC_CFGR1_TIM12_Pos
+#define GTZC_TZIC1_SR1_TIM12_Msk GTZC_CFGR1_TIM12_Msk
+#define GTZC_TZIC1_SR1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZIC1_SR1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZIC1_SR1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZIC1_SR1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZIC1_SR1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZIC1_SR1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZIC1_SR1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZIC1_SR1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZIC1_SR1_USART2_Pos GTZC_CFGR1_USART2_Pos
+#define GTZC_TZIC1_SR1_USART2_Msk GTZC_CFGR1_USART2_Msk
+#define GTZC_TZIC1_SR1_USART3_Pos GTZC_CFGR1_USART3_Pos
+#define GTZC_TZIC1_SR1_USART3_Msk GTZC_CFGR1_USART3_Msk
+#define GTZC_TZIC1_SR1_UART4_Pos GTZC_CFGR1_UART4_Pos
+#define GTZC_TZIC1_SR1_UART4_Msk GTZC_CFGR1_UART4_Msk
+#define GTZC_TZIC1_SR1_UART5_Pos GTZC_CFGR1_UART5_Pos
+#define GTZC_TZIC1_SR1_UART5_Msk GTZC_CFGR1_UART5_Msk
+#define GTZC_TZIC1_SR1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZIC1_SR1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZIC1_SR1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZIC1_SR1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZIC1_SR1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZIC1_SR1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZIC1_SR1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZIC1_SR1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZIC1_SR1_USART6_Pos GTZC_CFGR1_USART6_Pos
+#define GTZC_TZIC1_SR1_USART6_Msk GTZC_CFGR1_USART6_Msk
+#define GTZC_TZIC1_SR1_HDMICEC_Pos GTZC_CFGR1_HDMICEC_Pos
+#define GTZC_TZIC1_SR1_HDMICEC_Msk GTZC_CFGR1_HDMICEC_Msk
+#define GTZC_TZIC1_SR1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZIC1_SR1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZIC1_SR1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZIC1_SR1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZIC1_SR1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZIC1_SR1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZIC_SR2 register **************/
+#define GTZC_TZIC1_SR2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZIC1_SR2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZIC1_SR2_FDCAN2_Pos GTZC_CFGR2_FDCAN2_Pos
+#define GTZC_TZIC1_SR2_FDCAN2_Msk GTZC_CFGR2_FDCAN2_Msk
+#define GTZC_TZIC1_SR2_UCPD1_Pos GTZC_CFGR2_UCPD1_Pos
+#define GTZC_TZIC1_SR2_UCPD1_Msk GTZC_CFGR2_UCPD1_Msk
+#define GTZC_TZIC1_SR2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZIC1_SR2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZIC1_SR2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZIC1_SR2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZIC1_SR2_TIM8_Pos GTZC_CFGR2_TIM8_Pos
+#define GTZC_TZIC1_SR2_TIM8_Msk GTZC_CFGR2_TIM8_Msk
+#define GTZC_TZIC1_SR2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZIC1_SR2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZIC1_SR2_TIM15_Pos GTZC_CFGR2_TIM15_Pos
+#define GTZC_TZIC1_SR2_TIM15_Msk GTZC_CFGR2_TIM15_Msk
+#define GTZC_TZIC1_SR2_SPI4_Pos GTZC_CFGR2_SPI4_Pos
+#define GTZC_TZIC1_SR2_SPI4_Msk GTZC_CFGR2_SPI4_Msk
+#define GTZC_TZIC1_SR2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZIC1_SR2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZIC1_SR2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZIC1_SR2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZIC1_SR2_I2C3_Pos GTZC_CFGR2_I2C3_Pos
+#define GTZC_TZIC1_SR2_I2C3_Msk GTZC_CFGR2_I2C3_Msk
+#define GTZC_TZIC1_SR2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZIC1_SR2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/******************* Bits definition for GTZC_TZIC_SR3 register **************/
+#define GTZC_TZIC1_SR3_VREFBUF_Pos GTZC_CFGR3_VREFBUF_Pos
+#define GTZC_TZIC1_SR3_VREFBUF_Msk GTZC_CFGR3_VREFBUF_Msk
+#define GTZC_TZIC1_SR3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZIC1_SR3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZIC1_SR3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZIC1_SR3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZIC1_SR3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZIC1_SR3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZIC1_SR3_DCACHE1_REG_Pos GTZC_CFGR3_DCACHE1_REG_Pos
+#define GTZC_TZIC1_SR3_DCACHE1_REG_Msk GTZC_CFGR3_DCACHE1_REG_Msk
+#define GTZC_TZIC1_SR3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZIC1_SR3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZIC1_SR3_DCMI_PSSI_Pos GTZC_CFGR3_DCMI_PSSI_Pos
+#define GTZC_TZIC1_SR3_DCMI_PSSI_Msk GTZC_CFGR3_DCMI_PSSI_Msk
+#define GTZC_TZIC1_SR3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZIC1_SR3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZIC1_SR3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZIC1_SR3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZIC1_SR3_SDMMC1_Pos GTZC_CFGR3_SDMMC1_Pos
+#define GTZC_TZIC1_SR3_SDMMC1_Msk GTZC_CFGR3_SDMMC1_Msk
+#define GTZC_TZIC1_SR3_FMC_REG_Pos GTZC_CFGR3_FMC_REG_Pos
+#define GTZC_TZIC1_SR3_FMC_REG_Msk GTZC_CFGR3_FMC_REG_Msk
+#define GTZC_TZIC1_SR3_OCTOSPI1_Pos GTZC_CFGR3_OCTOSPI1_Pos
+#define GTZC_TZIC1_SR3_OCTOSPI1_Msk GTZC_CFGR3_OCTOSPI1_Msk
+#define GTZC_TZIC1_SR3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZIC1_SR3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+/******************* Bits definition for GTZC_TZIC_SR4 register ***************/
+#define GTZC_TZIC1_SR4_GPDMA1_Pos GTZC_CFGR4_GPDMA1_Pos
+#define GTZC_TZIC1_SR4_GPDMA1_Msk GTZC_CFGR4_GPDMA1_Msk
+#define GTZC_TZIC1_SR4_GPDMA2_Pos GTZC_CFGR4_GPDMA2_Pos
+#define GTZC_TZIC1_SR4_GPDMA2_Msk GTZC_CFGR4_GPDMA2_Msk
+#define GTZC_TZIC1_SR4_FLASH_Pos GTZC_CFGR4_FLASH_Pos
+#define GTZC_TZIC1_SR4_FLASH_Msk GTZC_CFGR4_FLASH_Msk
+#define GTZC_TZIC1_SR4_FLASH_REG_Pos GTZC_CFGR4_FLASH_REG_Pos
+#define GTZC_TZIC1_SR4_FLASH_REG_Msk GTZC_CFGR4_FLASH_REG_Msk
+#define GTZC_TZIC1_SR4_SBS_Pos GTZC_CFGR4_SBS_Pos
+#define GTZC_TZIC1_SR4_SBS_Msk GTZC_CFGR4_SBS_Msk
+#define GTZC_TZIC1_SR4_RTC_Pos GTZC_CFGR4_RTC_Pos
+#define GTZC_TZIC1_SR4_RTC_Msk GTZC_CFGR4_RTC_Msk
+#define GTZC_TZIC1_SR4_TAMP_Pos GTZC_CFGR4_TAMP_Pos
+#define GTZC_TZIC1_SR4_TAMP_Msk GTZC_CFGR4_TAMP_Msk
+#define GTZC_TZIC1_SR4_PWR_Pos GTZC_CFGR4_PWR_Pos
+#define GTZC_TZIC1_SR4_PWR_Msk GTZC_CFGR4_PWR_Msk
+#define GTZC_TZIC1_SR4_RCC_Pos GTZC_CFGR4_RCC_Pos
+#define GTZC_TZIC1_SR4_RCC_Msk GTZC_CFGR4_RCC_Msk
+#define GTZC_TZIC1_SR4_EXTI_Pos GTZC_CFGR4_EXTI_Pos
+#define GTZC_TZIC1_SR4_EXTI_Msk GTZC_CFGR4_EXTI_Msk
+#define GTZC_TZIC1_SR4_TZSC_Pos GTZC_CFGR4_TZSC_Pos
+#define GTZC_TZIC1_SR4_TZSC_Msk GTZC_CFGR4_TZSC_Msk
+#define GTZC_TZIC1_SR4_TZIC_Pos GTZC_CFGR4_TZIC_Pos
+#define GTZC_TZIC1_SR4_TZIC_Msk GTZC_CFGR4_TZIC_Msk
+#define GTZC_TZIC1_SR4_OCTOSPI1_MEM_Pos GTZC_CFGR4_OCTOSPI1_MEM_Pos
+#define GTZC_TZIC1_SR4_OCTOSPI1_MEM_Msk GTZC_CFGR4_OCTOSPI1_MEM_Msk
+#define GTZC_TZIC1_SR4_FMC_MEM_Pos GTZC_CFGR4_FMC_MEM_Pos
+#define GTZC_TZIC1_SR4_FMC_MEM_Msk GTZC_CFGR4_FMC_MEM_Msk
+#define GTZC_TZIC1_SR4_BKPSRAM_Pos GTZC_CFGR4_BKPSRAM_Pos
+#define GTZC_TZIC1_SR4_BKPSRAM_Msk GTZC_CFGR4_BKPSRAM_Msk
+#define GTZC_TZIC1_SR4_SRAM1_Pos GTZC_CFGR4_SRAM1_Pos
+#define GTZC_TZIC1_SR4_SRAM1_Msk GTZC_CFGR4_SRAM1_Msk
+#define GTZC_TZIC1_SR4_MPCBB1_REG_Pos GTZC_CFGR4_MPCBB1_REG_Pos
+#define GTZC_TZIC1_SR4_MPCBB1_REG_Msk GTZC_CFGR4_MPCBB1_REG_Msk
+#define GTZC_TZIC1_SR4_SRAM2_Pos GTZC_CFGR4_SRAM2_Pos
+#define GTZC_TZIC1_SR4_SRAM2_Msk GTZC_CFGR4_SRAM2_Msk
+#define GTZC_TZIC1_SR4_MPCBB2_REG_Pos GTZC_CFGR4_MPCBB2_REG_Pos
+#define GTZC_TZIC1_SR4_MPCBB2_REG_Msk GTZC_CFGR4_MPCBB2_REG_Msk
+#define GTZC_TZIC1_SR4_SRAM3_Pos GTZC_CFGR4_SRAM3_Pos
+#define GTZC_TZIC1_SR4_SRAM3_Msk GTZC_CFGR4_SRAM3_Msk
+#define GTZC_TZIC1_SR4_MPCBB3_REG_Pos GTZC_CFGR4_MPCBB3_REG_Pos
+#define GTZC_TZIC1_SR4_MPCBB3_REG_Msk GTZC_CFGR4_MPCBB3_REG_Msk
+
+/****************** Bits definition for GTZC_TZIC_FCR1 register ****************/
+#define GTZC_TZIC1_FCR1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZIC1_FCR1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZIC1_FCR1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZIC1_FCR1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZIC1_FCR1_TIM4_Pos GTZC_CFGR1_TIM4_Pos
+#define GTZC_TZIC1_FCR1_TIM4_Msk GTZC_CFGR1_TIM4_Msk
+#define GTZC_TZIC1_FCR1_TIM5_Pos GTZC_CFGR1_TIM5_Pos
+#define GTZC_TZIC1_FCR1_TIM5_Msk GTZC_CFGR1_TIM5_Msk
+#define GTZC_TZIC1_FCR1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZIC1_FCR1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZIC1_FCR1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZIC1_FCR1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZIC1_FCR1_TIM12_Pos GTZC_CFGR1_TIM12_Pos
+#define GTZC_TZIC1_FCR1_TIM12_Msk GTZC_CFGR1_TIM12_Msk
+#define GTZC_TZIC1_FCR1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZIC1_FCR1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZIC1_FCR1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZIC1_FCR1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZIC1_FCR1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZIC1_FCR1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZIC1_FCR1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZIC1_FCR1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZIC1_FCR1_USART2_Pos GTZC_CFGR1_USART2_Pos
+#define GTZC_TZIC1_FCR1_USART2_Msk GTZC_CFGR1_USART2_Msk
+#define GTZC_TZIC1_FCR1_USART3_Pos GTZC_CFGR1_USART3_Pos
+#define GTZC_TZIC1_FCR1_USART3_Msk GTZC_CFGR1_USART3_Msk
+#define GTZC_TZIC1_FCR1_UART4_Pos GTZC_CFGR1_UART4_Pos
+#define GTZC_TZIC1_FCR1_UART4_Msk GTZC_CFGR1_UART4_Msk
+#define GTZC_TZIC1_FCR1_UART5_Pos GTZC_CFGR1_UART5_Pos
+#define GTZC_TZIC1_FCR1_UART5_Msk GTZC_CFGR1_UART5_Msk
+#define GTZC_TZIC1_FCR1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZIC1_FCR1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZIC1_FCR1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZIC1_FCR1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZIC1_FCR1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZIC1_FCR1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZIC1_FCR1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZIC1_FCR1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZIC1_FCR1_USART6_Pos GTZC_CFGR1_USART6_Pos
+#define GTZC_TZIC1_FCR1_USART6_Msk GTZC_CFGR1_USART6_Msk
+#define GTZC_TZIC1_FCR1_HDMICEC_Pos GTZC_CFGR1_HDMICEC_Pos
+#define GTZC_TZIC1_FCR1_HDMICEC_Msk GTZC_CFGR1_HDMICEC_Msk
+#define GTZC_TZIC1_FCR1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZIC1_FCR1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZIC1_FCR1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZIC1_FCR1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZIC1_FCR1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZIC1_FCR1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZIC_FCR2 register **************/
+#define GTZC_TZIC1_FCR2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZIC1_FCR2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZIC1_FCR2_FDCAN2_Pos GTZC_CFGR2_FDCAN2_Pos
+#define GTZC_TZIC1_FCR2_FDCAN2_Msk GTZC_CFGR2_FDCAN2_Msk
+#define GTZC_TZIC1_FCR2_UCPD1_Pos GTZC_CFGR2_UCPD1_Pos
+#define GTZC_TZIC1_FCR2_UCPD1_Msk GTZC_CFGR2_UCPD1_Msk
+#define GTZC_TZIC1_FCR2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZIC1_FCR2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZIC1_FCR2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZIC1_FCR2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZIC1_FCR2_TIM8_Pos GTZC_CFGR2_TIM8_Pos
+#define GTZC_TZIC1_FCR2_TIM8_Msk GTZC_CFGR2_TIM8_Msk
+#define GTZC_TZIC1_FCR2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZIC1_FCR2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZIC1_FCR2_TIM15_Pos GTZC_CFGR2_TIM15_Pos
+#define GTZC_TZIC1_FCR2_TIM15_Msk GTZC_CFGR2_TIM15_Msk
+#define GTZC_TZIC1_FCR2_SPI4_Pos GTZC_CFGR2_SPI4_Pos
+#define GTZC_TZIC1_FCR2_SPI4_Msk GTZC_CFGR2_SPI4_Msk
+#define GTZC_TZIC1_FCR2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZIC1_FCR2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZIC1_FCR2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZIC1_FCR2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZIC1_FCR2_I2C3_Pos GTZC_CFGR2_I2C3_Pos
+#define GTZC_TZIC1_FCR2_I2C3_Msk GTZC_CFGR2_I2C3_Msk
+#define GTZC_TZIC1_FCR2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZIC1_FCR2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/****************** Bits definition for GTZC_TZIC_FCR3 register ****************/
+#define GTZC_TZIC1_FCR3_VREFBUF_Pos GTZC_CFGR3_VREFBUF_Pos
+#define GTZC_TZIC1_FCR3_VREFBUF_Msk GTZC_CFGR3_VREFBUF_Msk
+#define GTZC_TZIC1_FCR3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZIC1_FCR3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZIC1_FCR3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZIC1_FCR3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZIC1_FCR3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZIC1_FCR3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZIC1_FCR3_DCACHE1_REG_Pos GTZC_CFGR3_DCACHE1_REG_Pos
+#define GTZC_TZIC1_FCR3_DCACHE1_REG_Msk GTZC_CFGR3_DCACHE1_REG_Msk
+#define GTZC_TZIC1_FCR3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZIC1_FCR3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZIC1_FCR3_DCMI_PSSI_Pos GTZC_CFGR3_DCMI_PSSI_Pos
+#define GTZC_TZIC1_FCR3_DCMI_PSSI_Msk GTZC_CFGR3_DCMI_PSSI_Msk
+#define GTZC_TZIC1_FCR3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZIC1_FCR3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZIC1_FCR3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZIC1_FCR3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZIC1_FCR3_SDMMC1_Pos GTZC_CFGR3_SDMMC1_Pos
+#define GTZC_TZIC1_FCR3_SDMMC1_Msk GTZC_CFGR3_SDMMC1_Msk
+#define GTZC_TZIC1_FCR3_FMC_REG_Pos GTZC_CFGR3_FMC_REG_Pos
+#define GTZC_TZIC1_FCR3_FMC_REG_Msk GTZC_CFGR3_FMC_REG_Msk
+#define GTZC_TZIC1_FCR3_OCTOSPI1_Pos GTZC_CFGR3_OCTOSPI1_Pos
+#define GTZC_TZIC1_FCR3_OCTOSPI1_Msk GTZC_CFGR3_OCTOSPI1_Msk
+#define GTZC_TZIC1_FCR3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZIC1_FCR3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+/******************* Bits definition for GTZC_TZIC_FCR4 register ***************/
+#define GTZC_TZIC1_FCR4_GPDMA1_Pos GTZC_CFGR4_GPDMA1_Pos
+#define GTZC_TZIC1_FCR4_GPDMA1_Msk GTZC_CFGR4_GPDMA1_Msk
+#define GTZC_TZIC1_FCR4_GPDMA2_Pos GTZC_CFGR4_GPDMA2_Pos
+#define GTZC_TZIC1_FCR4_GPDMA2_Msk GTZC_CFGR4_GPDMA2_Msk
+#define GTZC_TZIC1_FCR4_FLASH_Pos GTZC_CFGR4_FLASH_Pos
+#define GTZC_TZIC1_FCR4_FLASH_Msk GTZC_CFGR4_FLASH_Msk
+#define GTZC_TZIC1_FCR4_FLASH_REG_Pos GTZC_CFGR4_FLASH_REG_Pos
+#define GTZC_TZIC1_FCR4_FLASH_REG_Msk GTZC_CFGR4_FLASH_REG_Msk
+#define GTZC_TZIC1_FCR4_SBS_Pos GTZC_CFGR4_SBS_Pos
+#define GTZC_TZIC1_FCR4_SBS_Msk GTZC_CFGR4_SBS_Msk
+#define GTZC_TZIC1_FCR4_RTC_Pos GTZC_CFGR4_RTC_Pos
+#define GTZC_TZIC1_FCR4_RTC_Msk GTZC_CFGR4_RTC_Msk
+#define GTZC_TZIC1_FCR4_TAMP_Pos GTZC_CFGR4_TAMP_Pos
+#define GTZC_TZIC1_FCR4_TAMP_Msk GTZC_CFGR4_TAMP_Msk
+#define GTZC_TZIC1_FCR4_PWR_Pos GTZC_CFGR4_PWR_Pos
+#define GTZC_TZIC1_FCR4_PWR_Msk GTZC_CFGR4_PWR_Msk
+#define GTZC_TZIC1_FCR4_RCC_Pos GTZC_CFGR4_RCC_Pos
+#define GTZC_TZIC1_FCR4_RCC_Msk GTZC_CFGR4_RCC_Msk
+#define GTZC_TZIC1_FCR4_EXTI_Pos GTZC_CFGR4_EXTI_Pos
+#define GTZC_TZIC1_FCR4_EXTI_Msk GTZC_CFGR4_EXTI_Msk
+#define GTZC_TZIC1_FCR4_TZSC_Pos GTZC_CFGR4_TZSC_Pos
+#define GTZC_TZIC1_FCR4_TZSC_Msk GTZC_CFGR4_TZSC_Msk
+#define GTZC_TZIC1_FCR4_TZIC_Pos GTZC_CFGR4_TZIC_Pos
+#define GTZC_TZIC1_FCR4_TZIC_Msk GTZC_CFGR4_TZIC_Msk
+#define GTZC_TZIC1_FCR4_OCTOSPI1_MEM_Pos GTZC_CFGR4_OCTOSPI1_MEM_Pos
+#define GTZC_TZIC1_FCR4_OCTOSPI1_MEM_Msk GTZC_CFGR4_OCTOSPI1_MEM_Msk
+#define GTZC_TZIC1_FCR4_FMC_MEM_Pos GTZC_CFGR4_FMC_MEM_Pos
+#define GTZC_TZIC1_FCR4_FMC_MEM_Msk GTZC_CFGR4_FMC_MEM_Msk
+#define GTZC_TZIC1_FCR4_BKPSRAM_Pos GTZC_CFGR4_BKPSRAM_Pos
+#define GTZC_TZIC1_FCR4_BKPSRAM_Msk GTZC_CFGR4_BKPSRAM_Msk
+#define GTZC_TZIC1_FCR4_SRAM1_Pos GTZC_CFGR4_SRAM1_Pos
+#define GTZC_TZIC1_FCR4_SRAM1_Msk GTZC_CFGR4_SRAM1_Msk
+#define GTZC_TZIC1_FCR4_MPCBB1_REG_Pos GTZC_CFGR4_MPCBB1_REG_Pos
+#define GTZC_TZIC1_FCR4_MPCBB1_REG_Msk GTZC_CFGR4_MPCBB1_REG_Msk
+#define GTZC_TZIC1_FCR4_SRAM2_Pos GTZC_CFGR4_SRAM2_Pos
+#define GTZC_TZIC1_FCR4_SRAM2_Msk GTZC_CFGR4_SRAM2_Msk
+#define GTZC_TZIC1_FCR4_MPCBB2_REG_Pos GTZC_CFGR4_MPCBB2_REG_Pos
+#define GTZC_TZIC1_FCR4_MPCBB2_REG_Msk GTZC_CFGR4_MPCBB2_REG_Msk
+#define GTZC_TZIC1_FCR4_SRAM3_Pos GTZC_CFGR4_SRAM3_Pos
+#define GTZC_TZIC1_FCR4_SRAM3_Msk GTZC_CFGR4_SRAM3_Msk
+#define GTZC_TZIC1_FCR4_MPCBB3_REG_Pos GTZC_CFGR4_MPCBB3_REG_Pos
+#define GTZC_TZIC1_FCR4_MPCBB3_REG_Msk GTZC_CFGR4_MPCBB3_REG_Msk
+
+/******************* Bits definition for GTZC_MPCBB_CR register *****************/
+#define GTZC_MPCBB_CR_GLOCK_Pos (0U)
+#define GTZC_MPCBB_CR_GLOCK_Msk (0x01UL << GTZC_MPCBB_CR_GLOCK_Pos) /*!< 0x00000001 */
+#define GTZC_MPCBB_CR_INVSECSTATE_Pos (30U)
+#define GTZC_MPCBB_CR_INVSECSTATE_Msk (0x01UL << GTZC_MPCBB_CR_INVSECSTATE_Pos) /*!< 0x40000000 */
+#define GTZC_MPCBB_CR_SRWILADIS_Pos (31U)
+#define GTZC_MPCBB_CR_SRWILADIS_Msk (0x01UL << GTZC_MPCBB_CR_SRWILADIS_Pos) /*!< 0x80000000 */
+
+/******************* Bits definition for GTZC_MPCBB_CFGLOCKR1 register ************/
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK0_Pos (0U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK0_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK0_Pos) /*!< 0x00000001 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK1_Pos (1U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK1_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK1_Pos) /*!< 0x00000002 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK2_Pos (2U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK2_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK2_Pos) /*!< 0x00000004 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK3_Pos (3U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK3_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK3_Pos) /*!< 0x00000008 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK4_Pos (4U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK4_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK4_Pos) /*!< 0x00000010 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK5_Pos (5U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK5_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK5_Pos) /*!< 0x00000020 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK6_Pos (6U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK6_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK6_Pos) /*!< 0x00000040 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK7_Pos (7U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK7_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK7_Pos) /*!< 0x00000080 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK8_Pos (8U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK8_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK8_Pos) /*!< 0x00000100 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK9_Pos (9U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK9_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK9_Pos) /*!< 0x00000200 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK10_Pos (10U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK10_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK10_Pos) /*!< 0x00000400 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK11_Pos (11U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK11_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK11_Pos) /*!< 0x00000800 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK12_Pos (12U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK12_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK12_Pos) /*!< 0x00001000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK13_Pos (13U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK13_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK13_Pos) /*!< 0x00002000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK14_Pos (14U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK14_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK14_Pos) /*!< 0x00004000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK15_Pos (15U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK15_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK15_Pos) /*!< 0x00008000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK16_Pos (16U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK16_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK16_Pos) /*!< 0x00010000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK17_Pos (17U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK17_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK17_Pos) /*!< 0x00020000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK18_Pos (18U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK18_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK18_Pos) /*!< 0x00040000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK19_Pos (19U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK19_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK19_Pos) /*!< 0x00080000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK20_Pos (20U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK20_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK20_Pos) /*!< 0x00100000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK21_Pos (21U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK21_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK21_Pos) /*!< 0x00200000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK22_Pos (22U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK22_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK22_Pos) /*!< 0x00400000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK23_Pos (23U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK23_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK23_Pos) /*!< 0x00800000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK24_Pos (24U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK24_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK24_Pos) /*!< 0x01000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK25_Pos (25U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK25_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK25_Pos) /*!< 0x02000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK26_Pos (26U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK26_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK26_Pos) /*!< 0x04000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK27_Pos (27U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK27_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK27_Pos) /*!< 0x08000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK28_Pos (28U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK28_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK28_Pos) /*!< 0x10000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK29_Pos (29U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK29_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK29_Pos) /*!< 0x20000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK30_Pos (30U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK30_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK30_Pos) /*!< 0x40000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK31_Pos (31U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK31_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK31_Pos) /*!< 0x80000000 */
+
+
+/******************************************************************************/
+/* */
+/* UCPD */
+/* */
+/******************************************************************************/
+/******************** Bits definition for UCPD_CFG1 register *******************/
+#define UCPD_CFG1_HBITCLKDIV_Pos (0U)
+#define UCPD_CFG1_HBITCLKDIV_Msk (0x3FUL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x0000003F */
+#define UCPD_CFG1_HBITCLKDIV UCPD_CFG1_HBITCLKDIV_Msk /*!< Number of cycles (minus 1) for a half bit clock */
+#define UCPD_CFG1_HBITCLKDIV_0 (0x01UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000001 */
+#define UCPD_CFG1_HBITCLKDIV_1 (0x02UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000002 */
+#define UCPD_CFG1_HBITCLKDIV_2 (0x04UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000004 */
+#define UCPD_CFG1_HBITCLKDIV_3 (0x08UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000008 */
+#define UCPD_CFG1_HBITCLKDIV_4 (0x10UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000010 */
+#define UCPD_CFG1_HBITCLKDIV_5 (0x20UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000020 */
+#define UCPD_CFG1_IFRGAP_Pos (6U)
+#define UCPD_CFG1_IFRGAP_Msk (0x1FUL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x000007C0 */
+#define UCPD_CFG1_IFRGAP UCPD_CFG1_IFRGAP_Msk /*!< Clock divider value to generates Interframe gap */
+#define UCPD_CFG1_IFRGAP_0 (0x01UL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x00000040 */
+#define UCPD_CFG1_IFRGAP_1 (0x02UL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x00000080 */
+#define UCPD_CFG1_IFRGAP_2 (0x04UL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x00000100 */
+#define UCPD_CFG1_IFRGAP_3 (0x08UL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x00000200 */
+#define UCPD_CFG1_IFRGAP_4 (0x10UL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x00000400 */
+#define UCPD_CFG1_TRANSWIN_Pos (11U)
+#define UCPD_CFG1_TRANSWIN_Msk (0x1FUL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x0000F800 */
+#define UCPD_CFG1_TRANSWIN UCPD_CFG1_TRANSWIN_Msk /*!< Number of cycles (minus 1) of the half bit clock */
+#define UCPD_CFG1_TRANSWIN_0 (0x01UL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x00000800 */
+#define UCPD_CFG1_TRANSWIN_1 (0x02UL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x00001000 */
+#define UCPD_CFG1_TRANSWIN_2 (0x04UL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x00002000 */
+#define UCPD_CFG1_TRANSWIN_3 (0x08UL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x00004000 */
+#define UCPD_CFG1_TRANSWIN_4 (0x10UL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x00008000 */
+#define UCPD_CFG1_PSC_UCPDCLK_Pos (17U)
+#define UCPD_CFG1_PSC_UCPDCLK_Msk (0x7UL << UCPD_CFG1_PSC_UCPDCLK_Pos) /*!< 0x000E0000 */
+#define UCPD_CFG1_PSC_UCPDCLK UCPD_CFG1_PSC_UCPDCLK_Msk /*!< Prescaler for UCPDCLK */
+#define UCPD_CFG1_PSC_UCPDCLK_0 (0x1UL << UCPD_CFG1_PSC_UCPDCLK_Pos) /*!< 0x00020000 */
+#define UCPD_CFG1_PSC_UCPDCLK_1 (0x2UL << UCPD_CFG1_PSC_UCPDCLK_Pos) /*!< 0x00040000 */
+#define UCPD_CFG1_PSC_UCPDCLK_2 (0x4UL << UCPD_CFG1_PSC_UCPDCLK_Pos) /*!< 0x00080000 */
+#define UCPD_CFG1_RXORDSETEN_Pos (20U)
+#define UCPD_CFG1_RXORDSETEN_Msk (0x1FFUL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x1FF00000 */
+#define UCPD_CFG1_RXORDSETEN UCPD_CFG1_RXORDSETEN_Msk /*!< Receiver ordered set detection enable */
+#define UCPD_CFG1_RXORDSETEN_0 (0x001UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x00100000 */
+#define UCPD_CFG1_RXORDSETEN_1 (0x002UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x00200000 */
+#define UCPD_CFG1_RXORDSETEN_2 (0x004UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x00400000 */
+#define UCPD_CFG1_RXORDSETEN_3 (0x008UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x00800000 */
+#define UCPD_CFG1_RXORDSETEN_4 (0x010UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x01000000 */
+#define UCPD_CFG1_RXORDSETEN_5 (0x020UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x02000000 */
+#define UCPD_CFG1_RXORDSETEN_6 (0x040UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x04000000 */
+#define UCPD_CFG1_RXORDSETEN_7 (0x080UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x08000000 */
+#define UCPD_CFG1_RXORDSETEN_8 (0x100UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x10000000 */
+#define UCPD_CFG1_TXDMAEN_Pos (29U)
+#define UCPD_CFG1_TXDMAEN_Msk (0x1UL << UCPD_CFG1_TXDMAEN_Pos) /*!< 0x20000000 */
+#define UCPD_CFG1_TXDMAEN UCPD_CFG1_TXDMAEN_Msk /*!< DMA transmission requests enable */
+#define UCPD_CFG1_RXDMAEN_Pos (30U)
+#define UCPD_CFG1_RXDMAEN_Msk (0x1UL << UCPD_CFG1_RXDMAEN_Pos) /*!< 0x40000000 */
+#define UCPD_CFG1_RXDMAEN UCPD_CFG1_RXDMAEN_Msk /*!< DMA reception requests enable */
+#define UCPD_CFG1_UCPDEN_Pos (31U)
+#define UCPD_CFG1_UCPDEN_Msk (0x1UL << UCPD_CFG1_UCPDEN_Pos) /*!< 0x80000000 */
+#define UCPD_CFG1_UCPDEN UCPD_CFG1_UCPDEN_Msk /*!< USB Power Delivery Block Enable */
+
+/******************** Bits definition for UCPD_CFG2 register *******************/
+#define UCPD_CFG2_RXFILTDIS_Pos (0U)
+#define UCPD_CFG2_RXFILTDIS_Msk (0x1UL << UCPD_CFG2_RXFILTDIS_Pos) /*!< 0x00000001 */
+#define UCPD_CFG2_RXFILTDIS UCPD_CFG2_RXFILTDIS_Msk /*!< Enables an Rx pre-filter for the BMC decoder */
+#define UCPD_CFG2_RXFILT2N3_Pos (1U)
+#define UCPD_CFG2_RXFILT2N3_Msk (0x1UL << UCPD_CFG2_RXFILT2N3_Pos) /*!< 0x00000002 */
+#define UCPD_CFG2_RXFILT2N3 UCPD_CFG2_RXFILT2N3_Msk /*!< Controls the sampling method for an Rx pre-filter for the BMC decode */
+#define UCPD_CFG2_FORCECLK_Pos (2U)
+#define UCPD_CFG2_FORCECLK_Msk (0x1UL << UCPD_CFG2_FORCECLK_Pos) /*!< 0x00000004 */
+#define UCPD_CFG2_FORCECLK UCPD_CFG2_FORCECLK_Msk /*!< Controls forcing of the clock request UCPDCLK_REQ */
+#define UCPD_CFG2_WUPEN_Pos (3U)
+#define UCPD_CFG2_WUPEN_Msk (0x1UL << UCPD_CFG2_WUPEN_Pos) /*!< 0x00000008 */
+#define UCPD_CFG2_WUPEN UCPD_CFG2_WUPEN_Msk /*!< Wakeup from STOP enable */
+#define UCPD_CFG2_RXAFILTEN_Pos (8U)
+#define UCPD_CFG2_RXAFILTEN_Msk (0x1UL << UCPD_CFG2_RXAFILTEN_Pos) /*!< 0x00000100 */
+#define UCPD_CFG2_RXAFILTEN UCPD_CFG2_RXAFILTEN_Msk /*!< Rx analog filter enable */
+
+/******************** Bits definition for UCPD_CFG3 register *******************/
+#define UCPD_CFG3_TRIM_CC1_RD_Pos (0U)
+#define UCPD_CFG3_TRIM_CC1_RD_Msk (0xFUL << UCPD_CFG3_TRIM_CC1_RD_Pos) /*!< 0x0000000F */
+#define UCPD_CFG3_TRIM_CC1_RD UCPD_CFG3_TRIM_CC1_RD_Msk /*!< SW trim value for RD resistor (CC1) */
+#define UCPD_CFG3_TRIM_CC1_RP_Pos (9U)
+#define UCPD_CFG3_TRIM_CC1_RP_Msk (0xFUL << UCPD_CFG3_TRIM_CC1_RP_Pos) /*!< 0x00001E00 */
+#define UCPD_CFG3_TRIM_CC1_RP UCPD_CFG3_TRIM_CC1_RP_Msk /*!< SW trim value for RP current sources (CC1) */
+#define UCPD_CFG3_TRIM_CC2_RD_Pos (16U)
+#define UCPD_CFG3_TRIM_CC2_RD_Msk (0xFUL << UCPD_CFG3_TRIM_CC2_RD_Pos) /*!< 0x000F0000 */
+#define UCPD_CFG3_TRIM_CC2_RD UCPD_CFG3_TRIM_CC2_RD_Msk /*!< SW trim value for RD resistor (CC2) */
+#define UCPD_CFG3_TRIM_CC2_RP_Pos (25U)
+#define UCPD_CFG3_TRIM_CC2_RP_Msk (0xFUL << UCPD_CFG3_TRIM_CC2_RP_Pos) /*!< 0x1E000000 */
+#define UCPD_CFG3_TRIM_CC2_RP UCPD_CFG3_TRIM_CC2_RP_Msk /*!< SW trim value for RP current sources (CC2) */
+
+/******************** Bits definition for UCPD_CR register ********************/
+#define UCPD_CR_TXMODE_Pos (0U)
+#define UCPD_CR_TXMODE_Msk (0x3UL << UCPD_CR_TXMODE_Pos) /*!< 0x00000003 */
+#define UCPD_CR_TXMODE UCPD_CR_TXMODE_Msk /*!< Type of Tx packet */
+#define UCPD_CR_TXMODE_0 (0x1UL << UCPD_CR_TXMODE_Pos) /*!< 0x00000001 */
+#define UCPD_CR_TXMODE_1 (0x2UL << UCPD_CR_TXMODE_Pos) /*!< 0x00000002 */
+#define UCPD_CR_TXSEND_Pos (2U)
+#define UCPD_CR_TXSEND_Msk (0x1UL << UCPD_CR_TXSEND_Pos) /*!< 0x00000004 */
+#define UCPD_CR_TXSEND UCPD_CR_TXSEND_Msk /*!< Type of Tx packet */
+#define UCPD_CR_TXHRST_Pos (3U)
+#define UCPD_CR_TXHRST_Msk (0x1UL << UCPD_CR_TXHRST_Pos) /*!< 0x00000008 */
+#define UCPD_CR_TXHRST UCPD_CR_TXHRST_Msk /*!< Command to send a Tx Hard Reset */
+#define UCPD_CR_RXMODE_Pos (4U)
+#define UCPD_CR_RXMODE_Msk (0x1UL << UCPD_CR_RXMODE_Pos) /*!< 0x00000010 */
+#define UCPD_CR_RXMODE UCPD_CR_RXMODE_Msk /*!< Receiver mode */
+#define UCPD_CR_PHYRXEN_Pos (5U)
+#define UCPD_CR_PHYRXEN_Msk (0x1UL << UCPD_CR_PHYRXEN_Pos) /*!< 0x00000020 */
+#define UCPD_CR_PHYRXEN UCPD_CR_PHYRXEN_Msk /*!< Controls enable of USB Power Delivery receiver */
+#define UCPD_CR_PHYCCSEL_Pos (6U)
+#define UCPD_CR_PHYCCSEL_Msk (0x1UL << UCPD_CR_PHYCCSEL_Pos) /*!< 0x00000040 */
+#define UCPD_CR_PHYCCSEL UCPD_CR_PHYCCSEL_Msk /*!< */
+#define UCPD_CR_ANASUBMODE_Pos (7U)
+#define UCPD_CR_ANASUBMODE_Msk (0x3UL << UCPD_CR_ANASUBMODE_Pos) /*!< 0x00000180 */
+#define UCPD_CR_ANASUBMODE UCPD_CR_ANASUBMODE_Msk /*!< Analog PHY sub-mode */
+#define UCPD_CR_ANASUBMODE_0 (0x1UL << UCPD_CR_ANASUBMODE_Pos) /*!< 0x00000080 */
+#define UCPD_CR_ANASUBMODE_1 (0x2UL << UCPD_CR_ANASUBMODE_Pos) /*!< 0x00000100 */
+#define UCPD_CR_ANAMODE_Pos (9U)
+#define UCPD_CR_ANAMODE_Msk (0x1UL << UCPD_CR_ANAMODE_Pos) /*!< 0x00000200 */
+#define UCPD_CR_ANAMODE UCPD_CR_ANAMODE_Msk /*!< Analog PHY working mode */
+#define UCPD_CR_CCENABLE_Pos (10U)
+#define UCPD_CR_CCENABLE_Msk (0x3UL << UCPD_CR_CCENABLE_Pos) /*!< 0x00000C00 */
+#define UCPD_CR_CCENABLE UCPD_CR_CCENABLE_Msk /*!< */
+#define UCPD_CR_CCENABLE_0 (0x1UL << UCPD_CR_CCENABLE_Pos) /*!< 0x00000400 */
+#define UCPD_CR_CCENABLE_1 (0x2UL << UCPD_CR_CCENABLE_Pos) /*!< 0x00000800 */
+#define UCPD_CR_USEEXTPHY_Pos (12U)
+#define UCPD_CR_USEEXTPHY_Msk (0x1UL << UCPD_CR_USEEXTPHY_Pos) /*!< 0x00001000 */
+#define UCPD_CR_USEEXTPHY UCPD_CR_USEEXTPHY_Msk /*!< Controls enable of USB Power Delivery transmitter */
+#define UCPD_CR_CC2VCONNEN_Pos (13U)
+#define UCPD_CR_CC2VCONNEN_Msk (0x1UL << UCPD_CR_CC2VCONNEN_Pos) /*!< 0x00002000 */
+#define UCPD_CR_CC2VCONNEN UCPD_CR_CC2VCONNEN_Msk /*!< VCONN enable for CC2 */
+#define UCPD_CR_CC1VCONNEN_Pos (14U)
+#define UCPD_CR_CC1VCONNEN_Msk (0x1UL << UCPD_CR_CC1VCONNEN_Pos) /*!< 0x00004000 */
+#define UCPD_CR_CC1VCONNEN UCPD_CR_CC1VCONNEN_Msk /*!< VCONN enable for CC1 */
+#define UCPD_CR_DBATEN_Pos (15U)
+#define UCPD_CR_DBATEN_Msk (0x1UL << UCPD_CR_DBATEN_Pos) /*!< 0x00008000 */
+#define UCPD_CR_DBATEN UCPD_CR_DBATEN_Msk /*!< Enable dead battery behavior (Active High) */
+#define UCPD_CR_FRSRXEN_Pos (16U)
+#define UCPD_CR_FRSRXEN_Msk (0x1UL << UCPD_CR_FRSRXEN_Pos) /*!< 0x00010000 */
+#define UCPD_CR_FRSRXEN UCPD_CR_FRSRXEN_Msk /*!< Enable FRS request detection function */
+#define UCPD_CR_FRSTX_Pos (17U)
+#define UCPD_CR_FRSTX_Msk (0x1UL << UCPD_CR_FRSTX_Pos) /*!< 0x00020000 */
+#define UCPD_CR_FRSTX UCPD_CR_FRSTX_Msk /*!< Signal Fast Role Swap request */
+#define UCPD_CR_RDCH_Pos (18U)
+#define UCPD_CR_RDCH_Msk (0x1UL << UCPD_CR_RDCH_Pos) /*!< 0x00040000 */
+#define UCPD_CR_RDCH UCPD_CR_RDCH_Msk /*!< */
+#define UCPD_CR_RPUSBABSENT_Pos (19U)
+#define UCPD_CR_RPUSBABSENT_Msk (0x1UL << UCPD_CR_RPUSBABSENT_Pos) /*!< 0x00080000 */
+#define UCPD_CR_RPUSBABSENT UCPD_CR_RPUSBABSENT_Msk /*!< */
+#define UCPD_CR_CC1TCDIS_Pos (20U)
+#define UCPD_CR_CC1TCDIS_Msk (0x1UL << UCPD_CR_CC1TCDIS_Pos) /*!< 0x00100000 */
+#define UCPD_CR_CC1TCDIS UCPD_CR_CC1TCDIS_Msk /*!< The bit allows the Type-C detector for CC0 to be disabled. */
+#define UCPD_CR_CC2TCDIS_Pos (21U)
+#define UCPD_CR_CC2TCDIS_Msk (0x1UL << UCPD_CR_CC2TCDIS_Pos) /*!< 0x00200000 */
+#define UCPD_CR_CC2TCDIS UCPD_CR_CC2TCDIS_Msk /*!< The bit allows the Type-C detector for CC2 to be disabled. */
+
+/******************** Bits definition for UCPD_IMR register *******************/
+#define UCPD_IMR_TXISIE_Pos (0U)
+#define UCPD_IMR_TXISIE_Msk (0x1UL << UCPD_IMR_TXISIE_Pos) /*!< 0x00000001 */
+#define UCPD_IMR_TXISIE UCPD_IMR_TXISIE_Msk /*!< Enable TXIS interrupt */
+#define UCPD_IMR_TXMSGDISCIE_Pos (1U)
+#define UCPD_IMR_TXMSGDISCIE_Msk (0x1UL << UCPD_IMR_TXMSGDISCIE_Pos) /*!< 0x00000002 */
+#define UCPD_IMR_TXMSGDISCIE UCPD_IMR_TXMSGDISCIE_Msk /*!< Enable TXMSGDISC interrupt */
+#define UCPD_IMR_TXMSGSENTIE_Pos (2U)
+#define UCPD_IMR_TXMSGSENTIE_Msk (0x1UL << UCPD_IMR_TXMSGSENTIE_Pos) /*!< 0x00000004 */
+#define UCPD_IMR_TXMSGSENTIE UCPD_IMR_TXMSGSENTIE_Msk /*!< Enable TXMSGSENT interrupt */
+#define UCPD_IMR_TXMSGABTIE_Pos (3U)
+#define UCPD_IMR_TXMSGABTIE_Msk (0x1UL << UCPD_IMR_TXMSGABTIE_Pos) /*!< 0x00000008 */
+#define UCPD_IMR_TXMSGABTIE UCPD_IMR_TXMSGABTIE_Msk /*!< Enable TXMSGABT interrupt */
+#define UCPD_IMR_HRSTDISCIE_Pos (4U)
+#define UCPD_IMR_HRSTDISCIE_Msk (0x1UL << UCPD_IMR_HRSTDISCIE_Pos) /*!< 0x00000010 */
+#define UCPD_IMR_HRSTDISCIE UCPD_IMR_HRSTDISCIE_Msk /*!< Enable HRSTDISC interrupt */
+#define UCPD_IMR_HRSTSENTIE_Pos (5U)
+#define UCPD_IMR_HRSTSENTIE_Msk (0x1UL << UCPD_IMR_HRSTSENTIE_Pos) /*!< 0x00000020 */
+#define UCPD_IMR_HRSTSENTIE UCPD_IMR_HRSTSENTIE_Msk /*!< Enable HRSTSENT interrupt */
+#define UCPD_IMR_TXUNDIE_Pos (6U)
+#define UCPD_IMR_TXUNDIE_Msk (0x1UL << UCPD_IMR_TXUNDIE_Pos) /*!< 0x00000040 */
+#define UCPD_IMR_TXUNDIE UCPD_IMR_TXUNDIE_Msk /*!< Enable TXUND interrupt */
+#define UCPD_IMR_RXNEIE_Pos (8U)
+#define UCPD_IMR_RXNEIE_Msk (0x1UL << UCPD_IMR_RXNEIE_Pos) /*!< 0x00000100 */
+#define UCPD_IMR_RXNEIE UCPD_IMR_RXNEIE_Msk /*!< Enable RXNE interrupt */
+#define UCPD_IMR_RXORDDETIE_Pos (9U)
+#define UCPD_IMR_RXORDDETIE_Msk (0x1UL << UCPD_IMR_RXORDDETIE_Pos) /*!< 0x00000200 */
+#define UCPD_IMR_RXORDDETIE UCPD_IMR_RXORDDETIE_Msk /*!< Enable RXORDDET interrupt */
+#define UCPD_IMR_RXHRSTDETIE_Pos (10U)
+#define UCPD_IMR_RXHRSTDETIE_Msk (0x1UL << UCPD_IMR_RXHRSTDETIE_Pos) /*!< 0x00000400 */
+#define UCPD_IMR_RXHRSTDETIE UCPD_IMR_RXHRSTDETIE_Msk /*!< Enable RXHRSTDET interrupt */
+#define UCPD_IMR_RXOVRIE_Pos (11U)
+#define UCPD_IMR_RXOVRIE_Msk (0x1UL << UCPD_IMR_RXOVRIE_Pos) /*!< 0x00000800 */
+#define UCPD_IMR_RXOVRIE UCPD_IMR_RXOVRIE_Msk /*!< Enable RXOVR interrupt */
+#define UCPD_IMR_RXMSGENDIE_Pos (12U)
+#define UCPD_IMR_RXMSGENDIE_Msk (0x1UL << UCPD_IMR_RXMSGENDIE_Pos) /*!< 0x00001000 */
+#define UCPD_IMR_RXMSGENDIE UCPD_IMR_RXMSGENDIE_Msk /*!< Enable RXMSGEND interrupt */
+#define UCPD_IMR_TYPECEVT1IE_Pos (14U)
+#define UCPD_IMR_TYPECEVT1IE_Msk (0x1UL << UCPD_IMR_TYPECEVT1IE_Pos) /*!< 0x00004000 */
+#define UCPD_IMR_TYPECEVT1IE UCPD_IMR_TYPECEVT1IE_Msk /*!< Enable TYPECEVT1IE interrupt */
+#define UCPD_IMR_TYPECEVT2IE_Pos (15U)
+#define UCPD_IMR_TYPECEVT2IE_Msk (0x1UL << UCPD_IMR_TYPECEVT2IE_Pos) /*!< 0x00008000 */
+#define UCPD_IMR_TYPECEVT2IE UCPD_IMR_TYPECEVT2IE_Msk /*!< Enable TYPECEVT2IE interrupt */
+#define UCPD_IMR_FRSEVTIE_Pos (20U)
+#define UCPD_IMR_FRSEVTIE_Msk (0x1UL << UCPD_IMR_FRSEVTIE_Pos) /*!< 0x00100000 */
+#define UCPD_IMR_FRSEVTIE UCPD_IMR_FRSEVTIE_Msk /*!< Fast Role Swap interrupt */
+
+/******************** Bits definition for UCPD_SR register ********************/
+#define UCPD_SR_TXIS_Pos (0U)
+#define UCPD_SR_TXIS_Msk (0x1UL << UCPD_SR_TXIS_Pos) /*!< 0x00000001 */
+#define UCPD_SR_TXIS UCPD_SR_TXIS_Msk /*!< Transmit interrupt status */
+#define UCPD_SR_TXMSGDISC_Pos (1U)
+#define UCPD_SR_TXMSGDISC_Msk (0x1UL << UCPD_SR_TXMSGDISC_Pos) /*!< 0x00000002 */
+#define UCPD_SR_TXMSGDISC UCPD_SR_TXMSGDISC_Msk /*!< Transmit message discarded interrupt */
+#define UCPD_SR_TXMSGSENT_Pos (2U)
+#define UCPD_SR_TXMSGSENT_Msk (0x1UL << UCPD_SR_TXMSGSENT_Pos) /*!< 0x00000004 */
+#define UCPD_SR_TXMSGSENT UCPD_SR_TXMSGSENT_Msk /*!< Transmit message sent interrupt */
+#define UCPD_SR_TXMSGABT_Pos (3U)
+#define UCPD_SR_TXMSGABT_Msk (0x1UL << UCPD_SR_TXMSGABT_Pos) /*!< 0x00000008 */
+#define UCPD_SR_TXMSGABT UCPD_SR_TXMSGABT_Msk /*!< Transmit message abort interrupt */
+#define UCPD_SR_HRSTDISC_Pos (4U)
+#define UCPD_SR_HRSTDISC_Msk (0x1UL << UCPD_SR_HRSTDISC_Pos) /*!< 0x00000010 */
+#define UCPD_SR_HRSTDISC UCPD_SR_HRSTDISC_Msk /*!< HRST discarded interrupt */
+#define UCPD_SR_HRSTSENT_Pos (5U)
+#define UCPD_SR_HRSTSENT_Msk (0x1UL << UCPD_SR_HRSTSENT_Pos) /*!< 0x00000020 */
+#define UCPD_SR_HRSTSENT UCPD_SR_HRSTSENT_Msk /*!< HRST sent interrupt */
+#define UCPD_SR_TXUND_Pos (6U)
+#define UCPD_SR_TXUND_Msk (0x1UL << UCPD_SR_TXUND_Pos) /*!< 0x00000040 */
+#define UCPD_SR_TXUND UCPD_SR_TXUND_Msk /*!< Tx data underrun condition interrupt */
+#define UCPD_SR_RXNE_Pos (8U)
+#define UCPD_SR_RXNE_Msk (0x1UL << UCPD_SR_RXNE_Pos) /*!< 0x00000100 */
+#define UCPD_SR_RXNE UCPD_SR_RXNE_Msk /*!< Receive data register not empty interrupt */
+#define UCPD_SR_RXORDDET_Pos (9U)
+#define UCPD_SR_RXORDDET_Msk (0x1UL << UCPD_SR_RXORDDET_Pos) /*!< 0x00000200 */
+#define UCPD_SR_RXORDDET UCPD_SR_RXORDDET_Msk /*!< Rx ordered set (4 K-codes) detected interrupt */
+#define UCPD_SR_RXHRSTDET_Pos (10U)
+#define UCPD_SR_RXHRSTDET_Msk (0x1UL << UCPD_SR_RXHRSTDET_Pos) /*!< 0x00000400 */
+#define UCPD_SR_RXHRSTDET UCPD_SR_RXHRSTDET_Msk /*!< Rx Hard Reset detect interrupt */
+#define UCPD_SR_RXOVR_Pos (11U)
+#define UCPD_SR_RXOVR_Msk (0x1UL << UCPD_SR_RXOVR_Pos) /*!< 0x00000800 */
+#define UCPD_SR_RXOVR UCPD_SR_RXOVR_Msk /*!< Rx data overflow interrupt */
+#define UCPD_SR_RXMSGEND_Pos (12U)
+#define UCPD_SR_RXMSGEND_Msk (0x1UL << UCPD_SR_RXMSGEND_Pos) /*!< 0x00001000 */
+#define UCPD_SR_RXMSGEND UCPD_SR_RXMSGEND_Msk /*!< Rx message received */
+#define UCPD_SR_RXERR_Pos (13U)
+#define UCPD_SR_RXERR_Msk (0x1UL << UCPD_SR_RXERR_Pos) /*!< 0x00002000 */
+#define UCPD_SR_RXERR UCPD_SR_RXERR_Msk /*!< RX Error */
+#define UCPD_SR_TYPECEVT1_Pos (14U)
+#define UCPD_SR_TYPECEVT1_Msk (0x1UL << UCPD_SR_TYPECEVT1_Pos) /*!< 0x00004000 */
+#define UCPD_SR_TYPECEVT1 UCPD_SR_TYPECEVT1_Msk /*!< Type C voltage level event on CC1 */
+#define UCPD_SR_TYPECEVT2_Pos (15U)
+#define UCPD_SR_TYPECEVT2_Msk (0x1UL << UCPD_SR_TYPECEVT2_Pos) /*!< 0x00008000 */
+#define UCPD_SR_TYPECEVT2 UCPD_SR_TYPECEVT2_Msk /*!< Type C voltage level event on CC2 */
+#define UCPD_SR_TYPEC_VSTATE_CC1_Pos (16U)
+#define UCPD_SR_TYPEC_VSTATE_CC1_Msk (0x3UL << UCPD_SR_TYPEC_VSTATE_CC1_Pos) /*!< 0x00030000 */
+#define UCPD_SR_TYPEC_VSTATE_CC1 UCPD_SR_TYPEC_VSTATE_CC1_Msk /*!< Status of DC level on CC1 pin */
+#define UCPD_SR_TYPEC_VSTATE_CC1_0 (0x1UL << UCPD_SR_TYPEC_VSTATE_CC1_Pos) /*!< 0x00010000 */
+#define UCPD_SR_TYPEC_VSTATE_CC1_1 (0x2UL << UCPD_SR_TYPEC_VSTATE_CC1_Pos) /*!< 0x00020000 */
+#define UCPD_SR_TYPEC_VSTATE_CC2_Pos (18U)
+#define UCPD_SR_TYPEC_VSTATE_CC2_Msk (0x3UL << UCPD_SR_TYPEC_VSTATE_CC2_Pos) /*!< 0x000C0000 */
+#define UCPD_SR_TYPEC_VSTATE_CC2 UCPD_SR_TYPEC_VSTATE_CC2_Msk /*!>2) /*!< Input modulus number of bits */
+#define PKA_MONTGOMERY_PARAM_IN_MODULUS ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Compute Montgomery parameter output data */
+#define PKA_MONTGOMERY_PARAM_OUT_PARAMETER ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Output Montgomery parameter */
+
+/* Compute modular exponentiation input data */
+#define PKA_MODULAR_EXP_IN_EXP_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent number of bits */
+#define PKA_MODULAR_EXP_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_EXP_IN_MONTGOMERY_PARAM ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+#define PKA_MODULAR_EXP_IN_EXPONENT_BASE ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the exponentiation */
+#define PKA_MODULAR_EXP_IN_EXPONENT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent to process */
+#define PKA_MODULAR_EXP_IN_MODULUS ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+#define PKA_MODULAR_EXP_PROTECT_IN_EXPONENT_BASE ((0x16C8UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the protected exponentiation */
+#define PKA_MODULAR_EXP_PROTECT_IN_EXPONENT ((0x14B8UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent to process protected exponentiation*/
+#define PKA_MODULAR_EXP_PROTECT_IN_MODULUS ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus to process protected exponentiation */
+#define PKA_MODULAR_EXP_PROTECT_IN_PHI ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input phi to process protected exponentiation */
+
+/* Compute modular exponentiation output data */
+#define PKA_MODULAR_EXP_OUT_RESULT ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Output result of the exponentiation */
+#define PKA_MODULAR_EXP_OUT_ERROR ((0x1298UL - PKA_RAM_OFFSET)>>2) /*!< Output error of the exponentiation */
+#define PKA_MODULAR_EXP_OUT_MONTGOMERY_PARAM ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Output storage area for Montgomery parameter */
+#define PKA_MODULAR_EXP_OUT_EXPONENT_BASE ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Output base of the exponentiation */
+
+/* Compute ECC scalar multiplication input data */
+#define PKA_ECC_SCALAR_MUL_IN_EXP_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input curve prime order n number of bits */
+#define PKA_ECC_SCALAR_MUL_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECC_SCALAR_MUL_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_MOD_GF ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_SCALAR_MUL_IN_K ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input 'k' of KP */
+#define PKA_ECC_SCALAR_MUL_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_SCALAR_MUL_IN_INITIAL_POINT_Y ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_SCALAR_MUL_IN_N_PRIME_ORDER ((0x0F88UL - PKA_RAM_OFFSET)>>2) /*!< Input prime order n */
+
+/* Compute ECC scalar multiplication output data */
+#define PKA_ECC_SCALAR_MUL_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate */
+#define PKA_ECC_SCALAR_MUL_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate */
+#define PKA_ECC_SCALAR_MUL_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+/* Point check input data */
+#define PKA_POINT_CHECK_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_POINT_CHECK_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_POINT_CHECK_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_POINT_CHECK_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_POINT_CHECK_IN_MOD_GF ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_POINT_CHECK_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_POINT_CHECK_IN_INITIAL_POINT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_POINT_CHECK_IN_MONTGOMERY_PARAM ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+
+/* Point check output data */
+#define PKA_POINT_CHECK_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output error */
+
+/* ECDSA signature input data */
+#define PKA_ECDSA_SIGN_IN_ORDER_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input order number of bits */
+#define PKA_ECDSA_SIGN_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECDSA_SIGN_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECDSA_SIGN_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECDSA_SIGN_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_ECDSA_SIGN_IN_MOD_GF ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECDSA_SIGN_IN_K ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input k value of the ECDSA */
+#define PKA_ECDSA_SIGN_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECDSA_SIGN_IN_INITIAL_POINT_Y ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECDSA_SIGN_IN_HASH_E ((0x0FE8UL - PKA_RAM_OFFSET)>>2) /*!< Input e, hash of the message */
+#define PKA_ECDSA_SIGN_IN_PRIVATE_KEY_D ((0x0F28UL - PKA_RAM_OFFSET)>>2) /*!< Input d, private key */
+#define PKA_ECDSA_SIGN_IN_ORDER_N ((0x0F88UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+
+/* ECDSA signature output data */
+#define PKA_ECDSA_SIGN_OUT_ERROR ((0x0FE0UL - PKA_RAM_OFFSET)>>2) /*!< Output error */
+#define PKA_ECDSA_SIGN_OUT_SIGNATURE_R ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Output signature r */
+#define PKA_ECDSA_SIGN_OUT_SIGNATURE_S ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Output signature s */
+#define PKA_ECDSA_SIGN_OUT_FINAL_POINT_X ((0x1400UL - PKA_RAM_OFFSET)>>2) /*!< Extended output result point X coordinate */
+#define PKA_ECDSA_SIGN_OUT_FINAL_POINT_Y ((0x1458UL - PKA_RAM_OFFSET)>>2) /*!< Extended output result point Y coordinate */
+
+
+/* ECDSA verification input data */
+#define PKA_ECDSA_VERIF_IN_ORDER_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input order number of bits */
+#define PKA_ECDSA_VERIF_IN_MOD_NB_BITS ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECDSA_VERIF_IN_A_COEFF_SIGN ((0x0468UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECDSA_VERIF_IN_A_COEFF ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECDSA_VERIF_IN_MOD_GF ((0x04D0UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECDSA_VERIF_IN_INITIAL_POINT_X ((0x0678UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECDSA_VERIF_IN_INITIAL_POINT_Y ((0x06D0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_X ((0x12F8UL - PKA_RAM_OFFSET)>>2) /*!< Input public key point X coordinate */
+#define PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_Y ((0x1350UL - PKA_RAM_OFFSET)>>2) /*!< Input public key point Y coordinate */
+#define PKA_ECDSA_VERIF_IN_SIGNATURE_R ((0x10E0UL - PKA_RAM_OFFSET)>>2) /*!< Input r, part of the signature */
+#define PKA_ECDSA_VERIF_IN_SIGNATURE_S ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input s, part of the signature */
+#define PKA_ECDSA_VERIF_IN_HASH_E ((0x13A8UL - PKA_RAM_OFFSET)>>2) /*!< Input e, hash of the message */
+#define PKA_ECDSA_VERIF_IN_ORDER_N ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+
+/* ECDSA verification output data */
+#define PKA_ECDSA_VERIF_OUT_RESULT ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* RSA CRT exponentiation input data */
+#define PKA_RSA_CRT_EXP_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operands number of bits */
+#define PKA_RSA_CRT_EXP_IN_DP_CRT ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input Dp CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_DQ_CRT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Input Dq CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_QINV_CRT ((0x0948UL - PKA_RAM_OFFSET)>>2) /*!< Input qInv CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_PRIME_P ((0x0B60UL - PKA_RAM_OFFSET)>>2) /*!< Input Prime p */
+#define PKA_RSA_CRT_EXP_IN_PRIME_Q ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input Prime q */
+#define PKA_RSA_CRT_EXP_IN_EXPONENT_BASE ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the exponentiation */
+
+/* RSA CRT exponentiation output data */
+#define PKA_RSA_CRT_EXP_OUT_RESULT ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular reduction input data */
+#define PKA_MODULAR_REDUC_IN_OP_LENGTH ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input operand length */
+#define PKA_MODULAR_REDUC_IN_MOD_LENGTH ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus length */
+#define PKA_MODULAR_REDUC_IN_OPERAND ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand */
+#define PKA_MODULAR_REDUC_IN_MODULUS ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Modular reduction output data */
+#define PKA_MODULAR_REDUC_OUT_RESULT ((0xE78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic addition input data */
+#define PKA_ARITHMETIC_ADD_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_ADD_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_ADD_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic addition output data */
+#define PKA_ARITHMETIC_ADD_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic subtraction input data */
+#define PKA_ARITHMETIC_SUB_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_SUB_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_SUB_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic subtraction output data */
+#define PKA_ARITHMETIC_SUB_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic multiplication input data */
+#define PKA_ARITHMETIC_MUL_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_MUL_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_MUL_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic multiplication output data */
+#define PKA_ARITHMETIC_MUL_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Comparison input data */
+#define PKA_COMPARISON_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_COMPARISON_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_COMPARISON_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Comparison output data */
+#define PKA_COMPARISON_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular addition input data */
+#define PKA_MODULAR_ADD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_ADD_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_ADD_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MODULAR_ADD_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op3 (modulus) */
+
+/* Modular addition output data */
+#define PKA_MODULAR_ADD_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular inversion input data */
+#define PKA_MODULAR_INV_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_INV_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_INV_IN_OP2_MOD ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 (modulus) */
+
+/* Modular inversion output data */
+#define PKA_MODULAR_INV_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular subtraction input data */
+#define PKA_MODULAR_SUB_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_SUB_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_SUB_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MODULAR_SUB_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op3 */
+
+/* Modular subtraction output data */
+#define PKA_MODULAR_SUB_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Montgomery multiplication input data */
+#define PKA_MONTGOMERY_MUL_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MONTGOMERY_MUL_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MONTGOMERY_MUL_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MONTGOMERY_MUL_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Montgomery multiplication output data */
+#define PKA_MONTGOMERY_MUL_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Generic Arithmetic input data */
+#define PKA_ARITHMETIC_ALL_OPS_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP3 ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Generic Arithmetic output data */
+#define PKA_ARITHMETIC_ALL_OPS_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result for arithmetic operations */
+
+/* Compute ECC complete addition input data */
+#define PKA_ECC_COMPLETE_ADD_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_COMPLETE_ADD_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_COMPLETE_ADD_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve '|a|' coefficient */
+#define PKA_ECC_COMPLETE_ADD_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_X ((0x0628UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_Y ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_Z ((0x06D8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Z coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_X ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q X coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_Y ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_Z ((0x07E0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Z coordinate */
+
+/* Compute ECC complete addition output data */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_X ((0x0D60UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_Y ((0x0DB8UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_Z ((0x0E10UL - PKA_RAM_OFFSET)>>2) /*!< Output result Z coordinate */
+
+/* Compute ECC double base ladder input data */
+#define PKA_ECC_DOUBLE_LADDER_IN_PRIME_ORDER_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+#define PKA_ECC_DOUBLE_LADDER_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_DOUBLE_LADDER_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve '|a|' coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_DOUBLE_LADDER_IN_K_INTEGER ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input 'k' integer coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_M_INTEGER ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input 'm' integer coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_X ((0x0628UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_Y ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_Z ((0x06D8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Z coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_X ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q X coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_Y ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Y coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_Z ((0x07E0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Z coordinate */
+
+/* Compute ECC double base ladder output data */
+#define PKA_ECC_DOUBLE_LADDER_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate (affine coordinate) */
+#define PKA_ECC_DOUBLE_LADDER_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate (affine coordinate) */
+#define PKA_ECC_DOUBLE_LADDER_OUT_ERROR ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+/* Compute ECC projective to affine conversion input data */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_X ((0x0D60UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P X coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_Y ((0x0DB8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P Y coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_Z ((0x0E10UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P Z coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MONTGOMERY_PARAM_R2 ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+
+/* Compute ECC projective to affine conversion output data */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result x affine coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result y affine coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+
+/** @addtogroup STM32H5xx_Peripheral_Exported_macros
+ * @{
+ */
+
+/******************************* ADC Instances ********************************/
+#define IS_ADC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == ADC1_NS) || \
+ ((INSTANCE) == ADC1_S)|| \
+ ((INSTANCE) == ADC2_NS)|| \
+ ((INSTANCE) == ADC2_S))
+
+#define IS_ADC_MULTIMODE_MASTER_INSTANCE(INSTANCE) (((INSTANCE) == ADC1_NS) || \
+ ((INSTANCE) == ADC1_S))
+
+
+#define IS_ADC_COMMON_INSTANCE(INSTANCE) (((INSTANCE) == ADC12_COMMON_NS) || \
+ ((INSTANCE) == ADC12_COMMON_S))
+/******************************* PKA Instances ********************************/
+#define IS_PKA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == PKA_NS) || ((INSTANCE) == PKA_S))
+
+/******************************* CRC Instances ********************************/
+#define IS_CRC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == CRC_NS) || ((INSTANCE) == CRC_S))
+
+/******************************* DAC Instances ********************************/
+#define IS_DAC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DAC1_NS) || ((INSTANCE) == DAC1_S))
+
+/******************************* DCACHE Instances *****************************/
+#define IS_DCACHE_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DCACHE1_NS) || ((INSTANCE) == DCACHE1_S))
+
+/******************************* DELAYBLOCK Instances *******************************/
+#define IS_DLYB_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DLYB_SDMMC1_NS) || \
+ ((INSTANCE) == DLYB_SDMMC1_S) || \
+ ((INSTANCE) == DLYB_OCTOSPI1_NS) || \
+ ((INSTANCE) == DLYB_OCTOSPI1_S ))
+
+/******************************** DMA Instances *******************************/
+#define IS_DMA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel0_NS) || ((INSTANCE) == GPDMA1_Channel0_S) || \
+ ((INSTANCE) == GPDMA1_Channel1_NS) || ((INSTANCE) == GPDMA1_Channel1_S) || \
+ ((INSTANCE) == GPDMA1_Channel2_NS) || ((INSTANCE) == GPDMA1_Channel2_S) || \
+ ((INSTANCE) == GPDMA1_Channel3_NS) || ((INSTANCE) == GPDMA1_Channel3_S) || \
+ ((INSTANCE) == GPDMA1_Channel4_NS) || ((INSTANCE) == GPDMA1_Channel4_S) || \
+ ((INSTANCE) == GPDMA1_Channel5_NS) || ((INSTANCE) == GPDMA1_Channel5_S) || \
+ ((INSTANCE) == GPDMA1_Channel6_NS) || ((INSTANCE) == GPDMA1_Channel6_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel0_NS) || ((INSTANCE) == GPDMA2_Channel0_S) || \
+ ((INSTANCE) == GPDMA2_Channel1_NS) || ((INSTANCE) == GPDMA2_Channel1_S) || \
+ ((INSTANCE) == GPDMA2_Channel2_NS) || ((INSTANCE) == GPDMA2_Channel2_S) || \
+ ((INSTANCE) == GPDMA2_Channel3_NS) || ((INSTANCE) == GPDMA2_Channel3_S) || \
+ ((INSTANCE) == GPDMA2_Channel4_NS) || ((INSTANCE) == GPDMA2_Channel4_S) || \
+ ((INSTANCE) == GPDMA2_Channel5_NS) || ((INSTANCE) == GPDMA2_Channel5_S) || \
+ ((INSTANCE) == GPDMA2_Channel6_NS) || ((INSTANCE) == GPDMA2_Channel6_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+#define IS_GPDMA_INSTANCE(INSTANCE) IS_DMA_ALL_INSTANCE(INSTANCE)
+
+#define IS_DMA_2D_ADDRESSING_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel6_NS) || ((INSTANCE) == GPDMA1_Channel6_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel6_NS) || ((INSTANCE) == GPDMA2_Channel6_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+#define IS_DMA_PFREQ_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel0_NS) || ((INSTANCE) == GPDMA1_Channel0_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel0_NS) || ((INSTANCE) == GPDMA2_Channel0_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+/****************************** RAMCFG Instances ********************************/
+#define IS_RAMCFG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM1_NS) || ((INSTANCE) == RAMCFG_SRAM1_S) || \
+ ((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S) || \
+ ((INSTANCE) == RAMCFG_SRAM3_NS) || ((INSTANCE) == RAMCFG_SRAM3_S) || \
+ ((INSTANCE) == RAMCFG_BKPRAM_NS) || ((INSTANCE) == RAMCFG_BKPRAM_S))
+
+/***************************** RAMCFG ECC Instances *****************************/
+#define IS_RAMCFG_ECC_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S) || \
+ ((INSTANCE) == RAMCFG_SRAM3_NS) || ((INSTANCE) == RAMCFG_SRAM3_S) || \
+ ((INSTANCE) == RAMCFG_BKPRAM_NS) || ((INSTANCE) == RAMCFG_BKPRAM_S))
+
+/************************ RAMCFG Write Protection Instances *********************/
+#define IS_RAMCFG_WP_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S))
+
+/******************************* GPIO Instances *******************************/
+#define IS_GPIO_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPIOA_NS) || ((INSTANCE) == GPIOA_S) || \
+ ((INSTANCE) == GPIOB_NS) || ((INSTANCE) == GPIOB_S) || \
+ ((INSTANCE) == GPIOC_NS) || ((INSTANCE) == GPIOC_S) || \
+ ((INSTANCE) == GPIOD_NS) || ((INSTANCE) == GPIOD_S) || \
+ ((INSTANCE) == GPIOE_NS) || ((INSTANCE) == GPIOE_S) || \
+ ((INSTANCE) == GPIOF_NS) || ((INSTANCE) == GPIOF_S) || \
+ ((INSTANCE) == GPIOG_NS) || ((INSTANCE) == GPIOG_S) || \
+ ((INSTANCE) == GPIOH_NS) || ((INSTANCE) == GPIOH_S))
+
+/******************************* DCMI Instances *******************************/
+#define IS_DCMI_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == DCMI_NS) || ((__INSTANCE__) == DCMI_S))
+
+/******************************* PSSI Instances *******************************/
+#define IS_PSSI_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == PSSI_NS) || ((__INSTANCE__) == PSSI_S))
+
+/******************************* DTS Instances *******************************/
+#define IS_DTS_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == DTS_NS) || ((__INSTANCE__) == DTS_S))
+
+/******************************* GPIO AF Instances ****************************/
+/* On H5, all GPIO Bank support AF */
+#define IS_GPIO_AF_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)
+
+/**************************** GPIO Lock Instances *****************************/
+/* On H5, all GPIO Bank support the Lock mechanism */
+#define IS_GPIO_LOCK_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)
+
+/******************************** I2C Instances *******************************/
+#define IS_I2C_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1_NS) || ((INSTANCE) == I2C1_S) || \
+ ((INSTANCE) == I2C2_NS) || ((INSTANCE) == I2C2_S) || \
+ ((INSTANCE) == I2C3_NS) || ((INSTANCE) == I2C3_S))
+
+/****************** I2C Instances : wakeup capability from stop modes *********/
+#define IS_I2C_WAKEUP_FROMSTOP_INSTANCE(INSTANCE) IS_I2C_ALL_INSTANCE(INSTANCE)
+
+/******************************** I3C Instances *******************************/
+#define IS_I3C_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I3C1_NS) || ((INSTANCE) == I3C1_S) || \
+ ((INSTANCE) == I3C2_NS) || ((INSTANCE) == I3C2_S))
+
+/******************************* OSPI Instances *******************************/
+#define IS_OSPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == OCTOSPI1_NS) || ((INSTANCE) == OCTOSPI1_S))
+
+/******************************* RNG Instances ********************************/
+#define IS_RNG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RNG_NS) || ((INSTANCE) == RNG_S))
+
+/****************************** RTC Instances *********************************/
+#define IS_RTC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RTC_NS) || ((INSTANCE) == RTC_S))
+
+/****************************** SDMMC Instances *******************************/
+#define IS_SDMMC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SDMMC1_NS) || ((INSTANCE) == SDMMC1_S))
+
+/****************************** FDCAN Instances *******************************/
+#define IS_FDCAN_ALL_INSTANCE(INSTANCE) (((INSTANCE) == FDCAN1_NS) || ((INSTANCE) == FDCAN1_S) || \
+ ((INSTANCE) == FDCAN2_NS) || ((INSTANCE) == FDCAN2_S))
+
+/****************************** SMBUS Instances *******************************/
+#define IS_SMBUS_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1_NS) || ((INSTANCE) == I2C1_S) || \
+ ((INSTANCE) == I2C2_NS) || ((INSTANCE) == I2C2_S) || \
+ ((INSTANCE) == I2C3_NS) || ((INSTANCE) == I2C3_S))
+
+/******************************** SPI Instances *******************************/
+#define IS_SPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1_NS) || ((INSTANCE) == SPI1_S) || \
+ ((INSTANCE) == SPI2_NS) || ((INSTANCE) == SPI2_S) || \
+ ((INSTANCE) == SPI3_NS) || ((INSTANCE) == SPI3_S) || \
+ ((INSTANCE) == SPI4_NS) || ((INSTANCE) == SPI4_S))
+
+#define IS_SPI_LIMITED_INSTANCE(INSTANCE) (((INSTANCE) == SPI4_NS) || ((INSTANCE) == SPI4_S))
+
+#define IS_SPI_FULL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1_NS) || ((INSTANCE) == SPI1_S) || \
+ ((INSTANCE) == SPI2_NS) || ((INSTANCE) == SPI2_S) || \
+ ((INSTANCE) == SPI3_NS) || ((INSTANCE) == SPI3_S))
+
+/****************** LPTIM Instances : All supported instances *****************/
+#define IS_LPTIM_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/****************** LPTIM Instances : DMA supported instances *****************/
+#define IS_LPTIM_DMA_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/************* LPTIM Instances : at least 1 capture/compare channel ***********/
+#define IS_LPTIM_CC1_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/************* LPTIM Instances : at least 2 capture/compare channel ***********/
+#define IS_LPTIM_CC2_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/****************** LPTIM Instances : supporting encoder interface **************/
+#define IS_LPTIM_ENCODER_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/****************** LPTIM Instances : supporting Input Capture **************/
+#define IS_LPTIM_INPUT_CAPTURE_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/****************** TIM Instances : All supported instances *******************/
+#define IS_TIM_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting 32 bits counter ****************/
+#define IS_TIM_32B_COUNTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S))
+
+/****************** TIM Instances : supporting the break function *************/
+#define IS_TIM_BREAK_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/************** TIM Instances : supporting Break source selection *************/
+#define IS_TIM_BREAKSOURCE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting 2 break inputs *****************/
+#define IS_TIM_BKIN2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************* TIM Instances : at least 1 capture/compare channel *************/
+#define IS_TIM_CC1_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/************ TIM Instances : at least 2 capture/compare channels *************/
+#define IS_TIM_CC2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/************ TIM Instances : at least 3 capture/compare channels *************/
+#define IS_TIM_CC3_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************ TIM Instances : at least 4 capture/compare channels *************/
+#define IS_TIM_CC4_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : at least 5 capture/compare channels *******/
+#define IS_TIM_CC5_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : at least 6 capture/compare channels *******/
+#define IS_TIM_CC6_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : DMA requests generation (TIMx_DIER.UDE) ***/
+#define IS_TIM_DMA_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/************ TIM Instances : DMA requests generation (TIMx_DIER.CCxDE) *******/
+#define IS_TIM_DMA_CC_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/******************** TIM Instances : DMA burst feature ***********************/
+#define IS_TIM_DMABURST_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/******************* TIM Instances : output(s) available **********************/
+#define IS_TIM_CCX_INSTANCE(INSTANCE, CHANNEL) \
+ (((((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4) || \
+ ((CHANNEL) == TIM_CHANNEL_5) || \
+ ((CHANNEL) == TIM_CHANNEL_6))) \
+ || \
+ ((((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4) || \
+ ((CHANNEL) == TIM_CHANNEL_5) || \
+ ((CHANNEL) == TIM_CHANNEL_6))) \
+ || \
+ ((((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2))) \
+ || \
+ ((((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2))))
+
+/****************** TIM Instances : supporting complementary output(s) ********/
+#define IS_TIM_CCXN_INSTANCE(INSTANCE, CHANNEL) \
+ (((((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S)) && \
+ ((CHANNEL) == TIM_CHANNEL_1)))
+
+/****************** TIM Instances : supporting clock division *****************/
+#define IS_TIM_CLOCK_DIVISION_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****** TIM Instances : supporting external clock mode 1 for ETRF input *******/
+#define IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****** TIM Instances : supporting external clock mode 2 for ETRF input *******/
+#define IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting external clock mode 1 for TIX inputs*/
+#define IS_TIM_CLOCKSOURCE_TIX_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting internal trigger inputs(ITRX) *******/
+#define IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting combined 3-phase PWM mode ******/
+#define IS_TIM_COMBINED3PHASEPWM_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting commutation event generation ***/
+#define IS_TIM_COMMUTATION_EVENT_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting counting mode selection ********/
+#define IS_TIM_COUNTER_MODE_SELECT_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting encoder interface **************/
+#define IS_TIM_ENCODER_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting Hall sensor interface **********/
+#define IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/**************** TIM Instances : external trigger input available ************/
+#define IS_TIM_ETR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************* TIM Instances : supporting ETR source selection ***************/
+#define IS_TIM_ETRSEL_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****** TIM Instances : Master mode available (TIMx_CR2.MMS available )********/
+#define IS_TIM_MASTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/*********** TIM Instances : Slave mode available (TIMx_SMCR available )*******/
+#define IS_TIM_SLAVE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting OCxREF clear *******************/
+#define IS_TIM_OCXREF_CLEAR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : remapping capability **********************/
+#define IS_TIM_REMAP_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting repetition counter *************/
+#define IS_TIM_REPETITION_COUNTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting ADC triggering through TRGO2 ***/
+#define IS_TIM_TRGO2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/******************* TIM Instances : Timer input XOR function *****************/
+#define IS_TIM_XOR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/******************* TIM Instances : Timer input selection ********************/
+#define IS_TIM_TISEL_INSTANCE(INSTANCE) (((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S)|| \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : Advanced timer instances *******************/
+#define IS_TIM_ADVANCED_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting synchronization ****************/
+#define IS_TIM_SYNCHRO_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1_NS) || ((__INSTANCE__) == TIM1_S) || \
+ ((__INSTANCE__) == TIM2_NS) || ((__INSTANCE__) == TIM2_S) || \
+ ((__INSTANCE__) == TIM3_NS) || ((__INSTANCE__) == TIM3_S) || \
+ ((__INSTANCE__) == TIM4_NS) || ((__INSTANCE__) == TIM4_S) || \
+ ((__INSTANCE__) == TIM5_NS) || ((__INSTANCE__) == TIM5_S) || \
+ ((__INSTANCE__) == TIM6_NS) || ((__INSTANCE__) == TIM6_S) || \
+ ((__INSTANCE__) == TIM7_NS) || ((__INSTANCE__) == TIM7_S) || \
+ ((__INSTANCE__) == TIM8_NS) || ((__INSTANCE__) == TIM8_S) || \
+ ((__INSTANCE__) == TIM12_NS) || ((__INSTANCE__) == TIM12_S)|| \
+ ((__INSTANCE__) == TIM15_NS) || ((__INSTANCE__) == TIM15_S))
+
+/******************** USART Instances : Synchronous mode **********************/
+#define IS_USART_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/******************** UART Instances : Asynchronous mode **********************/
+#define IS_UART_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/*********************** UART Instances : FIFO mode ***************************/
+#define IS_UART_FIFO_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/*********************** UART Instances : SPI Slave mode **********************/
+#define IS_UART_SPI_SLAVE_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/******************************** I2S Instances *******************************/
+#define IS_I2S_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1) || \
+ ((INSTANCE) == SPI2) || \
+ ((INSTANCE) == SPI3))
+
+/****************** UART Instances : Auto Baud Rate detection ****************/
+#define IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/****************** UART Instances : Driver Enable *****************/
+#define IS_UART_DRIVER_ENABLE_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** UART Instances : Half-Duplex mode **********************/
+#define IS_UART_HALFDUPLEX_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/****************** UART Instances : Hardware Flow control ********************/
+#define IS_UART_HWFLOW_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** UART Instances : LIN mode **********************/
+#define IS_UART_LIN_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/******************** UART Instances : Wake-up from Stop mode **********************/
+#define IS_UART_WAKEUP_FROMSTOP_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/*********************** UART Instances : IRDA mode ***************************/
+#define IS_IRDA_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/********************* USART Instances : Smard card mode ***********************/
+#define IS_SMARTCARD_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/******************** LPUART Instance *****************************************/
+#define IS_LPUART_INSTANCE(INSTANCE) (((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** CEC Instance *****************************************/
+#define IS_CEC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == CEC_NS) || ((INSTANCE) == CEC_S))
+
+/****************************** IWDG Instances ********************************/
+#define IS_IWDG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == IWDG_NS) || ((INSTANCE) == IWDG_S))
+
+/****************************** WWDG Instances ********************************/
+#define IS_WWDG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == WWDG_NS) || ((INSTANCE) == WWDG_S))
+
+/****************************** UCPD Instances ********************************/
+#define IS_UCPD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == UCPD1_NS) || ((INSTANCE) == UCPD1_S))
+
+/******************************* USB DRD FS HCD Instances *************************/
+#define IS_HCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_DRD_FS_NS) || ((INSTANCE) == USB_DRD_FS_S))
+
+/******************************* USB DRD FS PCD Instances *************************/
+#define IS_PCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_DRD_FS_NS) || ((INSTANCE) == USB_DRD_FS_S))
+
+/** @} */ /* End of group STM32H5xx_Peripheral_Exported_macros */
+
+/** @} */ /* End of group STM32H523xx */
+
+/** @} */ /* End of group ST */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* STM32H523xx_H */
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h533xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h533xx.h
new file mode 100644
index 000000000..1e982b63d
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h533xx.h
@@ -0,0 +1,20774 @@
+/**
+ ******************************************************************************
+ * @file stm32h533xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H533xx Device Peripheral Access Layer Header File.
+ *
+ * This file contains:
+ * - Data structures and the address mapping for all peripherals
+ * - Peripheral's registers declarations and bits definition
+ * - Macros to access peripheral's registers hardware
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2023 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.
+ *
+ ******************************************************************************
+ */
+
+#ifndef STM32H533xx_H
+#define STM32H533xx_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** @addtogroup ST
+ * @{
+ */
+
+
+/** @addtogroup STM32H533xx
+ * @{
+ */
+
+
+/** @addtogroup Configuration_of_CMSIS
+ * @{
+ */
+
+
+/* =========================================================================================================================== */
+/* ================ Interrupt Number Definition ================ */
+/* =========================================================================================================================== */
+
+typedef enum
+{
+/* ======================================= ARM Cortex-M33 Specific Interrupt Numbers ======================================= */
+ Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */
+ NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */
+ HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */
+ MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation
+ and No Match */
+ BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory
+ related Fault */
+ UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */
+ SecureFault_IRQn = -9, /*!< -9 Secure Fault */
+ SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */
+ DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */
+ PendSV_IRQn = -2, /*!< -2 Pendable request for system service */
+ SysTick_IRQn = -1, /*!< -1 System Tick Timer */
+
+/* =========================================== STM32H533xx Specific Interrupt Numbers ====================================== */
+ WWDG_IRQn = 0, /*!< Window WatchDog interrupt */
+ PVD_AVD_IRQn = 1, /*!< PVD/AVD through EXTI Line detection Interrupt */
+ RTC_IRQn = 2, /*!< RTC non-secure interrupt */
+ RTC_S_IRQn = 3, /*!< RTC secure interrupt */
+ TAMP_IRQn = 4, /*!< Tamper global interrupt */
+ RAMCFG_IRQn = 5, /*!< RAMCFG global interrupt */
+ FLASH_IRQn = 6, /*!< FLASH non-secure global interrupt */
+ FLASH_S_IRQn = 7, /*!< FLASH secure global interrupt */
+ GTZC_IRQn = 8, /*!< Global TrustZone Controller interrupt */
+ RCC_IRQn = 9, /*!< RCC non secure global interrupt */
+ RCC_S_IRQn = 10, /*!< RCC secure global interrupt */
+ EXTI0_IRQn = 11, /*!< EXTI Line0 interrupt */
+ EXTI1_IRQn = 12, /*!< EXTI Line1 interrupt */
+ EXTI2_IRQn = 13, /*!< EXTI Line2 interrupt */
+ EXTI3_IRQn = 14, /*!< EXTI Line3 interrupt */
+ EXTI4_IRQn = 15, /*!< EXTI Line4 interrupt */
+ EXTI5_IRQn = 16, /*!< EXTI Line5 interrupt */
+ EXTI6_IRQn = 17, /*!< EXTI Line6 interrupt */
+ EXTI7_IRQn = 18, /*!< EXTI Line7 interrupt */
+ EXTI8_IRQn = 19, /*!< EXTI Line8 interrupt */
+ EXTI9_IRQn = 20, /*!< EXTI Line9 interrupt */
+ EXTI10_IRQn = 21, /*!< EXTI Line10 interrupt */
+ EXTI11_IRQn = 22, /*!< EXTI Line11 interrupt */
+ EXTI12_IRQn = 23, /*!< EXTI Line12 interrupt */
+ EXTI13_IRQn = 24, /*!< EXTI Line13 interrupt */
+ EXTI14_IRQn = 25, /*!< EXTI Line14 interrupt */
+ EXTI15_IRQn = 26, /*!< EXTI Line15 interrupt */
+ GPDMA1_Channel0_IRQn = 27, /*!< GPDMA1 Channel 0 global interrupt */
+ GPDMA1_Channel1_IRQn = 28, /*!< GPDMA1 Channel 1 global interrupt */
+ GPDMA1_Channel2_IRQn = 29, /*!< GPDMA1 Channel 2 global interrupt */
+ GPDMA1_Channel3_IRQn = 30, /*!< GPDMA1 Channel 3 global interrupt */
+ GPDMA1_Channel4_IRQn = 31, /*!< GPDMA1 Channel 4 global interrupt */
+ GPDMA1_Channel5_IRQn = 32, /*!< GPDMA1 Channel 5 global interrupt */
+ GPDMA1_Channel6_IRQn = 33, /*!< GPDMA1 Channel 6 global interrupt */
+ GPDMA1_Channel7_IRQn = 34, /*!< GPDMA1 Channel 7 global interrupt */
+ IWDG_IRQn = 35, /*!< IWDG global interrupt */
+ SAES_IRQn = 36, /*!< Secure AES global interrupt */
+ ADC1_IRQn = 37, /*!< ADC1 global interrupt */
+ DAC1_IRQn = 38, /*!< DAC1 global interrupt */
+ FDCAN1_IT0_IRQn = 39, /*!< FDCAN1 interrupt 0 */
+ FDCAN1_IT1_IRQn = 40, /*!< FDCAN1 interrupt 1 */
+ TIM1_BRK_IRQn = 41, /*!< TIM1 Break interrupt */
+ TIM1_UP_IRQn = 42, /*!< TIM1 Update interrupt */
+ TIM1_TRG_COM_IRQn = 43, /*!< TIM1 Trigger and Commutation interrupt */
+ TIM1_CC_IRQn = 44, /*!< TIM1 Capture Compare interrupt */
+ TIM2_IRQn = 45, /*!< TIM2 global interrupt */
+ TIM3_IRQn = 46, /*!< TIM3 global interrupt */
+ TIM4_IRQn = 47, /*!< TIM4 global interrupt */
+ TIM5_IRQn = 48, /*!< TIM5 global interrupt */
+ TIM6_IRQn = 49, /*!< TIM6 global interrupt */
+ TIM7_IRQn = 50, /*!< TIM7 global interrupt */
+ I2C1_EV_IRQn = 51, /*!< I2C1 Event interrupt */
+ I2C1_ER_IRQn = 52, /*!< I2C1 Error interrupt */
+ I2C2_EV_IRQn = 53, /*!< I2C2 Event interrupt */
+ I2C2_ER_IRQn = 54, /*!< I2C2 Error interrupt */
+ SPI1_IRQn = 55, /*!< SPI1 global interrupt */
+ SPI2_IRQn = 56, /*!< SPI2 global interrupt */
+ SPI3_IRQn = 57, /*!< SPI3 global interrupt */
+ USART1_IRQn = 58, /*!< USART1 global interrupt */
+ USART2_IRQn = 59, /*!< USART2 global interrupt */
+ USART3_IRQn = 60, /*!< USART3 global interrupt */
+ UART4_IRQn = 61, /*!< UART4 global interrupt */
+ UART5_IRQn = 62, /*!< UART5 global interrupt */
+ LPUART1_IRQn = 63, /*!< LPUART1 global interrupt */
+ LPTIM1_IRQn = 64, /*!< LPTIM1 global interrupt */
+ TIM8_BRK_IRQn = 65, /*!< TIM8 Break interrupt */
+ TIM8_UP_IRQn = 66, /*!< TIM8 Update interrupt */
+ TIM8_TRG_COM_IRQn = 67, /*!< TIM8 Trigger and Commutation interrupt */
+ TIM8_CC_IRQn = 68, /*!< TIM8 Capture Compare interrupt */
+ ADC2_IRQn = 69, /*!< ADC2 global interrupt */
+ LPTIM2_IRQn = 70, /*!< LPTIM2 global interrupt */
+ TIM15_IRQn = 71, /*!< TIM15 global interrupt */
+ USB_DRD_FS_IRQn = 74, /*!< USB FS global interrupt */
+ CRS_IRQn = 75, /*!< CRS global interrupt */
+ UCPD1_IRQn = 76, /*!< UCPD1 global interrupt */
+ FMC_IRQn = 77, /*!< FMC global interrupt */
+ OCTOSPI1_IRQn = 78, /*!< OctoSPI1 global interrupt */
+ SDMMC1_IRQn = 79, /*!< SDMMC1 global interrupt */
+ I2C3_EV_IRQn = 80, /*!< I2C3 event interrupt */
+ I2C3_ER_IRQn = 81, /*!< I2C3 error interrupt */
+ SPI4_IRQn = 82, /*!< SPI4 global interrupt */
+ USART6_IRQn = 85, /*!< USART6 global interrupt */
+ GPDMA2_Channel0_IRQn = 90, /*!< GPDMA2 Channel 0 global interrupt */
+ GPDMA2_Channel1_IRQn = 91, /*!< GPDMA2 Channel 1 global interrupt */
+ GPDMA2_Channel2_IRQn = 92, /*!< GPDMA2 Channel 2 global interrupt */
+ GPDMA2_Channel3_IRQn = 93, /*!< GPDMA2 Channel 3 global interrupt */
+ GPDMA2_Channel4_IRQn = 94, /*!< GPDMA2 Channel 4 global interrupt */
+ GPDMA2_Channel5_IRQn = 95, /*!< GPDMA2 Channel 5 global interrupt */
+ GPDMA2_Channel6_IRQn = 96, /*!< GPDMA2 Channel 6 global interrupt */
+ GPDMA2_Channel7_IRQn = 97, /*!< GPDMA2 Channel 7 global interrupt */
+ FPU_IRQn = 103, /*!< FPU global interrupt */
+ ICACHE_IRQn = 104, /*!< Instruction cache global interrupt */
+ DCACHE1_IRQn = 105, /*!< Data cache global interrupt */
+ DCMI_PSSI_IRQn = 108, /*!< DCMI/PSSI global interrupt */
+ FDCAN2_IT0_IRQn = 109, /*!< FDCAN2 interrupt 0 */
+ FDCAN2_IT1_IRQn = 110, /*!< FDCAN2 interrupt 1 */
+ DTS_IRQn = 113, /*!< DTS global interrupt */
+ RNG_IRQn = 114, /*!< RNG global interrupt */
+ OTFDEC1_IRQn = 115, /*!< OTFDEC1 global interrupt */
+ AES_IRQn = 116, /*!< AES global interrupt */
+ HASH_IRQn = 117, /*!< HASH global interrupt */
+ PKA_IRQn = 118, /*!< PKA global interrupt */
+ CEC_IRQn = 119, /*!< CEC-HDMI global interrupt */
+ TIM12_IRQn = 120, /*!< TIM12 global interrupt */
+ I3C1_EV_IRQn = 123, /*!< I3C1 event interrupt */
+ I3C1_ER_IRQn = 124, /*!< I3C1 error interrupt */
+ I3C2_EV_IRQn = 131, /*!< I3C2 Event interrupt */
+ I3C2_ER_IRQn = 132, /*!< I3C2 Error interrupt */
+} IRQn_Type;
+
+
+
+/* =========================================================================================================================== */
+/* ================ Processor and Core Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+/* ------- Start of section using anonymous unions and disabling warnings ------- */
+#if defined (__CC_ARM)
+ #pragma push
+ #pragma anon_unions
+#elif defined (__ICCARM__)
+ #pragma language=extended
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wc11-extensions"
+ #pragma clang diagnostic ignored "-Wreserved-id-macro"
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning 586
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+
+/* -------- Configuration of the Cortex-M33 Processor and Core Peripherals ------ */
+#define __CM33_REV 0x0000U /* Core revision r0p1 */
+#define __SAUREGION_PRESENT 1U /* SAU regions present */
+#define __MPU_PRESENT 1U /* MPU present */
+#define __VTOR_PRESENT 1U /* VTOR present */
+#define __NVIC_PRIO_BITS 4U /* Number of Bits used for Priority Levels */
+#define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */
+#define __FPU_PRESENT 1U /* FPU present */
+#define __DSP_PRESENT 1U /* DSP extension present */
+
+/** @} */ /* End of group Configuration_of_CMSIS */
+
+
+#include /*!< ARM Cortex-M33 processor and core peripherals */
+#include "system_stm32h5xx.h" /*!< STM32H5xx System */
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_peripherals
+ * @{
+ */
+
+/**
+ * @brief CRC calculation unit
+ */
+typedef struct
+{
+ __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */
+ __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */
+ __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */
+ uint32_t RESERVED2; /*!< Reserved, 0x0C */
+ __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */
+ __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */
+ uint32_t RESERVED3[246]; /*!< Reserved, */
+ __IO uint32_t HWCFGR; /*!< CRC IP HWCFGR register, Address offset: 0x3F0 */
+ __IO uint32_t VERR; /*!< CRC IP version register, Address offset: 0x3F4 */
+ __IO uint32_t PIDR; /*!< CRC IP type identification register, Address offset: 0x3F8 */
+ __IO uint32_t SIDR; /*!< CRC IP map Size ID register, Address offset: 0x3FC */
+} CRC_TypeDef;
+
+/**
+ * @brief Inter-integrated Circuit Interface
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */
+ __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */
+ __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */
+ __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */
+ __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */
+ __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */
+ __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */
+ __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */
+ __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */
+ __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */
+} I2C_TypeDef;
+
+/**
+ * @brief Improved Inter-integrated Circuit Interface
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< I3C Control register, Address offset: 0x00 */
+ __IO uint32_t CFGR; /*!< I3C Controller Configuration register, Address offset: 0x04 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x08-0x0C */
+ __IO uint32_t RDR; /*!< I3C Received Data register, Address offset: 0x10 */
+ __IO uint32_t RDWR; /*!< I3C Received Data Word register, Address offset: 0x14 */
+ __IO uint32_t TDR; /*!< I3C Transmit Data register, Address offset: 0x18 */
+ __IO uint32_t TDWR; /*!< I3C Transmit Data Word register, Address offset: 0x1C */
+ __IO uint32_t IBIDR; /*!< I3C IBI payload Data register, Address offset: 0x20 */
+ __IO uint32_t TGTTDR; /*!< I3C Target Transmit register, Address offset: 0x24 */
+ uint32_t RESERVED2[2]; /*!< Reserved, Address offset: 0x28-0x2C */
+ __IO uint32_t SR; /*!< I3C Status register, Address offset: 0x30 */
+ __IO uint32_t SER; /*!< I3C Status Error register, Address offset: 0x34 */
+ uint32_t RESERVED3[2]; /*!< Reserved, Address offset: 0x38-0x3C */
+ __IO uint32_t RMR; /*!< I3C Received Message register, Address offset: 0x40 */
+ uint32_t RESERVED4[3]; /*!< Reserved, Address offset: 0x44-0x4C */
+ __IO uint32_t EVR; /*!< I3C Event register, Address offset: 0x50 */
+ __IO uint32_t IER; /*!< I3C Interrupt Enable register, Address offset: 0x54 */
+ __IO uint32_t CEVR; /*!< I3C Clear Event register, Address offset: 0x58 */
+ uint32_t RESERVED5; /*!< Reserved, Address offset: 0x5C */
+ __IO uint32_t DEVR0; /*!< I3C own Target characteristics register, Address offset: 0x60 */
+ __IO uint32_t DEVRX[4]; /*!< I3C Target x (1<=x<=4) register, Address offset: 0x64-0x70 */
+ uint32_t RESERVED6[7]; /*!< Reserved, Address offset: 0x74-0x8C */
+ __IO uint32_t MAXRLR; /*!< I3C Maximum Read Length register, Address offset: 0x90 */
+ __IO uint32_t MAXWLR; /*!< I3C Maximum Write Length register, Address offset: 0x94 */
+ uint32_t RESERVED7[2]; /*!< Reserved, Address offset: 0x98-0x9C */
+ __IO uint32_t TIMINGR0; /*!< I3C Timing 0 register, Address offset: 0xA0 */
+ __IO uint32_t TIMINGR1; /*!< I3C Timing 1 register, Address offset: 0xA4 */
+ __IO uint32_t TIMINGR2; /*!< I3C Timing 2 register, Address offset: 0xA8 */
+ uint32_t RESERVED9[5]; /*!< Reserved, Address offset: 0xAC-0xBC */
+ __IO uint32_t BCR; /*!< I3C Bus Characteristics register, Address offset: 0xC0 */
+ __IO uint32_t DCR; /*!< I3C Device Characteristics register, Address offset: 0xC4 */
+ __IO uint32_t GETCAPR; /*!< I3C GET CAPabilities register, Address offset: 0xC8 */
+ __IO uint32_t CRCAPR; /*!< I3C Controller CAPabilities register, Address offset: 0xCC */
+ __IO uint32_t GETMXDSR; /*!< I3C GET Max Data Speed register, Address offset: 0xD0 */
+ __IO uint32_t EPIDR; /*!< I3C Extended Provisioned ID register, Address offset: 0xD4 */
+} I3C_TypeDef;
+
+/**
+ * @brief DAC
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */
+ __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */
+ __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */
+ __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */
+ __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */
+ __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */
+ __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */
+ __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */
+ __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */
+ __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */
+ __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */
+ __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */
+ __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */
+ __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */
+ __IO uint32_t CCR; /*!< DAC calibration control register, Address offset: 0x38 */
+ __IO uint32_t MCR; /*!< DAC mode control register, Address offset: 0x3C */
+ __IO uint32_t SHSR1; /*!< DAC Sample and Hold sample time register 1, Address offset: 0x40 */
+ __IO uint32_t SHSR2; /*!< DAC Sample and Hold sample time register 2, Address offset: 0x44 */
+ __IO uint32_t SHHR; /*!< DAC Sample and Hold hold time register, Address offset: 0x48 */
+ __IO uint32_t SHRR; /*!< DAC Sample and Hold refresh time register, Address offset: 0x4C */
+ __IO uint32_t RESERVED[1];
+ __IO uint32_t AUTOCR; /*!< DAC Autonomous mode register, Address offset: 0x54 */
+} DAC_TypeDef;
+
+/**
+ * @brief Clock Recovery System
+ */
+typedef struct
+{
+__IO uint32_t CR; /*!< CRS ccontrol register, Address offset: 0x00 */
+__IO uint32_t CFGR; /*!< CRS configuration register, Address offset: 0x04 */
+__IO uint32_t ISR; /*!< CRS interrupt and status register, Address offset: 0x08 */
+__IO uint32_t ICR; /*!< CRS interrupt flag clear register, Address offset: 0x0C */
+} CRS_TypeDef;
+
+/**
+ * @brief AES hardware accelerator
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< AES control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< AES status register, Address offset: 0x04 */
+ __IO uint32_t DINR; /*!< AES data input register, Address offset: 0x08 */
+ __IO uint32_t DOUTR; /*!< AES data output register, Address offset: 0x0C */
+ __IO uint32_t KEYR0; /*!< AES key register 0, Address offset: 0x10 */
+ __IO uint32_t KEYR1; /*!< AES key register 1, Address offset: 0x14 */
+ __IO uint32_t KEYR2; /*!< AES key register 2, Address offset: 0x18 */
+ __IO uint32_t KEYR3; /*!< AES key register 3, Address offset: 0x1C */
+ __IO uint32_t IVR0; /*!< AES initialization vector register 0, Address offset: 0x20 */
+ __IO uint32_t IVR1; /*!< AES initialization vector register 1, Address offset: 0x24 */
+ __IO uint32_t IVR2; /*!< AES initialization vector register 2, Address offset: 0x28 */
+ __IO uint32_t IVR3; /*!< AES initialization vector register 3, Address offset: 0x2C */
+ __IO uint32_t KEYR4; /*!< AES key register 4, Address offset: 0x30 */
+ __IO uint32_t KEYR5; /*!< AES key register 5, Address offset: 0x34 */
+ __IO uint32_t KEYR6; /*!< AES key register 6, Address offset: 0x38 */
+ __IO uint32_t KEYR7; /*!< AES key register 7, Address offset: 0x3C */
+ __IO uint32_t SUSP0R; /*!< AES Suspend register 0, Address offset: 0x40 */
+ __IO uint32_t SUSP1R; /*!< AES Suspend register 1, Address offset: 0x44 */
+ __IO uint32_t SUSP2R; /*!< AES Suspend register 2, Address offset: 0x48 */
+ __IO uint32_t SUSP3R; /*!< AES Suspend register 3, Address offset: 0x4C */
+ __IO uint32_t SUSP4R; /*!< AES Suspend register 4, Address offset: 0x50 */
+ __IO uint32_t SUSP5R; /*!< AES Suspend register 5, Address offset: 0x54 */
+ __IO uint32_t SUSP6R; /*!< AES Suspend register 6, Address offset: 0x58 */
+ __IO uint32_t SUSP7R; /*!< AES Suspend register 7, Address offset: 0x5C */
+ uint32_t RESERVED1[168];/*!< Reserved, Address offset: 0x60 -- 0x2FC */
+ __IO uint32_t IER; /*!< AES Interrupt Enable Register, Address offset: 0x300 */
+ __IO uint32_t ISR; /*!< AES Interrupt Status Register, Address offset: 0x304 */
+ __IO uint32_t ICR; /*!< AES Interrupt Clear Register, Address offset: 0x308 */
+} AES_TypeDef;
+
+/**
+ * @brief HASH
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< HASH control register, Address offset: 0x00 */
+ __IO uint32_t DIN; /*!< HASH data input register, Address offset: 0x04 */
+ __IO uint32_t STR; /*!< HASH start register, Address offset: 0x08 */
+ __IO uint32_t HR[5]; /*!< HASH digest registers, Address offset: 0x0C-0x1C */
+ __IO uint32_t IMR; /*!< HASH interrupt enable register, Address offset: 0x20 */
+ __IO uint32_t SR; /*!< HASH status register, Address offset: 0x24 */
+ uint32_t RESERVED[52]; /*!< Reserved, 0x28-0xF4 */
+ __IO uint32_t CSR[103]; /*!< HASH context swap registers, Address offset: 0x0F8-0x290 */
+} HASH_TypeDef;
+
+/**
+ * @brief HASH_DIGEST
+ */
+typedef struct
+{
+ __IO uint32_t HR[16]; /*!< HASH digest registers, Address offset: 0x310-0x34C */
+} HASH_DIGEST_TypeDef;
+
+/**
+ * @brief RNG
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */
+ __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */
+ __IO uint32_t HTCR; /*!< RNG health test configuration register, Address offset: 0x10 */
+} RNG_TypeDef;
+
+/**
+ * @brief Debug MCU
+ */
+typedef struct
+{
+ __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */
+ __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */
+ __IO uint32_t APB1FZR1; /*!< Debug MCU APB1 freeze register 1, Address offset: 0x08 */
+ __IO uint32_t APB1FZR2; /*!< Debug MCU APB1 freeze register 2, Address offset: 0x0C */
+ __IO uint32_t APB2FZR; /*!< Debug MCU APB2 freeze register, Address offset: 0x10 */
+ __IO uint32_t APB3FZR; /*!< Debug MCU APB3 freeze register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, 0x18 - 0x1C */
+ __IO uint32_t AHB1FZR; /*!< Debug MCU AHB1 freeze register, Address offset: 0x20 */
+ uint32_t RESERVED2[54]; /*!< Reserved, 0x24 - 0xF8 */
+ __IO uint32_t SR; /*!< Debug MCU SR register, Address offset: 0xFC */
+ __IO uint32_t DBG_AUTH_HOST; /*!< Debug DBG_AUTH_HOST register, Address offset: 0x100 */
+ __IO uint32_t DBG_AUTH_DEV; /*!< Debug DBG_AUTH_DEV register, Address offset: 0x104 */
+ __IO uint32_t DBG_AUTH_ACK; /*!< Debug DBG_AUTH_ACK register, Address offset: 0x108 */
+ uint32_t RESERVED3[945]; /*!< Reserved, 0x10C - 0xFCC */
+ __IO uint32_t PIDR4; /*!< Debug MCU Peripheral ID register 4, Address offset: 0xFD0 */
+ __IO uint32_t PIDR5; /*!< Debug MCU Peripheral ID register 5, Address offset: 0xFD4 */
+ __IO uint32_t PIDR6; /*!< Debug MCU Peripheral ID register 6, Address offset: 0xFD8 */
+ __IO uint32_t PIDR7; /*!< Debug MCU Peripheral ID register 7, Address offset: 0xFDC */
+ __IO uint32_t PIDR0; /*!< Debug MCU Peripheral ID register 0, Address offset: 0xFE0 */
+ __IO uint32_t PIDR1; /*!< Debug MCU Peripheral ID register 1, Address offset: 0xFE4 */
+ __IO uint32_t PIDR2; /*!< Debug MCU Peripheral ID register 2, Address offset: 0xFE8 */
+ __IO uint32_t PIDR3; /*!< Debug MCU Peripheral ID register 3, Address offset: 0xFEC */
+ __IO uint32_t CIDR0; /*!< Debug MCU Component ID register 0, Address offset: 0xFF0 */
+ __IO uint32_t CIDR1; /*!< Debug MCU Component ID register 1, Address offset: 0xFF4 */
+ __IO uint32_t CIDR2; /*!< Debug MCU Component ID register 2, Address offset: 0xFF8 */
+ __IO uint32_t CIDR3; /*!< Debug MCU Component ID register 3, Address offset: 0xFFC */
+} DBGMCU_TypeDef;
+
+/**
+ * @brief DCMI
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DCMI control register 1, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< DCMI status register, Address offset: 0x04 */
+ __IO uint32_t RISR; /*!< DCMI raw interrupt status register, Address offset: 0x08 */
+ __IO uint32_t IER; /*!< DCMI interrupt enable register, Address offset: 0x0C */
+ __IO uint32_t MISR; /*!< DCMI masked interrupt status register, Address offset: 0x10 */
+ __IO uint32_t ICR; /*!< DCMI interrupt clear register, Address offset: 0x14 */
+ __IO uint32_t ESCR; /*!< DCMI embedded synchronization code register, Address offset: 0x18 */
+ __IO uint32_t ESUR; /*!< DCMI embedded synchronization unmask register, Address offset: 0x1C */
+ __IO uint32_t CWSTRTR; /*!< DCMI crop window start, Address offset: 0x20 */
+ __IO uint32_t CWSIZER; /*!< DCMI crop window size, Address offset: 0x24 */
+ __IO uint32_t DR; /*!< DCMI data register, Address offset: 0x28 */
+} DCMI_TypeDef;
+
+/**
+ * @brief PSSI
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< PSSI control register, Address offset: 0x000 */
+ __IO uint32_t SR; /*!< PSSI status register, Address offset: 0x004 */
+ __IO uint32_t RIS; /*!< PSSI raw interrupt status register, Address offset: 0x008 */
+ __IO uint32_t IER; /*!< PSSI interrupt enable register, Address offset: 0x00C */
+ __IO uint32_t MIS; /*!< PSSI masked interrupt status register, Address offset: 0x010 */
+ __IO uint32_t ICR; /*!< PSSI interrupt clear register, Address offset: 0x014 */
+ __IO uint32_t RESERVED1[4]; /*!< Reserved, 0x018 - 0x024 */
+ __IO uint32_t DR; /*!< PSSI data register, Address offset: 0x028 */
+} PSSI_TypeDef;
+
+/**
+ * @brief DMA Controller
+ */
+typedef struct
+{
+ __IO uint32_t SECCFGR; /*!< DMA secure configuration register, Address offset: 0x00 */
+ __IO uint32_t PRIVCFGR; /*!< DMA privileged configuration register, Address offset: 0x04 */
+ __IO uint32_t RCFGLOCKR; /*!< DMA lock configuration register, Address offset: 0x08 */
+ __IO uint32_t MISR; /*!< DMA non secure masked interrupt status register, Address offset: 0x0C */
+ __IO uint32_t SMISR; /*!< DMA secure masked interrupt status register, Address offset: 0x10 */
+} DMA_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CLBAR; /*!< DMA channel x linked-list base address register, Address offset: 0x50 + (x * 0x80) */
+ uint32_t RESERVED1[2]; /*!< Reserved 1, Address offset: 0x54 -- 0x58 */
+ __IO uint32_t CFCR; /*!< DMA channel x flag clear register, Address offset: 0x5C + (x * 0x80) */
+ __IO uint32_t CSR; /*!< DMA channel x flag status register, Address offset: 0x60 + (x * 0x80) */
+ __IO uint32_t CCR; /*!< DMA channel x control register, Address offset: 0x64 + (x * 0x80) */
+ uint32_t RESERVED2[10];/*!< Reserved 2, Address offset: 0x68 -- 0x8C */
+ __IO uint32_t CTR1; /*!< DMA channel x transfer register 1, Address offset: 0x90 + (x * 0x80) */
+ __IO uint32_t CTR2; /*!< DMA channel x transfer register 2, Address offset: 0x94 + (x * 0x80) */
+ __IO uint32_t CBR1; /*!< DMA channel x block register 1, Address offset: 0x98 + (x * 0x80) */
+ __IO uint32_t CSAR; /*!< DMA channel x source address register, Address offset: 0x9C + (x * 0x80) */
+ __IO uint32_t CDAR; /*!< DMA channel x destination address register, Address offset: 0xA0 + (x * 0x80) */
+ __IO uint32_t CTR3; /*!< DMA channel x transfer register 3, Address offset: 0xA4 + (x * 0x80) */
+ __IO uint32_t CBR2; /*!< DMA channel x block register 2, Address offset: 0xA8 + (x * 0x80) */
+ uint32_t RESERVED3[8]; /*!< Reserved 3, Address offset: 0xAC -- 0xC8 */
+ __IO uint32_t CLLR; /*!< DMA channel x linked-list address register, Address offset: 0xCC + (x * 0x80) */
+} DMA_Channel_TypeDef;
+
+
+/**
+ * @brief Asynch Interrupt/Event Controller (EXTI)
+ */
+typedef struct
+{
+ __IO uint32_t RTSR1; /*!< EXTI Rising Trigger Selection Register 1, Address offset: 0x00 */
+ __IO uint32_t FTSR1; /*!< EXTI Falling Trigger Selection Register 1, Address offset: 0x04 */
+ __IO uint32_t SWIER1; /*!< EXTI Software Interrupt event Register 1, Address offset: 0x08 */
+ __IO uint32_t RPR1; /*!< EXTI Rising Pending Register 1, Address offset: 0x0C */
+ __IO uint32_t FPR1; /*!< EXTI Falling Pending Register 1, Address offset: 0x10 */
+ __IO uint32_t SECCFGR1; /*!< EXTI Security Configuration Register 1, Address offset: 0x14 */
+ __IO uint32_t PRIVCFGR1; /*!< EXTI Privilege Configuration Register 1, Address offset: 0x18 */
+ uint32_t RESERVED1; /*!< Reserved 1, Address offset: 0x1C */
+ __IO uint32_t RTSR2; /*!< EXTI Rising Trigger Selection Register 2, Address offset: 0x20 */
+ __IO uint32_t FTSR2; /*!< EXTI Falling Trigger Selection Register 2, Address offset: 0x24 */
+ __IO uint32_t SWIER2; /*!< EXTI Software Interrupt event Register 2, Address offset: 0x28 */
+ __IO uint32_t RPR2; /*!< EXTI Rising Pending Register 2, Address offset: 0x2C */
+ __IO uint32_t FPR2; /*!< EXTI Falling Pending Register 2, Address offset: 0x30 */
+ __IO uint32_t SECCFGR2; /*!< EXTI Security Configuration Register 2, Address offset: 0x34 */
+ __IO uint32_t PRIVCFGR2; /*!< EXTI Privilege Configuration Register 2, Address offset: 0x38 */
+ uint32_t RESERVED2[9]; /*!< Reserved 2, 0x3C-- 0x5C */
+ __IO uint32_t EXTICR[4]; /*!< EXIT External Interrupt Configuration Register, 0x60 -- 0x6C */
+ __IO uint32_t LOCKR; /*!< EXTI Lock Register, Address offset: 0x70 */
+ uint32_t RESERVED3[3]; /*!< Reserved 3, 0x74 -- 0x7C */
+ __IO uint32_t IMR1; /*!< EXTI Interrupt Mask Register 1, Address offset: 0x80 */
+ __IO uint32_t EMR1; /*!< EXTI Event Mask Register 1, Address offset: 0x84 */
+ uint32_t RESERVED4[2]; /*!< Reserved 4, 0x88 -- 0x8C */
+ __IO uint32_t IMR2; /*!< EXTI Interrupt Mask Register 2, Address offset: 0x90 */
+ __IO uint32_t EMR2; /*!< EXTI Event Mask Register 2, Address offset: 0x94 */
+} EXTI_TypeDef;
+
+/**
+ * @brief FLASH Registers
+ */
+typedef struct
+{
+ __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */
+ __IO uint32_t NSKEYR; /*!< FLASH non-secure key register, Address offset: 0x04 */
+ __IO uint32_t SECKEYR; /*!< FLASH secure key register, Address offset: 0x08 */
+ __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x0C */
+ __IO uint32_t NSOBKKEYR; /*!< FLASH non-secure option bytes keys key register, Address offset: 0x10 */
+ __IO uint32_t SECOBKKEYR; /*!< FLASH secure option bytes keys key register, Address offset: 0x14 */
+ __IO uint32_t OPSR; /*!< FLASH OPSR register, Address offset: 0x18 */
+ __IO uint32_t OPTCR; /*!< Flash Option Control Register, Address offset: 0x1C */
+ __IO uint32_t NSSR; /*!< FLASH non-secure status register, Address offset: 0x20 */
+ __IO uint32_t SECSR; /*!< FLASH secure status register, Address offset: 0x24 */
+ __IO uint32_t NSCR; /*!< FLASH non-secure control register, Address offset: 0x28 */
+ __IO uint32_t SECCR; /*!< FLASH secure control register, Address offset: 0x2C */
+ __IO uint32_t NSCCR; /*!< FLASH non-secure clear control register, Address offset: 0x30 */
+ __IO uint32_t SECCCR; /*!< FLASH secure clear control register, Address offset: 0x34 */
+ uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x38 */
+ __IO uint32_t PRIVCFGR; /*!< FLASH privilege configuration register, Address offset: 0x3C */
+ __IO uint32_t NSOBKCFGR; /*!< FLASH non-secure option byte key configuration register, Address offset: 0x40 */
+ __IO uint32_t SECOBKCFGR; /*!< FLASH secure option byte key configuration register, Address offset: 0x44 */
+ __IO uint32_t HDPEXTR; /*!< FLASH HDP extension register, Address offset: 0x48 */
+ uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x4C */
+ __IO uint32_t OPTSR_CUR; /*!< FLASH option status current register, Address offset: 0x50 */
+ __IO uint32_t OPTSR_PRG; /*!< FLASH option status to program register, Address offset: 0x54 */
+ uint32_t RESERVED3[2]; /*!< Reserved3, Address offset: 0x58-0x5C */
+ __IO uint32_t NSEPOCHR_CUR; /*!< FLASH non-secure epoch current register, Address offset: 0x60 */
+ __IO uint32_t NSEPOCHR_PRG; /*!< FLASH non-secure epoch to program register, Address offset: 0x64 */
+ __IO uint32_t SECEPOCHR_CUR; /*!< FLASH secure epoch current register, Address offset: 0x68 */
+ __IO uint32_t SECEPOCHR_PRG; /*!< FLASH secure epoch to program register, Address offset: 0x6C */
+ __IO uint32_t OPTSR2_CUR; /*!< FLASH option status current register 2, Address offset: 0x70 */
+ __IO uint32_t OPTSR2_PRG; /*!< FLASH option status to program register 2, Address offset: 0x74 */
+ uint32_t RESERVED4[2]; /*!< Reserved4, Address offset: 0x78-0x7C */
+ __IO uint32_t NSBOOTR_CUR; /*!< FLASH non-secure unique boot entry current register, Address offset: 0x80 */
+ __IO uint32_t NSBOOTR_PRG; /*!< FLASH non-secure unique boot entry to program register, Address offset: 0x84 */
+ __IO uint32_t SECBOOTR_CUR; /*!< FLASH secure unique boot entry current register, Address offset: 0x88 */
+ __IO uint32_t SECBOOTR_PRG; /*!< FLASH secure unique boot entry to program register, Address offset: 0x8C */
+ __IO uint32_t OTPBLR_CUR; /*!< FLASH OTP block lock current register, Address offset: 0x90 */
+ __IO uint32_t OTPBLR_PRG; /*!< FLASH OTP block Lock to program register, Address offset: 0x94 */
+ uint32_t RESERVED5[2]; /*!< Reserved5, Address offset: 0x98-0x9C */
+ __IO uint32_t SECBB1R1; /*!< FLASH secure block-based bank 1 register 1, Address offset: 0xA0 */
+ uint32_t RESERVED6[7]; /*!< Reserved6, Address offset: 0xA4-0xBF */
+ __IO uint32_t PRIVBB1R1; /*!< FLASH privilege block-based bank 1 register 1, Address offset: 0xC0 */
+ uint32_t RESERVED7[7]; /*!< Reserved7, Address offset: 0xC4-0xDC */
+ __IO uint32_t SECWM1R_CUR; /*!< FLASH secure watermark 1 current register, Address offset: 0xE0 */
+ __IO uint32_t SECWM1R_PRG; /*!< FLASH secure watermark 1 to program register, Address offset: 0xE4 */
+ __IO uint32_t WRP1R_CUR; /*!< FLASH write sector group protection current register for bank1, Address offset: 0xE8 */
+ __IO uint32_t WRP1R_PRG; /*!< FLASH write sector group protection to program register for bank1, Address offset: 0xEC */
+ __IO uint32_t EDATA1R_CUR; /*!< FLASH data sectors configuration current register for bank1, Address offset: 0xF0 */
+ __IO uint32_t EDATA1R_PRG; /*!< FLASH data sectors configuration to program register for bank1, Address offset: 0xF4 */
+ __IO uint32_t HDP1R_CUR; /*!< FLASH HDP configuration current register for bank1, Address offset: 0xF8 */
+ __IO uint32_t HDP1R_PRG; /*!< FLASH HDP configuration to program register for bank1, Address offset: 0xFC */
+ __IO uint32_t ECCCORR; /*!< FLASH ECC correction register, Address offset: 0x100 */
+ __IO uint32_t ECCDETR; /*!< FLASH ECC detection register, Address offset: 0x104 */
+ __IO uint32_t ECCDR; /*!< FLASH ECC data register, Address offset: 0x108 */
+ uint32_t RESERVED8[37]; /*!< Reserved8, Address offset: 0x10C-0x19C */
+ __IO uint32_t SECBB2R1; /*!< FLASH secure block-based bank 2 register 1, Address offset: 0x1A0 */
+ uint32_t RESERVED9[7]; /*!< Reserved9, Address offset: 0x1A4-0x1BF */
+ __IO uint32_t PRIVBB2R1; /*!< FLASH privilege block-based bank 2 register 1, Address offset: 0x1C0 */
+ uint32_t RESERVED10[7]; /*!< Reserved10, Address offset: 0x1C4-0x1DC */
+ __IO uint32_t SECWM2R_CUR; /*!< FLASH secure watermark 2 current register, Address offset: 0x1E0 */
+ __IO uint32_t SECWM2R_PRG; /*!< FLASH secure watermark 2 to program register, Address offset: 0x1E4 */
+ __IO uint32_t WRP2R_CUR; /*!< FLASH write sector group protection current register for bank2, Address offset: 0x1E8 */
+ __IO uint32_t WRP2R_PRG; /*!< FLASH write sector group protection to program register for bank2, Address offset: 0x1EC */
+ __IO uint32_t EDATA2R_CUR; /*!< FLASH data sectors configuration current register for bank2, Address offset: 0x1F0 */
+ __IO uint32_t EDATA2R_PRG; /*!< FLASH data sectors configuration to program register for bank2, Address offset: 0x1F4 */
+ __IO uint32_t HDP2R_CUR; /*!< FLASH HDP configuration current register for bank2, Address offset: 0x1F8 */
+ __IO uint32_t HDP2R_PRG; /*!< FLASH HDP configuration to program register for bank2, Address offset: 0x1FC */
+} FLASH_TypeDef;
+
+/**
+ * @brief General Purpose I/O
+ */
+typedef struct
+{
+ __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */
+ __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */
+ __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */
+ __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */
+ __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */
+ __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */
+ __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */
+ __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */
+ __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */
+ __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */
+ __IO uint32_t HSLVR; /*!< GPIO high-speed low voltage register, Address offset: 0x2C */
+ __IO uint32_t SECCFGR; /*!< GPIO secure configuration register, Address offset: 0x30 */
+} GPIO_TypeDef;
+
+/**
+ * @brief Global TrustZone Controller
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< TZSC control register, Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved1, Address offset: 0x04-0x0C */
+ __IO uint32_t SECCFGR1; /*!< TZSC secure configuration register 1, Address offset: 0x10 */
+ __IO uint32_t SECCFGR2; /*!< TZSC secure configuration register 2, Address offset: 0x14 */
+ __IO uint32_t SECCFGR3; /*!< TZSC secure configuration register 3, Address offset: 0x18 */
+ uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x1C */
+ __IO uint32_t PRIVCFGR1; /*!< TZSC privilege configuration register 1, Address offset: 0x20 */
+ __IO uint32_t PRIVCFGR2; /*!< TZSC privilege configuration register 2, Address offset: 0x24 */
+ __IO uint32_t PRIVCFGR3; /*!< TZSC privilege configuration register 3, Address offset: 0x28 */
+ uint32_t RESERVED3[5]; /*!< Reserved3, Address offset: 0x2C-0x3C */
+ __IO uint32_t MPCWM1ACFGR; /*!< TZSC memory 1 sub-region A watermark configuration register, Address offset: 0x40 */
+ __IO uint32_t MPCWM1AR; /*!< TZSC memory 1 sub-region A watermark register, Address offset: 0x44 */
+ __IO uint32_t MPCWM1BCFGR; /*!< TZSC memory 1 sub-region B watermark configuration register, Address offset: 0x48 */
+ __IO uint32_t MPCWM1BR; /*!< TZSC memory 1 sub-region B watermark register, Address offset: 0x4C */
+ __IO uint32_t MPCWM2ACFGR; /*!< TZSC memory 2 sub-region A watermark configuration register, Address offset: 0x50 */
+ __IO uint32_t MPCWM2AR; /*!< TZSC memory 2 sub-region A watermark register, Address offset: 0x54 */
+ __IO uint32_t MPCWM2BCFGR; /*!< TZSC memory 2 sub-region B watermark configuration register, Address offset: 0x58 */
+ __IO uint32_t MPCWM2BR; /*!< TZSC memory 2 sub-region B watermark register, Address offset: 0x5C */
+ __IO uint32_t MPCWM3ACFGR; /*!< TZSC memory 3 sub-region A watermark configuration register, Address offset: 0x60 */
+ __IO uint32_t MPCWM3AR; /*!< TZSC memory 3 sub-region A watermark register, Address offset: 0x64 */
+ __IO uint32_t MPCWM3BCFGR; /*!< TZSC memory 3 sub-region B watermark configuration register, Address offset: 0x68 */
+ __IO uint32_t MPCWM3BR; /*!< TZSC memory 3 sub-region B watermark register, Address offset: 0x6C */
+ __IO uint32_t MPCWM4ACFGR; /*!< TZSC memory 4 sub-region A watermark configuration register, Address offset: 0x70 */
+ __IO uint32_t MPCWM4AR; /*!< TZSC memory 4 sub-region A watermark register, Address offset: 0x74 */
+ __IO uint32_t MPCWM4BCFGR; /*!< TZSC memory 4 sub-region B watermark configuration register, Address offset: 0x78 */
+ __IO uint32_t MPCWM4BR; /*!< TZSC memory 4 sub-region B watermark register, Address offset: 0x7c */
+} GTZC_TZSC_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< MPCBBx control register, Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved1, Address offset: 0x04-0x0C */
+ __IO uint32_t CFGLOCKR1; /*!< MPCBBx lock register, Address offset: 0x10 */
+ uint32_t RESERVED2[59]; /*!< Reserved2, Address offset: 0x14-0xFC */
+ __IO uint32_t SECCFGR[32]; /*!< MPCBBx security configuration registers, Address offset: 0x100-0x17C */
+ uint32_t RESERVED3[32]; /*!< Reserved3, Address offset: 0x180-0x1FC */
+ __IO uint32_t PRIVCFGR[32]; /*!< MPCBBx privilege configuration registers, Address offset: 0x200-0x280 */
+} GTZC_MPCBB_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t IER1; /*!< TZIC interrupt enable register 1, Address offset: 0x00 */
+ __IO uint32_t IER2; /*!< TZIC interrupt enable register 2, Address offset: 0x04 */
+ __IO uint32_t IER3; /*!< TZIC interrupt enable register 3, Address offset: 0x08 */
+ __IO uint32_t IER4; /*!< TZIC interrupt enable register 4, Address offset: 0x0C */
+ __IO uint32_t SR1; /*!< TZIC status register 1, Address offset: 0x10 */
+ __IO uint32_t SR2; /*!< TZIC status register 2, Address offset: 0x14 */
+ __IO uint32_t SR3; /*!< TZIC status register 3, Address offset: 0x18 */
+ __IO uint32_t SR4; /*!< TZIC status register 4, Address offset: 0x1C */
+ __IO uint32_t FCR1; /*!< TZIC flag clear register 1, Address offset: 0x20 */
+ __IO uint32_t FCR2; /*!< TZIC flag clear register 2, Address offset: 0x24 */
+ __IO uint32_t FCR3; /*!< TZIC flag clear register 3, Address offset: 0x28 */
+ __IO uint32_t FCR4; /*!< TZIC flag clear register 3, Address offset: 0x2C */
+} GTZC_TZIC_TypeDef;
+
+/**
+ * @brief Instruction Cache
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< ICACHE control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< ICACHE status register, Address offset: 0x04 */
+ __IO uint32_t IER; /*!< ICACHE interrupt enable register, Address offset: 0x08 */
+ __IO uint32_t FCR; /*!< ICACHE Flag clear register, Address offset: 0x0C */
+ __IO uint32_t HMONR; /*!< ICACHE hit monitor register, Address offset: 0x10 */
+ __IO uint32_t MMONR; /*!< ICACHE miss monitor register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x018-0x01C */
+ __IO uint32_t CRR0; /*!< ICACHE region 0 configuration register, Address offset: 0x20 */
+ __IO uint32_t CRR1; /*!< ICACHE region 1 configuration register, Address offset: 0x24 */
+ __IO uint32_t CRR2; /*!< ICACHE region 2 configuration register, Address offset: 0x28 */
+ __IO uint32_t CRR3; /*!< ICACHE region 3 configuration register, Address offset: 0x2C */
+} ICACHE_TypeDef;
+
+/**
+ * @brief Data Cache
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DCACHE control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< DCACHE status register, Address offset: 0x04 */
+ __IO uint32_t IER; /*!< DCACHE interrupt enable register, Address offset: 0x08 */
+ __IO uint32_t FCR; /*!< DCACHE Flag clear register, Address offset: 0x0C */
+ __IO uint32_t RHMONR; /*!< DCACHE Read hit monitor register, Address offset: 0x10 */
+ __IO uint32_t RMMONR; /*!< DCACHE Read miss monitor register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x18-0x1C */
+ __IO uint32_t WHMONR; /*!< DCACHE Write hit monitor register, Address offset: 0x20 */
+ __IO uint32_t WMMONR; /*!< DCACHE Write miss monitor register, Address offset: 0x24 */
+ __IO uint32_t CMDRSADDRR; /*!< DCACHE Command Start Address register, Address offset: 0x28 */
+ __IO uint32_t CMDREADDRR; /*!< DCACHE Command End Address register, Address offset: 0x2C */
+} DCACHE_TypeDef;
+
+/**
+ * @brief TIM
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */
+ __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */
+ __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */
+ __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */
+ __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */
+ __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */
+ __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */
+ __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */
+ __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */
+ __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */
+ __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */
+ __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */
+ __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */
+ __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */
+ __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */
+ __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */
+ __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */
+ __IO uint32_t CCR5; /*!< TIM capture/compare register 5, Address offset: 0x48 */
+ __IO uint32_t CCR6; /*!< TIM capture/compare register 6, Address offset: 0x4C */
+ __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x50 */
+ __IO uint32_t DTR2; /*!< TIM deadtime register 2, Address offset: 0x54 */
+ __IO uint32_t ECR; /*!< TIM encoder control register, Address offset: 0x58 */
+ __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x5C */
+ __IO uint32_t AF1; /*!< TIM alternate function option register 1, Address offset: 0x60 */
+ __IO uint32_t AF2; /*!< TIM alternate function option register 2, Address offset: 0x64 */
+ __IO uint32_t OR1 ; /*!< TIM option register, Address offset: 0x68 */
+ uint32_t RESERVED0[220];/*!< Reserved, Address offset: 0x6C */
+ __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x3DC */
+ __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x3E0 */
+} TIM_TypeDef;
+
+/**
+ * @brief LPTIMER
+ */
+typedef struct
+{
+ __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */
+ __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */
+ __IO uint32_t DIER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */
+ __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */
+ __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */
+ __IO uint32_t CCR1; /*!< LPTIM Capture/Compare register 1, Address offset: 0x14 */
+ __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */
+ __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */
+ __IO uint32_t RESERVED0; /*!< Reserved, Address offset: 0x20 */
+ __IO uint32_t CFGR2; /*!< LPTIM Configuration register 2, Address offset: 0x24 */
+ __IO uint32_t RCR; /*!< LPTIM Repetition register, Address offset: 0x28 */
+ __IO uint32_t CCMR1; /*!< LPTIM Capture/Compare mode register, Address offset: 0x2C */
+ __IO uint32_t RESERVED1; /*!< Reserved, Address offset: 0x30 */
+ __IO uint32_t CCR2; /*!< LPTIM Capture/Compare register 2, Address offset: 0x34 */
+} LPTIM_TypeDef;
+
+/**
+ * @brief OCTO Serial Peripheral Interface
+ */
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< OCTOSPI Control register, Address offset: 0x000 */
+ uint32_t RESERVED; /*!< Reserved, Address offset: 0x004 */
+ __IO uint32_t DCR1; /*!< OCTOSPI Device Configuration register 1, Address offset: 0x008 */
+ __IO uint32_t DCR2; /*!< OCTOSPI Device Configuration register 2, Address offset: 0x00C */
+ __IO uint32_t DCR3; /*!< OCTOSPI Device Configuration register 3, Address offset: 0x010 */
+ __IO uint32_t DCR4; /*!< OCTOSPI Device Configuration register 4, Address offset: 0x014 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x018-0x01C */
+ __IO uint32_t SR; /*!< OCTOSPI Status register, Address offset: 0x020 */
+ __IO uint32_t FCR; /*!< OCTOSPI Flag Clear register, Address offset: 0x024 */
+ uint32_t RESERVED2[6]; /*!< Reserved, Address offset: 0x028-0x03C */
+ __IO uint32_t DLR; /*!< OCTOSPI Data Length register, Address offset: 0x040 */
+ uint32_t RESERVED3; /*!< Reserved, Address offset: 0x044 */
+ __IO uint32_t AR; /*!< OCTOSPI Address register, Address offset: 0x048 */
+ uint32_t RESERVED4; /*!< Reserved, Address offset: 0x04C */
+ __IO uint32_t DR; /*!< OCTOSPI Data register, Address offset: 0x050 */
+ uint32_t RESERVED5[11]; /*!< Reserved, Address offset: 0x054-0x07C */
+ __IO uint32_t PSMKR; /*!< OCTOSPI Polling Status Mask register, Address offset: 0x080 */
+ uint32_t RESERVED6; /*!< Reserved, Address offset: 0x084 */
+ __IO uint32_t PSMAR; /*!< OCTOSPI Polling Status Match register, Address offset: 0x088 */
+ uint32_t RESERVED7; /*!< Reserved, Address offset: 0x08C */
+ __IO uint32_t PIR; /*!< OCTOSPI Polling Interval register, Address offset: 0x090 */
+ uint32_t RESERVED8[27]; /*!< Reserved, Address offset: 0x094-0x0FC */
+ __IO uint32_t CCR; /*!< OCTOSPI Communication Configuration register, Address offset: 0x100 */
+ uint32_t RESERVED9; /*!< Reserved, Address offset: 0x104 */
+ __IO uint32_t TCR; /*!< OCTOSPI Timing Configuration register, Address offset: 0x108 */
+ uint32_t RESERVED10; /*!< Reserved, Address offset: 0x10C */
+ __IO uint32_t IR; /*!< OCTOSPI Instruction register, Address offset: 0x110 */
+ uint32_t RESERVED11[3]; /*!< Reserved, Address offset: 0x114-0x11C */
+ __IO uint32_t ABR; /*!< OCTOSPI Alternate Bytes register, Address offset: 0x120 */
+ uint32_t RESERVED12[3]; /*!< Reserved, Address offset: 0x124-0x12C */
+ __IO uint32_t LPTR; /*!< OCTOSPI Low Power Timeout register, Address offset: 0x130 */
+ uint32_t RESERVED13[3]; /*!< Reserved, Address offset: 0x134-0x13C */
+ __IO uint32_t WPCCR; /*!< OCTOSPI Wrap Communication Configuration register, Address offset: 0x140 */
+ uint32_t RESERVED14; /*!< Reserved, Address offset: 0x144 */
+ __IO uint32_t WPTCR; /*!< OCTOSPI Wrap Timing Configuration register, Address offset: 0x148 */
+ uint32_t RESERVED15; /*!< Reserved, Address offset: 0x14C */
+ __IO uint32_t WPIR; /*!< OCTOSPI Wrap Instruction register, Address offset: 0x150 */
+ uint32_t RESERVED16[3]; /*!< Reserved, Address offset: 0x154-0x15C */
+ __IO uint32_t WPABR; /*!< OCTOSPI Wrap Alternate Bytes register, Address offset: 0x160 */
+ uint32_t RESERVED17[7]; /*!< Reserved, Address offset: 0x164-0x17C */
+ __IO uint32_t WCCR; /*!< OCTOSPI Write Communication Configuration register, Address offset: 0x180 */
+ uint32_t RESERVED18; /*!< Reserved, Address offset: 0x184 */
+ __IO uint32_t WTCR; /*!< OCTOSPI Write Timing Configuration register, Address offset: 0x188 */
+ uint32_t RESERVED19; /*!< Reserved, Address offset: 0x18C */
+ __IO uint32_t WIR; /*!< OCTOSPI Write Instruction register, Address offset: 0x190 */
+ uint32_t RESERVED20[3]; /*!< Reserved, Address offset: 0x194-0x19C */
+ __IO uint32_t WABR; /*!< OCTOSPI Write Alternate Bytes register, Address offset: 0x1A0 */
+ uint32_t RESERVED21[23]; /*!< Reserved, Address offset: 0x1A4-0x1FC */
+ __IO uint32_t HLCR; /*!< OCTOSPI Hyperbus Latency Configuration register, Address offset: 0x200 */
+} XSPI_TypeDef;
+
+typedef XSPI_TypeDef OCTOSPI_TypeDef;
+/**
+ * @brief OTFDEC register
+ */
+typedef struct
+{
+ __IO uint32_t REG_CONFIGR; /*!< OTFDEC Region Configuration register, Address offset: 0x20 + 0x30 * (x -1) (x = 1 to 4) */
+ __IO uint32_t REG_START_ADDR; /*!< OTFDEC Region Start Address register, Address offset: 0x24 + 0x30 * (x -1) (x = 1 to 4) */
+ __IO uint32_t REG_END_ADDR; /*!< OTFDEC Region End Address register, Address offset: 0x28 + 0x30 * (x -1) (x = 1 to 4) */
+ __IO uint32_t REG_NONCER0; /*!< OTFDEC Region Nonce register 0, Address offset: 0x2C + 0x30 * (x -1) (x = 1 to 4) */
+ __IO uint32_t REG_NONCER1; /*!< OTFDEC Region Nonce register 1, Address offset: 0x30 + 0x30 * (x -1) (x = 1 to 4) */
+ __IO uint32_t REG_KEYR0; /*!< OTFDEC Region Key register 0, Address offset: 0x34 + 0x30 * (x -1) (x = 1 to 4) */
+ __IO uint32_t REG_KEYR1; /*!< OTFDEC Region Key register 1, Address offset: 0x38 + 0x30 * (x -1) (x = 1 to 4) */
+ __IO uint32_t REG_KEYR2; /*!< OTFDEC Region Key register 2, Address offset: 0x3C + 0x30 * (x -1) (x = 1 to 4) */
+ __IO uint32_t REG_KEYR3; /*!< OTFDEC Region Key register 3, Address offset: 0x40 + 0x30 * (x -1) (x = 1 to 4) */
+} OTFDEC_Region_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< OTFDEC Control register, Address offset: 0x000 */
+ uint32_t RESERVED1[3]; /*!< Reserved, Address offset: 0x004-0x00C */
+ __IO uint32_t PRIVCFGR; /*!< OTFDEC Privileged access control Configuration register, Address offset: 0x010 */
+ uint32_t RESERVED2[187]; /*!< Reserved, Address offset: 0x014-0x2FC */
+ __IO uint32_t ISR; /*!< OTFDEC Interrupt Status register, Address offset: 0x300 */
+ __IO uint32_t ICR; /*!< OTFDEC Interrupt Clear register, Address offset: 0x304 */
+ __IO uint32_t IER; /*!< OTFDEC Interrupt Enable register, Address offset: 0x308 */
+} OTFDEC_TypeDef;
+
+
+/**
+ * @brief Power Control
+ */
+typedef struct
+{
+ __IO uint32_t PMCR; /*!< Power mode control register , Address offset: 0x00 */
+ __IO uint32_t PMSR; /*!< Power mode status register , Address offset: 0x04 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x08-0x0C */
+ __IO uint32_t VOSCR; /*!< Voltage scaling control register , Address offset: 0x10 */
+ __IO uint32_t VOSSR; /*!< Voltage sacling status register , Address offset: 0x14 */
+ uint32_t RESERVED2[2]; /*!< Reserved, Address offset: 0x18-0x1C */
+ __IO uint32_t BDCR; /*!< BacKup domain control register , Address offset: 0x20 */
+ __IO uint32_t DBPCR; /*!< DBP control register, Address offset: 0x24 */
+ __IO uint32_t BDSR; /*!< BacKup domain status register, Address offset: 0x28 */
+ __IO uint32_t UCPDR; /*!< Usb typeC and Power Delivery Register, Address offset: 0x2C */
+ __IO uint32_t SCCR; /*!< Supply configuration control register, Address offset: 0x30 */
+ __IO uint32_t VMCR; /*!< Voltage Monitor Control Register, Address offset: 0x34 */
+ __IO uint32_t USBSCR; /*!< USB Supply Control Register Address offset: 0x38 */
+ __IO uint32_t VMSR; /*!< Status Register Voltage Monitoring, Address offset: 0x3C */
+ __IO uint32_t WUSCR; /*!< WakeUP status clear register, Address offset: 0x40 */
+ __IO uint32_t WUSR; /*!< WakeUP status Register, Address offset: 0x44 */
+ __IO uint32_t WUCR; /*!< WakeUP configuration register, Address offset: 0x48 */
+ uint32_t RESERVED3; /*!< Reserved, Address offset: 0x4C */
+ __IO uint32_t IORETR; /*!< IO RETention Register, Address offset: 0x50 */
+ uint32_t RESERVED4[43];/*!< Reserved, Address offset: 0x54-0xFC */
+ __IO uint32_t SECCFGR; /*!< Security configuration register, Address offset: 0x100 */
+ __IO uint32_t PRIVCFGR; /*!< Privilege configuration register, Address offset: 0x104 */
+}PWR_TypeDef;
+
+/**
+ * @brief SRAMs configuration controller
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< Control Register, Address offset: 0x00 */
+ __IO uint32_t IER; /*!< Interrupt Enable Register, Address offset: 0x04 */
+ __IO uint32_t ISR; /*!< Interrupt Status Register, Address offset: 0x08 */
+ __IO uint32_t SEAR; /*!< ECC Single Error Address Register, Address offset: 0x0C */
+ __IO uint32_t DEAR; /*!< ECC Double Error Address Register, Address offset: 0x10 */
+ __IO uint32_t ICR; /*!< Interrupt Clear Register, Address offset: 0x14 */
+ __IO uint32_t WPR1; /*!< SRAM Write Protection Register 1, Address offset: 0x18 */
+ __IO uint32_t WPR2; /*!< SRAM Write Protection Register 2, Address offset: 0x1C */
+ __IO uint32_t WPR3; /*!< SRAM Write Protection Register 3, Address offset: 0x20 */
+ __IO uint32_t ECCKEY; /*!< SRAM ECC Key Register, Address offset: 0x24 */
+ __IO uint32_t ERKEYR; /*!< SRAM Erase Key Register, Address offset: 0x28 */
+}RAMCFG_TypeDef;
+
+/**
+ * @brief Reset and Clock Control
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< RCC clock control register Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved, Address offset: 0x04 */
+ __IO uint32_t HSICFGR; /*!< RCC HSI Clock Calibration Register, Address offset: 0x10 */
+ __IO uint32_t CRRCR; /*!< RCC Clock Recovery RC Register, Address offset: 0x14 */
+ __IO uint32_t CSICFGR; /*!< RCC CSI Clock Calibration Register, Address offset: 0x18 */
+ __IO uint32_t CFGR1; /*!< RCC clock configuration register 1 Address offset: 0x1C */
+ __IO uint32_t CFGR2; /*!< RCC clock configuration register 2 Address offset: 0x20 */
+ uint32_t RESERVED2; /*!< Reserved, Address offset: 0x24 */
+ __IO uint32_t PLL1CFGR; /*!< RCC PLL1 Configuration Register Address offset: 0x28 */
+ __IO uint32_t PLL2CFGR; /*!< RCC PLL2 Configuration Register Address offset: 0x2C */
+ __IO uint32_t PLL3CFGR; /*!< RCC PLL3 Configuration Register Address offset: 0x30 */
+ __IO uint32_t PLL1DIVR; /*!< RCC PLL1 Dividers Configuration Register Address offset: 0x34 */
+ __IO uint32_t PLL1FRACR; /*!< RCC PLL1 Fractional Divider Configuration Register Address offset: 0x38 */
+ __IO uint32_t PLL2DIVR; /*!< RCC PLL2 Dividers Configuration Register Address offset: 0x3C */
+ __IO uint32_t PLL2FRACR; /*!< RCC PLL2 Fractional Divider Configuration Register Address offset: 0x40 */
+ __IO uint32_t PLL3DIVR; /*!< RCC PLL3 Dividers Configuration Register Address offset: 0x44 */
+ __IO uint32_t PLL3FRACR; /*!< RCC PLL3 Fractional Divider Configuration Register Address offset: 0x48 */
+ uint32_t RESERVED5; /*!< Reserved Address offset: 0x4C */
+ __IO uint32_t CIER; /*!< RCC Clock Interrupt Enable Register Address offset: 0x50 */
+ __IO uint32_t CIFR; /*!< RCC Clock Interrupt Flag Register Address offset: 0x54 */
+ __IO uint32_t CICR; /*!< RCC Clock Interrupt Clear Register Address offset: 0x58 */
+ uint32_t RESERVED6; /*!< Reserved Address offset: 0x5C */
+ __IO uint32_t AHB1RSTR; /*!< RCC AHB1 Peripherals Reset Register Address offset: 0x60 */
+ __IO uint32_t AHB2RSTR; /*!< RCC AHB2 Peripherals Reset Register Address offset: 0x64 */
+ uint32_t RESERVED7; /*!< Reserved Address offset: 0x68 */
+ __IO uint32_t AHB4RSTR; /*!< RCC AHB4 Peripherals Reset Register Address offset: 0x6C */
+ uint32_t RESERVED9; /*!< Reserved Address offset: 0x70 */
+ __IO uint32_t APB1LRSTR; /*!< RCC APB1 Peripherals reset Low Word register Address offset: 0x74 */
+ __IO uint32_t APB1HRSTR; /*!< RCC APB1 Peripherals reset High Word register Address offset: 0x78 */
+ __IO uint32_t APB2RSTR; /*!< RCC APB2 Peripherals Reset Register Address offset: 0x7C */
+ __IO uint32_t APB3RSTR; /*!< RCC APB3 Peripherals Reset Register Address offset: 0x80 */
+ uint32_t RESERVED10; /*!< Reserved Address offset: 0x84 */
+ __IO uint32_t AHB1ENR; /*!< RCC AHB1 Peripherals Clock Enable Register Address offset: 0x88 */
+ __IO uint32_t AHB2ENR; /*!< RCC AHB2 Peripherals Clock Enable Register Address offset: 0x8C */
+ uint32_t RESERVED11; /*!< Reserved Address offset: 0x90 */
+ __IO uint32_t AHB4ENR; /*!< RCC AHB4 Peripherals Clock Enable Register Address offset: 0x94 */
+ uint32_t RESERVED13; /*!< Reserved Address offset: 0x98 */
+ __IO uint32_t APB1LENR; /*!< RCC APB1 Peripherals clock Enable Low Word register Address offset: 0x9C */
+ __IO uint32_t APB1HENR; /*!< RCC APB1 Peripherals clock Enable High Word register Address offset: 0xA0 */
+ __IO uint32_t APB2ENR; /*!< RCC APB2 Peripherals Clock Enable Register Address offset: 0xA4 */
+ __IO uint32_t APB3ENR; /*!< RCC APB3 Peripherals Clock Enable Register Address offset: 0xA8 */
+ uint32_t RESERVED14; /*!< Reserved Address offset: 0xAC */
+ __IO uint32_t AHB1LPENR; /*!< RCC AHB1 Peripheral sleep clock Register Address offset: 0xB0 */
+ __IO uint32_t AHB2LPENR; /*!< RCC AHB2 Peripheral sleep clock Register Address offset: 0xB4 */
+ uint32_t RESERVED15; /*!< Reserved Address offset: 0xB8 */
+ __IO uint32_t AHB4LPENR; /*!< RCC AHB4 Peripherals sleep clock Register Address offset: 0xBC */
+ uint32_t RESERVED17; /*!< Reserved Address offset: 0xC0 */
+ __IO uint32_t APB1LLPENR; /*!< RCC APB1 Peripherals sleep clock Low Word Register Address offset: 0xC4 */
+ __IO uint32_t APB1HLPENR; /*!< RCC APB1 Peripherals sleep clock High Word Register Address offset: 0xC8 */
+ __IO uint32_t APB2LPENR; /*!< RCC APB2 Peripherals sleep clock Register Address offset: 0xCC */
+ __IO uint32_t APB3LPENR; /*!< RCC APB3 Peripherals Clock Low Power Enable Register Address offset: 0xD0 */
+ uint32_t RESERVED18; /*!< Reserved Address offset: 0xD4 */
+ __IO uint32_t CCIPR1; /*!< RCC IPs Clocks Configuration Register 1 Address offset: 0xD8 */
+ __IO uint32_t CCIPR2; /*!< RCC IPs Clocks Configuration Register 2 Address offset: 0xDC */
+ __IO uint32_t CCIPR3; /*!< RCC IPs Clocks Configuration Register 3 Address offset: 0xE0 */
+ __IO uint32_t CCIPR4; /*!< RCC IPs Clocks Configuration Register 4 Address offset: 0xE4 */
+ __IO uint32_t CCIPR5; /*!< RCC IPs Clocks Configuration Register 5 Address offset: 0xE8 */
+ uint32_t RESERVED19; /*!< Reserved, Address offset: 0xEC */
+ __IO uint32_t BDCR; /*!< RCC VSW Backup Domain & V33 Domain Control Register Address offset: 0xF0 */
+ __IO uint32_t RSR; /*!< RCC Reset status Register Address offset: 0xF4 */
+ uint32_t RESERVED20[6]; /*!< Reserved Address offset: 0xF8 */
+ __IO uint32_t SECCFGR; /*!< RCC Secure mode configuration register Address offset: 0x110 */
+ __IO uint32_t PRIVCFGR; /*!< RCC Privilege configuration register Address offset: 0x114 */
+} RCC_TypeDef;
+
+/**
+ * @brief PKA
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< PKA control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< PKA status register, Address offset: 0x04 */
+ __IO uint32_t CLRFR; /*!< PKA clear flag register, Address offset: 0x08 */
+ uint32_t Reserved[253]; /*!< Reserved memory area Address offset: 0x0C -> 0x03FC */
+ __IO uint32_t RAM[1334]; /*!< PKA RAM Address offset: 0x400 -> 0x18D4 */
+} PKA_TypeDef;
+
+/*
+* @brief RTC Specific device feature definitions
+*/
+#define RTC_BKP_NB 32U
+#define RTC_TAMP_NB 8U
+
+/**
+ * @brief Real-Time Clock
+ */
+typedef struct
+{
+ __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */
+ __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */
+ __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */
+ __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */
+ __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */
+ __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */
+ __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */
+ __IO uint32_t PRIVCFGR; /*!< RTC privilege mode control register, Address offset: 0x1C */
+ __IO uint32_t SECCFGR; /*!< RTC secure mode control register, Address offset: 0x20 */
+ __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */
+ __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */
+ __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */
+ __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */
+ __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */
+ __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */
+ uint32_t RESERVED0; /*!< Reserved, Address offset: 0x3C */
+ __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */
+ __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */
+ __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */
+ __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */
+ __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */
+ __IO uint32_t MISR; /*!< RTC masked interrupt status register, Address offset: 0x54 */
+ __IO uint32_t SMISR; /*!< RTC secure masked interrupt status register, Address offset: 0x58 */
+ __IO uint32_t SCR; /*!< RTC status Clear register, Address offset: 0x5C */
+ __IO uint32_t OR; /*!< RTC option register, Address offset: 0x60 */
+ uint32_t RESERVED1[3];/*!< Reserved, Address offset: 0x64 */
+ __IO uint32_t ALRABINR; /*!< RTC alarm A binary mode register, Address offset: 0x70 */
+ __IO uint32_t ALRBBINR; /*!< RTC alarm B binary mode register, Address offset: 0x74 */
+} RTC_TypeDef;
+
+/**
+ * @brief Tamper and backup registers
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< TAMP control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< TAMP control register 2, Address offset: 0x04 */
+ __IO uint32_t CR3; /*!< TAMP control register 3, Address offset: 0x08 */
+ __IO uint32_t FLTCR; /*!< TAMP filter control register, Address offset: 0x0C */
+ __IO uint32_t ATCR1; /*!< TAMP filter control register 1 Address offset: 0x10 */
+ __IO uint32_t ATSEEDR; /*!< TAMP active tamper seed register, Address offset: 0x14 */
+ __IO uint32_t ATOR; /*!< TAMP active tamper output register, Address offset: 0x18 */
+ __IO uint32_t ATCR2; /*!< TAMP filter control register 2, Address offset: 0x1C */
+ __IO uint32_t SECCFGR; /*!< TAMP secure mode control register, Address offset: 0x20 */
+ __IO uint32_t PRIVCFGR; /*!< TAMP privilege mode control register, Address offset: 0x24 */
+ uint32_t RESERVED0; /*!< Reserved, Address offset: 0x28 */
+ __IO uint32_t IER; /*!< TAMP interrupt enable register, Address offset: 0x2C */
+ __IO uint32_t SR; /*!< TAMP status register, Address offset: 0x30 */
+ __IO uint32_t MISR; /*!< TAMP masked interrupt status register, Address offset: 0x34 */
+ __IO uint32_t SMISR; /*!< TAMP secure masked interrupt status register, Address offset: 0x38 */
+ __IO uint32_t SCR; /*!< TAMP status clear register, Address offset: 0x3C */
+ __IO uint32_t COUNT1R; /*!< TAMP monotonic counter register, Address offset: 0x40 */
+ uint32_t RESERVED1[3];/*!< Reserved, Address offset: 0x44 -- 0x4C */
+ __IO uint32_t OR; /*!< TAMP option register, Address offset: 0x50 */
+ __IO uint32_t ERCFGR; /*!< TAMP erase configuration register, Address offset: 0x54 */
+ uint32_t RESERVED2[42];/*!< Reserved, Address offset: 0x58 -- 0xFC */
+ __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */
+ __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */
+ __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */
+ __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */
+ __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */
+ __IO uint32_t BKP5R; /*!< TAMP backup register 5, Address offset: 0x114 */
+ __IO uint32_t BKP6R; /*!< TAMP backup register 6, Address offset: 0x118 */
+ __IO uint32_t BKP7R; /*!< TAMP backup register 7, Address offset: 0x11C */
+ __IO uint32_t BKP8R; /*!< TAMP backup register 8, Address offset: 0x120 */
+ __IO uint32_t BKP9R; /*!< TAMP backup register 9, Address offset: 0x124 */
+ __IO uint32_t BKP10R; /*!< TAMP backup register 10, Address offset: 0x128 */
+ __IO uint32_t BKP11R; /*!< TAMP backup register 11, Address offset: 0x12C */
+ __IO uint32_t BKP12R; /*!< TAMP backup register 12, Address offset: 0x130 */
+ __IO uint32_t BKP13R; /*!< TAMP backup register 13, Address offset: 0x134 */
+ __IO uint32_t BKP14R; /*!< TAMP backup register 14, Address offset: 0x138 */
+ __IO uint32_t BKP15R; /*!< TAMP backup register 15, Address offset: 0x13C */
+ __IO uint32_t BKP16R; /*!< TAMP backup register 16, Address offset: 0x140 */
+ __IO uint32_t BKP17R; /*!< TAMP backup register 17, Address offset: 0x144 */
+ __IO uint32_t BKP18R; /*!< TAMP backup register 18, Address offset: 0x148 */
+ __IO uint32_t BKP19R; /*!< TAMP backup register 19, Address offset: 0x14C */
+ __IO uint32_t BKP20R; /*!< TAMP backup register 20, Address offset: 0x150 */
+ __IO uint32_t BKP21R; /*!< TAMP backup register 21, Address offset: 0x154 */
+ __IO uint32_t BKP22R; /*!< TAMP backup register 22, Address offset: 0x158 */
+ __IO uint32_t BKP23R; /*!< TAMP backup register 23, Address offset: 0x15C */
+ __IO uint32_t BKP24R; /*!< TAMP backup register 24, Address offset: 0x160 */
+ __IO uint32_t BKP25R; /*!< TAMP backup register 25, Address offset: 0x164 */
+ __IO uint32_t BKP26R; /*!< TAMP backup register 26, Address offset: 0x168 */
+ __IO uint32_t BKP27R; /*!< TAMP backup register 27, Address offset: 0x16C */
+ __IO uint32_t BKP28R; /*!< TAMP backup register 28, Address offset: 0x170 */
+ __IO uint32_t BKP29R; /*!< TAMP backup register 29, Address offset: 0x174 */
+ __IO uint32_t BKP30R; /*!< TAMP backup register 30, Address offset: 0x178 */
+ __IO uint32_t BKP31R; /*!< TAMP backup register 31, Address offset: 0x17C */
+} TAMP_TypeDef;
+
+/**
+ * @brief Universal Synchronous Asynchronous Receiver Transmitter
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */
+ __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */
+ __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */
+ __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */
+ __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */
+ __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */
+ __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */
+ __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */
+ __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */
+ __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */
+ __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */
+} USART_TypeDef;
+
+/**
+ * @brief System configuration, Boot and Security
+ */
+typedef struct
+{
+ uint32_t RESERVED1[4]; /*!< RESERVED1, Address offset: 0x00 - 0x0C */
+ __IO uint32_t HDPLCR; /*!< SBS HDPL Control Register, Address offset: 0x10 */
+ __IO uint32_t HDPLSR; /*!< SBS HDPL Status Register, Address offset: 0x14 */
+ __IO uint32_t NEXTHDPLCR; /*!< NEXT HDPL Control Register, Address offset: 0x18 */
+ __IO uint32_t RESERVED2; /*!< RESERVED2, Address offset: 0x1C */
+ __IO uint32_t DBGCR; /*!< SBS Debug Control Register, Address offset: 0x20 */
+ __IO uint32_t DBGLOCKR; /*!< SBS Debug Lock Register, Address offset: 0x24 */
+ uint32_t RESERVED3[3]; /*!< RESERVED3, Address offset: 0x28 - 0x30 */
+ __IO uint32_t RSSCMDR; /*!< SBS RSS Command Register, Address offset: 0x34 */
+ uint32_t RESERVED4[26]; /*!< RESERVED4, Address offset: 0x38 - 0x9C */
+ __IO uint32_t EPOCHSELCR; /*!< EPOCH Selection Register, Address offset: 0xA0 */
+ uint32_t RESERVED5[7]; /*!< RESERVED5, Address offset: 0xA4 - 0xBC */
+ __IO uint32_t SECCFGR; /*!< SBS Security Mode Configuration, Address offset: 0xC0 */
+ uint32_t RESERVED6[15]; /*!< RESERVED6, Address offset: 0xC4 - 0xFC */
+ __IO uint32_t PMCR; /*!< SBS Product Mode & Config Register, Address offset: 0x100 */
+ __IO uint32_t FPUIMR; /*!< SBS FPU Interrupt Mask Register, Address offset: 0x104 */
+ __IO uint32_t MESR; /*!< SBS Memory Erase Status Register, Address offset: 0x108 */
+ uint32_t RESERVED7; /*!< RESERVED7, Address offset: 0x10C */
+ __IO uint32_t CCCSR; /*!< SBS Compensation Cell Control & Status Register, Address offset: 0x110 */
+ __IO uint32_t CCVALR; /*!< SBS Compensation Cell Value Register, Address offset: 0x114 */
+ __IO uint32_t CCSWCR; /*!< SBS Compensation Cell for I/Os sw code Register, Address offset: 0x118 */
+ __IO uint32_t RESERVED8; /*!< RESERVED8, Address offset: 0x11C */
+ __IO uint32_t CFGR2; /*!< SBS Class B Register, Address offset: 0x120 */
+ uint32_t RESERVED9[8]; /*!< RESERVED9, Address offset: 0x124 - 0x140 */
+ __IO uint32_t CNSLCKR; /*!< SBS CPU Non-secure Lock Register, Address offset: 0x144 */
+ __IO uint32_t CSLCKR; /*!< SBS CPU Secure Lock Register, Address offset: 0x148 */
+ __IO uint32_t ECCNMIR; /*!< SBS FLITF ECC NMI MASK Register, Address offset: 0x14C */
+} SBS_TypeDef;
+
+/**
+ * @brief Secure digital input/output Interface
+ */
+typedef struct
+{
+ __IO uint32_t POWER; /*!< SDMMC power control register, Address offset: 0x00 */
+ __IO uint32_t CLKCR; /*!< SDMMC clock control register, Address offset: 0x04 */
+ __IO uint32_t ARG; /*!< SDMMC argument register, Address offset: 0x08 */
+ __IO uint32_t CMD; /*!< SDMMC command register, Address offset: 0x0C */
+ __I uint32_t RESPCMD; /*!< SDMMC command response register, Address offset: 0x10 */
+ __I uint32_t RESP1; /*!< SDMMC response 1 register, Address offset: 0x14 */
+ __I uint32_t RESP2; /*!< SDMMC response 2 register, Address offset: 0x18 */
+ __I uint32_t RESP3; /*!< SDMMC response 3 register, Address offset: 0x1C */
+ __I uint32_t RESP4; /*!< SDMMC response 4 register, Address offset: 0x20 */
+ __IO uint32_t DTIMER; /*!< SDMMC data timer register, Address offset: 0x24 */
+ __IO uint32_t DLEN; /*!< SDMMC data length register, Address offset: 0x28 */
+ __IO uint32_t DCTRL; /*!< SDMMC data control register, Address offset: 0x2C */
+ __I uint32_t DCOUNT; /*!< SDMMC data counter register, Address offset: 0x30 */
+ __I uint32_t STA; /*!< SDMMC status register, Address offset: 0x34 */
+ __IO uint32_t ICR; /*!< SDMMC interrupt clear register, Address offset: 0x38 */
+ __IO uint32_t MASK; /*!< SDMMC mask register, Address offset: 0x3C */
+ __IO uint32_t ACKTIME; /*!< SDMMC Acknowledgement timer register, Address offset: 0x40 */
+ uint32_t RESERVED0[3]; /*!< Reserved, 0x44 - 0x4C - 0x4C */
+ __IO uint32_t IDMACTRL; /*!< SDMMC DMA control register, Address offset: 0x50 */
+ __IO uint32_t IDMABSIZE; /*!< SDMMC DMA buffer size register, Address offset: 0x54 */
+ __IO uint32_t IDMABASER; /*!< SDMMC DMA buffer base address register, Address offset: 0x58 */
+ uint32_t RESERVED1[2]; /*!< Reserved, 0x60 */
+ __IO uint32_t IDMALAR; /*!< SDMMC DMA linked list address register, Address offset: 0x64 */
+ __IO uint32_t IDMABAR; /*!< SDMMC DMA linked list memory base register,Address offset: 0x68 */
+ uint32_t RESERVED2[5]; /*!< Reserved, 0x6C-0x7C */
+ __IO uint32_t FIFO; /*!< SDMMC data FIFO register, Address offset: 0x80 */
+} SDMMC_TypeDef;
+
+
+
+/**
+ * @brief Delay Block DLYB
+ */
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< DELAY BLOCK control register, Address offset: 0x00 */
+ __IO uint32_t CFGR; /*!< DELAY BLOCK configuration register, Address offset: 0x04 */
+} DLYB_TypeDef;
+
+/**
+ * @brief UCPD
+ */
+typedef struct
+{
+ __IO uint32_t CFG1; /*!< UCPD configuration register 1, Address offset: 0x00 */
+ __IO uint32_t CFG2; /*!< UCPD configuration register 2, Address offset: 0x04 */
+ __IO uint32_t CFG3; /*!< UCPD configuration register 3, Address offset: 0x08 */
+ __IO uint32_t CR; /*!< UCPD control register, Address offset: 0x0C */
+ __IO uint32_t IMR; /*!< UCPD interrupt mask register, Address offset: 0x10 */
+ __IO uint32_t SR; /*!< UCPD status register, Address offset: 0x14 */
+ __IO uint32_t ICR; /*!< UCPD interrupt flag clear register Address offset: 0x18 */
+ __IO uint32_t TX_ORDSET; /*!< UCPD Tx ordered set type register, Address offset: 0x1C */
+ __IO uint32_t TX_PAYSZ; /*!< UCPD Tx payload size register, Address offset: 0x20 */
+ __IO uint32_t TXDR; /*!< UCPD Tx data register, Address offset: 0x24 */
+ __IO uint32_t RX_ORDSET; /*!< UCPD Rx ordered set type register, Address offset: 0x28 */
+ __IO uint32_t RX_PAYSZ; /*!< UCPD Rx payload size register, Address offset: 0x2C */
+ __IO uint32_t RXDR; /*!< UCPD Rx data register, Address offset: 0x30 */
+ __IO uint32_t RX_ORDEXT1; /*!< UCPD Rx ordered set extension 1 register, Address offset: 0x34 */
+ __IO uint32_t RX_ORDEXT2; /*!< UCPD Rx ordered set extension 2 register, Address offset: 0x38 */
+ uint32_t RESERVED[949];/*!< Reserved, Address offset: 0x3C -- 0x3F0 */
+ __IO uint32_t IPVER; /*!< UCPD IP version register, Address offset: 0x3F4 */
+ __IO uint32_t IPID; /*!< UCPD IP Identification register, Address offset: 0x3F8 */
+ __IO uint32_t MID; /*!< UCPD Magic Identification register, Address offset: 0x3FC */
+} UCPD_TypeDef;
+
+/**
+ * @brief Universal Serial Bus Full Speed Dual Role Device
+ */
+typedef struct
+{
+ __IO uint32_t CHEP0R; /*!< USB Channel/Endpoint 0 register, Address offset: 0x00 */
+ __IO uint32_t CHEP1R; /*!< USB Channel/Endpoint 1 register, Address offset: 0x04 */
+ __IO uint32_t CHEP2R; /*!< USB Channel/Endpoint 2 register, Address offset: 0x08 */
+ __IO uint32_t CHEP3R; /*!< USB Channel/Endpoint 3 register, Address offset: 0x0C */
+ __IO uint32_t CHEP4R; /*!< USB Channel/Endpoint 4 register, Address offset: 0x10 */
+ __IO uint32_t CHEP5R; /*!< USB Channel/Endpoint 5 register, Address offset: 0x14 */
+ __IO uint32_t CHEP6R; /*!< USB Channel/Endpoint 6 register, Address offset: 0x18 */
+ __IO uint32_t CHEP7R; /*!< USB Channel/Endpoint 7 register, Address offset: 0x1C */
+ __IO uint32_t RESERVED0[8]; /*!< Reserved, */
+ __IO uint32_t CNTR; /*!< Control register, Address offset: 0x40 */
+ __IO uint32_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */
+ __IO uint32_t FNR; /*!< Frame number register, Address offset: 0x48 */
+ __IO uint32_t DADDR; /*!< Device address register, Address offset: 0x4C */
+ __IO uint32_t RESERVED1; /*!< Reserved */
+ __IO uint32_t LPMCSR; /*!< LPM Control and Status register, Address offset: 0x54 */
+ __IO uint32_t BCDR; /*!< Battery Charging detector register, Address offset: 0x58 */
+} USB_DRD_TypeDef;
+
+/**
+ * @brief Universal Serial Bus PacketMemoryArea Buffer Descriptor Table
+ */
+typedef struct
+{
+ __IO uint32_t TXBD; /*!= 6010050)
+ #pragma clang diagnostic pop
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning restore
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Address Map ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_Peripheral_peripheralAddr
+ * @{
+ */
+
+/* Internal SRAMs size */
+
+#define SRAM1_SIZE (0x20000UL) /*!< SRAM1=128k */
+#define SRAM2_SIZE (0x14000UL) /*!< SRAM2=80k */
+#define SRAM3_SIZE (0x10000UL) /*!< SRAM3=64k */
+#define BKPSRAM_SIZE (0x00800UL) /*!< BKPSRAM=2k */
+
+/* Flash, Peripheral and internal SRAMs base addresses - Non secure */
+#define FLASH_BASE_NS (0x08000000UL) /*!< FLASH (up to 512 KB) non-secure base address */
+#define SRAM1_BASE_NS (0x20000000UL) /*!< SRAM1 (128 KB) non-secure base address */
+#define SRAM2_BASE_NS (0x20020000UL) /*!< SRAM2 (80 KB) non-secure base address */
+#define SRAM3_BASE_NS (0x20034000UL) /*!< SRAM3 (64 KB) non-secure base address */
+#define PERIPH_BASE_NS (0x40000000UL) /*!< Peripheral non-secure base address */
+
+/* External memories base addresses - Not aliased */
+#define FMC_BASE (0x60000000UL) /*!< FMC base address */
+#define OCTOSPI1_BASE (0x90000000UL) /*!< OCTOSPI1 memories accessible over AHB base address */
+
+#define FMC_BANK1 FMC_BASE
+#define FMC_BANK1_1 FMC_BANK1
+#define FMC_BANK1_2 (FMC_BANK1 + 0x04000000UL) /*!< FMC Memory Bank1 for SRAM, NOR and PSRAM */
+#define FMC_BANK1_3 (FMC_BANK1 + 0x08000000UL)
+#define FMC_BANK1_4 (FMC_BANK1 + 0x0C000000UL)
+#define FMC_BANK3 (FMC_BASE + 0x20000000UL) /*!< FMC Memory Bank3 for NAND */
+#define FMC_SDRAM_BANK_1 (FMC_BASE + 0x60000000UL) /*!< FMC Memory SDRAM Bank1 */
+#define FMC_SDRAM_BANK_2 (FMC_BASE + 0x70000000UL) /*!< FMC Memory SDRAM Bank2 */
+
+
+/* Peripheral memory map - Non secure */
+#define APB1PERIPH_BASE_NS PERIPH_BASE_NS
+#define APB2PERIPH_BASE_NS (PERIPH_BASE_NS + 0x00010000UL)
+#define AHB1PERIPH_BASE_NS (PERIPH_BASE_NS + 0x00020000UL)
+#define AHB2PERIPH_BASE_NS (PERIPH_BASE_NS + 0x02020000UL)
+#define APB3PERIPH_BASE_NS (PERIPH_BASE_NS + 0x04000000UL)
+#define AHB3PERIPH_BASE_NS (PERIPH_BASE_NS + 0x04020000UL)
+#define AHB4PERIPH_BASE_NS (PERIPH_BASE_NS + 0x06000000UL)
+
+/*!< APB1 Non secure peripherals */
+#define TIM2_BASE_NS (APB1PERIPH_BASE_NS + 0x0000UL)
+#define TIM3_BASE_NS (APB1PERIPH_BASE_NS + 0x0400UL)
+#define TIM4_BASE_NS (APB1PERIPH_BASE_NS + 0x0800UL)
+#define TIM5_BASE_NS (APB1PERIPH_BASE_NS + 0x0C00UL)
+#define TIM6_BASE_NS (APB1PERIPH_BASE_NS + 0x1000UL)
+#define TIM7_BASE_NS (APB1PERIPH_BASE_NS + 0x1400UL)
+#define TIM12_BASE_NS (APB1PERIPH_BASE_NS + 0x1800UL)
+#define WWDG_BASE_NS (APB1PERIPH_BASE_NS + 0x2C00UL)
+#define IWDG_BASE_NS (APB1PERIPH_BASE_NS + 0x3000UL)
+#define SPI2_BASE_NS (APB1PERIPH_BASE_NS + 0x3800UL)
+#define SPI3_BASE_NS (APB1PERIPH_BASE_NS + 0x3C00UL)
+#define USART2_BASE_NS (APB1PERIPH_BASE_NS + 0x4400UL)
+#define USART3_BASE_NS (APB1PERIPH_BASE_NS + 0x4800UL)
+#define UART4_BASE_NS (APB1PERIPH_BASE_NS + 0x4C00UL)
+#define UART5_BASE_NS (APB1PERIPH_BASE_NS + 0x5000UL)
+#define I2C1_BASE_NS (APB1PERIPH_BASE_NS + 0x5400UL)
+#define I2C2_BASE_NS (APB1PERIPH_BASE_NS + 0x5800UL)
+#define I3C1_BASE_NS (APB1PERIPH_BASE_NS + 0x5C00UL)
+#define CRS_BASE_NS (APB1PERIPH_BASE_NS + 0x6000UL)
+#define USART6_BASE_NS (APB1PERIPH_BASE_NS + 0x6400UL)
+#define CEC_BASE_NS (APB1PERIPH_BASE_NS + 0x7000UL)
+#define DTS_BASE_NS (APB1PERIPH_BASE_NS + 0x8C00UL)
+#define LPTIM2_BASE_NS (APB1PERIPH_BASE_NS + 0x9400UL)
+#define FDCAN1_BASE_NS (APB1PERIPH_BASE_NS + 0xA400UL)
+#define FDCAN_CONFIG_BASE_NS (APB1PERIPH_BASE_NS + 0xA500UL)
+#define SRAMCAN_BASE_NS (APB1PERIPH_BASE_NS + 0xAC00UL)
+#define FDCAN2_BASE_NS (APB1PERIPH_BASE_NS + 0xA800UL)
+#define UCPD1_BASE_NS (APB1PERIPH_BASE_NS + 0xDC00UL)
+
+/*!< APB2 Non secure peripherals */
+#define TIM1_BASE_NS (APB2PERIPH_BASE_NS + 0x2C00UL)
+#define SPI1_BASE_NS (APB2PERIPH_BASE_NS + 0x3000UL)
+#define TIM8_BASE_NS (APB2PERIPH_BASE_NS + 0x3400UL)
+#define USART1_BASE_NS (APB2PERIPH_BASE_NS + 0x3800UL)
+#define TIM15_BASE_NS (APB2PERIPH_BASE_NS + 0x4000UL)
+#define SPI4_BASE_NS (APB2PERIPH_BASE_NS + 0x4C00UL)
+#define USB_DRD_BASE_NS (APB2PERIPH_BASE_NS + 0x6000UL)
+#define USB_DRD_PMAADDR_NS (APB2PERIPH_BASE_NS + 0x6400UL)
+
+/*!< AHB1 Non secure peripherals */
+#define GPDMA1_BASE_NS AHB1PERIPH_BASE_NS
+#define GPDMA2_BASE_NS (AHB1PERIPH_BASE_NS + 0x01000UL)
+#define FLASH_R_BASE_NS (AHB1PERIPH_BASE_NS + 0x02000UL)
+#define CRC_BASE_NS (AHB1PERIPH_BASE_NS + 0x03000UL)
+#define RAMCFG_BASE_NS (AHB1PERIPH_BASE_NS + 0x06000UL)
+#define ICACHE_BASE_NS (AHB1PERIPH_BASE_NS + 0x10400UL)
+#define DCACHE1_BASE_NS (AHB1PERIPH_BASE_NS + 0x11400UL)
+#define GTZC_TZSC1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12400UL)
+#define GTZC_TZIC1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12800UL)
+#define GTZC_MPCBB1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12C00UL)
+#define GTZC_MPCBB2_BASE_NS (AHB1PERIPH_BASE_NS + 0x13000UL)
+#define GTZC_MPCBB3_BASE_NS (AHB1PERIPH_BASE_NS + 0x13400UL)
+#define BKPSRAM_BASE_NS (AHB1PERIPH_BASE_NS + 0x16400UL)
+
+#define GPDMA1_Channel0_BASE_NS (GPDMA1_BASE_NS + 0x0050UL)
+#define GPDMA1_Channel1_BASE_NS (GPDMA1_BASE_NS + 0x00D0UL)
+#define GPDMA1_Channel2_BASE_NS (GPDMA1_BASE_NS + 0x0150UL)
+#define GPDMA1_Channel3_BASE_NS (GPDMA1_BASE_NS + 0x01D0UL)
+#define GPDMA1_Channel4_BASE_NS (GPDMA1_BASE_NS + 0x0250UL)
+#define GPDMA1_Channel5_BASE_NS (GPDMA1_BASE_NS + 0x02D0UL)
+#define GPDMA1_Channel6_BASE_NS (GPDMA1_BASE_NS + 0x0350UL)
+#define GPDMA1_Channel7_BASE_NS (GPDMA1_BASE_NS + 0x03D0UL)
+#define GPDMA2_Channel0_BASE_NS (GPDMA2_BASE_NS + 0x0050UL)
+#define GPDMA2_Channel1_BASE_NS (GPDMA2_BASE_NS + 0x00D0UL)
+#define GPDMA2_Channel2_BASE_NS (GPDMA2_BASE_NS + 0x0150UL)
+#define GPDMA2_Channel3_BASE_NS (GPDMA2_BASE_NS + 0x01D0UL)
+#define GPDMA2_Channel4_BASE_NS (GPDMA2_BASE_NS + 0x0250UL)
+#define GPDMA2_Channel5_BASE_NS (GPDMA2_BASE_NS + 0x02D0UL)
+#define GPDMA2_Channel6_BASE_NS (GPDMA2_BASE_NS + 0x0350UL)
+#define GPDMA2_Channel7_BASE_NS (GPDMA2_BASE_NS + 0x03D0UL)
+
+#define RAMCFG_SRAM1_BASE_NS (RAMCFG_BASE_NS)
+#define RAMCFG_SRAM2_BASE_NS (RAMCFG_BASE_NS + 0x0040UL)
+#define RAMCFG_SRAM3_BASE_NS (RAMCFG_BASE_NS + 0x0080UL)
+#define RAMCFG_BKPRAM_BASE_NS (RAMCFG_BASE_NS + 0x0100UL)
+
+/*!< AHB2 Non secure peripherals */
+#define GPIOA_BASE_NS (AHB2PERIPH_BASE_NS + 0x00000UL)
+#define GPIOB_BASE_NS (AHB2PERIPH_BASE_NS + 0x00400UL)
+#define GPIOC_BASE_NS (AHB2PERIPH_BASE_NS + 0x00800UL)
+#define GPIOD_BASE_NS (AHB2PERIPH_BASE_NS + 0x00C00UL)
+#define GPIOE_BASE_NS (AHB2PERIPH_BASE_NS + 0x01000UL)
+#define GPIOF_BASE_NS (AHB2PERIPH_BASE_NS + 0x01400UL)
+#define GPIOG_BASE_NS (AHB2PERIPH_BASE_NS + 0x01800UL)
+#define GPIOH_BASE_NS (AHB2PERIPH_BASE_NS + 0x01C00UL)
+#define ADC1_BASE_NS (AHB2PERIPH_BASE_NS + 0x08000UL)
+#define ADC2_BASE_NS (AHB2PERIPH_BASE_NS + 0x08100UL)
+#define ADC12_COMMON_BASE_NS (AHB2PERIPH_BASE_NS + 0x08300UL)
+#define DAC1_BASE_NS (AHB2PERIPH_BASE_NS + 0x08400UL)
+#define DCMI_BASE_NS (AHB2PERIPH_BASE_NS + 0x0C000UL)
+#define PSSI_BASE_NS (AHB2PERIPH_BASE_NS + 0x0C400UL)
+#define AES_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0000UL)
+#define HASH_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0400UL)
+#define HASH_DIGEST_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0710UL)
+#define RNG_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0800UL)
+#define SAES_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0C00UL)
+#define PKA_BASE_NS (AHB2PERIPH_BASE_NS + 0xA2000UL)
+#define PKA_RAM_BASE_NS (AHB2PERIPH_BASE_NS + 0xA2400UL)
+
+/*!< APB3 Non secure peripherals */
+#define SBS_BASE_NS (APB3PERIPH_BASE_NS + 0x0400UL)
+#define LPUART1_BASE_NS (APB3PERIPH_BASE_NS + 0x2400UL)
+#define I2C3_BASE_NS (APB3PERIPH_BASE_NS + 0x2800UL)
+#define I3C2_BASE_NS (APB3PERIPH_BASE_NS + 0x3000UL)
+#define LPTIM1_BASE_NS (APB3PERIPH_BASE_NS + 0x4400UL)
+#define VREFBUF_BASE_NS (APB3PERIPH_BASE_NS + 0x7400UL)
+#define RTC_BASE_NS (APB3PERIPH_BASE_NS + 0x7800UL)
+#define TAMP_BASE_NS (APB3PERIPH_BASE_NS + 0x7C00UL)
+
+/*!< AHB3 Non secure peripherals */
+#define PWR_BASE_NS (AHB3PERIPH_BASE_NS + 0x0800UL)
+#define RCC_BASE_NS (AHB3PERIPH_BASE_NS + 0x0C00UL)
+#define EXTI_BASE_NS (AHB3PERIPH_BASE_NS + 0x2000UL)
+#define DEBUG_BASE_NS (AHB3PERIPH_BASE_NS + 0x4000UL)
+
+/*!< AHB4 Non secure peripherals */
+#define OTFDEC1_BASE_NS (AHB4PERIPH_BASE_NS + 0x5000UL)
+#define OTFDEC1_REGION1_BASE_NS (OTFDEC1_BASE_NS + 0x20UL)
+#define OTFDEC1_REGION2_BASE_NS (OTFDEC1_BASE_NS + 0x50UL)
+#define OTFDEC1_REGION3_BASE_NS (OTFDEC1_BASE_NS + 0x80UL)
+#define OTFDEC1_REGION4_BASE_NS (OTFDEC1_BASE_NS + 0xB0UL)
+#define SDMMC1_BASE_NS (AHB4PERIPH_BASE_NS + 0x8000UL)
+#define DLYB_SDMMC1_BASE_NS (AHB4PERIPH_BASE_NS + 0x8400UL)
+#define FMC_R_BASE_NS (AHB4PERIPH_BASE_NS + 0x1000400UL) /*!< FMC control registers base address */
+#define OCTOSPI1_R_BASE_NS (AHB4PERIPH_BASE_NS + 0x1001400UL) /*!< OCTOSPI1 control registers base address */
+#define DLYB_OCTOSPI1_BASE_NS (AHB4PERIPH_BASE_NS + 0x0F000UL)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_BASE_NS (FMC_R_BASE_NS + 0x0000UL)
+#define FMC_Bank1E_R_BASE_NS (FMC_R_BASE_NS + 0x0104UL)
+#define FMC_Bank3_R_BASE_NS (FMC_R_BASE_NS + 0x0080UL)
+
+/* Flash, Peripheral and internal SRAMs base addresses - Secure */
+#define FLASH_BASE_S (0x0C000000UL) /*!< FLASH (up to 512 KB) secure base address */
+#define SRAM1_BASE_S (0x30000000UL) /*!< SRAM1 (128 KB) secure base address */
+#define SRAM2_BASE_S (0x30020000UL) /*!< SRAM2 (80 KB) secure base address */
+#define SRAM3_BASE_S (0x30034000UL) /*!< SRAM3 (64 KB) secure base address */
+#define PERIPH_BASE_S (0x50000000UL) /*!< Peripheral secure base address */
+
+/* Peripheral memory map - Secure */
+#define APB1PERIPH_BASE_S PERIPH_BASE_S
+#define APB2PERIPH_BASE_S (PERIPH_BASE_S + 0x00010000UL)
+#define AHB1PERIPH_BASE_S (PERIPH_BASE_S + 0x00020000UL)
+#define AHB2PERIPH_BASE_S (PERIPH_BASE_S + 0x02020000UL)
+#define APB3PERIPH_BASE_S (PERIPH_BASE_S + 0x04000000UL)
+#define AHB3PERIPH_BASE_S (PERIPH_BASE_S + 0x04020000UL)
+#define AHB4PERIPH_BASE_S (PERIPH_BASE_S + 0x06000000UL)
+
+/*!< APB1 secure peripherals */
+#define TIM2_BASE_S (APB1PERIPH_BASE_S + 0x0000UL)
+#define TIM3_BASE_S (APB1PERIPH_BASE_S + 0x0400UL)
+#define TIM4_BASE_S (APB1PERIPH_BASE_S + 0x0800UL)
+#define TIM5_BASE_S (APB1PERIPH_BASE_S + 0x0C00UL)
+#define TIM6_BASE_S (APB1PERIPH_BASE_S + 0x1000UL)
+#define TIM7_BASE_S (APB1PERIPH_BASE_S + 0x1400UL)
+#define TIM12_BASE_S (APB1PERIPH_BASE_S + 0x1800UL)
+#define WWDG_BASE_S (APB1PERIPH_BASE_S + 0x2C00UL)
+#define IWDG_BASE_S (APB1PERIPH_BASE_S + 0x3000UL)
+#define SPI2_BASE_S (APB1PERIPH_BASE_S + 0x3800UL)
+#define SPI3_BASE_S (APB1PERIPH_BASE_S + 0x3C00UL)
+#define USART2_BASE_S (APB1PERIPH_BASE_S + 0x4400UL)
+#define USART3_BASE_S (APB1PERIPH_BASE_S + 0x4800UL)
+#define UART4_BASE_S (APB1PERIPH_BASE_S + 0x4C00UL)
+#define UART5_BASE_S (APB1PERIPH_BASE_S + 0x5000UL)
+#define I2C1_BASE_S (APB1PERIPH_BASE_S + 0x5400UL)
+#define I2C2_BASE_S (APB1PERIPH_BASE_S + 0x5800UL)
+#define I3C1_BASE_S (APB1PERIPH_BASE_S + 0x5C00UL)
+#define CRS_BASE_S (APB1PERIPH_BASE_S + 0x6000UL)
+#define USART6_BASE_S (APB1PERIPH_BASE_S + 0x6400UL)
+#define CEC_BASE_S (APB1PERIPH_BASE_S + 0x7000UL)
+#define DTS_BASE_S (APB1PERIPH_BASE_S + 0x8C00UL)
+#define LPTIM2_BASE_S (APB1PERIPH_BASE_S + 0x9400UL)
+#define FDCAN1_BASE_S (APB1PERIPH_BASE_S + 0xA400UL)
+#define FDCAN_CONFIG_BASE_S (APB1PERIPH_BASE_S + 0xA500UL)
+#define SRAMCAN_BASE_S (APB1PERIPH_BASE_S + 0xAC00UL)
+#define FDCAN2_BASE_S (APB1PERIPH_BASE_S + 0xA800UL)
+#define UCPD1_BASE_S (APB1PERIPH_BASE_S + 0xDC00UL)
+
+/*!< APB2 Secure peripherals */
+#define TIM1_BASE_S (APB2PERIPH_BASE_S + 0x2C00UL)
+#define SPI1_BASE_S (APB2PERIPH_BASE_S + 0x3000UL)
+#define TIM8_BASE_S (APB2PERIPH_BASE_S + 0x3400UL)
+#define USART1_BASE_S (APB2PERIPH_BASE_S + 0x3800UL)
+#define TIM15_BASE_S (APB2PERIPH_BASE_S + 0x4000UL)
+#define SPI4_BASE_S (APB2PERIPH_BASE_S + 0x4C00UL)
+#define USB_DRD_BASE_S (APB2PERIPH_BASE_S + 0x6000UL)
+#define USB_DRD_PMAADDR_S (APB2PERIPH_BASE_S + 0x6400UL)
+
+/*!< AHB1 secure peripherals */
+#define GPDMA1_BASE_S AHB1PERIPH_BASE_S
+#define GPDMA2_BASE_S (AHB1PERIPH_BASE_S + 0x01000UL)
+#define FLASH_R_BASE_S (AHB1PERIPH_BASE_S + 0x02000UL)
+#define CRC_BASE_S (AHB1PERIPH_BASE_S + 0x03000UL)
+#define RAMCFG_BASE_S (AHB1PERIPH_BASE_S + 0x06000UL)
+#define ICACHE_BASE_S (AHB1PERIPH_BASE_S + 0x10400UL)
+#define DCACHE1_BASE_S (AHB1PERIPH_BASE_S + 0x11400UL)
+#define GTZC_TZSC1_BASE_S (AHB1PERIPH_BASE_S + 0x12400UL)
+#define GTZC_TZIC1_BASE_S (AHB1PERIPH_BASE_S + 0x12800UL)
+#define GTZC_MPCBB1_BASE_S (AHB1PERIPH_BASE_S + 0x12C00UL)
+#define GTZC_MPCBB2_BASE_S (AHB1PERIPH_BASE_S + 0x13000UL)
+#define GTZC_MPCBB3_BASE_S (AHB1PERIPH_BASE_S + 0x13400UL)
+#define BKPSRAM_BASE_S (AHB1PERIPH_BASE_S + 0x16400UL)
+#define GPDMA1_Channel0_BASE_S (GPDMA1_BASE_S + 0x0050UL)
+#define GPDMA1_Channel1_BASE_S (GPDMA1_BASE_S + 0x00D0UL)
+#define GPDMA1_Channel2_BASE_S (GPDMA1_BASE_S + 0x0150UL)
+#define GPDMA1_Channel3_BASE_S (GPDMA1_BASE_S + 0x01D0UL)
+#define GPDMA1_Channel4_BASE_S (GPDMA1_BASE_S + 0x0250UL)
+#define GPDMA1_Channel5_BASE_S (GPDMA1_BASE_S + 0x02D0UL)
+#define GPDMA1_Channel6_BASE_S (GPDMA1_BASE_S + 0x0350UL)
+#define GPDMA1_Channel7_BASE_S (GPDMA1_BASE_S + 0x03D0UL)
+#define GPDMA2_Channel0_BASE_S (GPDMA2_BASE_S + 0x0050UL)
+#define GPDMA2_Channel1_BASE_S (GPDMA2_BASE_S + 0x00D0UL)
+#define GPDMA2_Channel2_BASE_S (GPDMA2_BASE_S + 0x0150UL)
+#define GPDMA2_Channel3_BASE_S (GPDMA2_BASE_S + 0x01D0UL)
+#define GPDMA2_Channel4_BASE_S (GPDMA2_BASE_S + 0x0250UL)
+#define GPDMA2_Channel5_BASE_S (GPDMA2_BASE_S + 0x02D0UL)
+#define GPDMA2_Channel6_BASE_S (GPDMA2_BASE_S + 0x0350UL)
+#define GPDMA2_Channel7_BASE_S (GPDMA2_BASE_S + 0x03D0UL)
+#define RAMCFG_SRAM1_BASE_S (RAMCFG_BASE_S)
+#define RAMCFG_SRAM2_BASE_S (RAMCFG_BASE_S + 0x0040UL)
+#define RAMCFG_SRAM3_BASE_S (RAMCFG_BASE_S + 0x0080UL)
+#define RAMCFG_BKPRAM_BASE_S (RAMCFG_BASE_S + 0x0100UL)
+
+/*!< AHB2 secure peripherals */
+#define GPIOA_BASE_S (AHB2PERIPH_BASE_S + 0x00000UL)
+#define GPIOB_BASE_S (AHB2PERIPH_BASE_S + 0x00400UL)
+#define GPIOC_BASE_S (AHB2PERIPH_BASE_S + 0x00800UL)
+#define GPIOD_BASE_S (AHB2PERIPH_BASE_S + 0x00C00UL)
+#define GPIOE_BASE_S (AHB2PERIPH_BASE_S + 0x01000UL)
+#define GPIOF_BASE_S (AHB2PERIPH_BASE_S + 0x01400UL)
+#define GPIOG_BASE_S (AHB2PERIPH_BASE_S + 0x01800UL)
+#define GPIOH_BASE_S (AHB2PERIPH_BASE_S + 0x01C00UL)
+#define ADC1_BASE_S (AHB2PERIPH_BASE_S + 0x08000UL)
+#define ADC2_BASE_S (AHB2PERIPH_BASE_S + 0x08100UL)
+#define ADC12_COMMON_BASE_S (AHB2PERIPH_BASE_S + 0x08300UL)
+#define DAC1_BASE_S (AHB2PERIPH_BASE_S + 0x08400UL)
+#define DCMI_BASE_S (AHB2PERIPH_BASE_S + 0x0C000UL)
+#define PSSI_BASE_S (AHB2PERIPH_BASE_S + 0x0C400UL)
+#define AES_BASE_S (AHB2PERIPH_BASE_S + 0xA0000UL)
+#define HASH_BASE_S (AHB2PERIPH_BASE_S + 0xA0400UL)
+#define HASH_DIGEST_BASE_S (AHB2PERIPH_BASE_S + 0xA0710UL)
+#define RNG_BASE_S (AHB2PERIPH_BASE_S + 0xA0800UL)
+#define SAES_BASE_S (AHB2PERIPH_BASE_S + 0xA0C00UL)
+#define PKA_BASE_S (AHB2PERIPH_BASE_S + 0xA2000UL)
+#define PKA_RAM_BASE_S (AHB2PERIPH_BASE_S + 0xA2400UL)
+
+/*!< APB3 secure peripherals */
+#define SBS_BASE_S (APB3PERIPH_BASE_S + 0x0400UL)
+#define LPUART1_BASE_S (APB3PERIPH_BASE_S + 0x2400UL)
+#define I2C3_BASE_S (APB3PERIPH_BASE_S + 0x2800UL)
+#define I3C2_BASE_S (APB3PERIPH_BASE_S + 0x3000UL)
+#define LPTIM1_BASE_S (APB3PERIPH_BASE_S + 0x4400UL)
+#define VREFBUF_BASE_S (APB3PERIPH_BASE_S + 0x7400UL)
+#define RTC_BASE_S (APB3PERIPH_BASE_S + 0x7800UL)
+#define TAMP_BASE_S (APB3PERIPH_BASE_S + 0x7C00UL)
+
+/*!< AHB3 secure peripherals */
+#define PWR_BASE_S (AHB3PERIPH_BASE_S + 0x0800UL)
+#define RCC_BASE_S (AHB3PERIPH_BASE_S + 0x0C00UL)
+#define EXTI_BASE_S (AHB3PERIPH_BASE_S + 0x2000UL)
+#define DEBUG_BASE_S (AHB3PERIPH_BASE_S + 0x4000UL)
+
+/*!< AHB4 secure peripherals */
+#define OTFDEC1_BASE_S (AHB4PERIPH_BASE_S + 0x5000UL)
+#define OTFDEC1_REGION1_BASE_S (OTFDEC1_BASE_S + 0x20UL)
+#define OTFDEC1_REGION2_BASE_S (OTFDEC1_BASE_S + 0x50UL)
+#define OTFDEC1_REGION3_BASE_S (OTFDEC1_BASE_S + 0x80UL)
+#define OTFDEC1_REGION4_BASE_S (OTFDEC1_BASE_S + 0xB0UL)
+#define SDMMC1_BASE_S (AHB4PERIPH_BASE_S + 0x8000UL)
+#define DLYB_SDMMC1_BASE_S (AHB4PERIPH_BASE_S + 0x8400UL)
+#define FMC_R_BASE_S (AHB4PERIPH_BASE_S + 0x1000400UL) /*!< FMC control registers base address */
+#define OCTOSPI1_R_BASE_S (AHB4PERIPH_BASE_S + 0x1001400UL) /*!< OCTOSPI1 control registers base address */
+#define DLYB_OCTOSPI1_BASE_S (AHB4PERIPH_BASE_S + 0x0F000UL)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_BASE_S (FMC_R_BASE_S + 0x0000UL)
+#define FMC_Bank1E_R_BASE_S (FMC_R_BASE_S + 0x0104UL)
+#define FMC_Bank3_R_BASE_S (FMC_R_BASE_S + 0x0080UL)
+
+/* Debug MCU registers base address */
+#define DBGMCU_BASE (0x44024000UL)
+#define PACKAGE_BASE (0x08FFF80EUL) /*!< Package data register base address */
+#define UID_BASE (0x08FFF800UL) /*!< Unique device ID register base address */
+#define FLASHSIZE_BASE (0x08FFF80CUL) /*!< Flash size data register base address */
+
+/* Internal Flash OTP Area */
+#define FLASH_OTP_BASE (0x08FFF000UL) /*!< FLASH OTP (one-time programmable) base address */
+#define FLASH_OTP_SIZE (0x800U) /*!< 2048 bytes OTP (one-time programmable) */
+
+/* Flash system Area */
+#define FLASH_SYSTEM_BASE_NS (0x0BF80000UL) /*!< FLASH System non-secure base address */
+#define FLASH_SYSTEM_BASE_S (0x0FF80000UL) /*!< FLASH System secure base address */
+#define FLASH_SYSTEM_SIZE (0x10000U) /*!< 64 Kbytes system Flash */
+
+/* Internal Flash EDATA Area */
+#define FLASH_EDATA_BASE_NS (0x09000000UL) /*!< FLASH high-cycle data non-secure base address */
+#define FLASH_EDATA_BASE_S (0x0D000000UL) /*!< FLASH high-cycle data secure base address */
+#define FLASH_EDATA_SIZE (0x18000U) /*!< 96 KB of Flash high-cycle data */
+
+/* Internal Flash OBK Area */
+#define FLASH_OBK_BASE_NS (0x0BFD0000UL) /*!< FLASH OBK (option byte keys) non-secure base address */
+#define FLASH_OBK_BASE_S (0x0FFD0000UL) /*!< FLASH OBK (option byte keys) secure base address */
+#define FLASH_OBK_SIZE (0x2000U) /*!< 8 KB of option byte keys */
+#define FLASH_OBK_HDPL0_SIZE (0x100U) /*!< 256 Bytes of HDPL1 option byte keys */
+
+#define FLASH_OBK_HDPL1_BASE_NS (FLASH_OBK_BASE_NS + FLASH_OBK_HDPL0_SIZE) /*!< FLASH OBK HDPL1 non-secure base address */
+#define FLASH_OBK_HDPL1_BASE_S (FLASH_OBK_BASE_S + FLASH_OBK_HDPL0_SIZE) /*!< FLASH OBK HDPL1 secure base address */
+#define FLASH_OBK_HDPL1_SIZE (0x800U) /*!< 2 KB of HDPL1 option byte keys */
+
+#define FLASH_OBK_HDPL2_BASE_NS (FLASH_OBK_HDPL1_BASE_NS + FLASH_OBK_HDPL1_SIZE) /*!< FLASH OBK HDPL2 non-secure base address */
+#define FLASH_OBK_HDPL2_BASE_S (FLASH_OBK_HDPL1_BASE_S + FLASH_OBK_HDPL1_SIZE) /*!< FLASH OBK HDPL2 secure base address */
+#define FLASH_OBK_HDPL2_SIZE (0x300U) /*!< 768 Bytes of HDPL2 option byte keys */
+
+#define FLASH_OBK_HDPL3_BASE_NS (FLASH_OBK_HDPL2_BASE_NS + FLASH_OBK_HDPL2_SIZE) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3_BASE_S (FLASH_OBK_HDPL2_BASE_S + FLASH_OBK_HDPL2_SIZE) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3_SIZE (0x13F0U) /*!< 5104 Bytes HDPL3 option byte keys */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+#define FLASH_OBK_HDPL3S_BASE_NS (FLASH_OBK_HDPL3_BASE_NS) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3S_BASE_S (FLASH_OBK_HDPL3_BASE_S) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3S_SIZE (0x0C00U) /*!< 3072 Bytes of secure HDPL3 option byte keys */
+
+#define FLASH_OBK_HDPL3NS_BASE_NS (FLASH_OBK_HDPL3_BASE_NS + FLASH_OBK_HDPL3S_SIZE) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3NS_BASE_S (FLASH_OBK_HDPL3_BASE_S + FLASH_OBK_HDPL3S_SIZE) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3NS_SIZE (FLASH_OBK_HDPL3_SIZE - FLASH_OBK_HDPL3S_SIZE) /*!< 2032 Bytes of non-secure HDPL3 option byte keys */
+#endif /* CMSE */
+
+/*!< Root Secure Service Library */
+/************ RSSLIB SAU system Flash region definition constants *************/
+#define RSSLIB_SYS_FLASH_NS_PFUNC_START (0xBF9FB68UL)
+#define RSSLIB_SYS_FLASH_NS_PFUNC_END (0xBF9FB84UL)
+
+/************ RSSLIB function return constants ********************************/
+#define RSSLIB_ERROR (0xF5F5F5F5UL)
+#define RSSLIB_SUCCESS (0xEAEAEAEAUL)
+
+/*!< RSSLIB pointer function structure address definition */
+#define RSSLIB_PFUNC_BASE (0xBF9FB68UL)
+#define RSSLIB_PFUNC ((RSSLIB_pFunc_TypeDef *)RSSLIB_PFUNC_BASE)
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level2 Function
+ * @detail This function increments HDP level up to HDP level 2
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl2_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl3_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it jumps to the non-secure reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl3NS_TypeDef)(uint32_t VectorTableAddr);
+
+/**
+ * @brief Input parameter definition of RSSLIB_DataProvisioning
+ */
+typedef struct
+{
+ uint32_t *pSource; /*!< Address of the Data to be provisioned, shall be in SRAM3 */
+ uint32_t *pDestination; /*!< Address in OBKeys sections where to provision Data */
+ uint32_t Size; /*!< Size in bytes of the Data to be provisioned*/
+ uint32_t DoEncryption; /*!< Notifies RSSLIB_DataProvisioning to encrypt or not Data*/
+ uint32_t Crc; /*!< CRC over full Data buffer and previous field in the structure*/
+} RSSLIB_DataProvisioningConf_t;
+
+/**
+ * @brief Prototype of RSSLIB Data Provisioning Function
+ * @detail This function write Data within OBKeys sections.
+ * @param pointer on the structure defining Data to be provisioned and where to
+ * provision them within OBKeys sections.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_NSC_DataProvisioning_TypeDef)(RSSLIB_DataProvisioningConf_t *pConfig);
+
+
+/**
+ * @brief RSSLib secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM RSSLIB_S_JumpHDPlvl2_TypeDef JumpHDPLvl2;
+ __IM RSSLIB_S_JumpHDPlvl3_TypeDef JumpHDPLvl3;
+ __IM RSSLIB_S_JumpHDPlvl3NS_TypeDef JumpHDPLvl3NS;
+} S_pFuncTypeDef;
+
+/**
+ * @brief RSSLib Non-secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM RSSLIB_NSC_DataProvisioning_TypeDef DataProvisioning;
+} NSC_pFuncTypeDef;
+
+/**
+ * @brief RSSLib function pointer structure
+ */
+typedef struct
+{
+ NSC_pFuncTypeDef NSC;
+ uint32_t RESERVED1[3];
+ S_pFuncTypeDef S;
+}RSSLIB_pFunc_TypeDef;
+
+/*!< Non Secure Service Library */
+/************ RSSLIB SAU system Flash region definition constants *************/
+#define NSSLIB_SYS_FLASH_NS_PFUNC_START (0xBF9FB6CUL)
+#define NSSLIB_SYS_FLASH_NS_PFUNC_END (0xBF9FB74UL)
+
+/************ RSSLIB function return constants ********************************/
+#define NSSLIB_ERROR (0xF5F5F5F5UL)
+#define NSSLIB_SUCCESS (0xEAEAEAEAUL)
+
+/*!< RSSLIB pointer function structure address definition */
+#define NSSLIB_PFUNC_BASE (0xBF9FB6CUL)
+#define NSSLIB_PFUNC ((NSSLIB_pFunc_TypeDef *)NSSLIB_PFUNC_BASE)
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level2 Function
+ * @detail This function increments HDP level up to HDP level 2
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval NSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*NSSLIB_S_JumpHDPlvl2_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval NSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*NSSLIB_S_JumpHDPlvl3_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief RSSLib secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM NSSLIB_S_JumpHDPlvl2_TypeDef JumpHDPLvl2;
+ __IM NSSLIB_S_JumpHDPlvl3_TypeDef JumpHDPLvl3;
+} NSSLIB_pFunc_TypeDef;
+
+/*
+ * Certificate address description
+ */
+#define CERT_CHIP_PACK1_ADDR (0x0BF9FE00U)
+#define CERT_CHIP_PACK1_SIZE (0x200U)
+#define CERT_CHIP_PACK2_ADDR (0x0BF9FC00U)
+#define CERT_CHIP_PACK2_SIZE (0x200U)
+
+#define CERT_CHIP_PACK_ADDR (CERT_CHIP_PACK2_ADDR)
+#define CERT_CHIP_PACK_SIZE (CERT_CHIP_PACK1_SIZE + CERT_CHIP_PACK2_SIZE)
+
+#define CERT_ST_DUA_INIT_ATTEST_PUB_KEY_OFFSET (152U)
+#define CERT_ST_DUA_INIT_ATTEST_PUB_KEY_ADDR (CERT_CHIP_PACK1_ADDR + CERT_ST_DUA_INIT_ATTEST_PUB_KEY_OFFSET)
+#define CERT_ST_DUA_INIT_ATTEST_SIGN_OFFSET (216U)
+#define CERT_ST_DUA_INIT_ATTEST_SIGN_ADDR (CERT_CHIP_PACK1_ADDR + CERT_ST_DUA_INIT_ATTEST_SIGN_OFFSET)
+#define CERT_ST_DUA_INIT_ATTEST_SERIAL_OFFSET (484U)
+#define CERT_ST_DUA_INIT_ATTEST_SERIAL_ADDR (CERT_CHIP_PACK1_ADDR + CERT_ST_DUA_INIT_ATTEST_SERIAL_OFFSET)
+
+#define CERT_ST_DUA_USER_PUB_KEY_OFFSET (12U)
+#define CERT_ST_DUA_USER_PUB_KEY_ADDR (CERT_CHIP_PACK2_ADDR + CERT_ST_DUA_USER_PUB_KEY_OFFSET)
+#define CERT_ST_DUA_USER_SIGN_OFFSET (76U)
+#define CERT_ST_DUA_USER_SIGN_ADDR (CERT_CHIP_PACK2_ADDR + CERT_ST_DUA_USER_SIGN_OFFSET)
+#define CERT_ST_DUA_USER_SERIAL_OFFSET (140U)
+#define CERT_ST_DUA_USER_SERIAL_ADDR (CERT_CHIP_PACK2_ADDR + CERT_ST_DUA_USER_SERIAL_OFFSET)
+
+/** @} */ /* End of group STM32H5xx_Peripheral_peripheralAddr */
+
+
+/* =========================================================================================================================== */
+/* ================ Peripheral declaration ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_Peripheral_declaration
+ * @{
+ */
+
+/*!< APB1 Non secure peripherals */
+#define TIM2_NS ((TIM_TypeDef *)TIM2_BASE_NS)
+#define TIM3_NS ((TIM_TypeDef *)TIM3_BASE_NS)
+#define TIM4_NS ((TIM_TypeDef *)TIM4_BASE_NS)
+#define TIM5_NS ((TIM_TypeDef *)TIM5_BASE_NS)
+#define TIM6_NS ((TIM_TypeDef *)TIM6_BASE_NS)
+#define TIM7_NS ((TIM_TypeDef *)TIM7_BASE_NS)
+#define TIM12_NS ((TIM_TypeDef *)TIM12_BASE_NS)
+#define TIM13_NS ((TIM_TypeDef *)TIM13_BASE_NS)
+#define TIM14_NS ((TIM_TypeDef *)TIM14_BASE_NS)
+#define WWDG_NS ((WWDG_TypeDef *)WWDG_BASE_NS)
+#define IWDG_NS ((IWDG_TypeDef *)IWDG_BASE_NS)
+#define SPI2_NS ((SPI_TypeDef *)SPI2_BASE_NS)
+#define SPI3_NS ((SPI_TypeDef *)SPI3_BASE_NS)
+#define USART2_NS ((USART_TypeDef *)USART2_BASE_NS)
+#define USART3_NS ((USART_TypeDef *)USART3_BASE_NS)
+#define UART4_NS ((USART_TypeDef *)UART4_BASE_NS)
+#define UART5_NS ((USART_TypeDef *)UART5_BASE_NS)
+#define I2C1_NS ((I2C_TypeDef *)I2C1_BASE_NS)
+#define I2C2_NS ((I2C_TypeDef *)I2C2_BASE_NS)
+#define I3C1_NS ((I3C_TypeDef *)I3C1_BASE_NS)
+#define CRS_NS ((CRS_TypeDef *)CRS_BASE_NS)
+#define USART6_NS ((USART_TypeDef *)USART6_BASE_NS)
+#define CEC_NS ((CEC_TypeDef *)CEC_BASE_NS)
+#define DTS_NS ((DTS_TypeDef *)DTS_BASE_NS)
+#define LPTIM2_NS ((LPTIM_TypeDef *)LPTIM2_BASE_NS)
+#define FDCAN1_NS ((FDCAN_GlobalTypeDef *)FDCAN1_BASE_NS)
+#define FDCAN_CONFIG_NS ((FDCAN_Config_TypeDef *)FDCAN_CONFIG_BASE_NS)
+#define FDCAN2_NS ((FDCAN_GlobalTypeDef *)FDCAN2_BASE_NS)
+#define UCPD1_NS ((UCPD_TypeDef *)UCPD1_BASE_NS)
+
+/*!< APB2 Non secure peripherals */
+#define TIM1_NS ((TIM_TypeDef *) TIM1_BASE_NS)
+#define SPI1_NS ((SPI_TypeDef *) SPI1_BASE_NS)
+#define TIM8_NS ((TIM_TypeDef *) TIM8_BASE_NS)
+#define USART1_NS ((USART_TypeDef *) USART1_BASE_NS)
+#define TIM15_NS ((TIM_TypeDef *) TIM15_BASE_NS)
+#define SPI4_NS ((SPI_TypeDef *) SPI4_BASE_NS)
+#define USB_DRD_FS_NS ((USB_DRD_TypeDef *) USB_DRD_BASE_NS)
+#define USB_DRD_PMA_BUFF_NS ((USB_DRD_PMABuffDescTypeDef *) USB_DRD_PMAADDR_NS)
+
+/*!< AHB1 Non secure peripherals */
+#define GPDMA1_NS ((DMA_TypeDef *) GPDMA1_BASE_NS)
+#define GPDMA2_NS ((DMA_TypeDef *) GPDMA2_BASE_NS)
+#define FLASH_NS ((FLASH_TypeDef *) FLASH_R_BASE_NS)
+#define CRC_NS ((CRC_TypeDef *) CRC_BASE_NS)
+#define RAMCFG_SRAM1_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM1_BASE_NS)
+#define RAMCFG_SRAM2_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM2_BASE_NS)
+#define RAMCFG_SRAM3_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM3_BASE_NS)
+#define RAMCFG_BKPRAM_NS ((RAMCFG_TypeDef *) RAMCFG_BKPRAM_BASE_NS)
+#define ICACHE_NS ((ICACHE_TypeDef *) ICACHE_BASE_NS)
+#define DCACHE1_NS ((DCACHE_TypeDef *) DCACHE1_BASE_NS)
+#define GTZC_TZSC1_NS ((GTZC_TZSC_TypeDef *) GTZC_TZSC1_BASE_NS)
+#define GTZC_TZIC1_NS ((GTZC_TZIC_TypeDef *) GTZC_TZIC1_BASE_NS)
+#define GTZC_MPCBB1_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB1_BASE_NS)
+#define GTZC_MPCBB2_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB2_BASE_NS)
+#define GTZC_MPCBB3_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB3_BASE_NS)
+#define GPDMA1_Channel0_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel0_BASE_NS)
+#define GPDMA1_Channel1_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel1_BASE_NS)
+#define GPDMA1_Channel2_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel2_BASE_NS)
+#define GPDMA1_Channel3_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel3_BASE_NS)
+#define GPDMA1_Channel4_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel4_BASE_NS)
+#define GPDMA1_Channel5_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel5_BASE_NS)
+#define GPDMA1_Channel6_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel6_BASE_NS)
+#define GPDMA1_Channel7_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel7_BASE_NS)
+#define GPDMA2_Channel0_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel0_BASE_NS)
+#define GPDMA2_Channel1_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel1_BASE_NS)
+#define GPDMA2_Channel2_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel2_BASE_NS)
+#define GPDMA2_Channel3_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel3_BASE_NS)
+#define GPDMA2_Channel4_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel4_BASE_NS)
+#define GPDMA2_Channel5_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel5_BASE_NS)
+#define GPDMA2_Channel6_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel6_BASE_NS)
+#define GPDMA2_Channel7_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel7_BASE_NS)
+
+/*!< AHB2 Non secure peripherals */
+#define GPIOA_NS ((GPIO_TypeDef *) GPIOA_BASE_NS)
+#define GPIOB_NS ((GPIO_TypeDef *) GPIOB_BASE_NS)
+#define GPIOC_NS ((GPIO_TypeDef *) GPIOC_BASE_NS)
+#define GPIOD_NS ((GPIO_TypeDef *) GPIOD_BASE_NS)
+#define GPIOE_NS ((GPIO_TypeDef *) GPIOE_BASE_NS)
+#define GPIOF_NS ((GPIO_TypeDef *) GPIOF_BASE_NS)
+#define GPIOG_NS ((GPIO_TypeDef *) GPIOG_BASE_NS)
+#define GPIOH_NS ((GPIO_TypeDef *) GPIOH_BASE_NS)
+#define ADC1_NS ((ADC_TypeDef *) ADC1_BASE_NS)
+#define ADC2_NS ((ADC_TypeDef *) ADC2_BASE_NS)
+#define ADC12_COMMON_NS ((ADC_Common_TypeDef *) ADC12_COMMON_BASE_NS)
+#define DAC1_NS ((DAC_TypeDef *) DAC1_BASE_NS)
+#define DCMI_NS ((DCMI_TypeDef *) DCMI_BASE_NS)
+#define PSSI_NS ((PSSI_TypeDef *) PSSI_BASE_NS)
+#define HASH_NS ((HASH_TypeDef *) HASH_BASE_NS)
+#define HASH_DIGEST_NS ((HASH_DIGEST_TypeDef *) HASH_DIGEST_BASE_NS)
+#define AES_NS ((AES_TypeDef *) AES_BASE_NS)
+#define RNG_NS ((RNG_TypeDef *) RNG_BASE_NS)
+#define SAES_NS ((AES_TypeDef *) SAES_BASE_NS)
+#define PKA_NS ((PKA_TypeDef *) PKA_BASE_NS)
+
+
+/*!< APB3 Non secure peripherals */
+#define SBS_NS ((SBS_TypeDef *) SBS_BASE_NS)
+#define LPUART1_NS ((USART_TypeDef *) LPUART1_BASE_NS)
+#define I2C3_NS ((I2C_TypeDef *) I2C3_BASE_NS)
+#define I3C2_NS ((I3C_TypeDef *) I3C2_BASE_NS)
+#define LPTIM1_NS ((LPTIM_TypeDef *) LPTIM1_BASE_NS)
+#define VREFBUF_NS ((VREFBUF_TypeDef *) VREFBUF_BASE_NS)
+#define RTC_NS ((RTC_TypeDef *) RTC_BASE_NS)
+#define TAMP_NS ((TAMP_TypeDef *) TAMP_BASE_NS)
+
+/*!< AHB3 Non secure peripherals */
+#define PWR_NS ((PWR_TypeDef *) PWR_BASE_NS)
+#define RCC_NS ((RCC_TypeDef *) RCC_BASE_NS)
+#define EXTI_NS ((EXTI_TypeDef *) EXTI_BASE_NS)
+
+/*!< AHB4 Non secure peripherals */
+#define OTFDEC1_NS ((OTFDEC_TypeDef *) OTFDEC1_BASE_NS)
+#define OTFDEC1_REGION1_NS ((OTFDEC_Region_TypeDef *) OTFDEC1_REGION1_BASE_NS)
+#define OTFDEC1_REGION2_NS ((OTFDEC_Region_TypeDef *) OTFDEC1_REGION2_BASE_NS)
+#define OTFDEC1_REGION3_NS ((OTFDEC_Region_TypeDef *) OTFDEC1_REGION3_BASE_NS)
+#define OTFDEC1_REGION4_NS ((OTFDEC_Region_TypeDef *) OTFDEC1_REGION4_BASE_NS)
+#define SDMMC1_NS ((SDMMC_TypeDef *) SDMMC1_BASE_NS)
+#define DLYB_SDMMC1_NS ((DLYB_TypeDef *) DLYB_SDMMC1_BASE_NS)
+
+#define OCTOSPI1_NS ((OCTOSPI_TypeDef *) OCTOSPI1_R_BASE_NS)
+#define DLYB_OCTOSPI1_NS ((DLYB_TypeDef *) DLYB_OCTOSPI1_BASE_NS)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_NS ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE_NS)
+#define FMC_Bank1E_R_NS ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE_NS)
+#define FMC_Bank3_R_NS ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE_NS)
+
+/*!< APB1 Secure peripherals */
+#define TIM2_S ((TIM_TypeDef *)TIM2_BASE_S)
+#define TIM3_S ((TIM_TypeDef *)TIM3_BASE_S)
+#define TIM4_S ((TIM_TypeDef *)TIM4_BASE_S)
+#define TIM5_S ((TIM_TypeDef *)TIM5_BASE_S)
+#define TIM6_S ((TIM_TypeDef *)TIM6_BASE_S)
+#define TIM7_S ((TIM_TypeDef *)TIM7_BASE_S)
+#define TIM12_S ((TIM_TypeDef *)TIM12_BASE_S)
+#define WWDG_S ((WWDG_TypeDef *)WWDG_BASE_S)
+#define IWDG_S ((IWDG_TypeDef *)IWDG_BASE_S)
+#define SPI2_S ((SPI_TypeDef *)SPI2_BASE_S)
+#define SPI3_S ((SPI_TypeDef *)SPI3_BASE_S)
+#define USART2_S ((USART_TypeDef *)USART2_BASE_S)
+#define USART3_S ((USART_TypeDef *)USART3_BASE_S)
+#define UART4_S ((USART_TypeDef *)UART4_BASE_S)
+#define UART5_S ((USART_TypeDef *)UART5_BASE_S)
+#define I2C1_S ((I2C_TypeDef *)I2C1_BASE_S)
+#define I2C2_S ((I2C_TypeDef *)I2C2_BASE_S)
+#define I3C1_S ((I3C_TypeDef *)I3C1_BASE_S)
+#define CRS_S ((CRS_TypeDef *)CRS_BASE_S)
+#define USART6_S ((USART_TypeDef *)USART6_BASE_S)
+#define CEC_S ((CEC_TypeDef *)CEC_BASE_S)
+#define DTS_S ((DTS_TypeDef *)DTS_BASE_S)
+#define LPTIM2_S ((LPTIM_TypeDef *)LPTIM2_BASE_S)
+#define FDCAN1_S ((FDCAN_GlobalTypeDef *)FDCAN1_BASE_S)
+#define FDCAN_CONFIG_S ((FDCAN_Config_TypeDef *)FDCAN_CONFIG_BASE_S)
+#define FDCAN2_S ((FDCAN_GlobalTypeDef *)FDCAN2_BASE_S)
+#define UCPD1_S ((UCPD_TypeDef *)UCPD1_BASE_S)
+
+/*!< APB2 secure peripherals */
+#define TIM1_S ((TIM_TypeDef *) TIM1_BASE_S)
+#define SPI1_S ((SPI_TypeDef *) SPI1_BASE_S)
+#define TIM8_S ((TIM_TypeDef *) TIM8_BASE_S)
+#define USART1_S ((USART_TypeDef *) USART1_BASE_S)
+#define TIM15_S ((TIM_TypeDef *) TIM15_BASE_S)
+#define SPI4_S ((SPI_TypeDef *) SPI4_BASE_S)
+#define USB_DRD_FS_S ((USB_DRD_TypeDef *)USB_DRD_BASE_S)
+#define USB_DRD_PMA_BUFF_S ((USB_DRD_PMABuffDescTypeDef *) USB_DRD_PMAADDR_S)
+
+/*!< AHB1 secure peripherals */
+#define GPDMA1_S ((DMA_TypeDef *) GPDMA1_BASE_S)
+#define GPDMA2_S ((DMA_TypeDef *) GPDMA2_BASE_S)
+#define FLASH_S ((FLASH_TypeDef *) FLASH_R_BASE_S)
+#define CRC_S ((CRC_TypeDef *) CRC_BASE_S)
+#define RAMCFG_SRAM1_S ((RAMCFG_TypeDef *) RAMCFG_SRAM1_BASE_S)
+#define RAMCFG_SRAM2_S ((RAMCFG_TypeDef *) RAMCFG_SRAM2_BASE_S)
+#define RAMCFG_SRAM3_S ((RAMCFG_TypeDef *) RAMCFG_SRAM3_BASE_S)
+#define RAMCFG_BKPRAM_S ((RAMCFG_TypeDef *) RAMCFG_BKPRAM_BASE_S)
+#define ICACHE_S ((ICACHE_TypeDef *) ICACHE_BASE_S)
+#define DCACHE1_S ((DCACHE_TypeDef *) DCACHE1_BASE_S)
+#define GTZC_TZSC1_S ((GTZC_TZSC_TypeDef *) GTZC_TZSC1_BASE_S)
+#define GTZC_TZIC1_S ((GTZC_TZIC_TypeDef *) GTZC_TZIC1_BASE_S)
+#define GTZC_MPCBB1_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB1_BASE_S)
+#define GTZC_MPCBB2_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB2_BASE_S)
+#define GTZC_MPCBB3_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB3_BASE_S)
+#define GPDMA1_Channel0_S ((DMA_Channel_TypeDef *) GPDMA1_Channel0_BASE_S)
+#define GPDMA1_Channel1_S ((DMA_Channel_TypeDef *) GPDMA1_Channel1_BASE_S)
+#define GPDMA1_Channel2_S ((DMA_Channel_TypeDef *) GPDMA1_Channel2_BASE_S)
+#define GPDMA1_Channel3_S ((DMA_Channel_TypeDef *) GPDMA1_Channel3_BASE_S)
+#define GPDMA1_Channel4_S ((DMA_Channel_TypeDef *) GPDMA1_Channel4_BASE_S)
+#define GPDMA1_Channel5_S ((DMA_Channel_TypeDef *) GPDMA1_Channel5_BASE_S)
+#define GPDMA1_Channel6_S ((DMA_Channel_TypeDef *) GPDMA1_Channel6_BASE_S)
+#define GPDMA1_Channel7_S ((DMA_Channel_TypeDef *) GPDMA1_Channel7_BASE_S)
+#define GPDMA2_Channel0_S ((DMA_Channel_TypeDef *) GPDMA2_Channel0_BASE_S)
+#define GPDMA2_Channel1_S ((DMA_Channel_TypeDef *) GPDMA2_Channel1_BASE_S)
+#define GPDMA2_Channel2_S ((DMA_Channel_TypeDef *) GPDMA2_Channel2_BASE_S)
+#define GPDMA2_Channel3_S ((DMA_Channel_TypeDef *) GPDMA2_Channel3_BASE_S)
+#define GPDMA2_Channel4_S ((DMA_Channel_TypeDef *) GPDMA2_Channel4_BASE_S)
+#define GPDMA2_Channel5_S ((DMA_Channel_TypeDef *) GPDMA2_Channel5_BASE_S)
+#define GPDMA2_Channel6_S ((DMA_Channel_TypeDef *) GPDMA2_Channel6_BASE_S)
+#define GPDMA2_Channel7_S ((DMA_Channel_TypeDef *) GPDMA2_Channel7_BASE_S)
+
+
+/*!< AHB2 secure peripherals */
+#define GPIOA_S ((GPIO_TypeDef *) GPIOA_BASE_S)
+#define GPIOB_S ((GPIO_TypeDef *) GPIOB_BASE_S)
+#define GPIOC_S ((GPIO_TypeDef *) GPIOC_BASE_S)
+#define GPIOD_S ((GPIO_TypeDef *) GPIOD_BASE_S)
+#define GPIOE_S ((GPIO_TypeDef *) GPIOE_BASE_S)
+#define GPIOF_S ((GPIO_TypeDef *) GPIOF_BASE_S)
+#define GPIOG_S ((GPIO_TypeDef *) GPIOG_BASE_S)
+#define GPIOH_S ((GPIO_TypeDef *) GPIOH_BASE_S)
+#define ADC1_S ((ADC_TypeDef *) ADC1_BASE_S)
+#define ADC2_S ((ADC_TypeDef *) ADC2_BASE_S)
+#define ADC12_COMMON_S ((ADC_Common_TypeDef *) ADC12_COMMON_BASE_S)
+#define DAC1_S ((DAC_TypeDef *) DAC1_BASE_S)
+#define DCMI_S ((DCMI_TypeDef *) DCMI_BASE_S)
+#define PSSI_S ((PSSI_TypeDef *) PSSI_BASE_S)
+#define HASH_S ((HASH_TypeDef *) HASH_BASE_S)
+#define HASH_DIGEST_S ((HASH_DIGEST_TypeDef *) HASH_DIGEST_BASE_S)
+#define AES_S ((AES_TypeDef *) AES_BASE_S)
+#define RNG_S ((RNG_TypeDef *) RNG_BASE_S)
+#define SAES_S ((AES_TypeDef *) SAES_BASE_S)
+#define PKA_S ((PKA_TypeDef *) PKA_BASE_S)
+
+/*!< APB3 secure peripherals */
+#define SBS_S ((SBS_TypeDef *) SBS_BASE_S)
+#define LPUART1_S ((USART_TypeDef *) LPUART1_BASE_S)
+#define I2C3_S ((I2C_TypeDef *) I2C3_BASE_S)
+#define I3C2_S ((I3C_TypeDef *) I3C2_BASE_S)
+#define LPTIM1_S ((LPTIM_TypeDef *) LPTIM1_BASE_S)
+#define VREFBUF_S ((VREFBUF_TypeDef *) VREFBUF_BASE_S)
+#define RTC_S ((RTC_TypeDef *) RTC_BASE_S)
+#define TAMP_S ((TAMP_TypeDef *) TAMP_BASE_S)
+
+/*!< AHB3 Secure peripherals */
+#define PWR_S ((PWR_TypeDef *) PWR_BASE_S)
+#define RCC_S ((RCC_TypeDef *) RCC_BASE_S)
+#define EXTI_S ((EXTI_TypeDef *) EXTI_BASE_S)
+
+/*!< AHB4 secure peripherals */
+#define OTFDEC1_S ((OTFDEC_TypeDef *) OTFDEC1_BASE_S)
+#define OTFDEC1_REGION1_S ((OTFDEC_Region_TypeDef *) OTFDEC1_REGION1_BASE_S)
+#define OTFDEC1_REGION2_S ((OTFDEC_Region_TypeDef *) OTFDEC1_REGION2_BASE_S)
+#define OTFDEC1_REGION3_S ((OTFDEC_Region_TypeDef *) OTFDEC1_REGION3_BASE_S)
+#define OTFDEC1_REGION4_S ((OTFDEC_Region_TypeDef *) OTFDEC1_REGION4_BASE_S)
+#define SDMMC1_S ((SDMMC_TypeDef *) SDMMC1_BASE_S)
+#define DLYB_SDMMC1_S ((DLYB_TypeDef *) DLYB_SDMMC1_BASE_S)
+
+#define FMC_Bank1_R_S ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE_S)
+#define FMC_Bank1E_R_S ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE_S)
+#define FMC_Bank3_R_S ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE_S)
+
+#define OCTOSPI1_S ((OCTOSPI_TypeDef *) OCTOSPI1_R_BASE_S)
+#define DLYB_OCTOSPI1_S ((DLYB_TypeDef *) DLYB_OCTOSPI1_BASE_S)
+
+#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE)
+
+/*!< Memory & Instance aliases and base addresses for Non-Secure/Secure peripherals */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+
+/*!< Memory base addresses for Secure peripherals */
+#define FLASH_BASE FLASH_BASE_S
+#define FLASH_OBK_BASE FLASH_OBK_BASE_S
+#define FLASH_EDATA_BASE FLASH_EDATA_BASE_S
+#define FLASH_SYSTEM_BASE FLASH_SYSTEM_BASE_S
+#define SRAM1_BASE SRAM1_BASE_S
+#define SRAM2_BASE SRAM2_BASE_S
+#define SRAM3_BASE SRAM3_BASE_S
+#define BKPSRAM_BASE BKPSRAM_BASE_S
+#define PERIPH_BASE PERIPH_BASE_S
+#define APB1PERIPH_BASE APB1PERIPH_BASE_S
+#define APB2PERIPH_BASE APB2PERIPH_BASE_S
+#define APB3PERIPH_BASE APB3PERIPH_BASE_S
+#define AHB1PERIPH_BASE AHB1PERIPH_BASE_S
+#define AHB2PERIPH_BASE AHB2PERIPH_BASE_S
+#define AHB3PERIPH_BASE AHB3PERIPH_BASE_S
+#define AHB4PERIPH_BASE AHB4PERIPH_BASE_S
+
+/*!< Instance aliases and base addresses for Secure peripherals */
+#define RCC RCC_S
+#define RCC_BASE RCC_BASE_S
+
+#define DCMI DCMI_S
+#define DCMI_BASE DCMI_BASE_S
+
+#define PSSI PSSI_S
+#define PSSI_BASE PSSI_BASE_S
+
+#define DTS DTS_S
+#define DTS_BASE DTS_BASE_S
+
+#define FLASH FLASH_S
+#define FLASH_R_BASE FLASH_R_BASE_S
+
+#define GPDMA1 GPDMA1_S
+#define GPDMA1_BASE GPDMA1_BASE_S
+
+#define GPDMA1_Channel0 GPDMA1_Channel0_S
+#define GPDMA1_Channel0_BASE GPDMA1_Channel0_BASE_S
+
+#define GPDMA1_Channel1 GPDMA1_Channel1_S
+#define GPDMA1_Channel1_BASE GPDMA1_Channel1_BASE_S
+
+#define GPDMA1_Channel2 GPDMA1_Channel2_S
+#define GPDMA1_Channel2_BASE GPDMA1_Channel2_BASE_S
+
+#define GPDMA1_Channel3 GPDMA1_Channel3_S
+#define GPDMA1_Channel3_BASE GPDMA1_Channel3_BASE_S
+
+#define GPDMA1_Channel4 GPDMA1_Channel4_S
+#define GPDMA1_Channel4_BASE GPDMA1_Channel4_BASE_S
+
+#define GPDMA1_Channel5 GPDMA1_Channel5_S
+#define GPDMA1_Channel5_BASE GPDMA1_Channel5_BASE_S
+
+#define GPDMA1_Channel6 GPDMA1_Channel6_S
+#define GPDMA1_Channel6_BASE GPDMA1_Channel6_BASE_S
+
+#define GPDMA1_Channel7 GPDMA1_Channel7_S
+#define GPDMA1_Channel7_BASE GPDMA1_Channel7_BASE_S
+
+#define GPDMA2 GPDMA2_S
+#define GPDMA2_BASE GPDMA2_BASE_S
+
+#define GPDMA2_Channel0 GPDMA2_Channel0_S
+#define GPDMA2_Channel0_BASE GPDMA2_Channel0_BASE_S
+
+#define GPDMA2_Channel1 GPDMA2_Channel1_S
+#define GPDMA2_Channel1_BASE GPDMA2_Channel1_BASE_S
+
+#define GPDMA2_Channel2 GPDMA2_Channel2_S
+#define GPDMA2_Channel2_BASE GPDMA2_Channel2_BASE_S
+
+#define GPDMA2_Channel3 GPDMA2_Channel3_S
+#define GPDMA2_Channel3_BASE GPDMA2_Channel3_BASE_S
+
+#define GPDMA2_Channel4 GPDMA2_Channel4_S
+#define GPDMA2_Channel4_BASE GPDMA2_Channel4_BASE_S
+
+#define GPDMA2_Channel5 GPDMA2_Channel5_S
+#define GPDMA2_Channel5_BASE GPDMA2_Channel5_BASE_S
+
+#define GPDMA2_Channel6 GPDMA2_Channel6_S
+#define GPDMA2_Channel6_BASE GPDMA2_Channel6_BASE_S
+
+#define GPDMA2_Channel7 GPDMA2_Channel7_S
+#define GPDMA2_Channel7_BASE GPDMA2_Channel7_BASE_S
+
+#define GPIOA GPIOA_S
+#define GPIOA_BASE GPIOA_BASE_S
+
+#define GPIOB GPIOB_S
+#define GPIOB_BASE GPIOB_BASE_S
+
+#define GPIOC GPIOC_S
+#define GPIOC_BASE GPIOC_BASE_S
+
+#define GPIOD GPIOD_S
+#define GPIOD_BASE GPIOD_BASE_S
+
+#define GPIOE GPIOE_S
+#define GPIOE_BASE GPIOE_BASE_S
+
+#define GPIOF GPIOF_S
+#define GPIOF_BASE GPIOF_BASE_S
+
+#define GPIOG GPIOG_S
+#define GPIOG_BASE GPIOG_BASE_S
+
+#define GPIOH GPIOH_S
+#define GPIOH_BASE GPIOH_BASE_S
+
+#define PWR PWR_S
+#define PWR_BASE PWR_BASE_S
+
+#define RAMCFG_SRAM1 RAMCFG_SRAM1_S
+#define RAMCFG_SRAM1_BASE RAMCFG_SRAM1_BASE_S
+
+#define RAMCFG_SRAM2 RAMCFG_SRAM2_S
+#define RAMCFG_SRAM2_BASE RAMCFG_SRAM2_BASE_S
+
+#define RAMCFG_SRAM3 RAMCFG_SRAM3_S
+#define RAMCFG_SRAM3_BASE RAMCFG_SRAM3_BASE_S
+
+#define RAMCFG_BKPRAM RAMCFG_BKPRAM_S
+#define RAMCFG_BKPRAM_BASE RAMCFG_BKPRAM_BASE_S
+
+#define EXTI EXTI_S
+#define EXTI_BASE EXTI_BASE_S
+
+#define ICACHE ICACHE_S
+#define ICACHE_BASE ICACHE_BASE_S
+
+#define DCACHE1 DCACHE1_S
+#define DCACHE1_BASE DCACHE1_BASE_S
+
+#define GTZC_TZSC1 GTZC_TZSC1_S
+#define GTZC_TZSC1_BASE GTZC_TZSC1_BASE_S
+
+#define GTZC_TZIC1 GTZC_TZIC1_S
+#define GTZC_TZIC1_BASE GTZC_TZIC1_BASE_S
+
+#define GTZC_MPCBB1 GTZC_MPCBB1_S
+#define GTZC_MPCBB1_BASE GTZC_MPCBB1_BASE_S
+
+#define GTZC_MPCBB2 GTZC_MPCBB2_S
+#define GTZC_MPCBB2_BASE GTZC_MPCBB2_BASE_S
+
+#define GTZC_MPCBB3 GTZC_MPCBB3_S
+#define GTZC_MPCBB3_BASE GTZC_MPCBB3_BASE_S
+
+#define RTC RTC_S
+#define RTC_BASE RTC_BASE_S
+
+#define TAMP TAMP_S
+#define TAMP_BASE TAMP_BASE_S
+
+#define TIM1 TIM1_S
+#define TIM1_BASE TIM1_BASE_S
+
+#define TIM2 TIM2_S
+#define TIM2_BASE TIM2_BASE_S
+
+#define TIM3 TIM3_S
+#define TIM3_BASE TIM3_BASE_S
+
+#define TIM4 TIM4_S
+#define TIM4_BASE TIM4_BASE_S
+
+#define TIM5 TIM5_S
+#define TIM5_BASE TIM5_BASE_S
+
+#define TIM6 TIM6_S
+#define TIM6_BASE TIM6_BASE_S
+
+#define TIM7 TIM7_S
+#define TIM7_BASE TIM7_BASE_S
+
+#define TIM8 TIM8_S
+#define TIM8_BASE TIM8_BASE_S
+
+#define TIM15 TIM15_S
+#define TIM15_BASE TIM15_BASE_S
+
+#define TIM12 TIM12_S
+#define TIM12_BASE TIM12_BASE_S
+
+#define WWDG WWDG_S
+#define WWDG_BASE WWDG_BASE_S
+
+#define IWDG IWDG_S
+#define IWDG_BASE IWDG_BASE_S
+
+#define SPI1 SPI1_S
+#define SPI1_BASE SPI1_BASE_S
+
+#define SPI2 SPI2_S
+#define SPI2_BASE SPI2_BASE_S
+
+#define SPI3 SPI3_S
+#define SPI3_BASE SPI3_BASE_S
+
+#define SPI4 SPI4_S
+#define SPI4_BASE SPI4_BASE_S
+
+#define USART1 USART1_S
+#define USART1_BASE USART1_BASE_S
+
+#define USART2 USART2_S
+#define USART2_BASE USART2_BASE_S
+
+#define USART3 USART3_S
+#define USART3_BASE USART3_BASE_S
+
+#define UART4 UART4_S
+#define UART4_BASE UART4_BASE_S
+
+#define UART5 UART5_S
+#define UART5_BASE UART5_BASE_S
+
+#define USART6 USART6_S
+#define USART6_BASE USART6_BASE_S
+
+#define CEC CEC_S
+#define CEC_BASE CEC_BASE_S
+
+#define I2C1 I2C1_S
+#define I2C1_BASE I2C1_BASE_S
+
+#define I2C2 I2C2_S
+#define I2C2_BASE I2C2_BASE_S
+
+#define I2C3 I2C3_S
+#define I2C3_BASE I2C3_BASE_S
+
+#define I3C1 I3C1_S
+#define I3C1_BASE I3C1_BASE_S
+
+#define I3C2 I3C2_S
+#define I3C2_BASE I3C2_BASE_S
+
+#define CRS CRS_S
+#define CRS_BASE CRS_BASE_S
+
+#define FDCAN1 FDCAN1_S
+#define FDCAN1_BASE FDCAN1_BASE_S
+
+#define FDCAN_CONFIG FDCAN_CONFIG_S
+#define FDCAN_CONFIG_BASE FDCAN_CONFIG_BASE_S
+#define SRAMCAN_BASE SRAMCAN_BASE_S
+
+#define FDCAN2 FDCAN2_S
+#define FDCAN2_BASE FDCAN2_BASE_S
+
+#define DAC1 DAC1_S
+#define DAC1_BASE DAC1_BASE_S
+
+#define LPTIM1 LPTIM1_S
+#define LPTIM1_BASE LPTIM1_BASE_S
+
+#define LPTIM2 LPTIM2_S
+#define LPTIM2_BASE LPTIM2_BASE_S
+
+#define LPUART1 LPUART1_S
+#define LPUART1_BASE LPUART1_BASE_S
+
+#define UCPD1 UCPD1_S
+#define UCPD1_BASE UCPD1_BASE_S
+
+#define SBS SBS_S
+#define SBS_BASE SBS_BASE_S
+
+#define VREFBUF VREFBUF_S
+#define VREFBUF_BASE VREFBUF_BASE_S
+
+#define USB_DRD_FS USB_DRD_FS_S
+#define USB_DRD_BASE USB_DRD_BASE_S
+#define USB_DRD_PMAADDR USB_DRD_PMAADDR_S
+#define USB_DRD_PMA_BUFF USB_DRD_PMA_BUFF_S
+
+#define CRC CRC_S
+#define CRC_BASE CRC_BASE_S
+
+#define ADC1 ADC1_S
+#define ADC1_BASE ADC1_BASE_S
+
+#define ADC2 ADC2_S
+#define ADC2_BASE ADC2_BASE_S
+
+#define ADC12_COMMON ADC12_COMMON_S
+#define ADC12_COMMON_BASE ADC12_COMMON_BASE_S
+
+#define HASH HASH_S
+#define HASH_BASE HASH_BASE_S
+
+#define HASH_DIGEST HASH_DIGEST_S
+#define HASH_DIGEST_BASE HASH_DIGEST_BASE_S
+
+#define AES AES_S
+#define AES_BASE AES_BASE_S
+
+#define RNG RNG_S
+#define RNG_BASE RNG_BASE_S
+
+#define SAES SAES_S
+#define SAES_BASE SAES_BASE_S
+
+#define PKA PKA_S
+#define PKA_BASE PKA_BASE_S
+#define PKA_RAM_BASE PKA_RAM_BASE_S
+
+#define OTFDEC1 OTFDEC1_S
+#define OTFDEC1_BASE OTFDEC1_BASE_S
+
+#define OTFDEC1_REGION1 OTFDEC1_REGION1_S
+#define OTFDEC1_REGION1_BASE OTFDEC1_REGION1_BASE_S
+
+#define OTFDEC1_REGION2 OTFDEC1_REGION2_S
+#define OTFDEC1_REGION2_BASE OTFDEC1_REGION2_BASE_S
+
+#define OTFDEC1_REGION3 OTFDEC1_REGION3_S
+#define OTFDEC1_REGION3_BASE OTFDEC1_REGION3_BASE_S
+
+#define OTFDEC1_REGION4 OTFDEC1_REGION4_S
+#define OTFDEC1_REGION4_BASE OTFDEC1_REGION4_BASE_S
+
+
+
+#define SDMMC1 SDMMC1_S
+#define SDMMC1_BASE SDMMC1_BASE_S
+
+
+#define FMC_Bank1_R FMC_Bank1_R_S
+#define FMC_Bank1_R_BASE FMC_Bank1_R_BASE_S
+
+#define FMC_Bank1E_R FMC_Bank1E_R_S
+#define FMC_Bank1E_R_BASE FMC_Bank1E_R_BASE_S
+
+#define FMC_Bank3_R FMC_Bank3_R_S
+#define FMC_Bank3_R_BASE FMC_Bank3_R_BASE_S
+
+#define OCTOSPI1 OCTOSPI1_S
+#define OCTOSPI1_R_BASE OCTOSPI1_R_BASE_S
+
+#define DLYB_SDMMC1 DLYB_SDMMC1_S
+#define DLYB_SDMMC1_BASE DLYB_SDMMC1_BASE_S
+
+#define DLYB_OCTOSPI1 DLYB_OCTOSPI1_S
+#define DLYB_OCTOSPI1_BASE DLYB_OCTOSPI1_BASE_S
+
+#else
+
+/*!< Memory base addresses for Non secure peripherals */
+#define FLASH_BASE FLASH_BASE_NS
+#define FLASH_OBK_BASE FLASH_OBK_BASE_NS
+#define FLASH_EDATA_BASE FLASH_EDATA_BASE_NS
+#define FLASH_SYSTEM_BASE FLASH_SYSTEM_BASE_NS
+
+#define SRAM1_BASE SRAM1_BASE_NS
+#define SRAM2_BASE SRAM2_BASE_NS
+
+#define SRAM3_BASE SRAM3_BASE_NS
+#define BKPSRAM_BASE BKPSRAM_BASE_NS
+
+#define PERIPH_BASE PERIPH_BASE_NS
+#define APB1PERIPH_BASE APB1PERIPH_BASE_NS
+#define APB2PERIPH_BASE APB2PERIPH_BASE_NS
+#define APB3PERIPH_BASE APB3PERIPH_BASE_NS
+#define AHB1PERIPH_BASE AHB1PERIPH_BASE_NS
+#define AHB2PERIPH_BASE AHB2PERIPH_BASE_NS
+#define AHB3PERIPH_BASE AHB3PERIPH_BASE_NS
+#define AHB4PERIPH_BASE AHB4PERIPH_BASE_NS
+
+/*!< Instance aliases and base addresses for Non secure peripherals */
+#define RCC RCC_NS
+#define RCC_BASE RCC_BASE_NS
+
+#define DCMI DCMI_NS
+#define DCMI_BASE DCMI_BASE_NS
+
+#define PSSI PSSI_NS
+#define PSSI_BASE PSSI_BASE_NS
+
+#define DTS DTS_NS
+#define DTS_BASE DTS_BASE_NS
+
+#define FLASH FLASH_NS
+#define FLASH_R_BASE FLASH_R_BASE_NS
+
+#define GPDMA1 GPDMA1_NS
+#define GPDMA1_BASE GPDMA1_BASE_NS
+
+#define GPDMA1_Channel0 GPDMA1_Channel0_NS
+#define GPDMA1_Channel0_BASE GPDMA1_Channel0_BASE_NS
+
+#define GPDMA1_Channel1 GPDMA1_Channel1_NS
+#define GPDMA1_Channel1_BASE GPDMA1_Channel1_BASE_NS
+
+#define GPDMA1_Channel2 GPDMA1_Channel2_NS
+#define GPDMA1_Channel2_BASE GPDMA1_Channel2_BASE_NS
+
+#define GPDMA1_Channel3 GPDMA1_Channel3_NS
+#define GPDMA1_Channel3_BASE GPDMA1_Channel3_BASE_NS
+
+#define GPDMA1_Channel4 GPDMA1_Channel4_NS
+#define GPDMA1_Channel4_BASE GPDMA1_Channel4_BASE_NS
+
+#define GPDMA1_Channel5 GPDMA1_Channel5_NS
+#define GPDMA1_Channel5_BASE GPDMA1_Channel5_BASE_NS
+
+#define GPDMA1_Channel6 GPDMA1_Channel6_NS
+#define GPDMA1_Channel6_BASE GPDMA1_Channel6_BASE_NS
+
+#define GPDMA1_Channel7 GPDMA1_Channel7_NS
+#define GPDMA1_Channel7_BASE GPDMA1_Channel7_BASE_NS
+
+#define GPDMA2 GPDMA2_NS
+#define GPDMA2_BASE GPDMA2_BASE_NS
+
+#define GPDMA2_Channel0 GPDMA2_Channel0_NS
+#define GPDMA2_Channel0_BASE GPDMA2_Channel0_BASE_NS
+
+#define GPDMA2_Channel1 GPDMA2_Channel1_NS
+#define GPDMA2_Channel1_BASE GPDMA2_Channel1_BASE_NS
+
+#define GPDMA2_Channel2 GPDMA2_Channel2_NS
+#define GPDMA2_Channel2_BASE GPDMA2_Channel2_BASE_NS
+
+#define GPDMA2_Channel3 GPDMA2_Channel3_NS
+#define GPDMA2_Channel3_BASE GPDMA2_Channel3_BASE_NS
+
+#define GPDMA2_Channel4 GPDMA2_Channel4_NS
+#define GPDMA2_Channel4_BASE GPDMA2_Channel4_BASE_NS
+
+#define GPDMA2_Channel5 GPDMA2_Channel5_NS
+#define GPDMA2_Channel5_BASE GPDMA2_Channel5_BASE_NS
+
+#define GPDMA2_Channel6 GPDMA2_Channel6_NS
+#define GPDMA2_Channel6_BASE GPDMA2_Channel6_BASE_NS
+
+#define GPDMA2_Channel7 GPDMA2_Channel7_NS
+#define GPDMA2_Channel7_BASE GPDMA2_Channel7_BASE_NS
+
+#define GPIOA GPIOA_NS
+#define GPIOA_BASE GPIOA_BASE_NS
+
+#define GPIOB GPIOB_NS
+#define GPIOB_BASE GPIOB_BASE_NS
+
+#define GPIOC GPIOC_NS
+#define GPIOC_BASE GPIOC_BASE_NS
+
+#define GPIOD GPIOD_NS
+#define GPIOD_BASE GPIOD_BASE_NS
+
+#define GPIOE GPIOE_NS
+#define GPIOE_BASE GPIOE_BASE_NS
+
+#define GPIOF GPIOF_NS
+#define GPIOF_BASE GPIOF_BASE_NS
+
+#define GPIOG GPIOG_NS
+#define GPIOG_BASE GPIOG_BASE_NS
+
+#define GPIOH GPIOH_NS
+#define GPIOH_BASE GPIOH_BASE_NS
+
+#define PWR PWR_NS
+#define PWR_BASE PWR_BASE_NS
+
+#define RAMCFG_SRAM1 RAMCFG_SRAM1_NS
+#define RAMCFG_SRAM1_BASE RAMCFG_SRAM1_BASE_NS
+
+#define RAMCFG_SRAM2 RAMCFG_SRAM2_NS
+#define RAMCFG_SRAM2_BASE RAMCFG_SRAM2_BASE_NS
+
+#define RAMCFG_SRAM3 RAMCFG_SRAM3_NS
+#define RAMCFG_SRAM3_BASE RAMCFG_SRAM3_BASE_NS
+
+#define RAMCFG_BKPRAM RAMCFG_BKPRAM_NS
+#define RAMCFG_BKPRAM_BASE RAMCFG_BKPRAM_BASE_NS
+
+#define EXTI EXTI_NS
+#define EXTI_BASE EXTI_BASE_NS
+
+#define ICACHE ICACHE_NS
+#define ICACHE_BASE ICACHE_BASE_NS
+
+#define DCACHE1 DCACHE1_NS
+#define DCACHE1_BASE DCACHE1_BASE_NS
+
+#define GTZC_TZSC1 GTZC_TZSC1_NS
+#define GTZC_TZSC1_BASE GTZC_TZSC1_BASE_NS
+
+#define GTZC_TZIC1 GTZC_TZIC1_NS
+#define GTZC_TZIC1_BASE GTZC_TZIC1_BASE_NS
+
+#define GTZC_MPCBB1 GTZC_MPCBB1_NS
+#define GTZC_MPCBB1_BASE GTZC_MPCBB1_BASE_NS
+
+#define GTZC_MPCBB2 GTZC_MPCBB2_NS
+#define GTZC_MPCBB2_BASE GTZC_MPCBB2_BASE_NS
+
+#define GTZC_MPCBB3 GTZC_MPCBB3_NS
+#define GTZC_MPCBB3_BASE GTZC_MPCBB3_BASE_NS
+
+#define RTC RTC_NS
+#define RTC_BASE RTC_BASE_NS
+
+#define TAMP TAMP_NS
+#define TAMP_BASE TAMP_BASE_NS
+
+#define TIM1 TIM1_NS
+#define TIM1_BASE TIM1_BASE_NS
+
+#define TIM2 TIM2_NS
+#define TIM2_BASE TIM2_BASE_NS
+
+#define TIM3 TIM3_NS
+#define TIM3_BASE TIM3_BASE_NS
+
+#define TIM4 TIM4_NS
+#define TIM4_BASE TIM4_BASE_NS
+
+#define TIM5 TIM5_NS
+#define TIM5_BASE TIM5_BASE_NS
+
+#define TIM6 TIM6_NS
+#define TIM6_BASE TIM6_BASE_NS
+
+#define TIM7 TIM7_NS
+#define TIM7_BASE TIM7_BASE_NS
+
+#define TIM8 TIM8_NS
+#define TIM8_BASE TIM8_BASE_NS
+
+#define TIM12 TIM12_NS
+#define TIM12_BASE TIM12_BASE_NS
+
+#define TIM15 TIM15_NS
+#define TIM15_BASE TIM15_BASE_NS
+
+#define WWDG WWDG_NS
+#define WWDG_BASE WWDG_BASE_NS
+
+#define IWDG IWDG_NS
+#define IWDG_BASE IWDG_BASE_NS
+
+#define SPI1 SPI1_NS
+#define SPI1_BASE SPI1_BASE_NS
+
+#define SPI2 SPI2_NS
+#define SPI2_BASE SPI2_BASE_NS
+
+#define SPI3 SPI3_NS
+#define SPI3_BASE SPI3_BASE_NS
+
+#define SPI4 SPI4_NS
+#define SPI4_BASE SPI4_BASE_NS
+
+#define USART1 USART1_NS
+#define USART1_BASE USART1_BASE_NS
+
+#define USART2 USART2_NS
+#define USART2_BASE USART2_BASE_NS
+
+#define USART3 USART3_NS
+#define USART3_BASE USART3_BASE_NS
+
+#define UART4 UART4_NS
+#define UART4_BASE UART4_BASE_NS
+
+#define UART5 UART5_NS
+#define UART5_BASE UART5_BASE_NS
+
+#define USART6 USART6_NS
+#define USART6_BASE USART6_BASE_NS
+
+#define CEC CEC_NS
+#define CEC_BASE CEC_BASE_NS
+
+#define I2C1 I2C1_NS
+#define I2C1_BASE I2C1_BASE_NS
+
+#define I2C2 I2C2_NS
+#define I2C2_BASE I2C2_BASE_NS
+
+#define I2C3 I2C3_NS
+#define I2C3_BASE I2C3_BASE_NS
+
+#define I3C1 I3C1_NS
+#define I3C1_BASE I3C1_BASE_NS
+
+#define I3C2 I3C2_NS
+#define I3C2_BASE I3C2_BASE_NS
+
+#define CRS CRS_NS
+#define CRS_BASE CRS_BASE_NS
+
+#define FDCAN1 FDCAN1_NS
+#define FDCAN1_BASE FDCAN1_BASE_NS
+
+#define FDCAN_CONFIG FDCAN_CONFIG_NS
+#define FDCAN_CONFIG_BASE FDCAN_CONFIG_BASE_NS
+#define SRAMCAN_BASE SRAMCAN_BASE_NS
+
+#define FDCAN2 FDCAN2_NS
+#define FDCAN2_BASE FDCAN2_BASE_NS
+
+#define DAC1 DAC1_NS
+#define DAC1_BASE DAC1_BASE_NS
+
+#define LPTIM1 LPTIM1_NS
+#define LPTIM1_BASE LPTIM1_BASE_NS
+
+#define LPTIM2 LPTIM2_NS
+#define LPTIM2_BASE LPTIM2_BASE_NS
+
+#define LPUART1 LPUART1_NS
+#define LPUART1_BASE LPUART1_BASE_NS
+
+#define UCPD1 UCPD1_NS
+#define UCPD1_BASE UCPD1_BASE_NS
+
+#define SBS SBS_NS
+#define SBS_BASE SBS_BASE_NS
+
+#define VREFBUF VREFBUF_NS
+#define VREFBUF_BASE VREFBUF_BASE_NS
+
+#define USB_DRD_FS USB_DRD_FS_NS
+#define USB_DRD_BASE USB_DRD_BASE_NS
+#define USB_DRD_PMAADDR USB_DRD_PMAADDR_NS
+#define USB_DRD_PMA_BUFF USB_DRD_PMA_BUFF_NS
+
+#define CRC CRC_NS
+#define CRC_BASE CRC_BASE_NS
+
+#define ADC1 ADC1_NS
+#define ADC1_BASE ADC1_BASE_NS
+
+#define ADC2 ADC2_NS
+#define ADC2_BASE ADC2_BASE_NS
+
+#define ADC12_COMMON ADC12_COMMON_NS
+#define ADC12_COMMON_BASE ADC12_COMMON_BASE_NS
+
+#define HASH HASH_NS
+#define HASH_BASE HASH_BASE_NS
+
+#define HASH_DIGEST HASH_DIGEST_NS
+#define HASH_DIGEST_BASE HASH_DIGEST_BASE_NS
+
+#define AES AES_NS
+#define AES_BASE AES_BASE_NS
+
+#define RNG RNG_NS
+#define RNG_BASE RNG_BASE_NS
+
+#define SAES SAES_NS
+#define SAES_BASE SAES_BASE_NS
+
+#define PKA PKA_NS
+#define PKA_BASE PKA_BASE_NS
+#define PKA_RAM_BASE PKA_RAM_BASE_NS
+
+#define OTFDEC1 OTFDEC1_NS
+#define OTFDEC1_BASE OTFDEC1_BASE_NS
+
+#define OTFDEC1_REGION1 OTFDEC1_REGION1_NS
+#define OTFDEC1_REGION1_BASE OTFDEC1_REGION1_BASE_NS
+
+#define OTFDEC1_REGION2 OTFDEC1_REGION2_NS
+#define OTFDEC1_REGION2_BASE OTFDEC1_REGION2_BASE_NS
+
+#define OTFDEC1_REGION3 OTFDEC1_REGION3_NS
+#define OTFDEC1_REGION3_BASE OTFDEC1_REGION3_BASE_NS
+
+#define OTFDEC1_REGION4 OTFDEC1_REGION4_NS
+#define OTFDEC1_REGION4_BASE OTFDEC1_REGION4_BASE_NS
+
+
+
+#define SDMMC1 SDMMC1_NS
+#define SDMMC1_BASE SDMMC1_BASE_NS
+
+
+#define FMC_Bank1_R FMC_Bank1_R_NS
+#define FMC_Bank1_R_BASE FMC_Bank1_R_BASE_NS
+
+#define FMC_Bank1E_R FMC_Bank1E_R_NS
+#define FMC_Bank1E_R_BASE FMC_Bank1E_R_BASE_NS
+
+#define FMC_Bank3_R FMC_Bank3_R_NS
+#define FMC_Bank3_R_BASE FMC_Bank3_R_BASE_NS
+
+#define OCTOSPI1 OCTOSPI1_NS
+#define OCTOSPI1_R_BASE OCTOSPI1_R_BASE_NS
+
+#define DLYB_SDMMC1 DLYB_SDMMC1_NS
+#define DLYB_SDMMC1_BASE DLYB_SDMMC1_BASE_NS
+
+#define DLYB_OCTOSPI1 DLYB_OCTOSPI1_NS
+#define DLYB_OCTOSPI1_BASE DLYB_OCTOSPI1_BASE_NS
+
+#endif
+
+
+/******************************************************************************/
+/* */
+/* Analog to Digital Converter */
+/* */
+/******************************************************************************/
+#define ADC_MULTIMODE_SUPPORT /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */
+/******************** Bit definition for ADC_ISR register *******************/
+#define ADC_ISR_ADRDY_Pos (0U)
+#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */
+#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */
+#define ADC_ISR_EOSMP_Pos (1U)
+#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */
+#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */
+#define ADC_ISR_EOC_Pos (2U)
+#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */
+#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */
+#define ADC_ISR_EOS_Pos (3U)
+#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */
+#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */
+#define ADC_ISR_OVR_Pos (4U)
+#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */
+#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */
+#define ADC_ISR_JEOC_Pos (5U)
+#define ADC_ISR_JEOC_Msk (0x1UL << ADC_ISR_JEOC_Pos) /*!< 0x00000020 */
+#define ADC_ISR_JEOC ADC_ISR_JEOC_Msk /*!< ADC group injected end of unitary conversion flag */
+#define ADC_ISR_JEOS_Pos (6U)
+#define ADC_ISR_JEOS_Msk (0x1UL << ADC_ISR_JEOS_Pos) /*!< 0x00000040 */
+#define ADC_ISR_JEOS ADC_ISR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */
+#define ADC_ISR_AWD1_Pos (7U)
+#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */
+#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */
+#define ADC_ISR_AWD2_Pos (8U)
+#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */
+#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */
+#define ADC_ISR_AWD3_Pos (9U)
+#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */
+#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */
+#define ADC_ISR_JQOVF_Pos (10U)
+#define ADC_ISR_JQOVF_Msk (0x1UL << ADC_ISR_JQOVF_Pos) /*!< 0x00000400 */
+#define ADC_ISR_JQOVF ADC_ISR_JQOVF_Msk /*!< ADC group injected contexts queue overflow flag */
+
+/******************** Bit definition for ADC_IER register *******************/
+#define ADC_IER_ADRDYIE_Pos (0U)
+#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */
+#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */
+#define ADC_IER_EOSMPIE_Pos (1U)
+#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */
+#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */
+#define ADC_IER_EOCIE_Pos (2U)
+#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */
+#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */
+#define ADC_IER_EOSIE_Pos (3U)
+#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */
+#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */
+#define ADC_IER_OVRIE_Pos (4U)
+#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */
+#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */
+#define ADC_IER_JEOCIE_Pos (5U)
+#define ADC_IER_JEOCIE_Msk (0x1UL << ADC_IER_JEOCIE_Pos) /*!< 0x00000020 */
+#define ADC_IER_JEOCIE ADC_IER_JEOCIE_Msk /*!< ADC group injected end of unitary conversion interrupt */
+#define ADC_IER_JEOSIE_Pos (6U)
+#define ADC_IER_JEOSIE_Msk (0x1UL << ADC_IER_JEOSIE_Pos) /*!< 0x00000040 */
+#define ADC_IER_JEOSIE ADC_IER_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */
+#define ADC_IER_AWD1IE_Pos (7U)
+#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */
+#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */
+#define ADC_IER_AWD2IE_Pos (8U)
+#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */
+#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */
+#define ADC_IER_AWD3IE_Pos (9U)
+#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */
+#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */
+#define ADC_IER_JQOVFIE_Pos (10U)
+#define ADC_IER_JQOVFIE_Msk (0x1UL << ADC_IER_JQOVFIE_Pos) /*!< 0x00000400 */
+#define ADC_IER_JQOVFIE ADC_IER_JQOVFIE_Msk /*!< ADC group injected contexts queue overflow interrupt */
+
+/******************** Bit definition for ADC_CR register ********************/
+#define ADC_CR_ADEN_Pos (0U)
+#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */
+#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */
+#define ADC_CR_ADDIS_Pos (1U)
+#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */
+#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */
+#define ADC_CR_ADSTART_Pos (2U)
+#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */
+#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */
+#define ADC_CR_JADSTART_Pos (3U)
+#define ADC_CR_JADSTART_Msk (0x1UL << ADC_CR_JADSTART_Pos) /*!< 0x00000008 */
+#define ADC_CR_JADSTART ADC_CR_JADSTART_Msk /*!< ADC group injected conversion start */
+#define ADC_CR_ADSTP_Pos (4U)
+#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */
+#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */
+#define ADC_CR_JADSTP_Pos (5U)
+#define ADC_CR_JADSTP_Msk (0x1UL << ADC_CR_JADSTP_Pos) /*!< 0x00000020 */
+#define ADC_CR_JADSTP ADC_CR_JADSTP_Msk /*!< ADC group injected conversion stop */
+#define ADC_CR_ADVREGEN_Pos (28U)
+#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */
+#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */
+#define ADC_CR_DEEPPWD_Pos (29U)
+#define ADC_CR_DEEPPWD_Msk (0x1UL << ADC_CR_DEEPPWD_Pos) /*!< 0x20000000 */
+#define ADC_CR_DEEPPWD ADC_CR_DEEPPWD_Msk /*!< ADC deep power down enable */
+#define ADC_CR_ADCALDIF_Pos (30U)
+#define ADC_CR_ADCALDIF_Msk (0x1UL << ADC_CR_ADCALDIF_Pos) /*!< 0x40000000 */
+#define ADC_CR_ADCALDIF ADC_CR_ADCALDIF_Msk /*!< ADC differential mode for calibration */
+#define ADC_CR_ADCAL_Pos (31U)
+#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */
+#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */
+
+/******************** Bit definition for ADC_CFGR register ******************/
+#define ADC_CFGR_DMAEN_Pos (0U)
+#define ADC_CFGR_DMAEN_Msk (0x1UL << ADC_CFGR_DMAEN_Pos) /*!< 0x00000001 */
+#define ADC_CFGR_DMAEN ADC_CFGR_DMAEN_Msk /*!< ADC DMA transfer enable */
+#define ADC_CFGR_DMACFG_Pos (1U)
+#define ADC_CFGR_DMACFG_Msk (0x1UL << ADC_CFGR_DMACFG_Pos) /*!< 0x00000002 */
+#define ADC_CFGR_DMACFG ADC_CFGR_DMACFG_Msk /*!< ADC DMA transfer configuration */
+
+#define ADC_CFGR_RES_Pos (3U)
+#define ADC_CFGR_RES_Msk (0x3UL << ADC_CFGR_RES_Pos) /*!< 0x00000018 */
+#define ADC_CFGR_RES ADC_CFGR_RES_Msk /*!< ADC data resolution */
+#define ADC_CFGR_RES_0 (0x1UL << ADC_CFGR_RES_Pos) /*!< 0x00000008 */
+#define ADC_CFGR_RES_1 (0x2UL << ADC_CFGR_RES_Pos) /*!< 0x00000010 */
+
+#define ADC_CFGR_EXTSEL_Pos (5U)
+#define ADC_CFGR_EXTSEL_Msk (0x1FUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003E0 */
+#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */
+#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000020 */
+#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */
+#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */
+#define ADC_CFGR_EXTSEL_3 (0x8UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */
+#define ADC_CFGR_EXTSEL_4 (0x10UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000200 */
+
+#define ADC_CFGR_EXTEN_Pos (10U)
+#define ADC_CFGR_EXTEN_Msk (0x3UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000C00 */
+#define ADC_CFGR_EXTEN ADC_CFGR_EXTEN_Msk /*!< ADC group regular external trigger polarity */
+#define ADC_CFGR_EXTEN_0 (0x1UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000400 */
+#define ADC_CFGR_EXTEN_1 (0x2UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000800 */
+
+#define ADC_CFGR_OVRMOD_Pos (12U)
+#define ADC_CFGR_OVRMOD_Msk (0x1UL << ADC_CFGR_OVRMOD_Pos) /*!< 0x00001000 */
+#define ADC_CFGR_OVRMOD ADC_CFGR_OVRMOD_Msk /*!< ADC group regular overrun configuration */
+#define ADC_CFGR_CONT_Pos (13U)
+#define ADC_CFGR_CONT_Msk (0x1UL << ADC_CFGR_CONT_Pos) /*!< 0x00002000 */
+#define ADC_CFGR_CONT ADC_CFGR_CONT_Msk /*!< ADC group regular continuous conversion mode */
+#define ADC_CFGR_AUTDLY_Pos (14U)
+#define ADC_CFGR_AUTDLY_Msk (0x1UL << ADC_CFGR_AUTDLY_Pos) /*!< 0x00004000 */
+#define ADC_CFGR_AUTDLY ADC_CFGR_AUTDLY_Msk /*!< ADC low power auto wait */
+#define ADC_CFGR_ALIGN_Pos (15U)
+#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00008000 */
+#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignment */
+#define ADC_CFGR_DISCEN_Pos (16U)
+#define ADC_CFGR_DISCEN_Msk (0x1UL << ADC_CFGR_DISCEN_Pos) /*!< 0x00010000 */
+#define ADC_CFGR_DISCEN ADC_CFGR_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */
+
+#define ADC_CFGR_DISCNUM_Pos (17U)
+#define ADC_CFGR_DISCNUM_Msk (0x7UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x000E0000 */
+#define ADC_CFGR_DISCNUM ADC_CFGR_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */
+#define ADC_CFGR_DISCNUM_0 (0x1UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00020000 */
+#define ADC_CFGR_DISCNUM_1 (0x2UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00040000 */
+#define ADC_CFGR_DISCNUM_2 (0x4UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00080000 */
+
+#define ADC_CFGR_JDISCEN_Pos (20U)
+#define ADC_CFGR_JDISCEN_Msk (0x1UL << ADC_CFGR_JDISCEN_Pos) /*!< 0x00100000 */
+#define ADC_CFGR_JDISCEN ADC_CFGR_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */
+#define ADC_CFGR_JQM_Pos (21U)
+#define ADC_CFGR_JQM_Msk (0x1UL << ADC_CFGR_JQM_Pos) /*!< 0x00200000 */
+#define ADC_CFGR_JQM ADC_CFGR_JQM_Msk /*!< ADC group injected contexts queue mode */
+#define ADC_CFGR_AWD1SGL_Pos (22U)
+#define ADC_CFGR_AWD1SGL_Msk (0x1UL << ADC_CFGR_AWD1SGL_Pos) /*!< 0x00400000 */
+#define ADC_CFGR_AWD1SGL ADC_CFGR_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */
+#define ADC_CFGR_AWD1EN_Pos (23U)
+#define ADC_CFGR_AWD1EN_Msk (0x1UL << ADC_CFGR_AWD1EN_Pos) /*!< 0x00800000 */
+#define ADC_CFGR_AWD1EN ADC_CFGR_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */
+#define ADC_CFGR_JAWD1EN_Pos (24U)
+#define ADC_CFGR_JAWD1EN_Msk (0x1UL << ADC_CFGR_JAWD1EN_Pos) /*!< 0x01000000 */
+#define ADC_CFGR_JAWD1EN ADC_CFGR_JAWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */
+#define ADC_CFGR_JAUTO_Pos (25U)
+#define ADC_CFGR_JAUTO_Msk (0x1UL << ADC_CFGR_JAUTO_Pos) /*!< 0x02000000 */
+#define ADC_CFGR_JAUTO ADC_CFGR_JAUTO_Msk /*!< ADC group injected automatic trigger mode */
+
+#define ADC_CFGR_AWD1CH_Pos (26U)
+#define ADC_CFGR_AWD1CH_Msk (0x1FUL << ADC_CFGR_AWD1CH_Pos) /*!< 0x7C000000 */
+#define ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */
+#define ADC_CFGR_AWD1CH_0 (0x01UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x04000000 */
+#define ADC_CFGR_AWD1CH_1 (0x02UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x08000000 */
+#define ADC_CFGR_AWD1CH_2 (0x04UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x10000000 */
+#define ADC_CFGR_AWD1CH_3 (0x08UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x20000000 */
+#define ADC_CFGR_AWD1CH_4 (0x10UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x40000000 */
+
+#define ADC_CFGR_JQDIS_Pos (31U)
+#define ADC_CFGR_JQDIS_Msk (0x1UL << ADC_CFGR_JQDIS_Pos) /*!< 0x80000000 */
+#define ADC_CFGR_JQDIS ADC_CFGR_JQDIS_Msk /*!< ADC group injected contexts queue disable */
+
+/******************** Bit definition for ADC_CFGR2 register *****************/
+#define ADC_CFGR2_ROVSE_Pos (0U)
+#define ADC_CFGR2_ROVSE_Msk (0x1UL << ADC_CFGR2_ROVSE_Pos) /*!< 0x00000001 */
+#define ADC_CFGR2_ROVSE ADC_CFGR2_ROVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */
+#define ADC_CFGR2_JOVSE_Pos (1U)
+#define ADC_CFGR2_JOVSE_Msk (0x1UL << ADC_CFGR2_JOVSE_Pos) /*!< 0x00000002 */
+#define ADC_CFGR2_JOVSE ADC_CFGR2_JOVSE_Msk /*!< ADC oversampler enable on scope ADC group injected */
+
+#define ADC_CFGR2_OVSR_Pos (2U)
+#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */
+#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */
+#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */
+#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */
+#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */
+
+#define ADC_CFGR2_OVSS_Pos (5U)
+#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */
+#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */
+#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */
+#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */
+#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */
+#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */
+
+#define ADC_CFGR2_TROVS_Pos (9U)
+#define ADC_CFGR2_TROVS_Msk (0x1UL << ADC_CFGR2_TROVS_Pos) /*!< 0x00000200 */
+#define ADC_CFGR2_TROVS ADC_CFGR2_TROVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */
+#define ADC_CFGR2_ROVSM_Pos (10U)
+#define ADC_CFGR2_ROVSM_Msk (0x1UL << ADC_CFGR2_ROVSM_Pos) /*!< 0x00000400 */
+#define ADC_CFGR2_ROVSM ADC_CFGR2_ROVSM_Msk /*!< ADC oversampling mode managing interlaced conversions of ADC group regular and group injected */
+
+#define ADC_CFGR2_GCOMP_Pos (16U)
+#define ADC_CFGR2_GCOMP_Msk (0x1UL << ADC_CFGR2_GCOMP_Pos) /*!< 0x00010000 */
+#define ADC_CFGR2_GCOMP ADC_CFGR2_GCOMP_Msk /*!< ADC Gain Compensation mode */
+
+#define ADC_CFGR2_SWTRIG_Pos (25U)
+#define ADC_CFGR2_SWTRIG_Msk (0x1UL << ADC_CFGR2_SWTRIG_Pos) /*!< 0x02000000 */
+#define ADC_CFGR2_SWTRIG ADC_CFGR2_SWTRIG_Msk /*!< ADC Software Trigger Bit for Sample time control trigger mode */
+#define ADC_CFGR2_BULB_Pos (26U)
+#define ADC_CFGR2_BULB_Msk (0x1UL << ADC_CFGR2_BULB_Pos) /*!< 0x04000000 */
+#define ADC_CFGR2_BULB ADC_CFGR2_BULB_Msk /*!< ADC Bulb sampling mode */
+#define ADC_CFGR2_SMPTRIG_Pos (27U)
+#define ADC_CFGR2_SMPTRIG_Msk (0x1UL << ADC_CFGR2_SMPTRIG_Pos) /*!< 0x08000000 */
+#define ADC_CFGR2_SMPTRIG ADC_CFGR2_SMPTRIG_Msk /*!< ADC Sample Time Control Trigger mode */
+
+#define ADC_CFGR2_LFTRIG_Pos (29U)
+#define ADC_CFGR2_LFTRIG_Msk (0x1UL << ADC_CFGR2_LFTRIG_Pos) /*!< 0x20000000 */
+#define ADC_CFGR2_LFTRIG ADC_CFGR2_LFTRIG_Msk /*!< ADC Low Frequency Trigger */
+
+/******************** Bit definition for ADC_SMPR1 register *****************/
+#define ADC_SMPR1_SMP0_Pos (0U)
+#define ADC_SMPR1_SMP0_Msk (0x7UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000007 */
+#define ADC_SMPR1_SMP0 ADC_SMPR1_SMP0_Msk /*!< ADC channel 0 sampling time selection */
+#define ADC_SMPR1_SMP0_0 (0x1UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000001 */
+#define ADC_SMPR1_SMP0_1 (0x2UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000002 */
+#define ADC_SMPR1_SMP0_2 (0x4UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000004 */
+
+#define ADC_SMPR1_SMP1_Pos (3U)
+#define ADC_SMPR1_SMP1_Msk (0x7UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000038 */
+#define ADC_SMPR1_SMP1 ADC_SMPR1_SMP1_Msk /*!< ADC channel 1 sampling time selection */
+#define ADC_SMPR1_SMP1_0 (0x1UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000008 */
+#define ADC_SMPR1_SMP1_1 (0x2UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000010 */
+#define ADC_SMPR1_SMP1_2 (0x4UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000020 */
+
+#define ADC_SMPR1_SMP2_Pos (6U)
+#define ADC_SMPR1_SMP2_Msk (0x7UL << ADC_SMPR1_SMP2_Pos) /*!< 0x000001C0 */
+#define ADC_SMPR1_SMP2 ADC_SMPR1_SMP2_Msk /*!< ADC channel 2 sampling time selection */
+#define ADC_SMPR1_SMP2_0 (0x1UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000040 */
+#define ADC_SMPR1_SMP2_1 (0x2UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000080 */
+#define ADC_SMPR1_SMP2_2 (0x4UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000100 */
+
+#define ADC_SMPR1_SMP3_Pos (9U)
+#define ADC_SMPR1_SMP3_Msk (0x7UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000E00 */
+#define ADC_SMPR1_SMP3 ADC_SMPR1_SMP3_Msk /*!< ADC channel 3 sampling time selection */
+#define ADC_SMPR1_SMP3_0 (0x1UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000200 */
+#define ADC_SMPR1_SMP3_1 (0x2UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000400 */
+#define ADC_SMPR1_SMP3_2 (0x4UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000800 */
+
+#define ADC_SMPR1_SMP4_Pos (12U)
+#define ADC_SMPR1_SMP4_Msk (0x7UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00007000 */
+#define ADC_SMPR1_SMP4 ADC_SMPR1_SMP4_Msk /*!< ADC channel 4 sampling time selection */
+#define ADC_SMPR1_SMP4_0 (0x1UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00001000 */
+#define ADC_SMPR1_SMP4_1 (0x2UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00002000 */
+#define ADC_SMPR1_SMP4_2 (0x4UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00004000 */
+
+#define ADC_SMPR1_SMP5_Pos (15U)
+#define ADC_SMPR1_SMP5_Msk (0x7UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00038000 */
+#define ADC_SMPR1_SMP5 ADC_SMPR1_SMP5_Msk /*!< ADC channel 5 sampling time selection */
+#define ADC_SMPR1_SMP5_0 (0x1UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00008000 */
+#define ADC_SMPR1_SMP5_1 (0x2UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00010000 */
+#define ADC_SMPR1_SMP5_2 (0x4UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00020000 */
+
+#define ADC_SMPR1_SMP6_Pos (18U)
+#define ADC_SMPR1_SMP6_Msk (0x7UL << ADC_SMPR1_SMP6_Pos) /*!< 0x001C0000 */
+#define ADC_SMPR1_SMP6 ADC_SMPR1_SMP6_Msk /*!< ADC channel 6 sampling time selection */
+#define ADC_SMPR1_SMP6_0 (0x1UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00040000 */
+#define ADC_SMPR1_SMP6_1 (0x2UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00080000 */
+#define ADC_SMPR1_SMP6_2 (0x4UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00100000 */
+
+#define ADC_SMPR1_SMP7_Pos (21U)
+#define ADC_SMPR1_SMP7_Msk (0x7UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00E00000 */
+#define ADC_SMPR1_SMP7 ADC_SMPR1_SMP7_Msk /*!< ADC channel 7 sampling time selection */
+#define ADC_SMPR1_SMP7_0 (0x1UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00200000 */
+#define ADC_SMPR1_SMP7_1 (0x2UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00400000 */
+#define ADC_SMPR1_SMP7_2 (0x4UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00800000 */
+
+#define ADC_SMPR1_SMP8_Pos (24U)
+#define ADC_SMPR1_SMP8_Msk (0x7UL << ADC_SMPR1_SMP8_Pos) /*!< 0x07000000 */
+#define ADC_SMPR1_SMP8 ADC_SMPR1_SMP8_Msk /*!< ADC channel 8 sampling time selection */
+#define ADC_SMPR1_SMP8_0 (0x1UL << ADC_SMPR1_SMP8_Pos) /*!< 0x01000000 */
+#define ADC_SMPR1_SMP8_1 (0x2UL << ADC_SMPR1_SMP8_Pos) /*!< 0x02000000 */
+#define ADC_SMPR1_SMP8_2 (0x4UL << ADC_SMPR1_SMP8_Pos) /*!< 0x04000000 */
+
+#define ADC_SMPR1_SMP9_Pos (27U)
+#define ADC_SMPR1_SMP9_Msk (0x7UL << ADC_SMPR1_SMP9_Pos) /*!< 0x38000000 */
+#define ADC_SMPR1_SMP9 ADC_SMPR1_SMP9_Msk /*!< ADC channel 9 sampling time selection */
+#define ADC_SMPR1_SMP9_0 (0x1UL << ADC_SMPR1_SMP9_Pos) /*!< 0x08000000 */
+#define ADC_SMPR1_SMP9_1 (0x2UL << ADC_SMPR1_SMP9_Pos) /*!< 0x10000000 */
+#define ADC_SMPR1_SMP9_2 (0x4UL << ADC_SMPR1_SMP9_Pos) /*!< 0x20000000 */
+
+#define ADC_SMPR1_SMPPLUS_Pos (31U)
+#define ADC_SMPR1_SMPPLUS_Msk (0x1UL << ADC_SMPR1_SMPPLUS_Pos) /*!< 0x80000000 */
+#define ADC_SMPR1_SMPPLUS ADC_SMPR1_SMPPLUS_Msk /*!< ADC channels sampling time additional setting */
+
+/******************** Bit definition for ADC_SMPR2 register *****************/
+#define ADC_SMPR2_SMP10_Pos (0U)
+#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */
+#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< ADC channel 10 sampling time selection */
+#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */
+#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */
+#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000004 */
+
+#define ADC_SMPR2_SMP11_Pos (3U)
+#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000038 */
+#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< ADC channel 11 sampling time selection */
+#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000008 */
+#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000010 */
+#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000020 */
+
+#define ADC_SMPR2_SMP12_Pos (6U)
+#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x000001C0 */
+#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< ADC channel 12 sampling time selection */
+#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000040 */
+#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000080 */
+#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000100 */
+
+#define ADC_SMPR2_SMP13_Pos (9U)
+#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000E00 */
+#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< ADC channel 13 sampling time selection */
+#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000200 */
+#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000400 */
+#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000800 */
+
+#define ADC_SMPR2_SMP14_Pos (12U)
+#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00007000 */
+#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< ADC channel 14 sampling time selection */
+#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00001000 */
+#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00002000 */
+#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00004000 */
+
+#define ADC_SMPR2_SMP15_Pos (15U)
+#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */
+#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< ADC channel 15 sampling time selection */
+#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */
+#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */
+#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */
+
+#define ADC_SMPR2_SMP16_Pos (18U)
+#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x001C0000 */
+#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< ADC channel 16 sampling time selection */
+#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00040000 */
+#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00080000 */
+#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00100000 */
+
+#define ADC_SMPR2_SMP17_Pos (21U)
+#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00E00000 */
+#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< ADC channel 17 sampling time selection */
+#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00200000 */
+#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00400000 */
+#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00800000 */
+
+#define ADC_SMPR2_SMP18_Pos (24U)
+#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x07000000 */
+#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< ADC channel 18 sampling time selection */
+#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x01000000 */
+#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x02000000 */
+#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) /*!< 0x04000000 */
+
+/******************** Bit definition for ADC_TR1 register *******************/
+#define ADC_TR1_LT1_Pos (0U)
+#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */
+#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */
+
+#define ADC_TR1_AWDFILT_Pos (12U)
+#define ADC_TR1_AWDFILT_Msk (0x7UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00007000 */
+#define ADC_TR1_AWDFILT ADC_TR1_AWDFILT_Msk /*!< ADC analog watchdog filtering parameter */
+#define ADC_TR1_AWDFILT_0 (0x1UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00001000 */
+#define ADC_TR1_AWDFILT_1 (0x2UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00002000 */
+#define ADC_TR1_AWDFILT_2 (0x4UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00004000 */
+
+#define ADC_TR1_HT1_Pos (16U)
+#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */
+#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC analog watchdog 1 threshold high */
+
+/******************** Bit definition for ADC_TR2 register *******************/
+#define ADC_TR2_LT2_Pos (0U)
+#define ADC_TR2_LT2_Msk (0xFFUL << ADC_TR2_LT2_Pos) /*!< 0x000000FF */
+#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */
+
+#define ADC_TR2_HT2_Pos (16U)
+#define ADC_TR2_HT2_Msk (0xFFUL << ADC_TR2_HT2_Pos) /*!< 0x00FF0000 */
+#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */
+
+/******************** Bit definition for ADC_TR3 register *******************/
+#define ADC_TR3_LT3_Pos (0U)
+#define ADC_TR3_LT3_Msk (0xFFUL << ADC_TR3_LT3_Pos) /*!< 0x000000FF */
+#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */
+
+#define ADC_TR3_HT3_Pos (16U)
+#define ADC_TR3_HT3_Msk (0xFFUL << ADC_TR3_HT3_Pos) /*!< 0x00FF0000 */
+#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */
+
+/******************** Bit definition for ADC_SQR1 register ******************/
+#define ADC_SQR1_L_Pos (0U)
+#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x0000000F */
+#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */
+#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00000001 */
+#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00000002 */
+#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00000004 */
+#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00000008 */
+
+#define ADC_SQR1_SQ1_Pos (6U)
+#define ADC_SQR1_SQ1_Msk (0x1FUL << ADC_SQR1_SQ1_Pos) /*!< 0x000007C0 */
+#define ADC_SQR1_SQ1 ADC_SQR1_SQ1_Msk /*!< ADC group regular sequencer rank 1 */
+#define ADC_SQR1_SQ1_0 (0x01UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000040 */
+#define ADC_SQR1_SQ1_1 (0x02UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000080 */
+#define ADC_SQR1_SQ1_2 (0x04UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000100 */
+#define ADC_SQR1_SQ1_3 (0x08UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000200 */
+#define ADC_SQR1_SQ1_4 (0x10UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR1_SQ2_Pos (12U)
+#define ADC_SQR1_SQ2_Msk (0x1FUL << ADC_SQR1_SQ2_Pos) /*!< 0x0001F000 */
+#define ADC_SQR1_SQ2 ADC_SQR1_SQ2_Msk /*!< ADC group regular sequencer rank 2 */
+#define ADC_SQR1_SQ2_0 (0x01UL << ADC_SQR1_SQ2_Pos) /*!< 0x00001000 */
+#define ADC_SQR1_SQ2_1 (0x02UL << ADC_SQR1_SQ2_Pos) /*!< 0x00002000 */
+#define ADC_SQR1_SQ2_2 (0x04UL << ADC_SQR1_SQ2_Pos) /*!< 0x00004000 */
+#define ADC_SQR1_SQ2_3 (0x08UL << ADC_SQR1_SQ2_Pos) /*!< 0x00008000 */
+#define ADC_SQR1_SQ2_4 (0x10UL << ADC_SQR1_SQ2_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR1_SQ3_Pos (18U)
+#define ADC_SQR1_SQ3_Msk (0x1FUL << ADC_SQR1_SQ3_Pos) /*!< 0x007C0000 */
+#define ADC_SQR1_SQ3 ADC_SQR1_SQ3_Msk /*!< ADC group regular sequencer rank 3 */
+#define ADC_SQR1_SQ3_0 (0x01UL << ADC_SQR1_SQ3_Pos) /*!< 0x00040000 */
+#define ADC_SQR1_SQ3_1 (0x02UL << ADC_SQR1_SQ3_Pos) /*!< 0x00080000 */
+#define ADC_SQR1_SQ3_2 (0x04UL << ADC_SQR1_SQ3_Pos) /*!< 0x00100000 */
+#define ADC_SQR1_SQ3_3 (0x08UL << ADC_SQR1_SQ3_Pos) /*!< 0x00200000 */
+#define ADC_SQR1_SQ3_4 (0x10UL<< ADC_SQR1_SQ3_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR1_SQ4_Pos (24U)
+#define ADC_SQR1_SQ4_Msk (0x1FUL << ADC_SQR1_SQ4_Pos) /*!< 0x1F000000 */
+#define ADC_SQR1_SQ4 ADC_SQR1_SQ4_Msk /*!< ADC group regular sequencer rank 4 */
+#define ADC_SQR1_SQ4_0 (0x01UL << ADC_SQR1_SQ4_Pos) /*!< 0x01000000 */
+#define ADC_SQR1_SQ4_1 (0x02UL << ADC_SQR1_SQ4_Pos) /*!< 0x02000000 */
+#define ADC_SQR1_SQ4_2 (0x04UL << ADC_SQR1_SQ4_Pos) /*!< 0x04000000 */
+#define ADC_SQR1_SQ4_3 (0x08UL << ADC_SQR1_SQ4_Pos) /*!< 0x08000000 */
+#define ADC_SQR1_SQ4_4 (0x10UL << ADC_SQR1_SQ4_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR2 register ******************/
+#define ADC_SQR2_SQ5_Pos (0U)
+#define ADC_SQR2_SQ5_Msk (0x1FUL << ADC_SQR2_SQ5_Pos) /*!< 0x0000001F */
+#define ADC_SQR2_SQ5 ADC_SQR2_SQ5_Msk /*!< ADC group regular sequencer rank 5 */
+#define ADC_SQR2_SQ5_0 (0x01UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000001 */
+#define ADC_SQR2_SQ5_1 (0x02UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000002 */
+#define ADC_SQR2_SQ5_2 (0x04UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000004 */
+#define ADC_SQR2_SQ5_3 (0x08UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000008 */
+#define ADC_SQR2_SQ5_4 (0x10UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR2_SQ6_Pos (6U)
+#define ADC_SQR2_SQ6_Msk (0x1FUL << ADC_SQR2_SQ6_Pos) /*!< 0x000007C0 */
+#define ADC_SQR2_SQ6 ADC_SQR2_SQ6_Msk /*!< ADC group regular sequencer rank 6 */
+#define ADC_SQR2_SQ6_0 (0x01UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000040 */
+#define ADC_SQR2_SQ6_1 (0x02UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000080 */
+#define ADC_SQR2_SQ6_2 (0x04UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000100 */
+#define ADC_SQR2_SQ6_3 (0x08UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000200 */
+#define ADC_SQR2_SQ6_4 (0x10UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR2_SQ7_Pos (12U)
+#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0001F000 */
+#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */
+#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00001000 */
+#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00002000 */
+#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00004000 */
+#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00008000 */
+#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR2_SQ8_Pos (18U)
+#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x007C0000 */
+#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */
+#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00040000 */
+#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00080000 */
+#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00100000 */
+#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00200000 */
+#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR2_SQ9_Pos (24U)
+#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x1F000000 */
+#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */
+#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x01000000 */
+#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x02000000 */
+#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x04000000 */
+#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x08000000 */
+#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR3 register ******************/
+#define ADC_SQR3_SQ10_Pos (0U)
+#define ADC_SQR3_SQ10_Msk (0x1FUL << ADC_SQR3_SQ10_Pos) /*!< 0x0000001F */
+#define ADC_SQR3_SQ10 ADC_SQR3_SQ10_Msk /*!< ADC group regular sequencer rank 10 */
+#define ADC_SQR3_SQ10_0 (0x01UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000001 */
+#define ADC_SQR3_SQ10_1 (0x02UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000002 */
+#define ADC_SQR3_SQ10_2 (0x04UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000004 */
+#define ADC_SQR3_SQ10_3 (0x08UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000008 */
+#define ADC_SQR3_SQ10_4 (0x10UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR3_SQ11_Pos (6U)
+#define ADC_SQR3_SQ11_Msk (0x1FUL << ADC_SQR3_SQ11_Pos) /*!< 0x000007C0 */
+#define ADC_SQR3_SQ11 ADC_SQR3_SQ11_Msk /*!< ADC group regular sequencer rank 11 */
+#define ADC_SQR3_SQ11_0 (0x01UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000040 */
+#define ADC_SQR3_SQ11_1 (0x02UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000080 */
+#define ADC_SQR3_SQ11_2 (0x04UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000100 */
+#define ADC_SQR3_SQ11_3 (0x08UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000200 */
+#define ADC_SQR3_SQ11_4 (0x10UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR3_SQ12_Pos (12U)
+#define ADC_SQR3_SQ12_Msk (0x1FUL << ADC_SQR3_SQ12_Pos) /*!< 0x0001F000 */
+#define ADC_SQR3_SQ12 ADC_SQR3_SQ12_Msk /*!< ADC group regular sequencer rank 12 */
+#define ADC_SQR3_SQ12_0 (0x01UL << ADC_SQR3_SQ12_Pos) /*!< 0x00001000 */
+#define ADC_SQR3_SQ12_1 (0x02UL << ADC_SQR3_SQ12_Pos) /*!< 0x00002000 */
+#define ADC_SQR3_SQ12_2 (0x04UL << ADC_SQR3_SQ12_Pos) /*!< 0x00004000 */
+#define ADC_SQR3_SQ12_3 (0x08UL << ADC_SQR3_SQ12_Pos) /*!< 0x00008000 */
+#define ADC_SQR3_SQ12_4 (0x10UL << ADC_SQR3_SQ12_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR3_SQ13_Pos (18U)
+#define ADC_SQR3_SQ13_Msk (0x1FUL << ADC_SQR3_SQ13_Pos) /*!< 0x007C0000 */
+#define ADC_SQR3_SQ13 ADC_SQR3_SQ13_Msk /*!< ADC group regular sequencer rank 13 */
+#define ADC_SQR3_SQ13_0 (0x01UL << ADC_SQR3_SQ13_Pos) /*!< 0x00040000 */
+#define ADC_SQR3_SQ13_1 (0x02UL << ADC_SQR3_SQ13_Pos) /*!< 0x00080000 */
+#define ADC_SQR3_SQ13_2 (0x04UL << ADC_SQR3_SQ13_Pos) /*!< 0x00100000 */
+#define ADC_SQR3_SQ13_3 (0x08UL << ADC_SQR3_SQ13_Pos) /*!< 0x00200000 */
+#define ADC_SQR3_SQ13_4 (0x10UL << ADC_SQR3_SQ13_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR3_SQ14_Pos (24U)
+#define ADC_SQR3_SQ14_Msk (0x1FUL << ADC_SQR3_SQ14_Pos) /*!< 0x1F000000 */
+#define ADC_SQR3_SQ14 ADC_SQR3_SQ14_Msk /*!< ADC group regular sequencer rank 14 */
+#define ADC_SQR3_SQ14_0 (0x01UL << ADC_SQR3_SQ14_Pos) /*!< 0x01000000 */
+#define ADC_SQR3_SQ14_1 (0x02UL << ADC_SQR3_SQ14_Pos) /*!< 0x02000000 */
+#define ADC_SQR3_SQ14_2 (0x04UL << ADC_SQR3_SQ14_Pos) /*!< 0x04000000 */
+#define ADC_SQR3_SQ14_3 (0x08UL << ADC_SQR3_SQ14_Pos) /*!< 0x08000000 */
+#define ADC_SQR3_SQ14_4 (0x10UL << ADC_SQR3_SQ14_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR4 register ******************/
+#define ADC_SQR4_SQ15_Pos (0U)
+#define ADC_SQR4_SQ15_Msk (0x1FUL << ADC_SQR4_SQ15_Pos) /*!< 0x0000001F */
+#define ADC_SQR4_SQ15 ADC_SQR4_SQ15_Msk /*!< ADC group regular sequencer rank 15 */
+#define ADC_SQR4_SQ15_0 (0x01UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000001 */
+#define ADC_SQR4_SQ15_1 (0x02UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000002 */
+#define ADC_SQR4_SQ15_2 (0x04UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000004 */
+#define ADC_SQR4_SQ15_3 (0x08UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000008 */
+#define ADC_SQR4_SQ15_4 (0x10UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR4_SQ16_Pos (6U)
+#define ADC_SQR4_SQ16_Msk (0x1FUL << ADC_SQR4_SQ16_Pos) /*!< 0x000007C0 */
+#define ADC_SQR4_SQ16 ADC_SQR4_SQ16_Msk /*!< ADC group regular sequencer rank 16 */
+#define ADC_SQR4_SQ16_0 (0x01UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000040 */
+#define ADC_SQR4_SQ16_1 (0x02UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000080 */
+#define ADC_SQR4_SQ16_2 (0x04UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000100 */
+#define ADC_SQR4_SQ16_3 (0x08UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000200 */
+#define ADC_SQR4_SQ16_4 (0x10UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000400 */
+
+/******************** Bit definition for ADC_DR register ********************/
+#define ADC_DR_RDATA_Pos (0U)
+#define ADC_DR_RDATA_Msk (0xFFFFUL << ADC_DR_RDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_DR_RDATA ADC_DR_RDATA_Msk /*!< ADC group regular conversion data */
+
+/******************** Bit definition for ADC_JSQR register ******************/
+#define ADC_JSQR_JL_Pos (0U)
+#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00000003 */
+#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */
+#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00000001 */
+#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00000002 */
+
+#define ADC_JSQR_JEXTSEL_Pos (2U)
+#define ADC_JSQR_JEXTSEL_Msk (0x1FUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000007C */
+#define ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_Msk /*!< ADC group injected external trigger source */
+#define ADC_JSQR_JEXTSEL_0 (0x1UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000004 */
+#define ADC_JSQR_JEXTSEL_1 (0x2UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000008 */
+#define ADC_JSQR_JEXTSEL_2 (0x4UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000010 */
+#define ADC_JSQR_JEXTSEL_3 (0x8UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000020 */
+#define ADC_JSQR_JEXTSEL_4 (0x10UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000040 */
+
+#define ADC_JSQR_JEXTEN_Pos (7U)
+#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000180 */
+#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */
+#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */
+#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000100 */
+
+#define ADC_JSQR_JSQ1_Pos (9U)
+#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00003E00 */
+#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */
+#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */
+#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */
+#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */
+#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */
+#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00002000 */
+
+#define ADC_JSQR_JSQ2_Pos (15U)
+#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x0007C000 */
+#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */
+#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00004000 */
+#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00008000 */
+#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00010000 */
+#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00020000 */
+#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00040000 */
+
+#define ADC_JSQR_JSQ3_Pos (21U)
+#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x03E00000 */
+#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */
+#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */
+#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */
+#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */
+#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */
+#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x02000000 */
+
+#define ADC_JSQR_JSQ4_Pos (27U)
+#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0xF8000000 */
+#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */
+#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */
+#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */
+#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */
+#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */
+#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x80000000 */
+
+/******************** Bit definition for ADC_OFR1 register ******************/
+#define ADC_OFR1_OFFSET1_Pos (0U)
+#define ADC_OFR1_OFFSET1_Msk (0xFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000FFF */
+#define ADC_OFR1_OFFSET1 ADC_OFR1_OFFSET1_Msk /*!< ADC offset number 1 offset level */
+
+#define ADC_OFR1_OFFSETPOS_Pos (24U)
+#define ADC_OFR1_OFFSETPOS_Msk (0x1UL << ADC_OFR1_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR1_OFFSETPOS ADC_OFR1_OFFSETPOS_Msk /*!< ADC offset number 1 positive */
+#define ADC_OFR1_SATEN_Pos (25U)
+#define ADC_OFR1_SATEN_Msk (0x1UL << ADC_OFR1_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR1_SATEN ADC_OFR1_SATEN_Msk /*!< ADC offset number 1 saturation enable */
+
+#define ADC_OFR1_OFFSET1_CH_Pos (26U)
+#define ADC_OFR1_OFFSET1_CH_Msk (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR1_OFFSET1_CH ADC_OFR1_OFFSET1_CH_Msk /*!< ADC offset number 1 channel selection */
+#define ADC_OFR1_OFFSET1_CH_0 (0x01UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR1_OFFSET1_CH_1 (0x02UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR1_OFFSET1_CH_2 (0x04UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR1_OFFSET1_CH_3 (0x08UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR1_OFFSET1_CH_4 (0x10UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR1_OFFSET1_EN_Pos (31U)
+#define ADC_OFR1_OFFSET1_EN_Msk (0x1UL << ADC_OFR1_OFFSET1_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR1_OFFSET1_EN ADC_OFR1_OFFSET1_EN_Msk /*!< ADC offset number 1 enable */
+
+/******************** Bit definition for ADC_OFR2 register ******************/
+#define ADC_OFR2_OFFSET2_Pos (0U)
+#define ADC_OFR2_OFFSET2_Msk (0xFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000FFF */
+#define ADC_OFR2_OFFSET2 ADC_OFR2_OFFSET2_Msk /*!< ADC offset number 2 offset level */
+
+#define ADC_OFR2_OFFSETPOS_Pos (24U)
+#define ADC_OFR2_OFFSETPOS_Msk (0x1UL << ADC_OFR2_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR2_OFFSETPOS ADC_OFR2_OFFSETPOS_Msk /*!< ADC offset number 2 positive */
+#define ADC_OFR2_SATEN_Pos (25U)
+#define ADC_OFR2_SATEN_Msk (0x1UL << ADC_OFR2_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR2_SATEN ADC_OFR2_SATEN_Msk /*!< ADC offset number 2 saturation enable */
+
+#define ADC_OFR2_OFFSET2_CH_Pos (26U)
+#define ADC_OFR2_OFFSET2_CH_Msk (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR2_OFFSET2_CH ADC_OFR2_OFFSET2_CH_Msk /*!< ADC offset number 2 channel selection */
+#define ADC_OFR2_OFFSET2_CH_0 (0x01UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR2_OFFSET2_CH_1 (0x02UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR2_OFFSET2_CH_2 (0x04UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR2_OFFSET2_CH_3 (0x08UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR2_OFFSET2_CH_4 (0x10UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR2_OFFSET2_EN_Pos (31U)
+#define ADC_OFR2_OFFSET2_EN_Msk (0x1UL << ADC_OFR2_OFFSET2_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR2_OFFSET2_EN ADC_OFR2_OFFSET2_EN_Msk /*!< ADC offset number 2 enable */
+
+/******************** Bit definition for ADC_OFR3 register ******************/
+#define ADC_OFR3_OFFSET3_Pos (0U)
+#define ADC_OFR3_OFFSET3_Msk (0xFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000FFF */
+#define ADC_OFR3_OFFSET3 ADC_OFR3_OFFSET3_Msk /*!< ADC offset number 3 offset level */
+
+#define ADC_OFR3_OFFSETPOS_Pos (24U)
+#define ADC_OFR3_OFFSETPOS_Msk (0x1UL << ADC_OFR3_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR3_OFFSETPOS ADC_OFR3_OFFSETPOS_Msk /*!< ADC offset number 3 positive */
+#define ADC_OFR3_SATEN_Pos (25U)
+#define ADC_OFR3_SATEN_Msk (0x1UL << ADC_OFR3_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR3_SATEN ADC_OFR3_SATEN_Msk /*!< ADC offset number 3 saturation enable */
+
+#define ADC_OFR3_OFFSET3_CH_Pos (26U)
+#define ADC_OFR3_OFFSET3_CH_Msk (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR3_OFFSET3_CH ADC_OFR3_OFFSET3_CH_Msk /*!< ADC offset number 3 channel selection */
+#define ADC_OFR3_OFFSET3_CH_0 (0x01UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR3_OFFSET3_CH_1 (0x02UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR3_OFFSET3_CH_2 (0x04UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR3_OFFSET3_CH_3 (0x08UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR3_OFFSET3_CH_4 (0x10UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR3_OFFSET3_EN_Pos (31U)
+#define ADC_OFR3_OFFSET3_EN_Msk (0x1UL << ADC_OFR3_OFFSET3_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR3_OFFSET3_EN ADC_OFR3_OFFSET3_EN_Msk /*!< ADC offset number 3 enable */
+
+/******************** Bit definition for ADC_OFR4 register ******************/
+#define ADC_OFR4_OFFSET4_Pos (0U)
+#define ADC_OFR4_OFFSET4_Msk (0xFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000FFF */
+#define ADC_OFR4_OFFSET4 ADC_OFR4_OFFSET4_Msk /*!< ADC offset number 4 offset level */
+
+#define ADC_OFR4_OFFSETPOS_Pos (24U)
+#define ADC_OFR4_OFFSETPOS_Msk (0x1UL << ADC_OFR4_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR4_OFFSETPOS ADC_OFR4_OFFSETPOS_Msk /*!< ADC offset number 4 positive */
+#define ADC_OFR4_SATEN_Pos (25U)
+#define ADC_OFR4_SATEN_Msk (0x1UL << ADC_OFR4_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR4_SATEN ADC_OFR4_SATEN_Msk /*!< ADC offset number 4 saturation enable */
+
+#define ADC_OFR4_OFFSET4_CH_Pos (26U)
+#define ADC_OFR4_OFFSET4_CH_Msk (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR4_OFFSET4_CH ADC_OFR4_OFFSET4_CH_Msk /*!< ADC offset number 4 channel selection */
+#define ADC_OFR4_OFFSET4_CH_0 (0x01UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR4_OFFSET4_CH_1 (0x02UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR4_OFFSET4_CH_2 (0x04UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR4_OFFSET4_CH_3 (0x08UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR4_OFFSET4_CH_4 (0x10UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR4_OFFSET4_EN_Pos (31U)
+#define ADC_OFR4_OFFSET4_EN_Msk (0x1UL << ADC_OFR4_OFFSET4_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR4_OFFSET4_EN ADC_OFR4_OFFSET4_EN_Msk /*!< ADC offset number 4 enable */
+
+/******************** Bit definition for ADC_JDR1 register ******************/
+#define ADC_JDR1_JDATA_Pos (0U)
+#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */
+
+/******************** Bit definition for ADC_JDR2 register ******************/
+#define ADC_JDR2_JDATA_Pos (0U)
+#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */
+
+/******************** Bit definition for ADC_JDR3 register ******************/
+#define ADC_JDR3_JDATA_Pos (0U)
+#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */
+
+/******************** Bit definition for ADC_JDR4 register ******************/
+#define ADC_JDR4_JDATA_Pos (0U)
+#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */
+
+/******************** Bit definition for ADC_AWD2CR register ****************/
+#define ADC_AWD2CR_AWD2CH_Pos (0U)
+#define ADC_AWD2CR_AWD2CH_Msk (0xFFFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */
+#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */
+#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */
+#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */
+#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */
+#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */
+#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */
+#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */
+#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */
+#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */
+#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */
+#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */
+#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */
+#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */
+#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */
+#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */
+#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */
+#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */
+#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */
+#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */
+#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */
+#define ADC_AWD2CR_AWD2CH_19 (0x80000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_AWD3CR register ****************/
+#define ADC_AWD3CR_AWD3CH_Pos (0U)
+#define ADC_AWD3CR_AWD3CH_Msk (0xFFFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */
+#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */
+#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */
+#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */
+#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */
+#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */
+#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */
+#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */
+#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */
+#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */
+#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */
+#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */
+#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */
+#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */
+#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */
+#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */
+#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */
+#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */
+#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */
+#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */
+#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */
+#define ADC_AWD3CR_AWD2CH_19 (0x80000UL << ADC_AWD3CR_AWD2CH_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_DIFSEL register ****************/
+#define ADC_DIFSEL_DIFSEL_Pos (0U)
+#define ADC_DIFSEL_DIFSEL_Msk (0xFFFFFUL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x0007FFFF */
+#define ADC_DIFSEL_DIFSEL ADC_DIFSEL_DIFSEL_Msk /*!< ADC channel differential or single-ended mode */
+#define ADC_DIFSEL_DIFSEL_0 (0x00001UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000001 */
+#define ADC_DIFSEL_DIFSEL_1 (0x00002UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000002 */
+#define ADC_DIFSEL_DIFSEL_2 (0x00004UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000004 */
+#define ADC_DIFSEL_DIFSEL_3 (0x00008UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000008 */
+#define ADC_DIFSEL_DIFSEL_4 (0x00010UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000010 */
+#define ADC_DIFSEL_DIFSEL_5 (0x00020UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000020 */
+#define ADC_DIFSEL_DIFSEL_6 (0x00040UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000040 */
+#define ADC_DIFSEL_DIFSEL_7 (0x00080UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000080 */
+#define ADC_DIFSEL_DIFSEL_8 (0x00100UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000100 */
+#define ADC_DIFSEL_DIFSEL_9 (0x00200UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000200 */
+#define ADC_DIFSEL_DIFSEL_10 (0x00400UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000400 */
+#define ADC_DIFSEL_DIFSEL_11 (0x00800UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000800 */
+#define ADC_DIFSEL_DIFSEL_12 (0x01000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00001000 */
+#define ADC_DIFSEL_DIFSEL_13 (0x02000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00002000 */
+#define ADC_DIFSEL_DIFSEL_14 (0x04000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00004000 */
+#define ADC_DIFSEL_DIFSEL_15 (0x08000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00008000 */
+#define ADC_DIFSEL_DIFSEL_16 (0x10000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00010000 */
+#define ADC_DIFSEL_DIFSEL_17 (0x20000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00020000 */
+#define ADC_DIFSEL_DIFSEL_18 (0x40000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00040000 */
+#define ADC_DIFSEL_DIFSEL_19 (0x80000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_CALFACT register ***************/
+#define ADC_CALFACT_CALFACT_S_Pos (0U)
+#define ADC_CALFACT_CALFACT_S_Msk (0x7FUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x0000007F */
+#define ADC_CALFACT_CALFACT_S ADC_CALFACT_CALFACT_S_Msk /*!< ADC calibration factor in single-ended mode */
+#define ADC_CALFACT_CALFACT_S_0 (0x01UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */
+#define ADC_CALFACT_CALFACT_S_1 (0x02UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */
+#define ADC_CALFACT_CALFACT_S_2 (0x04UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */
+#define ADC_CALFACT_CALFACT_S_3 (0x08UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */
+#define ADC_CALFACT_CALFACT_S_4 (0x10UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */
+#define ADC_CALFACT_CALFACT_S_5 (0x20UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */
+#define ADC_CALFACT_CALFACT_S_6 (0x40UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000030 */
+
+#define ADC_CALFACT_CALFACT_D_Pos (16U)
+#define ADC_CALFACT_CALFACT_D_Msk (0x7FUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x007F0000 */
+#define ADC_CALFACT_CALFACT_D ADC_CALFACT_CALFACT_D_Msk /*!< ADC calibration factor in differential mode */
+#define ADC_CALFACT_CALFACT_D_0 (0x01UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */
+#define ADC_CALFACT_CALFACT_D_1 (0x02UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */
+#define ADC_CALFACT_CALFACT_D_2 (0x04UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */
+#define ADC_CALFACT_CALFACT_D_3 (0x08UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */
+#define ADC_CALFACT_CALFACT_D_4 (0x10UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */
+#define ADC_CALFACT_CALFACT_D_5 (0x20UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */
+#define ADC_CALFACT_CALFACT_D_6 (0x40UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00300000 */
+
+/******************** Bit definition for ADC_OR register *****************/
+#define ADC_OR_OP0_Pos (0U)
+#define ADC_OR_OP0_Msk (0x01UL << ADC_OR_OP0_Pos) /*!< 0x00000001 */
+#define ADC_OR_OP0 ADC_OR_OP0_Msk /*!< ADC Option bit 0 */
+#define ADC_OR_OP1_Pos (1U)
+#define ADC_OR_OP1_Msk (0x01UL << ADC_OR_OP1_Pos) /*!< 0x00000001 */
+#define ADC_OR_OP1 ADC_OR_OP1_Msk /*!< ADC Option bit 1 */
+
+/************************* ADC Common registers *****************************/
+/******************** Bit definition for ADC_CSR register *******************/
+#define ADC_CSR_ADRDY_MST_Pos (0U)
+#define ADC_CSR_ADRDY_MST_Msk (0x1UL << ADC_CSR_ADRDY_MST_Pos) /*!< 0x00000001 */
+#define ADC_CSR_ADRDY_MST ADC_CSR_ADRDY_MST_Msk /*!< ADC multimode master ready flag */
+#define ADC_CSR_EOSMP_MST_Pos (1U)
+#define ADC_CSR_EOSMP_MST_Msk (0x1UL << ADC_CSR_EOSMP_MST_Pos) /*!< 0x00000002 */
+#define ADC_CSR_EOSMP_MST ADC_CSR_EOSMP_MST_Msk /*!< ADC multimode master group regular end of sampling flag */
+#define ADC_CSR_EOC_MST_Pos (2U)
+#define ADC_CSR_EOC_MST_Msk (0x1UL << ADC_CSR_EOC_MST_Pos) /*!< 0x00000004 */
+#define ADC_CSR_EOC_MST ADC_CSR_EOC_MST_Msk /*!< ADC multimode master group regular end of unitary conversion flag */
+#define ADC_CSR_EOS_MST_Pos (3U)
+#define ADC_CSR_EOS_MST_Msk (0x1UL << ADC_CSR_EOS_MST_Pos) /*!< 0x00000008 */
+#define ADC_CSR_EOS_MST ADC_CSR_EOS_MST_Msk /*!< ADC multimode master group regular end of sequence conversions flag */
+#define ADC_CSR_OVR_MST_Pos (4U)
+#define ADC_CSR_OVR_MST_Msk (0x1UL << ADC_CSR_OVR_MST_Pos) /*!< 0x00000010 */
+#define ADC_CSR_OVR_MST ADC_CSR_OVR_MST_Msk /*!< ADC multimode master group regular overrun flag */
+#define ADC_CSR_JEOC_MST_Pos (5U)
+#define ADC_CSR_JEOC_MST_Msk (0x1UL << ADC_CSR_JEOC_MST_Pos) /*!< 0x00000020 */
+#define ADC_CSR_JEOC_MST ADC_CSR_JEOC_MST_Msk /*!< ADC multimode master group injected end of unitary conversion flag */
+#define ADC_CSR_JEOS_MST_Pos (6U)
+#define ADC_CSR_JEOS_MST_Msk (0x1UL << ADC_CSR_JEOS_MST_Pos) /*!< 0x00000040 */
+#define ADC_CSR_JEOS_MST ADC_CSR_JEOS_MST_Msk /*!< ADC multimode master group injected end of sequence conversions flag */
+#define ADC_CSR_AWD1_MST_Pos (7U)
+#define ADC_CSR_AWD1_MST_Msk (0x1UL << ADC_CSR_AWD1_MST_Pos) /*!< 0x00000080 */
+#define ADC_CSR_AWD1_MST ADC_CSR_AWD1_MST_Msk /*!< ADC multimode master analog watchdog 1 flag */
+#define ADC_CSR_AWD2_MST_Pos (8U)
+#define ADC_CSR_AWD2_MST_Msk (0x1UL << ADC_CSR_AWD2_MST_Pos) /*!< 0x00000100 */
+#define ADC_CSR_AWD2_MST ADC_CSR_AWD2_MST_Msk /*!< ADC multimode master analog watchdog 2 flag */
+#define ADC_CSR_AWD3_MST_Pos (9U)
+#define ADC_CSR_AWD3_MST_Msk (0x1UL << ADC_CSR_AWD3_MST_Pos) /*!< 0x00000200 */
+#define ADC_CSR_AWD3_MST ADC_CSR_AWD3_MST_Msk /*!< ADC multimode master analog watchdog 3 flag */
+#define ADC_CSR_JQOVF_MST_Pos (10U)
+#define ADC_CSR_JQOVF_MST_Msk (0x1UL << ADC_CSR_JQOVF_MST_Pos) /*!< 0x00000400 */
+#define ADC_CSR_JQOVF_MST ADC_CSR_JQOVF_MST_Msk /*!< ADC multimode master group injected contexts queue overflow flag */
+
+#define ADC_CSR_ADRDY_SLV_Pos (16U)
+#define ADC_CSR_ADRDY_SLV_Msk (0x1UL << ADC_CSR_ADRDY_SLV_Pos) /*!< 0x00010000 */
+#define ADC_CSR_ADRDY_SLV ADC_CSR_ADRDY_SLV_Msk /*!< ADC multimode slave ready flag */
+#define ADC_CSR_EOSMP_SLV_Pos (17U)
+#define ADC_CSR_EOSMP_SLV_Msk (0x1UL << ADC_CSR_EOSMP_SLV_Pos) /*!< 0x00020000 */
+#define ADC_CSR_EOSMP_SLV ADC_CSR_EOSMP_SLV_Msk /*!< ADC multimode slave group regular end of sampling flag */
+#define ADC_CSR_EOC_SLV_Pos (18U)
+#define ADC_CSR_EOC_SLV_Msk (0x1UL << ADC_CSR_EOC_SLV_Pos) /*!< 0x00040000 */
+#define ADC_CSR_EOC_SLV ADC_CSR_EOC_SLV_Msk /*!< ADC multimode slave group regular end of unitary conversion flag */
+#define ADC_CSR_EOS_SLV_Pos (19U)
+#define ADC_CSR_EOS_SLV_Msk (0x1UL << ADC_CSR_EOS_SLV_Pos) /*!< 0x00080000 */
+#define ADC_CSR_EOS_SLV ADC_CSR_EOS_SLV_Msk /*!< ADC multimode slave group regular end of sequence conversions flag */
+#define ADC_CSR_OVR_SLV_Pos (20U)
+#define ADC_CSR_OVR_SLV_Msk (0x1UL << ADC_CSR_OVR_SLV_Pos) /*!< 0x00100000 */
+#define ADC_CSR_OVR_SLV ADC_CSR_OVR_SLV_Msk /*!< ADC multimode slave group regular overrun flag */
+#define ADC_CSR_JEOC_SLV_Pos (21U)
+#define ADC_CSR_JEOC_SLV_Msk (0x1UL << ADC_CSR_JEOC_SLV_Pos) /*!< 0x00200000 */
+#define ADC_CSR_JEOC_SLV ADC_CSR_JEOC_SLV_Msk /*!< ADC multimode slave group injected end of unitary conversion flag */
+#define ADC_CSR_JEOS_SLV_Pos (22U)
+#define ADC_CSR_JEOS_SLV_Msk (0x1UL << ADC_CSR_JEOS_SLV_Pos) /*!< 0x00400000 */
+#define ADC_CSR_JEOS_SLV ADC_CSR_JEOS_SLV_Msk /*!< ADC multimode slave group injected end of sequence conversions flag */
+#define ADC_CSR_AWD1_SLV_Pos (23U)
+#define ADC_CSR_AWD1_SLV_Msk (0x1UL << ADC_CSR_AWD1_SLV_Pos) /*!< 0x00800000 */
+#define ADC_CSR_AWD1_SLV ADC_CSR_AWD1_SLV_Msk /*!< ADC multimode slave analog watchdog 1 flag */
+#define ADC_CSR_AWD2_SLV_Pos (24U)
+#define ADC_CSR_AWD2_SLV_Msk (0x1UL << ADC_CSR_AWD2_SLV_Pos) /*!< 0x01000000 */
+#define ADC_CSR_AWD2_SLV ADC_CSR_AWD2_SLV_Msk /*!< ADC multimode slave analog watchdog 2 flag */
+#define ADC_CSR_AWD3_SLV_Pos (25U)
+#define ADC_CSR_AWD3_SLV_Msk (0x1UL << ADC_CSR_AWD3_SLV_Pos) /*!< 0x02000000 */
+#define ADC_CSR_AWD3_SLV ADC_CSR_AWD3_SLV_Msk /*!< ADC multimode slave analog watchdog 3 flag */
+#define ADC_CSR_JQOVF_SLV_Pos (26U)
+#define ADC_CSR_JQOVF_SLV_Msk (0x1UL << ADC_CSR_JQOVF_SLV_Pos) /*!< 0x04000000 */
+#define ADC_CSR_JQOVF_SLV ADC_CSR_JQOVF_SLV_Msk /*!< ADC multimode slave group injected contexts queue overflow flag */
+
+/******************** Bit definition for ADC_CCR register *******************/
+#define ADC_CCR_DUAL_Pos (0U)
+#define ADC_CCR_DUAL_Msk (0x1FUL << ADC_CCR_DUAL_Pos) /*!< 0x0000001F */
+#define ADC_CCR_DUAL ADC_CCR_DUAL_Msk /*!< ADC multimode mode selection */
+#define ADC_CCR_DUAL_0 (0x01UL << ADC_CCR_DUAL_Pos) /*!< 0x00000001 */
+#define ADC_CCR_DUAL_1 (0x02UL << ADC_CCR_DUAL_Pos) /*!< 0x00000002 */
+#define ADC_CCR_DUAL_2 (0x04UL << ADC_CCR_DUAL_Pos) /*!< 0x00000004 */
+#define ADC_CCR_DUAL_3 (0x08UL << ADC_CCR_DUAL_Pos) /*!< 0x00000008 */
+#define ADC_CCR_DUAL_4 (0x10UL << ADC_CCR_DUAL_Pos) /*!< 0x00000010 */
+
+#define ADC_CCR_DELAY_Pos (8U)
+#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */
+#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!< ADC multimode delay between 2 sampling phases */
+#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */
+#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */
+#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */
+#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */
+
+#define ADC_CCR_DMACFG_Pos (13U)
+#define ADC_CCR_DMACFG_Msk (0x1UL << ADC_CCR_DMACFG_Pos) /*!< 0x00002000 */
+#define ADC_CCR_DMACFG ADC_CCR_DMACFG_Msk /*!< ADC multimode DMA transfer configuration */
+
+#define ADC_CCR_MDMA_Pos (14U)
+#define ADC_CCR_MDMA_Msk (0x3UL << ADC_CCR_MDMA_Pos) /*!< 0x0000C000 */
+#define ADC_CCR_MDMA ADC_CCR_MDMA_Msk /*!< ADC multimode DMA transfer enable */
+#define ADC_CCR_MDMA_0 (0x1UL << ADC_CCR_MDMA_Pos) /*!< 0x00004000 */
+#define ADC_CCR_MDMA_1 (0x2UL << ADC_CCR_MDMA_Pos) /*!< 0x00008000 */
+
+#define ADC_CCR_CKMODE_Pos (16U)
+#define ADC_CCR_CKMODE_Msk (0x3UL << ADC_CCR_CKMODE_Pos) /*!< 0x00030000 */
+#define ADC_CCR_CKMODE ADC_CCR_CKMODE_Msk /*!< ADC common clock source and prescaler (prescaler only for clock source synchronous) */
+#define ADC_CCR_CKMODE_0 (0x1UL << ADC_CCR_CKMODE_Pos) /*!< 0x00010000 */
+#define ADC_CCR_CKMODE_1 (0x2UL << ADC_CCR_CKMODE_Pos) /*!< 0x00020000 */
+
+#define ADC_CCR_PRESC_Pos (18U)
+#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */
+#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */
+#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */
+#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */
+#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */
+#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */
+
+#define ADC_CCR_VREFEN_Pos (22U)
+#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */
+#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */
+#define ADC_CCR_TSEN_Pos (23U)
+#define ADC_CCR_TSEN_Msk (0x1UL << ADC_CCR_TSEN_Pos) /*!< 0x00800000 */
+#define ADC_CCR_TSEN ADC_CCR_TSEN_Msk /*!< ADC internal path to temperature sensor enable */
+#define ADC_CCR_VBATEN_Pos (24U)
+#define ADC_CCR_VBATEN_Msk (0x1UL << ADC_CCR_VBATEN_Pos) /*!< 0x01000000 */
+#define ADC_CCR_VBATEN ADC_CCR_VBATEN_Msk /*!< ADC internal path to battery voltage enable */
+
+/******************** Bit definition for ADC_CDR register *******************/
+#define ADC_CDR_RDATA_MST_Pos (0U)
+#define ADC_CDR_RDATA_MST_Msk (0xFFFFUL << ADC_CDR_RDATA_MST_Pos) /*!< 0x0000FFFF */
+#define ADC_CDR_RDATA_MST ADC_CDR_RDATA_MST_Msk /*!< ADC multimode master group regular conversion data */
+
+#define ADC_CDR_RDATA_SLV_Pos (16U)
+#define ADC_CDR_RDATA_SLV_Msk (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos) /*!< 0xFFFF0000 */
+#define ADC_CDR_RDATA_SLV ADC_CDR_RDATA_SLV_Msk /*!< ADC multimode slave group regular conversion data */
+
+
+
+/******************************************************************************/
+/* */
+/* CRC calculation unit */
+/* */
+/******************************************************************************/
+/******************* Bit definition for CRC_DR register *********************/
+#define CRC_DR_DR_Pos (0U)
+#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */
+#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */
+
+/******************* Bit definition for CRC_IDR register ********************/
+#define CRC_IDR_IDR_Pos (0U)
+#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */
+#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bits data register bits */
+
+/******************** Bit definition for CRC_CR register ********************/
+#define CRC_CR_RESET_Pos (0U)
+#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */
+#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */
+#define CRC_CR_POLYSIZE_Pos (3U)
+#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */
+#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */
+#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */
+#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */
+#define CRC_CR_REV_IN_Pos (5U)
+#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */
+#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */
+#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */
+#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */
+#define CRC_CR_REV_OUT_Pos (7U)
+#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */
+#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */
+
+/******************* Bit definition for CRC_INIT register *******************/
+#define CRC_INIT_INIT_Pos (0U)
+#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */
+#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */
+
+/******************* Bit definition for CRC_POL register ********************/
+#define CRC_POL_POL_Pos (0U)
+#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */
+#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */
+
+
+/******************************************************************************/
+/* */
+/* CRS Clock Recovery System */
+/******************************************************************************/
+/******************* Bit definition for CRS_CR register *********************/
+#define CRS_CR_SYNCOKIE_Pos (0U)
+#define CRS_CR_SYNCOKIE_Msk (0x1UL << CRS_CR_SYNCOKIE_Pos) /*!< 0x00000001 */
+#define CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE_Msk /*!< SYNC event OK interrupt enable */
+#define CRS_CR_SYNCWARNIE_Pos (1U)
+#define CRS_CR_SYNCWARNIE_Msk (0x1UL << CRS_CR_SYNCWARNIE_Pos) /*!< 0x00000002 */
+#define CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE_Msk /*!< SYNC warning interrupt enable */
+#define CRS_CR_ERRIE_Pos (2U)
+#define CRS_CR_ERRIE_Msk (0x1UL << CRS_CR_ERRIE_Pos) /*!< 0x00000004 */
+#define CRS_CR_ERRIE CRS_CR_ERRIE_Msk /*!< SYNC error or trimming error interrupt enable */
+#define CRS_CR_ESYNCIE_Pos (3U)
+#define CRS_CR_ESYNCIE_Msk (0x1UL << CRS_CR_ESYNCIE_Pos) /*!< 0x00000008 */
+#define CRS_CR_ESYNCIE CRS_CR_ESYNCIE_Msk /*!< Expected SYNC interrupt enable */
+#define CRS_CR_CEN_Pos (5U)
+#define CRS_CR_CEN_Msk (0x1UL << CRS_CR_CEN_Pos) /*!< 0x00000020 */
+#define CRS_CR_CEN CRS_CR_CEN_Msk /*!< Frequency error counter enable */
+#define CRS_CR_AUTOTRIMEN_Pos (6U)
+#define CRS_CR_AUTOTRIMEN_Msk (0x1UL << CRS_CR_AUTOTRIMEN_Pos) /*!< 0x00000040 */
+#define CRS_CR_AUTOTRIMEN CRS_CR_AUTOTRIMEN_Msk /*!< Automatic trimming enable */
+#define CRS_CR_SWSYNC_Pos (7U)
+#define CRS_CR_SWSYNC_Msk (0x1UL << CRS_CR_SWSYNC_Pos) /*!< 0x00000080 */
+#define CRS_CR_SWSYNC CRS_CR_SWSYNC_Msk /*!< Generate software SYNC event */
+#define CRS_CR_TRIM_Pos (8U)
+#define CRS_CR_TRIM_Msk (0x3FUL << CRS_CR_TRIM_Pos) /*!< 0x00003F00 */
+#define CRS_CR_TRIM CRS_CR_TRIM_Msk /*!< HSI48 oscillator smooth trimming */
+
+/******************* Bit definition for CRS_CFGR register *********************/
+#define CRS_CFGR_RELOAD_Pos (0U)
+#define CRS_CFGR_RELOAD_Msk (0xFFFFUL << CRS_CFGR_RELOAD_Pos) /*!< 0x0000FFFF */
+#define CRS_CFGR_RELOAD CRS_CFGR_RELOAD_Msk /*!< Counter reload value */
+#define CRS_CFGR_FELIM_Pos (16U)
+#define CRS_CFGR_FELIM_Msk (0xFFUL << CRS_CFGR_FELIM_Pos) /*!< 0x00FF0000 */
+#define CRS_CFGR_FELIM CRS_CFGR_FELIM_Msk /*!< Frequency error limit */
+#define CRS_CFGR_SYNCDIV_Pos (24U)
+#define CRS_CFGR_SYNCDIV_Msk (0x7UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x07000000 */
+#define CRS_CFGR_SYNCDIV CRS_CFGR_SYNCDIV_Msk /*!< SYNC divider */
+#define CRS_CFGR_SYNCDIV_0 (0x1UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x01000000 */
+#define CRS_CFGR_SYNCDIV_1 (0x2UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x02000000 */
+#define CRS_CFGR_SYNCDIV_2 (0x4UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x04000000 */
+#define CRS_CFGR_SYNCSRC_Pos (28U)
+#define CRS_CFGR_SYNCSRC_Msk (0x3UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x30000000 */
+#define CRS_CFGR_SYNCSRC CRS_CFGR_SYNCSRC_Msk /*!< SYNC signal source selection */
+#define CRS_CFGR_SYNCSRC_0 (0x1UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x10000000 */
+#define CRS_CFGR_SYNCSRC_1 (0x2UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x20000000 */
+#define CRS_CFGR_SYNCPOL_Pos (31U)
+#define CRS_CFGR_SYNCPOL_Msk (0x1UL << CRS_CFGR_SYNCPOL_Pos) /*!< 0x80000000 */
+#define CRS_CFGR_SYNCPOL CRS_CFGR_SYNCPOL_Msk /*!< SYNC polarity selection */
+
+/******************* Bit definition for CRS_ISR register *********************/
+#define CRS_ISR_SYNCOKF_Pos (0U)
+#define CRS_ISR_SYNCOKF_Msk (0x1UL << CRS_ISR_SYNCOKF_Pos) /*!< 0x00000001 */
+#define CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF_Msk /*!< SYNC event OK flag */
+#define CRS_ISR_SYNCWARNF_Pos (1U)
+#define CRS_ISR_SYNCWARNF_Msk (0x1UL << CRS_ISR_SYNCWARNF_Pos) /*!< 0x00000002 */
+#define CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF_Msk /*!< SYNC warning flag */
+#define CRS_ISR_ERRF_Pos (2U)
+#define CRS_ISR_ERRF_Msk (0x1UL << CRS_ISR_ERRF_Pos) /*!< 0x00000004 */
+#define CRS_ISR_ERRF CRS_ISR_ERRF_Msk /*!< Error flag */
+#define CRS_ISR_ESYNCF_Pos (3U)
+#define CRS_ISR_ESYNCF_Msk (0x1UL << CRS_ISR_ESYNCF_Pos) /*!< 0x00000008 */
+#define CRS_ISR_ESYNCF CRS_ISR_ESYNCF_Msk /*!< Expected SYNC flag */
+#define CRS_ISR_SYNCERR_Pos (8U)
+#define CRS_ISR_SYNCERR_Msk (0x1UL << CRS_ISR_SYNCERR_Pos) /*!< 0x00000100 */
+#define CRS_ISR_SYNCERR CRS_ISR_SYNCERR_Msk /*!< SYNC error */
+#define CRS_ISR_SYNCMISS_Pos (9U)
+#define CRS_ISR_SYNCMISS_Msk (0x1UL << CRS_ISR_SYNCMISS_Pos) /*!< 0x00000200 */
+#define CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS_Msk /*!< SYNC missed */
+#define CRS_ISR_TRIMOVF_Pos (10U)
+#define CRS_ISR_TRIMOVF_Msk (0x1UL << CRS_ISR_TRIMOVF_Pos) /*!< 0x00000400 */
+#define CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF_Msk /*!< Trimming overflow or underflow */
+#define CRS_ISR_FEDIR_Pos (15U)
+#define CRS_ISR_FEDIR_Msk (0x1UL << CRS_ISR_FEDIR_Pos) /*!< 0x00008000 */
+#define CRS_ISR_FEDIR CRS_ISR_FEDIR_Msk /*!< Frequency error direction */
+#define CRS_ISR_FECAP_Pos (16U)
+#define CRS_ISR_FECAP_Msk (0xFFFFUL << CRS_ISR_FECAP_Pos) /*!< 0xFFFF0000 */
+#define CRS_ISR_FECAP CRS_ISR_FECAP_Msk /*!< Frequency error capture */
+
+/******************* Bit definition for CRS_ICR register *********************/
+#define CRS_ICR_SYNCOKC_Pos (0U)
+#define CRS_ICR_SYNCOKC_Msk (0x1UL << CRS_ICR_SYNCOKC_Pos) /*!< 0x00000001 */
+#define CRS_ICR_SYNCOKC CRS_ICR_SYNCOKC_Msk /*!< SYNC event OK clear flag */
+#define CRS_ICR_SYNCWARNC_Pos (1U)
+#define CRS_ICR_SYNCWARNC_Msk (0x1UL << CRS_ICR_SYNCWARNC_Pos) /*!< 0x00000002 */
+#define CRS_ICR_SYNCWARNC CRS_ICR_SYNCWARNC_Msk /*!< SYNC warning clear flag */
+#define CRS_ICR_ERRC_Pos (2U)
+#define CRS_ICR_ERRC_Msk (0x1UL << CRS_ICR_ERRC_Pos) /*!< 0x00000004 */
+#define CRS_ICR_ERRC CRS_ICR_ERRC_Msk /*!< Error clear flag */
+#define CRS_ICR_ESYNCC_Pos (3U)
+#define CRS_ICR_ESYNCC_Msk (0x1UL << CRS_ICR_ESYNCC_Pos) /*!< 0x00000008 */
+#define CRS_ICR_ESYNCC CRS_ICR_ESYNCC_Msk /*!< Expected SYNC clear flag */
+
+
+/******************************************************************************/
+/* */
+/* RNG */
+/* */
+/******************************************************************************/
+/******************** Bits definition for RNG_CR register *******************/
+#define RNG_CR_RNGEN_Pos (2U)
+#define RNG_CR_RNGEN_Msk (0x1UL << RNG_CR_RNGEN_Pos) /*!< 0x00000004 */
+#define RNG_CR_RNGEN RNG_CR_RNGEN_Msk
+#define RNG_CR_IE_Pos (3U)
+#define RNG_CR_IE_Msk (0x1UL << RNG_CR_IE_Pos) /*!< 0x00000008 */
+#define RNG_CR_IE RNG_CR_IE_Msk
+#define RNG_CR_CED_Pos (5U)
+#define RNG_CR_CED_Msk (0x1UL << RNG_CR_CED_Pos) /*!< 0x00000020 */
+#define RNG_CR_CED RNG_CR_CED_Msk
+#define RNG_CR_ARDIS_Pos (7U)
+#define RNG_CR_ARDIS_Msk (0x1UL << RNG_CR_ARDIS_Pos)
+#define RNG_CR_ARDIS RNG_CR_ARDIS_Msk
+#define RNG_CR_RNG_CONFIG3_Pos (8U)
+#define RNG_CR_RNG_CONFIG3_Msk (0xFUL << RNG_CR_RNG_CONFIG3_Pos)
+#define RNG_CR_RNG_CONFIG3 RNG_CR_RNG_CONFIG3_Msk
+#define RNG_CR_NISTC_Pos (12U)
+#define RNG_CR_NISTC_Msk (0x1UL << RNG_CR_NISTC_Pos)
+#define RNG_CR_NISTC RNG_CR_NISTC_Msk
+#define RNG_CR_RNG_CONFIG2_Pos (13U)
+#define RNG_CR_RNG_CONFIG2_Msk (0x7UL << RNG_CR_RNG_CONFIG2_Pos)
+#define RNG_CR_RNG_CONFIG2 RNG_CR_RNG_CONFIG2_Msk
+#define RNG_CR_CLKDIV_Pos (16U)
+#define RNG_CR_CLKDIV_Msk (0xFUL << RNG_CR_CLKDIV_Pos)
+#define RNG_CR_CLKDIV RNG_CR_CLKDIV_Msk
+#define RNG_CR_CLKDIV_0 (0x1UL << RNG_CR_CLKDIV_Pos) /*!< 0x00010000 */
+#define RNG_CR_CLKDIV_1 (0x2UL << RNG_CR_CLKDIV_Pos) /*!< 0x00020000 */
+#define RNG_CR_CLKDIV_2 (0x4UL << RNG_CR_CLKDIV_Pos) /*!< 0x00040000 */
+#define RNG_CR_CLKDIV_3 (0x8UL << RNG_CR_CLKDIV_Pos) /*!< 0x00080000 */
+#define RNG_CR_RNG_CONFIG1_Pos (20U)
+#define RNG_CR_RNG_CONFIG1_Msk (0x3FUL << RNG_CR_RNG_CONFIG1_Pos)
+#define RNG_CR_RNG_CONFIG1 RNG_CR_RNG_CONFIG1_Msk
+#define RNG_CR_CONDRST_Pos (30U)
+#define RNG_CR_CONDRST_Msk (0x1UL << RNG_CR_CONDRST_Pos)
+#define RNG_CR_CONDRST RNG_CR_CONDRST_Msk
+#define RNG_CR_CONFIGLOCK_Pos (31U)
+#define RNG_CR_CONFIGLOCK_Msk (0x1UL << RNG_CR_CONFIGLOCK_Pos)
+#define RNG_CR_CONFIGLOCK RNG_CR_CONFIGLOCK_Msk
+
+/******************** Bits definition for RNG_SR register *******************/
+#define RNG_SR_DRDY_Pos (0U)
+#define RNG_SR_DRDY_Msk (0x1UL << RNG_SR_DRDY_Pos) /*!< 0x00000001 */
+#define RNG_SR_DRDY RNG_SR_DRDY_Msk
+#define RNG_SR_CECS_Pos (1U)
+#define RNG_SR_CECS_Msk (0x1UL << RNG_SR_CECS_Pos) /*!< 0x00000002 */
+#define RNG_SR_CECS RNG_SR_CECS_Msk
+#define RNG_SR_SECS_Pos (2U)
+#define RNG_SR_SECS_Msk (0x1UL << RNG_SR_SECS_Pos) /*!< 0x00000004 */
+#define RNG_SR_SECS RNG_SR_SECS_Msk
+#define RNG_SR_CEIS_Pos (5U)
+#define RNG_SR_CEIS_Msk (0x1UL << RNG_SR_CEIS_Pos) /*!< 0x00000020 */
+#define RNG_SR_CEIS RNG_SR_CEIS_Msk
+#define RNG_SR_SEIS_Pos (6U)
+#define RNG_SR_SEIS_Msk (0x1UL << RNG_SR_SEIS_Pos) /*!< 0x00000040 */
+#define RNG_SR_SEIS RNG_SR_SEIS_Msk
+
+
+/******************** Bits definition for RNG_HTCR register *******************/
+#define RNG_HTCR_HTCFG_Pos (0U)
+#define RNG_HTCR_HTCFG_Msk (0xFFFFFFFFUL << RNG_HTCR_HTCFG_Pos) /*!< 0xFFFFFFFF */
+#define RNG_HTCR_HTCFG RNG_HTCR_HTCFG_Msk
+
+/******************** RNG Nist Compliance Values ******************************/
+#define RNG_CR_NIST_VALUE (0x00F00D00U)
+#define RNG_HTCR_NIST_VALUE (0xAAC7U)
+
+/******************************************************************************/
+/* */
+/* Digital to Analog Converter */
+/* */
+/******************************************************************************/
+#define DAC_CHANNEL2_SUPPORT /*!< DAC feature available only on specific devices: DAC channel 2 available */
+
+/******************** Bit definition for DAC_CR register ********************/
+#define DAC_CR_EN1_Pos (0U)
+#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */
+#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!*/
+#define DAC_CR_CEN1_Pos (14U)
+#define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */
+#define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!*/
+#define DAC_CR_EN2_Pos (16U)
+#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */
+#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!*/
+#define DAC_CR_CEN2_Pos (30U)
+#define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */
+#define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!*/
+
+/***************** Bit definition for DAC_SWTRIGR register ******************/
+#define DAC_SWTRIGR_SWTRIG1_Pos (0U)
+#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */
+#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!> 1U) /*!< FLASH Bank Size */
+#define FLASH_SECTOR_SIZE 0x2000U /*!< Flash Sector Size: 8 KB */
+
+/******************* Bits definition for FLASH_ACR register *****************/
+#define FLASH_ACR_LATENCY_Pos (0U)
+#define FLASH_ACR_LATENCY_Msk (0xFUL << FLASH_ACR_LATENCY_Pos) /*!< 0x0000000F */
+#define FLASH_ACR_LATENCY FLASH_ACR_LATENCY_Msk /*!< Latency */
+#define FLASH_ACR_LATENCY_0WS (0x00000000U)
+#define FLASH_ACR_LATENCY_1WS (0x00000001U)
+#define FLASH_ACR_LATENCY_2WS (0x00000002U)
+#define FLASH_ACR_LATENCY_3WS (0x00000003U)
+#define FLASH_ACR_LATENCY_4WS (0x00000004U)
+#define FLASH_ACR_LATENCY_5WS (0x00000005U)
+#define FLASH_ACR_LATENCY_6WS (0x00000006U)
+#define FLASH_ACR_LATENCY_7WS (0x00000007U)
+#define FLASH_ACR_LATENCY_8WS (0x00000008U)
+#define FLASH_ACR_LATENCY_9WS (0x00000009U)
+#define FLASH_ACR_LATENCY_10WS (0x0000000AU)
+#define FLASH_ACR_LATENCY_11WS (0x0000000BU)
+#define FLASH_ACR_LATENCY_12WS (0x0000000CU)
+#define FLASH_ACR_LATENCY_13WS (0x0000000DU)
+#define FLASH_ACR_LATENCY_14WS (0x0000000EU)
+#define FLASH_ACR_LATENCY_15WS (0x0000000FU)
+#define FLASH_ACR_WRHIGHFREQ_Pos (4U)
+#define FLASH_ACR_WRHIGHFREQ_Msk (0x3UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000030 */
+#define FLASH_ACR_WRHIGHFREQ FLASH_ACR_WRHIGHFREQ_Msk /*!< Flash signal delay */
+#define FLASH_ACR_WRHIGHFREQ_0 (0x1UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000010 */
+#define FLASH_ACR_WRHIGHFREQ_1 (0x2UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000020 */
+#define FLASH_ACR_PRFTEN_Pos (8U)
+#define FLASH_ACR_PRFTEN_Msk (0x1UL << FLASH_ACR_PRFTEN_Pos) /*!< 0x00000100 */
+#define FLASH_ACR_PRFTEN FLASH_ACR_PRFTEN_Msk /*!< Prefetch enable */
+
+/******************* Bits definition for FLASH_OPSR register ***************/
+#define FLASH_OPSR_ADDR_OP_Pos (0U)
+#define FLASH_OPSR_ADDR_OP_Msk (0xFFFFFUL << FLASH_OPSR_ADDR_OP_Pos) /*!< 0x000FFFFF */
+#define FLASH_OPSR_ADDR_OP FLASH_OPSR_ADDR_OP_Msk /*!< Interrupted operation address */
+#define FLASH_OPSR_DATA_OP_Pos (21U)
+#define FLASH_OPSR_DATA_OP_Msk (0x1UL << FLASH_OPSR_DATA_OP_Pos) /*!< 0x00200000 */
+#define FLASH_OPSR_DATA_OP FLASH_OPSR_DATA_OP_Msk /*!< Operation in Flash high-cycle data area interrupted */
+#define FLASH_OPSR_BK_OP_Pos (22U)
+#define FLASH_OPSR_BK_OP_Msk (0x1UL << FLASH_OPSR_BK_OP_Pos) /*!< 0x00400000 */
+#define FLASH_OPSR_BK_OP FLASH_OPSR_BK_OP_Msk /*!< Interrupted operation bank */
+#define FLASH_OPSR_SYSF_OP_Pos (23U)
+#define FLASH_OPSR_SYSF_OP_Msk (0x1UL << FLASH_OPSR_SYSF_OP_Pos) /*!< 0x00800000 */
+#define FLASH_OPSR_SYSF_OP FLASH_OPSR_SYSF_OP_Msk /*!< Operation in System Flash interrupted */
+#define FLASH_OPSR_OTP_OP_Pos (24U)
+#define FLASH_OPSR_OTP_OP_Msk (0x1UL << FLASH_OPSR_OTP_OP_Pos) /*!< 0x01000000 */
+#define FLASH_OPSR_OTP_OP FLASH_OPSR_OTP_OP_Msk /*!< Operation in OTP area interrupted */
+#define FLASH_OPSR_CODE_OP_Pos (29U)
+#define FLASH_OPSR_CODE_OP_Msk (0x7UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0xE0000000 */
+#define FLASH_OPSR_CODE_OP FLASH_OPSR_CODE_OP_Msk /*!< Flash memory operation code */
+#define FLASH_OPSR_CODE_OP_0 (0x1UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x20000000 */
+#define FLASH_OPSR_CODE_OP_1 (0x2UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x40000000 */
+#define FLASH_OPSR_CODE_OP_2 (0x4UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x80000000 */
+
+/******************* Bits definition for FLASH_OPTCR register *******************/
+#define FLASH_OPTCR_OPTLOCK_Pos (0U)
+#define FLASH_OPTCR_OPTLOCK_Msk (0x1UL << FLASH_OPTCR_OPTLOCK_Pos) /*!< 0x00000001 */
+#define FLASH_OPTCR_OPTLOCK FLASH_OPTCR_OPTLOCK_Msk /*!< FLASH_OPTCR lock option configuration bit */
+#define FLASH_OPTCR_OPTSTART_Pos (1U)
+#define FLASH_OPTCR_OPTSTART_Msk (0x1UL << FLASH_OPTCR_OPTSTART_Pos) /*!< 0x00000002 */
+#define FLASH_OPTCR_OPTSTART FLASH_OPTCR_OPTSTART_Msk /*!< Option byte start change option configuration bit */
+#define FLASH_OPTCR_SWAP_BANK_Pos (31U)
+#define FLASH_OPTCR_SWAP_BANK_Msk (0x1UL << FLASH_OPTCR_SWAP_BANK_Pos) /*!< 0x80000000 */
+#define FLASH_OPTCR_SWAP_BANK FLASH_OPTCR_SWAP_BANK_Msk /*!< Bank swapping option configuration bit */
+
+/******************* Bits definition for FLASH_SR register ***********************/
+#define FLASH_SR_BSY_Pos (0U)
+#define FLASH_SR_BSY_Msk (0x1UL << FLASH_SR_BSY_Pos) /*!< 0x00000001 */
+#define FLASH_SR_BSY FLASH_SR_BSY_Msk /*!< Busy flag */
+#define FLASH_SR_WBNE_Pos (1U)
+#define FLASH_SR_WBNE_Msk (0x1UL << FLASH_SR_WBNE_Pos) /*!< 0x00000002 */
+#define FLASH_SR_WBNE FLASH_SR_WBNE_Msk /*!< Write buffer not empty flag */
+#define FLASH_SR_DBNE_Pos (3U)
+#define FLASH_SR_DBNE_Msk (0x1UL << FLASH_SR_DBNE_Pos) /*!< 0x00000008 */
+#define FLASH_SR_DBNE FLASH_SR_DBNE_Msk /*!< Data buffer not empty flag */
+#define FLASH_SR_EOP_Pos (16U)
+#define FLASH_SR_EOP_Msk (0x1UL << FLASH_SR_EOP_Pos) /*!< 0x00010000 */
+#define FLASH_SR_EOP FLASH_SR_EOP_Msk /*!< End-of-program flag */
+#define FLASH_SR_WRPERR_Pos (17U)
+#define FLASH_SR_WRPERR_Msk (0x1UL << FLASH_SR_WRPERR_Pos) /*!< 0x00020000 */
+#define FLASH_SR_WRPERR FLASH_SR_WRPERR_Msk /*!< Write protection error flag */
+#define FLASH_SR_PGSERR_Pos (18U)
+#define FLASH_SR_PGSERR_Msk (0x1UL << FLASH_SR_PGSERR_Pos) /*!< 0x00040000 */
+#define FLASH_SR_PGSERR FLASH_SR_PGSERR_Msk /*!< Programming sequence error flag */
+#define FLASH_SR_STRBERR_Pos (19U)
+#define FLASH_SR_STRBERR_Msk (0x1UL << FLASH_SR_STRBERR_Pos) /*!< 0x00080000 */
+#define FLASH_SR_STRBERR FLASH_SR_STRBERR_Msk /*!< Strobe error flag */
+#define FLASH_SR_INCERR_Pos (20U)
+#define FLASH_SR_INCERR_Msk (0x1UL << FLASH_SR_INCERR_Pos) /*!< 0x00100000 */
+#define FLASH_SR_INCERR FLASH_SR_INCERR_Msk /*!< Inconsistency error flag */
+#define FLASH_SR_OBKERR_Pos (21U)
+#define FLASH_SR_OBKERR_Msk (0x1UL << FLASH_SR_OBKERR_Pos) /*!< 0x00200000 */
+#define FLASH_SR_OBKERR FLASH_SR_OBKERR_Msk /*!< OBK general error flag */
+#define FLASH_SR_OBKWERR_Pos (22U)
+#define FLASH_SR_OBKWERR_Msk (0x1UL << FLASH_SR_OBKWERR_Pos) /*!< 0x00400000 */
+#define FLASH_SR_OBKWERR FLASH_SR_OBKWERR_Msk /*!< OBK write error flag */
+#define FLASH_SR_OPTCHANGEERR_Pos (23U)
+#define FLASH_SR_OPTCHANGEERR_Msk (0x1UL << FLASH_SR_OPTCHANGEERR_Pos) /*!< 0x00800000 */
+#define FLASH_SR_OPTCHANGEERR FLASH_SR_OPTCHANGEERR_Msk /*!< Option byte change error flag */
+
+/******************* Bits definition for FLASH_CR register ***********************/
+#define FLASH_CR_LOCK_Pos (0U)
+#define FLASH_CR_LOCK_Msk (0x1UL << FLASH_CR_LOCK_Pos) /*!< 0x00000001 */
+#define FLASH_CR_LOCK FLASH_CR_LOCK_Msk /*!< Configuration lock bit */
+#define FLASH_CR_PG_Pos (1U)
+#define FLASH_CR_PG_Msk (0x1UL << FLASH_CR_PG_Pos) /*!< 0x00000002 */
+#define FLASH_CR_PG FLASH_CR_PG_Msk /*!< Programming control bit */
+#define FLASH_CR_SER_Pos (2U)
+#define FLASH_CR_SER_Msk (0x1UL << FLASH_CR_SER_Pos) /*!< 0x00000004 */
+#define FLASH_CR_SER FLASH_CR_SER_Msk /*!< Sector erase request */
+#define FLASH_CR_BER_Pos (3U)
+#define FLASH_CR_BER_Msk (0x1UL << FLASH_CR_BER_Pos) /*!< 0x00000008 */
+#define FLASH_CR_BER FLASH_CR_BER_Msk /*!< Bank erase request */
+#define FLASH_CR_FW_Pos (4U)
+#define FLASH_CR_FW_Msk (0x1UL << FLASH_CR_FW_Pos) /*!< 0x00000010 */
+#define FLASH_CR_FW FLASH_CR_FW_Msk /*!< Write forcing control bit */
+#define FLASH_CR_START_Pos (5U)
+#define FLASH_CR_START_Msk (0x1UL << FLASH_CR_START_Pos) /*!< 0x00000020 */
+#define FLASH_CR_START FLASH_CR_START_Msk /*!< Erase start control bit */
+#define FLASH_CR_SNB_Pos (6U)
+#define FLASH_CR_SNB_Msk (0x1FUL << FLASH_CR_SNB_Pos) /*!< 0x00001FC0 */
+#define FLASH_CR_SNB FLASH_CR_SNB_Msk /*!< Sector erase selection number */
+#define FLASH_CR_SNB_0 (0x01UL << FLASH_CR_SNB_Pos) /*!< 0x00000040 */
+#define FLASH_CR_SNB_1 (0x02UL << FLASH_CR_SNB_Pos) /*!< 0x00000080 */
+#define FLASH_CR_SNB_2 (0x04UL << FLASH_CR_SNB_Pos) /*!< 0x00000100 */
+#define FLASH_CR_SNB_3 (0x08UL << FLASH_CR_SNB_Pos) /*!< 0x00000200 */
+#define FLASH_CR_SNB_4 (0x10UL << FLASH_CR_SNB_Pos) /*!< 0x00000400 */
+#define FLASH_CR_SNB_5 (0x20UL << FLASH_CR_SNB_Pos) /*!< 0x00000800 */
+#define FLASH_CR_SNB_6 (0x40UL << FLASH_CR_SNB_Pos) /*!< 0x00001000 */
+#define FLASH_CR_MER_Pos (15U)
+#define FLASH_CR_MER_Msk (0x1UL << FLASH_CR_MER_Pos) /*!< 0x00008000 */
+#define FLASH_CR_MER FLASH_CR_MER_Msk /*!< Mass erase */
+#define FLASH_CR_EOPIE_Pos (16U)
+#define FLASH_CR_EOPIE_Msk (0x1UL << FLASH_CR_EOPIE_Pos) /*!< 0x00010000 */
+#define FLASH_CR_EOPIE FLASH_CR_EOPIE_Msk /*!< End-of-operation interrupt control bit */
+#define FLASH_CR_WRPERRIE_Pos (17U)
+#define FLASH_CR_WRPERRIE_Msk (0x1UL << FLASH_CR_WRPERRIE_Pos) /*!< 0x00020000 */
+#define FLASH_CR_WRPERRIE FLASH_CR_WRPERRIE_Msk /*!< Write protection error interrupt enable bit */
+#define FLASH_CR_PGSERRIE_Pos (18U)
+#define FLASH_CR_PGSERRIE_Msk (0x1UL << FLASH_CR_PGSERRIE_Pos) /*!< 0x00040000 */
+#define FLASH_CR_PGSERRIE FLASH_CR_PGSERRIE_Msk /*!< Programming sequence error interrupt enable bit */
+#define FLASH_CR_STRBERRIE_Pos (19U)
+#define FLASH_CR_STRBERRIE_Msk (0x1UL << FLASH_CR_STRBERRIE_Pos) /*!< 0x00080000 */
+#define FLASH_CR_STRBERRIE FLASH_CR_STRBERRIE_Msk /*!< Strobe error interrupt enable bit */
+#define FLASH_CR_INCERRIE_Pos (20U)
+#define FLASH_CR_INCERRIE_Msk (0x1UL << FLASH_CR_INCERRIE_Pos) /*!< 0x00100000 */
+#define FLASH_CR_INCERRIE FLASH_CR_INCERRIE_Msk /*!< Inconsistency error interrupt enable bit */
+#define FLASH_CR_OBKERRIE_Pos (21U)
+#define FLASH_CR_OBKERRIE_Msk (0x1UL << FLASH_CR_OBKERRIE_Pos) /*!< 0x00200000 */
+#define FLASH_CR_OBKERRIE FLASH_CR_OBKERRIE_Msk /*!< OBK general error interrupt enable bitt */
+#define FLASH_CR_OBKWERRIE_Pos (22U)
+#define FLASH_CR_OBKWERRIE_Msk (0x1UL << FLASH_CR_OBKWERRIE_Pos) /*!< 0x00400000 */
+#define FLASH_CR_OBKWERRIE FLASH_CR_OBKWERRIE_Msk /*!< OBK write error interrupt enable bit */
+#define FLASH_CR_OPTCHANGEERRIE_Pos (23U)
+#define FLASH_CR_OPTCHANGEERRIE_Msk (0x1UL << FLASH_CR_OPTCHANGEERRIE_Pos) /*!< 0x00800000 */
+#define FLASH_CR_OPTCHANGEERRIE FLASH_CR_OPTCHANGEERRIE_Msk /*!< Option byte change error interrupt enable bit */
+#define FLASH_CR_INV_Pos (29U)
+#define FLASH_CR_INV_Msk (0x1UL << FLASH_CR_INV_Pos) /*!< 0x20000000 */
+#define FLASH_CR_INV FLASH_CR_INV_Msk /*!< Flash Security State Invert */
+#define FLASH_CR_BKSEL_Pos (31U)
+#define FLASH_CR_BKSEL_Msk (0x1UL << FLASH_CR_BKSEL_Pos) /*!< 0x10000000 */
+#define FLASH_CR_BKSEL FLASH_CR_BKSEL_Msk /*!< Bank selector */
+
+/******************* Bits definition for FLASH_CCR register *******************/
+#define FLASH_CCR_CLR_EOP_Pos (16U)
+#define FLASH_CCR_CLR_EOP_Msk (0x1UL << FLASH_CCR_CLR_EOP_Pos) /*!< 0x00010000 */
+#define FLASH_CCR_CLR_EOP FLASH_CCR_CLR_EOP_Msk /*!< EOP flag clear bit */
+#define FLASH_CCR_CLR_WRPERR_Pos (17U)
+#define FLASH_CCR_CLR_WRPERR_Msk (0x1UL << FLASH_CCR_CLR_WRPERR_Pos) /*!< 0x00020000 */
+#define FLASH_CCR_CLR_WRPERR FLASH_CCR_CLR_WRPERR_Msk /*!< WRPERR flag clear bit */
+#define FLASH_CCR_CLR_PGSERR_Pos (18U)
+#define FLASH_CCR_CLR_PGSERR_Msk (0x1UL << FLASH_CCR_CLR_PGSERR_Pos) /*!< 0x00040000 */
+#define FLASH_CCR_CLR_PGSERR FLASH_CCR_CLR_PGSERR_Msk /*!< PGSERR flag clear bit */
+#define FLASH_CCR_CLR_STRBERR_Pos (19U)
+#define FLASH_CCR_CLR_STRBERR_Msk (0x1UL << FLASH_CCR_CLR_STRBERR_Pos) /*!< 0x00080000 */
+#define FLASH_CCR_CLR_STRBERR FLASH_CCR_CLR_STRBERR_Msk /*!< STRBERR flag clear bit */
+#define FLASH_CCR_CLR_INCERR_Pos (20U)
+#define FLASH_CCR_CLR_INCERR_Msk (0x1UL << FLASH_CCR_CLR_INCERR_Pos) /*!< 0x00100000 */
+#define FLASH_CCR_CLR_INCERR FLASH_CCR_CLR_INCERR_Msk /*!< INCERR flag clear bit */
+#define FLASH_CCR_CLR_OBKERR_Pos (21U)
+#define FLASH_CCR_CLR_OBKERR_Msk (0x1UL << FLASH_CCR_CLR_OBKERR_Pos) /*!< 0x00200000 */
+#define FLASH_CCR_CLR_OBKERR FLASH_CCR_CLR_OBKERR_Msk /*!< OBKERR flag clear bit */
+#define FLASH_CCR_CLR_OBKWERR_Pos (22U)
+#define FLASH_CCR_CLR_OBKWERR_Msk (0x1UL << FLASH_CCR_CLR_OBKWERR_Pos) /*!< 0x00400000 */
+#define FLASH_CCR_CLR_OBKWERR FLASH_CCR_CLR_OBKWERR_Msk /*!< OBKWERR flag clear bit */
+#define FLASH_CCR_CLR_OPTCHANGEERR_Pos (23U)
+#define FLASH_CCR_CLR_OPTCHANGEERR_Msk (0x1UL << FLASH_CCR_CLR_OPTCHANGEERR_Pos) /*!< 0x00800000 */
+#define FLASH_CCR_CLR_OPTCHANGEERR FLASH_CCR_CLR_OPTCHANGEERR_Msk /*!< Option byte change error clear bit */
+
+/****************** Bits definition for FLASH_PRIVCFGR register ***********/
+#define FLASH_PRIVCFGR_SPRIV_Pos (0U)
+#define FLASH_PRIVCFGR_SPRIV_Msk (0x1UL << FLASH_PRIVCFGR_SPRIV_Pos) /*!< 0x00000001 */
+#define FLASH_PRIVCFGR_SPRIV FLASH_PRIVCFGR_SPRIV_Msk /*!< Privilege protection for secure registers */
+#define FLASH_PRIVCFGR_NSPRIV_Pos (1U)
+#define FLASH_PRIVCFGR_NSPRIV_Msk (0x1UL << FLASH_PRIVCFGR_NSPRIV_Pos) /*!< 0x00000002 */
+#define FLASH_PRIVCFGR_NSPRIV FLASH_PRIVCFGR_NSPRIV_Msk /*!< Privilege protection for non-secure registers */
+
+/****************** Bits definition for FLASH_OBKCFGR register *****************/
+#define FLASH_OBKCFGR_LOCK_Pos (0U)
+#define FLASH_OBKCFGR_LOCK_Msk (0x1UL << FLASH_OBKCFGR_LOCK_Pos) /*!< 0x00000001 */
+#define FLASH_OBKCFGR_LOCK FLASH_OBKCFGR_LOCK_Msk /*!< OBKCFGR lock */
+#define FLASH_OBKCFGR_SWAP_SECT_REQ_Pos (1U)
+#define FLASH_OBKCFGR_SWAP_SECT_REQ_Msk (0x1UL << FLASH_OBKCFGR_SWAP_SECT_REQ_Pos) /*!< 0x00000002 */
+#define FLASH_OBKCFGR_SWAP_SECT_REQ FLASH_OBKCFGR_SWAP_SECT_REQ_Msk /*!< OBK swap sector request */
+#define FLASH_OBKCFGR_ALT_SECT_Pos (2U)
+#define FLASH_OBKCFGR_ALT_SECT_Msk (0x1UL << FLASH_OBKCFGR_ALT_SECT_Pos) /*!< 0x00000004 */
+#define FLASH_OBKCFGR_ALT_SECT FLASH_OBKCFGR_ALT_SECT_Msk /*!< Alternate sector */
+#define FLASH_OBKCFGR_ALT_SECT_ERASE_Pos (3U)
+#define FLASH_OBKCFGR_ALT_SECT_ERASE_Msk (0x1UL << FLASH_OBKCFGR_ALT_SECT_ERASE_Pos) /*!< 0x00000008 */
+#define FLASH_OBKCFGR_ALT_SECT_ERASE FLASH_OBKCFGR_ALT_SECT_ERASE_Msk /*!< Alternate sector erase */
+#define FLASH_OBKCFGR_SWAP_OFFSET_Pos (16U)
+#define FLASH_OBKCFGR_SWAP_OFFSET_Msk (0x1FFUL << FLASH_OBKCFGR_SWAP_OFFSET_Pos) /*!< 0x01FF0000 */
+#define FLASH_OBKCFGR_SWAP_OFFSET FLASH_OBKCFGR_SWAP_OFFSET_Msk /*!< Swap offset */
+
+/****************** Bits definition for FLASH_HDPEXTR register *****************/
+#define FLASH_HDPEXTR_HDP1_EXT_Pos (0U)
+#define FLASH_HDPEXTR_HDP1_EXT_Msk (0x1FUL << FLASH_HDPEXTR_HDP1_EXT_Pos) /*!< 0x0000001F */
+#define FLASH_HDPEXTR_HDP1_EXT FLASH_HDPEXTR_HDP1_EXT_Msk /*!< HDP area extension in 8kB sectors in bank 1 */
+#define FLASH_HDPEXTR_HDP2_EXT_Pos (16U)
+#define FLASH_HDPEXTR_HDP2_EXT_Msk (0x1FUL << FLASH_HDPEXTR_HDP2_EXT_Pos) /*!< 0x001F0000 */
+#define FLASH_HDPEXTR_HDP2_EXT FLASH_HDPEXTR_HDP2_EXT_Msk /*!< HDP area extension in 8kB sectors in bank 2 */
+
+/******************* Bits definition for FLASH_OPTSR register ***************/
+#define FLASH_OPTSR_BOR_LEV_Pos (0U)
+#define FLASH_OPTSR_BOR_LEV_Msk (0x3UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000003 */
+#define FLASH_OPTSR_BOR_LEV FLASH_OPTSR_BOR_LEV_Msk /*!< Brownout level option bit */
+#define FLASH_OPTSR_BOR_LEV_0 (0x1UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000001 */
+#define FLASH_OPTSR_BOR_LEV_1 (0x2UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000002 */
+#define FLASH_OPTSR_BORH_EN_Pos (2U)
+#define FLASH_OPTSR_BORH_EN_Msk (0x1UL << FLASH_OPTSR_BORH_EN_Pos) /*!< 0x00000004 */
+#define FLASH_OPTSR_BORH_EN FLASH_OPTSR_BORH_EN_Msk /*!< Brownout high enable configuration bit */
+#define FLASH_OPTSR_IWDG_SW_Pos (3U)
+#define FLASH_OPTSR_IWDG_SW_Msk (0x1UL << FLASH_OPTSR_IWDG_SW_Pos) /*!< 0x00000008 */
+#define FLASH_OPTSR_IWDG_SW FLASH_OPTSR_IWDG_SW_Msk /*!< IWDG control mode option bit */
+#define FLASH_OPTSR_WWDG_SW_Pos (4U)
+#define FLASH_OPTSR_WWDG_SW_Msk (0x1UL << FLASH_OPTSR_WWDG_SW_Pos) /*!< 0x00000010 */
+#define FLASH_OPTSR_WWDG_SW FLASH_OPTSR_WWDG_SW_Msk /*!< WWDG control mode option bit */
+#define FLASH_OPTSR_NRST_STOP_Pos (6U)
+#define FLASH_OPTSR_NRST_STOP_Msk (0x1UL << FLASH_OPTSR_NRST_STOP_Pos) /*!< 0x00000040 */
+#define FLASH_OPTSR_NRST_STOP FLASH_OPTSR_NRST_STOP_Msk /*!< Stop mode entry reset option bit */
+#define FLASH_OPTSR_NRST_STDBY_Pos (7U)
+#define FLASH_OPTSR_NRST_STDBY_Msk (0x1UL << FLASH_OPTSR_NRST_STDBY_Pos) /*!< 0x00000080 */
+#define FLASH_OPTSR_NRST_STDBY FLASH_OPTSR_NRST_STDBY_Msk /*!< Standby mode entry reset option bit */
+#define FLASH_OPTSR_PRODUCT_STATE_Pos (8U)
+#define FLASH_OPTSR_PRODUCT_STATE_Msk (0xFFUL << FLASH_OPTSR_PRODUCT_STATE_Pos) /*!< 0x0000FF00 */
+#define FLASH_OPTSR_PRODUCT_STATE FLASH_OPTSR_PRODUCT_STATE_Msk /*!< Life state code option byte */
+#define FLASH_OPTSR_IO_VDD_HSLV_Pos (16U)
+#define FLASH_OPTSR_IO_VDD_HSLV_Msk (0x1UL << FLASH_OPTSR_IO_VDD_HSLV_Pos) /*!< 0x00010000 */
+#define FLASH_OPTSR_IO_VDD_HSLV FLASH_OPTSR_IO_VDD_HSLV_Msk /*!< VDD I/O high-speed at low-voltage option bit */
+#define FLASH_OPTSR_IO_VDDIO2_HSLV_Pos (17U)
+#define FLASH_OPTSR_IO_VDDIO2_HSLV_Msk (0x1UL << FLASH_OPTSR_IO_VDDIO2_HSLV_Pos) /*!< 0x00020000 */
+#define FLASH_OPTSR_IO_VDDIO2_HSLV FLASH_OPTSR_IO_VDDIO2_HSLV_Msk /*!< VDDIO2 I/O high-speed at low-voltage option bit */
+#define FLASH_OPTSR_IWDG_STOP_Pos (20U)
+#define FLASH_OPTSR_IWDG_STOP_Msk (0x1UL << FLASH_OPTSR_IWDG_STOP_Pos) /*!< 0x00100000 */
+#define FLASH_OPTSR_IWDG_STOP FLASH_OPTSR_IWDG_STOP_Msk /*!< Independent watchdog counter freeze in Stop mode */
+#define FLASH_OPTSR_IWDG_STDBY_Pos (21U)
+#define FLASH_OPTSR_IWDG_STDBY_Msk (0x1UL << FLASH_OPTSR_IWDG_STDBY_Pos) /*!< 0x00200000 */
+#define FLASH_OPTSR_IWDG_STDBY FLASH_OPTSR_IWDG_STDBY_Msk /*!< Independent watchdog counter freeze in Standby mode */
+#define FLASH_OPTSR_BOOT_UBE_Pos (22U)
+#define FLASH_OPTSR_BOOT_UBE_Msk (0xFFUL << FLASH_OPTSR_BOOT_UBE_Pos) /*!< 0x3FC00000 */
+#define FLASH_OPTSR_BOOT_UBE FLASH_OPTSR_BOOT_UBE_Msk /*!< Unique boot entry option byte */
+#define FLASH_OPTSR_SWAP_BANK_Pos (31U)
+#define FLASH_OPTSR_SWAP_BANK_Msk (0x1UL << FLASH_OPTSR_SWAP_BANK_Pos) /*!< 0x80000000 */
+#define FLASH_OPTSR_SWAP_BANK FLASH_OPTSR_SWAP_BANK_Msk /*!< Bank swapping option bit */
+
+/******************* Bits definition for FLASH_EPOCHR register ***************/
+#define FLASH_EPOCHR_EPOCH_Pos (0U)
+#define FLASH_EPOCHR_EPOCH_Msk (0xFFFFFFUL << FLASH_EPOCHR_EPOCH_Pos) /*!< 0x00FFFFFF */
+#define FLASH_EPOCHR_EPOCH FLASH_EPOCHR_EPOCH_Msk /*!< EPOCH counter */
+
+/******************* Bits definition for FLASH_OPTSR2 register ***************/
+#define FLASH_OPTSR2_SRAM1_3_RST_Pos (2U)
+#define FLASH_OPTSR2_SRAM1_3_RST_Msk (0x1UL << FLASH_OPTSR2_SRAM1_3_RST_Pos) /*!< 0x00000004 */
+#define FLASH_OPTSR2_SRAM1_3_RST FLASH_OPTSR2_SRAM1_3_RST_Msk /*!< SRAM1 and SRAM3 erased when a system reset occurs */
+#define FLASH_OPTSR2_SRAM2_RST_Pos (3U)
+#define FLASH_OPTSR2_SRAM2_RST_Msk (0x1UL << FLASH_OPTSR2_SRAM2_RST_Pos) /*!< 0x00000008 */
+#define FLASH_OPTSR2_SRAM2_RST FLASH_OPTSR2_SRAM2_RST_Msk /*!< SRAM2 erased when a system reset occurs*/
+#define FLASH_OPTSR2_BKPRAM_ECC_Pos (4U)
+#define FLASH_OPTSR2_BKPRAM_ECC_Msk (0x1UL << FLASH_OPTSR2_BKPRAM_ECC_Pos) /*!< 0x00000010 */
+#define FLASH_OPTSR2_BKPRAM_ECC FLASH_OPTSR2_BKPRAM_ECC_Msk /*!< Backup RAM ECC detection and correction enable */
+#define FLASH_OPTSR2_SRAM2_ECC_Pos (6U)
+#define FLASH_OPTSR2_SRAM2_ECC_Msk (0x1UL << FLASH_OPTSR2_SRAM2_ECC_Pos) /*!< 0x00000040 */
+#define FLASH_OPTSR2_SRAM2_ECC FLASH_OPTSR2_SRAM2_ECC_Msk /*!< SRAM2 ECC detection and correction disable */
+#define FLASH_OPTSR2_USBPD_DIS_Pos (8U)
+#define FLASH_OPTSR2_USBPD_DIS_Msk (0x1UL << FLASH_OPTSR2_USBPD_DIS_Pos) /*!< 0x00000100 */
+#define FLASH_OPTSR2_USBPD_DIS FLASH_OPTSR2_USBPD_DIS_Msk /*!< USB power delivery configuration disable */
+#define FLASH_OPTSR2_TZEN_Pos (24U)
+#define FLASH_OPTSR2_TZEN_Msk (0xFFUL << FLASH_OPTSR2_TZEN_Pos) /*!< 0xFF000000 */
+#define FLASH_OPTSR2_TZEN FLASH_OPTSR2_TZEN_Msk /*!< TrustZone enable */
+
+/**************** Bits definition for FLASH_BOOTR register **********************/
+#define FLASH_BOOTR_BOOT_LOCK_Pos (0U)
+#define FLASH_BOOTR_BOOT_LOCK_Msk (0xFFUL << FLASH_BOOTR_BOOT_LOCK_Pos) /*!< 0x000000FF */
+#define FLASH_BOOTR_BOOT_LOCK FLASH_BOOTR_BOOT_LOCK_Msk /*!< Boot Lock */
+#define FLASH_BOOTR_BOOTADD_Pos (8U)
+#define FLASH_BOOTR_BOOTADD_Msk (0xFFFFFFUL << FLASH_BOOTR_BOOTADD_Pos) /*!< 0xFFFFFF00 */
+#define FLASH_BOOTR_BOOTADD FLASH_BOOTR_BOOTADD_Msk /*!< Boot address */
+
+/**************** Bits definition for FLASH_PRIVBBR register *******************/
+#define FLASH_PRIVBBR_PRIVBB_Pos (0U)
+#define FLASH_PRIVBBR_PRIVBB_Msk (0xFFFFFFFFUL << FLASH_PRIVBBR_PRIVBB_Pos) /*!< 0xFFFFFFFF */
+#define FLASH_PRIVBBR_PRIVBB FLASH_PRIVBBR_PRIVBB_Msk /*!< Privileged/unprivileged 8-Kbyte Flash sector attribute */
+
+/***************** Bits definition for FLASH_SECWMR register ********************/
+#define FLASH_SECWMR_SECWM_STRT_Pos (0U)
+#define FLASH_SECWMR_SECWM_STRT_Msk (0x1FUL << FLASH_SECWMR_SECWM_STRT_Pos) /*!< 0x0000001F */
+#define FLASH_SECWMR_SECWM_STRT FLASH_SECWMR_SECWM_STRT_Msk /*!< Start sector of secure area */
+#define FLASH_SECWMR_SECWM_END_Pos (16U)
+#define FLASH_SECWMR_SECWM_END_Msk (0x1FUL << FLASH_SECWMR_SECWM_END_Pos) /*!< 0x001F0000 */
+#define FLASH_SECWMR_SECWM_END FLASH_SECWMR_SECWM_END_Msk /*!< End sector of secure area */
+
+/***************** Bits definition for FLASH_WRPR register *********************/
+#define FLASH_WRPR_WRPSG_Pos (0U)
+#define FLASH_WRPR_WRPSG_Msk (0x000000FFUL << FLASH_WRPR_WRPSG_Pos) /*!< 0x000000FF */
+#define FLASH_WRPR_WRPSG FLASH_WRPR_WRPSG_Msk /*!< Sector group protection option status */
+
+/***************** Bits definition for FLASH_EDATA register ********************/
+#define FLASH_EDATAR_EDATA_STRT_Pos (0U)
+#define FLASH_EDATAR_EDATA_STRT_Msk (0x7UL << FLASH_EDATAR_EDATA_STRT_Pos) /*!< 0x00000007 */
+#define FLASH_EDATAR_EDATA_STRT FLASH_EDATAR_EDATA_STRT_Msk /*!< Flash high-cycle data start sector */
+#define FLASH_EDATAR_EDATA_EN_Pos (15U)
+#define FLASH_EDATAR_EDATA_EN_Msk (0x1UL << FLASH_EDATAR_EDATA_EN_Pos) /*!< 0x00008000 */
+#define FLASH_EDATAR_EDATA_EN FLASH_EDATAR_EDATA_EN_Msk /*!< Flash high-cycle data enable */
+
+/***************** Bits definition for FLASH_HDPR register ********************/
+#define FLASH_HDPR_HDP_STRT_Pos (0U)
+#define FLASH_HDPR_HDP_STRT_Msk (0x1FUL << FLASH_HDPR_HDP_STRT_Pos) /*!< 0x0000001F */
+#define FLASH_HDPR_HDP_STRT FLASH_HDPR_HDP_STRT_Msk /*!< Start sector of hide protection area */
+#define FLASH_HDPR_HDP_END_Pos (16U)
+#define FLASH_HDPR_HDP_END_Msk (0x1FUL << FLASH_HDPR_HDP_END_Pos) /*!< 0x001F0000 */
+#define FLASH_HDPR_HDP_END FLASH_HDPR_HDP_END_Msk /*!< End sector of hide protection area */
+
+/******************* Bits definition for FLASH_ECCR register ***************/
+#define FLASH_ECCR_ADDR_ECC_Pos (0U)
+#define FLASH_ECCR_ADDR_ECC_Msk (0xFFFFUL << FLASH_ECCR_ADDR_ECC_Pos) /*!< 0x0000FFFF */
+#define FLASH_ECCR_ADDR_ECC FLASH_ECCR_ADDR_ECC_Msk /*!< ECC fail address */
+#define FLASH_ECCR_OBK_ECC_Pos (20U)
+#define FLASH_ECCR_OBK_ECC_Msk (0x1UL << FLASH_ECCR_OBK_ECC_Pos) /*!< 0x00200000 */
+#define FLASH_ECCR_OBK_ECC FLASH_ECCR_OBK_ECC_Msk /*!< Flash OB Keys storage area ECC fail */
+#define FLASH_ECCR_DATA_ECC_Pos (21U)
+#define FLASH_ECCR_DATA_ECC_Msk (0x1UL << FLASH_ECCR_DATA_ECC_Pos) /*!< 0x00400000 */
+#define FLASH_ECCR_DATA_ECC FLASH_ECCR_DATA_ECC_Msk /*!< Flash high-cycle data ECC fail */
+#define FLASH_ECCR_BK_ECC_Pos (22U)
+#define FLASH_ECCR_BK_ECC_Msk (0x1UL << FLASH_ECCR_BK_ECC_Pos) /*!< 0x00400000 */
+#define FLASH_ECCR_BK_ECC FLASH_ECCR_BK_ECC_Msk /*!< ECC fail bank */
+#define FLASH_ECCR_SYSF_ECC_Pos (23U)
+#define FLASH_ECCR_SYSF_ECC_Msk (0x1UL << FLASH_ECCR_SYSF_ECC_Pos) /*!< 0x00800000 */
+#define FLASH_ECCR_SYSF_ECC FLASH_ECCR_SYSF_ECC_Msk /*!< System Flash ECC fail */
+#define FLASH_ECCR_OTP_ECC_Pos (24U)
+#define FLASH_ECCR_OTP_ECC_Msk (0x1UL << FLASH_ECCR_OTP_ECC_Pos) /*!< 0x01000000 */
+#define FLASH_ECCR_OTP_ECC FLASH_ECCR_OTP_ECC_Msk /*!< Flash OTP ECC fail */
+#define FLASH_ECCR_ECCIE_Pos (25U)
+#define FLASH_ECCR_ECCIE_Msk (0x1UL << FLASH_ECCR_ECCIE_Pos) /*!< 0x02000000 */
+#define FLASH_ECCR_ECCIE FLASH_ECCR_ECCIE_Msk /*!< ECC correction interrupt enable */
+#define FLASH_ECCR_ECCC_Pos (30U)
+#define FLASH_ECCR_ECCC_Msk (0x1UL << FLASH_ECCR_ECCC_Pos) /*!< 0x40000000 */
+#define FLASH_ECCR_ECCC FLASH_ECCR_ECCC_Msk /*!< ECC correction */
+#define FLASH_ECCR_ECCD_Pos (31U)
+#define FLASH_ECCR_ECCD_Msk (0x1UL << FLASH_ECCR_ECCD_Pos) /*!< 0x80000000 */
+#define FLASH_ECCR_ECCD FLASH_ECCR_ECCD_Msk /*!< ECC detection */
+
+/******************* Bits definition for FLASH_ECCDR register ***************/
+#define FLASH_ECCDR_FAIL_DATA_Pos (0U)
+#define FLASH_ECCDR_FAIL_DATA_Msk (0xFFFFUL << FLASH_ECCDR_FAIL_DATA_Pos) /*!< 0x0000FFFF */
+#define FLASH_ECCDR_FAIL_DATA FLASH_ECCDR_FAIL_DATA_Msk /*!< ECC fail data */
+
+/******************************************************************************/
+/* */
+/* Flexible Memory Controller */
+/* */
+/******************************************************************************/
+/****************** Bit definition for FMC_BCR1 register *******************/
+#define FMC_BCR1_CCLKEN_Pos (20U)
+#define FMC_BCR1_CCLKEN_Msk (0x1UL << FMC_BCR1_CCLKEN_Pos) /*!< 0x00100000 */
+#define FMC_BCR1_CCLKEN FMC_BCR1_CCLKEN_Msk /*! */
+
+/******************** Bits definition for RTC_ALRMAR register ***************/
+#define RTC_ALRMAR_SU_Pos (0U)
+#define RTC_ALRMAR_SU_Msk (0xFUL << RTC_ALRMAR_SU_Pos) /*!< 0x0000000F */
+#define RTC_ALRMAR_SU RTC_ALRMAR_SU_Msk
+#define RTC_ALRMAR_SU_0 (0x1UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000001 */
+#define RTC_ALRMAR_SU_1 (0x2UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000002 */
+#define RTC_ALRMAR_SU_2 (0x4UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000004 */
+#define RTC_ALRMAR_SU_3 (0x8UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000008 */
+#define RTC_ALRMAR_ST_Pos (4U)
+#define RTC_ALRMAR_ST_Msk (0x7UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000070 */
+#define RTC_ALRMAR_ST RTC_ALRMAR_ST_Msk
+#define RTC_ALRMAR_ST_0 (0x1UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000010 */
+#define RTC_ALRMAR_ST_1 (0x2UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000020 */
+#define RTC_ALRMAR_ST_2 (0x4UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000040 */
+#define RTC_ALRMAR_MSK1_Pos (7U)
+#define RTC_ALRMAR_MSK1_Msk (0x1UL << RTC_ALRMAR_MSK1_Pos) /*!< 0x00000080 */
+#define RTC_ALRMAR_MSK1 RTC_ALRMAR_MSK1_Msk
+#define RTC_ALRMAR_MNU_Pos (8U)
+#define RTC_ALRMAR_MNU_Msk (0xFUL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000F00 */
+#define RTC_ALRMAR_MNU RTC_ALRMAR_MNU_Msk
+#define RTC_ALRMAR_MNU_0 (0x1UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000100 */
+#define RTC_ALRMAR_MNU_1 (0x2UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000200 */
+#define RTC_ALRMAR_MNU_2 (0x4UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000400 */
+#define RTC_ALRMAR_MNU_3 (0x8UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000800 */
+#define RTC_ALRMAR_MNT_Pos (12U)
+#define RTC_ALRMAR_MNT_Msk (0x7UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00007000 */
+#define RTC_ALRMAR_MNT RTC_ALRMAR_MNT_Msk
+#define RTC_ALRMAR_MNT_0 (0x1UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00001000 */
+#define RTC_ALRMAR_MNT_1 (0x2UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00002000 */
+#define RTC_ALRMAR_MNT_2 (0x4UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00004000 */
+#define RTC_ALRMAR_MSK2_Pos (15U)
+#define RTC_ALRMAR_MSK2_Msk (0x1UL << RTC_ALRMAR_MSK2_Pos) /*!< 0x00008000 */
+#define RTC_ALRMAR_MSK2 RTC_ALRMAR_MSK2_Msk
+#define RTC_ALRMAR_HU_Pos (16U)
+#define RTC_ALRMAR_HU_Msk (0xFUL << RTC_ALRMAR_HU_Pos) /*!< 0x000F0000 */
+#define RTC_ALRMAR_HU RTC_ALRMAR_HU_Msk
+#define RTC_ALRMAR_HU_0 (0x1UL << RTC_ALRMAR_HU_Pos) /*!< 0x00010000 */
+#define RTC_ALRMAR_HU_1 (0x2UL << RTC_ALRMAR_HU_Pos) /*!< 0x00020000 */
+#define RTC_ALRMAR_HU_2 (0x4UL << RTC_ALRMAR_HU_Pos) /*!< 0x00040000 */
+#define RTC_ALRMAR_HU_3 (0x8UL << RTC_ALRMAR_HU_Pos) /*!< 0x00080000 */
+#define RTC_ALRMAR_HT_Pos (20U)
+#define RTC_ALRMAR_HT_Msk (0x3UL << RTC_ALRMAR_HT_Pos) /*!< 0x00300000 */
+#define RTC_ALRMAR_HT RTC_ALRMAR_HT_Msk
+#define RTC_ALRMAR_HT_0 (0x1UL << RTC_ALRMAR_HT_Pos) /*!< 0x00100000 */
+#define RTC_ALRMAR_HT_1 (0x2UL << RTC_ALRMAR_HT_Pos) /*!< 0x00200000 */
+#define RTC_ALRMAR_PM_Pos (22U)
+#define RTC_ALRMAR_PM_Msk (0x1UL << RTC_ALRMAR_PM_Pos) /*!< 0x00400000 */
+#define RTC_ALRMAR_PM RTC_ALRMAR_PM_Msk
+#define RTC_ALRMAR_MSK3_Pos (23U)
+#define RTC_ALRMAR_MSK3_Msk (0x1UL << RTC_ALRMAR_MSK3_Pos) /*!< 0x00800000 */
+#define RTC_ALRMAR_MSK3 RTC_ALRMAR_MSK3_Msk
+#define RTC_ALRMAR_DU_Pos (24U)
+#define RTC_ALRMAR_DU_Msk (0xFUL << RTC_ALRMAR_DU_Pos) /*!< 0x0F000000 */
+#define RTC_ALRMAR_DU RTC_ALRMAR_DU_Msk
+#define RTC_ALRMAR_DU_0 (0x1UL << RTC_ALRMAR_DU_Pos) /*!< 0x01000000 */
+#define RTC_ALRMAR_DU_1 (0x2UL << RTC_ALRMAR_DU_Pos) /*!< 0x02000000 */
+#define RTC_ALRMAR_DU_2 (0x4UL << RTC_ALRMAR_DU_Pos) /*!< 0x04000000 */
+#define RTC_ALRMAR_DU_3 (0x8UL << RTC_ALRMAR_DU_Pos) /*!< 0x08000000 */
+#define RTC_ALRMAR_DT_Pos (28U)
+#define RTC_ALRMAR_DT_Msk (0x3UL << RTC_ALRMAR_DT_Pos) /*!< 0x30000000 */
+#define RTC_ALRMAR_DT RTC_ALRMAR_DT_Msk
+#define RTC_ALRMAR_DT_0 (0x1UL << RTC_ALRMAR_DT_Pos) /*!< 0x10000000 */
+#define RTC_ALRMAR_DT_1 (0x2UL << RTC_ALRMAR_DT_Pos) /*!< 0x20000000 */
+#define RTC_ALRMAR_WDSEL_Pos (30U)
+#define RTC_ALRMAR_WDSEL_Msk (0x1UL << RTC_ALRMAR_WDSEL_Pos) /*!< 0x40000000 */
+#define RTC_ALRMAR_WDSEL RTC_ALRMAR_WDSEL_Msk
+#define RTC_ALRMAR_MSK4_Pos (31U)
+#define RTC_ALRMAR_MSK4_Msk (0x1UL << RTC_ALRMAR_MSK4_Pos) /*!< 0x80000000 */
+#define RTC_ALRMAR_MSK4 RTC_ALRMAR_MSK4_Msk
+
+/******************** Bits definition for RTC_ALRMASSR register *************/
+#define RTC_ALRMASSR_SS_Pos (0U)
+#define RTC_ALRMASSR_SS_Msk (0x7FFFUL << RTC_ALRMASSR_SS_Pos) /*!< 0x00007FFF */
+#define RTC_ALRMASSR_SS RTC_ALRMASSR_SS_Msk
+#define RTC_ALRMASSR_MASKSS_Pos (24U)
+#define RTC_ALRMASSR_MASKSS_Msk (0x3FUL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x3F000000 */
+#define RTC_ALRMASSR_MASKSS RTC_ALRMASSR_MASKSS_Msk
+#define RTC_ALRMASSR_MASKSS_0 (0x1UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x01000000 */
+#define RTC_ALRMASSR_MASKSS_1 (0x2UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x02000000 */
+#define RTC_ALRMASSR_MASKSS_2 (0x4UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x04000000 */
+#define RTC_ALRMASSR_MASKSS_3 (0x8UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x08000000 */
+#define RTC_ALRMASSR_MASKSS_4 (0x10UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x10000000 */
+#define RTC_ALRMASSR_MASKSS_5 (0x20UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x20000000 */
+#define RTC_ALRMASSR_SSCLR_Pos (31U)
+#define RTC_ALRMASSR_SSCLR_Msk (0x1UL << RTC_ALRMASSR_SSCLR_Pos) /*!< 0x80000000 */
+#define RTC_ALRMASSR_SSCLR RTC_ALRMASSR_SSCLR_Msk
+
+/******************** Bits definition for RTC_ALRMBR register ***************/
+#define RTC_ALRMBR_SU_Pos (0U)
+#define RTC_ALRMBR_SU_Msk (0xFUL << RTC_ALRMBR_SU_Pos) /*!< 0x0000000F */
+#define RTC_ALRMBR_SU RTC_ALRMBR_SU_Msk
+#define RTC_ALRMBR_SU_0 (0x1UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000001 */
+#define RTC_ALRMBR_SU_1 (0x2UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000002 */
+#define RTC_ALRMBR_SU_2 (0x4UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000004 */
+#define RTC_ALRMBR_SU_3 (0x8UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000008 */
+#define RTC_ALRMBR_ST_Pos (4U)
+#define RTC_ALRMBR_ST_Msk (0x7UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000070 */
+#define RTC_ALRMBR_ST RTC_ALRMBR_ST_Msk
+#define RTC_ALRMBR_ST_0 (0x1UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000010 */
+#define RTC_ALRMBR_ST_1 (0x2UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000020 */
+#define RTC_ALRMBR_ST_2 (0x4UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000040 */
+#define RTC_ALRMBR_MSK1_Pos (7U)
+#define RTC_ALRMBR_MSK1_Msk (0x1UL << RTC_ALRMBR_MSK1_Pos) /*!< 0x00000080 */
+#define RTC_ALRMBR_MSK1 RTC_ALRMBR_MSK1_Msk
+#define RTC_ALRMBR_MNU_Pos (8U)
+#define RTC_ALRMBR_MNU_Msk (0xFUL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000F00 */
+#define RTC_ALRMBR_MNU RTC_ALRMBR_MNU_Msk
+#define RTC_ALRMBR_MNU_0 (0x1UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000100 */
+#define RTC_ALRMBR_MNU_1 (0x2UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000200 */
+#define RTC_ALRMBR_MNU_2 (0x4UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000400 */
+#define RTC_ALRMBR_MNU_3 (0x8UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000800 */
+#define RTC_ALRMBR_MNT_Pos (12U)
+#define RTC_ALRMBR_MNT_Msk (0x7UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00007000 */
+#define RTC_ALRMBR_MNT RTC_ALRMBR_MNT_Msk
+#define RTC_ALRMBR_MNT_0 (0x1UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00001000 */
+#define RTC_ALRMBR_MNT_1 (0x2UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00002000 */
+#define RTC_ALRMBR_MNT_2 (0x4UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00004000 */
+#define RTC_ALRMBR_MSK2_Pos (15U)
+#define RTC_ALRMBR_MSK2_Msk (0x1UL << RTC_ALRMBR_MSK2_Pos) /*!< 0x00008000 */
+#define RTC_ALRMBR_MSK2 RTC_ALRMBR_MSK2_Msk
+#define RTC_ALRMBR_HU_Pos (16U)
+#define RTC_ALRMBR_HU_Msk (0xFUL << RTC_ALRMBR_HU_Pos) /*!< 0x000F0000 */
+#define RTC_ALRMBR_HU RTC_ALRMBR_HU_Msk
+#define RTC_ALRMBR_HU_0 (0x1UL << RTC_ALRMBR_HU_Pos) /*!< 0x00010000 */
+#define RTC_ALRMBR_HU_1 (0x2UL << RTC_ALRMBR_HU_Pos) /*!< 0x00020000 */
+#define RTC_ALRMBR_HU_2 (0x4UL << RTC_ALRMBR_HU_Pos) /*!< 0x00040000 */
+#define RTC_ALRMBR_HU_3 (0x8UL << RTC_ALRMBR_HU_Pos) /*!< 0x00080000 */
+#define RTC_ALRMBR_HT_Pos (20U)
+#define RTC_ALRMBR_HT_Msk (0x3UL << RTC_ALRMBR_HT_Pos) /*!< 0x00300000 */
+#define RTC_ALRMBR_HT RTC_ALRMBR_HT_Msk
+#define RTC_ALRMBR_HT_0 (0x1UL << RTC_ALRMBR_HT_Pos) /*!< 0x00100000 */
+#define RTC_ALRMBR_HT_1 (0x2UL << RTC_ALRMBR_HT_Pos) /*!< 0x00200000 */
+#define RTC_ALRMBR_PM_Pos (22U)
+#define RTC_ALRMBR_PM_Msk (0x1UL << RTC_ALRMBR_PM_Pos) /*!< 0x00400000 */
+#define RTC_ALRMBR_PM RTC_ALRMBR_PM_Msk
+#define RTC_ALRMBR_MSK3_Pos (23U)
+#define RTC_ALRMBR_MSK3_Msk (0x1UL << RTC_ALRMBR_MSK3_Pos) /*!< 0x00800000 */
+#define RTC_ALRMBR_MSK3 RTC_ALRMBR_MSK3_Msk
+#define RTC_ALRMBR_DU_Pos (24U)
+#define RTC_ALRMBR_DU_Msk (0xFUL << RTC_ALRMBR_DU_Pos) /*!< 0x0F000000 */
+#define RTC_ALRMBR_DU RTC_ALRMBR_DU_Msk
+#define RTC_ALRMBR_DU_0 (0x1UL << RTC_ALRMBR_DU_Pos) /*!< 0x01000000 */
+#define RTC_ALRMBR_DU_1 (0x2UL << RTC_ALRMBR_DU_Pos) /*!< 0x02000000 */
+#define RTC_ALRMBR_DU_2 (0x4UL << RTC_ALRMBR_DU_Pos) /*!< 0x04000000 */
+#define RTC_ALRMBR_DU_3 (0x8UL << RTC_ALRMBR_DU_Pos) /*!< 0x08000000 */
+#define RTC_ALRMBR_DT_Pos (28U)
+#define RTC_ALRMBR_DT_Msk (0x3UL << RTC_ALRMBR_DT_Pos) /*!< 0x30000000 */
+#define RTC_ALRMBR_DT RTC_ALRMBR_DT_Msk
+#define RTC_ALRMBR_DT_0 (0x1UL << RTC_ALRMBR_DT_Pos) /*!< 0x10000000 */
+#define RTC_ALRMBR_DT_1 (0x2UL << RTC_ALRMBR_DT_Pos) /*!< 0x20000000 */
+#define RTC_ALRMBR_WDSEL_Pos (30U)
+#define RTC_ALRMBR_WDSEL_Msk (0x1UL << RTC_ALRMBR_WDSEL_Pos) /*!< 0x40000000 */
+#define RTC_ALRMBR_WDSEL RTC_ALRMBR_WDSEL_Msk
+#define RTC_ALRMBR_MSK4_Pos (31U)
+#define RTC_ALRMBR_MSK4_Msk (0x1UL << RTC_ALRMBR_MSK4_Pos) /*!< 0x80000000 */
+#define RTC_ALRMBR_MSK4 RTC_ALRMBR_MSK4_Msk
+
+/******************** Bits definition for RTC_ALRMBSSR register *************/
+#define RTC_ALRMBSSR_SS_Pos (0U)
+#define RTC_ALRMBSSR_SS_Msk (0x7FFFUL << RTC_ALRMBSSR_SS_Pos) /*!< 0x00007FFF */
+#define RTC_ALRMBSSR_SS RTC_ALRMBSSR_SS_Msk
+#define RTC_ALRMBSSR_MASKSS_Pos (24U)
+#define RTC_ALRMBSSR_MASKSS_Msk (0x3FUL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x3F000000 */
+#define RTC_ALRMBSSR_MASKSS RTC_ALRMBSSR_MASKSS_Msk
+#define RTC_ALRMBSSR_MASKSS_0 (0x1UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x01000000 */
+#define RTC_ALRMBSSR_MASKSS_1 (0x2UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x02000000 */
+#define RTC_ALRMBSSR_MASKSS_2 (0x4UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x04000000 */
+#define RTC_ALRMBSSR_MASKSS_3 (0x8UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x08000000 */
+#define RTC_ALRMBSSR_MASKSS_4 (0x10UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x10000000 */
+#define RTC_ALRMBSSR_MASKSS_5 (0x20UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x20000000 */
+#define RTC_ALRMBSSR_SSCLR_Pos (31U)
+#define RTC_ALRMBSSR_SSCLR_Msk (0x1UL << RTC_ALRMBSSR_SSCLR_Pos) /*!< 0x80000000 */
+#define RTC_ALRMBSSR_SSCLR RTC_ALRMBSSR_SSCLR_Msk
+
+/******************** Bits definition for RTC_SR register *******************/
+#define RTC_SR_ALRAF_Pos (0U)
+#define RTC_SR_ALRAF_Msk (0x1UL << RTC_SR_ALRAF_Pos) /*!< 0x00000001 */
+#define RTC_SR_ALRAF RTC_SR_ALRAF_Msk
+#define RTC_SR_ALRBF_Pos (1U)
+#define RTC_SR_ALRBF_Msk (0x1UL << RTC_SR_ALRBF_Pos) /*!< 0x00000002 */
+#define RTC_SR_ALRBF RTC_SR_ALRBF_Msk
+#define RTC_SR_WUTF_Pos (2U)
+#define RTC_SR_WUTF_Msk (0x1UL << RTC_SR_WUTF_Pos) /*!< 0x00000004 */
+#define RTC_SR_WUTF RTC_SR_WUTF_Msk
+#define RTC_SR_TSF_Pos (3U)
+#define RTC_SR_TSF_Msk (0x1UL << RTC_SR_TSF_Pos) /*!< 0x00000008 */
+#define RTC_SR_TSF RTC_SR_TSF_Msk
+#define RTC_SR_TSOVF_Pos (4U)
+#define RTC_SR_TSOVF_Msk (0x1UL << RTC_SR_TSOVF_Pos) /*!< 0x00000010 */
+#define RTC_SR_TSOVF RTC_SR_TSOVF_Msk
+#define RTC_SR_ITSF_Pos (5U)
+#define RTC_SR_ITSF_Msk (0x1UL << RTC_SR_ITSF_Pos) /*!< 0x00000020 */
+#define RTC_SR_ITSF RTC_SR_ITSF_Msk
+#define RTC_SR_SSRUF_Pos (6U)
+#define RTC_SR_SSRUF_Msk (0x1UL << RTC_SR_SSRUF_Pos) /*!< 0x00000040 */
+#define RTC_SR_SSRUF RTC_SR_SSRUF_Msk
+
+/******************** Bits definition for RTC_MISR register *****************/
+#define RTC_MISR_ALRAMF_Pos (0U)
+#define RTC_MISR_ALRAMF_Msk (0x1UL << RTC_MISR_ALRAMF_Pos) /*!< 0x00000001 */
+#define RTC_MISR_ALRAMF RTC_MISR_ALRAMF_Msk
+#define RTC_MISR_ALRBMF_Pos (1U)
+#define RTC_MISR_ALRBMF_Msk (0x1UL << RTC_MISR_ALRBMF_Pos) /*!< 0x00000002 */
+#define RTC_MISR_ALRBMF RTC_MISR_ALRBMF_Msk
+#define RTC_MISR_WUTMF_Pos (2U)
+#define RTC_MISR_WUTMF_Msk (0x1UL << RTC_MISR_WUTMF_Pos) /*!< 0x00000004 */
+#define RTC_MISR_WUTMF RTC_MISR_WUTMF_Msk
+#define RTC_MISR_TSMF_Pos (3U)
+#define RTC_MISR_TSMF_Msk (0x1UL << RTC_MISR_TSMF_Pos) /*!< 0x00000008 */
+#define RTC_MISR_TSMF RTC_MISR_TSMF_Msk
+#define RTC_MISR_TSOVMF_Pos (4U)
+#define RTC_MISR_TSOVMF_Msk (0x1UL << RTC_MISR_TSOVMF_Pos) /*!< 0x00000010 */
+#define RTC_MISR_TSOVMF RTC_MISR_TSOVMF_Msk
+#define RTC_MISR_ITSMF_Pos (5U)
+#define RTC_MISR_ITSMF_Msk (0x1UL << RTC_MISR_ITSMF_Pos) /*!< 0x00000020 */
+#define RTC_MISR_ITSMF RTC_MISR_ITSMF_Msk
+#define RTC_MISR_SSRUMF_Pos (6U)
+#define RTC_MISR_SSRUMF_Msk (0x1UL << RTC_MISR_SSRUMF_Pos) /*!< 0x00000040 */
+#define RTC_MISR_SSRUMF RTC_MISR_SSRUMF_Msk
+
+/******************** Bits definition for RTC_SMISR register *****************/
+#define RTC_SMISR_ALRAMF_Pos (0U)
+#define RTC_SMISR_ALRAMF_Msk (0x1UL << RTC_SMISR_ALRAMF_Pos) /*!< 0x00000001 */
+#define RTC_SMISR_ALRAMF RTC_SMISR_ALRAMF_Msk
+#define RTC_SMISR_ALRBMF_Pos (1U)
+#define RTC_SMISR_ALRBMF_Msk (0x1UL << RTC_SMISR_ALRBMF_Pos) /*!< 0x00000002 */
+#define RTC_SMISR_ALRBMF RTC_SMISR_ALRBMF_Msk
+#define RTC_SMISR_WUTMF_Pos (2U)
+#define RTC_SMISR_WUTMF_Msk (0x1UL << RTC_SMISR_WUTMF_Pos) /*!< 0x00000004 */
+#define RTC_SMISR_WUTMF RTC_SMISR_WUTMF_Msk
+#define RTC_SMISR_TSMF_Pos (3U)
+#define RTC_SMISR_TSMF_Msk (0x1UL << RTC_SMISR_TSMF_Pos) /*!< 0x00000008 */
+#define RTC_SMISR_TSMF RTC_SMISR_TSMF_Msk
+#define RTC_SMISR_TSOVMF_Pos (4U)
+#define RTC_SMISR_TSOVMF_Msk (0x1UL << RTC_SMISR_TSOVMF_Pos) /*!< 0x00000010 */
+#define RTC_SMISR_TSOVMF RTC_SMISR_TSOVMF_Msk
+#define RTC_SMISR_ITSMF_Pos (5U)
+#define RTC_SMISR_ITSMF_Msk (0x1UL << RTC_SMISR_ITSMF_Pos) /*!< 0x00000020 */
+#define RTC_SMISR_ITSMF RTC_SMISR_ITSMF_Msk
+#define RTC_SMISR_SSRUMF_Pos (6U)
+#define RTC_SMISR_SSRUMF_Msk (0x1UL << RTC_SMISR_SSRUMF_Pos) /*!< 0x00000040 */
+#define RTC_SMISR_SSRUMF RTC_SMISR_SSRUMF_Msk
+
+/******************** Bits definition for RTC_SCR register ******************/
+#define RTC_SCR_CALRAF_Pos (0U)
+#define RTC_SCR_CALRAF_Msk (0x1UL << RTC_SCR_CALRAF_Pos) /*!< 0x00000001 */
+#define RTC_SCR_CALRAF RTC_SCR_CALRAF_Msk
+#define RTC_SCR_CALRBF_Pos (1U)
+#define RTC_SCR_CALRBF_Msk (0x1UL << RTC_SCR_CALRBF_Pos) /*!< 0x00000002 */
+#define RTC_SCR_CALRBF RTC_SCR_CALRBF_Msk
+#define RTC_SCR_CWUTF_Pos (2U)
+#define RTC_SCR_CWUTF_Msk (0x1UL << RTC_SCR_CWUTF_Pos) /*!< 0x00000004 */
+#define RTC_SCR_CWUTF RTC_SCR_CWUTF_Msk
+#define RTC_SCR_CTSF_Pos (3U)
+#define RTC_SCR_CTSF_Msk (0x1UL << RTC_SCR_CTSF_Pos) /*!< 0x00000008 */
+#define RTC_SCR_CTSF RTC_SCR_CTSF_Msk
+#define RTC_SCR_CTSOVF_Pos (4U)
+#define RTC_SCR_CTSOVF_Msk (0x1UL << RTC_SCR_CTSOVF_Pos) /*!< 0x00000010 */
+#define RTC_SCR_CTSOVF RTC_SCR_CTSOVF_Msk
+#define RTC_SCR_CITSF_Pos (5U)
+#define RTC_SCR_CITSF_Msk (0x1UL << RTC_SCR_CITSF_Pos) /*!< 0x00000020 */
+#define RTC_SCR_CITSF RTC_SCR_CITSF_Msk
+#define RTC_SCR_CSSRUF_Pos (6U)
+#define RTC_SCR_CSSRUF_Msk (0x1UL << RTC_SCR_CSSRUF_Pos) /*!< 0x00000040 */
+#define RTC_SCR_CSSRUF RTC_SCR_CSSRUF_Msk
+
+/******************** Bits definition for RTC_OR register ******************/
+#define RTC_OR_OUT2_RMP_Pos (0U)
+#define RTC_OR_OUT2_RMP_Msk (0x1UL << RTC_OR_OUT2_RMP_Pos) /*!< 0x00000001 */
+#define RTC_OR_OUT2_RMP RTC_OR_OUT2_RMP_Msk
+
+/******************** Bits definition for RTC_ALRABINR register ******************/
+#define RTC_ALRABINR_SS_Pos (0U)
+#define RTC_ALRABINR_SS_Msk (0xFFFFFFFFUL << RTC_ALRABINR_SS_Pos) /*!< 0xFFFFFFFF */
+#define RTC_ALRABINR_SS RTC_ALRABINR_SS_Msk
+
+/******************** Bits definition for RTC_ALRBBINR register ******************/
+#define RTC_ALRBBINR_SS_Pos (0U)
+#define RTC_ALRBBINR_SS_Msk (0xFFFFFFFFUL << RTC_ALRBBINR_SS_Pos) /*!< 0xFFFFFFFF */
+#define RTC_ALRBBINR_SS RTC_ALRBBINR_SS_Msk
+
+/******************************************************************************/
+/* */
+/* Tamper and backup register (TAMP) */
+/* */
+/******************************************************************************/
+/******************** Bits definition for TAMP_CR1 register *****************/
+#define TAMP_CR1_TAMP1E_Pos (0U)
+#define TAMP_CR1_TAMP1E_Msk (0x1UL << TAMP_CR1_TAMP1E_Pos) /*!< 0x00000001 */
+#define TAMP_CR1_TAMP1E TAMP_CR1_TAMP1E_Msk
+#define TAMP_CR1_TAMP2E_Pos (1U)
+#define TAMP_CR1_TAMP2E_Msk (0x1UL << TAMP_CR1_TAMP2E_Pos) /*!< 0x00000002 */
+#define TAMP_CR1_TAMP2E TAMP_CR1_TAMP2E_Msk
+#define TAMP_CR1_TAMP3E_Pos (2U)
+#define TAMP_CR1_TAMP3E_Msk (0x1UL << TAMP_CR1_TAMP3E_Pos) /*!< 0x00000004 */
+#define TAMP_CR1_TAMP3E TAMP_CR1_TAMP3E_Msk
+#define TAMP_CR1_TAMP4E_Pos (3U)
+#define TAMP_CR1_TAMP4E_Msk (0x1UL << TAMP_CR1_TAMP4E_Pos) /*!< 0x00000008 */
+#define TAMP_CR1_TAMP4E TAMP_CR1_TAMP4E_Msk
+#define TAMP_CR1_TAMP5E_Pos (4U)
+#define TAMP_CR1_TAMP5E_Msk (0x1UL << TAMP_CR1_TAMP5E_Pos) /*!< 0x00000010 */
+#define TAMP_CR1_TAMP5E TAMP_CR1_TAMP5E_Msk
+#define TAMP_CR1_TAMP6E_Pos (5U)
+#define TAMP_CR1_TAMP6E_Msk (0x1UL << TAMP_CR1_TAMP6E_Pos) /*!< 0x00000020 */
+#define TAMP_CR1_TAMP6E TAMP_CR1_TAMP6E_Msk
+#define TAMP_CR1_TAMP7E_Pos (6U)
+#define TAMP_CR1_TAMP7E_Msk (0x1UL << TAMP_CR1_TAMP7E_Pos) /*!< 0x00000040 */
+#define TAMP_CR1_TAMP7E TAMP_CR1_TAMP7E_Msk
+#define TAMP_CR1_TAMP8E_Pos (7U)
+#define TAMP_CR1_TAMP8E_Msk (0x1UL << TAMP_CR1_TAMP8E_Pos) /*!< 0x00000080 */
+#define TAMP_CR1_TAMP8E TAMP_CR1_TAMP8E_Msk
+#define TAMP_CR1_ITAMP1E_Pos (16U)
+#define TAMP_CR1_ITAMP1E_Msk (0x1UL << TAMP_CR1_ITAMP1E_Pos) /*!< 0x00010000 */
+#define TAMP_CR1_ITAMP1E TAMP_CR1_ITAMP1E_Msk
+#define TAMP_CR1_ITAMP2E_Pos (17U)
+#define TAMP_CR1_ITAMP2E_Msk (0x1UL << TAMP_CR1_ITAMP2E_Pos) /*!< 0x00020000 */
+#define TAMP_CR1_ITAMP2E TAMP_CR1_ITAMP2E_Msk
+#define TAMP_CR1_ITAMP3E_Pos (18U)
+#define TAMP_CR1_ITAMP3E_Msk (0x1UL << TAMP_CR1_ITAMP3E_Pos) /*!< 0x00040000 */
+#define TAMP_CR1_ITAMP3E TAMP_CR1_ITAMP3E_Msk
+#define TAMP_CR1_ITAMP4E_Pos (19U)
+#define TAMP_CR1_ITAMP4E_Msk (0x1UL << TAMP_CR1_ITAMP4E_Pos) /*!< 0x00080000 */
+#define TAMP_CR1_ITAMP4E TAMP_CR1_ITAMP4E_Msk
+#define TAMP_CR1_ITAMP5E_Pos (20U)
+#define TAMP_CR1_ITAMP5E_Msk (0x1UL << TAMP_CR1_ITAMP5E_Pos) /*!< 0x00100000 */
+#define TAMP_CR1_ITAMP5E TAMP_CR1_ITAMP5E_Msk
+#define TAMP_CR1_ITAMP6E_Pos (21U)
+#define TAMP_CR1_ITAMP6E_Msk (0x1UL << TAMP_CR1_ITAMP6E_Pos) /*!< 0x00200000 */
+#define TAMP_CR1_ITAMP6E TAMP_CR1_ITAMP6E_Msk
+#define TAMP_CR1_ITAMP7E_Pos (22U)
+#define TAMP_CR1_ITAMP7E_Msk (0x1UL << TAMP_CR1_ITAMP7E_Pos) /*!< 0x00400000 */
+#define TAMP_CR1_ITAMP7E TAMP_CR1_ITAMP7E_Msk
+#define TAMP_CR1_ITAMP8E_Pos (23U)
+#define TAMP_CR1_ITAMP8E_Msk (0x1UL << TAMP_CR1_ITAMP8E_Pos) /*!< 0x00800000 */
+#define TAMP_CR1_ITAMP8E TAMP_CR1_ITAMP8E_Msk
+#define TAMP_CR1_ITAMP9E_Pos (24U)
+#define TAMP_CR1_ITAMP9E_Msk (0x1UL << TAMP_CR1_ITAMP9E_Pos) /*!< 0x01000000 */
+#define TAMP_CR1_ITAMP9E TAMP_CR1_ITAMP9E_Msk
+#define TAMP_CR1_ITAMP11E_Pos (26U)
+#define TAMP_CR1_ITAMP11E_Msk (0x1UL << TAMP_CR1_ITAMP11E_Pos) /*!< 0x04000000 */
+#define TAMP_CR1_ITAMP11E TAMP_CR1_ITAMP11E_Msk
+#define TAMP_CR1_ITAMP12E_Pos (27U)
+#define TAMP_CR1_ITAMP12E_Msk (0x1UL << TAMP_CR1_ITAMP12E_Pos) /*!< 0x08000000 */
+#define TAMP_CR1_ITAMP12E TAMP_CR1_ITAMP12E_Msk
+#define TAMP_CR1_ITAMP13E_Pos (28U)
+#define TAMP_CR1_ITAMP13E_Msk (0x1UL << TAMP_CR1_ITAMP13E_Pos) /*!< 0x10000000 */
+#define TAMP_CR1_ITAMP13E TAMP_CR1_ITAMP13E_Msk
+#define TAMP_CR1_ITAMP15E_Pos (30U)
+#define TAMP_CR1_ITAMP15E_Msk (0x1UL << TAMP_CR1_ITAMP15E_Pos) /*!< 0x40000000 */
+#define TAMP_CR1_ITAMP15E TAMP_CR1_ITAMP15E_Msk
+
+/******************** Bits definition for TAMP_CR2 register *****************/
+#define TAMP_CR2_TAMP1NOERASE_Pos (0U)
+#define TAMP_CR2_TAMP1NOERASE_Msk (0x1UL << TAMP_CR2_TAMP1NOERASE_Pos) /*!< 0x00000001 */
+#define TAMP_CR2_TAMP1NOERASE TAMP_CR2_TAMP1NOERASE_Msk
+#define TAMP_CR2_TAMP2NOERASE_Pos (1U)
+#define TAMP_CR2_TAMP2NOERASE_Msk (0x1UL << TAMP_CR2_TAMP2NOERASE_Pos) /*!< 0x00000002 */
+#define TAMP_CR2_TAMP2NOERASE TAMP_CR2_TAMP2NOERASE_Msk
+#define TAMP_CR2_TAMP3NOERASE_Pos (2U)
+#define TAMP_CR2_TAMP3NOERASE_Msk (0x1UL << TAMP_CR2_TAMP3NOERASE_Pos) /*!< 0x00000004 */
+#define TAMP_CR2_TAMP3NOERASE TAMP_CR2_TAMP3NOERASE_Msk
+#define TAMP_CR2_TAMP4NOERASE_Pos (3U)
+#define TAMP_CR2_TAMP4NOERASE_Msk (0x1UL << TAMP_CR2_TAMP4NOERASE_Pos) /*!< 0x00000008 */
+#define TAMP_CR2_TAMP4NOERASE TAMP_CR2_TAMP4NOERASE_Msk
+#define TAMP_CR2_TAMP5NOERASE_Pos (4U)
+#define TAMP_CR2_TAMP5NOERASE_Msk (0x1UL << TAMP_CR2_TAMP5NOERASE_Pos) /*!< 0x00000010 */
+#define TAMP_CR2_TAMP5NOERASE TAMP_CR2_TAMP5NOERASE_Msk
+#define TAMP_CR2_TAMP6NOERASE_Pos (5U)
+#define TAMP_CR2_TAMP6NOERASE_Msk (0x1UL << TAMP_CR2_TAMP6NOERASE_Pos) /*!< 0x00000020 */
+#define TAMP_CR2_TAMP6NOERASE TAMP_CR2_TAMP6NOERASE_Msk
+#define TAMP_CR2_TAMP7NOERASE_Pos (6U)
+#define TAMP_CR2_TAMP7NOERASE_Msk (0x1UL << TAMP_CR2_TAMP7NOERASE_Pos) /*!< 0x00000040 */
+#define TAMP_CR2_TAMP7NOERASE TAMP_CR2_TAMP7NOERASE_Msk
+#define TAMP_CR2_TAMP8NOERASE_Pos (7U)
+#define TAMP_CR2_TAMP8NOERASE_Msk (0x1UL << TAMP_CR2_TAMP8NOERASE_Pos) /*!< 0x00000080 */
+#define TAMP_CR2_TAMP8NOERASE TAMP_CR2_TAMP8NOERASE_Msk
+#define TAMP_CR2_TAMP1MSK_Pos (16U)
+#define TAMP_CR2_TAMP1MSK_Msk (0x1UL << TAMP_CR2_TAMP1MSK_Pos) /*!< 0x00010000 */
+#define TAMP_CR2_TAMP1MSK TAMP_CR2_TAMP1MSK_Msk
+#define TAMP_CR2_TAMP2MSK_Pos (17U)
+#define TAMP_CR2_TAMP2MSK_Msk (0x1UL << TAMP_CR2_TAMP2MSK_Pos) /*!< 0x00020000 */
+#define TAMP_CR2_TAMP2MSK TAMP_CR2_TAMP2MSK_Msk
+#define TAMP_CR2_TAMP3MSK_Pos (18U)
+#define TAMP_CR2_TAMP3MSK_Msk (0x1UL << TAMP_CR2_TAMP3MSK_Pos) /*!< 0x00040000 */
+#define TAMP_CR2_TAMP3MSK TAMP_CR2_TAMP3MSK_Msk
+#define TAMP_CR2_BKBLOCK_Pos (22U)
+#define TAMP_CR2_BKBLOCK_Msk (0x1UL << TAMP_CR2_BKBLOCK_Pos) /*!< 0x00400000 */
+#define TAMP_CR2_BKBLOCK TAMP_CR2_BKBLOCK_Msk
+#define TAMP_CR2_BKERASE_Pos (23U)
+#define TAMP_CR2_BKERASE_Msk (0x1UL << TAMP_CR2_BKERASE_Pos) /*!< 0x00800000 */
+#define TAMP_CR2_BKERASE TAMP_CR2_BKERASE_Msk
+#define TAMP_CR2_TAMP1TRG_Pos (24U)
+#define TAMP_CR2_TAMP1TRG_Msk (0x1UL << TAMP_CR2_TAMP1TRG_Pos) /*!< 0x01000000 */
+#define TAMP_CR2_TAMP1TRG TAMP_CR2_TAMP1TRG_Msk
+#define TAMP_CR2_TAMP2TRG_Pos (25U)
+#define TAMP_CR2_TAMP2TRG_Msk (0x1UL << TAMP_CR2_TAMP2TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP2TRG TAMP_CR2_TAMP2TRG_Msk
+#define TAMP_CR2_TAMP3TRG_Pos (26U)
+#define TAMP_CR2_TAMP3TRG_Msk (0x1UL << TAMP_CR2_TAMP3TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP3TRG TAMP_CR2_TAMP3TRG_Msk
+#define TAMP_CR2_TAMP4TRG_Pos (27U)
+#define TAMP_CR2_TAMP4TRG_Msk (0x1UL << TAMP_CR2_TAMP4TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP4TRG TAMP_CR2_TAMP4TRG_Msk
+#define TAMP_CR2_TAMP5TRG_Pos (28U)
+#define TAMP_CR2_TAMP5TRG_Msk (0x1UL << TAMP_CR2_TAMP5TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP5TRG TAMP_CR2_TAMP5TRG_Msk
+#define TAMP_CR2_TAMP6TRG_Pos (29U)
+#define TAMP_CR2_TAMP6TRG_Msk (0x1UL << TAMP_CR2_TAMP6TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP6TRG TAMP_CR2_TAMP6TRG_Msk
+#define TAMP_CR2_TAMP7TRG_Pos (30U)
+#define TAMP_CR2_TAMP7TRG_Msk (0x1UL << TAMP_CR2_TAMP7TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP7TRG TAMP_CR2_TAMP7TRG_Msk
+#define TAMP_CR2_TAMP8TRG_Pos (31U)
+#define TAMP_CR2_TAMP8TRG_Msk (0x1UL << TAMP_CR2_TAMP8TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP8TRG TAMP_CR2_TAMP8TRG_Msk
+
+/******************** Bits definition for TAMP_CR3 register *****************/
+#define TAMP_CR3_ITAMP1NOER_Pos (0U)
+#define TAMP_CR3_ITAMP1NOER_Msk (0x1UL << TAMP_CR3_ITAMP1NOER_Pos) /*!< 0x00000001 */
+#define TAMP_CR3_ITAMP1NOER TAMP_CR3_ITAMP1NOER_Msk
+#define TAMP_CR3_ITAMP2NOER_Pos (1U)
+#define TAMP_CR3_ITAMP2NOER_Msk (0x1UL << TAMP_CR3_ITAMP2NOER_Pos) /*!< 0x00000002 */
+#define TAMP_CR3_ITAMP2NOER TAMP_CR3_ITAMP2NOER_Msk
+#define TAMP_CR3_ITAMP3NOER_Pos (2U)
+#define TAMP_CR3_ITAMP3NOER_Msk (0x1UL << TAMP_CR3_ITAMP3NOER_Pos) /*!< 0x00000004 */
+#define TAMP_CR3_ITAMP3NOER TAMP_CR3_ITAMP3NOER_Msk
+#define TAMP_CR3_ITAMP4NOER_Pos (3U)
+#define TAMP_CR3_ITAMP4NOER_Msk (0x1UL << TAMP_CR3_ITAMP4NOER_Pos) /*!< 0x00000008 */
+#define TAMP_CR3_ITAMP4NOER TAMP_CR3_ITAMP4NOER_Msk
+#define TAMP_CR3_ITAMP5NOER_Pos (4U)
+#define TAMP_CR3_ITAMP5NOER_Msk (0x1UL << TAMP_CR3_ITAMP5NOER_Pos) /*!< 0x00000010 */
+#define TAMP_CR3_ITAMP5NOER TAMP_CR3_ITAMP5NOER_Msk
+#define TAMP_CR3_ITAMP6NOER_Pos (5U)
+#define TAMP_CR3_ITAMP6NOER_Msk (0x1UL << TAMP_CR3_ITAMP6NOER_Pos) /*!< 0x00000020 */
+#define TAMP_CR3_ITAMP6NOER TAMP_CR3_ITAMP6NOER_Msk
+#define TAMP_CR3_ITAMP7NOER_Pos (6U)
+#define TAMP_CR3_ITAMP7NOER_Msk (0x1UL << TAMP_CR3_ITAMP7NOER_Pos) /*!< 0x00000040 */
+#define TAMP_CR3_ITAMP7NOER TAMP_CR3_ITAMP7NOER_Msk
+#define TAMP_CR3_ITAMP8NOER_Pos (7U)
+#define TAMP_CR3_ITAMP8NOER_Msk (0x1UL << TAMP_CR3_ITAMP8NOER_Pos) /*!< 0x00000080 */
+#define TAMP_CR3_ITAMP8NOER TAMP_CR3_ITAMP8NOER_Msk
+#define TAMP_CR3_ITAMP9NOER_Pos (8U)
+#define TAMP_CR3_ITAMP9NOER_Msk (0x1UL << TAMP_CR3_ITAMP9NOER_Pos) /*!< 0x00000100 */
+#define TAMP_CR3_ITAMP9NOER TAMP_CR3_ITAMP9NOER_Msk
+#define TAMP_CR3_ITAMP11NOER_Pos (10U)
+#define TAMP_CR3_ITAMP11NOER_Msk (0x1UL << TAMP_CR3_ITAMP11NOER_Pos) /*!< 0x00000400 */
+#define TAMP_CR3_ITAMP11NOER TAMP_CR3_ITAMP11NOER_Msk
+#define TAMP_CR3_ITAMP12NOER_Pos (11U)
+#define TAMP_CR3_ITAMP12NOER_Msk (0x1UL << TAMP_CR3_ITAMP12NOER_Pos) /*!< 0x00000800 */
+#define TAMP_CR3_ITAMP12NOER TAMP_CR3_ITAMP12NOER_Msk
+#define TAMP_CR3_ITAMP13NOER_Pos (12U)
+#define TAMP_CR3_ITAMP13NOER_Msk (0x1UL << TAMP_CR3_ITAMP13NOER_Pos) /*!< 0x00001000 */
+#define TAMP_CR3_ITAMP13NOER TAMP_CR3_ITAMP13NOER_Msk
+#define TAMP_CR3_ITAMP15NOER_Pos (14U)
+#define TAMP_CR3_ITAMP15NOER_Msk (0x1UL << TAMP_CR3_ITAMP15NOER_Pos) /*!< 0x00004000 */
+#define TAMP_CR3_ITAMP15NOER TAMP_CR3_ITAMP15NOER_Msk
+
+/******************** Bits definition for TAMP_FLTCR register ***************/
+#define TAMP_FLTCR_TAMPFREQ_Pos (0U)
+#define TAMP_FLTCR_TAMPFREQ_Msk (0x7UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000007 */
+#define TAMP_FLTCR_TAMPFREQ TAMP_FLTCR_TAMPFREQ_Msk
+#define TAMP_FLTCR_TAMPFREQ_0 (0x1UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000001 */
+#define TAMP_FLTCR_TAMPFREQ_1 (0x2UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000002 */
+#define TAMP_FLTCR_TAMPFREQ_2 (0x4UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000004 */
+#define TAMP_FLTCR_TAMPFLT_Pos (3U)
+#define TAMP_FLTCR_TAMPFLT_Msk (0x3UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000018 */
+#define TAMP_FLTCR_TAMPFLT TAMP_FLTCR_TAMPFLT_Msk
+#define TAMP_FLTCR_TAMPFLT_0 (0x1UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000008 */
+#define TAMP_FLTCR_TAMPFLT_1 (0x2UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000010 */
+#define TAMP_FLTCR_TAMPPRCH_Pos (5U)
+#define TAMP_FLTCR_TAMPPRCH_Msk (0x3UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000060 */
+#define TAMP_FLTCR_TAMPPRCH TAMP_FLTCR_TAMPPRCH_Msk
+#define TAMP_FLTCR_TAMPPRCH_0 (0x1UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000020 */
+#define TAMP_FLTCR_TAMPPRCH_1 (0x2UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000040 */
+#define TAMP_FLTCR_TAMPPUDIS_Pos (7U)
+#define TAMP_FLTCR_TAMPPUDIS_Msk (0x1UL << TAMP_FLTCR_TAMPPUDIS_Pos) /*!< 0x00000080 */
+#define TAMP_FLTCR_TAMPPUDIS TAMP_FLTCR_TAMPPUDIS_Msk
+
+/******************** Bits definition for TAMP_ATCR1 register ***************/
+#define TAMP_ATCR1_TAMP1AM_Pos (0U)
+#define TAMP_ATCR1_TAMP1AM_Msk (0x1UL << TAMP_ATCR1_TAMP1AM_Pos) /*!< 0x00000001 */
+#define TAMP_ATCR1_TAMP1AM TAMP_ATCR1_TAMP1AM_Msk
+#define TAMP_ATCR1_TAMP2AM_Pos (1U)
+#define TAMP_ATCR1_TAMP2AM_Msk (0x1UL << TAMP_ATCR1_TAMP2AM_Pos) /*!< 0x00000002 */
+#define TAMP_ATCR1_TAMP2AM TAMP_ATCR1_TAMP2AM_Msk
+#define TAMP_ATCR1_TAMP3AM_Pos (2U)
+#define TAMP_ATCR1_TAMP3AM_Msk (0x1UL << TAMP_ATCR1_TAMP3AM_Pos) /*!< 0x00000004 */
+#define TAMP_ATCR1_TAMP3AM TAMP_ATCR1_TAMP3AM_Msk
+#define TAMP_ATCR1_TAMP4AM_Pos (3U)
+#define TAMP_ATCR1_TAMP4AM_Msk (0x1UL << TAMP_ATCR1_TAMP4AM_Pos) /*!< 0x00000008 */
+#define TAMP_ATCR1_TAMP4AM TAMP_ATCR1_TAMP4AM_Msk
+#define TAMP_ATCR1_TAMP5AM_Pos (4U)
+#define TAMP_ATCR1_TAMP5AM_Msk (0x1UL << TAMP_ATCR1_TAMP5AM_Pos) /*!< 0x00000010 */
+#define TAMP_ATCR1_TAMP5AM TAMP_ATCR1_TAMP5AM_Msk
+#define TAMP_ATCR1_TAMP6AM_Pos (5U)
+#define TAMP_ATCR1_TAMP6AM_Msk (0x1UL << TAMP_ATCR1_TAMP6AM_Pos) /*!< 0x00000010 */
+#define TAMP_ATCR1_TAMP6AM TAMP_ATCR1_TAMP6AM_Msk
+#define TAMP_ATCR1_TAMP7AM_Pos (6U)
+#define TAMP_ATCR1_TAMP7AM_Msk (0x1UL << TAMP_ATCR1_TAMP7AM_Pos) /*!< 0x00000040 */
+#define TAMP_ATCR1_TAMP7AM TAMP_ATCR1_TAMP7AM_Msk
+#define TAMP_ATCR1_TAMP8AM_Pos (7U)
+#define TAMP_ATCR1_TAMP8AM_Msk (0x1UL << TAMP_ATCR1_TAMP8AM_Pos) /*!< 0x00000080 */
+#define TAMP_ATCR1_TAMP8AM TAMP_ATCR1_TAMP8AM_Msk
+#define TAMP_ATCR1_ATOSEL1_Pos (8U)
+#define TAMP_ATCR1_ATOSEL1_Msk (0x3UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000300 */
+#define TAMP_ATCR1_ATOSEL1 TAMP_ATCR1_ATOSEL1_Msk
+#define TAMP_ATCR1_ATOSEL1_0 (0x1UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000100 */
+#define TAMP_ATCR1_ATOSEL1_1 (0x2UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000200 */
+#define TAMP_ATCR1_ATOSEL2_Pos (10U)
+#define TAMP_ATCR1_ATOSEL2_Msk (0x3UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000C00 */
+#define TAMP_ATCR1_ATOSEL2 TAMP_ATCR1_ATOSEL2_Msk
+#define TAMP_ATCR1_ATOSEL2_0 (0x1UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000400 */
+#define TAMP_ATCR1_ATOSEL2_1 (0x2UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000800 */
+#define TAMP_ATCR1_ATOSEL3_Pos (12U)
+#define TAMP_ATCR1_ATOSEL3_Msk (0x3UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00003000 */
+#define TAMP_ATCR1_ATOSEL3 TAMP_ATCR1_ATOSEL3_Msk
+#define TAMP_ATCR1_ATOSEL3_0 (0x1UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00001000 */
+#define TAMP_ATCR1_ATOSEL3_1 (0x2UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00002000 */
+#define TAMP_ATCR1_ATOSEL4_Pos (14U)
+#define TAMP_ATCR1_ATOSEL4_Msk (0x3UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x0000C000 */
+#define TAMP_ATCR1_ATOSEL4 TAMP_ATCR1_ATOSEL4_Msk
+#define TAMP_ATCR1_ATOSEL4_0 (0x1UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x00004000 */
+#define TAMP_ATCR1_ATOSEL4_1 (0x2UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x00008000 */
+#define TAMP_ATCR1_ATCKSEL_Pos (16U)
+#define TAMP_ATCR1_ATCKSEL_Msk (0xFUL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x000F0000 */
+#define TAMP_ATCR1_ATCKSEL TAMP_ATCR1_ATCKSEL_Msk
+#define TAMP_ATCR1_ATCKSEL_0 (0x1UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00010000 */
+#define TAMP_ATCR1_ATCKSEL_1 (0x2UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00020000 */
+#define TAMP_ATCR1_ATCKSEL_2 (0x4UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00040000 */
+#define TAMP_ATCR1_ATCKSEL_3 (0x8UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00080000 */
+#define TAMP_ATCR1_ATPER_Pos (24U)
+#define TAMP_ATCR1_ATPER_Msk (0x7UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x07000000 */
+#define TAMP_ATCR1_ATPER TAMP_ATCR1_ATPER_Msk
+#define TAMP_ATCR1_ATPER_0 (0x1UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x01000000 */
+#define TAMP_ATCR1_ATPER_1 (0x2UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x02000000 */
+#define TAMP_ATCR1_ATPER_2 (0x4UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x04000000 */
+#define TAMP_ATCR1_ATOSHARE_Pos (30U)
+#define TAMP_ATCR1_ATOSHARE_Msk (0x1UL << TAMP_ATCR1_ATOSHARE_Pos) /*!< 0x40000000 */
+#define TAMP_ATCR1_ATOSHARE TAMP_ATCR1_ATOSHARE_Msk
+#define TAMP_ATCR1_FLTEN_Pos (31U)
+#define TAMP_ATCR1_FLTEN_Msk (0x1UL << TAMP_ATCR1_FLTEN_Pos) /*!< 0x80000000 */
+#define TAMP_ATCR1_FLTEN TAMP_ATCR1_FLTEN_Msk
+
+/******************** Bits definition for TAMP_ATSEEDR register ******************/
+#define TAMP_ATSEEDR_SEED_Pos (0U)
+#define TAMP_ATSEEDR_SEED_Msk (0xFFFFFFFFUL << TAMP_ATSEEDR_SEED_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_ATSEEDR_SEED TAMP_ATSEEDR_SEED_Msk
+
+/******************** Bits definition for TAMP_ATOR register ******************/
+#define TAMP_ATOR_PRNG_Pos (0U)
+#define TAMP_ATOR_PRNG_Msk (0xFFUL << TAMP_ATOR_PRNG_Pos) /*!< 0x000000FF */
+#define TAMP_ATOR_PRNG TAMP_ATOR_PRNG_Msk
+#define TAMP_ATOR_PRNG_0 (0x1UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000001 */
+#define TAMP_ATOR_PRNG_1 (0x2UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000002 */
+#define TAMP_ATOR_PRNG_2 (0x4UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000004 */
+#define TAMP_ATOR_PRNG_3 (0x8UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000008 */
+#define TAMP_ATOR_PRNG_4 (0x10UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000010 */
+#define TAMP_ATOR_PRNG_5 (0x20UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000020 */
+#define TAMP_ATOR_PRNG_6 (0x40UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000040 */
+#define TAMP_ATOR_PRNG_7 (0x80UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000080 */
+#define TAMP_ATOR_SEEDF_Pos (14U)
+#define TAMP_ATOR_SEEDF_Msk (1UL << TAMP_ATOR_SEEDF_Pos) /*!< 0x00004000 */
+#define TAMP_ATOR_SEEDF TAMP_ATOR_SEEDF_Msk
+#define TAMP_ATOR_INITS_Pos (15U)
+#define TAMP_ATOR_INITS_Msk (1UL << TAMP_ATOR_INITS_Pos) /*!< 0x00008000 */
+#define TAMP_ATOR_INITS TAMP_ATOR_INITS_Msk
+
+/******************** Bits definition for TAMP_ATCR2 register ***************/
+#define TAMP_ATCR2_ATOSEL1_Pos (8U)
+#define TAMP_ATCR2_ATOSEL1_Msk (0x7UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000700 */
+#define TAMP_ATCR2_ATOSEL1 TAMP_ATCR2_ATOSEL1_Msk
+#define TAMP_ATCR2_ATOSEL1_0 (0x1UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000100 */
+#define TAMP_ATCR2_ATOSEL1_1 (0x2UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000200 */
+#define TAMP_ATCR2_ATOSEL1_2 (0x4UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000400 */
+#define TAMP_ATCR2_ATOSEL2_Pos (11U)
+#define TAMP_ATCR2_ATOSEL2_Msk (0x7UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00003800 */
+#define TAMP_ATCR2_ATOSEL2 TAMP_ATCR2_ATOSEL2_Msk
+#define TAMP_ATCR2_ATOSEL2_0 (0x1UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00000800 */
+#define TAMP_ATCR2_ATOSEL2_1 (0x2UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00001000 */
+#define TAMP_ATCR2_ATOSEL2_2 (0x4UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00002000 */
+#define TAMP_ATCR2_ATOSEL3_Pos (14U)
+#define TAMP_ATCR2_ATOSEL3_Msk (0x7UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x0001C000 */
+#define TAMP_ATCR2_ATOSEL3 TAMP_ATCR2_ATOSEL3_Msk
+#define TAMP_ATCR2_ATOSEL3_0 (0x1UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00004000 */
+#define TAMP_ATCR2_ATOSEL3_1 (0x2UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00008000 */
+#define TAMP_ATCR2_ATOSEL3_2 (0x4UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00010000 */
+#define TAMP_ATCR2_ATOSEL4_Pos (17U)
+#define TAMP_ATCR2_ATOSEL4_Msk (0x7UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x000E0000 */
+#define TAMP_ATCR2_ATOSEL4 TAMP_ATCR2_ATOSEL4_Msk
+#define TAMP_ATCR2_ATOSEL4_0 (0x1UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00020000 */
+#define TAMP_ATCR2_ATOSEL4_1 (0x2UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00040000 */
+#define TAMP_ATCR2_ATOSEL4_2 (0x4UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00080000 */
+#define TAMP_ATCR2_ATOSEL5_Pos (20U)
+#define TAMP_ATCR2_ATOSEL5_Msk (0x7UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00700000 */
+#define TAMP_ATCR2_ATOSEL5 TAMP_ATCR2_ATOSEL5_Msk
+#define TAMP_ATCR2_ATOSEL5_0 (0x1UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00100000 */
+#define TAMP_ATCR2_ATOSEL5_1 (0x2UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00200000 */
+#define TAMP_ATCR2_ATOSEL5_2 (0x4UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00400000 */
+#define TAMP_ATCR2_ATOSEL6_Pos (23U)
+#define TAMP_ATCR2_ATOSEL6_Msk (0x7UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x03800000 */
+#define TAMP_ATCR2_ATOSEL6 TAMP_ATCR2_ATOSEL6_Msk
+#define TAMP_ATCR2_ATOSEL6_0 (0x1UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x00800000 */
+#define TAMP_ATCR2_ATOSEL6_1 (0x2UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x01000000 */
+#define TAMP_ATCR2_ATOSEL6_2 (0x4UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x02000000 */
+#define TAMP_ATCR2_ATOSEL7_Pos (26U)
+#define TAMP_ATCR2_ATOSEL7_Msk (0x7UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x1C000000 */
+#define TAMP_ATCR2_ATOSEL7 TAMP_ATCR2_ATOSEL7_Msk
+#define TAMP_ATCR2_ATOSEL7_0 (0x1UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x04000000 */
+#define TAMP_ATCR2_ATOSEL7_1 (0x2UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x08000000 */
+#define TAMP_ATCR2_ATOSEL7_2 (0x4UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x10000000 */
+#define TAMP_ATCR2_ATOSEL8_Pos (29U)
+#define TAMP_ATCR2_ATOSEL8_Msk (0x7UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0xE0000000 */
+#define TAMP_ATCR2_ATOSEL8 TAMP_ATCR2_ATOSEL8_Msk
+#define TAMP_ATCR2_ATOSEL8_0 (0x1UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x20000000 */
+#define TAMP_ATCR2_ATOSEL8_1 (0x2UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x40000000 */
+#define TAMP_ATCR2_ATOSEL8_2 (0x4UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x80000000 */
+
+/******************** Bits definition for TAMP_SECCFGR register *************/
+#define TAMP_SECCFGR_BKPRWSEC_Pos (0U)
+#define TAMP_SECCFGR_BKPRWSEC_Msk (0xFFUL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x000000FF */
+#define TAMP_SECCFGR_BKPRWSEC TAMP_SECCFGR_BKPRWSEC_Msk
+#define TAMP_SECCFGR_BKPRWSEC_0 (0x1UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000001 */
+#define TAMP_SECCFGR_BKPRWSEC_1 (0x2UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000002 */
+#define TAMP_SECCFGR_BKPRWSEC_2 (0x4UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000004 */
+#define TAMP_SECCFGR_BKPRWSEC_3 (0x8UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000008 */
+#define TAMP_SECCFGR_BKPRWSEC_4 (0x10UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000010 */
+#define TAMP_SECCFGR_BKPRWSEC_5 (0x20UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000020 */
+#define TAMP_SECCFGR_BKPRWSEC_6 (0x40UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000040 */
+#define TAMP_SECCFGR_BKPRWSEC_7 (0x80UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000080 */
+#define TAMP_SECCFGR_CNT1SEC_Pos (15U)
+#define TAMP_SECCFGR_CNT1SEC_Msk (0x1UL << TAMP_SECCFGR_CNT1SEC_Pos) /*!< 0x00008000 */
+#define TAMP_SECCFGR_CNT1SEC TAMP_SECCFGR_CNT1SEC_Msk
+#define TAMP_SECCFGR_BKPWSEC_Pos (16U)
+#define TAMP_SECCFGR_BKPWSEC_Msk (0xFFUL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00FF0000 */
+#define TAMP_SECCFGR_BKPWSEC TAMP_SECCFGR_BKPWSEC_Msk
+#define TAMP_SECCFGR_BKPWSEC_0 (0x1UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00010000 */
+#define TAMP_SECCFGR_BKPWSEC_1 (0x2UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00020000 */
+#define TAMP_SECCFGR_BKPWSEC_2 (0x4UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00040000 */
+#define TAMP_SECCFGR_BKPWSEC_3 (0x8UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00080000 */
+#define TAMP_SECCFGR_BKPWSEC_4 (0x10UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00100000 */
+#define TAMP_SECCFGR_BKPWSEC_5 (0x20UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00200000 */
+#define TAMP_SECCFGR_BKPWSEC_6 (0x40UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00400000 */
+#define TAMP_SECCFGR_BKPWSEC_7 (0x80UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00800000 */
+#define TAMP_SECCFGR_BHKLOCK_Pos (30U)
+#define TAMP_SECCFGR_BHKLOCK_Msk (0x1UL << TAMP_SECCFGR_BHKLOCK_Pos) /*!< 0x40000000 */
+#define TAMP_SECCFGR_BHKLOCK TAMP_SECCFGR_BHKLOCK_Msk
+#define TAMP_SECCFGR_TAMPSEC_Pos (31U)
+#define TAMP_SECCFGR_TAMPSEC_Msk (0x1UL << TAMP_SECCFGR_TAMPSEC_Pos) /*!< 0x80000000 */
+#define TAMP_SECCFGR_TAMPSEC TAMP_SECCFGR_TAMPSEC_Msk
+
+/******************** Bits definition for TAMP_PRIVCFGR register ************/
+#define TAMP_PRIVCFGR_CNT1PRIV_Pos (15U)
+#define TAMP_PRIVCFGR_CNT1PRIV_Msk (0x1UL << TAMP_PRIVCFGR_CNT1PRIV_Pos) /*!< 0x20000000 */
+#define TAMP_PRIVCFGR_CNT1PRIV TAMP_PRIVCFGR_CNT1PRIV_Msk
+#define TAMP_PRIVCFGR_BKPRWPRIV_Pos (29U)
+#define TAMP_PRIVCFGR_BKPRWPRIV_Msk (0x1UL << TAMP_PRIVCFGR_BKPRWPRIV_Pos) /*!< 0x20000000 */
+#define TAMP_PRIVCFGR_BKPRWPRIV TAMP_PRIVCFGR_BKPRWPRIV_Msk
+#define TAMP_PRIVCFGR_BKPWPRIV_Pos (30U)
+#define TAMP_PRIVCFGR_BKPWPRIV_Msk (0x1UL << TAMP_PRIVCFGR_BKPWPRIV_Pos) /*!< 0x40000000 */
+#define TAMP_PRIVCFGR_BKPWPRIV TAMP_PRIVCFGR_BKPWPRIV_Msk
+#define TAMP_PRIVCFGR_TAMPPRIV_Pos (31U)
+#define TAMP_PRIVCFGR_TAMPPRIV_Msk (0x1UL << TAMP_PRIVCFGR_TAMPPRIV_Pos) /*!< 0x80000000 */
+#define TAMP_PRIVCFGR_TAMPPRIV TAMP_PRIVCFGR_TAMPPRIV_Msk
+
+/******************** Bits definition for TAMP_IER register *****************/
+#define TAMP_IER_TAMP1IE_Pos (0U)
+#define TAMP_IER_TAMP1IE_Msk (0x1UL << TAMP_IER_TAMP1IE_Pos) /*!< 0x00000001 */
+#define TAMP_IER_TAMP1IE TAMP_IER_TAMP1IE_Msk
+#define TAMP_IER_TAMP2IE_Pos (1U)
+#define TAMP_IER_TAMP2IE_Msk (0x1UL << TAMP_IER_TAMP2IE_Pos) /*!< 0x00000002 */
+#define TAMP_IER_TAMP2IE TAMP_IER_TAMP2IE_Msk
+#define TAMP_IER_TAMP3IE_Pos (2U)
+#define TAMP_IER_TAMP3IE_Msk (0x1UL << TAMP_IER_TAMP3IE_Pos) /*!< 0x00000004 */
+#define TAMP_IER_TAMP3IE TAMP_IER_TAMP3IE_Msk
+#define TAMP_IER_TAMP4IE_Pos (3U)
+#define TAMP_IER_TAMP4IE_Msk (0x1UL << TAMP_IER_TAMP4IE_Pos) /*!< 0x00000008 */
+#define TAMP_IER_TAMP4IE TAMP_IER_TAMP4IE_Msk
+#define TAMP_IER_TAMP5IE_Pos (4U)
+#define TAMP_IER_TAMP5IE_Msk (0x1UL << TAMP_IER_TAMP5IE_Pos) /*!< 0x00000010 */
+#define TAMP_IER_TAMP5IE TAMP_IER_TAMP5IE_Msk
+#define TAMP_IER_TAMP6IE_Pos (5U)
+#define TAMP_IER_TAMP6IE_Msk (0x1UL << TAMP_IER_TAMP6IE_Pos) /*!< 0x00000020 */
+#define TAMP_IER_TAMP6IE TAMP_IER_TAMP6IE_Msk
+#define TAMP_IER_TAMP7IE_Pos (6U)
+#define TAMP_IER_TAMP7IE_Msk (0x1UL << TAMP_IER_TAMP7IE_Pos) /*!< 0x00000040 */
+#define TAMP_IER_TAMP7IE TAMP_IER_TAMP7IE_Msk
+#define TAMP_IER_TAMP8IE_Pos (7U)
+#define TAMP_IER_TAMP8IE_Msk (0x1UL << TAMP_IER_TAMP8IE_Pos) /*!< 0x00000080 */
+#define TAMP_IER_TAMP8IE TAMP_IER_TAMP8IE_Msk
+#define TAMP_IER_ITAMP1IE_Pos (16U)
+#define TAMP_IER_ITAMP1IE_Msk (0x1UL << TAMP_IER_ITAMP1IE_Pos) /*!< 0x00010000 */
+#define TAMP_IER_ITAMP1IE TAMP_IER_ITAMP1IE_Msk
+#define TAMP_IER_ITAMP2IE_Pos (17U)
+#define TAMP_IER_ITAMP2IE_Msk (0x1UL << TAMP_IER_ITAMP2IE_Pos) /*!< 0x00020000 */
+#define TAMP_IER_ITAMP2IE TAMP_IER_ITAMP2IE_Msk
+#define TAMP_IER_ITAMP3IE_Pos (18U)
+#define TAMP_IER_ITAMP3IE_Msk (0x1UL << TAMP_IER_ITAMP3IE_Pos) /*!< 0x00040000 */
+#define TAMP_IER_ITAMP3IE TAMP_IER_ITAMP3IE_Msk
+#define TAMP_IER_ITAMP4IE_Pos (19U)
+#define TAMP_IER_ITAMP4IE_Msk (0x1UL << TAMP_IER_ITAMP4IE_Pos) /*!< 0x00080000 */
+#define TAMP_IER_ITAMP4IE TAMP_IER_ITAMP4IE_Msk
+#define TAMP_IER_ITAMP5IE_Pos (20U)
+#define TAMP_IER_ITAMP5IE_Msk (0x1UL << TAMP_IER_ITAMP5IE_Pos) /*!< 0x00100000 */
+#define TAMP_IER_ITAMP5IE TAMP_IER_ITAMP5IE_Msk
+#define TAMP_IER_ITAMP6IE_Pos (21U)
+#define TAMP_IER_ITAMP6IE_Msk (0x1UL << TAMP_IER_ITAMP6IE_Pos) /*!< 0x00200000 */
+#define TAMP_IER_ITAMP6IE TAMP_IER_ITAMP6IE_Msk
+#define TAMP_IER_ITAMP7IE_Pos (22U)
+#define TAMP_IER_ITAMP7IE_Msk (0x1UL << TAMP_IER_ITAMP7IE_Pos) /*!< 0x00400000 */
+#define TAMP_IER_ITAMP7IE TAMP_IER_ITAMP7IE_Msk
+#define TAMP_IER_ITAMP8IE_Pos (23U)
+#define TAMP_IER_ITAMP8IE_Msk (0x1UL << TAMP_IER_ITAMP8IE_Pos) /*!< 0x00800000 */
+#define TAMP_IER_ITAMP8IE TAMP_IER_ITAMP8IE_Msk
+#define TAMP_IER_ITAMP9IE_Pos (24U)
+#define TAMP_IER_ITAMP9IE_Msk (0x1UL << TAMP_IER_ITAMP9IE_Pos) /*!< 0x01000000 */
+#define TAMP_IER_ITAMP9IE TAMP_IER_ITAMP9IE_Msk
+#define TAMP_IER_ITAMP11IE_Pos (26U)
+#define TAMP_IER_ITAMP11IE_Msk (0x1UL << TAMP_IER_ITAMP11IE_Pos) /*!< 0x04000000 */
+#define TAMP_IER_ITAMP11IE TAMP_IER_ITAMP11IE_Msk
+#define TAMP_IER_ITAMP12IE_Pos (27U)
+#define TAMP_IER_ITAMP12IE_Msk (0x1UL << TAMP_IER_ITAMP12IE_Pos) /*!< 0x08000000 */
+#define TAMP_IER_ITAMP12IE TAMP_IER_ITAMP12IE_Msk
+#define TAMP_IER_ITAMP13IE_Pos (28U)
+#define TAMP_IER_ITAMP13IE_Msk (0x1UL << TAMP_IER_ITAMP13IE_Pos) /*!< 0x10000000 */
+#define TAMP_IER_ITAMP13IE TAMP_IER_ITAMP13IE_Msk
+#define TAMP_IER_ITAMP15IE_Pos (30U)
+#define TAMP_IER_ITAMP15IE_Msk (0x1UL << TAMP_IER_ITAMP15IE_Pos) /*!< 0x40000000 */
+#define TAMP_IER_ITAMP15IE TAMP_IER_ITAMP15IE_Msk
+
+/******************** Bits definition for TAMP_SR register *****************/
+#define TAMP_SR_TAMP1F_Pos (0U)
+#define TAMP_SR_TAMP1F_Msk (0x1UL << TAMP_SR_TAMP1F_Pos) /*!< 0x00000001 */
+#define TAMP_SR_TAMP1F TAMP_SR_TAMP1F_Msk
+#define TAMP_SR_TAMP2F_Pos (1U)
+#define TAMP_SR_TAMP2F_Msk (0x1UL << TAMP_SR_TAMP2F_Pos) /*!< 0x00000002 */
+#define TAMP_SR_TAMP2F TAMP_SR_TAMP2F_Msk
+#define TAMP_SR_TAMP3F_Pos (2U)
+#define TAMP_SR_TAMP3F_Msk (0x1UL << TAMP_SR_TAMP3F_Pos) /*!< 0x00000004 */
+#define TAMP_SR_TAMP3F TAMP_SR_TAMP3F_Msk
+#define TAMP_SR_TAMP4F_Pos (3U)
+#define TAMP_SR_TAMP4F_Msk (0x1UL << TAMP_SR_TAMP4F_Pos) /*!< 0x00000008 */
+#define TAMP_SR_TAMP4F TAMP_SR_TAMP4F_Msk
+#define TAMP_SR_TAMP5F_Pos (4U)
+#define TAMP_SR_TAMP5F_Msk (0x1UL << TAMP_SR_TAMP5F_Pos) /*!< 0x00000010 */
+#define TAMP_SR_TAMP5F TAMP_SR_TAMP5F_Msk
+#define TAMP_SR_TAMP6F_Pos (5U)
+#define TAMP_SR_TAMP6F_Msk (0x1UL << TAMP_SR_TAMP6F_Pos) /*!< 0x00000020 */
+#define TAMP_SR_TAMP6F TAMP_SR_TAMP6F_Msk
+#define TAMP_SR_TAMP7F_Pos (6U)
+#define TAMP_SR_TAMP7F_Msk (0x1UL << TAMP_SR_TAMP7F_Pos) /*!< 0x00000040 */
+#define TAMP_SR_TAMP7F TAMP_SR_TAMP7F_Msk
+#define TAMP_SR_TAMP8F_Pos (7U)
+#define TAMP_SR_TAMP8F_Msk (0x1UL << TAMP_SR_TAMP8F_Pos) /*!< 0x00000080 */
+#define TAMP_SR_TAMP8F TAMP_SR_TAMP8F_Msk
+#define TAMP_SR_ITAMP1F_Pos (16U)
+#define TAMP_SR_ITAMP1F_Msk (0x1UL << TAMP_SR_ITAMP1F_Pos) /*!< 0x00010000 */
+#define TAMP_SR_ITAMP1F TAMP_SR_ITAMP1F_Msk
+#define TAMP_SR_ITAMP2F_Pos (17U)
+#define TAMP_SR_ITAMP2F_Msk (0x1UL << TAMP_SR_ITAMP2F_Pos) /*!< 0x00020000 */
+#define TAMP_SR_ITAMP2F TAMP_SR_ITAMP2F_Msk
+#define TAMP_SR_ITAMP3F_Pos (18U)
+#define TAMP_SR_ITAMP3F_Msk (0x1UL << TAMP_SR_ITAMP3F_Pos) /*!< 0x00040000 */
+#define TAMP_SR_ITAMP3F TAMP_SR_ITAMP3F_Msk
+#define TAMP_SR_ITAMP4F_Pos (19U)
+#define TAMP_SR_ITAMP4F_Msk (0x1UL << TAMP_SR_ITAMP4F_Pos) /*!< 0x00080000 */
+#define TAMP_SR_ITAMP4F TAMP_SR_ITAMP4F_Msk
+#define TAMP_SR_ITAMP5F_Pos (20U)
+#define TAMP_SR_ITAMP5F_Msk (0x1UL << TAMP_SR_ITAMP5F_Pos) /*!< 0x00100000 */
+#define TAMP_SR_ITAMP5F TAMP_SR_ITAMP5F_Msk
+#define TAMP_SR_ITAMP6F_Pos (21U)
+#define TAMP_SR_ITAMP6F_Msk (0x1UL << TAMP_SR_ITAMP6F_Pos) /*!< 0x00200000 */
+#define TAMP_SR_ITAMP6F TAMP_SR_ITAMP6F_Msk
+#define TAMP_SR_ITAMP7F_Pos (22U)
+#define TAMP_SR_ITAMP7F_Msk (0x1UL << TAMP_SR_ITAMP7F_Pos) /*!< 0x00400000 */
+#define TAMP_SR_ITAMP7F TAMP_SR_ITAMP7F_Msk
+#define TAMP_SR_ITAMP8F_Pos (23U)
+#define TAMP_SR_ITAMP8F_Msk (0x1UL << TAMP_SR_ITAMP8F_Pos) /*!< 0x00800000 */
+#define TAMP_SR_ITAMP8F TAMP_SR_ITAMP8F_Msk
+#define TAMP_SR_ITAMP9F_Pos (24U)
+#define TAMP_SR_ITAMP9F_Msk (0x1UL << TAMP_SR_ITAMP9F_Pos) /*!< 0x01000000 */
+#define TAMP_SR_ITAMP9F TAMP_SR_ITAMP9F_Msk
+#define TAMP_SR_ITAMP11F_Pos (26U)
+#define TAMP_SR_ITAMP11F_Msk (0x1UL << TAMP_SR_ITAMP11F_Pos) /*!< 0x04000000 */
+#define TAMP_SR_ITAMP11F TAMP_SR_ITAMP11F_Msk
+#define TAMP_SR_ITAMP12F_Pos (27U)
+#define TAMP_SR_ITAMP12F_Msk (0x1UL << TAMP_SR_ITAMP12F_Pos) /*!< 0x08000000 */
+#define TAMP_SR_ITAMP12F TAMP_SR_ITAMP12F_Msk
+#define TAMP_SR_ITAMP13F_Pos (28U)
+#define TAMP_SR_ITAMP13F_Msk (0x1UL << TAMP_SR_ITAMP13F_Pos) /*!< 0x10000000 */
+#define TAMP_SR_ITAMP13F TAMP_SR_ITAMP13F_Msk
+#define TAMP_SR_ITAMP15F_Pos (30U)
+#define TAMP_SR_ITAMP15F_Msk (0x1UL << TAMP_SR_ITAMP15F_Pos) /*!< 0x40000000 */
+#define TAMP_SR_ITAMP15F TAMP_SR_ITAMP15F_Msk
+
+/******************** Bits definition for TAMP_MISR register ****************/
+#define TAMP_MISR_TAMP1MF_Pos (0U)
+#define TAMP_MISR_TAMP1MF_Msk (0x1UL << TAMP_MISR_TAMP1MF_Pos) /*!< 0x00000001 */
+#define TAMP_MISR_TAMP1MF TAMP_MISR_TAMP1MF_Msk
+#define TAMP_MISR_TAMP2MF_Pos (1U)
+#define TAMP_MISR_TAMP2MF_Msk (0x1UL << TAMP_MISR_TAMP2MF_Pos) /*!< 0x00000002 */
+#define TAMP_MISR_TAMP2MF TAMP_MISR_TAMP2MF_Msk
+#define TAMP_MISR_TAMP3MF_Pos (2U)
+#define TAMP_MISR_TAMP3MF_Msk (0x1UL << TAMP_MISR_TAMP3MF_Pos) /*!< 0x00000004 */
+#define TAMP_MISR_TAMP3MF TAMP_MISR_TAMP3MF_Msk
+#define TAMP_MISR_TAMP4MF_Pos (3U)
+#define TAMP_MISR_TAMP4MF_Msk (0x1UL << TAMP_MISR_TAMP4MF_Pos) /*!< 0x00000008 */
+#define TAMP_MISR_TAMP4MF TAMP_MISR_TAMP4MF_Msk
+#define TAMP_MISR_TAMP5MF_Pos (4U)
+#define TAMP_MISR_TAMP5MF_Msk (0x1UL << TAMP_MISR_TAMP5MF_Pos) /*!< 0x00000010 */
+#define TAMP_MISR_TAMP5MF TAMP_MISR_TAMP5MF_Msk
+#define TAMP_MISR_TAMP6MF_Pos (5U)
+#define TAMP_MISR_TAMP6MF_Msk (0x1UL << TAMP_MISR_TAMP6MF_Pos) /*!< 0x00000020 */
+#define TAMP_MISR_TAMP6MF TAMP_MISR_TAMP6MF_Msk
+#define TAMP_MISR_TAMP7MF_Pos (6U)
+#define TAMP_MISR_TAMP7MF_Msk (0x1UL << TAMP_MISR_TAMP7MF_Pos) /*!< 0x00000040 */
+#define TAMP_MISR_TAMP7MF TAMP_MISR_TAMP7MF_Msk
+#define TAMP_MISR_TAMP8MF_Pos (7U)
+#define TAMP_MISR_TAMP8MF_Msk (0x1UL << TAMP_MISR_TAMP8MF_Pos) /*!< 0x00000080 */
+#define TAMP_MISR_TAMP8MF TAMP_MISR_TAMP8MF_Msk
+#define TAMP_MISR_ITAMP1MF_Pos (16U)
+#define TAMP_MISR_ITAMP1MF_Msk (0x1UL << TAMP_MISR_ITAMP1MF_Pos) /*!< 0x00010000 */
+#define TAMP_MISR_ITAMP1MF TAMP_MISR_ITAMP1MF_Msk
+#define TAMP_MISR_ITAMP2MF_Pos (17U)
+#define TAMP_MISR_ITAMP2MF_Msk (0x1UL << TAMP_MISR_ITAMP2MF_Pos) /*!< 0x00020000 */
+#define TAMP_MISR_ITAMP2MF TAMP_MISR_ITAMP2MF_Msk
+#define TAMP_MISR_ITAMP3MF_Pos (18U)
+#define TAMP_MISR_ITAMP3MF_Msk (0x1UL << TAMP_MISR_ITAMP3MF_Pos) /*!< 0x00040000 */
+#define TAMP_MISR_ITAMP3MF TAMP_MISR_ITAMP3MF_Msk
+#define TAMP_MISR_ITAMP4MF_Pos (19U)
+#define TAMP_MISR_ITAMP4MF_Msk (0x1UL << TAMP_MISR_ITAMP4MF_Pos) /*!< 0x00080000 */
+#define TAMP_MISR_ITAMP4MF TAMP_MISR_ITAMP4MF_Msk
+#define TAMP_MISR_ITAMP5MF_Pos (20U)
+#define TAMP_MISR_ITAMP5MF_Msk (0x1UL << TAMP_MISR_ITAMP5MF_Pos) /*!< 0x00100000 */
+#define TAMP_MISR_ITAMP5MF TAMP_MISR_ITAMP5MF_Msk
+#define TAMP_MISR_ITAMP6MF_Pos (21U)
+#define TAMP_MISR_ITAMP6MF_Msk (0x1UL << TAMP_MISR_ITAMP6MF_Pos) /*!< 0x00200000 */
+#define TAMP_MISR_ITAMP6MF TAMP_MISR_ITAMP6MF_Msk
+#define TAMP_MISR_ITAMP7MF_Pos (22U)
+#define TAMP_MISR_ITAMP7MF_Msk (0x1UL << TAMP_MISR_ITAMP7MF_Pos) /*!< 0x00400000 */
+#define TAMP_MISR_ITAMP7MF TAMP_MISR_ITAMP7MF_Msk
+#define TAMP_MISR_ITAMP8MF_Pos (23U)
+#define TAMP_MISR_ITAMP8MF_Msk (0x1UL << TAMP_MISR_ITAMP8MF_Pos) /*!< 0x00800000 */
+#define TAMP_MISR_ITAMP8MF TAMP_MISR_ITAMP8MF_Msk
+#define TAMP_MISR_ITAMP9MF_Pos (24U)
+#define TAMP_MISR_ITAMP9MF_Msk (0x1UL << TAMP_MISR_ITAMP9MF_Pos) /*!< 0x01000000 */
+#define TAMP_MISR_ITAMP9MF TAMP_MISR_ITAMP9MF_Msk
+#define TAMP_MISR_ITAMP11MF_Pos (26U)
+#define TAMP_MISR_ITAMP11MF_Msk (0x1UL << TAMP_MISR_ITAMP11MF_Pos) /*!< 0x04000000 */
+#define TAMP_MISR_ITAMP11MF TAMP_MISR_ITAMP11MF_Msk
+#define TAMP_MISR_ITAMP12MF_Pos (27U)
+#define TAMP_MISR_ITAMP12MF_Msk (0x1UL << TAMP_MISR_ITAMP12MF_Pos) /*!< 0x08000000 */
+#define TAMP_MISR_ITAMP12MF TAMP_MISR_ITAMP12MF_Msk
+#define TAMP_MISR_ITAMP13MF_Pos (28U)
+#define TAMP_MISR_ITAMP13MF_Msk (0x1UL << TAMP_MISR_ITAMP13MF_Pos) /*!< 0x10000000 */
+#define TAMP_MISR_ITAMP13MF TAMP_MISR_ITAMP13MF_Msk
+#define TAMP_MISR_ITAMP15MF_Pos (30U)
+#define TAMP_MISR_ITAMP15MF_Msk (0x1UL << TAMP_MISR_ITAMP15MF_Pos) /*!< 0x40000000 */
+#define TAMP_MISR_ITAMP15MF TAMP_MISR_ITAMP15MF_Msk
+
+/******************** Bits definition for TAMP_SMISR register ************ *****/
+#define TAMP_SMISR_TAMP1MF_Pos (0U)
+#define TAMP_SMISR_TAMP1MF_Msk (0x1UL << TAMP_SMISR_TAMP1MF_Pos) /*!< 0x00000001 */
+#define TAMP_SMISR_TAMP1MF TAMP_SMISR_TAMP1MF_Msk
+#define TAMP_SMISR_TAMP2MF_Pos (1U)
+#define TAMP_SMISR_TAMP2MF_Msk (0x1UL << TAMP_SMISR_TAMP2MF_Pos) /*!< 0x00000002 */
+#define TAMP_SMISR_TAMP2MF TAMP_SMISR_TAMP2MF_Msk
+#define TAMP_SMISR_TAMP3MF_Pos (2U)
+#define TAMP_SMISR_TAMP3MF_Msk (0x1UL << TAMP_SMISR_TAMP3MF_Pos) /*!< 0x00000004 */
+#define TAMP_SMISR_TAMP3MF TAMP_SMISR_TAMP3MF_Msk
+#define TAMP_SMISR_TAMP4MF_Pos (3U)
+#define TAMP_SMISR_TAMP4MF_Msk (0x1UL << TAMP_SMISR_TAMP4MF_Pos) /*!< 0x00000008 */
+#define TAMP_SMISR_TAMP4MF TAMP_SMISR_TAMP4MF_Msk
+#define TAMP_SMISR_TAMP5MF_Pos (4U)
+#define TAMP_SMISR_TAMP5MF_Msk (0x1UL << TAMP_SMISR_TAMP5MF_Pos) /*!< 0x00000010 */
+#define TAMP_SMISR_TAMP5MF TAMP_SMISR_TAMP5MF_Msk
+#define TAMP_SMISR_TAMP6MF_Pos (5U)
+#define TAMP_SMISR_TAMP6MF_Msk (0x1UL << TAMP_SMISR_TAMP6MF_Pos) /*!< 0x00000020 */
+#define TAMP_SMISR_TAMP6MF TAMP_SMISR_TAMP6MF_Msk
+#define TAMP_SMISR_TAMP7MF_Pos (6U)
+#define TAMP_SMISR_TAMP7MF_Msk (0x1UL << TAMP_SMISR_TAMP7MF_Pos) /*!< 0x00000040 */
+#define TAMP_SMISR_TAMP7MF TAMP_SMISR_TAMP7MF_Msk
+#define TAMP_SMISR_TAMP8MF_Pos (7U)
+#define TAMP_SMISR_TAMP8MF_Msk (0x1UL << TAMP_SMISR_TAMP8MF_Pos) /*!< 0x00000080 */
+#define TAMP_SMISR_TAMP8MF TAMP_SMISR_TAMP8MF_Msk
+#define TAMP_SMISR_ITAMP1MF_Pos (16U)
+#define TAMP_SMISR_ITAMP1MF_Msk (0x1UL << TAMP_SMISR_ITAMP1MF_Pos) /*!< 0x00010000 */
+#define TAMP_SMISR_ITAMP1MF TAMP_SMISR_ITAMP1MF_Msk
+#define TAMP_SMISR_ITAMP2MF_Pos (17U)
+#define TAMP_SMISR_ITAMP2MF_Msk (0x1UL << TAMP_SMISR_ITAMP2MF_Pos) /*!< 0x00020000 */
+#define TAMP_SMISR_ITAMP2MF TAMP_SMISR_ITAMP2MF_Msk
+#define TAMP_SMISR_ITAMP3MF_Pos (18U)
+#define TAMP_SMISR_ITAMP3MF_Msk (0x1UL << TAMP_SMISR_ITAMP3MF_Pos) /*!< 0x00040000 */
+#define TAMP_SMISR_ITAMP3MF TAMP_SMISR_ITAMP3MF_Msk
+#define TAMP_SMISR_ITAMP4MF_Pos (19U)
+#define TAMP_SMISR_ITAMP4MF_Msk (0x1UL << TAMP_SMISR_ITAMP4MF_Pos) /*!< 0x00080000 */
+#define TAMP_SMISR_ITAMP4MF TAMP_SMISR_ITAMP4MF_Msk
+#define TAMP_SMISR_ITAMP5MF_Pos (20U)
+#define TAMP_SMISR_ITAMP5MF_Msk (0x1UL << TAMP_SMISR_ITAMP5MF_Pos) /*!< 0x00100000 */
+#define TAMP_SMISR_ITAMP5MF TAMP_SMISR_ITAMP5MF_Msk
+#define TAMP_SMISR_ITAMP6MF_Pos (21U)
+#define TAMP_SMISR_ITAMP6MF_Msk (0x1UL << TAMP_SMISR_ITAMP6MF_Pos) /*!< 0x00200000 */
+#define TAMP_SMISR_ITAMP6MF TAMP_SMISR_ITAMP6MF_Msk
+#define TAMP_SMISR_ITAMP7MF_Pos (22U)
+#define TAMP_SMISR_ITAMP7MF_Msk (0x1UL << TAMP_SMISR_ITAMP7MF_Pos) /*!< 0x00400000 */
+#define TAMP_SMISR_ITAMP7MF TAMP_SMISR_ITAMP7MF_Msk
+#define TAMP_SMISR_ITAMP8MF_Pos (23U)
+#define TAMP_SMISR_ITAMP8MF_Msk (0x1UL << TAMP_SMISR_ITAMP8MF_Pos) /*!< 0x00800000 */
+#define TAMP_SMISR_ITAMP8MF TAMP_SMISR_ITAMP8MF_Msk
+#define TAMP_SMISR_ITAMP9MF_Pos (24U)
+#define TAMP_SMISR_ITAMP9MF_Msk (0x1UL << TAMP_SMISR_ITAMP9MF_Pos) /*!< 0x00100000 */
+#define TAMP_SMISR_ITAMP9MF TAMP_SMISR_ITAMP9MF_Msk
+#define TAMP_SMISR_ITAMP11MF_Pos (26U)
+#define TAMP_SMISR_ITAMP11MF_Msk (0x1UL << TAMP_SMISR_ITAMP11MF_Pos) /*!< 0x00400000 */
+#define TAMP_SMISR_ITAMP11MF TAMP_SMISR_ITAMP11MF_Msk
+#define TAMP_SMISR_ITAMP12MF_Pos (27U)
+#define TAMP_SMISR_ITAMP12MF_Msk (0x1UL << TAMP_SMISR_ITAMP12MF_Pos) /*!< 0x08000000 */
+#define TAMP_SMISR_ITAMP12MF TAMP_SMISR_ITAMP12MF_Msk
+#define TAMP_SMISR_ITAMP13MF_Pos (28U)
+#define TAMP_SMISR_ITAMP13MF_Msk (0x1UL << TAMP_SMISR_ITAMP13MF_Pos) /*!< 0x10000000 */
+#define TAMP_SMISR_ITAMP13MF TAMP_SMISR_ITAMP13MF_Msk
+#define TAMP_SMISR_ITAMP15MF_Pos (30U)
+#define TAMP_SMISR_ITAMP15MF_Msk (0x1UL << TAMP_SMISR_ITAMP15MF_Pos) /*!< 0x40000000 */
+#define TAMP_SMISR_ITAMP15MF TAMP_SMISR_ITAMP15MF_Msk
+
+/******************** Bits definition for TAMP_SCR register *****************/
+#define TAMP_SCR_CTAMP1F_Pos (0U)
+#define TAMP_SCR_CTAMP1F_Msk (0x1UL << TAMP_SCR_CTAMP1F_Pos) /*!< 0x00000001 */
+#define TAMP_SCR_CTAMP1F TAMP_SCR_CTAMP1F_Msk
+#define TAMP_SCR_CTAMP2F_Pos (1U)
+#define TAMP_SCR_CTAMP2F_Msk (0x1UL << TAMP_SCR_CTAMP2F_Pos) /*!< 0x00000002 */
+#define TAMP_SCR_CTAMP2F TAMP_SCR_CTAMP2F_Msk
+#define TAMP_SCR_CTAMP3F_Pos (2U)
+#define TAMP_SCR_CTAMP3F_Msk (0x1UL << TAMP_SCR_CTAMP3F_Pos) /*!< 0x00000004 */
+#define TAMP_SCR_CTAMP3F TAMP_SCR_CTAMP3F_Msk
+#define TAMP_SCR_CTAMP4F_Pos (3U)
+#define TAMP_SCR_CTAMP4F_Msk (0x1UL << TAMP_SCR_CTAMP4F_Pos) /*!< 0x00000008 */
+#define TAMP_SCR_CTAMP4F TAMP_SCR_CTAMP4F_Msk
+#define TAMP_SCR_CTAMP5F_Pos (4U)
+#define TAMP_SCR_CTAMP5F_Msk (0x1UL << TAMP_SCR_CTAMP5F_Pos) /*!< 0x00000010 */
+#define TAMP_SCR_CTAMP5F TAMP_SCR_CTAMP5F_Msk
+#define TAMP_SCR_CTAMP6F_Pos (5U)
+#define TAMP_SCR_CTAMP6F_Msk (0x1UL << TAMP_SCR_CTAMP6F_Pos) /*!< 0x00000020 */
+#define TAMP_SCR_CTAMP6F TAMP_SCR_CTAMP6F_Msk
+#define TAMP_SCR_CTAMP7F_Pos (6U)
+#define TAMP_SCR_CTAMP7F_Msk (0x1UL << TAMP_SCR_CTAMP7F_Pos) /*!< 0x00000040 */
+#define TAMP_SCR_CTAMP7F TAMP_SCR_CTAMP7F_Msk
+#define TAMP_SCR_CTAMP8F_Pos (7U)
+#define TAMP_SCR_CTAMP8F_Msk (0x1UL << TAMP_SCR_CTAMP8F_Pos) /*!< 0x00000080 */
+#define TAMP_SCR_CTAMP8F TAMP_SCR_CTAMP8F_Msk
+#define TAMP_SCR_CITAMP1F_Pos (16U)
+#define TAMP_SCR_CITAMP1F_Msk (0x1UL << TAMP_SCR_CITAMP1F_Pos) /*!< 0x00010000 */
+#define TAMP_SCR_CITAMP1F TAMP_SCR_CITAMP1F_Msk
+#define TAMP_SCR_CITAMP2F_Pos (17U)
+#define TAMP_SCR_CITAMP2F_Msk (0x1UL << TAMP_SCR_CITAMP2F_Pos) /*!< 0x00020000 */
+#define TAMP_SCR_CITAMP2F TAMP_SCR_CITAMP2F_Msk
+#define TAMP_SCR_CITAMP3F_Pos (18U)
+#define TAMP_SCR_CITAMP3F_Msk (0x1UL << TAMP_SCR_CITAMP3F_Pos) /*!< 0x00040000 */
+#define TAMP_SCR_CITAMP3F TAMP_SCR_CITAMP3F_Msk
+#define TAMP_SCR_CITAMP4F_Pos (19U)
+#define TAMP_SCR_CITAMP4F_Msk (0x1UL << TAMP_SCR_CITAMP4F_Pos) /*!< 0x00080000 */
+#define TAMP_SCR_CITAMP4F TAMP_SCR_CITAMP4F_Msk
+#define TAMP_SCR_CITAMP5F_Pos (20U)
+#define TAMP_SCR_CITAMP5F_Msk (0x1UL << TAMP_SCR_CITAMP5F_Pos) /*!< 0x00100000 */
+#define TAMP_SCR_CITAMP5F TAMP_SCR_CITAMP5F_Msk
+#define TAMP_SCR_CITAMP6F_Pos (21U)
+#define TAMP_SCR_CITAMP6F_Msk (0x1UL << TAMP_SCR_CITAMP6F_Pos) /*!< 0x00200000 */
+#define TAMP_SCR_CITAMP6F TAMP_SCR_CITAMP6F_Msk
+#define TAMP_SCR_CITAMP7F_Pos (22U)
+#define TAMP_SCR_CITAMP7F_Msk (0x1UL << TAMP_SCR_CITAMP7F_Pos) /*!< 0x00400000 */
+#define TAMP_SCR_CITAMP7F TAMP_SCR_CITAMP7F_Msk
+#define TAMP_SCR_CITAMP8F_Pos (23U)
+#define TAMP_SCR_CITAMP8F_Msk (0x1UL << TAMP_SCR_CITAMP8F_Pos) /*!< 0x00800000 */
+#define TAMP_SCR_CITAMP8F TAMP_SCR_CITAMP8F_Msk
+#define TAMP_SCR_CITAMP9F_Pos (24U)
+#define TAMP_SCR_CITAMP9F_Msk (0x1UL << TAMP_SCR_CITAMP9F_Pos) /*!< 0x00100000 */
+#define TAMP_SCR_CITAMP9F TAMP_SCR_CITAMP9F_Msk
+#define TAMP_SCR_CITAMP11F_Pos (26U)
+#define TAMP_SCR_CITAMP11F_Msk (0x1UL << TAMP_SCR_CITAMP11F_Pos) /*!< 0x00400000 */
+#define TAMP_SCR_CITAMP11F TAMP_SCR_CITAMP11F_Msk
+#define TAMP_SCR_CITAMP12F_Pos (27U)
+#define TAMP_SCR_CITAMP12F_Msk (0x1UL << TAMP_SCR_CITAMP12F_Pos) /*!< 0x08000000 */
+#define TAMP_SCR_CITAMP12F TAMP_SCR_CITAMP12F_Msk
+#define TAMP_SCR_CITAMP13F_Pos (28U)
+#define TAMP_SCR_CITAMP13F_Msk (0x1UL << TAMP_SCR_CITAMP13F_Pos) /*!< 0x10000000 */
+#define TAMP_SCR_CITAMP13F TAMP_SCR_CITAMP13F_Msk
+#define TAMP_SCR_CITAMP15F_Pos (30U)
+#define TAMP_SCR_CITAMP15F_Msk (0x1UL << TAMP_SCR_CITAMP15F_Pos) /*!< 0x40000000 */
+#define TAMP_SCR_CITAMP15F TAMP_SCR_CITAMP15F_Msk
+/******************** Bits definition for TAMP_COUNT1R register ***************/
+#define TAMP_COUNT1R_COUNT_Pos (0U)
+#define TAMP_COUNT1R_COUNT_Msk (0xFFFFFFFFUL << TAMP_COUNT1R_COUNT_Pos)/*!< 0xFFFFFFFF */
+#define TAMP_COUNT1R_COUNT TAMP_COUNT1R_COUNT_Msk
+
+/******************** Bits definition for TAMP_OR register ***************/
+#define TAMP_OR_OUT3_RMP_Pos (1U)
+#define TAMP_OR_OUT3_RMP_Msk (0x2UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00000006 */
+#define TAMP_OR_OUT3_RMP TAMP_OR_OUT3_RMP_Msk
+#define TAMP_OR_OUT3_RMP_0 (0x1UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00100000 */
+#define TAMP_OR_OUT3_RMP_1 (0x2UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00200000 */
+#define TAMP_OR_OUT5_RMP_Pos (3U)
+#define TAMP_OR_OUT5_RMP_Msk (0x1UL << TAMP_OR_OUT5_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_OUT5_RMP TAMP_OR_OUT5_RMP_Msk
+#define TAMP_OR_IN2_RMP_Pos (8U)
+#define TAMP_OR_IN2_RMP_Msk (0x1UL << TAMP_OR_IN2_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN2_RMP TAMP_OR_IN2_RMP_Msk
+#define TAMP_OR_IN3_RMP_Pos (9U)
+#define TAMP_OR_IN3_RMP_Msk (0x1UL << TAMP_OR_IN3_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN3_RMP TAMP_OR_IN3_RMP_Msk
+#define TAMP_OR_IN4_RMP_Pos (10U)
+#define TAMP_OR_IN4_RMP_Msk (0x1UL << TAMP_OR_IN4_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN4_RMP TAMP_OR_IN4_RMP_Msk
+
+/******************** Bits definition for TAMP_ERCFG register ***************/
+#define TAMP_ERCFGR_ERCFG0_Pos (0U)
+#define TAMP_ERCFGR_ERCFG0_Msk (0x1UL << TAMP_ERCFGR_ERCFG0_Pos) /*!< 0x00000001 */
+#define TAMP_ERCFGR_ERCFG0 TAMP_ERCFGR_ERCFG0_Msk
+
+/******************** Bits definition for TAMP_BKP0R register ***************/
+#define TAMP_BKP0R_Pos (0U)
+#define TAMP_BKP0R_Msk (0xFFFFFFFFUL << TAMP_BKP0R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP0R TAMP_BKP0R_Msk
+
+/******************** Bits definition for TAMP_BKP1R register ****************/
+#define TAMP_BKP1R_Pos (0U)
+#define TAMP_BKP1R_Msk (0xFFFFFFFFUL << TAMP_BKP1R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP1R TAMP_BKP1R_Msk
+
+/******************** Bits definition for TAMP_BKP2R register ****************/
+#define TAMP_BKP2R_Pos (0U)
+#define TAMP_BKP2R_Msk (0xFFFFFFFFUL << TAMP_BKP2R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP2R TAMP_BKP2R_Msk
+
+/******************** Bits definition for TAMP_BKP3R register ****************/
+#define TAMP_BKP3R_Pos (0U)
+#define TAMP_BKP3R_Msk (0xFFFFFFFFUL << TAMP_BKP3R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP3R TAMP_BKP3R_Msk
+
+/******************** Bits definition for TAMP_BKP4R register ****************/
+#define TAMP_BKP4R_Pos (0U)
+#define TAMP_BKP4R_Msk (0xFFFFFFFFUL << TAMP_BKP4R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP4R TAMP_BKP4R_Msk
+
+/******************** Bits definition for TAMP_BKP5R register ****************/
+#define TAMP_BKP5R_Pos (0U)
+#define TAMP_BKP5R_Msk (0xFFFFFFFFUL << TAMP_BKP5R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP5R TAMP_BKP5R_Msk
+
+/******************** Bits definition for TAMP_BKP6R register ****************/
+#define TAMP_BKP6R_Pos (0U)
+#define TAMP_BKP6R_Msk (0xFFFFFFFFUL << TAMP_BKP6R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP6R TAMP_BKP6R_Msk
+
+/******************** Bits definition for TAMP_BKP7R register ****************/
+#define TAMP_BKP7R_Pos (0U)
+#define TAMP_BKP7R_Msk (0xFFFFFFFFUL << TAMP_BKP7R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP7R TAMP_BKP7R_Msk
+
+/******************** Bits definition for TAMP_BKP8R register ****************/
+#define TAMP_BKP8R_Pos (0U)
+#define TAMP_BKP8R_Msk (0xFFFFFFFFUL << TAMP_BKP8R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP8R TAMP_BKP8R_Msk
+
+/******************** Bits definition for TAMP_BKP9R register ****************/
+#define TAMP_BKP9R_Pos (0U)
+#define TAMP_BKP9R_Msk (0xFFFFFFFFUL << TAMP_BKP9R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP9R TAMP_BKP9R_Msk
+
+/******************** Bits definition for TAMP_BKP10R register ***************/
+#define TAMP_BKP10R_Pos (0U)
+#define TAMP_BKP10R_Msk (0xFFFFFFFFUL << TAMP_BKP10R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP10R TAMP_BKP10R_Msk
+
+/******************** Bits definition for TAMP_BKP11R register ***************/
+#define TAMP_BKP11R_Pos (0U)
+#define TAMP_BKP11R_Msk (0xFFFFFFFFUL << TAMP_BKP11R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP11R TAMP_BKP11R_Msk
+
+/******************** Bits definition for TAMP_BKP12R register ***************/
+#define TAMP_BKP12R_Pos (0U)
+#define TAMP_BKP12R_Msk (0xFFFFFFFFUL << TAMP_BKP12R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP12R TAMP_BKP12R_Msk
+
+/******************** Bits definition for TAMP_BKP13R register ***************/
+#define TAMP_BKP13R_Pos (0U)
+#define TAMP_BKP13R_Msk (0xFFFFFFFFUL << TAMP_BKP13R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP13R TAMP_BKP13R_Msk
+
+/******************** Bits definition for TAMP_BKP14R register ***************/
+#define TAMP_BKP14R_Pos (0U)
+#define TAMP_BKP14R_Msk (0xFFFFFFFFUL << TAMP_BKP14R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP14R TAMP_BKP14R_Msk
+
+/******************** Bits definition for TAMP_BKP15R register ***************/
+#define TAMP_BKP15R_Pos (0U)
+#define TAMP_BKP15R_Msk (0xFFFFFFFFUL << TAMP_BKP15R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP15R TAMP_BKP15R_Msk
+
+/******************** Bits definition for TAMP_BKP16R register ***************/
+#define TAMP_BKP16R_Pos (0U)
+#define TAMP_BKP16R_Msk (0xFFFFFFFFUL << TAMP_BKP16R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP16R TAMP_BKP16R_Msk
+
+/******************** Bits definition for TAMP_BKP17R register ***************/
+#define TAMP_BKP17R_Pos (0U)
+#define TAMP_BKP17R_Msk (0xFFFFFFFFUL << TAMP_BKP17R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP17R TAMP_BKP17R_Msk
+
+/******************** Bits definition for TAMP_BKP18R register ***************/
+#define TAMP_BKP18R_Pos (0U)
+#define TAMP_BKP18R_Msk (0xFFFFFFFFUL << TAMP_BKP18R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP18R TAMP_BKP18R_Msk
+
+/******************** Bits definition for TAMP_BKP19R register ***************/
+#define TAMP_BKP19R_Pos (0U)
+#define TAMP_BKP19R_Msk (0xFFFFFFFFUL << TAMP_BKP19R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP19R TAMP_BKP19R_Msk
+
+/******************** Bits definition for TAMP_BKP20R register ***************/
+#define TAMP_BKP20R_Pos (0U)
+#define TAMP_BKP20R_Msk (0xFFFFFFFFUL << TAMP_BKP20R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP20R TAMP_BKP20R_Msk
+
+/******************** Bits definition for TAMP_BKP21R register ***************/
+#define TAMP_BKP21R_Pos (0U)
+#define TAMP_BKP21R_Msk (0xFFFFFFFFUL << TAMP_BKP21R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP21R TAMP_BKP21R_Msk
+
+/******************** Bits definition for TAMP_BKP22R register ***************/
+#define TAMP_BKP22R_Pos (0U)
+#define TAMP_BKP22R_Msk (0xFFFFFFFFUL << TAMP_BKP22R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP22R TAMP_BKP22R_Msk
+
+/******************** Bits definition for TAMP_BKP23R register ***************/
+#define TAMP_BKP23R_Pos (0U)
+#define TAMP_BKP23R_Msk (0xFFFFFFFFUL << TAMP_BKP23R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP23R TAMP_BKP23R_Msk
+
+/******************** Bits definition for TAMP_BKP24R register ***************/
+#define TAMP_BKP24R_Pos (0U)
+#define TAMP_BKP24R_Msk (0xFFFFFFFFUL << TAMP_BKP24R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP24R TAMP_BKP24R_Msk
+
+/******************** Bits definition for TAMP_BKP25R register ***************/
+#define TAMP_BKP25R_Pos (0U)
+#define TAMP_BKP25R_Msk (0xFFFFFFFFUL << TAMP_BKP25R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP25R TAMP_BKP25R_Msk
+
+/******************** Bits definition for TAMP_BKP26R register ***************/
+#define TAMP_BKP26R_Pos (0U)
+#define TAMP_BKP26R_Msk (0xFFFFFFFFUL << TAMP_BKP26R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP26R TAMP_BKP26R_Msk
+
+/******************** Bits definition for TAMP_BKP27R register ***************/
+#define TAMP_BKP27R_Pos (0U)
+#define TAMP_BKP27R_Msk (0xFFFFFFFFUL << TAMP_BKP27R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP27R TAMP_BKP27R_Msk
+
+/******************** Bits definition for TAMP_BKP28R register ***************/
+#define TAMP_BKP28R_Pos (0U)
+#define TAMP_BKP28R_Msk (0xFFFFFFFFUL << TAMP_BKP28R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP28R TAMP_BKP28R_Msk
+
+/******************** Bits definition for TAMP_BKP29R register ***************/
+#define TAMP_BKP29R_Pos (0U)
+#define TAMP_BKP29R_Msk (0xFFFFFFFFUL << TAMP_BKP29R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP29R TAMP_BKP29R_Msk
+
+/******************** Bits definition for TAMP_BKP30R register ***************/
+#define TAMP_BKP30R_Pos (0U)
+#define TAMP_BKP30R_Msk (0xFFFFFFFFUL << TAMP_BKP30R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP30R TAMP_BKP30R_Msk
+
+/******************** Bits definition for TAMP_BKP31R register ***************/
+#define TAMP_BKP31R_Pos (0U)
+#define TAMP_BKP31R_Msk (0xFFFFFFFFUL << TAMP_BKP31R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP31R TAMP_BKP31R_Msk
+
+/******************************************************************************/
+/* */
+/* SBS */
+/* */
+/******************************************************************************/
+/******************** Bit definition for SBS_HDPLCR register *****************/
+#define SBS_HDPLCR_INCR_HDPL_Pos (0U)
+#define SBS_HDPLCR_INCR_HDPL_Msk (0xFFUL << SBS_HDPLCR_INCR_HDPL_Pos) /*!< 0x000000FF */
+#define SBS_HDPLCR_INCR_HDPL SBS_HDPLCR_INCR_HDPL_Msk /*!< Increment HDPL value. */
+
+/******************** Bit definition for SBS_HDPLSR register *****************/
+#define SBS_HDPLSR_HDPL_Pos (0U)
+#define SBS_HDPLSR_HDPL_Msk (0xFFUL << SBS_HDPLSR_HDPL_Pos) /*!< 0x000000FF */
+#define SBS_HDPLSR_HDPL SBS_HDPLSR_HDPL_Msk /*!< HDPL value. */
+
+/******************** Bit definition for SBS_NEXTHDPLCR register *****************/
+#define SBS_NEXTHDPLCR_NEXTHDPL_Pos (0U)
+#define SBS_NEXTHDPLCR_NEXTHDPL_Msk (0x3UL << SBS_NEXTHDPLCR_NEXTHDPL_Pos) /*!< 0x00000003 */
+#define SBS_NEXTHDPLCR_NEXTHDPL SBS_NEXTHDPLCR_NEXTHDPL_Msk /*!< NEXTHDPL value. */
+#define SBS_NEXTHDPLCR_NEXTHDPL_0 (0x1UL << SBS_NEXTHDPLCR_NEXTHDPL_Pos) /*!< 0x00000001 */
+#define SBS_NEXTHDPLCR_NEXTHDPL_1 (0x2UL << SBS_NEXTHDPLCR_NEXTHDPL_Pos) /*!< 0x00000002 */
+
+/******************** Bit definition for SBS_DBGCR register *****************/
+#define SBS_DBGCR_AP_UNLOCK_Pos (0U)
+#define SBS_DBGCR_AP_UNLOCK_Msk (0xFFUL << SBS_DBGCR_AP_UNLOCK_Pos) /*!< 0x000000FF */
+#define SBS_DBGCR_AP_UNLOCK SBS_DBGCR_AP_UNLOCK_Msk /*!< Open the Access Port. */
+
+#define SBS_DBGCR_DBG_UNLOCK_Pos (8U)
+#define SBS_DBGCR_DBG_UNLOCK_Msk (0xFFUL << SBS_DBGCR_DBG_UNLOCK_Pos) /*!< 0x0000FF00 */
+#define SBS_DBGCR_DBG_UNLOCK SBS_DBGCR_DBG_UNLOCK_Msk /*!< Open the debug when DBG_AUTH_HDPL is reached. */
+
+#define SBS_DBGCR_DBG_AUTH_HDPL_Pos (16U)
+#define SBS_DBGCR_DBG_AUTH_HDPL_Msk (0xFFUL << SBS_DBGCR_DBG_AUTH_HDPL_Pos) /*!< 0x00FF0000 */
+#define SBS_DBGCR_DBG_AUTH_HDPL SBS_DBGCR_DBG_AUTH_HDPL_Msk /*!< HDPL value when the debug should be effectively opened. */
+
+#define SBS_DBGCR_DBG_AUTH_SEC_Pos (24U)
+#define SBS_DBGCR_DBG_AUTH_SEC_Msk (0xFFUL << SBS_DBGCR_DBG_AUTH_SEC_Pos) /*!< 0xFF000000 */
+#define SBS_DBGCR_DBG_AUTH_SEC SBS_DBGCR_DBG_AUTH_SEC_Msk /*!< Open the non-secured and secured debugs. */
+
+/******************** Bit definition for SBS_DBGLCKR register *****************/
+#define SBS_DBGLOCKR_DBGCFG_LOCK_Pos (0U)
+#define SBS_DBGLOCKR_DBGCFG_LOCK_Msk (0xFFUL << SBS_DBGLOCKR_DBGCFG_LOCK_Pos) /*!< 0x000000FF */
+#define SBS_DBGLOCKR_DBGCFG_LOCK SBS_DBGLOCKR_DBGCFG_LOCK_Msk /*!< SBS_DBGLOCKR_DBGCFG_LOCK value. */
+
+/******************** Bit definition for SBS_RSSCMDR register ***************/
+#define SBS_RSSCMDR_RSSCMD_Pos (0U)
+#define SBS_RSSCMDR_RSSCMD_Msk (0xFFFFUL << SBS_RSSCMDR_RSSCMD_Pos) /*!< 0x0000FFFF */
+#define SBS_RSSCMDR_RSSCMD SBS_RSSCMDR_RSSCMD_Msk /*!< command to be executed by the RSS. */
+
+/******************** Bit definition for SBS_EPOCHSELCR register ************/
+#define SBS_EPOCHSELCR_EPOCH_SEL_Pos (0U)
+#define SBS_EPOCHSELCR_EPOCH_SEL_Msk (0x3UL << SBS_EPOCHSELCR_EPOCH_SEL_Pos) /*!< 0x00000003 */
+#define SBS_EPOCHSELCR_EPOCH_SEL SBS_EPOCHSELCR_EPOCH_SEL_Msk /*!< Select EPOCH sent to SAES IP to encrypt/decrypt keys */
+#define SBS_EPOCHSELCR_EPOCH_SEL_0 (0x1UL << SBS_EPOCHSELCR_EPOCH_SEL_Pos) /*!< 0x00000001 */
+#define SBS_EPOCHSELCR_EPOCH_SEL_1 (0x2UL << SBS_EPOCHSELCR_EPOCH_SEL_Pos) /*!< 0x00000002 */
+
+/****************** Bit definition for SBS_PMCR register ****************/
+#define SBS_PMCR_PB6_FMP_Pos (16U)
+#define SBS_PMCR_PB6_FMP_Msk (0x1UL << SBS_PMCR_PB6_FMP_Pos) /*!< 0x00010000 */
+#define SBS_PMCR_PB6_FMP SBS_PMCR_PB6_FMP_Msk /*!< Fast-mode Plus command on PB(6) */
+#define SBS_PMCR_PB7_FMP_Pos (17U)
+#define SBS_PMCR_PB7_FMP_Msk (0x1UL << SBS_PMCR_PB7_FMP_Pos) /*!< 0x00020000 */
+#define SBS_PMCR_PB7_FMP SBS_PMCR_PB7_FMP_Msk /*!< Fast-mode Plus command on PB(7) */
+#define SBS_PMCR_PB8_FMP_Pos (18U)
+#define SBS_PMCR_PB8_FMP_Msk (0x1UL << SBS_PMCR_PB8_FMP_Pos) /*!< 0x00040000 */
+#define SBS_PMCR_PB8_FMP SBS_PMCR_PB8_FMP_Msk /*!< Fast-mode Plus command on PB(8) */
+#define SBS_PMCR_PB9_FMP_Pos (19U)
+#define SBS_PMCR_PB9_FMP_Msk (0x1UL << SBS_PMCR_PB9_FMP_Pos) /*!< 0x00080000 */
+#define SBS_PMCR_PB9_FMP SBS_PMCR_PB9_FMP_Msk /*!< Fast-mode Plus command on PB(9) */
+
+/****************** Bit definition for SBS_FPUIMR register ***************/
+#define SBS_FPUIMR_FPU_IE_Pos (0U)
+#define SBS_FPUIMR_FPU_IE_Msk (0x3FUL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x0000003F - */
+#define SBS_FPUIMR_FPU_IE SBS_FPUIMR_FPU_IE_Msk /*!< All FPU interrupts enable */
+#define SBS_FPUIMR_FPU_IE_0 (0x1UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000001 - Invalid operation Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_1 (0x2UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000002 - Divide-by-zero Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_2 (0x4UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000004 - Underflow Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_3 (0x8UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000008 - Overflow Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_4 (0x10UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000010 - Input denormal Interrupt enable */
+#define SBS_FPUIMR_FPU_IE_5 (0x20UL << SBS_FPUIMR_FPU_IE_Pos) /*!< 0x00000020 - Inexact Interrupt enable (interrupt disabled at reset) */
+
+/****************** Bit definition for SBS_MESR register ****************/
+#define SBS_MESR_MCLR_Pos (0U)
+#define SBS_MESR_MCLR_Msk (0x1UL << SBS_MESR_MCLR_Pos) /*!< 0x00000001 */
+#define SBS_MESR_MCLR SBS_MESR_MCLR_Msk /*!< Status of Erase after Reset */
+#define SBS_MESR_IPMEE_Pos (16U)
+#define SBS_MESR_IPMEE_Msk (0x1UL << SBS_MESR_IPMEE_Pos) /*!< 0x00010000 */
+#define SBS_MESR_IPMEE SBS_MESR_IPMEE_Msk /*!< Status of End of Erase for ICache and PKA RAMs */
+
+/****************** Bit definition for SBS_CCCSR register ****************/
+#define SBS_CCCSR_EN1_Pos (0U)
+#define SBS_CCCSR_EN1_Msk (0x1UL << SBS_CCCSR_EN1_Pos) /*!< 0x00000001 */
+#define SBS_CCCSR_EN1 SBS_CCCSR_EN1_Msk /*!< Enable compensation cell for VDD power rail */
+#define SBS_CCCSR_CS1_Pos (1U)
+#define SBS_CCCSR_CS1_Msk (0x1UL << SBS_CCCSR_CS1_Pos) /*!< 0x00000002 */
+#define SBS_CCCSR_CS1 SBS_CCCSR_CS1_Msk /*!< Code selection for VDD power rail */
+#define SBS_CCCSR_EN2_Pos (2U)
+#define SBS_CCCSR_EN2_Msk (0x1UL << SBS_CCCSR_EN2_Pos) /*!< 0x00000004 */
+#define SBS_CCCSR_EN2 SBS_CCCSR_EN2_Msk /*!< Enable compensation cell for VDDIO power rail */
+#define SBS_CCCSR_CS2_Pos (3U)
+#define SBS_CCCSR_CS2_Msk (0x1UL << SBS_CCCSR_CS2_Pos) /*!< 0x00000008 */
+#define SBS_CCCSR_CS2 SBS_CCCSR_CS2_Msk /*!< Code selection for VDDIO power rail */
+#define SBS_CCCSR_RDY1_Pos (8U)
+#define SBS_CCCSR_RDY1_Msk (0x1UL << SBS_CCCSR_RDY1_Pos) /*!< 0x00000100 */
+#define SBS_CCCSR_RDY1 SBS_CCCSR_RDY1_Msk /*!< VDD compensation cell ready flag */
+#define SBS_CCCSR_RDY2_Pos (9U)
+#define SBS_CCCSR_RDY2_Msk (0x1UL << SBS_CCCSR_RDY2_Pos) /*!< 0x00000200 */
+#define SBS_CCCSR_RDY2 SBS_CCCSR_RDY2_Msk /*!< VDDIO compensation cell ready flag */
+
+/****************** Bit definition for SBS_CCVALR register ****************/
+#define SBS_CCVALR_ANSRC1_Pos (0U)
+#define SBS_CCVALR_ANSRC1_Msk (0xFUL << SBS_CCVALR_ANSRC1_Pos) /*!< 0x0000000F */
+#define SBS_CCVALR_ANSRC1 SBS_CCVALR_ANSRC1_Msk /*!< NMOS compensation value */
+#define SBS_CCVALR_APSRC1_Pos (4U)
+#define SBS_CCVALR_APSRC1_Msk (0xFUL << SBS_CCVALR_APSRC1_Pos) /*!< 0x000000F0 */
+#define SBS_CCVALR_APSRC1 SBS_CCVALR_APSRC1_Msk /*!< PMOS compensation value */
+#define SBS_CCVALR_ANSRC2_Pos (8U)
+#define SBS_CCVALR_ANSRC2_Msk (0xFUL << SBS_CCVALR_ANSRC2_Pos) /*!< 0x00000F00 */
+#define SBS_CCVALR_ANSRC2 SBS_CCVALR_ANSRC2_Msk /*!< NMOS compensation value */
+#define SBS_CCVALR_APSRC2_Pos (12U)
+#define SBS_CCVALR_APSRC2_Msk (0xFUL << SBS_CCVALR_APSRC2_Pos) /*!< 0x0000F000 */
+#define SBS_CCVALR_APSRC2 SBS_CCVALR_APSRC2_Msk /*!< PMOS compensation value */
+
+/****************** Bit definition for SBS_CCSWCR register ****************/
+#define SBS_CCSWCR_SW_ANSRC1_Pos (0U)
+#define SBS_CCSWCR_SW_ANSRC1_Msk (0xFUL << SBS_CCSWCR_SW_ANSRC1_Pos) /*!< 0x0000000F */
+#define SBS_CCSWCR_SW_ANSRC1 SBS_CCSWCR_SW_ANSRC1_Msk /*!< NMOS compensation code for VDD Power Rail */
+#define SBS_CCSWCR_SW_APSRC1_Pos (4U)
+#define SBS_CCSWCR_SW_APSRC1_Msk (0xFUL << SBS_CCSWCR_SW_APSRC1_Pos) /*!< 0x000000F0 */
+#define SBS_CCSWCR_SW_APSRC1 SBS_CCSWCR_SW_APSRC1_Msk /*!< PMOS compensation code for VDD Power Rail */
+#define SBS_CCSWCR_SW_ANSRC2_Pos (8U)
+#define SBS_CCSWCR_SW_ANSRC2_Msk (0xFUL << SBS_CCSWCR_SW_ANSRC2_Pos) /*!< 0x00000F00 */
+#define SBS_CCSWCR_SW_ANSRC2 SBS_CCSWCR_SW_ANSRC2_Msk /*!< NMOS compensation code for VDDIO Power Rail */
+#define SBS_CCSWCR_SW_APSRC2_Pos (12U)
+#define SBS_CCSWCR_SW_APSRC2_Msk (0xFUL << SBS_CCSWCR_SW_APSRC2_Pos) /*!< 0x0000F000 */
+#define SBS_CCSWCR_SW_APSRC2 SBS_CCSWCR_SW_APSRC2_Msk /*!< PMOS compensation code for VDDIO Power Rail */
+
+/****************** Bit definition for SBS_CFGR2 register ****************/
+#define SBS_CFGR2_CLL_Pos (0U)
+#define SBS_CFGR2_CLL_Msk (0x1UL << SBS_CFGR2_CLL_Pos) /*!< 0x00000001 */
+#define SBS_CFGR2_CLL SBS_CFGR2_CLL_Msk /*!< Core Lockup Lock */
+#define SBS_CFGR2_SEL_Pos (1U)
+#define SBS_CFGR2_SEL_Msk (0x1UL << SBS_CFGR2_SEL_Pos) /*!< 0x00000002 */
+#define SBS_CFGR2_SEL SBS_CFGR2_SEL_Msk /*!< SRAM ECC Lock */
+#define SBS_CFGR2_PVDL_Pos (2U)
+#define SBS_CFGR2_PVDL_Msk (0x1UL << SBS_CFGR2_PVDL_Pos) /*!< 0x00000004 */
+#define SBS_CFGR2_PVDL SBS_CFGR2_PVDL_Msk /*!< PVD Lock */
+#define SBS_CFGR2_ECCL_Pos (3U)
+#define SBS_CFGR2_ECCL_Msk (0x1UL << SBS_CFGR2_ECCL_Pos) /*!< 0x00000008 */
+#define SBS_CFGR2_ECCL SBS_CFGR2_ECCL_Msk /*!< Flash ECC Lock*/
+
+/******************** Bit definition for SBS_SECCFGR register ***************/
+#define SBS_SECCFGR_SBSSEC_Pos (0U)
+#define SBS_SECCFGR_SBSSEC_Msk (0x1UL << SBS_SECCFGR_SBSSEC_Pos) /*!< 0x00000001 */
+#define SBS_SECCFGR_SBSSEC SBS_SECCFGR_SBSSEC_Msk /*!< SBS clock control security enable */
+#define SBS_SECCFGR_CLASSBSEC_Pos (1U)
+#define SBS_SECCFGR_CLASSBSEC_Msk (0x1UL << SBS_SECCFGR_CLASSBSEC_Pos) /*!< 0x00000002 */
+#define SBS_SECCFGR_CLASSBSEC SBS_SECCFGR_CLASSBSEC_Msk /*!< ClassB SBS security enable */
+#define SBS_SECCFGR_FPUSEC_Pos (3U)
+#define SBS_SECCFGR_FPUSEC_Msk (0x1UL << SBS_SECCFGR_FPUSEC_Pos) /*!< 0x00000008 */
+#define SBS_SECCFGR_FPUSEC SBS_SECCFGR_FPUSEC_Msk /*!< FPU SBS security enable */
+
+/****************** Bit definition for SBS_CNSLCKR register **************/
+#define SBS_CNSLCKR_LOCKNSVTOR_Pos (0U)
+#define SBS_CNSLCKR_LOCKNSVTOR_Msk (0x1UL << SBS_CNSLCKR_LOCKNSVTOR_Pos) /*!< 0x00000001 */
+#define SBS_CNSLCKR_LOCKNSVTOR SBS_CNSLCKR_LOCKNSVTOR_Msk /*!< Disable VTOR_NS register writes by SW or debug agent */
+#define SBS_CNSLCKR_LOCKNSMPU_Pos (1U)
+#define SBS_CNSLCKR_LOCKNSMPU_Msk (0x1UL << SBS_CNSLCKR_LOCKNSMPU_Pos) /*!< 0x00000002 */
+#define SBS_CNSLCKR_LOCKNSMPU SBS_CNSLCKR_LOCKNSMPU_Msk /*!< Disable Non-Secure MPU registers writes by SW or debug agent */
+
+/****************** Bit definition for SBS_CSLCKR register ***************/
+#define SBS_CSLCKR_LOCKSVTAIRCR_Pos (0U)
+#define SBS_CSLCKR_LOCKSVTAIRCR_Msk (0x1UL << SBS_CSLCKR_LOCKSVTAIRCR_Pos) /*!< 0x00000001 */
+#define SBS_CSLCKR_LOCKSVTAIRCR SBS_CSLCKR_LOCKSVTAIRCR_Msk /*!< Disable changes to the secure vector table address, handling of system faults */
+#define SBS_CSLCKR_LOCKSMPU_Pos (1U)
+#define SBS_CSLCKR_LOCKSMPU_Msk (0x1UL << SBS_CSLCKR_LOCKSMPU_Pos) /*!< 0x00000002 */
+#define SBS_CSLCKR_LOCKSMPU SBS_CSLCKR_LOCKSMPU_Msk /*!< Disable changes to the secure MPU registers writes by SW or debug agent */
+#define SBS_CSLCKR_LOCKSAU_Pos (2U)
+#define SBS_CSLCKR_LOCKSAU_Msk (0x1UL << SBS_CSLCKR_LOCKSAU_Pos) /*!< 0x00000004 */
+#define SBS_CSLCKR_LOCKSAU SBS_CSLCKR_LOCKSAU_Msk /*!< Disable changes to SAU registers */
+
+/****************** Bit definition for SBS_ECCNMIR register ***************/
+#define SBS_ECCNMIR_ECCNMI_MASK_EN_Pos (0U)
+#define SBS_ECCNMIR_ECCNMI_MASK_EN_Msk (0x1UL << SBS_ECCNMIR_ECCNMI_MASK_EN_Pos) /*!< 0x00000001 */
+#define SBS_ECCNMIR_ECCNMI_MASK_EN SBS_ECCNMIR_ECCNMI_MASK_EN_Msk /*!< Disable NMI in case of double ECC error in flash interface */
+
+/*****************************************************************************/
+/* */
+/* Global TrustZone Control */
+/* */
+/*****************************************************************************/
+/******************* Bits definition for GTZC_TZSC_CR register ******************/
+#define GTZC_TZSC_CR_LCK_Pos (0U)
+#define GTZC_TZSC_CR_LCK_Msk (0x01UL << GTZC_TZSC_CR_LCK_Pos) /*!< 0x00000001 */
+
+/******************* Bits definition for GTZC_TZSC_MPCWM_CFGR register **********/
+#define GTZC_TZSC_MPCWM_CFGR_SREN_Pos (0U)
+#define GTZC_TZSC_MPCWM_CFGR_SREN_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_SREN_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_SREN GTZC_TZSC_MPCWM_CFGR_SREN_Msk
+#define GTZC_TZSC_MPCWM_CFGR_SRLOCK_Pos (1U)
+#define GTZC_TZSC_MPCWM_CFGR_SRLOCK_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_SRLOCK_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_SRLOCK GTZC_TZSC_MPCWM_CFGR_SRLOCK_Msk
+#define GTZC_TZSC_MPCWM_CFGR_SEC_Pos (8U)
+#define GTZC_TZSC_MPCWM_CFGR_SEC_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_SEC_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_SEC GTZC_TZSC_MPCWM_CFGR_SEC_Msk
+#define GTZC_TZSC_MPCWM_CFGR_PRIV_Pos (9U)
+#define GTZC_TZSC_MPCWM_CFGR_PRIV_Msk (0x1UL << GTZC_TZSC_MPCWM_CFGR_PRIV_Pos)
+#define GTZC_TZSC_MPCWM_CFGR_PRIV GTZC_TZSC_MPCWM_CFGR_PRIV_Msk
+
+/******************* Bits definition for GTZC_TZSC_MPCWMR register **************/
+#define GTZC_TZSC_MPCWMR_SUBZ_START_Pos (0U)
+#define GTZC_TZSC_MPCWMR_SUBZ_START_Msk (0x7FFUL << GTZC_TZSC_MPCWMR_SUBZ_START_Pos)
+#define GTZC_TZSC_MPCWMR_SUBZ_START GTZC_TZSC_MPCWMR_SUBZ_START_Msk
+#define GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Pos (16U)
+#define GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Msk (0xFFFUL << GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Pos)
+#define GTZC_TZSC_MPCWMR_SUBZ_LENGTH GTZC_TZSC_MPCWMR_SUBZ_LENGTH_Msk
+
+/******* Bits definition for TZSC _SECCFGRx/_PRIVCFGRx registers *****/
+/******* Bits definition for TZIC _IERx/_SRx/_IFCRx registers *****/
+
+/*************** Bits definition for register x=1 (TZSC1) *************/
+#define GTZC_CFGR1_TIM2_Pos (0U)
+#define GTZC_CFGR1_TIM2_Msk (0x01UL << GTZC_CFGR1_TIM2_Pos)
+#define GTZC_CFGR1_TIM3_Pos (1U)
+#define GTZC_CFGR1_TIM3_Msk (0x01UL << GTZC_CFGR1_TIM3_Pos)
+#define GTZC_CFGR1_TIM4_Pos (2U)
+#define GTZC_CFGR1_TIM4_Msk (0x01UL << GTZC_CFGR1_TIM4_Pos)
+#define GTZC_CFGR1_TIM5_Pos (3U)
+#define GTZC_CFGR1_TIM5_Msk (0x01UL << GTZC_CFGR1_TIM5_Pos)
+#define GTZC_CFGR1_TIM6_Pos (4U)
+#define GTZC_CFGR1_TIM6_Msk (0x01UL << GTZC_CFGR1_TIM6_Pos)
+#define GTZC_CFGR1_TIM7_Pos (5U)
+#define GTZC_CFGR1_TIM7_Msk (0x01UL << GTZC_CFGR1_TIM7_Pos)
+#define GTZC_CFGR1_TIM12_Pos (6U)
+#define GTZC_CFGR1_TIM12_Msk (0x01UL << GTZC_CFGR1_TIM12_Pos)
+#define GTZC_CFGR1_WWDG_Pos (9U)
+#define GTZC_CFGR1_WWDG_Msk (0x01UL << GTZC_CFGR1_WWDG_Pos)
+#define GTZC_CFGR1_IWDG_Pos (10U)
+#define GTZC_CFGR1_IWDG_Msk (0x01UL << GTZC_CFGR1_IWDG_Pos)
+#define GTZC_CFGR1_SPI2_Pos (11U)
+#define GTZC_CFGR1_SPI2_Msk (0x01UL << GTZC_CFGR1_SPI2_Pos)
+#define GTZC_CFGR1_SPI3_Pos (12U)
+#define GTZC_CFGR1_SPI3_Msk (0x01UL << GTZC_CFGR1_SPI3_Pos)
+#define GTZC_CFGR1_USART2_Pos (13U)
+#define GTZC_CFGR1_USART2_Msk (0x01UL << GTZC_CFGR1_USART2_Pos)
+#define GTZC_CFGR1_USART3_Pos (14U)
+#define GTZC_CFGR1_USART3_Msk (0x01UL << GTZC_CFGR1_USART3_Pos)
+#define GTZC_CFGR1_UART4_Pos (15U)
+#define GTZC_CFGR1_UART4_Msk (0x01UL << GTZC_CFGR1_UART4_Pos)
+#define GTZC_CFGR1_UART5_Pos (16U)
+#define GTZC_CFGR1_UART5_Msk (0x01UL << GTZC_CFGR1_UART5_Pos)
+#define GTZC_CFGR1_I2C1_Pos (17U)
+#define GTZC_CFGR1_I2C1_Msk (0x01UL << GTZC_CFGR1_I2C1_Pos)
+#define GTZC_CFGR1_I2C2_Pos (18U)
+#define GTZC_CFGR1_I2C2_Msk (0x01UL << GTZC_CFGR1_I2C2_Pos)
+#define GTZC_CFGR1_I3C1_Pos (19U)
+#define GTZC_CFGR1_I3C1_Msk (0x01UL << GTZC_CFGR1_I3C1_Pos)
+#define GTZC_CFGR1_CRS_Pos (20U)
+#define GTZC_CFGR1_CRS_Msk (0x01UL << GTZC_CFGR1_CRS_Pos)
+#define GTZC_CFGR1_USART6_Pos (21U)
+#define GTZC_CFGR1_USART6_Msk (0x01UL << GTZC_CFGR1_USART6_Pos)
+#define GTZC_CFGR1_HDMICEC_Pos (24U)
+#define GTZC_CFGR1_HDMICEC_Msk (0x01UL << GTZC_CFGR1_HDMICEC_Pos)
+#define GTZC_CFGR1_DAC1_Pos (25U)
+#define GTZC_CFGR1_DAC1_Msk (0x01UL << GTZC_CFGR1_DAC1_Pos)
+#define GTZC_CFGR1_DTS_Pos (30U)
+#define GTZC_CFGR1_DTS_Msk (0x01UL << GTZC_CFGR1_DTS_Pos)
+#define GTZC_CFGR1_LPTIM2_Pos (31U)
+#define GTZC_CFGR1_LPTIM2_Msk (0x01UL << GTZC_CFGR1_LPTIM2_Pos)
+
+/*************** Bits definition for register x=2 (TZSC1) *************/
+#define GTZC_CFGR2_FDCAN1_Pos (0U)
+#define GTZC_CFGR2_FDCAN1_Msk (0x01UL << GTZC_CFGR2_FDCAN1_Pos)
+#define GTZC_CFGR2_FDCAN2_Pos (1U)
+#define GTZC_CFGR2_FDCAN2_Msk (0x01UL << GTZC_CFGR2_FDCAN2_Pos)
+#define GTZC_CFGR2_UCPD1_Pos (2U)
+#define GTZC_CFGR2_UCPD1_Msk (0x01UL << GTZC_CFGR2_UCPD1_Pos)
+#define GTZC_CFGR2_TIM1_Pos (8U)
+#define GTZC_CFGR2_TIM1_Msk (0x01UL << GTZC_CFGR2_TIM1_Pos)
+#define GTZC_CFGR2_SPI1_Pos (9U)
+#define GTZC_CFGR2_SPI1_Msk (0x01UL << GTZC_CFGR2_SPI1_Pos)
+#define GTZC_CFGR2_TIM8_Pos (10U)
+#define GTZC_CFGR2_TIM8_Msk (0x01UL << GTZC_CFGR2_TIM8_Pos)
+#define GTZC_CFGR2_USART1_Pos (11U)
+#define GTZC_CFGR2_USART1_Msk (0x01UL << GTZC_CFGR2_USART1_Pos)
+#define GTZC_CFGR2_TIM15_Pos (12U)
+#define GTZC_CFGR2_TIM15_Msk (0x01UL << GTZC_CFGR2_TIM15_Pos)
+#define GTZC_CFGR2_SPI4_Pos (15U)
+#define GTZC_CFGR2_SPI4_Msk (0x01UL << GTZC_CFGR2_SPI4_Pos)
+#define GTZC_CFGR2_USB_Pos (19U)
+#define GTZC_CFGR2_USB_Msk (0x01UL << GTZC_CFGR2_USB_Pos)
+#define GTZC_CFGR2_LPUART1_Pos (25U)
+#define GTZC_CFGR2_LPUART1_Msk (0x01UL << GTZC_CFGR2_LPUART1_Pos)
+#define GTZC_CFGR2_I2C3_Pos (26U)
+#define GTZC_CFGR2_I2C3_Msk (0x01UL << GTZC_CFGR2_I2C3_Pos)
+#define GTZC_CFGR2_LPTIM1_Pos (28U)
+#define GTZC_CFGR2_LPTIM1_Msk (0x01UL << GTZC_CFGR2_LPTIM1_Pos)
+
+/*************** Bits definition for register x=3 (TZSC1) *************/
+#define GTZC_CFGR3_VREFBUF_Pos (1U)
+#define GTZC_CFGR3_VREFBUF_Msk (0x01UL << GTZC_CFGR3_VREFBUF_Pos)
+#define GTZC_CFGR3_I3C2_Pos (2U)
+#define GTZC_CFGR3_I3C2_Msk (0x01UL << GTZC_CFGR3_I3C2_Pos)
+#define GTZC_CFGR3_CRC_Pos (8U)
+#define GTZC_CFGR3_CRC_Msk (0x01UL << GTZC_CFGR3_CRC_Pos)
+#define GTZC_CFGR3_ICACHE_REG_Pos (12U)
+#define GTZC_CFGR3_ICACHE_REG_Msk (0x01UL << GTZC_CFGR3_ICACHE_REG_Pos)
+#define GTZC_CFGR3_DCACHE1_REG_Pos (13U)
+#define GTZC_CFGR3_DCACHE1_REG_Msk (0x01UL << GTZC_CFGR3_DCACHE1_REG_Pos)
+#define GTZC_CFGR3_ADC_Pos (14U)
+#define GTZC_CFGR3_ADC_Msk (0x01UL << GTZC_CFGR3_ADC_Pos)
+#define GTZC_CFGR3_DCMI_PSSI_Pos (15U)
+#define GTZC_CFGR3_DCMI_PSSI_Msk (0x01UL << GTZC_CFGR3_DCMI_PSSI_Pos)
+#define GTZC_CFGR3_AES_Pos (16U)
+#define GTZC_CFGR3_AES_Msk (0x01UL << GTZC_CFGR3_AES_Pos)
+#define GTZC_CFGR3_HASH_Pos (17U)
+#define GTZC_CFGR3_HASH_Msk (0x01UL << GTZC_CFGR3_HASH_Pos)
+#define GTZC_CFGR3_RNG_Pos (18U)
+#define GTZC_CFGR3_RNG_Msk (0x01UL << GTZC_CFGR3_RNG_Pos)
+#define GTZC_CFGR3_SAES_Pos (19U)
+#define GTZC_CFGR3_SAES_Msk (0x01UL << GTZC_CFGR3_SAES_Pos)
+#define GTZC_CFGR3_PKA_Pos (20U)
+#define GTZC_CFGR3_PKA_Msk (0x01UL << GTZC_CFGR3_PKA_Pos)
+#define GTZC_CFGR3_SDMMC1_Pos (21U)
+#define GTZC_CFGR3_SDMMC1_Msk (0x01UL << GTZC_CFGR3_SDMMC1_Pos)
+#define GTZC_CFGR3_FMC_REG_Pos (23U)
+#define GTZC_CFGR3_FMC_REG_Msk (0x01UL << GTZC_CFGR3_FMC_REG_Pos)
+#define GTZC_CFGR3_OCTOSPI1_Pos (24U)
+#define GTZC_CFGR3_OCTOSPI1_Msk (0x01UL << GTZC_CFGR3_OCTOSPI1_Pos)
+#define GTZC_CFGR3_RAMCFG_Pos (26U)
+#define GTZC_CFGR3_RAMCFG_Msk (0x01UL << GTZC_CFGR3_RAMCFG_Pos)
+
+/*************** Bits definition for register x=4 (TZSC1) *************/
+#define GTZC_CFGR4_GPDMA1_Pos (0U)
+#define GTZC_CFGR4_GPDMA1_Msk (0x01UL << GTZC_CFGR4_GPDMA1_Pos)
+#define GTZC_CFGR4_GPDMA2_Pos (1U)
+#define GTZC_CFGR4_GPDMA2_Msk (0x01UL << GTZC_CFGR4_GPDMA2_Pos)
+#define GTZC_CFGR4_FLASH_Pos (2U)
+#define GTZC_CFGR4_FLASH_Msk (0x01UL << GTZC_CFGR4_FLASH_Pos)
+#define GTZC_CFGR4_FLASH_REG_Pos (3U)
+#define GTZC_CFGR4_FLASH_REG_Msk (0x01UL << GTZC_CFGR4_FLASH_REG_Pos)
+
+#define GTZC_CFGR4_OTFDEC1_Pos (4U)
+#define GTZC_CFGR4_OTFDEC1_Msk (0x01UL << GTZC_CFGR4_OTFDEC1_Pos)
+#define GTZC_CFGR4_SBS_Pos (6U)
+#define GTZC_CFGR4_SBS_Msk (0x01UL << GTZC_CFGR4_SBS_Pos)
+#define GTZC_CFGR4_RTC_Pos (7U)
+#define GTZC_CFGR4_RTC_Msk (0x01UL << GTZC_CFGR4_RTC_Pos)
+#define GTZC_CFGR4_TAMP_Pos (8U)
+#define GTZC_CFGR4_TAMP_Msk (0x01UL << GTZC_CFGR4_TAMP_Pos)
+#define GTZC_CFGR4_PWR_Pos (9U)
+#define GTZC_CFGR4_PWR_Msk (0x01UL << GTZC_CFGR4_PWR_Pos)
+#define GTZC_CFGR4_RCC_Pos (10U)
+#define GTZC_CFGR4_RCC_Msk (0x01UL << GTZC_CFGR4_RCC_Pos)
+#define GTZC_CFGR4_EXTI_Pos (11U)
+#define GTZC_CFGR4_EXTI_Msk (0x01UL << GTZC_CFGR4_EXTI_Pos)
+#define GTZC_CFGR4_TZSC_Pos (16U)
+#define GTZC_CFGR4_TZSC_Msk (0x01UL << GTZC_CFGR4_TZSC_Pos)
+#define GTZC_CFGR4_TZIC_Pos (17U)
+#define GTZC_CFGR4_TZIC_Msk (0x01UL << GTZC_CFGR4_TZIC_Pos)
+#define GTZC_CFGR4_OCTOSPI1_MEM_Pos (18U)
+#define GTZC_CFGR4_OCTOSPI1_MEM_Msk (0x01UL << GTZC_CFGR4_OCTOSPI1_MEM_Pos)
+#define GTZC_CFGR4_FMC_MEM_Pos (19U)
+#define GTZC_CFGR4_FMC_MEM_Msk (0x01UL << GTZC_CFGR4_FMC_MEM_Pos)
+#define GTZC_CFGR4_BKPSRAM_Pos (20U)
+#define GTZC_CFGR4_BKPSRAM_Msk (0x01UL << GTZC_CFGR4_BKPSRAM_Pos)
+#define GTZC_CFGR4_SRAM1_Pos (24U)
+#define GTZC_CFGR4_SRAM1_Msk (0x01UL << GTZC_CFGR4_SRAM1_Pos)
+#define GTZC_CFGR4_MPCBB1_REG_Pos (25U)
+#define GTZC_CFGR4_MPCBB1_REG_Msk (0x01UL << GTZC_CFGR4_MPCBB1_REG_Pos)
+#define GTZC_CFGR4_SRAM2_Pos (26U)
+#define GTZC_CFGR4_SRAM2_Msk (0x01UL << GTZC_CFGR4_SRAM2_Pos)
+#define GTZC_CFGR4_MPCBB2_REG_Pos (27U)
+#define GTZC_CFGR4_MPCBB2_REG_Msk (0x01UL << GTZC_CFGR4_MPCBB2_REG_Pos)
+#define GTZC_CFGR4_SRAM3_Pos (28U)
+#define GTZC_CFGR4_SRAM3_Msk (0x01UL << GTZC_CFGR4_SRAM3_Pos)
+#define GTZC_CFGR4_MPCBB3_REG_Pos (29U)
+#define GTZC_CFGR4_MPCBB3_REG_Msk (0x01UL << GTZC_CFGR4_MPCBB3_REG_Pos)
+
+/******************* Bits definition for GTZC_TZSC1_SECCFGR1 register ***************/
+#define GTZC_TZSC1_SECCFGR1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM4_Pos GTZC_CFGR1_TIM4_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM4_Msk GTZC_CFGR1_TIM4_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM5_Pos GTZC_CFGR1_TIM5_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM5_Msk GTZC_CFGR1_TIM5_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZSC1_SECCFGR1_TIM12_Pos GTZC_CFGR1_TIM12_Pos
+#define GTZC_TZSC1_SECCFGR1_TIM12_Msk GTZC_CFGR1_TIM12_Msk
+#define GTZC_TZSC1_SECCFGR1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZSC1_SECCFGR1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZSC1_SECCFGR1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZSC1_SECCFGR1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZSC1_SECCFGR1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZSC1_SECCFGR1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZSC1_SECCFGR1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZSC1_SECCFGR1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZSC1_SECCFGR1_USART2_Pos GTZC_CFGR1_USART2_Pos
+#define GTZC_TZSC1_SECCFGR1_USART2_Msk GTZC_CFGR1_USART2_Msk
+#define GTZC_TZSC1_SECCFGR1_USART3_Pos GTZC_CFGR1_USART3_Pos
+#define GTZC_TZSC1_SECCFGR1_USART3_Msk GTZC_CFGR1_USART3_Msk
+#define GTZC_TZSC1_SECCFGR1_UART4_Pos GTZC_CFGR1_UART4_Pos
+#define GTZC_TZSC1_SECCFGR1_UART4_Msk GTZC_CFGR1_UART4_Msk
+#define GTZC_TZSC1_SECCFGR1_UART5_Pos GTZC_CFGR1_UART5_Pos
+#define GTZC_TZSC1_SECCFGR1_UART5_Msk GTZC_CFGR1_UART5_Msk
+#define GTZC_TZSC1_SECCFGR1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZSC1_SECCFGR1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZSC1_SECCFGR1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZSC1_SECCFGR1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZSC1_SECCFGR1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZSC1_SECCFGR1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZSC1_SECCFGR1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZSC1_SECCFGR1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZSC1_SECCFGR1_USART6_Pos GTZC_CFGR1_USART6_Pos
+#define GTZC_TZSC1_SECCFGR1_USART6_Msk GTZC_CFGR1_USART6_Msk
+#define GTZC_TZSC1_SECCFGR1_HDMICEC_Pos GTZC_CFGR1_HDMICEC_Pos
+#define GTZC_TZSC1_SECCFGR1_HDMICEC_Msk GTZC_CFGR1_HDMICEC_Msk
+#define GTZC_TZSC1_SECCFGR1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZSC1_SECCFGR1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZSC1_SECCFGR1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZSC1_SECCFGR1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZSC1_SECCFGR1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZSC1_SECCFGR1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZSC_SECCFGR2 register ***************/
+#define GTZC_TZSC1_SECCFGR2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZSC1_SECCFGR2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZSC1_SECCFGR2_FDCAN2_Pos GTZC_CFGR2_FDCAN2_Pos
+#define GTZC_TZSC1_SECCFGR2_FDCAN2_Msk GTZC_CFGR2_FDCAN2_Msk
+#define GTZC_TZSC1_SECCFGR2_UCPD1_Pos GTZC_CFGR2_UCPD1_Pos
+#define GTZC_TZSC1_SECCFGR2_UCPD1_Msk GTZC_CFGR2_UCPD1_Msk
+#define GTZC_TZSC1_SECCFGR2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZSC1_SECCFGR2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZSC1_SECCFGR2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZSC1_SECCFGR2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZSC1_SECCFGR2_TIM8_Pos GTZC_CFGR2_TIM8_Pos
+#define GTZC_TZSC1_SECCFGR2_TIM8_Msk GTZC_CFGR2_TIM8_Msk
+#define GTZC_TZSC1_SECCFGR2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZSC1_SECCFGR2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZSC1_SECCFGR2_TIM15_Pos GTZC_CFGR2_TIM15_Pos
+#define GTZC_TZSC1_SECCFGR2_TIM15_Msk GTZC_CFGR2_TIM15_Msk
+#define GTZC_TZSC1_SECCFGR2_SPI4_Pos GTZC_CFGR2_SPI4_Pos
+#define GTZC_TZSC1_SECCFGR2_SPI4_Msk GTZC_CFGR2_SPI4_Msk
+#define GTZC_TZSC1_SECCFGR2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZSC1_SECCFGR2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZSC1_SECCFGR2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZSC1_SECCFGR2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZSC1_SECCFGR2_I2C3_Pos GTZC_CFGR2_I2C3_Pos
+#define GTZC_TZSC1_SECCFGR2_I2C3_Msk GTZC_CFGR2_I2C3_Msk
+#define GTZC_TZSC1_SECCFGR2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZSC1_SECCFGR2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/******************* Bits definition for GTZC_TZSC_SECCFGR3 register ***************/
+#define GTZC_TZSC1_SECCFGR3_VREFBUF_Pos GTZC_CFGR3_VREFBUF_Pos
+#define GTZC_TZSC1_SECCFGR3_VREFBUF_Msk GTZC_CFGR3_VREFBUF_Msk
+#define GTZC_TZSC1_SECCFGR3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZSC1_SECCFGR3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZSC1_SECCFGR3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZSC1_SECCFGR3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZSC1_SECCFGR3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZSC1_SECCFGR3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZSC1_SECCFGR3_DCACHE1_REG_Pos GTZC_CFGR3_DCACHE1_REG_Pos
+#define GTZC_TZSC1_SECCFGR3_DCACHE1_REG_Msk GTZC_CFGR3_DCACHE1_REG_Msk
+#define GTZC_TZSC1_SECCFGR3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZSC1_SECCFGR3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZSC1_SECCFGR3_DCMI_PSSI_Pos GTZC_CFGR3_DCMI_PSSI_Pos
+#define GTZC_TZSC1_SECCFGR3_DCMI_PSSI_Msk GTZC_CFGR3_DCMI_PSSI_Msk
+#define GTZC_TZSC1_SECCFGR3_AES_Pos GTZC_CFGR3_AES_Pos
+#define GTZC_TZSC1_SECCFGR3_AES_Msk GTZC_CFGR3_AES_Msk
+#define GTZC_TZSC1_SECCFGR3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZSC1_SECCFGR3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZSC1_SECCFGR3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZSC1_SECCFGR3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZSC1_SECCFGR3_SAES_Pos GTZC_CFGR3_SAES_Pos
+#define GTZC_TZSC1_SECCFGR3_SAES_Msk GTZC_CFGR3_SAES_Msk
+#define GTZC_TZSC1_SECCFGR3_PKA_Pos GTZC_CFGR3_PKA_Pos
+#define GTZC_TZSC1_SECCFGR3_PKA_Msk GTZC_CFGR3_PKA_Msk
+#define GTZC_TZSC1_SECCFGR3_SDMMC1_Pos GTZC_CFGR3_SDMMC1_Pos
+#define GTZC_TZSC1_SECCFGR3_SDMMC1_Msk GTZC_CFGR3_SDMMC1_Msk
+#define GTZC_TZSC1_SECCFGR3_FMC_REG_Pos GTZC_CFGR3_FMC_REG_Pos
+#define GTZC_TZSC1_SECCFGR3_FMC_REG_Msk GTZC_CFGR3_FMC_REG_Msk
+#define GTZC_TZSC1_SECCFGR3_OCTOSPI1_Pos GTZC_CFGR3_OCTOSPI1_Pos
+#define GTZC_TZSC1_SECCFGR3_OCTOSPI1_Msk GTZC_CFGR3_OCTOSPI1_Msk
+#define GTZC_TZSC1_SECCFGR3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZSC1_SECCFGR3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+
+/******************* Bits definition for GTZC_TZSC_PRIVCFGR1 register ***************/
+#define GTZC_TZSC1_PRIVCFGR1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM4_Pos GTZC_CFGR1_TIM4_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM4_Msk GTZC_CFGR1_TIM4_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM5_Pos GTZC_CFGR1_TIM5_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM5_Msk GTZC_CFGR1_TIM5_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZSC1_PRIVCFGR1_TIM12_Pos GTZC_CFGR1_TIM12_Pos
+#define GTZC_TZSC1_PRIVCFGR1_TIM12_Msk GTZC_CFGR1_TIM12_Msk
+#define GTZC_TZSC1_PRIVCFGR1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZSC1_PRIVCFGR1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZSC1_PRIVCFGR1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZSC1_PRIVCFGR1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZSC1_PRIVCFGR1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZSC1_PRIVCFGR1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZSC1_PRIVCFGR1_USART2_Pos GTZC_CFGR1_USART2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_USART2_Msk GTZC_CFGR1_USART2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_USART3_Pos GTZC_CFGR1_USART3_Pos
+#define GTZC_TZSC1_PRIVCFGR1_USART3_Msk GTZC_CFGR1_USART3_Msk
+#define GTZC_TZSC1_PRIVCFGR1_UART4_Pos GTZC_CFGR1_UART4_Pos
+#define GTZC_TZSC1_PRIVCFGR1_UART4_Msk GTZC_CFGR1_UART4_Msk
+#define GTZC_TZSC1_PRIVCFGR1_UART5_Pos GTZC_CFGR1_UART5_Pos
+#define GTZC_TZSC1_PRIVCFGR1_UART5_Msk GTZC_CFGR1_UART5_Msk
+#define GTZC_TZSC1_PRIVCFGR1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZSC1_PRIVCFGR1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZSC1_PRIVCFGR1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZSC1_PRIVCFGR1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZSC1_PRIVCFGR1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZSC1_PRIVCFGR1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZSC1_PRIVCFGR1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZSC1_PRIVCFGR1_USART6_Pos GTZC_CFGR1_USART6_Pos
+#define GTZC_TZSC1_PRIVCFGR1_USART6_Msk GTZC_CFGR1_USART6_Msk
+#define GTZC_TZSC1_PRIVCFGR1_HDMICEC_Pos GTZC_CFGR1_HDMICEC_Pos
+#define GTZC_TZSC1_PRIVCFGR1_HDMICEC_Msk GTZC_CFGR1_HDMICEC_Msk
+#define GTZC_TZSC1_PRIVCFGR1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZSC1_PRIVCFGR1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZSC1_PRIVCFGR1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZSC1_PRIVCFGR1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZSC1_PRIVCFGR1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZSC1_PRIVCFGR1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZSC_PRIVCFGR2 register ***************/
+#define GTZC_TZSC1_PRIVCFGR2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_FDCAN2_Pos GTZC_CFGR2_FDCAN2_Pos
+#define GTZC_TZSC1_PRIVCFGR2_FDCAN2_Msk GTZC_CFGR2_FDCAN2_Msk
+#define GTZC_TZSC1_PRIVCFGR2_UCPD1_Pos GTZC_CFGR2_UCPD1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_UCPD1_Msk GTZC_CFGR2_UCPD1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_TIM8_Pos GTZC_CFGR2_TIM8_Pos
+#define GTZC_TZSC1_PRIVCFGR2_TIM8_Msk GTZC_CFGR2_TIM8_Msk
+#define GTZC_TZSC1_PRIVCFGR2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_TIM15_Pos GTZC_CFGR2_TIM15_Pos
+#define GTZC_TZSC1_PRIVCFGR2_TIM15_Msk GTZC_CFGR2_TIM15_Msk
+#define GTZC_TZSC1_PRIVCFGR2_SPI4_Pos GTZC_CFGR2_SPI4_Pos
+#define GTZC_TZSC1_PRIVCFGR2_SPI4_Msk GTZC_CFGR2_SPI4_Msk
+#define GTZC_TZSC1_PRIVCFGR2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZSC1_PRIVCFGR2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZSC1_PRIVCFGR2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZSC1_PRIVCFGR2_I2C3_Pos GTZC_CFGR2_I2C3_Pos
+#define GTZC_TZSC1_PRIVCFGR2_I2C3_Msk GTZC_CFGR2_I2C3_Msk
+#define GTZC_TZSC1_PRIVCFGR2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZSC1_PRIVCFGR2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/******************* Bits definition for GTZC_TZSC_PRIVCFGR3 register ***************/
+#define GTZC_TZSC1_PRIVCFGR3_VREFBUF_Pos GTZC_CFGR3_VREFBUF_Pos
+#define GTZC_TZSC1_PRIVCFGR3_VREFBUF_Msk GTZC_CFGR3_VREFBUF_Msk
+#define GTZC_TZSC1_PRIVCFGR3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZSC1_PRIVCFGR3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZSC1_PRIVCFGR3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZSC1_PRIVCFGR3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZSC1_PRIVCFGR3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZSC1_PRIVCFGR3_DCACHE1_REG_Pos GTZC_CFGR3_DCACHE1_REG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_DCACHE1_REG_Msk GTZC_CFGR3_DCACHE1_REG_Msk
+#define GTZC_TZSC1_PRIVCFGR3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZSC1_PRIVCFGR3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZSC1_PRIVCFGR3_DCMI_PSSI_Pos GTZC_CFGR3_DCMI_PSSI_Pos
+#define GTZC_TZSC1_PRIVCFGR3_DCMI_PSSI_Msk GTZC_CFGR3_DCMI_PSSI_Msk
+#define GTZC_TZSC1_PRIVCFGR3_AES_Pos GTZC_CFGR3_AES_Pos
+#define GTZC_TZSC1_PRIVCFGR3_AES_Msk GTZC_CFGR3_AES_Msk
+#define GTZC_TZSC1_PRIVCFGR3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZSC1_PRIVCFGR3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZSC1_PRIVCFGR3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZSC1_PRIVCFGR3_SAES_Pos GTZC_CFGR3_SAES_Pos
+#define GTZC_TZSC1_PRIVCFGR3_SAES_Msk GTZC_CFGR3_SAES_Msk
+#define GTZC_TZSC1_PRIVCFGR3_PKA_Pos GTZC_CFGR3_PKA_Pos
+#define GTZC_TZSC1_PRIVCFGR3_PKA_Msk GTZC_CFGR3_PKA_Msk
+#define GTZC_TZSC1_PRIVCFGR3_SDMMC1_Pos GTZC_CFGR3_SDMMC1_Pos
+#define GTZC_TZSC1_PRIVCFGR3_SDMMC1_Msk GTZC_CFGR3_SDMMC1_Msk
+#define GTZC_TZSC1_PRIVCFGR3_FMC_REG_Pos GTZC_CFGR3_FMC_REG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_FMC_REG_Msk GTZC_CFGR3_FMC_REG_Msk
+#define GTZC_TZSC1_PRIVCFGR3_OCTOSPI1_Pos GTZC_CFGR3_OCTOSPI1_Pos
+#define GTZC_TZSC1_PRIVCFGR3_OCTOSPI1_Msk GTZC_CFGR3_OCTOSPI1_Msk
+#define GTZC_TZSC1_PRIVCFGR3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZSC1_PRIVCFGR3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+/******************* Bits definition for GTZC_TZIC_IER1 register ***************/
+#define GTZC_TZIC1_IER1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZIC1_IER1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZIC1_IER1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZIC1_IER1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZIC1_IER1_TIM4_Pos GTZC_CFGR1_TIM4_Pos
+#define GTZC_TZIC1_IER1_TIM4_Msk GTZC_CFGR1_TIM4_Msk
+#define GTZC_TZIC1_IER1_TIM5_Pos GTZC_CFGR1_TIM5_Pos
+#define GTZC_TZIC1_IER1_TIM5_Msk GTZC_CFGR1_TIM5_Msk
+#define GTZC_TZIC1_IER1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZIC1_IER1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZIC1_IER1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZIC1_IER1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZIC1_IER1_TIM12_Pos GTZC_CFGR1_TIM12_Pos
+#define GTZC_TZIC1_IER1_TIM12_Msk GTZC_CFGR1_TIM12_Msk
+#define GTZC_TZIC1_IER1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZIC1_IER1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZIC1_IER1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZIC1_IER1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZIC1_IER1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZIC1_IER1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZIC1_IER1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZIC1_IER1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZIC1_IER1_USART2_Pos GTZC_CFGR1_USART2_Pos
+#define GTZC_TZIC1_IER1_USART2_Msk GTZC_CFGR1_USART2_Msk
+#define GTZC_TZIC1_IER1_USART3_Pos GTZC_CFGR1_USART3_Pos
+#define GTZC_TZIC1_IER1_USART3_Msk GTZC_CFGR1_USART3_Msk
+#define GTZC_TZIC1_IER1_UART4_Pos GTZC_CFGR1_UART4_Pos
+#define GTZC_TZIC1_IER1_UART4_Msk GTZC_CFGR1_UART4_Msk
+#define GTZC_TZIC1_IER1_UART5_Pos GTZC_CFGR1_UART5_Pos
+#define GTZC_TZIC1_IER1_UART5_Msk GTZC_CFGR1_UART5_Msk
+#define GTZC_TZIC1_IER1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZIC1_IER1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZIC1_IER1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZIC1_IER1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZIC1_IER1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZIC1_IER1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZIC1_IER1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZIC1_IER1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZIC1_IER1_USART6_Pos GTZC_CFGR1_USART6_Pos
+#define GTZC_TZIC1_IER1_USART6_Msk GTZC_CFGR1_USART6_Msk
+#define GTZC_TZIC1_IER1_HDMICEC_Pos GTZC_CFGR1_HDMICEC_Pos
+#define GTZC_TZIC1_IER1_HDMICEC_Msk GTZC_CFGR1_HDMICEC_Msk
+#define GTZC_TZIC1_IER1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZIC1_IER1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZIC1_IER1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZIC1_IER1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZIC1_IER1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZIC1_IER1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZIC_IER2 register ***************/
+#define GTZC_TZIC1_IER2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZIC1_IER2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZIC1_IER2_FDCAN2_Pos GTZC_CFGR2_FDCAN2_Pos
+#define GTZC_TZIC1_IER2_FDCAN2_Msk GTZC_CFGR2_FDCAN2_Msk
+#define GTZC_TZIC1_IER2_UCPD1_Pos GTZC_CFGR2_UCPD1_Pos
+#define GTZC_TZIC1_IER2_UCPD1_Msk GTZC_CFGR2_UCPD1_Msk
+#define GTZC_TZIC1_IER2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZIC1_IER2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZIC1_IER2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZIC1_IER2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZIC1_IER2_TIM8_Pos GTZC_CFGR2_TIM8_Pos
+#define GTZC_TZIC1_IER2_TIM8_Msk GTZC_CFGR2_TIM8_Msk
+#define GTZC_TZIC1_IER2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZIC1_IER2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZIC1_IER2_TIM15_Pos GTZC_CFGR2_TIM15_Pos
+#define GTZC_TZIC1_IER2_TIM15_Msk GTZC_CFGR2_TIM15_Msk
+#define GTZC_TZIC1_IER2_SPI4_Pos GTZC_CFGR2_SPI4_Pos
+#define GTZC_TZIC1_IER2_SPI4_Msk GTZC_CFGR2_SPI4_Msk
+#define GTZC_TZIC1_IER2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZIC1_IER2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZIC1_IER2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZIC1_IER2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZIC1_IER2_I2C3_Pos GTZC_CFGR2_I2C3_Pos
+#define GTZC_TZIC1_IER2_I2C3_Msk GTZC_CFGR2_I2C3_Msk
+#define GTZC_TZIC1_IER2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZIC1_IER2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/******************* Bits definition for GTZC_TZIC_IER3 register ***************/
+#define GTZC_TZIC1_IER3_VREFBUF_Pos GTZC_CFGR3_VREFBUF_Pos
+#define GTZC_TZIC1_IER3_VREFBUF_Msk GTZC_CFGR3_VREFBUF_Msk
+#define GTZC_TZIC1_IER3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZIC1_IER3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZIC1_IER3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZIC1_IER3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZIC1_IER3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZIC1_IER3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZIC1_IER3_DCACHE1_REG_Pos GTZC_CFGR3_DCACHE1_REG_Pos
+#define GTZC_TZIC1_IER3_DCACHE1_REG_Msk GTZC_CFGR3_DCACHE1_REG_Msk
+#define GTZC_TZIC1_IER3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZIC1_IER3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZIC1_IER3_DCMI_PSSI_Pos GTZC_CFGR3_DCMI_PSSI_Pos
+#define GTZC_TZIC1_IER3_DCMI_PSSI_Msk GTZC_CFGR3_DCMI_PSSI_Msk
+#define GTZC_TZIC1_IER3_AES_Pos GTZC_CFGR3_AES_Pos
+#define GTZC_TZIC1_IER3_AES_Msk GTZC_CFGR3_AES_Msk
+#define GTZC_TZIC1_IER3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZIC1_IER3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZIC1_IER3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZIC1_IER3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZIC1_IER3_SAES_Pos GTZC_CFGR3_SAES_Pos
+#define GTZC_TZIC1_IER3_SAES_Msk GTZC_CFGR3_SAES_Msk
+#define GTZC_TZIC1_IER3_PKA_Pos GTZC_CFGR3_PKA_Pos
+#define GTZC_TZIC1_IER3_PKA_Msk GTZC_CFGR3_PKA_Msk
+#define GTZC_TZIC1_IER3_SDMMC1_Pos GTZC_CFGR3_SDMMC1_Pos
+#define GTZC_TZIC1_IER3_SDMMC1_Msk GTZC_CFGR3_SDMMC1_Msk
+#define GTZC_TZIC1_IER3_FMC_REG_Pos GTZC_CFGR3_FMC_REG_Pos
+#define GTZC_TZIC1_IER3_FMC_REG_Msk GTZC_CFGR3_FMC_REG_Msk
+#define GTZC_TZIC1_IER3_OCTOSPI1_Pos GTZC_CFGR3_OCTOSPI1_Pos
+#define GTZC_TZIC1_IER3_OCTOSPI1_Msk GTZC_CFGR3_OCTOSPI1_Msk
+#define GTZC_TZIC1_IER3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZIC1_IER3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+/******************* Bits definition for GTZC_TZIC_IER4 register ***************/
+#define GTZC_TZIC1_IER4_GPDMA1_Pos GTZC_CFGR4_GPDMA1_Pos
+#define GTZC_TZIC1_IER4_GPDMA1_Msk GTZC_CFGR4_GPDMA1_Msk
+#define GTZC_TZIC1_IER4_GPDMA2_Pos GTZC_CFGR4_GPDMA2_Pos
+#define GTZC_TZIC1_IER4_GPDMA2_Msk GTZC_CFGR4_GPDMA2_Msk
+#define GTZC_TZIC1_IER4_FLASH_Pos GTZC_CFGR4_FLASH_Pos
+#define GTZC_TZIC1_IER4_FLASH_Msk GTZC_CFGR4_FLASH_Msk
+#define GTZC_TZIC1_IER4_FLASH_REG_Pos GTZC_CFGR4_FLASH_REG_Pos
+#define GTZC_TZIC1_IER4_FLASH_REG_Msk GTZC_CFGR4_FLASH_REG_Msk
+#define GTZC_TZIC1_IER4_OTFDEC1_Pos GTZC_CFGR4_OTFDEC1_Pos
+#define GTZC_TZIC1_IER4_OTFDEC1_Msk GTZC_CFGR4_OTFDEC1_Msk
+#define GTZC_TZIC1_IER4_SBS_Pos GTZC_CFGR4_SBS_Pos
+#define GTZC_TZIC1_IER4_SBS_Msk GTZC_CFGR4_SBS_Msk
+#define GTZC_TZIC1_IER4_RTC_Pos GTZC_CFGR4_RTC_Pos
+#define GTZC_TZIC1_IER4_RTC_Msk GTZC_CFGR4_RTC_Msk
+#define GTZC_TZIC1_IER4_TAMP_Pos GTZC_CFGR4_TAMP_Pos
+#define GTZC_TZIC1_IER4_TAMP_Msk GTZC_CFGR4_TAMP_Msk
+#define GTZC_TZIC1_IER4_PWR_Pos GTZC_CFGR4_PWR_Pos
+#define GTZC_TZIC1_IER4_PWR_Msk GTZC_CFGR4_PWR_Msk
+#define GTZC_TZIC1_IER4_RCC_Pos GTZC_CFGR4_RCC_Pos
+#define GTZC_TZIC1_IER4_RCC_Msk GTZC_CFGR4_RCC_Msk
+#define GTZC_TZIC1_IER4_EXTI_Pos GTZC_CFGR4_EXTI_Pos
+#define GTZC_TZIC1_IER4_EXTI_Msk GTZC_CFGR4_EXTI_Msk
+#define GTZC_TZIC1_IER4_TZSC_Pos GTZC_CFGR4_TZSC_Pos
+#define GTZC_TZIC1_IER4_TZSC_Msk GTZC_CFGR4_TZSC_Msk
+#define GTZC_TZIC1_IER4_TZIC_Pos GTZC_CFGR4_TZIC_Pos
+#define GTZC_TZIC1_IER4_TZIC_Msk GTZC_CFGR4_TZIC_Msk
+#define GTZC_TZIC1_IER4_OCTOSPI1_MEM_Pos GTZC_CFGR4_OCTOSPI1_MEM_Pos
+#define GTZC_TZIC1_IER4_OCTOSPI1_MEM_Msk GTZC_CFGR4_OCTOSPI1_MEM_Msk
+#define GTZC_TZIC1_IER4_FMC_MEM_Pos GTZC_CFGR4_FMC_MEM_Pos
+#define GTZC_TZIC1_IER4_FMC_MEM_Msk GTZC_CFGR4_FMC_MEM_Msk
+#define GTZC_TZIC1_IER4_BKPSRAM_Pos GTZC_CFGR4_BKPSRAM_Pos
+#define GTZC_TZIC1_IER4_BKPSRAM_Msk GTZC_CFGR4_BKPSRAM_Msk
+#define GTZC_TZIC1_IER4_SRAM1_Pos GTZC_CFGR4_SRAM1_Pos
+#define GTZC_TZIC1_IER4_SRAM1_Msk GTZC_CFGR4_SRAM1_Msk
+#define GTZC_TZIC1_IER4_MPCBB1_REG_Pos GTZC_CFGR4_MPCBB1_REG_Pos
+#define GTZC_TZIC1_IER4_MPCBB1_REG_Msk GTZC_CFGR4_MPCBB1_REG_Msk
+#define GTZC_TZIC1_IER4_SRAM2_Pos GTZC_CFGR4_SRAM2_Pos
+#define GTZC_TZIC1_IER4_SRAM2_Msk GTZC_CFGR4_SRAM2_Msk
+#define GTZC_TZIC1_IER4_MPCBB2_REG_Pos GTZC_CFGR4_MPCBB2_REG_Pos
+#define GTZC_TZIC1_IER4_MPCBB2_REG_Msk GTZC_CFGR4_MPCBB2_REG_Msk
+#define GTZC_TZIC1_IER4_SRAM3_Pos GTZC_CFGR4_SRAM3_Pos
+#define GTZC_TZIC1_IER4_SRAM3_Msk GTZC_CFGR4_SRAM3_Msk
+#define GTZC_TZIC1_IER4_MPCBB3_REG_Pos GTZC_CFGR4_MPCBB3_REG_Pos
+#define GTZC_TZIC1_IER4_MPCBB3_REG_Msk GTZC_CFGR4_MPCBB3_REG_Msk
+
+/******************* Bits definition for GTZC_TZIC_SR1 register **************/
+#define GTZC_TZIC1_SR1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZIC1_SR1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZIC1_SR1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZIC1_SR1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZIC1_SR1_TIM4_Pos GTZC_CFGR1_TIM4_Pos
+#define GTZC_TZIC1_SR1_TIM4_Msk GTZC_CFGR1_TIM4_Msk
+#define GTZC_TZIC1_SR1_TIM5_Pos GTZC_CFGR1_TIM5_Pos
+#define GTZC_TZIC1_SR1_TIM5_Msk GTZC_CFGR1_TIM5_Msk
+#define GTZC_TZIC1_SR1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZIC1_SR1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZIC1_SR1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZIC1_SR1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZIC1_SR1_TIM12_Pos GTZC_CFGR1_TIM12_Pos
+#define GTZC_TZIC1_SR1_TIM12_Msk GTZC_CFGR1_TIM12_Msk
+#define GTZC_TZIC1_SR1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZIC1_SR1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZIC1_SR1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZIC1_SR1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZIC1_SR1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZIC1_SR1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZIC1_SR1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZIC1_SR1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZIC1_SR1_USART2_Pos GTZC_CFGR1_USART2_Pos
+#define GTZC_TZIC1_SR1_USART2_Msk GTZC_CFGR1_USART2_Msk
+#define GTZC_TZIC1_SR1_USART3_Pos GTZC_CFGR1_USART3_Pos
+#define GTZC_TZIC1_SR1_USART3_Msk GTZC_CFGR1_USART3_Msk
+#define GTZC_TZIC1_SR1_UART4_Pos GTZC_CFGR1_UART4_Pos
+#define GTZC_TZIC1_SR1_UART4_Msk GTZC_CFGR1_UART4_Msk
+#define GTZC_TZIC1_SR1_UART5_Pos GTZC_CFGR1_UART5_Pos
+#define GTZC_TZIC1_SR1_UART5_Msk GTZC_CFGR1_UART5_Msk
+#define GTZC_TZIC1_SR1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZIC1_SR1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZIC1_SR1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZIC1_SR1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZIC1_SR1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZIC1_SR1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZIC1_SR1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZIC1_SR1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZIC1_SR1_USART6_Pos GTZC_CFGR1_USART6_Pos
+#define GTZC_TZIC1_SR1_USART6_Msk GTZC_CFGR1_USART6_Msk
+#define GTZC_TZIC1_SR1_HDMICEC_Pos GTZC_CFGR1_HDMICEC_Pos
+#define GTZC_TZIC1_SR1_HDMICEC_Msk GTZC_CFGR1_HDMICEC_Msk
+#define GTZC_TZIC1_SR1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZIC1_SR1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZIC1_SR1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZIC1_SR1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZIC1_SR1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZIC1_SR1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZIC_SR2 register **************/
+#define GTZC_TZIC1_SR2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZIC1_SR2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZIC1_SR2_FDCAN2_Pos GTZC_CFGR2_FDCAN2_Pos
+#define GTZC_TZIC1_SR2_FDCAN2_Msk GTZC_CFGR2_FDCAN2_Msk
+#define GTZC_TZIC1_SR2_UCPD1_Pos GTZC_CFGR2_UCPD1_Pos
+#define GTZC_TZIC1_SR2_UCPD1_Msk GTZC_CFGR2_UCPD1_Msk
+#define GTZC_TZIC1_SR2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZIC1_SR2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZIC1_SR2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZIC1_SR2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZIC1_SR2_TIM8_Pos GTZC_CFGR2_TIM8_Pos
+#define GTZC_TZIC1_SR2_TIM8_Msk GTZC_CFGR2_TIM8_Msk
+#define GTZC_TZIC1_SR2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZIC1_SR2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZIC1_SR2_TIM15_Pos GTZC_CFGR2_TIM15_Pos
+#define GTZC_TZIC1_SR2_TIM15_Msk GTZC_CFGR2_TIM15_Msk
+#define GTZC_TZIC1_SR2_SPI4_Pos GTZC_CFGR2_SPI4_Pos
+#define GTZC_TZIC1_SR2_SPI4_Msk GTZC_CFGR2_SPI4_Msk
+#define GTZC_TZIC1_SR2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZIC1_SR2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZIC1_SR2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZIC1_SR2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZIC1_SR2_I2C3_Pos GTZC_CFGR2_I2C3_Pos
+#define GTZC_TZIC1_SR2_I2C3_Msk GTZC_CFGR2_I2C3_Msk
+#define GTZC_TZIC1_SR2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZIC1_SR2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/******************* Bits definition for GTZC_TZIC_SR3 register **************/
+#define GTZC_TZIC1_SR3_VREFBUF_Pos GTZC_CFGR3_VREFBUF_Pos
+#define GTZC_TZIC1_SR3_VREFBUF_Msk GTZC_CFGR3_VREFBUF_Msk
+#define GTZC_TZIC1_SR3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZIC1_SR3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZIC1_SR3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZIC1_SR3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZIC1_SR3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZIC1_SR3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZIC1_SR3_DCACHE1_REG_Pos GTZC_CFGR3_DCACHE1_REG_Pos
+#define GTZC_TZIC1_SR3_DCACHE1_REG_Msk GTZC_CFGR3_DCACHE1_REG_Msk
+#define GTZC_TZIC1_SR3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZIC1_SR3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZIC1_SR3_DCMI_PSSI_Pos GTZC_CFGR3_DCMI_PSSI_Pos
+#define GTZC_TZIC1_SR3_DCMI_PSSI_Msk GTZC_CFGR3_DCMI_PSSI_Msk
+#define GTZC_TZIC1_SR3_AES_Pos GTZC_CFGR3_AES_Pos
+#define GTZC_TZIC1_SR3_AES_Msk GTZC_CFGR3_AES_Msk
+#define GTZC_TZIC1_SR3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZIC1_SR3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZIC1_SR3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZIC1_SR3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZIC1_SR3_SAES_Pos GTZC_CFGR3_SAES_Pos
+#define GTZC_TZIC1_SR3_SAES_Msk GTZC_CFGR3_SAES_Msk
+#define GTZC_TZIC1_SR3_PKA_Pos GTZC_CFGR3_PKA_Pos
+#define GTZC_TZIC1_SR3_PKA_Msk GTZC_CFGR3_PKA_Msk
+#define GTZC_TZIC1_SR3_SDMMC1_Pos GTZC_CFGR3_SDMMC1_Pos
+#define GTZC_TZIC1_SR3_SDMMC1_Msk GTZC_CFGR3_SDMMC1_Msk
+#define GTZC_TZIC1_SR3_FMC_REG_Pos GTZC_CFGR3_FMC_REG_Pos
+#define GTZC_TZIC1_SR3_FMC_REG_Msk GTZC_CFGR3_FMC_REG_Msk
+#define GTZC_TZIC1_SR3_OCTOSPI1_Pos GTZC_CFGR3_OCTOSPI1_Pos
+#define GTZC_TZIC1_SR3_OCTOSPI1_Msk GTZC_CFGR3_OCTOSPI1_Msk
+#define GTZC_TZIC1_SR3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZIC1_SR3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+/******************* Bits definition for GTZC_TZIC_SR4 register ***************/
+#define GTZC_TZIC1_SR4_GPDMA1_Pos GTZC_CFGR4_GPDMA1_Pos
+#define GTZC_TZIC1_SR4_GPDMA1_Msk GTZC_CFGR4_GPDMA1_Msk
+#define GTZC_TZIC1_SR4_GPDMA2_Pos GTZC_CFGR4_GPDMA2_Pos
+#define GTZC_TZIC1_SR4_GPDMA2_Msk GTZC_CFGR4_GPDMA2_Msk
+#define GTZC_TZIC1_SR4_FLASH_Pos GTZC_CFGR4_FLASH_Pos
+#define GTZC_TZIC1_SR4_FLASH_Msk GTZC_CFGR4_FLASH_Msk
+#define GTZC_TZIC1_SR4_FLASH_REG_Pos GTZC_CFGR4_FLASH_REG_Pos
+#define GTZC_TZIC1_SR4_FLASH_REG_Msk GTZC_CFGR4_FLASH_REG_Msk
+#define GTZC_TZIC1_SR4_OTFDEC1_Pos GTZC_CFGR4_OTFDEC1_Pos
+#define GTZC_TZIC1_SR4_OTFDEC1_Msk GTZC_CFGR4_OTFDEC1_Msk
+#define GTZC_TZIC1_SR4_SBS_Pos GTZC_CFGR4_SBS_Pos
+#define GTZC_TZIC1_SR4_SBS_Msk GTZC_CFGR4_SBS_Msk
+#define GTZC_TZIC1_SR4_RTC_Pos GTZC_CFGR4_RTC_Pos
+#define GTZC_TZIC1_SR4_RTC_Msk GTZC_CFGR4_RTC_Msk
+#define GTZC_TZIC1_SR4_TAMP_Pos GTZC_CFGR4_TAMP_Pos
+#define GTZC_TZIC1_SR4_TAMP_Msk GTZC_CFGR4_TAMP_Msk
+#define GTZC_TZIC1_SR4_PWR_Pos GTZC_CFGR4_PWR_Pos
+#define GTZC_TZIC1_SR4_PWR_Msk GTZC_CFGR4_PWR_Msk
+#define GTZC_TZIC1_SR4_RCC_Pos GTZC_CFGR4_RCC_Pos
+#define GTZC_TZIC1_SR4_RCC_Msk GTZC_CFGR4_RCC_Msk
+#define GTZC_TZIC1_SR4_EXTI_Pos GTZC_CFGR4_EXTI_Pos
+#define GTZC_TZIC1_SR4_EXTI_Msk GTZC_CFGR4_EXTI_Msk
+#define GTZC_TZIC1_SR4_TZSC_Pos GTZC_CFGR4_TZSC_Pos
+#define GTZC_TZIC1_SR4_TZSC_Msk GTZC_CFGR4_TZSC_Msk
+#define GTZC_TZIC1_SR4_TZIC_Pos GTZC_CFGR4_TZIC_Pos
+#define GTZC_TZIC1_SR4_TZIC_Msk GTZC_CFGR4_TZIC_Msk
+#define GTZC_TZIC1_SR4_OCTOSPI1_MEM_Pos GTZC_CFGR4_OCTOSPI1_MEM_Pos
+#define GTZC_TZIC1_SR4_OCTOSPI1_MEM_Msk GTZC_CFGR4_OCTOSPI1_MEM_Msk
+#define GTZC_TZIC1_SR4_FMC_MEM_Pos GTZC_CFGR4_FMC_MEM_Pos
+#define GTZC_TZIC1_SR4_FMC_MEM_Msk GTZC_CFGR4_FMC_MEM_Msk
+#define GTZC_TZIC1_SR4_BKPSRAM_Pos GTZC_CFGR4_BKPSRAM_Pos
+#define GTZC_TZIC1_SR4_BKPSRAM_Msk GTZC_CFGR4_BKPSRAM_Msk
+#define GTZC_TZIC1_SR4_SRAM1_Pos GTZC_CFGR4_SRAM1_Pos
+#define GTZC_TZIC1_SR4_SRAM1_Msk GTZC_CFGR4_SRAM1_Msk
+#define GTZC_TZIC1_SR4_MPCBB1_REG_Pos GTZC_CFGR4_MPCBB1_REG_Pos
+#define GTZC_TZIC1_SR4_MPCBB1_REG_Msk GTZC_CFGR4_MPCBB1_REG_Msk
+#define GTZC_TZIC1_SR4_SRAM2_Pos GTZC_CFGR4_SRAM2_Pos
+#define GTZC_TZIC1_SR4_SRAM2_Msk GTZC_CFGR4_SRAM2_Msk
+#define GTZC_TZIC1_SR4_MPCBB2_REG_Pos GTZC_CFGR4_MPCBB2_REG_Pos
+#define GTZC_TZIC1_SR4_MPCBB2_REG_Msk GTZC_CFGR4_MPCBB2_REG_Msk
+#define GTZC_TZIC1_SR4_SRAM3_Pos GTZC_CFGR4_SRAM3_Pos
+#define GTZC_TZIC1_SR4_SRAM3_Msk GTZC_CFGR4_SRAM3_Msk
+#define GTZC_TZIC1_SR4_MPCBB3_REG_Pos GTZC_CFGR4_MPCBB3_REG_Pos
+#define GTZC_TZIC1_SR4_MPCBB3_REG_Msk GTZC_CFGR4_MPCBB3_REG_Msk
+
+/****************** Bits definition for GTZC_TZIC_FCR1 register ****************/
+#define GTZC_TZIC1_FCR1_TIM2_Pos GTZC_CFGR1_TIM2_Pos
+#define GTZC_TZIC1_FCR1_TIM2_Msk GTZC_CFGR1_TIM2_Msk
+#define GTZC_TZIC1_FCR1_TIM3_Pos GTZC_CFGR1_TIM3_Pos
+#define GTZC_TZIC1_FCR1_TIM3_Msk GTZC_CFGR1_TIM3_Msk
+#define GTZC_TZIC1_FCR1_TIM4_Pos GTZC_CFGR1_TIM4_Pos
+#define GTZC_TZIC1_FCR1_TIM4_Msk GTZC_CFGR1_TIM4_Msk
+#define GTZC_TZIC1_FCR1_TIM5_Pos GTZC_CFGR1_TIM5_Pos
+#define GTZC_TZIC1_FCR1_TIM5_Msk GTZC_CFGR1_TIM5_Msk
+#define GTZC_TZIC1_FCR1_TIM6_Pos GTZC_CFGR1_TIM6_Pos
+#define GTZC_TZIC1_FCR1_TIM6_Msk GTZC_CFGR1_TIM6_Msk
+#define GTZC_TZIC1_FCR1_TIM7_Pos GTZC_CFGR1_TIM7_Pos
+#define GTZC_TZIC1_FCR1_TIM7_Msk GTZC_CFGR1_TIM7_Msk
+#define GTZC_TZIC1_FCR1_TIM12_Pos GTZC_CFGR1_TIM12_Pos
+#define GTZC_TZIC1_FCR1_TIM12_Msk GTZC_CFGR1_TIM12_Msk
+#define GTZC_TZIC1_FCR1_WWDG_Pos GTZC_CFGR1_WWDG_Pos
+#define GTZC_TZIC1_FCR1_WWDG_Msk GTZC_CFGR1_WWDG_Msk
+#define GTZC_TZIC1_FCR1_IWDG_Pos GTZC_CFGR1_IWDG_Pos
+#define GTZC_TZIC1_FCR1_IWDG_Msk GTZC_CFGR1_IWDG_Msk
+#define GTZC_TZIC1_FCR1_SPI2_Pos GTZC_CFGR1_SPI2_Pos
+#define GTZC_TZIC1_FCR1_SPI2_Msk GTZC_CFGR1_SPI2_Msk
+#define GTZC_TZIC1_FCR1_SPI3_Pos GTZC_CFGR1_SPI3_Pos
+#define GTZC_TZIC1_FCR1_SPI3_Msk GTZC_CFGR1_SPI3_Msk
+#define GTZC_TZIC1_FCR1_USART2_Pos GTZC_CFGR1_USART2_Pos
+#define GTZC_TZIC1_FCR1_USART2_Msk GTZC_CFGR1_USART2_Msk
+#define GTZC_TZIC1_FCR1_USART3_Pos GTZC_CFGR1_USART3_Pos
+#define GTZC_TZIC1_FCR1_USART3_Msk GTZC_CFGR1_USART3_Msk
+#define GTZC_TZIC1_FCR1_UART4_Pos GTZC_CFGR1_UART4_Pos
+#define GTZC_TZIC1_FCR1_UART4_Msk GTZC_CFGR1_UART4_Msk
+#define GTZC_TZIC1_FCR1_UART5_Pos GTZC_CFGR1_UART5_Pos
+#define GTZC_TZIC1_FCR1_UART5_Msk GTZC_CFGR1_UART5_Msk
+#define GTZC_TZIC1_FCR1_I2C1_Pos GTZC_CFGR1_I2C1_Pos
+#define GTZC_TZIC1_FCR1_I2C1_Msk GTZC_CFGR1_I2C1_Msk
+#define GTZC_TZIC1_FCR1_I2C2_Pos GTZC_CFGR1_I2C2_Pos
+#define GTZC_TZIC1_FCR1_I2C2_Msk GTZC_CFGR1_I2C2_Msk
+#define GTZC_TZIC1_FCR1_I3C1_Pos GTZC_CFGR1_I3C1_Pos
+#define GTZC_TZIC1_FCR1_I3C1_Msk GTZC_CFGR1_I3C1_Msk
+#define GTZC_TZIC1_FCR1_CRS_Pos GTZC_CFGR1_CRS_Pos
+#define GTZC_TZIC1_FCR1_CRS_Msk GTZC_CFGR1_CRS_Msk
+#define GTZC_TZIC1_FCR1_USART6_Pos GTZC_CFGR1_USART6_Pos
+#define GTZC_TZIC1_FCR1_USART6_Msk GTZC_CFGR1_USART6_Msk
+#define GTZC_TZIC1_FCR1_HDMICEC_Pos GTZC_CFGR1_HDMICEC_Pos
+#define GTZC_TZIC1_FCR1_HDMICEC_Msk GTZC_CFGR1_HDMICEC_Msk
+#define GTZC_TZIC1_FCR1_DAC1_Pos GTZC_CFGR1_DAC1_Pos
+#define GTZC_TZIC1_FCR1_DAC1_Msk GTZC_CFGR1_DAC1_Msk
+#define GTZC_TZIC1_FCR1_DTS_Pos GTZC_CFGR1_DTS_Pos
+#define GTZC_TZIC1_FCR1_DTS_Msk GTZC_CFGR1_DTS_Msk
+#define GTZC_TZIC1_FCR1_LPTIM2_Pos GTZC_CFGR1_LPTIM2_Pos
+#define GTZC_TZIC1_FCR1_LPTIM2_Msk GTZC_CFGR1_LPTIM2_Msk
+
+/******************* Bits definition for GTZC_TZIC_FCR2 register **************/
+#define GTZC_TZIC1_FCR2_FDCAN1_Pos GTZC_CFGR2_FDCAN1_Pos
+#define GTZC_TZIC1_FCR2_FDCAN1_Msk GTZC_CFGR2_FDCAN1_Msk
+#define GTZC_TZIC1_FCR2_FDCAN2_Pos GTZC_CFGR2_FDCAN2_Pos
+#define GTZC_TZIC1_FCR2_FDCAN2_Msk GTZC_CFGR2_FDCAN2_Msk
+#define GTZC_TZIC1_FCR2_UCPD1_Pos GTZC_CFGR2_UCPD1_Pos
+#define GTZC_TZIC1_FCR2_UCPD1_Msk GTZC_CFGR2_UCPD1_Msk
+#define GTZC_TZIC1_FCR2_TIM1_Pos GTZC_CFGR2_TIM1_Pos
+#define GTZC_TZIC1_FCR2_TIM1_Msk GTZC_CFGR2_TIM1_Msk
+#define GTZC_TZIC1_FCR2_SPI1_Pos GTZC_CFGR2_SPI1_Pos
+#define GTZC_TZIC1_FCR2_SPI1_Msk GTZC_CFGR2_SPI1_Msk
+#define GTZC_TZIC1_FCR2_TIM8_Pos GTZC_CFGR2_TIM8_Pos
+#define GTZC_TZIC1_FCR2_TIM8_Msk GTZC_CFGR2_TIM8_Msk
+#define GTZC_TZIC1_FCR2_USART1_Pos GTZC_CFGR2_USART1_Pos
+#define GTZC_TZIC1_FCR2_USART1_Msk GTZC_CFGR2_USART1_Msk
+#define GTZC_TZIC1_FCR2_TIM15_Pos GTZC_CFGR2_TIM15_Pos
+#define GTZC_TZIC1_FCR2_TIM15_Msk GTZC_CFGR2_TIM15_Msk
+#define GTZC_TZIC1_FCR2_SPI4_Pos GTZC_CFGR2_SPI4_Pos
+#define GTZC_TZIC1_FCR2_SPI4_Msk GTZC_CFGR2_SPI4_Msk
+#define GTZC_TZIC1_FCR2_USB_Pos GTZC_CFGR2_USB_Pos
+#define GTZC_TZIC1_FCR2_USB_Msk GTZC_CFGR2_USB_Msk
+#define GTZC_TZIC1_FCR2_LPUART1_Pos GTZC_CFGR2_LPUART1_Pos
+#define GTZC_TZIC1_FCR2_LPUART1_Msk GTZC_CFGR2_LPUART1_Msk
+#define GTZC_TZIC1_FCR2_I2C3_Pos GTZC_CFGR2_I2C3_Pos
+#define GTZC_TZIC1_FCR2_I2C3_Msk GTZC_CFGR2_I2C3_Msk
+#define GTZC_TZIC1_FCR2_LPTIM1_Pos GTZC_CFGR2_LPTIM1_Pos
+#define GTZC_TZIC1_FCR2_LPTIM1_Msk GTZC_CFGR2_LPTIM1_Msk
+
+/****************** Bits definition for GTZC_TZIC_FCR3 register ****************/
+#define GTZC_TZIC1_FCR3_VREFBUF_Pos GTZC_CFGR3_VREFBUF_Pos
+#define GTZC_TZIC1_FCR3_VREFBUF_Msk GTZC_CFGR3_VREFBUF_Msk
+#define GTZC_TZIC1_FCR3_I3C2_Pos GTZC_CFGR3_I3C2_Pos
+#define GTZC_TZIC1_FCR3_I3C2_Msk GTZC_CFGR3_I3C2_Msk
+#define GTZC_TZIC1_FCR3_CRC_Pos GTZC_CFGR3_CRC_Pos
+#define GTZC_TZIC1_FCR3_CRC_Msk GTZC_CFGR3_CRC_Msk
+#define GTZC_TZIC1_FCR3_ICACHE_REG_Pos GTZC_CFGR3_ICACHE_REG_Pos
+#define GTZC_TZIC1_FCR3_ICACHE_REG_Msk GTZC_CFGR3_ICACHE_REG_Msk
+#define GTZC_TZIC1_FCR3_DCACHE1_REG_Pos GTZC_CFGR3_DCACHE1_REG_Pos
+#define GTZC_TZIC1_FCR3_DCACHE1_REG_Msk GTZC_CFGR3_DCACHE1_REG_Msk
+#define GTZC_TZIC1_FCR3_ADC_Pos GTZC_CFGR3_ADC_Pos
+#define GTZC_TZIC1_FCR3_ADC_Msk GTZC_CFGR3_ADC_Msk
+#define GTZC_TZIC1_FCR3_DCMI_PSSI_Pos GTZC_CFGR3_DCMI_PSSI_Pos
+#define GTZC_TZIC1_FCR3_DCMI_PSSI_Msk GTZC_CFGR3_DCMI_PSSI_Msk
+#define GTZC_TZIC1_FCR3_AES_Pos GTZC_CFGR3_AES_Pos
+#define GTZC_TZIC1_FCR3_AES_Msk GTZC_CFGR3_AES_Msk
+#define GTZC_TZIC1_FCR3_HASH_Pos GTZC_CFGR3_HASH_Pos
+#define GTZC_TZIC1_FCR3_HASH_Msk GTZC_CFGR3_HASH_Msk
+#define GTZC_TZIC1_FCR3_RNG_Pos GTZC_CFGR3_RNG_Pos
+#define GTZC_TZIC1_FCR3_RNG_Msk GTZC_CFGR3_RNG_Msk
+#define GTZC_TZIC1_FCR3_SAES_Pos GTZC_CFGR3_SAES_Pos
+#define GTZC_TZIC1_FCR3_SAES_Msk GTZC_CFGR3_SAES_Msk
+#define GTZC_TZIC1_FCR3_PKA_Pos GTZC_CFGR3_PKA_Pos
+#define GTZC_TZIC1_FCR3_PKA_Msk GTZC_CFGR3_PKA_Msk
+#define GTZC_TZIC1_FCR3_SDMMC1_Pos GTZC_CFGR3_SDMMC1_Pos
+#define GTZC_TZIC1_FCR3_SDMMC1_Msk GTZC_CFGR3_SDMMC1_Msk
+#define GTZC_TZIC1_FCR3_FMC_REG_Pos GTZC_CFGR3_FMC_REG_Pos
+#define GTZC_TZIC1_FCR3_FMC_REG_Msk GTZC_CFGR3_FMC_REG_Msk
+#define GTZC_TZIC1_FCR3_OCTOSPI1_Pos GTZC_CFGR3_OCTOSPI1_Pos
+#define GTZC_TZIC1_FCR3_OCTOSPI1_Msk GTZC_CFGR3_OCTOSPI1_Msk
+#define GTZC_TZIC1_FCR3_RAMCFG_Pos GTZC_CFGR3_RAMCFG_Pos
+#define GTZC_TZIC1_FCR3_RAMCFG_Msk GTZC_CFGR3_RAMCFG_Msk
+
+/******************* Bits definition for GTZC_TZIC_FCR4 register ***************/
+#define GTZC_TZIC1_FCR4_GPDMA1_Pos GTZC_CFGR4_GPDMA1_Pos
+#define GTZC_TZIC1_FCR4_GPDMA1_Msk GTZC_CFGR4_GPDMA1_Msk
+#define GTZC_TZIC1_FCR4_GPDMA2_Pos GTZC_CFGR4_GPDMA2_Pos
+#define GTZC_TZIC1_FCR4_GPDMA2_Msk GTZC_CFGR4_GPDMA2_Msk
+#define GTZC_TZIC1_FCR4_FLASH_Pos GTZC_CFGR4_FLASH_Pos
+#define GTZC_TZIC1_FCR4_FLASH_Msk GTZC_CFGR4_FLASH_Msk
+#define GTZC_TZIC1_FCR4_FLASH_REG_Pos GTZC_CFGR4_FLASH_REG_Pos
+#define GTZC_TZIC1_FCR4_FLASH_REG_Msk GTZC_CFGR4_FLASH_REG_Msk
+#define GTZC_TZIC1_FCR4_OTFDEC1_Pos GTZC_CFGR4_OTFDEC1_Pos
+#define GTZC_TZIC1_FCR4_OTFDEC1_Msk GTZC_CFGR4_OTFDEC1_Msk
+#define GTZC_TZIC1_FCR4_SBS_Pos GTZC_CFGR4_SBS_Pos
+#define GTZC_TZIC1_FCR4_SBS_Msk GTZC_CFGR4_SBS_Msk
+#define GTZC_TZIC1_FCR4_RTC_Pos GTZC_CFGR4_RTC_Pos
+#define GTZC_TZIC1_FCR4_RTC_Msk GTZC_CFGR4_RTC_Msk
+#define GTZC_TZIC1_FCR4_TAMP_Pos GTZC_CFGR4_TAMP_Pos
+#define GTZC_TZIC1_FCR4_TAMP_Msk GTZC_CFGR4_TAMP_Msk
+#define GTZC_TZIC1_FCR4_PWR_Pos GTZC_CFGR4_PWR_Pos
+#define GTZC_TZIC1_FCR4_PWR_Msk GTZC_CFGR4_PWR_Msk
+#define GTZC_TZIC1_FCR4_RCC_Pos GTZC_CFGR4_RCC_Pos
+#define GTZC_TZIC1_FCR4_RCC_Msk GTZC_CFGR4_RCC_Msk
+#define GTZC_TZIC1_FCR4_EXTI_Pos GTZC_CFGR4_EXTI_Pos
+#define GTZC_TZIC1_FCR4_EXTI_Msk GTZC_CFGR4_EXTI_Msk
+#define GTZC_TZIC1_FCR4_TZSC_Pos GTZC_CFGR4_TZSC_Pos
+#define GTZC_TZIC1_FCR4_TZSC_Msk GTZC_CFGR4_TZSC_Msk
+#define GTZC_TZIC1_FCR4_TZIC_Pos GTZC_CFGR4_TZIC_Pos
+#define GTZC_TZIC1_FCR4_TZIC_Msk GTZC_CFGR4_TZIC_Msk
+#define GTZC_TZIC1_FCR4_OCTOSPI1_MEM_Pos GTZC_CFGR4_OCTOSPI1_MEM_Pos
+#define GTZC_TZIC1_FCR4_OCTOSPI1_MEM_Msk GTZC_CFGR4_OCTOSPI1_MEM_Msk
+#define GTZC_TZIC1_FCR4_FMC_MEM_Pos GTZC_CFGR4_FMC_MEM_Pos
+#define GTZC_TZIC1_FCR4_FMC_MEM_Msk GTZC_CFGR4_FMC_MEM_Msk
+#define GTZC_TZIC1_FCR4_BKPSRAM_Pos GTZC_CFGR4_BKPSRAM_Pos
+#define GTZC_TZIC1_FCR4_BKPSRAM_Msk GTZC_CFGR4_BKPSRAM_Msk
+#define GTZC_TZIC1_FCR4_SRAM1_Pos GTZC_CFGR4_SRAM1_Pos
+#define GTZC_TZIC1_FCR4_SRAM1_Msk GTZC_CFGR4_SRAM1_Msk
+#define GTZC_TZIC1_FCR4_MPCBB1_REG_Pos GTZC_CFGR4_MPCBB1_REG_Pos
+#define GTZC_TZIC1_FCR4_MPCBB1_REG_Msk GTZC_CFGR4_MPCBB1_REG_Msk
+#define GTZC_TZIC1_FCR4_SRAM2_Pos GTZC_CFGR4_SRAM2_Pos
+#define GTZC_TZIC1_FCR4_SRAM2_Msk GTZC_CFGR4_SRAM2_Msk
+#define GTZC_TZIC1_FCR4_MPCBB2_REG_Pos GTZC_CFGR4_MPCBB2_REG_Pos
+#define GTZC_TZIC1_FCR4_MPCBB2_REG_Msk GTZC_CFGR4_MPCBB2_REG_Msk
+#define GTZC_TZIC1_FCR4_SRAM3_Pos GTZC_CFGR4_SRAM3_Pos
+#define GTZC_TZIC1_FCR4_SRAM3_Msk GTZC_CFGR4_SRAM3_Msk
+#define GTZC_TZIC1_FCR4_MPCBB3_REG_Pos GTZC_CFGR4_MPCBB3_REG_Pos
+#define GTZC_TZIC1_FCR4_MPCBB3_REG_Msk GTZC_CFGR4_MPCBB3_REG_Msk
+
+/******************* Bits definition for GTZC_MPCBB_CR register *****************/
+#define GTZC_MPCBB_CR_GLOCK_Pos (0U)
+#define GTZC_MPCBB_CR_GLOCK_Msk (0x01UL << GTZC_MPCBB_CR_GLOCK_Pos) /*!< 0x00000001 */
+#define GTZC_MPCBB_CR_INVSECSTATE_Pos (30U)
+#define GTZC_MPCBB_CR_INVSECSTATE_Msk (0x01UL << GTZC_MPCBB_CR_INVSECSTATE_Pos) /*!< 0x40000000 */
+#define GTZC_MPCBB_CR_SRWILADIS_Pos (31U)
+#define GTZC_MPCBB_CR_SRWILADIS_Msk (0x01UL << GTZC_MPCBB_CR_SRWILADIS_Pos) /*!< 0x80000000 */
+
+/******************* Bits definition for GTZC_MPCBB_CFGLOCKR1 register ************/
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK0_Pos (0U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK0_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK0_Pos) /*!< 0x00000001 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK1_Pos (1U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK1_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK1_Pos) /*!< 0x00000002 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK2_Pos (2U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK2_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK2_Pos) /*!< 0x00000004 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK3_Pos (3U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK3_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK3_Pos) /*!< 0x00000008 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK4_Pos (4U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK4_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK4_Pos) /*!< 0x00000010 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK5_Pos (5U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK5_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK5_Pos) /*!< 0x00000020 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK6_Pos (6U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK6_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK6_Pos) /*!< 0x00000040 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK7_Pos (7U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK7_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK7_Pos) /*!< 0x00000080 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK8_Pos (8U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK8_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK8_Pos) /*!< 0x00000100 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK9_Pos (9U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK9_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK9_Pos) /*!< 0x00000200 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK10_Pos (10U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK10_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK10_Pos) /*!< 0x00000400 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK11_Pos (11U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK11_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK11_Pos) /*!< 0x00000800 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK12_Pos (12U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK12_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK12_Pos) /*!< 0x00001000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK13_Pos (13U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK13_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK13_Pos) /*!< 0x00002000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK14_Pos (14U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK14_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK14_Pos) /*!< 0x00004000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK15_Pos (15U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK15_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK15_Pos) /*!< 0x00008000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK16_Pos (16U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK16_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK16_Pos) /*!< 0x00010000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK17_Pos (17U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK17_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK17_Pos) /*!< 0x00020000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK18_Pos (18U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK18_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK18_Pos) /*!< 0x00040000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK19_Pos (19U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK19_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK19_Pos) /*!< 0x00080000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK20_Pos (20U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK20_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK20_Pos) /*!< 0x00100000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK21_Pos (21U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK21_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK21_Pos) /*!< 0x00200000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK22_Pos (22U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK22_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK22_Pos) /*!< 0x00400000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK23_Pos (23U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK23_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK23_Pos) /*!< 0x00800000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK24_Pos (24U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK24_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK24_Pos) /*!< 0x01000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK25_Pos (25U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK25_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK25_Pos) /*!< 0x02000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK26_Pos (26U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK26_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK26_Pos) /*!< 0x04000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK27_Pos (27U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK27_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK27_Pos) /*!< 0x08000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK28_Pos (28U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK28_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK28_Pos) /*!< 0x10000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK29_Pos (29U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK29_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK29_Pos) /*!< 0x20000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK30_Pos (30U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK30_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK30_Pos) /*!< 0x40000000 */
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK31_Pos (31U)
+#define GTZC_MPCBB_CFGLOCKR1_SPLCK31_Msk (0x01UL << GTZC_MPCBB_CFGLOCKR1_SPLCK31_Pos) /*!< 0x80000000 */
+
+
+/******************************************************************************/
+/* */
+/* UCPD */
+/* */
+/******************************************************************************/
+/******************** Bits definition for UCPD_CFG1 register *******************/
+#define UCPD_CFG1_HBITCLKDIV_Pos (0U)
+#define UCPD_CFG1_HBITCLKDIV_Msk (0x3FUL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x0000003F */
+#define UCPD_CFG1_HBITCLKDIV UCPD_CFG1_HBITCLKDIV_Msk /*!< Number of cycles (minus 1) for a half bit clock */
+#define UCPD_CFG1_HBITCLKDIV_0 (0x01UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000001 */
+#define UCPD_CFG1_HBITCLKDIV_1 (0x02UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000002 */
+#define UCPD_CFG1_HBITCLKDIV_2 (0x04UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000004 */
+#define UCPD_CFG1_HBITCLKDIV_3 (0x08UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000008 */
+#define UCPD_CFG1_HBITCLKDIV_4 (0x10UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000010 */
+#define UCPD_CFG1_HBITCLKDIV_5 (0x20UL << UCPD_CFG1_HBITCLKDIV_Pos) /*!< 0x00000020 */
+#define UCPD_CFG1_IFRGAP_Pos (6U)
+#define UCPD_CFG1_IFRGAP_Msk (0x1FUL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x000007C0 */
+#define UCPD_CFG1_IFRGAP UCPD_CFG1_IFRGAP_Msk /*!< Clock divider value to generates Interframe gap */
+#define UCPD_CFG1_IFRGAP_0 (0x01UL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x00000040 */
+#define UCPD_CFG1_IFRGAP_1 (0x02UL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x00000080 */
+#define UCPD_CFG1_IFRGAP_2 (0x04UL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x00000100 */
+#define UCPD_CFG1_IFRGAP_3 (0x08UL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x00000200 */
+#define UCPD_CFG1_IFRGAP_4 (0x10UL << UCPD_CFG1_IFRGAP_Pos) /*!< 0x00000400 */
+#define UCPD_CFG1_TRANSWIN_Pos (11U)
+#define UCPD_CFG1_TRANSWIN_Msk (0x1FUL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x0000F800 */
+#define UCPD_CFG1_TRANSWIN UCPD_CFG1_TRANSWIN_Msk /*!< Number of cycles (minus 1) of the half bit clock */
+#define UCPD_CFG1_TRANSWIN_0 (0x01UL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x00000800 */
+#define UCPD_CFG1_TRANSWIN_1 (0x02UL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x00001000 */
+#define UCPD_CFG1_TRANSWIN_2 (0x04UL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x00002000 */
+#define UCPD_CFG1_TRANSWIN_3 (0x08UL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x00004000 */
+#define UCPD_CFG1_TRANSWIN_4 (0x10UL << UCPD_CFG1_TRANSWIN_Pos) /*!< 0x00008000 */
+#define UCPD_CFG1_PSC_UCPDCLK_Pos (17U)
+#define UCPD_CFG1_PSC_UCPDCLK_Msk (0x7UL << UCPD_CFG1_PSC_UCPDCLK_Pos) /*!< 0x000E0000 */
+#define UCPD_CFG1_PSC_UCPDCLK UCPD_CFG1_PSC_UCPDCLK_Msk /*!< Prescaler for UCPDCLK */
+#define UCPD_CFG1_PSC_UCPDCLK_0 (0x1UL << UCPD_CFG1_PSC_UCPDCLK_Pos) /*!< 0x00020000 */
+#define UCPD_CFG1_PSC_UCPDCLK_1 (0x2UL << UCPD_CFG1_PSC_UCPDCLK_Pos) /*!< 0x00040000 */
+#define UCPD_CFG1_PSC_UCPDCLK_2 (0x4UL << UCPD_CFG1_PSC_UCPDCLK_Pos) /*!< 0x00080000 */
+#define UCPD_CFG1_RXORDSETEN_Pos (20U)
+#define UCPD_CFG1_RXORDSETEN_Msk (0x1FFUL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x1FF00000 */
+#define UCPD_CFG1_RXORDSETEN UCPD_CFG1_RXORDSETEN_Msk /*!< Receiver ordered set detection enable */
+#define UCPD_CFG1_RXORDSETEN_0 (0x001UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x00100000 */
+#define UCPD_CFG1_RXORDSETEN_1 (0x002UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x00200000 */
+#define UCPD_CFG1_RXORDSETEN_2 (0x004UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x00400000 */
+#define UCPD_CFG1_RXORDSETEN_3 (0x008UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x00800000 */
+#define UCPD_CFG1_RXORDSETEN_4 (0x010UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x01000000 */
+#define UCPD_CFG1_RXORDSETEN_5 (0x020UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x02000000 */
+#define UCPD_CFG1_RXORDSETEN_6 (0x040UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x04000000 */
+#define UCPD_CFG1_RXORDSETEN_7 (0x080UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x08000000 */
+#define UCPD_CFG1_RXORDSETEN_8 (0x100UL << UCPD_CFG1_RXORDSETEN_Pos) /*!< 0x10000000 */
+#define UCPD_CFG1_TXDMAEN_Pos (29U)
+#define UCPD_CFG1_TXDMAEN_Msk (0x1UL << UCPD_CFG1_TXDMAEN_Pos) /*!< 0x20000000 */
+#define UCPD_CFG1_TXDMAEN UCPD_CFG1_TXDMAEN_Msk /*!< DMA transmission requests enable */
+#define UCPD_CFG1_RXDMAEN_Pos (30U)
+#define UCPD_CFG1_RXDMAEN_Msk (0x1UL << UCPD_CFG1_RXDMAEN_Pos) /*!< 0x40000000 */
+#define UCPD_CFG1_RXDMAEN UCPD_CFG1_RXDMAEN_Msk /*!< DMA reception requests enable */
+#define UCPD_CFG1_UCPDEN_Pos (31U)
+#define UCPD_CFG1_UCPDEN_Msk (0x1UL << UCPD_CFG1_UCPDEN_Pos) /*!< 0x80000000 */
+#define UCPD_CFG1_UCPDEN UCPD_CFG1_UCPDEN_Msk /*!< USB Power Delivery Block Enable */
+
+/******************** Bits definition for UCPD_CFG2 register *******************/
+#define UCPD_CFG2_RXFILTDIS_Pos (0U)
+#define UCPD_CFG2_RXFILTDIS_Msk (0x1UL << UCPD_CFG2_RXFILTDIS_Pos) /*!< 0x00000001 */
+#define UCPD_CFG2_RXFILTDIS UCPD_CFG2_RXFILTDIS_Msk /*!< Enables an Rx pre-filter for the BMC decoder */
+#define UCPD_CFG2_RXFILT2N3_Pos (1U)
+#define UCPD_CFG2_RXFILT2N3_Msk (0x1UL << UCPD_CFG2_RXFILT2N3_Pos) /*!< 0x00000002 */
+#define UCPD_CFG2_RXFILT2N3 UCPD_CFG2_RXFILT2N3_Msk /*!< Controls the sampling method for an Rx pre-filter for the BMC decode */
+#define UCPD_CFG2_FORCECLK_Pos (2U)
+#define UCPD_CFG2_FORCECLK_Msk (0x1UL << UCPD_CFG2_FORCECLK_Pos) /*!< 0x00000004 */
+#define UCPD_CFG2_FORCECLK UCPD_CFG2_FORCECLK_Msk /*!< Controls forcing of the clock request UCPDCLK_REQ */
+#define UCPD_CFG2_WUPEN_Pos (3U)
+#define UCPD_CFG2_WUPEN_Msk (0x1UL << UCPD_CFG2_WUPEN_Pos) /*!< 0x00000008 */
+#define UCPD_CFG2_WUPEN UCPD_CFG2_WUPEN_Msk /*!< Wakeup from STOP enable */
+#define UCPD_CFG2_RXAFILTEN_Pos (8U)
+#define UCPD_CFG2_RXAFILTEN_Msk (0x1UL << UCPD_CFG2_RXAFILTEN_Pos) /*!< 0x00000100 */
+#define UCPD_CFG2_RXAFILTEN UCPD_CFG2_RXAFILTEN_Msk /*!< Rx analog filter enable */
+
+/******************** Bits definition for UCPD_CFG3 register *******************/
+#define UCPD_CFG3_TRIM_CC1_RD_Pos (0U)
+#define UCPD_CFG3_TRIM_CC1_RD_Msk (0xFUL << UCPD_CFG3_TRIM_CC1_RD_Pos) /*!< 0x0000000F */
+#define UCPD_CFG3_TRIM_CC1_RD UCPD_CFG3_TRIM_CC1_RD_Msk /*!< SW trim value for RD resistor (CC1) */
+#define UCPD_CFG3_TRIM_CC1_RP_Pos (9U)
+#define UCPD_CFG3_TRIM_CC1_RP_Msk (0xFUL << UCPD_CFG3_TRIM_CC1_RP_Pos) /*!< 0x00001E00 */
+#define UCPD_CFG3_TRIM_CC1_RP UCPD_CFG3_TRIM_CC1_RP_Msk /*!< SW trim value for RP current sources (CC1) */
+#define UCPD_CFG3_TRIM_CC2_RD_Pos (16U)
+#define UCPD_CFG3_TRIM_CC2_RD_Msk (0xFUL << UCPD_CFG3_TRIM_CC2_RD_Pos) /*!< 0x000F0000 */
+#define UCPD_CFG3_TRIM_CC2_RD UCPD_CFG3_TRIM_CC2_RD_Msk /*!< SW trim value for RD resistor (CC2) */
+#define UCPD_CFG3_TRIM_CC2_RP_Pos (25U)
+#define UCPD_CFG3_TRIM_CC2_RP_Msk (0xFUL << UCPD_CFG3_TRIM_CC2_RP_Pos) /*!< 0x1E000000 */
+#define UCPD_CFG3_TRIM_CC2_RP UCPD_CFG3_TRIM_CC2_RP_Msk /*!< SW trim value for RP current sources (CC2) */
+
+/******************** Bits definition for UCPD_CR register ********************/
+#define UCPD_CR_TXMODE_Pos (0U)
+#define UCPD_CR_TXMODE_Msk (0x3UL << UCPD_CR_TXMODE_Pos) /*!< 0x00000003 */
+#define UCPD_CR_TXMODE UCPD_CR_TXMODE_Msk /*!< Type of Tx packet */
+#define UCPD_CR_TXMODE_0 (0x1UL << UCPD_CR_TXMODE_Pos) /*!< 0x00000001 */
+#define UCPD_CR_TXMODE_1 (0x2UL << UCPD_CR_TXMODE_Pos) /*!< 0x00000002 */
+#define UCPD_CR_TXSEND_Pos (2U)
+#define UCPD_CR_TXSEND_Msk (0x1UL << UCPD_CR_TXSEND_Pos) /*!< 0x00000004 */
+#define UCPD_CR_TXSEND UCPD_CR_TXSEND_Msk /*!< Type of Tx packet */
+#define UCPD_CR_TXHRST_Pos (3U)
+#define UCPD_CR_TXHRST_Msk (0x1UL << UCPD_CR_TXHRST_Pos) /*!< 0x00000008 */
+#define UCPD_CR_TXHRST UCPD_CR_TXHRST_Msk /*!< Command to send a Tx Hard Reset */
+#define UCPD_CR_RXMODE_Pos (4U)
+#define UCPD_CR_RXMODE_Msk (0x1UL << UCPD_CR_RXMODE_Pos) /*!< 0x00000010 */
+#define UCPD_CR_RXMODE UCPD_CR_RXMODE_Msk /*!< Receiver mode */
+#define UCPD_CR_PHYRXEN_Pos (5U)
+#define UCPD_CR_PHYRXEN_Msk (0x1UL << UCPD_CR_PHYRXEN_Pos) /*!< 0x00000020 */
+#define UCPD_CR_PHYRXEN UCPD_CR_PHYRXEN_Msk /*!< Controls enable of USB Power Delivery receiver */
+#define UCPD_CR_PHYCCSEL_Pos (6U)
+#define UCPD_CR_PHYCCSEL_Msk (0x1UL << UCPD_CR_PHYCCSEL_Pos) /*!< 0x00000040 */
+#define UCPD_CR_PHYCCSEL UCPD_CR_PHYCCSEL_Msk /*!< */
+#define UCPD_CR_ANASUBMODE_Pos (7U)
+#define UCPD_CR_ANASUBMODE_Msk (0x3UL << UCPD_CR_ANASUBMODE_Pos) /*!< 0x00000180 */
+#define UCPD_CR_ANASUBMODE UCPD_CR_ANASUBMODE_Msk /*!< Analog PHY sub-mode */
+#define UCPD_CR_ANASUBMODE_0 (0x1UL << UCPD_CR_ANASUBMODE_Pos) /*!< 0x00000080 */
+#define UCPD_CR_ANASUBMODE_1 (0x2UL << UCPD_CR_ANASUBMODE_Pos) /*!< 0x00000100 */
+#define UCPD_CR_ANAMODE_Pos (9U)
+#define UCPD_CR_ANAMODE_Msk (0x1UL << UCPD_CR_ANAMODE_Pos) /*!< 0x00000200 */
+#define UCPD_CR_ANAMODE UCPD_CR_ANAMODE_Msk /*!< Analog PHY working mode */
+#define UCPD_CR_CCENABLE_Pos (10U)
+#define UCPD_CR_CCENABLE_Msk (0x3UL << UCPD_CR_CCENABLE_Pos) /*!< 0x00000C00 */
+#define UCPD_CR_CCENABLE UCPD_CR_CCENABLE_Msk /*!< */
+#define UCPD_CR_CCENABLE_0 (0x1UL << UCPD_CR_CCENABLE_Pos) /*!< 0x00000400 */
+#define UCPD_CR_CCENABLE_1 (0x2UL << UCPD_CR_CCENABLE_Pos) /*!< 0x00000800 */
+#define UCPD_CR_USEEXTPHY_Pos (12U)
+#define UCPD_CR_USEEXTPHY_Msk (0x1UL << UCPD_CR_USEEXTPHY_Pos) /*!< 0x00001000 */
+#define UCPD_CR_USEEXTPHY UCPD_CR_USEEXTPHY_Msk /*!< Controls enable of USB Power Delivery transmitter */
+#define UCPD_CR_CC2VCONNEN_Pos (13U)
+#define UCPD_CR_CC2VCONNEN_Msk (0x1UL << UCPD_CR_CC2VCONNEN_Pos) /*!< 0x00002000 */
+#define UCPD_CR_CC2VCONNEN UCPD_CR_CC2VCONNEN_Msk /*!< VCONN enable for CC2 */
+#define UCPD_CR_CC1VCONNEN_Pos (14U)
+#define UCPD_CR_CC1VCONNEN_Msk (0x1UL << UCPD_CR_CC1VCONNEN_Pos) /*!< 0x00004000 */
+#define UCPD_CR_CC1VCONNEN UCPD_CR_CC1VCONNEN_Msk /*!< VCONN enable for CC1 */
+#define UCPD_CR_DBATEN_Pos (15U)
+#define UCPD_CR_DBATEN_Msk (0x1UL << UCPD_CR_DBATEN_Pos) /*!< 0x00008000 */
+#define UCPD_CR_DBATEN UCPD_CR_DBATEN_Msk /*!< Enable dead battery behavior (Active High) */
+#define UCPD_CR_FRSRXEN_Pos (16U)
+#define UCPD_CR_FRSRXEN_Msk (0x1UL << UCPD_CR_FRSRXEN_Pos) /*!< 0x00010000 */
+#define UCPD_CR_FRSRXEN UCPD_CR_FRSRXEN_Msk /*!< Enable FRS request detection function */
+#define UCPD_CR_FRSTX_Pos (17U)
+#define UCPD_CR_FRSTX_Msk (0x1UL << UCPD_CR_FRSTX_Pos) /*!< 0x00020000 */
+#define UCPD_CR_FRSTX UCPD_CR_FRSTX_Msk /*!< Signal Fast Role Swap request */
+#define UCPD_CR_RDCH_Pos (18U)
+#define UCPD_CR_RDCH_Msk (0x1UL << UCPD_CR_RDCH_Pos) /*!< 0x00040000 */
+#define UCPD_CR_RDCH UCPD_CR_RDCH_Msk /*!< */
+#define UCPD_CR_RPUSBABSENT_Pos (19U)
+#define UCPD_CR_RPUSBABSENT_Msk (0x1UL << UCPD_CR_RPUSBABSENT_Pos) /*!< 0x00080000 */
+#define UCPD_CR_RPUSBABSENT UCPD_CR_RPUSBABSENT_Msk /*!< */
+#define UCPD_CR_CC1TCDIS_Pos (20U)
+#define UCPD_CR_CC1TCDIS_Msk (0x1UL << UCPD_CR_CC1TCDIS_Pos) /*!< 0x00100000 */
+#define UCPD_CR_CC1TCDIS UCPD_CR_CC1TCDIS_Msk /*!< The bit allows the Type-C detector for CC0 to be disabled. */
+#define UCPD_CR_CC2TCDIS_Pos (21U)
+#define UCPD_CR_CC2TCDIS_Msk (0x1UL << UCPD_CR_CC2TCDIS_Pos) /*!< 0x00200000 */
+#define UCPD_CR_CC2TCDIS UCPD_CR_CC2TCDIS_Msk /*!< The bit allows the Type-C detector for CC2 to be disabled. */
+
+/******************** Bits definition for UCPD_IMR register *******************/
+#define UCPD_IMR_TXISIE_Pos (0U)
+#define UCPD_IMR_TXISIE_Msk (0x1UL << UCPD_IMR_TXISIE_Pos) /*!< 0x00000001 */
+#define UCPD_IMR_TXISIE UCPD_IMR_TXISIE_Msk /*!< Enable TXIS interrupt */
+#define UCPD_IMR_TXMSGDISCIE_Pos (1U)
+#define UCPD_IMR_TXMSGDISCIE_Msk (0x1UL << UCPD_IMR_TXMSGDISCIE_Pos) /*!< 0x00000002 */
+#define UCPD_IMR_TXMSGDISCIE UCPD_IMR_TXMSGDISCIE_Msk /*!< Enable TXMSGDISC interrupt */
+#define UCPD_IMR_TXMSGSENTIE_Pos (2U)
+#define UCPD_IMR_TXMSGSENTIE_Msk (0x1UL << UCPD_IMR_TXMSGSENTIE_Pos) /*!< 0x00000004 */
+#define UCPD_IMR_TXMSGSENTIE UCPD_IMR_TXMSGSENTIE_Msk /*!< Enable TXMSGSENT interrupt */
+#define UCPD_IMR_TXMSGABTIE_Pos (3U)
+#define UCPD_IMR_TXMSGABTIE_Msk (0x1UL << UCPD_IMR_TXMSGABTIE_Pos) /*!< 0x00000008 */
+#define UCPD_IMR_TXMSGABTIE UCPD_IMR_TXMSGABTIE_Msk /*!< Enable TXMSGABT interrupt */
+#define UCPD_IMR_HRSTDISCIE_Pos (4U)
+#define UCPD_IMR_HRSTDISCIE_Msk (0x1UL << UCPD_IMR_HRSTDISCIE_Pos) /*!< 0x00000010 */
+#define UCPD_IMR_HRSTDISCIE UCPD_IMR_HRSTDISCIE_Msk /*!< Enable HRSTDISC interrupt */
+#define UCPD_IMR_HRSTSENTIE_Pos (5U)
+#define UCPD_IMR_HRSTSENTIE_Msk (0x1UL << UCPD_IMR_HRSTSENTIE_Pos) /*!< 0x00000020 */
+#define UCPD_IMR_HRSTSENTIE UCPD_IMR_HRSTSENTIE_Msk /*!< Enable HRSTSENT interrupt */
+#define UCPD_IMR_TXUNDIE_Pos (6U)
+#define UCPD_IMR_TXUNDIE_Msk (0x1UL << UCPD_IMR_TXUNDIE_Pos) /*!< 0x00000040 */
+#define UCPD_IMR_TXUNDIE UCPD_IMR_TXUNDIE_Msk /*!< Enable TXUND interrupt */
+#define UCPD_IMR_RXNEIE_Pos (8U)
+#define UCPD_IMR_RXNEIE_Msk (0x1UL << UCPD_IMR_RXNEIE_Pos) /*!< 0x00000100 */
+#define UCPD_IMR_RXNEIE UCPD_IMR_RXNEIE_Msk /*!< Enable RXNE interrupt */
+#define UCPD_IMR_RXORDDETIE_Pos (9U)
+#define UCPD_IMR_RXORDDETIE_Msk (0x1UL << UCPD_IMR_RXORDDETIE_Pos) /*!< 0x00000200 */
+#define UCPD_IMR_RXORDDETIE UCPD_IMR_RXORDDETIE_Msk /*!< Enable RXORDDET interrupt */
+#define UCPD_IMR_RXHRSTDETIE_Pos (10U)
+#define UCPD_IMR_RXHRSTDETIE_Msk (0x1UL << UCPD_IMR_RXHRSTDETIE_Pos) /*!< 0x00000400 */
+#define UCPD_IMR_RXHRSTDETIE UCPD_IMR_RXHRSTDETIE_Msk /*!< Enable RXHRSTDET interrupt */
+#define UCPD_IMR_RXOVRIE_Pos (11U)
+#define UCPD_IMR_RXOVRIE_Msk (0x1UL << UCPD_IMR_RXOVRIE_Pos) /*!< 0x00000800 */
+#define UCPD_IMR_RXOVRIE UCPD_IMR_RXOVRIE_Msk /*!< Enable RXOVR interrupt */
+#define UCPD_IMR_RXMSGENDIE_Pos (12U)
+#define UCPD_IMR_RXMSGENDIE_Msk (0x1UL << UCPD_IMR_RXMSGENDIE_Pos) /*!< 0x00001000 */
+#define UCPD_IMR_RXMSGENDIE UCPD_IMR_RXMSGENDIE_Msk /*!< Enable RXMSGEND interrupt */
+#define UCPD_IMR_TYPECEVT1IE_Pos (14U)
+#define UCPD_IMR_TYPECEVT1IE_Msk (0x1UL << UCPD_IMR_TYPECEVT1IE_Pos) /*!< 0x00004000 */
+#define UCPD_IMR_TYPECEVT1IE UCPD_IMR_TYPECEVT1IE_Msk /*!< Enable TYPECEVT1IE interrupt */
+#define UCPD_IMR_TYPECEVT2IE_Pos (15U)
+#define UCPD_IMR_TYPECEVT2IE_Msk (0x1UL << UCPD_IMR_TYPECEVT2IE_Pos) /*!< 0x00008000 */
+#define UCPD_IMR_TYPECEVT2IE UCPD_IMR_TYPECEVT2IE_Msk /*!< Enable TYPECEVT2IE interrupt */
+#define UCPD_IMR_FRSEVTIE_Pos (20U)
+#define UCPD_IMR_FRSEVTIE_Msk (0x1UL << UCPD_IMR_FRSEVTIE_Pos) /*!< 0x00100000 */
+#define UCPD_IMR_FRSEVTIE UCPD_IMR_FRSEVTIE_Msk /*!< Fast Role Swap interrupt */
+
+/******************** Bits definition for UCPD_SR register ********************/
+#define UCPD_SR_TXIS_Pos (0U)
+#define UCPD_SR_TXIS_Msk (0x1UL << UCPD_SR_TXIS_Pos) /*!< 0x00000001 */
+#define UCPD_SR_TXIS UCPD_SR_TXIS_Msk /*!< Transmit interrupt status */
+#define UCPD_SR_TXMSGDISC_Pos (1U)
+#define UCPD_SR_TXMSGDISC_Msk (0x1UL << UCPD_SR_TXMSGDISC_Pos) /*!< 0x00000002 */
+#define UCPD_SR_TXMSGDISC UCPD_SR_TXMSGDISC_Msk /*!< Transmit message discarded interrupt */
+#define UCPD_SR_TXMSGSENT_Pos (2U)
+#define UCPD_SR_TXMSGSENT_Msk (0x1UL << UCPD_SR_TXMSGSENT_Pos) /*!< 0x00000004 */
+#define UCPD_SR_TXMSGSENT UCPD_SR_TXMSGSENT_Msk /*!< Transmit message sent interrupt */
+#define UCPD_SR_TXMSGABT_Pos (3U)
+#define UCPD_SR_TXMSGABT_Msk (0x1UL << UCPD_SR_TXMSGABT_Pos) /*!< 0x00000008 */
+#define UCPD_SR_TXMSGABT UCPD_SR_TXMSGABT_Msk /*!< Transmit message abort interrupt */
+#define UCPD_SR_HRSTDISC_Pos (4U)
+#define UCPD_SR_HRSTDISC_Msk (0x1UL << UCPD_SR_HRSTDISC_Pos) /*!< 0x00000010 */
+#define UCPD_SR_HRSTDISC UCPD_SR_HRSTDISC_Msk /*!< HRST discarded interrupt */
+#define UCPD_SR_HRSTSENT_Pos (5U)
+#define UCPD_SR_HRSTSENT_Msk (0x1UL << UCPD_SR_HRSTSENT_Pos) /*!< 0x00000020 */
+#define UCPD_SR_HRSTSENT UCPD_SR_HRSTSENT_Msk /*!< HRST sent interrupt */
+#define UCPD_SR_TXUND_Pos (6U)
+#define UCPD_SR_TXUND_Msk (0x1UL << UCPD_SR_TXUND_Pos) /*!< 0x00000040 */
+#define UCPD_SR_TXUND UCPD_SR_TXUND_Msk /*!< Tx data underrun condition interrupt */
+#define UCPD_SR_RXNE_Pos (8U)
+#define UCPD_SR_RXNE_Msk (0x1UL << UCPD_SR_RXNE_Pos) /*!< 0x00000100 */
+#define UCPD_SR_RXNE UCPD_SR_RXNE_Msk /*!< Receive data register not empty interrupt */
+#define UCPD_SR_RXORDDET_Pos (9U)
+#define UCPD_SR_RXORDDET_Msk (0x1UL << UCPD_SR_RXORDDET_Pos) /*!< 0x00000200 */
+#define UCPD_SR_RXORDDET UCPD_SR_RXORDDET_Msk /*!< Rx ordered set (4 K-codes) detected interrupt */
+#define UCPD_SR_RXHRSTDET_Pos (10U)
+#define UCPD_SR_RXHRSTDET_Msk (0x1UL << UCPD_SR_RXHRSTDET_Pos) /*!< 0x00000400 */
+#define UCPD_SR_RXHRSTDET UCPD_SR_RXHRSTDET_Msk /*!< Rx Hard Reset detect interrupt */
+#define UCPD_SR_RXOVR_Pos (11U)
+#define UCPD_SR_RXOVR_Msk (0x1UL << UCPD_SR_RXOVR_Pos) /*!< 0x00000800 */
+#define UCPD_SR_RXOVR UCPD_SR_RXOVR_Msk /*!< Rx data overflow interrupt */
+#define UCPD_SR_RXMSGEND_Pos (12U)
+#define UCPD_SR_RXMSGEND_Msk (0x1UL << UCPD_SR_RXMSGEND_Pos) /*!< 0x00001000 */
+#define UCPD_SR_RXMSGEND UCPD_SR_RXMSGEND_Msk /*!< Rx message received */
+#define UCPD_SR_RXERR_Pos (13U)
+#define UCPD_SR_RXERR_Msk (0x1UL << UCPD_SR_RXERR_Pos) /*!< 0x00002000 */
+#define UCPD_SR_RXERR UCPD_SR_RXERR_Msk /*!< RX Error */
+#define UCPD_SR_TYPECEVT1_Pos (14U)
+#define UCPD_SR_TYPECEVT1_Msk (0x1UL << UCPD_SR_TYPECEVT1_Pos) /*!< 0x00004000 */
+#define UCPD_SR_TYPECEVT1 UCPD_SR_TYPECEVT1_Msk /*!< Type C voltage level event on CC1 */
+#define UCPD_SR_TYPECEVT2_Pos (15U)
+#define UCPD_SR_TYPECEVT2_Msk (0x1UL << UCPD_SR_TYPECEVT2_Pos) /*!< 0x00008000 */
+#define UCPD_SR_TYPECEVT2 UCPD_SR_TYPECEVT2_Msk /*!< Type C voltage level event on CC2 */
+#define UCPD_SR_TYPEC_VSTATE_CC1_Pos (16U)
+#define UCPD_SR_TYPEC_VSTATE_CC1_Msk (0x3UL << UCPD_SR_TYPEC_VSTATE_CC1_Pos) /*!< 0x00030000 */
+#define UCPD_SR_TYPEC_VSTATE_CC1 UCPD_SR_TYPEC_VSTATE_CC1_Msk /*!< Status of DC level on CC1 pin */
+#define UCPD_SR_TYPEC_VSTATE_CC1_0 (0x1UL << UCPD_SR_TYPEC_VSTATE_CC1_Pos) /*!< 0x00010000 */
+#define UCPD_SR_TYPEC_VSTATE_CC1_1 (0x2UL << UCPD_SR_TYPEC_VSTATE_CC1_Pos) /*!< 0x00020000 */
+#define UCPD_SR_TYPEC_VSTATE_CC2_Pos (18U)
+#define UCPD_SR_TYPEC_VSTATE_CC2_Msk (0x3UL << UCPD_SR_TYPEC_VSTATE_CC2_Pos) /*!< 0x000C0000 */
+#define UCPD_SR_TYPEC_VSTATE_CC2 UCPD_SR_TYPEC_VSTATE_CC2_Msk /*!>2) /*!< Input modulus number of bits */
+#define PKA_MONTGOMERY_PARAM_IN_MODULUS ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Compute Montgomery parameter output data */
+#define PKA_MONTGOMERY_PARAM_OUT_PARAMETER ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Output Montgomery parameter */
+
+/* Compute modular exponentiation input data */
+#define PKA_MODULAR_EXP_IN_EXP_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent number of bits */
+#define PKA_MODULAR_EXP_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_EXP_IN_MONTGOMERY_PARAM ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+#define PKA_MODULAR_EXP_IN_EXPONENT_BASE ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the exponentiation */
+#define PKA_MODULAR_EXP_IN_EXPONENT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent to process */
+#define PKA_MODULAR_EXP_IN_MODULUS ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+#define PKA_MODULAR_EXP_PROTECT_IN_EXPONENT_BASE ((0x16C8UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the protected exponentiation */
+#define PKA_MODULAR_EXP_PROTECT_IN_EXPONENT ((0x14B8UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent to process protected exponentiation*/
+#define PKA_MODULAR_EXP_PROTECT_IN_MODULUS ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus to process protected exponentiation */
+#define PKA_MODULAR_EXP_PROTECT_IN_PHI ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input phi to process protected exponentiation */
+
+/* Compute modular exponentiation output data */
+#define PKA_MODULAR_EXP_OUT_RESULT ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Output result of the exponentiation */
+#define PKA_MODULAR_EXP_OUT_ERROR ((0x1298UL - PKA_RAM_OFFSET)>>2) /*!< Output error of the exponentiation */
+#define PKA_MODULAR_EXP_OUT_MONTGOMERY_PARAM ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Output storage area for Montgomery parameter */
+#define PKA_MODULAR_EXP_OUT_EXPONENT_BASE ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Output base of the exponentiation */
+
+/* Compute ECC scalar multiplication input data */
+#define PKA_ECC_SCALAR_MUL_IN_EXP_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input curve prime order n number of bits */
+#define PKA_ECC_SCALAR_MUL_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECC_SCALAR_MUL_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_MOD_GF ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_SCALAR_MUL_IN_K ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input 'k' of KP */
+#define PKA_ECC_SCALAR_MUL_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_SCALAR_MUL_IN_INITIAL_POINT_Y ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_SCALAR_MUL_IN_N_PRIME_ORDER ((0x0F88UL - PKA_RAM_OFFSET)>>2) /*!< Input prime order n */
+
+/* Compute ECC scalar multiplication output data */
+#define PKA_ECC_SCALAR_MUL_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate */
+#define PKA_ECC_SCALAR_MUL_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate */
+#define PKA_ECC_SCALAR_MUL_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+/* Point check input data */
+#define PKA_POINT_CHECK_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_POINT_CHECK_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_POINT_CHECK_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_POINT_CHECK_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_POINT_CHECK_IN_MOD_GF ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_POINT_CHECK_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_POINT_CHECK_IN_INITIAL_POINT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_POINT_CHECK_IN_MONTGOMERY_PARAM ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+
+/* Point check output data */
+#define PKA_POINT_CHECK_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output error */
+
+/* ECDSA signature input data */
+#define PKA_ECDSA_SIGN_IN_ORDER_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input order number of bits */
+#define PKA_ECDSA_SIGN_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECDSA_SIGN_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECDSA_SIGN_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECDSA_SIGN_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_ECDSA_SIGN_IN_MOD_GF ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECDSA_SIGN_IN_K ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input k value of the ECDSA */
+#define PKA_ECDSA_SIGN_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECDSA_SIGN_IN_INITIAL_POINT_Y ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECDSA_SIGN_IN_HASH_E ((0x0FE8UL - PKA_RAM_OFFSET)>>2) /*!< Input e, hash of the message */
+#define PKA_ECDSA_SIGN_IN_PRIVATE_KEY_D ((0x0F28UL - PKA_RAM_OFFSET)>>2) /*!< Input d, private key */
+#define PKA_ECDSA_SIGN_IN_ORDER_N ((0x0F88UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+
+/* ECDSA signature output data */
+#define PKA_ECDSA_SIGN_OUT_ERROR ((0x0FE0UL - PKA_RAM_OFFSET)>>2) /*!< Output error */
+#define PKA_ECDSA_SIGN_OUT_SIGNATURE_R ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Output signature r */
+#define PKA_ECDSA_SIGN_OUT_SIGNATURE_S ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Output signature s */
+#define PKA_ECDSA_SIGN_OUT_FINAL_POINT_X ((0x1400UL - PKA_RAM_OFFSET)>>2) /*!< Extended output result point X coordinate */
+#define PKA_ECDSA_SIGN_OUT_FINAL_POINT_Y ((0x1458UL - PKA_RAM_OFFSET)>>2) /*!< Extended output result point Y coordinate */
+
+
+/* ECDSA verification input data */
+#define PKA_ECDSA_VERIF_IN_ORDER_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input order number of bits */
+#define PKA_ECDSA_VERIF_IN_MOD_NB_BITS ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECDSA_VERIF_IN_A_COEFF_SIGN ((0x0468UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECDSA_VERIF_IN_A_COEFF ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECDSA_VERIF_IN_MOD_GF ((0x04D0UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECDSA_VERIF_IN_INITIAL_POINT_X ((0x0678UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECDSA_VERIF_IN_INITIAL_POINT_Y ((0x06D0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_X ((0x12F8UL - PKA_RAM_OFFSET)>>2) /*!< Input public key point X coordinate */
+#define PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_Y ((0x1350UL - PKA_RAM_OFFSET)>>2) /*!< Input public key point Y coordinate */
+#define PKA_ECDSA_VERIF_IN_SIGNATURE_R ((0x10E0UL - PKA_RAM_OFFSET)>>2) /*!< Input r, part of the signature */
+#define PKA_ECDSA_VERIF_IN_SIGNATURE_S ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input s, part of the signature */
+#define PKA_ECDSA_VERIF_IN_HASH_E ((0x13A8UL - PKA_RAM_OFFSET)>>2) /*!< Input e, hash of the message */
+#define PKA_ECDSA_VERIF_IN_ORDER_N ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+
+/* ECDSA verification output data */
+#define PKA_ECDSA_VERIF_OUT_RESULT ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* RSA CRT exponentiation input data */
+#define PKA_RSA_CRT_EXP_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operands number of bits */
+#define PKA_RSA_CRT_EXP_IN_DP_CRT ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input Dp CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_DQ_CRT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Input Dq CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_QINV_CRT ((0x0948UL - PKA_RAM_OFFSET)>>2) /*!< Input qInv CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_PRIME_P ((0x0B60UL - PKA_RAM_OFFSET)>>2) /*!< Input Prime p */
+#define PKA_RSA_CRT_EXP_IN_PRIME_Q ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input Prime q */
+#define PKA_RSA_CRT_EXP_IN_EXPONENT_BASE ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the exponentiation */
+
+/* RSA CRT exponentiation output data */
+#define PKA_RSA_CRT_EXP_OUT_RESULT ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular reduction input data */
+#define PKA_MODULAR_REDUC_IN_OP_LENGTH ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input operand length */
+#define PKA_MODULAR_REDUC_IN_MOD_LENGTH ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus length */
+#define PKA_MODULAR_REDUC_IN_OPERAND ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand */
+#define PKA_MODULAR_REDUC_IN_MODULUS ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Modular reduction output data */
+#define PKA_MODULAR_REDUC_OUT_RESULT ((0xE78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic addition input data */
+#define PKA_ARITHMETIC_ADD_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_ADD_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_ADD_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic addition output data */
+#define PKA_ARITHMETIC_ADD_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic subtraction input data */
+#define PKA_ARITHMETIC_SUB_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_SUB_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_SUB_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic subtraction output data */
+#define PKA_ARITHMETIC_SUB_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic multiplication input data */
+#define PKA_ARITHMETIC_MUL_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_MUL_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_MUL_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic multiplication output data */
+#define PKA_ARITHMETIC_MUL_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Comparison input data */
+#define PKA_COMPARISON_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_COMPARISON_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_COMPARISON_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Comparison output data */
+#define PKA_COMPARISON_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular addition input data */
+#define PKA_MODULAR_ADD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_ADD_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_ADD_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MODULAR_ADD_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op3 (modulus) */
+
+/* Modular addition output data */
+#define PKA_MODULAR_ADD_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular inversion input data */
+#define PKA_MODULAR_INV_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_INV_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_INV_IN_OP2_MOD ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 (modulus) */
+
+/* Modular inversion output data */
+#define PKA_MODULAR_INV_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular subtraction input data */
+#define PKA_MODULAR_SUB_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_SUB_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_SUB_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MODULAR_SUB_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op3 */
+
+/* Modular subtraction output data */
+#define PKA_MODULAR_SUB_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Montgomery multiplication input data */
+#define PKA_MONTGOMERY_MUL_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MONTGOMERY_MUL_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MONTGOMERY_MUL_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MONTGOMERY_MUL_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Montgomery multiplication output data */
+#define PKA_MONTGOMERY_MUL_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Generic Arithmetic input data */
+#define PKA_ARITHMETIC_ALL_OPS_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP3 ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Generic Arithmetic output data */
+#define PKA_ARITHMETIC_ALL_OPS_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result for arithmetic operations */
+
+/* Compute ECC complete addition input data */
+#define PKA_ECC_COMPLETE_ADD_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_COMPLETE_ADD_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_COMPLETE_ADD_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve '|a|' coefficient */
+#define PKA_ECC_COMPLETE_ADD_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_X ((0x0628UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_Y ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_Z ((0x06D8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Z coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_X ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q X coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_Y ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_Z ((0x07E0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Z coordinate */
+
+/* Compute ECC complete addition output data */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_X ((0x0D60UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_Y ((0x0DB8UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_Z ((0x0E10UL - PKA_RAM_OFFSET)>>2) /*!< Output result Z coordinate */
+
+/* Compute ECC double base ladder input data */
+#define PKA_ECC_DOUBLE_LADDER_IN_PRIME_ORDER_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+#define PKA_ECC_DOUBLE_LADDER_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_DOUBLE_LADDER_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve '|a|' coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_DOUBLE_LADDER_IN_K_INTEGER ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input 'k' integer coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_M_INTEGER ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input 'm' integer coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_X ((0x0628UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_Y ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_Z ((0x06D8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Z coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_X ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q X coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_Y ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Y coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_Z ((0x07E0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Z coordinate */
+
+/* Compute ECC double base ladder output data */
+#define PKA_ECC_DOUBLE_LADDER_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate (affine coordinate) */
+#define PKA_ECC_DOUBLE_LADDER_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate (affine coordinate) */
+#define PKA_ECC_DOUBLE_LADDER_OUT_ERROR ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+/* Compute ECC projective to affine conversion input data */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_X ((0x0D60UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P X coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_Y ((0x0DB8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P Y coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_Z ((0x0E10UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P Z coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MONTGOMERY_PARAM_R2 ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+
+/* Compute ECC projective to affine conversion output data */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result x affine coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result y affine coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+
+/** @addtogroup STM32H5xx_Peripheral_Exported_macros
+ * @{
+ */
+
+/******************************* ADC Instances ********************************/
+#define IS_ADC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == ADC1_NS) || \
+ ((INSTANCE) == ADC1_S)|| \
+ ((INSTANCE) == ADC2_NS)|| \
+ ((INSTANCE) == ADC2_S))
+
+#define IS_ADC_MULTIMODE_MASTER_INSTANCE(INSTANCE) (((INSTANCE) == ADC1_NS) || \
+ ((INSTANCE) == ADC1_S))
+
+
+#define IS_ADC_COMMON_INSTANCE(INSTANCE) (((INSTANCE) == ADC12_COMMON_NS) || \
+ ((INSTANCE) == ADC12_COMMON_S))
+/******************************* AES Instances ********************************/
+#define IS_AES_ALL_INSTANCE(INSTANCE) (((INSTANCE) == AES_NS) || ((INSTANCE) == AES_S))
+
+/******************************* PKA Instances ********************************/
+#define IS_PKA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == PKA_NS) || ((INSTANCE) == PKA_S))
+
+/******************************* CRC Instances ********************************/
+#define IS_CRC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == CRC_NS) || ((INSTANCE) == CRC_S))
+
+/******************************* DAC Instances ********************************/
+#define IS_DAC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DAC1_NS) || ((INSTANCE) == DAC1_S))
+
+/******************************* DCACHE Instances *****************************/
+#define IS_DCACHE_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DCACHE1_NS) || ((INSTANCE) == DCACHE1_S))
+
+/******************************* DELAYBLOCK Instances *******************************/
+#define IS_DLYB_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DLYB_SDMMC1_NS) || \
+ ((INSTANCE) == DLYB_SDMMC1_S) || \
+ ((INSTANCE) == DLYB_OCTOSPI1_NS) || \
+ ((INSTANCE) == DLYB_OCTOSPI1_S ))
+
+/******************************** DMA Instances *******************************/
+#define IS_DMA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel0_NS) || ((INSTANCE) == GPDMA1_Channel0_S) || \
+ ((INSTANCE) == GPDMA1_Channel1_NS) || ((INSTANCE) == GPDMA1_Channel1_S) || \
+ ((INSTANCE) == GPDMA1_Channel2_NS) || ((INSTANCE) == GPDMA1_Channel2_S) || \
+ ((INSTANCE) == GPDMA1_Channel3_NS) || ((INSTANCE) == GPDMA1_Channel3_S) || \
+ ((INSTANCE) == GPDMA1_Channel4_NS) || ((INSTANCE) == GPDMA1_Channel4_S) || \
+ ((INSTANCE) == GPDMA1_Channel5_NS) || ((INSTANCE) == GPDMA1_Channel5_S) || \
+ ((INSTANCE) == GPDMA1_Channel6_NS) || ((INSTANCE) == GPDMA1_Channel6_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel0_NS) || ((INSTANCE) == GPDMA2_Channel0_S) || \
+ ((INSTANCE) == GPDMA2_Channel1_NS) || ((INSTANCE) == GPDMA2_Channel1_S) || \
+ ((INSTANCE) == GPDMA2_Channel2_NS) || ((INSTANCE) == GPDMA2_Channel2_S) || \
+ ((INSTANCE) == GPDMA2_Channel3_NS) || ((INSTANCE) == GPDMA2_Channel3_S) || \
+ ((INSTANCE) == GPDMA2_Channel4_NS) || ((INSTANCE) == GPDMA2_Channel4_S) || \
+ ((INSTANCE) == GPDMA2_Channel5_NS) || ((INSTANCE) == GPDMA2_Channel5_S) || \
+ ((INSTANCE) == GPDMA2_Channel6_NS) || ((INSTANCE) == GPDMA2_Channel6_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+#define IS_GPDMA_INSTANCE(INSTANCE) IS_DMA_ALL_INSTANCE(INSTANCE)
+
+#define IS_DMA_2D_ADDRESSING_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel6_NS) || ((INSTANCE) == GPDMA1_Channel6_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel6_NS) || ((INSTANCE) == GPDMA2_Channel6_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+#define IS_DMA_PFREQ_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel0_NS) || ((INSTANCE) == GPDMA1_Channel0_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel0_NS) || ((INSTANCE) == GPDMA2_Channel0_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+/****************************** OTFDEC Instances ********************************/
+#define IS_OTFDEC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == OTFDEC1_NS) || ((INSTANCE) == OTFDEC1_S))
+
+/****************************** RAMCFG Instances ********************************/
+#define IS_RAMCFG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM1_NS) || ((INSTANCE) == RAMCFG_SRAM1_S) || \
+ ((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S) || \
+ ((INSTANCE) == RAMCFG_SRAM3_NS) || ((INSTANCE) == RAMCFG_SRAM3_S) || \
+ ((INSTANCE) == RAMCFG_BKPRAM_NS) || ((INSTANCE) == RAMCFG_BKPRAM_S))
+
+/***************************** RAMCFG ECC Instances *****************************/
+#define IS_RAMCFG_ECC_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S) || \
+ ((INSTANCE) == RAMCFG_SRAM3_NS) || ((INSTANCE) == RAMCFG_SRAM3_S) || \
+ ((INSTANCE) == RAMCFG_BKPRAM_NS) || ((INSTANCE) == RAMCFG_BKPRAM_S))
+
+/************************ RAMCFG Write Protection Instances *********************/
+#define IS_RAMCFG_WP_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S))
+
+/******************************* GPIO Instances *******************************/
+#define IS_GPIO_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPIOA_NS) || ((INSTANCE) == GPIOA_S) || \
+ ((INSTANCE) == GPIOB_NS) || ((INSTANCE) == GPIOB_S) || \
+ ((INSTANCE) == GPIOC_NS) || ((INSTANCE) == GPIOC_S) || \
+ ((INSTANCE) == GPIOD_NS) || ((INSTANCE) == GPIOD_S) || \
+ ((INSTANCE) == GPIOE_NS) || ((INSTANCE) == GPIOE_S) || \
+ ((INSTANCE) == GPIOF_NS) || ((INSTANCE) == GPIOF_S) || \
+ ((INSTANCE) == GPIOG_NS) || ((INSTANCE) == GPIOG_S) || \
+ ((INSTANCE) == GPIOH_NS) || ((INSTANCE) == GPIOH_S))
+
+/******************************* DCMI Instances *******************************/
+#define IS_DCMI_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == DCMI_NS) || ((__INSTANCE__) == DCMI_S))
+
+/******************************* PSSI Instances *******************************/
+#define IS_PSSI_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == PSSI_NS) || ((__INSTANCE__) == PSSI_S))
+
+/******************************* DTS Instances *******************************/
+#define IS_DTS_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == DTS_NS) || ((__INSTANCE__) == DTS_S))
+
+/******************************* GPIO AF Instances ****************************/
+/* On H5, all GPIO Bank support AF */
+#define IS_GPIO_AF_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)
+
+/**************************** GPIO Lock Instances *****************************/
+/* On H5, all GPIO Bank support the Lock mechanism */
+#define IS_GPIO_LOCK_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)
+
+/******************************** I2C Instances *******************************/
+#define IS_I2C_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1_NS) || ((INSTANCE) == I2C1_S) || \
+ ((INSTANCE) == I2C2_NS) || ((INSTANCE) == I2C2_S) || \
+ ((INSTANCE) == I2C3_NS) || ((INSTANCE) == I2C3_S))
+
+/****************** I2C Instances : wakeup capability from stop modes *********/
+#define IS_I2C_WAKEUP_FROMSTOP_INSTANCE(INSTANCE) IS_I2C_ALL_INSTANCE(INSTANCE)
+
+/******************************** I3C Instances *******************************/
+#define IS_I3C_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I3C1_NS) || ((INSTANCE) == I3C1_S) || \
+ ((INSTANCE) == I3C2_NS) || ((INSTANCE) == I3C2_S))
+
+/******************************* OSPI Instances *******************************/
+#define IS_OSPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == OCTOSPI1_NS) || ((INSTANCE) == OCTOSPI1_S))
+
+/******************************* RNG Instances ********************************/
+#define IS_RNG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RNG_NS) || ((INSTANCE) == RNG_S))
+
+/****************************** RTC Instances *********************************/
+#define IS_RTC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RTC_NS) || ((INSTANCE) == RTC_S))
+
+/****************************** SDMMC Instances *******************************/
+#define IS_SDMMC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SDMMC1_NS) || ((INSTANCE) == SDMMC1_S))
+
+/****************************** FDCAN Instances *******************************/
+#define IS_FDCAN_ALL_INSTANCE(INSTANCE) (((INSTANCE) == FDCAN1_NS) || ((INSTANCE) == FDCAN1_S) || \
+ ((INSTANCE) == FDCAN2_NS) || ((INSTANCE) == FDCAN2_S))
+
+/****************************** SMBUS Instances *******************************/
+#define IS_SMBUS_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1_NS) || ((INSTANCE) == I2C1_S) || \
+ ((INSTANCE) == I2C2_NS) || ((INSTANCE) == I2C2_S) || \
+ ((INSTANCE) == I2C3_NS) || ((INSTANCE) == I2C3_S))
+
+/******************************** SPI Instances *******************************/
+#define IS_SPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1_NS) || ((INSTANCE) == SPI1_S) || \
+ ((INSTANCE) == SPI2_NS) || ((INSTANCE) == SPI2_S) || \
+ ((INSTANCE) == SPI3_NS) || ((INSTANCE) == SPI3_S) || \
+ ((INSTANCE) == SPI4_NS) || ((INSTANCE) == SPI4_S))
+
+#define IS_SPI_LIMITED_INSTANCE(INSTANCE) (((INSTANCE) == SPI4_NS) || ((INSTANCE) == SPI4_S))
+
+#define IS_SPI_FULL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1_NS) || ((INSTANCE) == SPI1_S) || \
+ ((INSTANCE) == SPI2_NS) || ((INSTANCE) == SPI2_S) || \
+ ((INSTANCE) == SPI3_NS) || ((INSTANCE) == SPI3_S))
+
+/****************** LPTIM Instances : All supported instances *****************/
+#define IS_LPTIM_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/****************** LPTIM Instances : DMA supported instances *****************/
+#define IS_LPTIM_DMA_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/************* LPTIM Instances : at least 1 capture/compare channel ***********/
+#define IS_LPTIM_CC1_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/************* LPTIM Instances : at least 2 capture/compare channel ***********/
+#define IS_LPTIM_CC2_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/****************** LPTIM Instances : supporting encoder interface **************/
+#define IS_LPTIM_ENCODER_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/****************** LPTIM Instances : supporting Input Capture **************/
+#define IS_LPTIM_INPUT_CAPTURE_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S))
+
+/****************** TIM Instances : All supported instances *******************/
+#define IS_TIM_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting 32 bits counter ****************/
+#define IS_TIM_32B_COUNTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S))
+
+/****************** TIM Instances : supporting the break function *************/
+#define IS_TIM_BREAK_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/************** TIM Instances : supporting Break source selection *************/
+#define IS_TIM_BREAKSOURCE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting 2 break inputs *****************/
+#define IS_TIM_BKIN2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************* TIM Instances : at least 1 capture/compare channel *************/
+#define IS_TIM_CC1_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/************ TIM Instances : at least 2 capture/compare channels *************/
+#define IS_TIM_CC2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/************ TIM Instances : at least 3 capture/compare channels *************/
+#define IS_TIM_CC3_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************ TIM Instances : at least 4 capture/compare channels *************/
+#define IS_TIM_CC4_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : at least 5 capture/compare channels *******/
+#define IS_TIM_CC5_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : at least 6 capture/compare channels *******/
+#define IS_TIM_CC6_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : DMA requests generation (TIMx_DIER.UDE) ***/
+#define IS_TIM_DMA_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/************ TIM Instances : DMA requests generation (TIMx_DIER.CCxDE) *******/
+#define IS_TIM_DMA_CC_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/******************** TIM Instances : DMA burst feature ***********************/
+#define IS_TIM_DMABURST_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/******************* TIM Instances : output(s) available **********************/
+#define IS_TIM_CCX_INSTANCE(INSTANCE, CHANNEL) \
+ (((((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4) || \
+ ((CHANNEL) == TIM_CHANNEL_5) || \
+ ((CHANNEL) == TIM_CHANNEL_6))) \
+ || \
+ ((((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4) || \
+ ((CHANNEL) == TIM_CHANNEL_5) || \
+ ((CHANNEL) == TIM_CHANNEL_6))) \
+ || \
+ ((((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2))) \
+ || \
+ ((((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2))))
+
+/****************** TIM Instances : supporting complementary output(s) ********/
+#define IS_TIM_CCXN_INSTANCE(INSTANCE, CHANNEL) \
+ (((((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S)) && \
+ ((CHANNEL) == TIM_CHANNEL_1)))
+
+/****************** TIM Instances : supporting clock division *****************/
+#define IS_TIM_CLOCK_DIVISION_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****** TIM Instances : supporting external clock mode 1 for ETRF input *******/
+#define IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****** TIM Instances : supporting external clock mode 2 for ETRF input *******/
+#define IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting external clock mode 1 for TIX inputs*/
+#define IS_TIM_CLOCKSOURCE_TIX_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting internal trigger inputs(ITRX) *******/
+#define IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting combined 3-phase PWM mode ******/
+#define IS_TIM_COMBINED3PHASEPWM_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting commutation event generation ***/
+#define IS_TIM_COMMUTATION_EVENT_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting counting mode selection ********/
+#define IS_TIM_COUNTER_MODE_SELECT_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting encoder interface **************/
+#define IS_TIM_ENCODER_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting Hall sensor interface **********/
+#define IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/**************** TIM Instances : external trigger input available ************/
+#define IS_TIM_ETR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************* TIM Instances : supporting ETR source selection ***************/
+#define IS_TIM_ETRSEL_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****** TIM Instances : Master mode available (TIMx_CR2.MMS available )********/
+#define IS_TIM_MASTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/*********** TIM Instances : Slave mode available (TIMx_SMCR available )*******/
+#define IS_TIM_SLAVE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting OCxREF clear *******************/
+#define IS_TIM_OCXREF_CLEAR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : remapping capability **********************/
+#define IS_TIM_REMAP_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting repetition counter *************/
+#define IS_TIM_REPETITION_COUNTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting ADC triggering through TRGO2 ***/
+#define IS_TIM_TRGO2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/******************* TIM Instances : Timer input XOR function *****************/
+#define IS_TIM_XOR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/******************* TIM Instances : Timer input selection ********************/
+#define IS_TIM_TISEL_INSTANCE(INSTANCE) (((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S)|| \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : Advanced timer instances *******************/
+#define IS_TIM_ADVANCED_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting synchronization ****************/
+#define IS_TIM_SYNCHRO_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1_NS) || ((__INSTANCE__) == TIM1_S) || \
+ ((__INSTANCE__) == TIM2_NS) || ((__INSTANCE__) == TIM2_S) || \
+ ((__INSTANCE__) == TIM3_NS) || ((__INSTANCE__) == TIM3_S) || \
+ ((__INSTANCE__) == TIM4_NS) || ((__INSTANCE__) == TIM4_S) || \
+ ((__INSTANCE__) == TIM5_NS) || ((__INSTANCE__) == TIM5_S) || \
+ ((__INSTANCE__) == TIM6_NS) || ((__INSTANCE__) == TIM6_S) || \
+ ((__INSTANCE__) == TIM7_NS) || ((__INSTANCE__) == TIM7_S) || \
+ ((__INSTANCE__) == TIM8_NS) || ((__INSTANCE__) == TIM8_S) || \
+ ((__INSTANCE__) == TIM12_NS) || ((__INSTANCE__) == TIM12_S)|| \
+ ((__INSTANCE__) == TIM15_NS) || ((__INSTANCE__) == TIM15_S))
+
+/******************** USART Instances : Synchronous mode **********************/
+#define IS_USART_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/******************** UART Instances : Asynchronous mode **********************/
+#define IS_UART_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/*********************** UART Instances : FIFO mode ***************************/
+#define IS_UART_FIFO_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/*********************** UART Instances : SPI Slave mode **********************/
+#define IS_UART_SPI_SLAVE_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/******************************** I2S Instances *******************************/
+#define IS_I2S_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1) || \
+ ((INSTANCE) == SPI2) || \
+ ((INSTANCE) == SPI3))
+
+/****************** UART Instances : Auto Baud Rate detection ****************/
+#define IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/****************** UART Instances : Driver Enable *****************/
+#define IS_UART_DRIVER_ENABLE_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** UART Instances : Half-Duplex mode **********************/
+#define IS_UART_HALFDUPLEX_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/****************** UART Instances : Hardware Flow control ********************/
+#define IS_UART_HWFLOW_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** UART Instances : LIN mode **********************/
+#define IS_UART_LIN_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/******************** UART Instances : Wake-up from Stop mode **********************/
+#define IS_UART_WAKEUP_FROMSTOP_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/*********************** UART Instances : IRDA mode ***************************/
+#define IS_IRDA_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/********************* USART Instances : Smard card mode ***********************/
+#define IS_SMARTCARD_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S))
+
+/******************** LPUART Instance *****************************************/
+#define IS_LPUART_INSTANCE(INSTANCE) (((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** CEC Instance *****************************************/
+#define IS_CEC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == CEC_NS) || ((INSTANCE) == CEC_S))
+
+/****************************** IWDG Instances ********************************/
+#define IS_IWDG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == IWDG_NS) || ((INSTANCE) == IWDG_S))
+
+/****************************** WWDG Instances ********************************/
+#define IS_WWDG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == WWDG_NS) || ((INSTANCE) == WWDG_S))
+
+/****************************** UCPD Instances ********************************/
+#define IS_UCPD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == UCPD1_NS) || ((INSTANCE) == UCPD1_S))
+
+/******************************* USB DRD FS HCD Instances *************************/
+#define IS_HCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_DRD_FS_NS) || ((INSTANCE) == USB_DRD_FS_S))
+
+/******************************* USB DRD FS PCD Instances *************************/
+#define IS_PCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_DRD_FS_NS) || ((INSTANCE) == USB_DRD_FS_S))
+
+/** @} */ /* End of group STM32H5xx_Peripheral_Exported_macros */
+
+/** @} */ /* End of group STM32H533xx */
+
+/** @} */ /* End of group ST */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* STM32H533xx_H */
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h562xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h562xx.h
new file mode 100644
index 000000000..9cc7a5572
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h562xx.h
@@ -0,0 +1,21869 @@
+/**
+ ******************************************************************************
+ * @file stm32h562xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H562xx Device Peripheral Access Layer Header File.
+ *
+ * This file contains:
+ * - Data structures and the address mapping for all peripherals
+ * - Peripheral's registers declarations and bits definition
+ * - Macros to access peripheral's registers hardware
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2023 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.
+ *
+ ******************************************************************************
+ */
+
+#ifndef STM32H562xx_H
+#define STM32H562xx_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** @addtogroup ST
+ * @{
+ */
+
+
+/** @addtogroup STM32H562xx
+ * @{
+ */
+
+
+/** @addtogroup Configuration_of_CMSIS
+ * @{
+ */
+
+
+/* =========================================================================================================================== */
+/* ================ Interrupt Number Definition ================ */
+/* =========================================================================================================================== */
+
+typedef enum
+{
+/* ======================================= ARM Cortex-M33 Specific Interrupt Numbers ======================================= */
+ Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */
+ NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */
+ HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */
+ MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation
+ and No Match */
+ BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory
+ related Fault */
+ UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */
+ SecureFault_IRQn = -9, /*!< -9 Secure Fault */
+ SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */
+ DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */
+ PendSV_IRQn = -2, /*!< -2 Pendable request for system service */
+ SysTick_IRQn = -1, /*!< -1 System Tick Timer */
+
+/* =========================================== STM32H562xx Specific Interrupt Numbers ====================================== */
+ WWDG_IRQn = 0, /*!< Window WatchDog interrupt */
+ PVD_AVD_IRQn = 1, /*!< PVD/AVD through EXTI Line detection Interrupt */
+ RTC_IRQn = 2, /*!< RTC non-secure interrupt */
+ RTC_S_IRQn = 3, /*!< RTC secure interrupt */
+ TAMP_IRQn = 4, /*!< Tamper global interrupt */
+ RAMCFG_IRQn = 5, /*!< RAMCFG global interrupt */
+ FLASH_IRQn = 6, /*!< FLASH non-secure global interrupt */
+ FLASH_S_IRQn = 7, /*!< FLASH secure global interrupt */
+ GTZC_IRQn = 8, /*!< Global TrustZone Controller interrupt */
+ RCC_IRQn = 9, /*!< RCC non secure global interrupt */
+ RCC_S_IRQn = 10, /*!< RCC secure global interrupt */
+ EXTI0_IRQn = 11, /*!< EXTI Line0 interrupt */
+ EXTI1_IRQn = 12, /*!< EXTI Line1 interrupt */
+ EXTI2_IRQn = 13, /*!< EXTI Line2 interrupt */
+ EXTI3_IRQn = 14, /*!< EXTI Line3 interrupt */
+ EXTI4_IRQn = 15, /*!< EXTI Line4 interrupt */
+ EXTI5_IRQn = 16, /*!< EXTI Line5 interrupt */
+ EXTI6_IRQn = 17, /*!< EXTI Line6 interrupt */
+ EXTI7_IRQn = 18, /*!< EXTI Line7 interrupt */
+ EXTI8_IRQn = 19, /*!< EXTI Line8 interrupt */
+ EXTI9_IRQn = 20, /*!< EXTI Line9 interrupt */
+ EXTI10_IRQn = 21, /*!< EXTI Line10 interrupt */
+ EXTI11_IRQn = 22, /*!< EXTI Line11 interrupt */
+ EXTI12_IRQn = 23, /*!< EXTI Line12 interrupt */
+ EXTI13_IRQn = 24, /*!< EXTI Line13 interrupt */
+ EXTI14_IRQn = 25, /*!< EXTI Line14 interrupt */
+ EXTI15_IRQn = 26, /*!< EXTI Line15 interrupt */
+ GPDMA1_Channel0_IRQn = 27, /*!< GPDMA1 Channel 0 global interrupt */
+ GPDMA1_Channel1_IRQn = 28, /*!< GPDMA1 Channel 1 global interrupt */
+ GPDMA1_Channel2_IRQn = 29, /*!< GPDMA1 Channel 2 global interrupt */
+ GPDMA1_Channel3_IRQn = 30, /*!< GPDMA1 Channel 3 global interrupt */
+ GPDMA1_Channel4_IRQn = 31, /*!< GPDMA1 Channel 4 global interrupt */
+ GPDMA1_Channel5_IRQn = 32, /*!< GPDMA1 Channel 5 global interrupt */
+ GPDMA1_Channel6_IRQn = 33, /*!< GPDMA1 Channel 6 global interrupt */
+ GPDMA1_Channel7_IRQn = 34, /*!< GPDMA1 Channel 7 global interrupt */
+ IWDG_IRQn = 35, /*!< IWDG global interrupt */
+ ADC1_IRQn = 37, /*!< ADC1 global interrupt */
+ DAC1_IRQn = 38, /*!< DAC1 global interrupt */
+ FDCAN1_IT0_IRQn = 39, /*!< FDCAN1 interrupt 0 */
+ FDCAN1_IT1_IRQn = 40, /*!< FDCAN1 interrupt 1 */
+ TIM1_BRK_IRQn = 41, /*!< TIM1 Break interrupt */
+ TIM1_UP_IRQn = 42, /*!< TIM1 Update interrupt */
+ TIM1_TRG_COM_IRQn = 43, /*!< TIM1 Trigger and Commutation interrupt */
+ TIM1_CC_IRQn = 44, /*!< TIM1 Capture Compare interrupt */
+ TIM2_IRQn = 45, /*!< TIM2 global interrupt */
+ TIM3_IRQn = 46, /*!< TIM3 global interrupt */
+ TIM4_IRQn = 47, /*!< TIM4 global interrupt */
+ TIM5_IRQn = 48, /*!< TIM5 global interrupt */
+ TIM6_IRQn = 49, /*!< TIM6 global interrupt */
+ TIM7_IRQn = 50, /*!< TIM7 global interrupt */
+ I2C1_EV_IRQn = 51, /*!< I2C1 Event interrupt */
+ I2C1_ER_IRQn = 52, /*!< I2C1 Error interrupt */
+ I2C2_EV_IRQn = 53, /*!< I2C2 Event interrupt */
+ I2C2_ER_IRQn = 54, /*!< I2C2 Error interrupt */
+ SPI1_IRQn = 55, /*!< SPI1 global interrupt */
+ SPI2_IRQn = 56, /*!< SPI2 global interrupt */
+ SPI3_IRQn = 57, /*!< SPI3 global interrupt */
+ USART1_IRQn = 58, /*!< USART1 global interrupt */
+ USART2_IRQn = 59, /*!< USART2 global interrupt */
+ USART3_IRQn = 60, /*!< USART3 global interrupt */
+ UART4_IRQn = 61, /*!< UART4 global interrupt */
+ UART5_IRQn = 62, /*!< UART5 global interrupt */
+ LPUART1_IRQn = 63, /*!< LPUART1 global interrupt */
+ LPTIM1_IRQn = 64, /*!< LPTIM1 global interrupt */
+ TIM8_BRK_IRQn = 65, /*!< TIM8 Break interrupt */
+ TIM8_UP_IRQn = 66, /*!< TIM8 Update interrupt */
+ TIM8_TRG_COM_IRQn = 67, /*!< TIM8 Trigger and Commutation interrupt */
+ TIM8_CC_IRQn = 68, /*!< TIM8 Capture Compare interrupt */
+ ADC2_IRQn = 69, /*!< ADC2 global interrupt */
+ LPTIM2_IRQn = 70, /*!< LPTIM2 global interrupt */
+ TIM15_IRQn = 71, /*!< TIM15 global interrupt */
+ TIM16_IRQn = 72, /*!< TIM16 global interrupt */
+ TIM17_IRQn = 73, /*!< TIM17 global interrupt */
+ USB_DRD_FS_IRQn = 74, /*!< USB FS global interrupt */
+ CRS_IRQn = 75, /*!< CRS global interrupt */
+ UCPD1_IRQn = 76, /*!< UCPD1 global interrupt */
+ FMC_IRQn = 77, /*!< FMC global interrupt */
+ OCTOSPI1_IRQn = 78, /*!< OctoSPI1 global interrupt */
+ SDMMC1_IRQn = 79, /*!< SDMMC1 global interrupt */
+ I2C3_EV_IRQn = 80, /*!< I2C3 event interrupt */
+ I2C3_ER_IRQn = 81, /*!< I2C3 error interrupt */
+ SPI4_IRQn = 82, /*!< SPI4 global interrupt */
+ SPI5_IRQn = 83, /*!< SPI5 global interrupt */
+ SPI6_IRQn = 84, /*!< SPI6 global interrupt */
+ USART6_IRQn = 85, /*!< USART6 global interrupt */
+ USART10_IRQn = 86, /*!< USART10 global interrupt */
+ USART11_IRQn = 87, /*!< USART11 global interrupt */
+ SAI1_IRQn = 88, /*!< Serial Audio Interface 1 global interrupt */
+ SAI2_IRQn = 89, /*!< Serial Audio Interface 2 global interrupt */
+ GPDMA2_Channel0_IRQn = 90, /*!< GPDMA2 Channel 0 global interrupt */
+ GPDMA2_Channel1_IRQn = 91, /*!< GPDMA2 Channel 1 global interrupt */
+ GPDMA2_Channel2_IRQn = 92, /*!< GPDMA2 Channel 2 global interrupt */
+ GPDMA2_Channel3_IRQn = 93, /*!< GPDMA2 Channel 3 global interrupt */
+ GPDMA2_Channel4_IRQn = 94, /*!< GPDMA2 Channel 4 global interrupt */
+ GPDMA2_Channel5_IRQn = 95, /*!< GPDMA2 Channel 5 global interrupt */
+ GPDMA2_Channel6_IRQn = 96, /*!< GPDMA2 Channel 6 global interrupt */
+ GPDMA2_Channel7_IRQn = 97, /*!< GPDMA2 Channel 7 global interrupt */
+ UART7_IRQn = 98, /*!< UART7 global interrupt */
+ UART8_IRQn = 99, /*!< UART8 global interrupt */
+ UART9_IRQn = 100, /*!< UART9 global interrupt */
+ UART12_IRQn = 101, /*!< UART12 global interrupt */
+ FPU_IRQn = 103, /*!< FPU global interrupt */
+ ICACHE_IRQn = 104, /*!< Instruction cache global interrupt */
+ DCACHE1_IRQn = 105, /*!< Data cache global interrupt */
+ DCMI_PSSI_IRQn = 108, /*!< DCMI/PSSI global interrupt */
+ CORDIC_IRQn = 111, /*!< CORDIC global interrupt */
+ FMAC_IRQn = 112, /*!< FMAC global interrupt */
+ DTS_IRQn = 113, /*!< DTS global interrupt */
+ RNG_IRQn = 114, /*!< RNG global interrupt */
+ HASH_IRQn = 117, /*!< HASH global interrupt */
+ PKA_IRQn = 118, /*!< PKA global interrupt */
+ CEC_IRQn = 119, /*!< CEC-HDMI global interrupt */
+ TIM12_IRQn = 120, /*!< TIM12 global interrupt */
+ TIM13_IRQn = 121, /*!< TIM13 global interrupt */
+ TIM14_IRQn = 122, /*!< TIM14 global interrupt */
+ I3C1_EV_IRQn = 123, /*!< I3C1 event interrupt */
+ I3C1_ER_IRQn = 124, /*!< I3C1 error interrupt */
+ I2C4_EV_IRQn = 125, /*!< I2C4 event interrupt */
+ I2C4_ER_IRQn = 126, /*!< I2C4 error interrupt */
+ LPTIM3_IRQn = 127, /*!< LPTIM3 global interrupt */
+ LPTIM4_IRQn = 128, /*!< LPTIM4 global interrupt */
+ LPTIM5_IRQn = 129, /*!< LPTIM5 global interrupt */
+ LPTIM6_IRQn = 130, /*!< LPTIM6 global interrupt */
+} IRQn_Type;
+
+
+
+/* =========================================================================================================================== */
+/* ================ Processor and Core Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+/* ------- Start of section using anonymous unions and disabling warnings ------- */
+#if defined (__CC_ARM)
+ #pragma push
+ #pragma anon_unions
+#elif defined (__ICCARM__)
+ #pragma language=extended
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wc11-extensions"
+ #pragma clang diagnostic ignored "-Wreserved-id-macro"
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning 586
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+#define SMPS /*!< Switched mode power supply feature */
+
+/* -------- Configuration of the Cortex-M33 Processor and Core Peripherals ------ */
+#define __CM33_REV 0x0000U /* Core revision r0p1 */
+#define __SAUREGION_PRESENT 1U /* SAU regions present */
+#define __MPU_PRESENT 1U /* MPU present */
+#define __VTOR_PRESENT 1U /* VTOR present */
+#define __NVIC_PRIO_BITS 4U /* Number of Bits used for Priority Levels */
+#define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */
+#define __FPU_PRESENT 1U /* FPU present */
+#define __DSP_PRESENT 1U /* DSP extension present */
+
+/** @} */ /* End of group Configuration_of_CMSIS */
+
+
+#include /*!< ARM Cortex-M33 processor and core peripherals */
+#include "system_stm32h5xx.h" /*!< STM32H5xx System */
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_peripherals
+ * @{
+ */
+
+/**
+ * @brief CRC calculation unit
+ */
+typedef struct
+{
+ __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */
+ __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */
+ __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */
+ uint32_t RESERVED2; /*!< Reserved, 0x0C */
+ __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */
+ __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */
+ uint32_t RESERVED3[246]; /*!< Reserved, */
+ __IO uint32_t HWCFGR; /*!< CRC IP HWCFGR register, Address offset: 0x3F0 */
+ __IO uint32_t VERR; /*!< CRC IP version register, Address offset: 0x3F4 */
+ __IO uint32_t PIDR; /*!< CRC IP type identification register, Address offset: 0x3F8 */
+ __IO uint32_t SIDR; /*!< CRC IP map Size ID register, Address offset: 0x3FC */
+} CRC_TypeDef;
+
+/**
+ * @brief Inter-integrated Circuit Interface
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */
+ __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */
+ __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */
+ __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */
+ __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */
+ __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */
+ __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */
+ __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */
+ __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */
+ __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */
+} I2C_TypeDef;
+
+/**
+ * @brief Improved Inter-integrated Circuit Interface
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< I3C Control register, Address offset: 0x00 */
+ __IO uint32_t CFGR; /*!< I3C Controller Configuration register, Address offset: 0x04 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x08-0x0C */
+ __IO uint32_t RDR; /*!< I3C Received Data register, Address offset: 0x10 */
+ __IO uint32_t RDWR; /*!< I3C Received Data Word register, Address offset: 0x14 */
+ __IO uint32_t TDR; /*!< I3C Transmit Data register, Address offset: 0x18 */
+ __IO uint32_t TDWR; /*!< I3C Transmit Data Word register, Address offset: 0x1C */
+ __IO uint32_t IBIDR; /*!< I3C IBI payload Data register, Address offset: 0x20 */
+ __IO uint32_t TGTTDR; /*!< I3C Target Transmit register, Address offset: 0x24 */
+ uint32_t RESERVED2[2]; /*!< Reserved, Address offset: 0x28-0x2C */
+ __IO uint32_t SR; /*!< I3C Status register, Address offset: 0x30 */
+ __IO uint32_t SER; /*!< I3C Status Error register, Address offset: 0x34 */
+ uint32_t RESERVED3[2]; /*!< Reserved, Address offset: 0x38-0x3C */
+ __IO uint32_t RMR; /*!< I3C Received Message register, Address offset: 0x40 */
+ uint32_t RESERVED4[3]; /*!< Reserved, Address offset: 0x44-0x4C */
+ __IO uint32_t EVR; /*!< I3C Event register, Address offset: 0x50 */
+ __IO uint32_t IER; /*!< I3C Interrupt Enable register, Address offset: 0x54 */
+ __IO uint32_t CEVR; /*!< I3C Clear Event register, Address offset: 0x58 */
+ uint32_t RESERVED5; /*!< Reserved, Address offset: 0x5C */
+ __IO uint32_t DEVR0; /*!< I3C own Target characteristics register, Address offset: 0x60 */
+ __IO uint32_t DEVRX[4]; /*!< I3C Target x (1<=x<=4) register, Address offset: 0x64-0x70 */
+ uint32_t RESERVED6[7]; /*!< Reserved, Address offset: 0x74-0x8C */
+ __IO uint32_t MAXRLR; /*!< I3C Maximum Read Length register, Address offset: 0x90 */
+ __IO uint32_t MAXWLR; /*!< I3C Maximum Write Length register, Address offset: 0x94 */
+ uint32_t RESERVED7[2]; /*!< Reserved, Address offset: 0x98-0x9C */
+ __IO uint32_t TIMINGR0; /*!< I3C Timing 0 register, Address offset: 0xA0 */
+ __IO uint32_t TIMINGR1; /*!< I3C Timing 1 register, Address offset: 0xA4 */
+ __IO uint32_t TIMINGR2; /*!< I3C Timing 2 register, Address offset: 0xA8 */
+ uint32_t RESERVED9[5]; /*!< Reserved, Address offset: 0xAC-0xBC */
+ __IO uint32_t BCR; /*!< I3C Bus Characteristics register, Address offset: 0xC0 */
+ __IO uint32_t DCR; /*!< I3C Device Characteristics register, Address offset: 0xC4 */
+ __IO uint32_t GETCAPR; /*!< I3C GET CAPabilities register, Address offset: 0xC8 */
+ __IO uint32_t CRCAPR; /*!< I3C Controller CAPabilities register, Address offset: 0xCC */
+ __IO uint32_t GETMXDSR; /*!< I3C GET Max Data Speed register, Address offset: 0xD0 */
+ __IO uint32_t EPIDR; /*!< I3C Extended Provisioned ID register, Address offset: 0xD4 */
+} I3C_TypeDef;
+
+/**
+ * @brief DAC
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */
+ __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */
+ __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */
+ __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */
+ __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */
+ __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */
+ __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */
+ __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */
+ __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */
+ __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */
+ __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */
+ __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */
+ __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */
+ __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */
+ __IO uint32_t CCR; /*!< DAC calibration control register, Address offset: 0x38 */
+ __IO uint32_t MCR; /*!< DAC mode control register, Address offset: 0x3C */
+ __IO uint32_t SHSR1; /*!< DAC Sample and Hold sample time register 1, Address offset: 0x40 */
+ __IO uint32_t SHSR2; /*!< DAC Sample and Hold sample time register 2, Address offset: 0x44 */
+ __IO uint32_t SHHR; /*!< DAC Sample and Hold hold time register, Address offset: 0x48 */
+ __IO uint32_t SHRR; /*!< DAC Sample and Hold refresh time register, Address offset: 0x4C */
+ __IO uint32_t RESERVED[1];
+ __IO uint32_t AUTOCR; /*!< DAC Autonomous mode register, Address offset: 0x54 */
+} DAC_TypeDef;
+
+/**
+ * @brief Clock Recovery System
+ */
+typedef struct
+{
+__IO uint32_t CR; /*!< CRS ccontrol register, Address offset: 0x00 */
+__IO uint32_t CFGR; /*!< CRS configuration register, Address offset: 0x04 */
+__IO uint32_t ISR; /*!< CRS interrupt and status register, Address offset: 0x08 */
+__IO uint32_t ICR; /*!< CRS interrupt flag clear register, Address offset: 0x0C */
+} CRS_TypeDef;
+
+
+/**
+ * @brief HASH
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< HASH control register, Address offset: 0x00 */
+ __IO uint32_t DIN; /*!< HASH data input register, Address offset: 0x04 */
+ __IO uint32_t STR; /*!< HASH start register, Address offset: 0x08 */
+ __IO uint32_t HR[5]; /*!< HASH digest registers, Address offset: 0x0C-0x1C */
+ __IO uint32_t IMR; /*!< HASH interrupt enable register, Address offset: 0x20 */
+ __IO uint32_t SR; /*!< HASH status register, Address offset: 0x24 */
+ uint32_t RESERVED[52]; /*!< Reserved, 0x28-0xF4 */
+ __IO uint32_t CSR[103]; /*!< HASH context swap registers, Address offset: 0x0F8-0x290 */
+} HASH_TypeDef;
+
+/**
+ * @brief HASH_DIGEST
+ */
+typedef struct
+{
+ __IO uint32_t HR[16]; /*!< HASH digest registers, Address offset: 0x310-0x34C */
+} HASH_DIGEST_TypeDef;
+
+/**
+ * @brief RNG
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */
+ __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */
+ __IO uint32_t NSCR; /*!< RNG noise source control register , Address offset: 0x0C */
+ __IO uint32_t HTCR; /*!< RNG health test configuration register, Address offset: 0x10 */
+} RNG_TypeDef;
+
+/**
+ * @brief Debug MCU
+ */
+typedef struct
+{
+ __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */
+ __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */
+ __IO uint32_t APB1FZR1; /*!< Debug MCU APB1 freeze register 1, Address offset: 0x08 */
+ __IO uint32_t APB1FZR2; /*!< Debug MCU APB1 freeze register 2, Address offset: 0x0C */
+ __IO uint32_t APB2FZR; /*!< Debug MCU APB2 freeze register, Address offset: 0x10 */
+ __IO uint32_t APB3FZR; /*!< Debug MCU APB3 freeze register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, 0x18 - 0x1C */
+ __IO uint32_t AHB1FZR; /*!< Debug MCU AHB1 freeze register, Address offset: 0x20 */
+ uint32_t RESERVED2[54]; /*!< Reserved, 0x24 - 0xF8 */
+ __IO uint32_t SR; /*!< Debug MCU SR register, Address offset: 0xFC */
+ __IO uint32_t DBG_AUTH_HOST; /*!< Debug DBG_AUTH_HOST register, Address offset: 0x100 */
+ __IO uint32_t DBG_AUTH_DEV; /*!< Debug DBG_AUTH_DEV register, Address offset: 0x104 */
+ __IO uint32_t DBG_AUTH_ACK; /*!< Debug DBG_AUTH_ACK register, Address offset: 0x108 */
+ uint32_t RESERVED3[945]; /*!< Reserved, 0x10C - 0xFCC */
+ __IO uint32_t PIDR4; /*!< Debug MCU Peripheral ID register 4, Address offset: 0xFD0 */
+ __IO uint32_t PIDR5; /*!< Debug MCU Peripheral ID register 5, Address offset: 0xFD4 */
+ __IO uint32_t PIDR6; /*!< Debug MCU Peripheral ID register 6, Address offset: 0xFD8 */
+ __IO uint32_t PIDR7; /*!< Debug MCU Peripheral ID register 7, Address offset: 0xFDC */
+ __IO uint32_t PIDR0; /*!< Debug MCU Peripheral ID register 0, Address offset: 0xFE0 */
+ __IO uint32_t PIDR1; /*!< Debug MCU Peripheral ID register 1, Address offset: 0xFE4 */
+ __IO uint32_t PIDR2; /*!< Debug MCU Peripheral ID register 2, Address offset: 0xFE8 */
+ __IO uint32_t PIDR3; /*!< Debug MCU Peripheral ID register 3, Address offset: 0xFEC */
+ __IO uint32_t CIDR0; /*!< Debug MCU Component ID register 0, Address offset: 0xFF0 */
+ __IO uint32_t CIDR1; /*!< Debug MCU Component ID register 1, Address offset: 0xFF4 */
+ __IO uint32_t CIDR2; /*!< Debug MCU Component ID register 2, Address offset: 0xFF8 */
+ __IO uint32_t CIDR3; /*!< Debug MCU Component ID register 3, Address offset: 0xFFC */
+} DBGMCU_TypeDef;
+
+/**
+ * @brief DCMI
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DCMI control register 1, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< DCMI status register, Address offset: 0x04 */
+ __IO uint32_t RISR; /*!< DCMI raw interrupt status register, Address offset: 0x08 */
+ __IO uint32_t IER; /*!< DCMI interrupt enable register, Address offset: 0x0C */
+ __IO uint32_t MISR; /*!< DCMI masked interrupt status register, Address offset: 0x10 */
+ __IO uint32_t ICR; /*!< DCMI interrupt clear register, Address offset: 0x14 */
+ __IO uint32_t ESCR; /*!< DCMI embedded synchronization code register, Address offset: 0x18 */
+ __IO uint32_t ESUR; /*!< DCMI embedded synchronization unmask register, Address offset: 0x1C */
+ __IO uint32_t CWSTRTR; /*!< DCMI crop window start, Address offset: 0x20 */
+ __IO uint32_t CWSIZER; /*!< DCMI crop window size, Address offset: 0x24 */
+ __IO uint32_t DR; /*!< DCMI data register, Address offset: 0x28 */
+} DCMI_TypeDef;
+
+/**
+ * @brief PSSI
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< PSSI control register, Address offset: 0x000 */
+ __IO uint32_t SR; /*!< PSSI status register, Address offset: 0x004 */
+ __IO uint32_t RIS; /*!< PSSI raw interrupt status register, Address offset: 0x008 */
+ __IO uint32_t IER; /*!< PSSI interrupt enable register, Address offset: 0x00C */
+ __IO uint32_t MIS; /*!< PSSI masked interrupt status register, Address offset: 0x010 */
+ __IO uint32_t ICR; /*!< PSSI interrupt clear register, Address offset: 0x014 */
+ __IO uint32_t RESERVED1[4]; /*!< Reserved, 0x018 - 0x024 */
+ __IO uint32_t DR; /*!< PSSI data register, Address offset: 0x028 */
+} PSSI_TypeDef;
+
+/**
+ * @brief DMA Controller
+ */
+typedef struct
+{
+ __IO uint32_t SECCFGR; /*!< DMA secure configuration register, Address offset: 0x00 */
+ __IO uint32_t PRIVCFGR; /*!< DMA privileged configuration register, Address offset: 0x04 */
+ __IO uint32_t RCFGLOCKR; /*!< DMA lock configuration register, Address offset: 0x08 */
+ __IO uint32_t MISR; /*!< DMA non secure masked interrupt status register, Address offset: 0x0C */
+ __IO uint32_t SMISR; /*!< DMA secure masked interrupt status register, Address offset: 0x10 */
+} DMA_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CLBAR; /*!< DMA channel x linked-list base address register, Address offset: 0x50 + (x * 0x80) */
+ uint32_t RESERVED1[2]; /*!< Reserved 1, Address offset: 0x54 -- 0x58 */
+ __IO uint32_t CFCR; /*!< DMA channel x flag clear register, Address offset: 0x5C + (x * 0x80) */
+ __IO uint32_t CSR; /*!< DMA channel x flag status register, Address offset: 0x60 + (x * 0x80) */
+ __IO uint32_t CCR; /*!< DMA channel x control register, Address offset: 0x64 + (x * 0x80) */
+ uint32_t RESERVED2[10];/*!< Reserved 2, Address offset: 0x68 -- 0x8C */
+ __IO uint32_t CTR1; /*!< DMA channel x transfer register 1, Address offset: 0x90 + (x * 0x80) */
+ __IO uint32_t CTR2; /*!< DMA channel x transfer register 2, Address offset: 0x94 + (x * 0x80) */
+ __IO uint32_t CBR1; /*!< DMA channel x block register 1, Address offset: 0x98 + (x * 0x80) */
+ __IO uint32_t CSAR; /*!< DMA channel x source address register, Address offset: 0x9C + (x * 0x80) */
+ __IO uint32_t CDAR; /*!< DMA channel x destination address register, Address offset: 0xA0 + (x * 0x80) */
+ __IO uint32_t CTR3; /*!< DMA channel x transfer register 3, Address offset: 0xA4 + (x * 0x80) */
+ __IO uint32_t CBR2; /*!< DMA channel x block register 2, Address offset: 0xA8 + (x * 0x80) */
+ uint32_t RESERVED3[8]; /*!< Reserved 3, Address offset: 0xAC -- 0xC8 */
+ __IO uint32_t CLLR; /*!< DMA channel x linked-list address register, Address offset: 0xCC + (x * 0x80) */
+} DMA_Channel_TypeDef;
+
+
+/**
+ * @brief Asynch Interrupt/Event Controller (EXTI)
+ */
+typedef struct
+{
+ __IO uint32_t RTSR1; /*!< EXTI Rising Trigger Selection Register 1, Address offset: 0x00 */
+ __IO uint32_t FTSR1; /*!< EXTI Falling Trigger Selection Register 1, Address offset: 0x04 */
+ __IO uint32_t SWIER1; /*!< EXTI Software Interrupt event Register 1, Address offset: 0x08 */
+ __IO uint32_t RPR1; /*!< EXTI Rising Pending Register 1, Address offset: 0x0C */
+ __IO uint32_t FPR1; /*!< EXTI Falling Pending Register 1, Address offset: 0x10 */
+ __IO uint32_t SECCFGR1; /*!< EXTI Security Configuration Register 1, Address offset: 0x14 */
+ __IO uint32_t PRIVCFGR1; /*!< EXTI Privilege Configuration Register 1, Address offset: 0x18 */
+ uint32_t RESERVED1; /*!< Reserved 1, Address offset: 0x1C */
+ __IO uint32_t RTSR2; /*!< EXTI Rising Trigger Selection Register 2, Address offset: 0x20 */
+ __IO uint32_t FTSR2; /*!< EXTI Falling Trigger Selection Register 2, Address offset: 0x24 */
+ __IO uint32_t SWIER2; /*!< EXTI Software Interrupt event Register 2, Address offset: 0x28 */
+ __IO uint32_t RPR2; /*!< EXTI Rising Pending Register 2, Address offset: 0x2C */
+ __IO uint32_t FPR2; /*!< EXTI Falling Pending Register 2, Address offset: 0x30 */
+ __IO uint32_t SECCFGR2; /*!< EXTI Security Configuration Register 2, Address offset: 0x34 */
+ __IO uint32_t PRIVCFGR2; /*!< EXTI Privilege Configuration Register 2, Address offset: 0x38 */
+ uint32_t RESERVED2[9]; /*!< Reserved 2, 0x3C-- 0x5C */
+ __IO uint32_t EXTICR[4]; /*!< EXIT External Interrupt Configuration Register, 0x60 -- 0x6C */
+ __IO uint32_t LOCKR; /*!< EXTI Lock Register, Address offset: 0x70 */
+ uint32_t RESERVED3[3]; /*!< Reserved 3, 0x74 -- 0x7C */
+ __IO uint32_t IMR1; /*!< EXTI Interrupt Mask Register 1, Address offset: 0x80 */
+ __IO uint32_t EMR1; /*!< EXTI Event Mask Register 1, Address offset: 0x84 */
+ uint32_t RESERVED4[2]; /*!< Reserved 4, 0x88 -- 0x8C */
+ __IO uint32_t IMR2; /*!< EXTI Interrupt Mask Register 2, Address offset: 0x90 */
+ __IO uint32_t EMR2; /*!< EXTI Event Mask Register 2, Address offset: 0x94 */
+} EXTI_TypeDef;
+
+/**
+ * @brief FLASH Registers
+ */
+typedef struct
+{
+ __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */
+ __IO uint32_t NSKEYR; /*!< FLASH non-secure key register, Address offset: 0x04 */
+ __IO uint32_t SECKEYR; /*!< FLASH secure key register, Address offset: 0x08 */
+ __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x0C */
+ __IO uint32_t NSOBKKEYR; /*!< FLASH non-secure option bytes keys key register, Address offset: 0x10 */
+ __IO uint32_t SECOBKKEYR; /*!< FLASH secure option bytes keys key register, Address offset: 0x14 */
+ __IO uint32_t OPSR; /*!< FLASH OPSR register, Address offset: 0x18 */
+ __IO uint32_t OPTCR; /*!< Flash Option Control Register, Address offset: 0x1C */
+ __IO uint32_t NSSR; /*!< FLASH non-secure status register, Address offset: 0x20 */
+ __IO uint32_t SECSR; /*!< FLASH secure status register, Address offset: 0x24 */
+ __IO uint32_t NSCR; /*!< FLASH non-secure control register, Address offset: 0x28 */
+ __IO uint32_t SECCR; /*!< FLASH secure control register, Address offset: 0x2C */
+ __IO uint32_t NSCCR; /*!< FLASH non-secure clear control register, Address offset: 0x30 */
+ __IO uint32_t SECCCR; /*!< FLASH secure clear control register, Address offset: 0x34 */
+ uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x38 */
+ __IO uint32_t PRIVCFGR; /*!< FLASH privilege configuration register, Address offset: 0x3C */
+ __IO uint32_t NSOBKCFGR; /*!< FLASH non-secure option byte key configuration register, Address offset: 0x40 */
+ __IO uint32_t SECOBKCFGR; /*!< FLASH secure option byte key configuration register, Address offset: 0x44 */
+ __IO uint32_t HDPEXTR; /*!< FLASH HDP extension register, Address offset: 0x48 */
+ uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x4C */
+ __IO uint32_t OPTSR_CUR; /*!< FLASH option status current register, Address offset: 0x50 */
+ __IO uint32_t OPTSR_PRG; /*!< FLASH option status to program register, Address offset: 0x54 */
+ uint32_t RESERVED3[2]; /*!< Reserved3, Address offset: 0x58-0x5C */
+ __IO uint32_t NSEPOCHR_CUR; /*!< FLASH non-secure epoch current register, Address offset: 0x60 */
+ __IO uint32_t NSEPOCHR_PRG; /*!< FLASH non-secure epoch to program register, Address offset: 0x64 */
+ __IO uint32_t SECEPOCHR_CUR; /*!< FLASH secure epoch current register, Address offset: 0x68 */
+ __IO uint32_t SECEPOCHR_PRG; /*!< FLASH secure epoch to program register, Address offset: 0x6C */
+ __IO uint32_t OPTSR2_CUR; /*!< FLASH option status current register 2, Address offset: 0x70 */
+ __IO uint32_t OPTSR2_PRG; /*!< FLASH option status to program register 2, Address offset: 0x74 */
+ uint32_t RESERVED4[2]; /*!< Reserved4, Address offset: 0x78-0x7C */
+ __IO uint32_t NSBOOTR_CUR; /*!< FLASH non-secure unique boot entry current register, Address offset: 0x80 */
+ __IO uint32_t NSBOOTR_PRG; /*!< FLASH non-secure unique boot entry to program register, Address offset: 0x84 */
+ __IO uint32_t SECBOOTR_CUR; /*!< FLASH secure unique boot entry current register, Address offset: 0x88 */
+ __IO uint32_t SECBOOTR_PRG; /*!< FLASH secure unique boot entry to program register, Address offset: 0x8C */
+ __IO uint32_t OTPBLR_CUR; /*!< FLASH OTP block lock current register, Address offset: 0x90 */
+ __IO uint32_t OTPBLR_PRG; /*!< FLASH OTP block Lock to program register, Address offset: 0x94 */
+ uint32_t RESERVED5[2]; /*!< Reserved5, Address offset: 0x98-0x9C */
+ __IO uint32_t SECBB1R1; /*!< FLASH secure block-based bank 1 register 1, Address offset: 0xA0 */
+ __IO uint32_t SECBB1R2; /*!< FLASH secure block-based bank 1 register 2, Address offset: 0xA4 */
+ __IO uint32_t SECBB1R3; /*!< FLASH secure block-based bank 1 register 3, Address offset: 0xA8 */
+ __IO uint32_t SECBB1R4; /*!< FLASH secure block-based bank 1 register 4, Address offset: 0xAC */
+ uint32_t RESERVED6[4]; /*!< Reserved6, Address offset: 0xB0-0xBC */
+ __IO uint32_t PRIVBB1R1; /*!< FLASH privilege block-based bank 1 register 1, Address offset: 0xC0 */
+ __IO uint32_t PRIVBB1R2; /*!< FLASH privilege block-based bank 1 register 2, Address offset: 0xC4 */
+ __IO uint32_t PRIVBB1R3; /*!< FLASH privilege block-based bank 1 register 3, Address offset: 0xC8 */
+ __IO uint32_t PRIVBB1R4; /*!< FLASH privilege block-based bank 1 register 4, Address offset: 0xCC */
+ uint32_t RESERVED7[4]; /*!< Reserved7, Address offset: 0xD0-0xDC */
+ __IO uint32_t SECWM1R_CUR; /*!< FLASH secure watermark 1 current register, Address offset: 0xE0 */
+ __IO uint32_t SECWM1R_PRG; /*!< FLASH secure watermark 1 to program register, Address offset: 0xE4 */
+ __IO uint32_t WRP1R_CUR; /*!< FLASH write sector group protection current register for bank1, Address offset: 0xE8 */
+ __IO uint32_t WRP1R_PRG; /*!< FLASH write sector group protection to program register for bank1, Address offset: 0xEC */
+ __IO uint32_t EDATA1R_CUR; /*!< FLASH data sectors configuration current register for bank1, Address offset: 0xF0 */
+ __IO uint32_t EDATA1R_PRG; /*!< FLASH data sectors configuration to program register for bank1, Address offset: 0xF4 */
+ __IO uint32_t HDP1R_CUR; /*!< FLASH HDP configuration current register for bank1, Address offset: 0xF8 */
+ __IO uint32_t HDP1R_PRG; /*!< FLASH HDP configuration to program register for bank1, Address offset: 0xFC */
+ __IO uint32_t ECCCORR; /*!< FLASH ECC correction register, Address offset: 0x100 */
+ __IO uint32_t ECCDETR; /*!< FLASH ECC detection register, Address offset: 0x104 */
+ __IO uint32_t ECCDR; /*!< FLASH ECC data register, Address offset: 0x108 */
+ uint32_t RESERVED8[37]; /*!< Reserved8, Address offset: 0x10C-0x19C */
+ __IO uint32_t SECBB2R1; /*!< FLASH secure block-based bank 2 register 1, Address offset: 0x1A0 */
+ __IO uint32_t SECBB2R2; /*!< FLASH secure block-based bank 2 register 2, Address offset: 0x1A4 */
+ __IO uint32_t SECBB2R3; /*!< FLASH secure block-based bank 2 register 3, Address offset: 0x1A8 */
+ __IO uint32_t SECBB2R4; /*!< FLASH secure block-based bank 2 register 4, Address offset: 0x1AC */
+ uint32_t RESERVED9[4]; /*!< Reserved9, Address offset: 0x1B0-0x1BC */
+ __IO uint32_t PRIVBB2R1; /*!< FLASH privilege block-based bank 2 register 1, Address offset: 0x1C0 */
+ __IO uint32_t PRIVBB2R2; /*!< FLASH privilege block-based bank 2 register 2, Address offset: 0x1C4 */
+ __IO uint32_t PRIVBB2R3; /*!< FLASH privilege block-based bank 2 register 3, Address offset: 0x1C8 */
+ __IO uint32_t PRIVBB2R4; /*!< FLASH privilege block-based bank 2 register 4, Address offset: 0x1CC */
+ uint32_t RESERVED10[4]; /*!< Reserved10, Address offset: 0x1D0-0x1DC */
+ __IO uint32_t SECWM2R_CUR; /*!< FLASH secure watermark 2 current register, Address offset: 0x1E0 */
+ __IO uint32_t SECWM2R_PRG; /*!< FLASH secure watermark 2 to program register, Address offset: 0x1E4 */
+ __IO uint32_t WRP2R_CUR; /*!< FLASH write sector group protection current register for bank2, Address offset: 0x1E8 */
+ __IO uint32_t WRP2R_PRG; /*!< FLASH write sector group protection to program register for bank2, Address offset: 0x1EC */
+ __IO uint32_t EDATA2R_CUR; /*!< FLASH data sectors configuration current register for bank2, Address offset: 0x1F0 */
+ __IO uint32_t EDATA2R_PRG; /*!< FLASH data sectors configuration to program register for bank2, Address offset: 0x1F4 */
+ __IO uint32_t HDP2R_CUR; /*!< FLASH HDP configuration current register for bank2, Address offset: 0x1F8 */
+ __IO uint32_t HDP2R_PRG; /*!< FLASH HDP configuration to program register for bank2, Address offset: 0x1FC */
+} FLASH_TypeDef;
+
+/**
+ * @brief FMAC
+ */
+typedef struct
+{
+ __IO uint32_t X1BUFCFG; /*!< FMAC X1 Buffer Configuration register, Address offset: 0x00 */
+ __IO uint32_t X2BUFCFG; /*!< FMAC X2 Buffer Configuration register, Address offset: 0x04 */
+ __IO uint32_t YBUFCFG; /*!< FMAC Y Buffer Configuration register, Address offset: 0x08 */
+ __IO uint32_t PARAM; /*!< FMAC Parameter register, Address offset: 0x0C */
+ __IO uint32_t CR; /*!< FMAC Control register, Address offset: 0x10 */
+ __IO uint32_t SR; /*!< FMAC Status register, Address offset: 0x14 */
+ __IO uint32_t WDATA; /*!< FMAC Write Data register, Address offset: 0x18 */
+ __IO uint32_t RDATA; /*!< FMAC Read Data register, Address offset: 0x1C */
+} FMAC_TypeDef;
+
+/**
+ * @brief General Purpose I/O
+ */
+typedef struct
+{
+ __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */
+ __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */
+ __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */
+ __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */
+ __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */
+ __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */
+ __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */
+ __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */
+ __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */
+ __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */
+ __IO uint32_t HSLVR; /*!< GPIO high-speed low voltage register, Address offset: 0x2C */
+ __IO uint32_t SECCFGR; /*!< GPIO secure configuration register, Address offset: 0x30 */
+} GPIO_TypeDef;
+
+/**
+ * @brief Global TrustZone Controller
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< TZSC control register, Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved1, Address offset: 0x04-0x0C */
+ __IO uint32_t SECCFGR1; /*!< TZSC secure configuration register 1, Address offset: 0x10 */
+ __IO uint32_t SECCFGR2; /*!< TZSC secure configuration register 2, Address offset: 0x14 */
+ __IO uint32_t SECCFGR3; /*!< TZSC secure configuration register 3, Address offset: 0x18 */
+ uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x1C */
+ __IO uint32_t PRIVCFGR1; /*!< TZSC privilege configuration register 1, Address offset: 0x20 */
+ __IO uint32_t PRIVCFGR2; /*!< TZSC privilege configuration register 2, Address offset: 0x24 */
+ __IO uint32_t PRIVCFGR3; /*!< TZSC privilege configuration register 3, Address offset: 0x28 */
+ uint32_t RESERVED3[5]; /*!< Reserved3, Address offset: 0x2C-0x3C */
+ __IO uint32_t MPCWM1ACFGR; /*!< TZSC memory 1 sub-region A watermark configuration register, Address offset: 0x40 */
+ __IO uint32_t MPCWM1AR; /*!< TZSC memory 1 sub-region A watermark register, Address offset: 0x44 */
+ __IO uint32_t MPCWM1BCFGR; /*!< TZSC memory 1 sub-region B watermark configuration register, Address offset: 0x48 */
+ __IO uint32_t MPCWM1BR; /*!< TZSC memory 1 sub-region B watermark register, Address offset: 0x4C */
+ __IO uint32_t MPCWM2ACFGR; /*!< TZSC memory 2 sub-region A watermark configuration register, Address offset: 0x50 */
+ __IO uint32_t MPCWM2AR; /*!< TZSC memory 2 sub-region A watermark register, Address offset: 0x54 */
+ __IO uint32_t MPCWM2BCFGR; /*!< TZSC memory 2 sub-region B watermark configuration register, Address offset: 0x58 */
+ __IO uint32_t MPCWM2BR; /*!< TZSC memory 2 sub-region B watermark register, Address offset: 0x5C */
+ __IO uint32_t MPCWM3ACFGR; /*!< TZSC memory 3 sub-region A watermark configuration register, Address offset: 0x60 */
+ __IO uint32_t MPCWM3AR; /*!< TZSC memory 3 sub-region A watermark register, Address offset: 0x64 */
+ __IO uint32_t MPCWM3BCFGR; /*!< TZSC memory 3 sub-region B watermark configuration register, Address offset: 0x68 */
+ __IO uint32_t MPCWM3BR; /*!< TZSC memory 3 sub-region B watermark register, Address offset: 0x6C */
+ __IO uint32_t MPCWM4ACFGR; /*!< TZSC memory 4 sub-region A watermark configuration register, Address offset: 0x70 */
+ __IO uint32_t MPCWM4AR; /*!< TZSC memory 4 sub-region A watermark register, Address offset: 0x74 */
+ __IO uint32_t MPCWM4BCFGR; /*!< TZSC memory 4 sub-region B watermark configuration register, Address offset: 0x78 */
+ __IO uint32_t MPCWM4BR; /*!< TZSC memory 4 sub-region B watermark register, Address offset: 0x7c */
+} GTZC_TZSC_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< MPCBBx control register, Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved1, Address offset: 0x04-0x0C */
+ __IO uint32_t CFGLOCKR1; /*!< MPCBBx lock register, Address offset: 0x10 */
+ uint32_t RESERVED2[59]; /*!< Reserved2, Address offset: 0x14-0xFC */
+ __IO uint32_t SECCFGR[32]; /*!< MPCBBx security configuration registers, Address offset: 0x100-0x17C */
+ uint32_t RESERVED3[32]; /*!< Reserved3, Address offset: 0x180-0x1FC */
+ __IO uint32_t PRIVCFGR[32]; /*!< MPCBBx privilege configuration registers, Address offset: 0x200-0x280 */
+} GTZC_MPCBB_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t IER1; /*!< TZIC interrupt enable register 1, Address offset: 0x00 */
+ __IO uint32_t IER2; /*!< TZIC interrupt enable register 2, Address offset: 0x04 */
+ __IO uint32_t IER3; /*!< TZIC interrupt enable register 3, Address offset: 0x08 */
+ __IO uint32_t IER4; /*!< TZIC interrupt enable register 4, Address offset: 0x0C */
+ __IO uint32_t SR1; /*!< TZIC status register 1, Address offset: 0x10 */
+ __IO uint32_t SR2; /*!< TZIC status register 2, Address offset: 0x14 */
+ __IO uint32_t SR3; /*!< TZIC status register 3, Address offset: 0x18 */
+ __IO uint32_t SR4; /*!< TZIC status register 4, Address offset: 0x1C */
+ __IO uint32_t FCR1; /*!< TZIC flag clear register 1, Address offset: 0x20 */
+ __IO uint32_t FCR2; /*!< TZIC flag clear register 2, Address offset: 0x24 */
+ __IO uint32_t FCR3; /*!< TZIC flag clear register 3, Address offset: 0x28 */
+ __IO uint32_t FCR4; /*!< TZIC flag clear register 3, Address offset: 0x2C */
+} GTZC_TZIC_TypeDef;
+
+/**
+ * @brief Instruction Cache
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< ICACHE control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< ICACHE status register, Address offset: 0x04 */
+ __IO uint32_t IER; /*!< ICACHE interrupt enable register, Address offset: 0x08 */
+ __IO uint32_t FCR; /*!< ICACHE Flag clear register, Address offset: 0x0C */
+ __IO uint32_t HMONR; /*!< ICACHE hit monitor register, Address offset: 0x10 */
+ __IO uint32_t MMONR; /*!< ICACHE miss monitor register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x018-0x01C */
+ __IO uint32_t CRR0; /*!< ICACHE region 0 configuration register, Address offset: 0x20 */
+ __IO uint32_t CRR1; /*!< ICACHE region 1 configuration register, Address offset: 0x24 */
+ __IO uint32_t CRR2; /*!< ICACHE region 2 configuration register, Address offset: 0x28 */
+ __IO uint32_t CRR3; /*!< ICACHE region 3 configuration register, Address offset: 0x2C */
+} ICACHE_TypeDef;
+
+/**
+ * @brief Data Cache
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DCACHE control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< DCACHE status register, Address offset: 0x04 */
+ __IO uint32_t IER; /*!< DCACHE interrupt enable register, Address offset: 0x08 */
+ __IO uint32_t FCR; /*!< DCACHE Flag clear register, Address offset: 0x0C */
+ __IO uint32_t RHMONR; /*!< DCACHE Read hit monitor register, Address offset: 0x10 */
+ __IO uint32_t RMMONR; /*!< DCACHE Read miss monitor register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x18-0x1C */
+ __IO uint32_t WHMONR; /*!< DCACHE Write hit monitor register, Address offset: 0x20 */
+ __IO uint32_t WMMONR; /*!< DCACHE Write miss monitor register, Address offset: 0x24 */
+ __IO uint32_t CMDRSADDRR; /*!< DCACHE Command Start Address register, Address offset: 0x28 */
+ __IO uint32_t CMDREADDRR; /*!< DCACHE Command End Address register, Address offset: 0x2C */
+} DCACHE_TypeDef;
+
+/**
+ * @brief TIM
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */
+ __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */
+ __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */
+ __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */
+ __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */
+ __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */
+ __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */
+ __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */
+ __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */
+ __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */
+ __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */
+ __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */
+ __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */
+ __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */
+ __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */
+ __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */
+ __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */
+ __IO uint32_t CCR5; /*!< TIM capture/compare register 5, Address offset: 0x48 */
+ __IO uint32_t CCR6; /*!< TIM capture/compare register 6, Address offset: 0x4C */
+ __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x50 */
+ __IO uint32_t DTR2; /*!< TIM deadtime register 2, Address offset: 0x54 */
+ __IO uint32_t ECR; /*!< TIM encoder control register, Address offset: 0x58 */
+ __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x5C */
+ __IO uint32_t AF1; /*!< TIM alternate function option register 1, Address offset: 0x60 */
+ __IO uint32_t AF2; /*!< TIM alternate function option register 2, Address offset: 0x64 */
+ __IO uint32_t OR1 ; /*!< TIM option register, Address offset: 0x68 */
+ uint32_t RESERVED0[220];/*!< Reserved, Address offset: 0x6C */
+ __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x3DC */
+ __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x3E0 */
+} TIM_TypeDef;
+
+/**
+ * @brief LPTIMER
+ */
+typedef struct
+{
+ __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */
+ __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */
+ __IO uint32_t DIER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */
+ __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */
+ __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */
+ __IO uint32_t CCR1; /*!< LPTIM Capture/Compare register 1, Address offset: 0x14 */
+ __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */
+ __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */
+ __IO uint32_t RESERVED0; /*!< Reserved, Address offset: 0x20 */
+ __IO uint32_t CFGR2; /*!< LPTIM Configuration register 2, Address offset: 0x24 */
+ __IO uint32_t RCR; /*!< LPTIM Repetition register, Address offset: 0x28 */
+ __IO uint32_t CCMR1; /*!< LPTIM Capture/Compare mode register, Address offset: 0x2C */
+ __IO uint32_t RESERVED1; /*!< Reserved, Address offset: 0x30 */
+ __IO uint32_t CCR2; /*!< LPTIM Capture/Compare register 2, Address offset: 0x34 */
+} LPTIM_TypeDef;
+
+/**
+ * @brief OCTO Serial Peripheral Interface
+ */
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< OCTOSPI Control register, Address offset: 0x000 */
+ uint32_t RESERVED; /*!< Reserved, Address offset: 0x004 */
+ __IO uint32_t DCR1; /*!< OCTOSPI Device Configuration register 1, Address offset: 0x008 */
+ __IO uint32_t DCR2; /*!< OCTOSPI Device Configuration register 2, Address offset: 0x00C */
+ __IO uint32_t DCR3; /*!< OCTOSPI Device Configuration register 3, Address offset: 0x010 */
+ __IO uint32_t DCR4; /*!< OCTOSPI Device Configuration register 4, Address offset: 0x014 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x018-0x01C */
+ __IO uint32_t SR; /*!< OCTOSPI Status register, Address offset: 0x020 */
+ __IO uint32_t FCR; /*!< OCTOSPI Flag Clear register, Address offset: 0x024 */
+ uint32_t RESERVED2[6]; /*!< Reserved, Address offset: 0x028-0x03C */
+ __IO uint32_t DLR; /*!< OCTOSPI Data Length register, Address offset: 0x040 */
+ uint32_t RESERVED3; /*!< Reserved, Address offset: 0x044 */
+ __IO uint32_t AR; /*!< OCTOSPI Address register, Address offset: 0x048 */
+ uint32_t RESERVED4; /*!< Reserved, Address offset: 0x04C */
+ __IO uint32_t DR; /*!< OCTOSPI Data register, Address offset: 0x050 */
+ uint32_t RESERVED5[11]; /*!< Reserved, Address offset: 0x054-0x07C */
+ __IO uint32_t PSMKR; /*!< OCTOSPI Polling Status Mask register, Address offset: 0x080 */
+ uint32_t RESERVED6; /*!< Reserved, Address offset: 0x084 */
+ __IO uint32_t PSMAR; /*!< OCTOSPI Polling Status Match register, Address offset: 0x088 */
+ uint32_t RESERVED7; /*!< Reserved, Address offset: 0x08C */
+ __IO uint32_t PIR; /*!< OCTOSPI Polling Interval register, Address offset: 0x090 */
+ uint32_t RESERVED8[27]; /*!< Reserved, Address offset: 0x094-0x0FC */
+ __IO uint32_t CCR; /*!< OCTOSPI Communication Configuration register, Address offset: 0x100 */
+ uint32_t RESERVED9; /*!< Reserved, Address offset: 0x104 */
+ __IO uint32_t TCR; /*!< OCTOSPI Timing Configuration register, Address offset: 0x108 */
+ uint32_t RESERVED10; /*!< Reserved, Address offset: 0x10C */
+ __IO uint32_t IR; /*!< OCTOSPI Instruction register, Address offset: 0x110 */
+ uint32_t RESERVED11[3]; /*!< Reserved, Address offset: 0x114-0x11C */
+ __IO uint32_t ABR; /*!< OCTOSPI Alternate Bytes register, Address offset: 0x120 */
+ uint32_t RESERVED12[3]; /*!< Reserved, Address offset: 0x124-0x12C */
+ __IO uint32_t LPTR; /*!< OCTOSPI Low Power Timeout register, Address offset: 0x130 */
+ uint32_t RESERVED13[3]; /*!< Reserved, Address offset: 0x134-0x13C */
+ __IO uint32_t WPCCR; /*!< OCTOSPI Wrap Communication Configuration register, Address offset: 0x140 */
+ uint32_t RESERVED14; /*!< Reserved, Address offset: 0x144 */
+ __IO uint32_t WPTCR; /*!< OCTOSPI Wrap Timing Configuration register, Address offset: 0x148 */
+ uint32_t RESERVED15; /*!< Reserved, Address offset: 0x14C */
+ __IO uint32_t WPIR; /*!< OCTOSPI Wrap Instruction register, Address offset: 0x150 */
+ uint32_t RESERVED16[3]; /*!< Reserved, Address offset: 0x154-0x15C */
+ __IO uint32_t WPABR; /*!< OCTOSPI Wrap Alternate Bytes register, Address offset: 0x160 */
+ uint32_t RESERVED17[7]; /*!< Reserved, Address offset: 0x164-0x17C */
+ __IO uint32_t WCCR; /*!< OCTOSPI Write Communication Configuration register, Address offset: 0x180 */
+ uint32_t RESERVED18; /*!< Reserved, Address offset: 0x184 */
+ __IO uint32_t WTCR; /*!< OCTOSPI Write Timing Configuration register, Address offset: 0x188 */
+ uint32_t RESERVED19; /*!< Reserved, Address offset: 0x18C */
+ __IO uint32_t WIR; /*!< OCTOSPI Write Instruction register, Address offset: 0x190 */
+ uint32_t RESERVED20[3]; /*!< Reserved, Address offset: 0x194-0x19C */
+ __IO uint32_t WABR; /*!< OCTOSPI Write Alternate Bytes register, Address offset: 0x1A0 */
+ uint32_t RESERVED21[23]; /*!< Reserved, Address offset: 0x1A4-0x1FC */
+ __IO uint32_t HLCR; /*!< OCTOSPI Hyperbus Latency Configuration register, Address offset: 0x200 */
+} XSPI_TypeDef;
+
+typedef XSPI_TypeDef OCTOSPI_TypeDef;
+
+/**
+ * @brief Power Control
+ */
+typedef struct
+{
+ __IO uint32_t PMCR; /*!< Power mode control register , Address offset: 0x00 */
+ __IO uint32_t PMSR; /*!< Power mode status register , Address offset: 0x04 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x08-0x0C */
+ __IO uint32_t VOSCR; /*!< Voltage scaling control register , Address offset: 0x10 */
+ __IO uint32_t VOSSR; /*!< Voltage sacling status register , Address offset: 0x14 */
+ uint32_t RESERVED2[2]; /*!< Reserved, Address offset: 0x18-0x1C */
+ __IO uint32_t BDCR; /*!< BacKup domain control register , Address offset: 0x20 */
+ __IO uint32_t DBPCR; /*!< DBP control register, Address offset: 0x24 */
+ __IO uint32_t BDSR; /*!< BacKup domain status register, Address offset: 0x28 */
+ __IO uint32_t UCPDR; /*!< Usb typeC and Power Delivery Register, Address offset: 0x2C */
+ __IO uint32_t SCCR; /*!< Supply configuration control register, Address offset: 0x30 */
+ __IO uint32_t VMCR; /*!< Voltage Monitor Control Register, Address offset: 0x34 */
+ __IO uint32_t USBSCR; /*!< USB Supply Control Register Address offset: 0x38 */
+ __IO uint32_t VMSR; /*!< Status Register Voltage Monitoring, Address offset: 0x3C */
+ __IO uint32_t WUSCR; /*!< WakeUP status clear register, Address offset: 0x40 */
+ __IO uint32_t WUSR; /*!< WakeUP status Register, Address offset: 0x44 */
+ __IO uint32_t WUCR; /*!< WakeUP configuration register, Address offset: 0x48 */
+ uint32_t RESERVED3; /*!< Reserved, Address offset: 0x4C */
+ __IO uint32_t IORETR; /*!< IO RETention Register, Address offset: 0x50 */
+ uint32_t RESERVED4[43];/*!< Reserved, Address offset: 0x54-0xFC */
+ __IO uint32_t SECCFGR; /*!< Security configuration register, Address offset: 0x100 */
+ __IO uint32_t PRIVCFGR; /*!< Privilege configuration register, Address offset: 0x104 */
+}PWR_TypeDef;
+
+/**
+ * @brief SRAMs configuration controller
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< Control Register, Address offset: 0x00 */
+ __IO uint32_t IER; /*!< Interrupt Enable Register, Address offset: 0x04 */
+ __IO uint32_t ISR; /*!< Interrupt Status Register, Address offset: 0x08 */
+ __IO uint32_t SEAR; /*!< ECC Single Error Address Register, Address offset: 0x0C */
+ __IO uint32_t DEAR; /*!< ECC Double Error Address Register, Address offset: 0x10 */
+ __IO uint32_t ICR; /*!< Interrupt Clear Register, Address offset: 0x14 */
+ __IO uint32_t WPR1; /*!< SRAM Write Protection Register 1, Address offset: 0x18 */
+ __IO uint32_t WPR2; /*!< SRAM Write Protection Register 2, Address offset: 0x1C */
+ uint32_t RESERVED; /*!< Reserved, Address offset: 0x20 */
+ __IO uint32_t ECCKEY; /*!< SRAM ECC Key Register, Address offset: 0x24 */
+ __IO uint32_t ERKEYR; /*!< SRAM Erase Key Register, Address offset: 0x28 */
+}RAMCFG_TypeDef;
+
+/**
+ * @brief Reset and Clock Control
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< RCC clock control register Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved, Address offset: 0x04 */
+ __IO uint32_t HSICFGR; /*!< RCC HSI Clock Calibration Register, Address offset: 0x10 */
+ __IO uint32_t CRRCR; /*!< RCC Clock Recovery RC Register, Address offset: 0x14 */
+ __IO uint32_t CSICFGR; /*!< RCC CSI Clock Calibration Register, Address offset: 0x18 */
+ __IO uint32_t CFGR1; /*!< RCC clock configuration register 1 Address offset: 0x1C */
+ __IO uint32_t CFGR2; /*!< RCC clock configuration register 2 Address offset: 0x20 */
+ uint32_t RESERVED2; /*!< Reserved, Address offset: 0x24 */
+ __IO uint32_t PLL1CFGR; /*!< RCC PLL1 Configuration Register Address offset: 0x28 */
+ __IO uint32_t PLL2CFGR; /*!< RCC PLL2 Configuration Register Address offset: 0x2C */
+ __IO uint32_t PLL3CFGR; /*!< RCC PLL3 Configuration Register Address offset: 0x30 */
+ __IO uint32_t PLL1DIVR; /*!< RCC PLL1 Dividers Configuration Register Address offset: 0x34 */
+ __IO uint32_t PLL1FRACR; /*!< RCC PLL1 Fractional Divider Configuration Register Address offset: 0x38 */
+ __IO uint32_t PLL2DIVR; /*!< RCC PLL2 Dividers Configuration Register Address offset: 0x3C */
+ __IO uint32_t PLL2FRACR; /*!< RCC PLL2 Fractional Divider Configuration Register Address offset: 0x40 */
+ __IO uint32_t PLL3DIVR; /*!< RCC PLL3 Dividers Configuration Register Address offset: 0x44 */
+ __IO uint32_t PLL3FRACR; /*!< RCC PLL3 Fractional Divider Configuration Register Address offset: 0x48 */
+ uint32_t RESERVED5; /*!< Reserved Address offset: 0x4C */
+ __IO uint32_t CIER; /*!< RCC Clock Interrupt Enable Register Address offset: 0x50 */
+ __IO uint32_t CIFR; /*!< RCC Clock Interrupt Flag Register Address offset: 0x54 */
+ __IO uint32_t CICR; /*!< RCC Clock Interrupt Clear Register Address offset: 0x58 */
+ uint32_t RESERVED6; /*!< Reserved Address offset: 0x5C */
+ __IO uint32_t AHB1RSTR; /*!< RCC AHB1 Peripherals Reset Register Address offset: 0x60 */
+ __IO uint32_t AHB2RSTR; /*!< RCC AHB2 Peripherals Reset Register Address offset: 0x64 */
+ uint32_t RESERVED7; /*!< Reserved Address offset: 0x68 */
+ __IO uint32_t AHB4RSTR; /*!< RCC AHB4 Peripherals Reset Register Address offset: 0x6C */
+ uint32_t RESERVED9; /*!< Reserved Address offset: 0x70 */
+ __IO uint32_t APB1LRSTR; /*!< RCC APB1 Peripherals reset Low Word register Address offset: 0x74 */
+ __IO uint32_t APB1HRSTR; /*!< RCC APB1 Peripherals reset High Word register Address offset: 0x78 */
+ __IO uint32_t APB2RSTR; /*!< RCC APB2 Peripherals Reset Register Address offset: 0x7C */
+ __IO uint32_t APB3RSTR; /*!< RCC APB3 Peripherals Reset Register Address offset: 0x80 */
+ uint32_t RESERVED10; /*!< Reserved Address offset: 0x84 */
+ __IO uint32_t AHB1ENR; /*!< RCC AHB1 Peripherals Clock Enable Register Address offset: 0x88 */
+ __IO uint32_t AHB2ENR; /*!< RCC AHB2 Peripherals Clock Enable Register Address offset: 0x8C */
+ uint32_t RESERVED11; /*!< Reserved Address offset: 0x90 */
+ __IO uint32_t AHB4ENR; /*!< RCC AHB4 Peripherals Clock Enable Register Address offset: 0x94 */
+ uint32_t RESERVED13; /*!< Reserved Address offset: 0x98 */
+ __IO uint32_t APB1LENR; /*!< RCC APB1 Peripherals clock Enable Low Word register Address offset: 0x9C */
+ __IO uint32_t APB1HENR; /*!< RCC APB1 Peripherals clock Enable High Word register Address offset: 0xA0 */
+ __IO uint32_t APB2ENR; /*!< RCC APB2 Peripherals Clock Enable Register Address offset: 0xA4 */
+ __IO uint32_t APB3ENR; /*!< RCC APB3 Peripherals Clock Enable Register Address offset: 0xA8 */
+ uint32_t RESERVED14; /*!< Reserved Address offset: 0xAC */
+ __IO uint32_t AHB1LPENR; /*!< RCC AHB1 Peripheral sleep clock Register Address offset: 0xB0 */
+ __IO uint32_t AHB2LPENR; /*!< RCC AHB2 Peripheral sleep clock Register Address offset: 0xB4 */
+ uint32_t RESERVED15; /*!< Reserved Address offset: 0xB8 */
+ __IO uint32_t AHB4LPENR; /*!< RCC AHB4 Peripherals sleep clock Register Address offset: 0xBC */
+ uint32_t RESERVED17; /*!< Reserved Address offset: 0xC0 */
+ __IO uint32_t APB1LLPENR; /*!< RCC APB1 Peripherals sleep clock Low Word Register Address offset: 0xC4 */
+ __IO uint32_t APB1HLPENR; /*!< RCC APB1 Peripherals sleep clock High Word Register Address offset: 0xC8 */
+ __IO uint32_t APB2LPENR; /*!< RCC APB2 Peripherals sleep clock Register Address offset: 0xCC */
+ __IO uint32_t APB3LPENR; /*!< RCC APB3 Peripherals Clock Low Power Enable Register Address offset: 0xD0 */
+ uint32_t RESERVED18; /*!< Reserved Address offset: 0xD4 */
+ __IO uint32_t CCIPR1; /*!< RCC IPs Clocks Configuration Register 1 Address offset: 0xD8 */
+ __IO uint32_t CCIPR2; /*!< RCC IPs Clocks Configuration Register 2 Address offset: 0xDC */
+ __IO uint32_t CCIPR3; /*!< RCC IPs Clocks Configuration Register 3 Address offset: 0xE0 */
+ __IO uint32_t CCIPR4; /*!< RCC IPs Clocks Configuration Register 4 Address offset: 0xE4 */
+ __IO uint32_t CCIPR5; /*!< RCC IPs Clocks Configuration Register 5 Address offset: 0xE8 */
+ uint32_t RESERVED19; /*!< Reserved, Address offset: 0xEC */
+ __IO uint32_t BDCR; /*!< RCC VSW Backup Domain & V33 Domain Control Register Address offset: 0xF0 */
+ __IO uint32_t RSR; /*!< RCC Reset status Register Address offset: 0xF4 */
+ uint32_t RESERVED20[6]; /*!< Reserved Address offset: 0xF8 */
+ __IO uint32_t SECCFGR; /*!< RCC Secure mode configuration register Address offset: 0x110 */
+ __IO uint32_t PRIVCFGR; /*!< RCC Privilege configuration register Address offset: 0x114 */
+} RCC_TypeDef;
+
+/**
+ * @brief PKA
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< PKA control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< PKA status register, Address offset: 0x04 */
+ __IO uint32_t CLRFR; /*!< PKA clear flag register, Address offset: 0x08 */
+ uint32_t Reserved[253]; /*!< Reserved memory area Address offset: 0x0C -> 0x03FC */
+ __IO uint32_t RAM[1334]; /*!< PKA RAM Address offset: 0x400 -> 0x18D4 */
+} PKA_TypeDef;
+
+/*
+* @brief RTC Specific device feature definitions
+*/
+#define RTC_BKP_NB 32U
+#define RTC_TAMP_NB 8U
+
+/**
+ * @brief Real-Time Clock
+ */
+typedef struct
+{
+ __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */
+ __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */
+ __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */
+ __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */
+ __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */
+ __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */
+ __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */
+ __IO uint32_t PRIVCFGR; /*!< RTC privilege mode control register, Address offset: 0x1C */
+ __IO uint32_t SECCFGR; /*!< RTC secure mode control register, Address offset: 0x20 */
+ __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */
+ __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */
+ __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */
+ __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */
+ __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */
+ __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */
+ uint32_t RESERVED0; /*!< Reserved, Address offset: 0x3C */
+ __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */
+ __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */
+ __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */
+ __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */
+ __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */
+ __IO uint32_t MISR; /*!< RTC masked interrupt status register, Address offset: 0x54 */
+ __IO uint32_t SMISR; /*!< RTC secure masked interrupt status register, Address offset: 0x58 */
+ __IO uint32_t SCR; /*!< RTC status Clear register, Address offset: 0x5C */
+ __IO uint32_t OR; /*!< RTC option register, Address offset: 0x60 */
+ uint32_t RESERVED1[3];/*!< Reserved, Address offset: 0x64 */
+ __IO uint32_t ALRABINR; /*!< RTC alarm A binary mode register, Address offset: 0x70 */
+ __IO uint32_t ALRBBINR; /*!< RTC alarm B binary mode register, Address offset: 0x74 */
+} RTC_TypeDef;
+
+/**
+ * @brief Tamper and backup registers
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< TAMP control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< TAMP control register 2, Address offset: 0x04 */
+ __IO uint32_t CR3; /*!< TAMP control register 3, Address offset: 0x08 */
+ __IO uint32_t FLTCR; /*!< TAMP filter control register, Address offset: 0x0C */
+ __IO uint32_t ATCR1; /*!< TAMP filter control register 1 Address offset: 0x10 */
+ __IO uint32_t ATSEEDR; /*!< TAMP active tamper seed register, Address offset: 0x14 */
+ __IO uint32_t ATOR; /*!< TAMP active tamper output register, Address offset: 0x18 */
+ __IO uint32_t ATCR2; /*!< TAMP filter control register 2, Address offset: 0x1C */
+ __IO uint32_t SECCFGR; /*!< TAMP secure mode control register, Address offset: 0x20 */
+ __IO uint32_t PRIVCFGR; /*!< TAMP privilege mode control register, Address offset: 0x24 */
+ uint32_t RESERVED0; /*!< Reserved, Address offset: 0x28 */
+ __IO uint32_t IER; /*!< TAMP interrupt enable register, Address offset: 0x2C */
+ __IO uint32_t SR; /*!< TAMP status register, Address offset: 0x30 */
+ __IO uint32_t MISR; /*!< TAMP masked interrupt status register, Address offset: 0x34 */
+ __IO uint32_t SMISR; /*!< TAMP secure masked interrupt status register, Address offset: 0x38 */
+ __IO uint32_t SCR; /*!< TAMP status clear register, Address offset: 0x3C */
+ __IO uint32_t COUNT1R; /*!< TAMP monotonic counter register, Address offset: 0x40 */
+ uint32_t RESERVED1[3];/*!< Reserved, Address offset: 0x44 -- 0x4C */
+ __IO uint32_t OR; /*!< TAMP option register, Address offset: 0x50 */
+ __IO uint32_t ERCFGR; /*!< TAMP erase configuration register, Address offset: 0x54 */
+ uint32_t RESERVED2[42];/*!< Reserved, Address offset: 0x58 -- 0xFC */
+ __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */
+ __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */
+ __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */
+ __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */
+ __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */
+ __IO uint32_t BKP5R; /*!< TAMP backup register 5, Address offset: 0x114 */
+ __IO uint32_t BKP6R; /*!< TAMP backup register 6, Address offset: 0x118 */
+ __IO uint32_t BKP7R; /*!< TAMP backup register 7, Address offset: 0x11C */
+ __IO uint32_t BKP8R; /*!< TAMP backup register 8, Address offset: 0x120 */
+ __IO uint32_t BKP9R; /*!< TAMP backup register 9, Address offset: 0x124 */
+ __IO uint32_t BKP10R; /*!< TAMP backup register 10, Address offset: 0x128 */
+ __IO uint32_t BKP11R; /*!< TAMP backup register 11, Address offset: 0x12C */
+ __IO uint32_t BKP12R; /*!< TAMP backup register 12, Address offset: 0x130 */
+ __IO uint32_t BKP13R; /*!< TAMP backup register 13, Address offset: 0x134 */
+ __IO uint32_t BKP14R; /*!< TAMP backup register 14, Address offset: 0x138 */
+ __IO uint32_t BKP15R; /*!< TAMP backup register 15, Address offset: 0x13C */
+ __IO uint32_t BKP16R; /*!< TAMP backup register 16, Address offset: 0x140 */
+ __IO uint32_t BKP17R; /*!< TAMP backup register 17, Address offset: 0x144 */
+ __IO uint32_t BKP18R; /*!< TAMP backup register 18, Address offset: 0x148 */
+ __IO uint32_t BKP19R; /*!< TAMP backup register 19, Address offset: 0x14C */
+ __IO uint32_t BKP20R; /*!< TAMP backup register 20, Address offset: 0x150 */
+ __IO uint32_t BKP21R; /*!< TAMP backup register 21, Address offset: 0x154 */
+ __IO uint32_t BKP22R; /*!< TAMP backup register 22, Address offset: 0x158 */
+ __IO uint32_t BKP23R; /*!< TAMP backup register 23, Address offset: 0x15C */
+ __IO uint32_t BKP24R; /*!< TAMP backup register 24, Address offset: 0x160 */
+ __IO uint32_t BKP25R; /*!< TAMP backup register 25, Address offset: 0x164 */
+ __IO uint32_t BKP26R; /*!< TAMP backup register 26, Address offset: 0x168 */
+ __IO uint32_t BKP27R; /*!< TAMP backup register 27, Address offset: 0x16C */
+ __IO uint32_t BKP28R; /*!< TAMP backup register 28, Address offset: 0x170 */
+ __IO uint32_t BKP29R; /*!< TAMP backup register 29, Address offset: 0x174 */
+ __IO uint32_t BKP30R; /*!< TAMP backup register 30, Address offset: 0x178 */
+ __IO uint32_t BKP31R; /*!< TAMP backup register 31, Address offset: 0x17C */
+} TAMP_TypeDef;
+
+/**
+ * @brief Universal Synchronous Asynchronous Receiver Transmitter
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */
+ __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */
+ __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */
+ __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */
+ __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */
+ __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */
+ __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */
+ __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */
+ __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */
+ __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */
+ __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */
+} USART_TypeDef;
+
+/**
+ * @brief Serial Audio Interface
+ */
+typedef struct
+{
+ __IO uint32_t GCR; /*!< SAI global configuration register, Address offset: 0x00 */
+ uint32_t RESERVED[16]; /*!< Reserved, Address offset: 0x04 to 0x40 */
+ __IO uint32_t PDMCR; /*!< SAI PDM control register, Address offset: 0x44 */
+ __IO uint32_t PDMDLY; /*!< SAI PDM delay register, Address offset: 0x48 */
+} SAI_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CR1; /*!< SAI block x configuration register 1, Address offset: 0x04 */
+ __IO uint32_t CR2; /*!< SAI block x configuration register 2, Address offset: 0x08 */
+ __IO uint32_t FRCR; /*!< SAI block x frame configuration register, Address offset: 0x0C */
+ __IO uint32_t SLOTR; /*!< SAI block x slot register, Address offset: 0x10 */
+ __IO uint32_t IMR; /*!< SAI block x interrupt mask register, Address offset: 0x14 */
+ __IO uint32_t SR; /*!< SAI block x status register, Address offset: 0x18 */
+ __IO uint32_t CLRFR; /*!< SAI block x clear flag register, Address offset: 0x1C */
+ __IO uint32_t DR; /*!< SAI block x data register, Address offset: 0x20 */
+} SAI_Block_TypeDef;
+/**
+ * @brief System configuration, Boot and Security
+ */
+typedef struct
+{
+ uint32_t RESERVED1[4]; /*!< RESERVED1, Address offset: 0x00 - 0x0C */
+ __IO uint32_t HDPLCR; /*!< SBS HDPL Control Register, Address offset: 0x10 */
+ __IO uint32_t HDPLSR; /*!< SBS HDPL Status Register, Address offset: 0x14 */
+ __IO uint32_t NEXTHDPLCR; /*!< NEXT HDPL Control Register, Address offset: 0x18 */
+ __IO uint32_t RESERVED2; /*!< RESERVED2, Address offset: 0x1C */
+ __IO uint32_t DBGCR; /*!< SBS Debug Control Register, Address offset: 0x20 */
+ __IO uint32_t DBGLOCKR; /*!< SBS Debug Lock Register, Address offset: 0x24 */
+ uint32_t RESERVED3[3]; /*!< RESERVED3, Address offset: 0x28 - 0x30 */
+ __IO uint32_t RSSCMDR; /*!< SBS RSS Command Register, Address offset: 0x34 */
+ uint32_t RESERVED4[26]; /*!< RESERVED4, Address offset: 0x38 - 0x9C */
+ __IO uint32_t EPOCHSELCR; /*!< EPOCH Selection Register, Address offset: 0xA0 */
+ uint32_t RESERVED5[7]; /*!< RESERVED5, Address offset: 0xA4 - 0xBC */
+ __IO uint32_t SECCFGR; /*!< SBS Security Mode Configuration, Address offset: 0xC0 */
+ uint32_t RESERVED6[15]; /*!< RESERVED6, Address offset: 0xC4 - 0xFC */
+ __IO uint32_t PMCR; /*!< SBS Product Mode & Config Register, Address offset: 0x100 */
+ __IO uint32_t FPUIMR; /*!< SBS FPU Interrupt Mask Register, Address offset: 0x104 */
+ __IO uint32_t MESR; /*!< SBS Memory Erase Status Register, Address offset: 0x108 */
+ uint32_t RESERVED7; /*!< RESERVED7, Address offset: 0x10C */
+ __IO uint32_t CCCSR; /*!< SBS Compensation Cell Control & Status Register, Address offset: 0x110 */
+ __IO uint32_t CCVALR; /*!< SBS Compensation Cell Value Register, Address offset: 0x114 */
+ __IO uint32_t CCSWCR; /*!< SBS Compensation Cell for I/Os sw code Register, Address offset: 0x118 */
+ __IO uint32_t RESERVED8; /*!< RESERVED8, Address offset: 0x11C */
+ __IO uint32_t CFGR2; /*!< SBS Class B Register, Address offset: 0x120 */
+ uint32_t RESERVED9[8]; /*!< RESERVED9, Address offset: 0x124 - 0x140 */
+ __IO uint32_t CNSLCKR; /*!< SBS CPU Non-secure Lock Register, Address offset: 0x144 */
+ __IO uint32_t CSLCKR; /*!< SBS CPU Secure Lock Register, Address offset: 0x148 */
+ __IO uint32_t ECCNMIR; /*!< SBS FLITF ECC NMI MASK Register, Address offset: 0x14C */
+} SBS_TypeDef;
+
+/**
+ * @brief Secure digital input/output Interface
+ */
+typedef struct
+{
+ __IO uint32_t POWER; /*!< SDMMC power control register, Address offset: 0x00 */
+ __IO uint32_t CLKCR; /*!< SDMMC clock control register, Address offset: 0x04 */
+ __IO uint32_t ARG; /*!< SDMMC argument register, Address offset: 0x08 */
+ __IO uint32_t CMD; /*!< SDMMC command register, Address offset: 0x0C */
+ __I uint32_t RESPCMD; /*!< SDMMC command response register, Address offset: 0x10 */
+ __I uint32_t RESP1; /*!< SDMMC response 1 register, Address offset: 0x14 */
+ __I uint32_t RESP2; /*!< SDMMC response 2 register, Address offset: 0x18 */
+ __I uint32_t RESP3; /*!< SDMMC response 3 register, Address offset: 0x1C */
+ __I uint32_t RESP4; /*!< SDMMC response 4 register, Address offset: 0x20 */
+ __IO uint32_t DTIMER; /*!< SDMMC data timer register, Address offset: 0x24 */
+ __IO uint32_t DLEN; /*!< SDMMC data length register, Address offset: 0x28 */
+ __IO uint32_t DCTRL; /*!< SDMMC data control register, Address offset: 0x2C */
+ __I uint32_t DCOUNT; /*!< SDMMC data counter register, Address offset: 0x30 */
+ __I uint32_t STA; /*!< SDMMC status register, Address offset: 0x34 */
+ __IO uint32_t ICR; /*!< SDMMC interrupt clear register, Address offset: 0x38 */
+ __IO uint32_t MASK; /*!< SDMMC mask register, Address offset: 0x3C */
+ __IO uint32_t ACKTIME; /*!< SDMMC Acknowledgement timer register, Address offset: 0x40 */
+ uint32_t RESERVED0[3]; /*!< Reserved, 0x44 - 0x4C - 0x4C */
+ __IO uint32_t IDMACTRL; /*!< SDMMC DMA control register, Address offset: 0x50 */
+ __IO uint32_t IDMABSIZE; /*!< SDMMC DMA buffer size register, Address offset: 0x54 */
+ __IO uint32_t IDMABASER; /*!< SDMMC DMA buffer base address register, Address offset: 0x58 */
+ uint32_t RESERVED1[2]; /*!< Reserved, 0x60 */
+ __IO uint32_t IDMALAR; /*!< SDMMC DMA linked list address register, Address offset: 0x64 */
+ __IO uint32_t IDMABAR; /*!< SDMMC DMA linked list memory base register,Address offset: 0x68 */
+ uint32_t RESERVED2[5]; /*!< Reserved, 0x6C-0x7C */
+ __IO uint32_t FIFO; /*!< SDMMC data FIFO register, Address offset: 0x80 */
+} SDMMC_TypeDef;
+
+
+
+/**
+ * @brief Delay Block DLYB
+ */
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< DELAY BLOCK control register, Address offset: 0x00 */
+ __IO uint32_t CFGR; /*!< DELAY BLOCK configuration register, Address offset: 0x04 */
+} DLYB_TypeDef;
+
+/**
+ * @brief UCPD
+ */
+typedef struct
+{
+ __IO uint32_t CFG1; /*!< UCPD configuration register 1, Address offset: 0x00 */
+ __IO uint32_t CFG2; /*!< UCPD configuration register 2, Address offset: 0x04 */
+ __IO uint32_t CFG3; /*!< UCPD configuration register 3, Address offset: 0x08 */
+ __IO uint32_t CR; /*!< UCPD control register, Address offset: 0x0C */
+ __IO uint32_t IMR; /*!< UCPD interrupt mask register, Address offset: 0x10 */
+ __IO uint32_t SR; /*!< UCPD status register, Address offset: 0x14 */
+ __IO uint32_t ICR; /*!< UCPD interrupt flag clear register Address offset: 0x18 */
+ __IO uint32_t TX_ORDSET; /*!< UCPD Tx ordered set type register, Address offset: 0x1C */
+ __IO uint32_t TX_PAYSZ; /*!< UCPD Tx payload size register, Address offset: 0x20 */
+ __IO uint32_t TXDR; /*!< UCPD Tx data register, Address offset: 0x24 */
+ __IO uint32_t RX_ORDSET; /*!< UCPD Rx ordered set type register, Address offset: 0x28 */
+ __IO uint32_t RX_PAYSZ; /*!< UCPD Rx payload size register, Address offset: 0x2C */
+ __IO uint32_t RXDR; /*!< UCPD Rx data register, Address offset: 0x30 */
+ __IO uint32_t RX_ORDEXT1; /*!< UCPD Rx ordered set extension 1 register, Address offset: 0x34 */
+ __IO uint32_t RX_ORDEXT2; /*!< UCPD Rx ordered set extension 2 register, Address offset: 0x38 */
+ uint32_t RESERVED[949];/*!< Reserved, Address offset: 0x3C -- 0x3F0 */
+ __IO uint32_t IPVER; /*!< UCPD IP version register, Address offset: 0x3F4 */
+ __IO uint32_t IPID; /*!< UCPD IP Identification register, Address offset: 0x3F8 */
+ __IO uint32_t MID; /*!< UCPD Magic Identification register, Address offset: 0x3FC */
+} UCPD_TypeDef;
+
+/**
+ * @brief Universal Serial Bus Full Speed Dual Role Device
+ */
+typedef struct
+{
+ __IO uint32_t CHEP0R; /*!< USB Channel/Endpoint 0 register, Address offset: 0x00 */
+ __IO uint32_t CHEP1R; /*!< USB Channel/Endpoint 1 register, Address offset: 0x04 */
+ __IO uint32_t CHEP2R; /*!< USB Channel/Endpoint 2 register, Address offset: 0x08 */
+ __IO uint32_t CHEP3R; /*!< USB Channel/Endpoint 3 register, Address offset: 0x0C */
+ __IO uint32_t CHEP4R; /*!< USB Channel/Endpoint 4 register, Address offset: 0x10 */
+ __IO uint32_t CHEP5R; /*!< USB Channel/Endpoint 5 register, Address offset: 0x14 */
+ __IO uint32_t CHEP6R; /*!< USB Channel/Endpoint 6 register, Address offset: 0x18 */
+ __IO uint32_t CHEP7R; /*!< USB Channel/Endpoint 7 register, Address offset: 0x1C */
+ __IO uint32_t RESERVED0[8]; /*!< Reserved, */
+ __IO uint32_t CNTR; /*!< Control register, Address offset: 0x40 */
+ __IO uint32_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */
+ __IO uint32_t FNR; /*!< Frame number register, Address offset: 0x48 */
+ __IO uint32_t DADDR; /*!< Device address register, Address offset: 0x4C */
+ __IO uint32_t RESERVED1; /*!< Reserved */
+ __IO uint32_t LPMCSR; /*!< LPM Control and Status register, Address offset: 0x54 */
+ __IO uint32_t BCDR; /*!< Battery Charging detector register, Address offset: 0x58 */
+} USB_DRD_TypeDef;
+
+/**
+ * @brief Universal Serial Bus PacketMemoryArea Buffer Descriptor Table
+ */
+typedef struct
+{
+ __IO uint32_t TXBD; /*!= 6010050)
+ #pragma clang diagnostic pop
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning restore
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Address Map ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_Peripheral_peripheralAddr
+ * @{
+ */
+
+/* Internal SRAMs size */
+#define SRAM1_SIZE (0x40000UL) /*!< SRAM1=256k */
+#define SRAM2_SIZE (0x10000UL) /*!< SRAM2=64k */
+#define SRAM3_SIZE (0x50000UL) /*!< SRAM3=320k */
+#define BKPSRAM_SIZE (0x01000UL) /*!< BKPSRAM=4k */
+
+/* Flash, Peripheral and internal SRAMs base addresses - Non secure */
+#define FLASH_BASE_NS (0x08000000UL) /*!< FLASH (up to 2 MB) non-secure base address */
+#define SRAM1_BASE_NS (0x20000000UL) /*!< SRAM1 (256 KB) non-secure base address */
+#define SRAM2_BASE_NS (0x20040000UL) /*!< SRAM2 (64 KB) non-secure base address */
+#define SRAM3_BASE_NS (0x20050000UL) /*!< SRAM3 (320 KB) non-secure base address */
+#define PERIPH_BASE_NS (0x40000000UL) /*!< Peripheral non-secure base address */
+
+/* External memories base addresses - Not aliased */
+#define FMC_BASE (0x60000000UL) /*!< FMC base address */
+#define OCTOSPI1_BASE (0x90000000UL) /*!< OCTOSPI1 memories accessible over AHB base address */
+
+#define FMC_BANK1 FMC_BASE
+#define FMC_BANK1_1 FMC_BANK1
+#define FMC_BANK1_2 (FMC_BANK1 + 0x04000000UL) /*!< FMC Memory Bank1 for SRAM, NOR and PSRAM */
+#define FMC_BANK1_3 (FMC_BANK1 + 0x08000000UL)
+#define FMC_BANK1_4 (FMC_BANK1 + 0x0C000000UL)
+#define FMC_BANK3 (FMC_BASE + 0x20000000UL) /*!< FMC Memory Bank3 for NAND */
+#define FMC_SDRAM_BANK_1 (FMC_BASE + 0x60000000UL) /*!< FMC Memory SDRAM Bank1 */
+#define FMC_SDRAM_BANK_2 (FMC_BASE + 0x70000000UL) /*!< FMC Memory SDRAM Bank2 */
+
+
+/* Peripheral memory map - Non secure */
+#define APB1PERIPH_BASE_NS PERIPH_BASE_NS
+#define APB2PERIPH_BASE_NS (PERIPH_BASE_NS + 0x00010000UL)
+#define AHB1PERIPH_BASE_NS (PERIPH_BASE_NS + 0x00020000UL)
+#define AHB2PERIPH_BASE_NS (PERIPH_BASE_NS + 0x02020000UL)
+#define APB3PERIPH_BASE_NS (PERIPH_BASE_NS + 0x04000000UL)
+#define AHB3PERIPH_BASE_NS (PERIPH_BASE_NS + 0x04020000UL)
+#define AHB4PERIPH_BASE_NS (PERIPH_BASE_NS + 0x06000000UL)
+
+/*!< APB1 Non secure peripherals */
+#define TIM2_BASE_NS (APB1PERIPH_BASE_NS + 0x0000UL)
+#define TIM3_BASE_NS (APB1PERIPH_BASE_NS + 0x0400UL)
+#define TIM4_BASE_NS (APB1PERIPH_BASE_NS + 0x0800UL)
+#define TIM5_BASE_NS (APB1PERIPH_BASE_NS + 0x0C00UL)
+#define TIM6_BASE_NS (APB1PERIPH_BASE_NS + 0x1000UL)
+#define TIM7_BASE_NS (APB1PERIPH_BASE_NS + 0x1400UL)
+#define TIM12_BASE_NS (APB1PERIPH_BASE_NS + 0x1800UL)
+#define TIM13_BASE_NS (APB1PERIPH_BASE_NS + 0x1C00UL)
+#define TIM14_BASE_NS (APB1PERIPH_BASE_NS + 0x2000UL)
+#define WWDG_BASE_NS (APB1PERIPH_BASE_NS + 0x2C00UL)
+#define IWDG_BASE_NS (APB1PERIPH_BASE_NS + 0x3000UL)
+#define SPI2_BASE_NS (APB1PERIPH_BASE_NS + 0x3800UL)
+#define SPI3_BASE_NS (APB1PERIPH_BASE_NS + 0x3C00UL)
+#define USART2_BASE_NS (APB1PERIPH_BASE_NS + 0x4400UL)
+#define USART3_BASE_NS (APB1PERIPH_BASE_NS + 0x4800UL)
+#define UART4_BASE_NS (APB1PERIPH_BASE_NS + 0x4C00UL)
+#define UART5_BASE_NS (APB1PERIPH_BASE_NS + 0x5000UL)
+#define I2C1_BASE_NS (APB1PERIPH_BASE_NS + 0x5400UL)
+#define I2C2_BASE_NS (APB1PERIPH_BASE_NS + 0x5800UL)
+#define I3C1_BASE_NS (APB1PERIPH_BASE_NS + 0x5C00UL)
+#define CRS_BASE_NS (APB1PERIPH_BASE_NS + 0x6000UL)
+#define USART6_BASE_NS (APB1PERIPH_BASE_NS + 0x6400UL)
+#define USART10_BASE_NS (APB1PERIPH_BASE_NS + 0x6800UL)
+#define USART11_BASE_NS (APB1PERIPH_BASE_NS + 0x6C00UL)
+#define CEC_BASE_NS (APB1PERIPH_BASE_NS + 0x7000UL)
+#define UART7_BASE_NS (APB1PERIPH_BASE_NS + 0x7800UL)
+#define UART8_BASE_NS (APB1PERIPH_BASE_NS + 0x7C00UL)
+#define UART9_BASE_NS (APB1PERIPH_BASE_NS + 0x8000UL)
+#define UART12_BASE_NS (APB1PERIPH_BASE_NS + 0x8400UL)
+#define DTS_BASE_NS (APB1PERIPH_BASE_NS + 0x8C00UL)
+#define LPTIM2_BASE_NS (APB1PERIPH_BASE_NS + 0x9400UL)
+#define FDCAN1_BASE_NS (APB1PERIPH_BASE_NS + 0xA400UL)
+#define FDCAN_CONFIG_BASE_NS (APB1PERIPH_BASE_NS + 0xA500UL)
+#define SRAMCAN_BASE_NS (APB1PERIPH_BASE_NS + 0xAC00UL)
+#define UCPD1_BASE_NS (APB1PERIPH_BASE_NS + 0xDC00UL)
+
+/*!< APB2 Non secure peripherals */
+#define TIM1_BASE_NS (APB2PERIPH_BASE_NS + 0x2C00UL)
+#define SPI1_BASE_NS (APB2PERIPH_BASE_NS + 0x3000UL)
+#define TIM8_BASE_NS (APB2PERIPH_BASE_NS + 0x3400UL)
+#define USART1_BASE_NS (APB2PERIPH_BASE_NS + 0x3800UL)
+#define TIM15_BASE_NS (APB2PERIPH_BASE_NS + 0x4000UL)
+#define TIM16_BASE_NS (APB2PERIPH_BASE_NS + 0x4400UL)
+#define TIM17_BASE_NS (APB2PERIPH_BASE_NS + 0x4800UL)
+#define SPI4_BASE_NS (APB2PERIPH_BASE_NS + 0x4C00UL)
+#define SPI6_BASE_NS (APB2PERIPH_BASE_NS + 0x5000UL)
+#define SAI1_BASE_NS (APB2PERIPH_BASE_NS + 0x5400UL)
+#define SAI1_Block_A_BASE_NS (SAI1_BASE_NS + 0x004UL)
+#define SAI1_Block_B_BASE_NS (SAI1_BASE_NS + 0x024UL)
+#define SAI2_BASE_NS (APB2PERIPH_BASE_NS + 0x5800UL)
+#define SAI2_Block_A_BASE_NS (SAI2_BASE_NS + 0x004UL)
+#define SAI2_Block_B_BASE_NS (SAI2_BASE_NS + 0x024UL)
+#define USB_DRD_BASE_NS (APB2PERIPH_BASE_NS + 0x6000UL)
+#define USB_DRD_PMAADDR_NS (APB2PERIPH_BASE_NS + 0x6400UL)
+
+/*!< AHB1 Non secure peripherals */
+#define GPDMA1_BASE_NS AHB1PERIPH_BASE_NS
+#define GPDMA2_BASE_NS (AHB1PERIPH_BASE_NS + 0x01000UL)
+#define FLASH_R_BASE_NS (AHB1PERIPH_BASE_NS + 0x02000UL)
+#define CRC_BASE_NS (AHB1PERIPH_BASE_NS + 0x03000UL)
+#define CORDIC_BASE_NS (AHB1PERIPH_BASE_NS + 0x03800UL)
+#define FMAC_BASE_NS (AHB1PERIPH_BASE_NS + 0x03C00UL)
+#define RAMCFG_BASE_NS (AHB1PERIPH_BASE_NS + 0x06000UL)
+#define ICACHE_BASE_NS (AHB1PERIPH_BASE_NS + 0x10400UL)
+#define DCACHE1_BASE_NS (AHB1PERIPH_BASE_NS + 0x11400UL)
+#define GTZC_TZSC1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12400UL)
+#define GTZC_TZIC1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12800UL)
+#define GTZC_MPCBB1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12C00UL)
+#define GTZC_MPCBB2_BASE_NS (AHB1PERIPH_BASE_NS + 0x13000UL)
+#define GTZC_MPCBB3_BASE_NS (AHB1PERIPH_BASE_NS + 0x13400UL)
+#define BKPSRAM_BASE_NS (AHB1PERIPH_BASE_NS + 0x16400UL)
+
+#define GPDMA1_Channel0_BASE_NS (GPDMA1_BASE_NS + 0x0050UL)
+#define GPDMA1_Channel1_BASE_NS (GPDMA1_BASE_NS + 0x00D0UL)
+#define GPDMA1_Channel2_BASE_NS (GPDMA1_BASE_NS + 0x0150UL)
+#define GPDMA1_Channel3_BASE_NS (GPDMA1_BASE_NS + 0x01D0UL)
+#define GPDMA1_Channel4_BASE_NS (GPDMA1_BASE_NS + 0x0250UL)
+#define GPDMA1_Channel5_BASE_NS (GPDMA1_BASE_NS + 0x02D0UL)
+#define GPDMA1_Channel6_BASE_NS (GPDMA1_BASE_NS + 0x0350UL)
+#define GPDMA1_Channel7_BASE_NS (GPDMA1_BASE_NS + 0x03D0UL)
+#define GPDMA2_Channel0_BASE_NS (GPDMA2_BASE_NS + 0x0050UL)
+#define GPDMA2_Channel1_BASE_NS (GPDMA2_BASE_NS + 0x00D0UL)
+#define GPDMA2_Channel2_BASE_NS (GPDMA2_BASE_NS + 0x0150UL)
+#define GPDMA2_Channel3_BASE_NS (GPDMA2_BASE_NS + 0x01D0UL)
+#define GPDMA2_Channel4_BASE_NS (GPDMA2_BASE_NS + 0x0250UL)
+#define GPDMA2_Channel5_BASE_NS (GPDMA2_BASE_NS + 0x02D0UL)
+#define GPDMA2_Channel6_BASE_NS (GPDMA2_BASE_NS + 0x0350UL)
+#define GPDMA2_Channel7_BASE_NS (GPDMA2_BASE_NS + 0x03D0UL)
+
+#define RAMCFG_SRAM1_BASE_NS (RAMCFG_BASE_NS)
+#define RAMCFG_SRAM2_BASE_NS (RAMCFG_BASE_NS + 0x0040UL)
+#define RAMCFG_SRAM3_BASE_NS (RAMCFG_BASE_NS + 0x0080UL)
+#define RAMCFG_BKPRAM_BASE_NS (RAMCFG_BASE_NS + 0x0100UL)
+
+/*!< AHB2 Non secure peripherals */
+#define GPIOA_BASE_NS (AHB2PERIPH_BASE_NS + 0x00000UL)
+#define GPIOB_BASE_NS (AHB2PERIPH_BASE_NS + 0x00400UL)
+#define GPIOC_BASE_NS (AHB2PERIPH_BASE_NS + 0x00800UL)
+#define GPIOD_BASE_NS (AHB2PERIPH_BASE_NS + 0x00C00UL)
+#define GPIOE_BASE_NS (AHB2PERIPH_BASE_NS + 0x01000UL)
+#define GPIOF_BASE_NS (AHB2PERIPH_BASE_NS + 0x01400UL)
+#define GPIOG_BASE_NS (AHB2PERIPH_BASE_NS + 0x01800UL)
+#define GPIOH_BASE_NS (AHB2PERIPH_BASE_NS + 0x01C00UL)
+#define GPIOI_BASE_NS (AHB2PERIPH_BASE_NS + 0x02000UL)
+#define ADC1_BASE_NS (AHB2PERIPH_BASE_NS + 0x08000UL)
+#define ADC2_BASE_NS (AHB2PERIPH_BASE_NS + 0x08100UL)
+#define ADC12_COMMON_BASE_NS (AHB2PERIPH_BASE_NS + 0x08300UL)
+#define DAC1_BASE_NS (AHB2PERIPH_BASE_NS + 0x08400UL)
+#define DCMI_BASE_NS (AHB2PERIPH_BASE_NS + 0x0C000UL)
+#define PSSI_BASE_NS (AHB2PERIPH_BASE_NS + 0x0C400UL)
+#define HASH_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0400UL)
+#define HASH_DIGEST_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0710UL)
+#define RNG_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0800UL)
+#define PKA_BASE_NS (AHB2PERIPH_BASE_NS + 0xA2000UL)
+#define PKA_RAM_BASE_NS (AHB2PERIPH_BASE_NS + 0xA2400UL)
+
+/*!< APB3 Non secure peripherals */
+#define SBS_BASE_NS (APB3PERIPH_BASE_NS + 0x0400UL)
+#define SPI5_BASE_NS (APB3PERIPH_BASE_NS + 0x2000UL)
+#define LPUART1_BASE_NS (APB3PERIPH_BASE_NS + 0x2400UL)
+#define I2C3_BASE_NS (APB3PERIPH_BASE_NS + 0x2800UL)
+#define I2C4_BASE_NS (APB3PERIPH_BASE_NS + 0x2C00UL)
+#define LPTIM1_BASE_NS (APB3PERIPH_BASE_NS + 0x4400UL)
+#define LPTIM3_BASE_NS (APB3PERIPH_BASE_NS + 0x4800UL)
+#define LPTIM4_BASE_NS (APB3PERIPH_BASE_NS + 0x4C00UL)
+#define LPTIM5_BASE_NS (APB3PERIPH_BASE_NS + 0x5000UL)
+#define LPTIM6_BASE_NS (APB3PERIPH_BASE_NS + 0x5400UL)
+#define VREFBUF_BASE_NS (APB3PERIPH_BASE_NS + 0x7400UL)
+#define RTC_BASE_NS (APB3PERIPH_BASE_NS + 0x7800UL)
+#define TAMP_BASE_NS (APB3PERIPH_BASE_NS + 0x7C00UL)
+
+/*!< AHB3 Non secure peripherals */
+#define PWR_BASE_NS (AHB3PERIPH_BASE_NS + 0x0800UL)
+#define RCC_BASE_NS (AHB3PERIPH_BASE_NS + 0x0C00UL)
+#define EXTI_BASE_NS (AHB3PERIPH_BASE_NS + 0x2000UL)
+#define DEBUG_BASE_NS (AHB3PERIPH_BASE_NS + 0x4000UL)
+
+/*!< AHB4 Non secure peripherals */
+#define SDMMC1_BASE_NS (AHB4PERIPH_BASE_NS + 0x8000UL)
+#define DLYB_SDMMC1_BASE_NS (AHB4PERIPH_BASE_NS + 0x8400UL)
+#define FMC_R_BASE_NS (AHB4PERIPH_BASE_NS + 0x1000400UL) /*!< FMC control registers base address */
+#define OCTOSPI1_R_BASE_NS (AHB4PERIPH_BASE_NS + 0x1001400UL) /*!< OCTOSPI1 control registers base address */
+#define DLYB_OCTOSPI1_BASE_NS (AHB4PERIPH_BASE_NS + 0x0F000UL)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_BASE_NS (FMC_R_BASE_NS + 0x0000UL)
+#define FMC_Bank1E_R_BASE_NS (FMC_R_BASE_NS + 0x0104UL)
+#define FMC_Bank3_R_BASE_NS (FMC_R_BASE_NS + 0x0080UL)
+#define FMC_Bank5_6_R_BASE_NS (FMC_R_BASE_NS + 0x0140UL)
+
+/* Flash, Peripheral and internal SRAMs base addresses - Secure */
+#define FLASH_BASE_S (0x0C000000UL) /*!< FLASH (up to 2 MB) secure base address */
+#define SRAM1_BASE_S (0x30000000UL) /*!< SRAM1 (256 KB) secure base address */
+#define SRAM2_BASE_S (0x30040000UL) /*!< SRAM2 (64 KB) secure base address */
+#define SRAM3_BASE_S (0x30050000UL) /*!< SRAM3 (320 KB) secure base address */
+#define PERIPH_BASE_S (0x50000000UL) /*!< Peripheral secure base address */
+
+/* Peripheral memory map - Secure */
+#define APB1PERIPH_BASE_S PERIPH_BASE_S
+#define APB2PERIPH_BASE_S (PERIPH_BASE_S + 0x00010000UL)
+#define AHB1PERIPH_BASE_S (PERIPH_BASE_S + 0x00020000UL)
+#define AHB2PERIPH_BASE_S (PERIPH_BASE_S + 0x02020000UL)
+#define APB3PERIPH_BASE_S (PERIPH_BASE_S + 0x04000000UL)
+#define AHB3PERIPH_BASE_S (PERIPH_BASE_S + 0x04020000UL)
+#define AHB4PERIPH_BASE_S (PERIPH_BASE_S + 0x06000000UL)
+
+/*!< APB1 secure peripherals */
+#define TIM2_BASE_S (APB1PERIPH_BASE_S + 0x0000UL)
+#define TIM3_BASE_S (APB1PERIPH_BASE_S + 0x0400UL)
+#define TIM4_BASE_S (APB1PERIPH_BASE_S + 0x0800UL)
+#define TIM5_BASE_S (APB1PERIPH_BASE_S + 0x0C00UL)
+#define TIM6_BASE_S (APB1PERIPH_BASE_S + 0x1000UL)
+#define TIM7_BASE_S (APB1PERIPH_BASE_S + 0x1400UL)
+#define TIM12_BASE_S (APB1PERIPH_BASE_S + 0x1800UL)
+#define TIM13_BASE_S (APB1PERIPH_BASE_S + 0x1C00UL)
+#define TIM14_BASE_S (APB1PERIPH_BASE_S + 0x2000UL)
+#define WWDG_BASE_S (APB1PERIPH_BASE_S + 0x2C00UL)
+#define IWDG_BASE_S (APB1PERIPH_BASE_S + 0x3000UL)
+#define SPI2_BASE_S (APB1PERIPH_BASE_S + 0x3800UL)
+#define SPI3_BASE_S (APB1PERIPH_BASE_S + 0x3C00UL)
+#define USART2_BASE_S (APB1PERIPH_BASE_S + 0x4400UL)
+#define USART3_BASE_S (APB1PERIPH_BASE_S + 0x4800UL)
+#define UART4_BASE_S (APB1PERIPH_BASE_S + 0x4C00UL)
+#define UART5_BASE_S (APB1PERIPH_BASE_S + 0x5000UL)
+#define I2C1_BASE_S (APB1PERIPH_BASE_S + 0x5400UL)
+#define I2C2_BASE_S (APB1PERIPH_BASE_S + 0x5800UL)
+#define I3C1_BASE_S (APB1PERIPH_BASE_S + 0x5C00UL)
+#define CRS_BASE_S (APB1PERIPH_BASE_S + 0x6000UL)
+#define USART6_BASE_S (APB1PERIPH_BASE_S + 0x6400UL)
+#define USART10_BASE_S (APB1PERIPH_BASE_S + 0x6800UL)
+#define USART11_BASE_S (APB1PERIPH_BASE_S + 0x6C00UL)
+#define CEC_BASE_S (APB1PERIPH_BASE_S + 0x7000UL)
+#define UART7_BASE_S (APB1PERIPH_BASE_S + 0x7800UL)
+#define UART8_BASE_S (APB1PERIPH_BASE_S + 0x7C00UL)
+#define UART9_BASE_S (APB1PERIPH_BASE_S + 0x8000UL)
+#define UART12_BASE_S (APB1PERIPH_BASE_S + 0x8400UL)
+#define DTS_BASE_S (APB1PERIPH_BASE_S + 0x8C00UL)
+#define LPTIM2_BASE_S (APB1PERIPH_BASE_S + 0x9400UL)
+#define FDCAN1_BASE_S (APB1PERIPH_BASE_S + 0xA400UL)
+#define FDCAN_CONFIG_BASE_S (APB1PERIPH_BASE_S + 0xA500UL)
+#define SRAMCAN_BASE_S (APB1PERIPH_BASE_S + 0xAC00UL)
+#define UCPD1_BASE_S (APB1PERIPH_BASE_S + 0xDC00UL)
+
+/*!< APB2 Secure peripherals */
+#define TIM1_BASE_S (APB2PERIPH_BASE_S + 0x2C00UL)
+#define SPI1_BASE_S (APB2PERIPH_BASE_S + 0x3000UL)
+#define TIM8_BASE_S (APB2PERIPH_BASE_S + 0x3400UL)
+#define USART1_BASE_S (APB2PERIPH_BASE_S + 0x3800UL)
+#define TIM15_BASE_S (APB2PERIPH_BASE_S + 0x4000UL)
+#define TIM16_BASE_S (APB2PERIPH_BASE_S + 0x4400UL)
+#define TIM17_BASE_S (APB2PERIPH_BASE_S + 0x4800UL)
+#define SPI4_BASE_S (APB2PERIPH_BASE_S + 0x4C00UL)
+#define SPI6_BASE_S (APB2PERIPH_BASE_S + 0x5000UL)
+#define SAI1_BASE_S (APB2PERIPH_BASE_S + 0x5400UL)
+#define SAI1_Block_A_BASE_S (SAI1_BASE_S + 0x004UL)
+#define SAI1_Block_B_BASE_S (SAI1_BASE_S + 0x024UL)
+#define SAI2_BASE_S (APB2PERIPH_BASE_S + 0x5800UL)
+#define SAI2_Block_A_BASE_S (SAI2_BASE_S + 0x004UL)
+#define SAI2_Block_B_BASE_S (SAI2_BASE_S + 0x024UL)
+#define USB_DRD_BASE_S (APB2PERIPH_BASE_S + 0x6000UL)
+#define USB_DRD_PMAADDR_S (APB2PERIPH_BASE_S + 0x6400UL)
+
+/*!< AHB1 secure peripherals */
+#define GPDMA1_BASE_S AHB1PERIPH_BASE_S
+#define GPDMA2_BASE_S (AHB1PERIPH_BASE_S + 0x01000UL)
+#define FLASH_R_BASE_S (AHB1PERIPH_BASE_S + 0x02000UL)
+#define CRC_BASE_S (AHB1PERIPH_BASE_S + 0x03000UL)
+#define CORDIC_BASE_S (AHB1PERIPH_BASE_S + 0x03800UL)
+#define FMAC_BASE_S (AHB1PERIPH_BASE_S + 0x03C00UL)
+#define RAMCFG_BASE_S (AHB1PERIPH_BASE_S + 0x06000UL)
+#define ICACHE_BASE_S (AHB1PERIPH_BASE_S + 0x10400UL)
+#define DCACHE1_BASE_S (AHB1PERIPH_BASE_S + 0x11400UL)
+#define GTZC_TZSC1_BASE_S (AHB1PERIPH_BASE_S + 0x12400UL)
+#define GTZC_TZIC1_BASE_S (AHB1PERIPH_BASE_S + 0x12800UL)
+#define GTZC_MPCBB1_BASE_S (AHB1PERIPH_BASE_S + 0x12C00UL)
+#define GTZC_MPCBB2_BASE_S (AHB1PERIPH_BASE_S + 0x13000UL)
+#define GTZC_MPCBB3_BASE_S (AHB1PERIPH_BASE_S + 0x13400UL)
+#define BKPSRAM_BASE_S (AHB1PERIPH_BASE_S + 0x16400UL)
+#define GPDMA1_Channel0_BASE_S (GPDMA1_BASE_S + 0x0050UL)
+#define GPDMA1_Channel1_BASE_S (GPDMA1_BASE_S + 0x00D0UL)
+#define GPDMA1_Channel2_BASE_S (GPDMA1_BASE_S + 0x0150UL)
+#define GPDMA1_Channel3_BASE_S (GPDMA1_BASE_S + 0x01D0UL)
+#define GPDMA1_Channel4_BASE_S (GPDMA1_BASE_S + 0x0250UL)
+#define GPDMA1_Channel5_BASE_S (GPDMA1_BASE_S + 0x02D0UL)
+#define GPDMA1_Channel6_BASE_S (GPDMA1_BASE_S + 0x0350UL)
+#define GPDMA1_Channel7_BASE_S (GPDMA1_BASE_S + 0x03D0UL)
+#define GPDMA2_Channel0_BASE_S (GPDMA2_BASE_S + 0x0050UL)
+#define GPDMA2_Channel1_BASE_S (GPDMA2_BASE_S + 0x00D0UL)
+#define GPDMA2_Channel2_BASE_S (GPDMA2_BASE_S + 0x0150UL)
+#define GPDMA2_Channel3_BASE_S (GPDMA2_BASE_S + 0x01D0UL)
+#define GPDMA2_Channel4_BASE_S (GPDMA2_BASE_S + 0x0250UL)
+#define GPDMA2_Channel5_BASE_S (GPDMA2_BASE_S + 0x02D0UL)
+#define GPDMA2_Channel6_BASE_S (GPDMA2_BASE_S + 0x0350UL)
+#define GPDMA2_Channel7_BASE_S (GPDMA2_BASE_S + 0x03D0UL)
+#define RAMCFG_SRAM1_BASE_S (RAMCFG_BASE_S)
+#define RAMCFG_SRAM2_BASE_S (RAMCFG_BASE_S + 0x0040UL)
+#define RAMCFG_SRAM3_BASE_S (RAMCFG_BASE_S + 0x0080UL)
+#define RAMCFG_BKPRAM_BASE_S (RAMCFG_BASE_S + 0x0100UL)
+
+/*!< AHB2 secure peripherals */
+#define GPIOA_BASE_S (AHB2PERIPH_BASE_S + 0x00000UL)
+#define GPIOB_BASE_S (AHB2PERIPH_BASE_S + 0x00400UL)
+#define GPIOC_BASE_S (AHB2PERIPH_BASE_S + 0x00800UL)
+#define GPIOD_BASE_S (AHB2PERIPH_BASE_S + 0x00C00UL)
+#define GPIOE_BASE_S (AHB2PERIPH_BASE_S + 0x01000UL)
+#define GPIOF_BASE_S (AHB2PERIPH_BASE_S + 0x01400UL)
+#define GPIOG_BASE_S (AHB2PERIPH_BASE_S + 0x01800UL)
+#define GPIOH_BASE_S (AHB2PERIPH_BASE_S + 0x01C00UL)
+#define GPIOI_BASE_S (AHB2PERIPH_BASE_S + 0x02000UL)
+#define ADC1_BASE_S (AHB2PERIPH_BASE_S + 0x08000UL)
+#define ADC2_BASE_S (AHB2PERIPH_BASE_S + 0x08100UL)
+#define ADC12_COMMON_BASE_S (AHB2PERIPH_BASE_S + 0x08300UL)
+#define DAC1_BASE_S (AHB2PERIPH_BASE_S + 0x08400UL)
+#define DCMI_BASE_S (AHB2PERIPH_BASE_S + 0x0C000UL)
+#define PSSI_BASE_S (AHB2PERIPH_BASE_S + 0x0C400UL)
+#define HASH_BASE_S (AHB2PERIPH_BASE_S + 0xA0400UL)
+#define HASH_DIGEST_BASE_S (AHB2PERIPH_BASE_S + 0xA0710UL)
+#define RNG_BASE_S (AHB2PERIPH_BASE_S + 0xA0800UL)
+#define PKA_BASE_S (AHB2PERIPH_BASE_S + 0xA2000UL)
+#define PKA_RAM_BASE_S (AHB2PERIPH_BASE_S + 0xA2400UL)
+
+/*!< APB3 secure peripherals */
+#define SBS_BASE_S (APB3PERIPH_BASE_S + 0x0400UL)
+#define SPI5_BASE_S (APB3PERIPH_BASE_S + 0x2000UL)
+#define LPUART1_BASE_S (APB3PERIPH_BASE_S + 0x2400UL)
+#define I2C3_BASE_S (APB3PERIPH_BASE_S + 0x2800UL)
+#define I2C4_BASE_S (APB3PERIPH_BASE_S + 0x2C00UL)
+#define LPTIM1_BASE_S (APB3PERIPH_BASE_S + 0x4400UL)
+#define LPTIM3_BASE_S (APB3PERIPH_BASE_S + 0x4800UL)
+#define LPTIM4_BASE_S (APB3PERIPH_BASE_S + 0x4C00UL)
+#define LPTIM5_BASE_S (APB3PERIPH_BASE_S + 0x5000UL)
+#define LPTIM6_BASE_S (APB3PERIPH_BASE_S + 0x5400UL)
+#define VREFBUF_BASE_S (APB3PERIPH_BASE_S + 0x7400UL)
+#define RTC_BASE_S (APB3PERIPH_BASE_S + 0x7800UL)
+#define TAMP_BASE_S (APB3PERIPH_BASE_S + 0x7C00UL)
+
+/*!< AHB3 secure peripherals */
+#define PWR_BASE_S (AHB3PERIPH_BASE_S + 0x0800UL)
+#define RCC_BASE_S (AHB3PERIPH_BASE_S + 0x0C00UL)
+#define EXTI_BASE_S (AHB3PERIPH_BASE_S + 0x2000UL)
+#define DEBUG_BASE_S (AHB3PERIPH_BASE_S + 0x4000UL)
+
+/*!< AHB4 secure peripherals */
+#define SDMMC1_BASE_S (AHB4PERIPH_BASE_S + 0x8000UL)
+#define DLYB_SDMMC1_BASE_S (AHB4PERIPH_BASE_S + 0x8400UL)
+#define FMC_R_BASE_S (AHB4PERIPH_BASE_S + 0x1000400UL) /*!< FMC control registers base address */
+#define OCTOSPI1_R_BASE_S (AHB4PERIPH_BASE_S + 0x1001400UL) /*!< OCTOSPI1 control registers base address */
+#define DLYB_OCTOSPI1_BASE_S (AHB4PERIPH_BASE_S + 0x0F000UL)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_BASE_S (FMC_R_BASE_S + 0x0000UL)
+#define FMC_Bank1E_R_BASE_S (FMC_R_BASE_S + 0x0104UL)
+#define FMC_Bank3_R_BASE_S (FMC_R_BASE_S + 0x0080UL)
+#define FMC_Bank5_6_R_BASE_S (FMC_R_BASE_S + 0x0140UL)
+
+/* Debug MCU registers base address */
+#define DBGMCU_BASE (0x44024000UL)
+#define PACKAGE_BASE (0x08FFF80EUL) /*!< Package data register base address */
+#define UID_BASE (0x08FFF800UL) /*!< Unique device ID register base address */
+#define FLASHSIZE_BASE (0x08FFF80CUL) /*!< Flash size data register base address */
+
+/* Internal Flash OTP Area */
+#define FLASH_OTP_BASE (0x08FFF000UL) /*!< FLASH OTP (one-time programmable) base address */
+#define FLASH_OTP_SIZE (0x800U) /*!< 2048 bytes OTP (one-time programmable) */
+
+/* Flash system Area */
+#define FLASH_SYSTEM_BASE_NS (0x0BF80000UL) /*!< FLASH System non-secure base address */
+#define FLASH_SYSTEM_BASE_S (0x0FF80000UL) /*!< FLASH System secure base address */
+#define FLASH_SYSTEM_SIZE (0x10000U) /*!< 64 Kbytes system Flash */
+
+/* Internal Flash EDATA Area */
+#define FLASH_EDATA_BASE_NS (0x09000000UL) /*!< FLASH high-cycle data non-secure base address */
+#define FLASH_EDATA_BASE_S (0x0D000000UL) /*!< FLASH high-cycle data secure base address */
+#define FLASH_EDATA_SIZE (0x18000U) /*!< 96 KB of Flash high-cycle data */
+
+/* Internal Flash OBK Area */
+#define FLASH_OBK_BASE_NS (0x0BFD0000UL) /*!< FLASH OBK (option byte keys) non-secure base address */
+#define FLASH_OBK_BASE_S (0x0FFD0000UL) /*!< FLASH OBK (option byte keys) secure base address */
+#define FLASH_OBK_SIZE (0x2000U) /*!< 8 KB of option byte keys */
+#define FLASH_OBK_HDPL0_SIZE (0x100U) /*!< 256 Bytes of HDPL1 option byte keys */
+
+#define FLASH_OBK_HDPL1_BASE_NS (FLASH_OBK_BASE_NS + FLASH_OBK_HDPL0_SIZE) /*!< FLASH OBK HDPL1 non-secure base address */
+#define FLASH_OBK_HDPL1_BASE_S (FLASH_OBK_BASE_S + FLASH_OBK_HDPL0_SIZE) /*!< FLASH OBK HDPL1 secure base address */
+#define FLASH_OBK_HDPL1_SIZE (0x800U) /*!< 2 KB of HDPL1 option byte keys */
+
+#define FLASH_OBK_HDPL2_BASE_NS (FLASH_OBK_HDPL1_BASE_NS + FLASH_OBK_HDPL1_SIZE) /*!< FLASH OBK HDPL2 non-secure base address */
+#define FLASH_OBK_HDPL2_BASE_S (FLASH_OBK_HDPL1_BASE_S + FLASH_OBK_HDPL1_SIZE) /*!< FLASH OBK HDPL2 secure base address */
+#define FLASH_OBK_HDPL2_SIZE (0x300U) /*!< 768 Bytes of HDPL2 option byte keys */
+
+#define FLASH_OBK_HDPL3_BASE_NS (FLASH_OBK_HDPL2_BASE_NS + FLASH_OBK_HDPL2_SIZE) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3_BASE_S (FLASH_OBK_HDPL2_BASE_S + FLASH_OBK_HDPL2_SIZE) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3_SIZE (0x13F0U) /*!< 5104 Bytes HDPL3 option byte keys */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+#define FLASH_OBK_HDPL3S_BASE_NS (FLASH_OBK_HDPL3_BASE_NS) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3S_BASE_S (FLASH_OBK_HDPL3_BASE_S) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3S_SIZE (0x0C00U) /*!< 3072 Bytes of secure HDPL3 option byte keys */
+
+#define FLASH_OBK_HDPL3NS_BASE_NS (FLASH_OBK_HDPL3_BASE_NS + FLASH_OBK_HDPL3S_SIZE) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3NS_BASE_S (FLASH_OBK_HDPL3_BASE_S + FLASH_OBK_HDPL3S_SIZE) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3NS_SIZE (FLASH_OBK_HDPL3_SIZE - FLASH_OBK_HDPL3S_SIZE) /*!< 2032 Bytes of non-secure HDPL3 option byte keys */
+#endif /* CMSE */
+
+/*!< Root Secure Service Library */
+/************ RSSLIB SAU system Flash region definition constants *************/
+#define RSSLIB_SYS_FLASH_NS_PFUNC_START (0xBF9FB68UL)
+#define RSSLIB_SYS_FLASH_NS_PFUNC_END (0xBF9FB84UL)
+
+/************ RSSLIB function return constants ********************************/
+#define RSSLIB_ERROR (0xF5F5F5F5UL)
+#define RSSLIB_SUCCESS (0xEAEAEAEAUL)
+
+/*!< RSSLIB pointer function structure address definition */
+#define RSSLIB_PFUNC_BASE (0xBF9FB68UL)
+#define RSSLIB_PFUNC ((RSSLIB_pFunc_TypeDef *)RSSLIB_PFUNC_BASE)
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level2 Function
+ * @detail This function increments HDP level up to HDP level 2
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl2_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl3_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it jumps to the non-secure reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl3NS_TypeDef)(uint32_t VectorTableAddr);
+
+/**
+ * @brief Input parameter definition of RSSLIB_DataProvisioning
+ */
+typedef struct
+{
+ uint32_t *pSource; /*!< Address of the Data to be provisioned, shall be in SRAM3 */
+ uint32_t *pDestination; /*!< Address in OBKeys sections where to provision Data */
+ uint32_t Size; /*!< Size in bytes of the Data to be provisioned*/
+ uint32_t DoEncryption; /*!< Notifies RSSLIB_DataProvisioning to encrypt or not Data*/
+ uint32_t Crc; /*!< CRC over full Data buffer and previous field in the structure*/
+} RSSLIB_DataProvisioningConf_t;
+
+/**
+ * @brief Prototype of RSSLIB Data Provisioning Function
+ * @detail This function write Data within OBKeys sections.
+ * @param pointer on the structure defining Data to be provisioned and where to
+ * provision them within OBKeys sections.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_NSC_DataProvisioning_TypeDef)(RSSLIB_DataProvisioningConf_t *pConfig);
+
+
+/**
+ * @brief RSSLib secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM RSSLIB_S_JumpHDPlvl2_TypeDef JumpHDPLvl2;
+ __IM RSSLIB_S_JumpHDPlvl3_TypeDef JumpHDPLvl3;
+ __IM RSSLIB_S_JumpHDPlvl3NS_TypeDef JumpHDPLvl3NS;
+} S_pFuncTypeDef;
+
+/**
+ * @brief RSSLib Non-secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM RSSLIB_NSC_DataProvisioning_TypeDef DataProvisioning;
+} NSC_pFuncTypeDef;
+
+/**
+ * @brief RSSLib function pointer structure
+ */
+typedef struct
+{
+ NSC_pFuncTypeDef NSC;
+ uint32_t RESERVED1[3];
+ S_pFuncTypeDef S;
+}RSSLIB_pFunc_TypeDef;
+
+/*!< Non Secure Service Library */
+/************ RSSLIB SAU system Flash region definition constants *************/
+#define NSSLIB_SYS_FLASH_NS_PFUNC_START (0xBF9FB6CUL)
+#define NSSLIB_SYS_FLASH_NS_PFUNC_END (0xBF9FB74UL)
+
+/************ RSSLIB function return constants ********************************/
+#define NSSLIB_ERROR (0xF5F5F5F5UL)
+#define NSSLIB_SUCCESS (0xEAEAEAEAUL)
+
+/*!< RSSLIB pointer function structure address definition */
+#define NSSLIB_PFUNC_BASE (0xBF9FB6CUL)
+#define NSSLIB_PFUNC ((NSSLIB_pFunc_TypeDef *)NSSLIB_PFUNC_BASE)
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level2 Function
+ * @detail This function increments HDP level up to HDP level 2
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval NSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*NSSLIB_S_JumpHDPlvl2_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval NSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*NSSLIB_S_JumpHDPlvl3_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief RSSLib secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM NSSLIB_S_JumpHDPlvl2_TypeDef JumpHDPLvl2;
+ __IM NSSLIB_S_JumpHDPlvl3_TypeDef JumpHDPLvl3;
+} NSSLIB_pFunc_TypeDef;
+
+
+/** @} */ /* End of group STM32H5xx_Peripheral_peripheralAddr */
+
+
+/* =========================================================================================================================== */
+/* ================ Peripheral declaration ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_Peripheral_declaration
+ * @{
+ */
+
+/*!< APB1 Non secure peripherals */
+#define TIM2_NS ((TIM_TypeDef *)TIM2_BASE_NS)
+#define TIM3_NS ((TIM_TypeDef *)TIM3_BASE_NS)
+#define TIM4_NS ((TIM_TypeDef *)TIM4_BASE_NS)
+#define TIM5_NS ((TIM_TypeDef *)TIM5_BASE_NS)
+#define TIM6_NS ((TIM_TypeDef *)TIM6_BASE_NS)
+#define TIM7_NS ((TIM_TypeDef *)TIM7_BASE_NS)
+#define TIM12_NS ((TIM_TypeDef *)TIM12_BASE_NS)
+#define TIM13_NS ((TIM_TypeDef *)TIM13_BASE_NS)
+#define TIM14_NS ((TIM_TypeDef *)TIM14_BASE_NS)
+#define WWDG_NS ((WWDG_TypeDef *)WWDG_BASE_NS)
+#define IWDG_NS ((IWDG_TypeDef *)IWDG_BASE_NS)
+#define SPI2_NS ((SPI_TypeDef *)SPI2_BASE_NS)
+#define SPI3_NS ((SPI_TypeDef *)SPI3_BASE_NS)
+#define USART2_NS ((USART_TypeDef *)USART2_BASE_NS)
+#define USART3_NS ((USART_TypeDef *)USART3_BASE_NS)
+#define UART4_NS ((USART_TypeDef *)UART4_BASE_NS)
+#define UART5_NS ((USART_TypeDef *)UART5_BASE_NS)
+#define I2C1_NS ((I2C_TypeDef *)I2C1_BASE_NS)
+#define I2C2_NS ((I2C_TypeDef *)I2C2_BASE_NS)
+#define I3C1_NS ((I3C_TypeDef *)I3C1_BASE_NS)
+#define CRS_NS ((CRS_TypeDef *)CRS_BASE_NS)
+#define USART6_NS ((USART_TypeDef *)USART6_BASE_NS)
+#define USART10_NS ((USART_TypeDef *)USART10_BASE_NS)
+#define USART11_NS ((USART_TypeDef *)USART11_BASE_NS)
+#define CEC_NS ((CEC_TypeDef *)CEC_BASE_NS)
+#define UART7_NS ((USART_TypeDef *)UART7_BASE_NS)
+#define UART8_NS ((USART_TypeDef *)UART8_BASE_NS)
+#define UART9_NS ((USART_TypeDef *)UART9_BASE_NS)
+#define UART12_NS ((USART_TypeDef *)UART12_BASE_NS)
+#define DTS_NS ((DTS_TypeDef *)DTS_BASE_NS)
+#define LPTIM2_NS ((LPTIM_TypeDef *)LPTIM2_BASE_NS)
+#define FDCAN1_NS ((FDCAN_GlobalTypeDef *)FDCAN1_BASE_NS)
+#define FDCAN_CONFIG_NS ((FDCAN_Config_TypeDef *)FDCAN_CONFIG_BASE_NS)
+#define UCPD1_NS ((UCPD_TypeDef *)UCPD1_BASE_NS)
+
+/*!< APB2 Non secure peripherals */
+#define TIM1_NS ((TIM_TypeDef *) TIM1_BASE_NS)
+#define SPI1_NS ((SPI_TypeDef *) SPI1_BASE_NS)
+#define TIM8_NS ((TIM_TypeDef *) TIM8_BASE_NS)
+#define USART1_NS ((USART_TypeDef *) USART1_BASE_NS)
+#define TIM15_NS ((TIM_TypeDef *) TIM15_BASE_NS)
+#define TIM16_NS ((TIM_TypeDef *) TIM16_BASE_NS)
+#define TIM17_NS ((TIM_TypeDef *) TIM17_BASE_NS)
+#define SPI4_NS ((SPI_TypeDef *) SPI4_BASE_NS)
+#define SPI6_NS ((SPI_TypeDef *) SPI6_BASE_NS)
+#define SAI1_NS ((SAI_TypeDef *) SAI1_BASE_NS)
+#define SAI1_Block_A_NS ((SAI_Block_TypeDef *)SAI1_Block_A_BASE_NS)
+#define SAI1_Block_B_NS ((SAI_Block_TypeDef *)SAI1_Block_B_BASE_NS)
+#define SAI2_NS ((SAI_TypeDef *) SAI2_BASE_NS)
+#define SAI2_Block_A_NS ((SAI_Block_TypeDef *)SAI2_Block_A_BASE_NS)
+#define SAI2_Block_B_NS ((SAI_Block_TypeDef *)SAI2_Block_B_BASE_NS)
+#define USB_DRD_FS_NS ((USB_DRD_TypeDef *) USB_DRD_BASE_NS)
+#define USB_DRD_PMA_BUFF_NS ((USB_DRD_PMABuffDescTypeDef *) USB_DRD_PMAADDR_NS)
+
+/*!< AHB1 Non secure peripherals */
+#define GPDMA1_NS ((DMA_TypeDef *) GPDMA1_BASE_NS)
+#define GPDMA2_NS ((DMA_TypeDef *) GPDMA2_BASE_NS)
+#define FLASH_NS ((FLASH_TypeDef *) FLASH_R_BASE_NS)
+#define CRC_NS ((CRC_TypeDef *) CRC_BASE_NS)
+#define CORDIC_NS ((CORDIC_TypeDef *) CORDIC_BASE_NS)
+#define FMAC_NS ((FMAC_TypeDef *) FMAC_BASE_NS)
+#define RAMCFG_SRAM1_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM1_BASE_NS)
+#define RAMCFG_SRAM2_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM2_BASE_NS)
+#define RAMCFG_SRAM3_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM3_BASE_NS)
+#define RAMCFG_BKPRAM_NS ((RAMCFG_TypeDef *) RAMCFG_BKPRAM_BASE_NS)
+#define ICACHE_NS ((ICACHE_TypeDef *) ICACHE_BASE_NS)
+#define DCACHE1_NS ((DCACHE_TypeDef *) DCACHE1_BASE_NS)
+#define GTZC_TZSC1_NS ((GTZC_TZSC_TypeDef *) GTZC_TZSC1_BASE_NS)
+#define GTZC_TZIC1_NS ((GTZC_TZIC_TypeDef *) GTZC_TZIC1_BASE_NS)
+#define GTZC_MPCBB1_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB1_BASE_NS)
+#define GTZC_MPCBB2_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB2_BASE_NS)
+#define GTZC_MPCBB3_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB3_BASE_NS)
+#define GPDMA1_Channel0_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel0_BASE_NS)
+#define GPDMA1_Channel1_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel1_BASE_NS)
+#define GPDMA1_Channel2_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel2_BASE_NS)
+#define GPDMA1_Channel3_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel3_BASE_NS)
+#define GPDMA1_Channel4_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel4_BASE_NS)
+#define GPDMA1_Channel5_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel5_BASE_NS)
+#define GPDMA1_Channel6_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel6_BASE_NS)
+#define GPDMA1_Channel7_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel7_BASE_NS)
+#define GPDMA2_Channel0_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel0_BASE_NS)
+#define GPDMA2_Channel1_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel1_BASE_NS)
+#define GPDMA2_Channel2_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel2_BASE_NS)
+#define GPDMA2_Channel3_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel3_BASE_NS)
+#define GPDMA2_Channel4_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel4_BASE_NS)
+#define GPDMA2_Channel5_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel5_BASE_NS)
+#define GPDMA2_Channel6_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel6_BASE_NS)
+#define GPDMA2_Channel7_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel7_BASE_NS)
+
+/*!< AHB2 Non secure peripherals */
+#define GPIOA_NS ((GPIO_TypeDef *) GPIOA_BASE_NS)
+#define GPIOB_NS ((GPIO_TypeDef *) GPIOB_BASE_NS)
+#define GPIOC_NS ((GPIO_TypeDef *) GPIOC_BASE_NS)
+#define GPIOD_NS ((GPIO_TypeDef *) GPIOD_BASE_NS)
+#define GPIOE_NS ((GPIO_TypeDef *) GPIOE_BASE_NS)
+#define GPIOF_NS ((GPIO_TypeDef *) GPIOF_BASE_NS)
+#define GPIOG_NS ((GPIO_TypeDef *) GPIOG_BASE_NS)
+#define GPIOH_NS ((GPIO_TypeDef *) GPIOH_BASE_NS)
+#define GPIOI_NS ((GPIO_TypeDef *) GPIOI_BASE_NS)
+#define ADC1_NS ((ADC_TypeDef *) ADC1_BASE_NS)
+#define ADC2_NS ((ADC_TypeDef *) ADC2_BASE_NS)
+#define ADC12_COMMON_NS ((ADC_Common_TypeDef *) ADC12_COMMON_BASE_NS)
+#define DAC1_NS ((DAC_TypeDef *) DAC1_BASE_NS)
+#define DCMI_NS ((DCMI_TypeDef *) DCMI_BASE_NS)
+#define PSSI_NS ((PSSI_TypeDef *) PSSI_BASE_NS)
+#define HASH_NS ((HASH_TypeDef *) HASH_BASE_NS)
+#define HASH_DIGEST_NS ((HASH_DIGEST_TypeDef *) HASH_DIGEST_BASE_NS)
+#define RNG_NS ((RNG_TypeDef *) RNG_BASE_NS)
+#define PKA_NS ((PKA_TypeDef *) PKA_BASE_NS)
+
+
+/*!< APB3 Non secure peripherals */
+#define SBS_NS ((SBS_TypeDef *) SBS_BASE_NS)
+#define SPI5_NS ((SPI_TypeDef *) SPI5_BASE_NS)
+#define LPUART1_NS ((USART_TypeDef *) LPUART1_BASE_NS)
+#define I2C3_NS ((I2C_TypeDef *) I2C3_BASE_NS)
+#define I2C4_NS ((I2C_TypeDef *) I2C4_BASE_NS)
+#define LPTIM1_NS ((LPTIM_TypeDef *) LPTIM1_BASE_NS)
+#define LPTIM3_NS ((LPTIM_TypeDef *) LPTIM3_BASE_NS)
+#define LPTIM4_NS ((LPTIM_TypeDef *) LPTIM4_BASE_NS)
+#define LPTIM5_NS ((LPTIM_TypeDef *) LPTIM5_BASE_NS)
+#define LPTIM6_NS ((LPTIM_TypeDef *) LPTIM6_BASE_NS)
+#define VREFBUF_NS ((VREFBUF_TypeDef *) VREFBUF_BASE_NS)
+#define RTC_NS ((RTC_TypeDef *) RTC_BASE_NS)
+#define TAMP_NS ((TAMP_TypeDef *) TAMP_BASE_NS)
+
+/*!< AHB3 Non secure peripherals */
+#define PWR_NS ((PWR_TypeDef *) PWR_BASE_NS)
+#define RCC_NS ((RCC_TypeDef *) RCC_BASE_NS)
+#define EXTI_NS ((EXTI_TypeDef *) EXTI_BASE_NS)
+
+/*!< AHB4 Non secure peripherals */
+#define SDMMC1_NS ((SDMMC_TypeDef *) SDMMC1_BASE_NS)
+#define DLYB_SDMMC1_NS ((DLYB_TypeDef *) DLYB_SDMMC1_BASE_NS)
+
+#define OCTOSPI1_NS ((OCTOSPI_TypeDef *) OCTOSPI1_R_BASE_NS)
+#define DLYB_OCTOSPI1_NS ((DLYB_TypeDef *) DLYB_OCTOSPI1_BASE_NS)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_NS ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE_NS)
+#define FMC_Bank1E_R_NS ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE_NS)
+#define FMC_Bank3_R_NS ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE_NS)
+#define FMC_Bank5_6_R_NS ((FMC_Bank5_6_TypeDef *) FMC_Bank5_6_R_BASE_NS)
+
+/*!< APB1 Secure peripherals */
+#define TIM2_S ((TIM_TypeDef *)TIM2_BASE_S)
+#define TIM3_S ((TIM_TypeDef *)TIM3_BASE_S)
+#define TIM4_S ((TIM_TypeDef *)TIM4_BASE_S)
+#define TIM5_S ((TIM_TypeDef *)TIM5_BASE_S)
+#define TIM6_S ((TIM_TypeDef *)TIM6_BASE_S)
+#define TIM7_S ((TIM_TypeDef *)TIM7_BASE_S)
+#define TIM12_S ((TIM_TypeDef *)TIM12_BASE_S)
+#define TIM13_S ((TIM_TypeDef *)TIM13_BASE_S)
+#define TIM14_S ((TIM_TypeDef *)TIM14_BASE_S)
+#define WWDG_S ((WWDG_TypeDef *)WWDG_BASE_S)
+#define IWDG_S ((IWDG_TypeDef *)IWDG_BASE_S)
+#define SPI2_S ((SPI_TypeDef *)SPI2_BASE_S)
+#define SPI3_S ((SPI_TypeDef *)SPI3_BASE_S)
+#define USART2_S ((USART_TypeDef *)USART2_BASE_S)
+#define USART3_S ((USART_TypeDef *)USART3_BASE_S)
+#define UART4_S ((USART_TypeDef *)UART4_BASE_S)
+#define UART5_S ((USART_TypeDef *)UART5_BASE_S)
+#define I2C1_S ((I2C_TypeDef *)I2C1_BASE_S)
+#define I2C2_S ((I2C_TypeDef *)I2C2_BASE_S)
+#define I3C1_S ((I3C_TypeDef *)I3C1_BASE_S)
+#define CRS_S ((CRS_TypeDef *)CRS_BASE_S)
+#define USART6_S ((USART_TypeDef *)USART6_BASE_S)
+#define USART10_S ((USART_TypeDef *)USART10_BASE_S)
+#define USART11_S ((USART_TypeDef *)USART11_BASE_S)
+#define CEC_S ((CEC_TypeDef *)CEC_BASE_S)
+#define UART7_S ((USART_TypeDef *)UART7_BASE_S)
+#define UART8_S ((USART_TypeDef *)UART8_BASE_S)
+#define UART9_S ((USART_TypeDef *)UART9_BASE_S)
+#define UART12_S ((USART_TypeDef *)UART12_BASE_S)
+#define DTS_S ((DTS_TypeDef *)DTS_BASE_S)
+#define LPTIM2_S ((LPTIM_TypeDef *)LPTIM2_BASE_S)
+#define FDCAN1_S ((FDCAN_GlobalTypeDef *)FDCAN1_BASE_S)
+#define FDCAN_CONFIG_S ((FDCAN_Config_TypeDef *)FDCAN_CONFIG_BASE_S)
+#define UCPD1_S ((UCPD_TypeDef *)UCPD1_BASE_S)
+
+/*!< APB2 secure peripherals */
+#define TIM1_S ((TIM_TypeDef *) TIM1_BASE_S)
+#define SPI1_S ((SPI_TypeDef *) SPI1_BASE_S)
+#define TIM8_S ((TIM_TypeDef *) TIM8_BASE_S)
+#define USART1_S ((USART_TypeDef *) USART1_BASE_S)
+#define TIM15_S ((TIM_TypeDef *) TIM15_BASE_S)
+#define TIM16_S ((TIM_TypeDef *) TIM16_BASE_S)
+#define TIM17_S ((TIM_TypeDef *) TIM17_BASE_S)
+#define SPI4_S ((SPI_TypeDef *) SPI4_BASE_S)
+#define SPI6_S ((SPI_TypeDef *) SPI6_BASE_S)
+#define SAI1_S ((SAI_TypeDef *) SAI1_BASE_S)
+#define SAI1_Block_A_S ((SAI_Block_TypeDef *)SAI1_Block_A_BASE_S)
+#define SAI1_Block_B_S ((SAI_Block_TypeDef *)SAI1_Block_B_BASE_S)
+#define SAI2_S ((SAI_TypeDef *) SAI2_BASE_S)
+#define SAI2_Block_A_S ((SAI_Block_TypeDef *)SAI2_Block_A_BASE_S)
+#define SAI2_Block_B_S ((SAI_Block_TypeDef *)SAI2_Block_B_BASE_S)
+#define USB_DRD_FS_S ((USB_DRD_TypeDef *)USB_DRD_BASE_S)
+#define USB_DRD_PMA_BUFF_S ((USB_DRD_PMABuffDescTypeDef *) USB_DRD_PMAADDR_S)
+
+/*!< AHB1 secure peripherals */
+#define GPDMA1_S ((DMA_TypeDef *) GPDMA1_BASE_S)
+#define GPDMA2_S ((DMA_TypeDef *) GPDMA2_BASE_S)
+#define FLASH_S ((FLASH_TypeDef *) FLASH_R_BASE_S)
+#define CRC_S ((CRC_TypeDef *) CRC_BASE_S)
+#define CORDIC_S ((CORDIC_TypeDef *) CORDIC_BASE_S)
+#define FMAC_S ((FMAC_TypeDef *) FMAC_BASE_S)
+#define RAMCFG_SRAM1_S ((RAMCFG_TypeDef *) RAMCFG_SRAM1_BASE_S)
+#define RAMCFG_SRAM2_S ((RAMCFG_TypeDef *) RAMCFG_SRAM2_BASE_S)
+#define RAMCFG_SRAM3_S ((RAMCFG_TypeDef *) RAMCFG_SRAM3_BASE_S)
+#define RAMCFG_BKPRAM_S ((RAMCFG_TypeDef *) RAMCFG_BKPRAM_BASE_S)
+#define ICACHE_S ((ICACHE_TypeDef *) ICACHE_BASE_S)
+#define DCACHE1_S ((DCACHE_TypeDef *) DCACHE1_BASE_S)
+#define GTZC_TZSC1_S ((GTZC_TZSC_TypeDef *) GTZC_TZSC1_BASE_S)
+#define GTZC_TZIC1_S ((GTZC_TZIC_TypeDef *) GTZC_TZIC1_BASE_S)
+#define GTZC_MPCBB1_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB1_BASE_S)
+#define GTZC_MPCBB2_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB2_BASE_S)
+#define GTZC_MPCBB3_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB3_BASE_S)
+#define GPDMA1_Channel0_S ((DMA_Channel_TypeDef *) GPDMA1_Channel0_BASE_S)
+#define GPDMA1_Channel1_S ((DMA_Channel_TypeDef *) GPDMA1_Channel1_BASE_S)
+#define GPDMA1_Channel2_S ((DMA_Channel_TypeDef *) GPDMA1_Channel2_BASE_S)
+#define GPDMA1_Channel3_S ((DMA_Channel_TypeDef *) GPDMA1_Channel3_BASE_S)
+#define GPDMA1_Channel4_S ((DMA_Channel_TypeDef *) GPDMA1_Channel4_BASE_S)
+#define GPDMA1_Channel5_S ((DMA_Channel_TypeDef *) GPDMA1_Channel5_BASE_S)
+#define GPDMA1_Channel6_S ((DMA_Channel_TypeDef *) GPDMA1_Channel6_BASE_S)
+#define GPDMA1_Channel7_S ((DMA_Channel_TypeDef *) GPDMA1_Channel7_BASE_S)
+#define GPDMA2_Channel0_S ((DMA_Channel_TypeDef *) GPDMA2_Channel0_BASE_S)
+#define GPDMA2_Channel1_S ((DMA_Channel_TypeDef *) GPDMA2_Channel1_BASE_S)
+#define GPDMA2_Channel2_S ((DMA_Channel_TypeDef *) GPDMA2_Channel2_BASE_S)
+#define GPDMA2_Channel3_S ((DMA_Channel_TypeDef *) GPDMA2_Channel3_BASE_S)
+#define GPDMA2_Channel4_S ((DMA_Channel_TypeDef *) GPDMA2_Channel4_BASE_S)
+#define GPDMA2_Channel5_S ((DMA_Channel_TypeDef *) GPDMA2_Channel5_BASE_S)
+#define GPDMA2_Channel6_S ((DMA_Channel_TypeDef *) GPDMA2_Channel6_BASE_S)
+#define GPDMA2_Channel7_S ((DMA_Channel_TypeDef *) GPDMA2_Channel7_BASE_S)
+
+
+/*!< AHB2 secure peripherals */
+#define GPIOA_S ((GPIO_TypeDef *) GPIOA_BASE_S)
+#define GPIOB_S ((GPIO_TypeDef *) GPIOB_BASE_S)
+#define GPIOC_S ((GPIO_TypeDef *) GPIOC_BASE_S)
+#define GPIOD_S ((GPIO_TypeDef *) GPIOD_BASE_S)
+#define GPIOE_S ((GPIO_TypeDef *) GPIOE_BASE_S)
+#define GPIOF_S ((GPIO_TypeDef *) GPIOF_BASE_S)
+#define GPIOG_S ((GPIO_TypeDef *) GPIOG_BASE_S)
+#define GPIOH_S ((GPIO_TypeDef *) GPIOH_BASE_S)
+#define GPIOI_S ((GPIO_TypeDef *) GPIOI_BASE_S)
+#define ADC1_S ((ADC_TypeDef *) ADC1_BASE_S)
+#define ADC2_S ((ADC_TypeDef *) ADC2_BASE_S)
+#define ADC12_COMMON_S ((ADC_Common_TypeDef *) ADC12_COMMON_BASE_S)
+#define DAC1_S ((DAC_TypeDef *) DAC1_BASE_S)
+#define DCMI_S ((DCMI_TypeDef *) DCMI_BASE_S)
+#define PSSI_S ((PSSI_TypeDef *) PSSI_BASE_S)
+#define HASH_S ((HASH_TypeDef *) HASH_BASE_S)
+#define HASH_DIGEST_S ((HASH_DIGEST_TypeDef *) HASH_DIGEST_BASE_S)
+#define RNG_S ((RNG_TypeDef *) RNG_BASE_S)
+#define PKA_S ((PKA_TypeDef *) PKA_BASE_S)
+
+/*!< APB3 secure peripherals */
+#define SBS_S ((SBS_TypeDef *) SBS_BASE_S)
+#define SPI5_S ((SPI_TypeDef *) SPI5_BASE_S)
+#define LPUART1_S ((USART_TypeDef *) LPUART1_BASE_S)
+#define I2C3_S ((I2C_TypeDef *) I2C3_BASE_S)
+#define I2C4_S ((I2C_TypeDef *) I2C4_BASE_S)
+#define LPTIM1_S ((LPTIM_TypeDef *) LPTIM1_BASE_S)
+#define LPTIM3_S ((LPTIM_TypeDef *) LPTIM3_BASE_S)
+#define LPTIM4_S ((LPTIM_TypeDef *) LPTIM4_BASE_S)
+#define LPTIM5_S ((LPTIM_TypeDef *) LPTIM5_BASE_S)
+#define LPTIM6_S ((LPTIM_TypeDef *) LPTIM6_BASE_S)
+#define VREFBUF_S ((VREFBUF_TypeDef *) VREFBUF_BASE_S)
+#define RTC_S ((RTC_TypeDef *) RTC_BASE_S)
+#define TAMP_S ((TAMP_TypeDef *) TAMP_BASE_S)
+
+/*!< AHB3 Secure peripherals */
+#define PWR_S ((PWR_TypeDef *) PWR_BASE_S)
+#define RCC_S ((RCC_TypeDef *) RCC_BASE_S)
+#define EXTI_S ((EXTI_TypeDef *) EXTI_BASE_S)
+
+/*!< AHB4 secure peripherals */
+#define SDMMC1_S ((SDMMC_TypeDef *) SDMMC1_BASE_S)
+#define DLYB_SDMMC1_S ((DLYB_TypeDef *) DLYB_SDMMC1_BASE_S)
+
+#define FMC_Bank1_R_S ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE_S)
+#define FMC_Bank1E_R_S ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE_S)
+#define FMC_Bank3_R_S ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE_S)
+#define FMC_Bank5_6_R_S ((FMC_Bank5_6_TypeDef *) FMC_Bank5_6_R_BASE_S)
+
+#define OCTOSPI1_S ((OCTOSPI_TypeDef *) OCTOSPI1_R_BASE_S)
+#define DLYB_OCTOSPI1_S ((DLYB_TypeDef *) DLYB_OCTOSPI1_BASE_S)
+
+#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE)
+
+/*!< Memory & Instance aliases and base addresses for Non-Secure/Secure peripherals */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+
+/*!< Memory base addresses for Secure peripherals */
+#define FLASH_BASE FLASH_BASE_S
+#define FLASH_OBK_BASE FLASH_OBK_BASE_S
+#define FLASH_EDATA_BASE FLASH_EDATA_BASE_S
+#define FLASH_SYSTEM_BASE FLASH_SYSTEM_BASE_S
+#define SRAM1_BASE SRAM1_BASE_S
+#define SRAM2_BASE SRAM2_BASE_S
+#define SRAM3_BASE SRAM3_BASE_S
+#define BKPSRAM_BASE BKPSRAM_BASE_S
+#define PERIPH_BASE PERIPH_BASE_S
+#define APB1PERIPH_BASE APB1PERIPH_BASE_S
+#define APB2PERIPH_BASE APB2PERIPH_BASE_S
+#define APB3PERIPH_BASE APB3PERIPH_BASE_S
+#define AHB1PERIPH_BASE AHB1PERIPH_BASE_S
+#define AHB2PERIPH_BASE AHB2PERIPH_BASE_S
+#define AHB3PERIPH_BASE AHB3PERIPH_BASE_S
+#define AHB4PERIPH_BASE AHB4PERIPH_BASE_S
+
+/*!< Instance aliases and base addresses for Secure peripherals */
+#define CORDIC CORDIC_S
+#define CORDIC_BASE CORDIC_BASE_S
+
+#define RCC RCC_S
+#define RCC_BASE RCC_BASE_S
+
+#define DCMI DCMI_S
+#define DCMI_BASE DCMI_BASE_S
+
+#define PSSI PSSI_S
+#define PSSI_BASE PSSI_BASE_S
+
+#define DTS DTS_S
+#define DTS_BASE DTS_BASE_S
+
+#define FLASH FLASH_S
+#define FLASH_R_BASE FLASH_R_BASE_S
+
+#define FMAC FMAC_S
+#define FMAC_BASE FMAC_BASE_S
+
+#define GPDMA1 GPDMA1_S
+#define GPDMA1_BASE GPDMA1_BASE_S
+
+#define GPDMA1_Channel0 GPDMA1_Channel0_S
+#define GPDMA1_Channel0_BASE GPDMA1_Channel0_BASE_S
+
+#define GPDMA1_Channel1 GPDMA1_Channel1_S
+#define GPDMA1_Channel1_BASE GPDMA1_Channel1_BASE_S
+
+#define GPDMA1_Channel2 GPDMA1_Channel2_S
+#define GPDMA1_Channel2_BASE GPDMA1_Channel2_BASE_S
+
+#define GPDMA1_Channel3 GPDMA1_Channel3_S
+#define GPDMA1_Channel3_BASE GPDMA1_Channel3_BASE_S
+
+#define GPDMA1_Channel4 GPDMA1_Channel4_S
+#define GPDMA1_Channel4_BASE GPDMA1_Channel4_BASE_S
+
+#define GPDMA1_Channel5 GPDMA1_Channel5_S
+#define GPDMA1_Channel5_BASE GPDMA1_Channel5_BASE_S
+
+#define GPDMA1_Channel6 GPDMA1_Channel6_S
+#define GPDMA1_Channel6_BASE GPDMA1_Channel6_BASE_S
+
+#define GPDMA1_Channel7 GPDMA1_Channel7_S
+#define GPDMA1_Channel7_BASE GPDMA1_Channel7_BASE_S
+
+#define GPDMA2 GPDMA2_S
+#define GPDMA2_BASE GPDMA2_BASE_S
+
+#define GPDMA2_Channel0 GPDMA2_Channel0_S
+#define GPDMA2_Channel0_BASE GPDMA2_Channel0_BASE_S
+
+#define GPDMA2_Channel1 GPDMA2_Channel1_S
+#define GPDMA2_Channel1_BASE GPDMA2_Channel1_BASE_S
+
+#define GPDMA2_Channel2 GPDMA2_Channel2_S
+#define GPDMA2_Channel2_BASE GPDMA2_Channel2_BASE_S
+
+#define GPDMA2_Channel3 GPDMA2_Channel3_S
+#define GPDMA2_Channel3_BASE GPDMA2_Channel3_BASE_S
+
+#define GPDMA2_Channel4 GPDMA2_Channel4_S
+#define GPDMA2_Channel4_BASE GPDMA2_Channel4_BASE_S
+
+#define GPDMA2_Channel5 GPDMA2_Channel5_S
+#define GPDMA2_Channel5_BASE GPDMA2_Channel5_BASE_S
+
+#define GPDMA2_Channel6 GPDMA2_Channel6_S
+#define GPDMA2_Channel6_BASE GPDMA2_Channel6_BASE_S
+
+#define GPDMA2_Channel7 GPDMA2_Channel7_S
+#define GPDMA2_Channel7_BASE GPDMA2_Channel7_BASE_S
+
+#define GPIOA GPIOA_S
+#define GPIOA_BASE GPIOA_BASE_S
+
+#define GPIOB GPIOB_S
+#define GPIOB_BASE GPIOB_BASE_S
+
+#define GPIOC GPIOC_S
+#define GPIOC_BASE GPIOC_BASE_S
+
+#define GPIOD GPIOD_S
+#define GPIOD_BASE GPIOD_BASE_S
+
+#define GPIOE GPIOE_S
+#define GPIOE_BASE GPIOE_BASE_S
+
+#define GPIOF GPIOF_S
+#define GPIOF_BASE GPIOF_BASE_S
+
+#define GPIOG GPIOG_S
+#define GPIOG_BASE GPIOG_BASE_S
+
+#define GPIOH GPIOH_S
+#define GPIOH_BASE GPIOH_BASE_S
+
+#define GPIOI GPIOI_S
+#define GPIOI_BASE GPIOI_BASE_S
+
+#define PWR PWR_S
+#define PWR_BASE PWR_BASE_S
+
+#define RAMCFG_SRAM1 RAMCFG_SRAM1_S
+#define RAMCFG_SRAM1_BASE RAMCFG_SRAM1_BASE_S
+
+#define RAMCFG_SRAM2 RAMCFG_SRAM2_S
+#define RAMCFG_SRAM2_BASE RAMCFG_SRAM2_BASE_S
+
+#define RAMCFG_SRAM3 RAMCFG_SRAM3_S
+#define RAMCFG_SRAM3_BASE RAMCFG_SRAM3_BASE_S
+
+#define RAMCFG_BKPRAM RAMCFG_BKPRAM_S
+#define RAMCFG_BKPRAM_BASE RAMCFG_BKPRAM_BASE_S
+
+#define EXTI EXTI_S
+#define EXTI_BASE EXTI_BASE_S
+
+#define ICACHE ICACHE_S
+#define ICACHE_BASE ICACHE_BASE_S
+
+#define DCACHE1 DCACHE1_S
+#define DCACHE1_BASE DCACHE1_BASE_S
+
+#define GTZC_TZSC1 GTZC_TZSC1_S
+#define GTZC_TZSC1_BASE GTZC_TZSC1_BASE_S
+
+#define GTZC_TZIC1 GTZC_TZIC1_S
+#define GTZC_TZIC1_BASE GTZC_TZIC1_BASE_S
+
+#define GTZC_MPCBB1 GTZC_MPCBB1_S
+#define GTZC_MPCBB1_BASE GTZC_MPCBB1_BASE_S
+
+#define GTZC_MPCBB2 GTZC_MPCBB2_S
+#define GTZC_MPCBB2_BASE GTZC_MPCBB2_BASE_S
+
+#define GTZC_MPCBB3 GTZC_MPCBB3_S
+#define GTZC_MPCBB3_BASE GTZC_MPCBB3_BASE_S
+
+#define RTC RTC_S
+#define RTC_BASE RTC_BASE_S
+
+#define TAMP TAMP_S
+#define TAMP_BASE TAMP_BASE_S
+
+#define TIM1 TIM1_S
+#define TIM1_BASE TIM1_BASE_S
+
+#define TIM2 TIM2_S
+#define TIM2_BASE TIM2_BASE_S
+
+#define TIM3 TIM3_S
+#define TIM3_BASE TIM3_BASE_S
+
+#define TIM4 TIM4_S
+#define TIM4_BASE TIM4_BASE_S
+
+#define TIM5 TIM5_S
+#define TIM5_BASE TIM5_BASE_S
+
+#define TIM6 TIM6_S
+#define TIM6_BASE TIM6_BASE_S
+
+#define TIM7 TIM7_S
+#define TIM7_BASE TIM7_BASE_S
+
+#define TIM8 TIM8_S
+#define TIM8_BASE TIM8_BASE_S
+
+#define TIM15 TIM15_S
+#define TIM15_BASE TIM15_BASE_S
+
+#define TIM12 TIM12_S
+#define TIM12_BASE TIM12_BASE_S
+
+#define TIM13 TIM13_S
+#define TIM13_BASE TIM13_BASE_S
+
+#define TIM14 TIM14_S
+#define TIM14_BASE TIM14_BASE_S
+
+#define TIM16 TIM16_S
+#define TIM16_BASE TIM16_BASE_S
+
+#define TIM17 TIM17_S
+#define TIM17_BASE TIM17_BASE_S
+
+#define WWDG WWDG_S
+#define WWDG_BASE WWDG_BASE_S
+
+#define IWDG IWDG_S
+#define IWDG_BASE IWDG_BASE_S
+
+#define SPI1 SPI1_S
+#define SPI1_BASE SPI1_BASE_S
+
+#define SPI2 SPI2_S
+#define SPI2_BASE SPI2_BASE_S
+
+#define SPI3 SPI3_S
+#define SPI3_BASE SPI3_BASE_S
+
+#define SPI4 SPI4_S
+#define SPI4_BASE SPI4_BASE_S
+
+#define SPI5 SPI5_S
+#define SPI5_BASE SPI5_BASE_S
+
+#define SPI6 SPI6_S
+#define SPI6_BASE SPI6_BASE_S
+
+#define USART1 USART1_S
+#define USART1_BASE USART1_BASE_S
+
+#define USART2 USART2_S
+#define USART2_BASE USART2_BASE_S
+
+#define USART3 USART3_S
+#define USART3_BASE USART3_BASE_S
+
+#define UART4 UART4_S
+#define UART4_BASE UART4_BASE_S
+
+#define UART5 UART5_S
+#define UART5_BASE UART5_BASE_S
+
+#define USART6 USART6_S
+#define USART6_BASE USART6_BASE_S
+
+#define UART7 UART7_S
+#define UART7_BASE UART7_BASE_S
+
+#define UART8 UART8_S
+#define UART8_BASE UART8_BASE_S
+
+#define UART9 UART9_S
+#define UART9_BASE UART9_BASE_S
+
+#define USART10 USART10_S
+#define USART10_BASE USART10_BASE_S
+
+#define USART11 USART11_S
+#define USART11_BASE USART11_BASE_S
+
+#define UART12 UART12_S
+#define UART12_BASE UART12_BASE_S
+
+#define CEC CEC_S
+#define CEC_BASE CEC_BASE_S
+
+#define I2C1 I2C1_S
+#define I2C1_BASE I2C1_BASE_S
+
+#define I2C2 I2C2_S
+#define I2C2_BASE I2C2_BASE_S
+
+#define I2C3 I2C3_S
+#define I2C3_BASE I2C3_BASE_S
+
+#define I2C4 I2C4_S
+#define I2C4_BASE I2C4_BASE_S
+
+#define I3C1 I3C1_S
+#define I3C1_BASE I3C1_BASE_S
+
+#define CRS CRS_S
+#define CRS_BASE CRS_BASE_S
+
+#define FDCAN1 FDCAN1_S
+#define FDCAN1_BASE FDCAN1_BASE_S
+
+#define FDCAN_CONFIG FDCAN_CONFIG_S
+#define FDCAN_CONFIG_BASE FDCAN_CONFIG_BASE_S
+#define SRAMCAN_BASE SRAMCAN_BASE_S
+
+
+#define DAC1 DAC1_S
+#define DAC1_BASE DAC1_BASE_S
+
+#define LPTIM1 LPTIM1_S
+#define LPTIM1_BASE LPTIM1_BASE_S
+
+#define LPTIM2 LPTIM2_S
+#define LPTIM2_BASE LPTIM2_BASE_S
+
+#define LPTIM3 LPTIM3_S
+#define LPTIM3_BASE LPTIM3_BASE_S
+
+#define LPTIM4 LPTIM4_S
+#define LPTIM4_BASE LPTIM4_BASE_S
+
+#define LPTIM5 LPTIM5_S
+#define LPTIM5_BASE LPTIM5_BASE_S
+
+#define LPTIM6 LPTIM6_S
+#define LPTIM6_BASE LPTIM6_BASE_S
+
+#define LPUART1 LPUART1_S
+#define LPUART1_BASE LPUART1_BASE_S
+
+#define UCPD1 UCPD1_S
+#define UCPD1_BASE UCPD1_BASE_S
+
+#define SBS SBS_S
+#define SBS_BASE SBS_BASE_S
+
+#define VREFBUF VREFBUF_S
+#define VREFBUF_BASE VREFBUF_BASE_S
+
+#define SAI1 SAI1_S
+#define SAI1_BASE SAI1_BASE_S
+
+#define SAI1_Block_A SAI1_Block_A_S
+#define SAI1_Block_A_BASE SAI1_Block_A_BASE_S
+
+#define SAI1_Block_B SAI1_Block_B_S
+#define SAI1_Block_B_BASE SAI1_Block_B_BASE_S
+
+#define SAI2 SAI2_S
+#define SAI2_BASE SAI2_BASE_S
+
+#define SAI2_Block_A SAI2_Block_A_S
+#define SAI2_Block_A_BASE SAI2_Block_A_BASE_S
+
+#define SAI2_Block_B SAI2_Block_B_S
+#define SAI2_Block_B_BASE SAI2_Block_B_BASE_S
+
+#define USB_DRD_FS USB_DRD_FS_S
+#define USB_DRD_BASE USB_DRD_BASE_S
+#define USB_DRD_PMAADDR USB_DRD_PMAADDR_S
+#define USB_DRD_PMA_BUFF USB_DRD_PMA_BUFF_S
+
+#define CRC CRC_S
+#define CRC_BASE CRC_BASE_S
+
+#define ADC1 ADC1_S
+#define ADC1_BASE ADC1_BASE_S
+
+#define ADC2 ADC2_S
+#define ADC2_BASE ADC2_BASE_S
+
+#define ADC12_COMMON ADC12_COMMON_S
+#define ADC12_COMMON_BASE ADC12_COMMON_BASE_S
+
+#define HASH HASH_S
+#define HASH_BASE HASH_BASE_S
+
+#define HASH_DIGEST HASH_DIGEST_S
+#define HASH_DIGEST_BASE HASH_DIGEST_BASE_S
+
+#define RNG RNG_S
+#define RNG_BASE RNG_BASE_S
+
+#define PKA PKA_S
+#define PKA_BASE PKA_BASE_S
+#define PKA_RAM_BASE PKA_RAM_BASE_S
+
+
+#define SDMMC1 SDMMC1_S
+#define SDMMC1_BASE SDMMC1_BASE_S
+
+
+#define FMC_Bank1_R FMC_Bank1_R_S
+#define FMC_Bank1_R_BASE FMC_Bank1_R_BASE_S
+
+#define FMC_Bank1E_R FMC_Bank1E_R_S
+#define FMC_Bank1E_R_BASE FMC_Bank1E_R_BASE_S
+
+#define FMC_Bank3_R FMC_Bank3_R_S
+#define FMC_Bank3_R_BASE FMC_Bank3_R_BASE_S
+
+#define FMC_Bank5_6_R FMC_Bank5_6_R_S
+#define FMC_Bank5_6_R_BASE FMC_Bank5_6_R_BASE_S
+
+#define OCTOSPI1 OCTOSPI1_S
+#define OCTOSPI1_R_BASE OCTOSPI1_R_BASE_S
+
+#define DLYB_SDMMC1 DLYB_SDMMC1_S
+#define DLYB_SDMMC1_BASE DLYB_SDMMC1_BASE_S
+
+#define DLYB_OCTOSPI1 DLYB_OCTOSPI1_S
+#define DLYB_OCTOSPI1_BASE DLYB_OCTOSPI1_BASE_S
+
+#else
+
+/*!< Memory base addresses for Non secure peripherals */
+#define FLASH_BASE FLASH_BASE_NS
+#define FLASH_OBK_BASE FLASH_OBK_BASE_NS
+#define FLASH_EDATA_BASE FLASH_EDATA_BASE_NS
+#define FLASH_SYSTEM_BASE FLASH_SYSTEM_BASE_NS
+
+#define SRAM1_BASE SRAM1_BASE_NS
+#define SRAM2_BASE SRAM2_BASE_NS
+
+#define SRAM3_BASE SRAM3_BASE_NS
+#define BKPSRAM_BASE BKPSRAM_BASE_NS
+
+#define PERIPH_BASE PERIPH_BASE_NS
+#define APB1PERIPH_BASE APB1PERIPH_BASE_NS
+#define APB2PERIPH_BASE APB2PERIPH_BASE_NS
+#define APB3PERIPH_BASE APB3PERIPH_BASE_NS
+#define AHB1PERIPH_BASE AHB1PERIPH_BASE_NS
+#define AHB2PERIPH_BASE AHB2PERIPH_BASE_NS
+#define AHB3PERIPH_BASE AHB3PERIPH_BASE_NS
+#define AHB4PERIPH_BASE AHB4PERIPH_BASE_NS
+
+/*!< Instance aliases and base addresses for Non secure peripherals */
+#define CORDIC CORDIC_NS
+#define CORDIC_BASE CORDIC_BASE_NS
+
+#define RCC RCC_NS
+#define RCC_BASE RCC_BASE_NS
+
+#define DCMI DCMI_NS
+#define DCMI_BASE DCMI_BASE_NS
+
+#define PSSI PSSI_NS
+#define PSSI_BASE PSSI_BASE_NS
+
+#define DTS DTS_NS
+#define DTS_BASE DTS_BASE_NS
+
+#define FLASH FLASH_NS
+#define FLASH_R_BASE FLASH_R_BASE_NS
+
+#define FMAC FMAC_NS
+#define FMAC_BASE FMAC_BASE_NS
+
+#define GPDMA1 GPDMA1_NS
+#define GPDMA1_BASE GPDMA1_BASE_NS
+
+#define GPDMA1_Channel0 GPDMA1_Channel0_NS
+#define GPDMA1_Channel0_BASE GPDMA1_Channel0_BASE_NS
+
+#define GPDMA1_Channel1 GPDMA1_Channel1_NS
+#define GPDMA1_Channel1_BASE GPDMA1_Channel1_BASE_NS
+
+#define GPDMA1_Channel2 GPDMA1_Channel2_NS
+#define GPDMA1_Channel2_BASE GPDMA1_Channel2_BASE_NS
+
+#define GPDMA1_Channel3 GPDMA1_Channel3_NS
+#define GPDMA1_Channel3_BASE GPDMA1_Channel3_BASE_NS
+
+#define GPDMA1_Channel4 GPDMA1_Channel4_NS
+#define GPDMA1_Channel4_BASE GPDMA1_Channel4_BASE_NS
+
+#define GPDMA1_Channel5 GPDMA1_Channel5_NS
+#define GPDMA1_Channel5_BASE GPDMA1_Channel5_BASE_NS
+
+#define GPDMA1_Channel6 GPDMA1_Channel6_NS
+#define GPDMA1_Channel6_BASE GPDMA1_Channel6_BASE_NS
+
+#define GPDMA1_Channel7 GPDMA1_Channel7_NS
+#define GPDMA1_Channel7_BASE GPDMA1_Channel7_BASE_NS
+
+#define GPDMA2 GPDMA2_NS
+#define GPDMA2_BASE GPDMA2_BASE_NS
+
+#define GPDMA2_Channel0 GPDMA2_Channel0_NS
+#define GPDMA2_Channel0_BASE GPDMA2_Channel0_BASE_NS
+
+#define GPDMA2_Channel1 GPDMA2_Channel1_NS
+#define GPDMA2_Channel1_BASE GPDMA2_Channel1_BASE_NS
+
+#define GPDMA2_Channel2 GPDMA2_Channel2_NS
+#define GPDMA2_Channel2_BASE GPDMA2_Channel2_BASE_NS
+
+#define GPDMA2_Channel3 GPDMA2_Channel3_NS
+#define GPDMA2_Channel3_BASE GPDMA2_Channel3_BASE_NS
+
+#define GPDMA2_Channel4 GPDMA2_Channel4_NS
+#define GPDMA2_Channel4_BASE GPDMA2_Channel4_BASE_NS
+
+#define GPDMA2_Channel5 GPDMA2_Channel5_NS
+#define GPDMA2_Channel5_BASE GPDMA2_Channel5_BASE_NS
+
+#define GPDMA2_Channel6 GPDMA2_Channel6_NS
+#define GPDMA2_Channel6_BASE GPDMA2_Channel6_BASE_NS
+
+#define GPDMA2_Channel7 GPDMA2_Channel7_NS
+#define GPDMA2_Channel7_BASE GPDMA2_Channel7_BASE_NS
+
+#define GPIOA GPIOA_NS
+#define GPIOA_BASE GPIOA_BASE_NS
+
+#define GPIOB GPIOB_NS
+#define GPIOB_BASE GPIOB_BASE_NS
+
+#define GPIOC GPIOC_NS
+#define GPIOC_BASE GPIOC_BASE_NS
+
+#define GPIOD GPIOD_NS
+#define GPIOD_BASE GPIOD_BASE_NS
+
+#define GPIOE GPIOE_NS
+#define GPIOE_BASE GPIOE_BASE_NS
+
+#define GPIOF GPIOF_NS
+#define GPIOF_BASE GPIOF_BASE_NS
+
+#define GPIOG GPIOG_NS
+#define GPIOG_BASE GPIOG_BASE_NS
+
+#define GPIOH GPIOH_NS
+#define GPIOH_BASE GPIOH_BASE_NS
+
+#define GPIOI GPIOI_NS
+#define GPIOI_BASE GPIOI_BASE_NS
+
+#define PWR PWR_NS
+#define PWR_BASE PWR_BASE_NS
+
+#define RAMCFG_SRAM1 RAMCFG_SRAM1_NS
+#define RAMCFG_SRAM1_BASE RAMCFG_SRAM1_BASE_NS
+
+#define RAMCFG_SRAM2 RAMCFG_SRAM2_NS
+#define RAMCFG_SRAM2_BASE RAMCFG_SRAM2_BASE_NS
+
+#define RAMCFG_SRAM3 RAMCFG_SRAM3_NS
+#define RAMCFG_SRAM3_BASE RAMCFG_SRAM3_BASE_NS
+
+#define RAMCFG_BKPRAM RAMCFG_BKPRAM_NS
+#define RAMCFG_BKPRAM_BASE RAMCFG_BKPRAM_BASE_NS
+
+#define EXTI EXTI_NS
+#define EXTI_BASE EXTI_BASE_NS
+
+#define ICACHE ICACHE_NS
+#define ICACHE_BASE ICACHE_BASE_NS
+
+#define DCACHE1 DCACHE1_NS
+#define DCACHE1_BASE DCACHE1_BASE_NS
+
+#define GTZC_TZSC1 GTZC_TZSC1_NS
+#define GTZC_TZSC1_BASE GTZC_TZSC1_BASE_NS
+
+#define GTZC_TZIC1 GTZC_TZIC1_NS
+#define GTZC_TZIC1_BASE GTZC_TZIC1_BASE_NS
+
+#define GTZC_MPCBB1 GTZC_MPCBB1_NS
+#define GTZC_MPCBB1_BASE GTZC_MPCBB1_BASE_NS
+
+#define GTZC_MPCBB2 GTZC_MPCBB2_NS
+#define GTZC_MPCBB2_BASE GTZC_MPCBB2_BASE_NS
+
+#define GTZC_MPCBB3 GTZC_MPCBB3_NS
+#define GTZC_MPCBB3_BASE GTZC_MPCBB3_BASE_NS
+
+#define RTC RTC_NS
+#define RTC_BASE RTC_BASE_NS
+
+#define TAMP TAMP_NS
+#define TAMP_BASE TAMP_BASE_NS
+
+#define TIM1 TIM1_NS
+#define TIM1_BASE TIM1_BASE_NS
+
+#define TIM2 TIM2_NS
+#define TIM2_BASE TIM2_BASE_NS
+
+#define TIM3 TIM3_NS
+#define TIM3_BASE TIM3_BASE_NS
+
+#define TIM4 TIM4_NS
+#define TIM4_BASE TIM4_BASE_NS
+
+#define TIM5 TIM5_NS
+#define TIM5_BASE TIM5_BASE_NS
+
+#define TIM6 TIM6_NS
+#define TIM6_BASE TIM6_BASE_NS
+
+#define TIM7 TIM7_NS
+#define TIM7_BASE TIM7_BASE_NS
+
+#define TIM8 TIM8_NS
+#define TIM8_BASE TIM8_BASE_NS
+
+#define TIM12 TIM12_NS
+#define TIM12_BASE TIM12_BASE_NS
+
+#define TIM13 TIM13_NS
+#define TIM13_BASE TIM13_BASE_NS
+
+#define TIM14 TIM14_NS
+#define TIM14_BASE TIM14_BASE_NS
+
+#define TIM15 TIM15_NS
+#define TIM15_BASE TIM15_BASE_NS
+
+#define TIM16 TIM16_NS
+#define TIM16_BASE TIM16_BASE_NS
+
+#define TIM17 TIM17_NS
+#define TIM17_BASE TIM17_BASE_NS
+
+#define WWDG WWDG_NS
+#define WWDG_BASE WWDG_BASE_NS
+
+#define IWDG IWDG_NS
+#define IWDG_BASE IWDG_BASE_NS
+
+#define SPI1 SPI1_NS
+#define SPI1_BASE SPI1_BASE_NS
+
+#define SPI2 SPI2_NS
+#define SPI2_BASE SPI2_BASE_NS
+
+#define SPI3 SPI3_NS
+#define SPI3_BASE SPI3_BASE_NS
+
+#define SPI4 SPI4_NS
+#define SPI4_BASE SPI4_BASE_NS
+
+#define SPI5 SPI5_NS
+#define SPI5_BASE SPI5_BASE_NS
+
+#define SPI6 SPI6_NS
+#define SPI6_BASE SPI6_BASE_NS
+
+#define USART1 USART1_NS
+#define USART1_BASE USART1_BASE_NS
+
+#define USART2 USART2_NS
+#define USART2_BASE USART2_BASE_NS
+
+#define USART3 USART3_NS
+#define USART3_BASE USART3_BASE_NS
+
+#define UART4 UART4_NS
+#define UART4_BASE UART4_BASE_NS
+
+#define UART5 UART5_NS
+#define UART5_BASE UART5_BASE_NS
+
+#define USART6 USART6_NS
+#define USART6_BASE USART6_BASE_NS
+
+#define UART7 UART7_NS
+#define UART7_BASE UART7_BASE_NS
+
+#define UART8 UART8_NS
+#define UART8_BASE UART8_BASE_NS
+
+#define UART9 UART9_NS
+#define UART9_BASE UART9_BASE_NS
+
+#define USART10 USART10_NS
+#define USART10_BASE USART10_BASE_NS
+
+#define USART11 USART11_NS
+#define USART11_BASE USART11_BASE_NS
+
+#define UART12 UART12_NS
+#define UART12_BASE UART12_BASE_NS
+
+#define CEC CEC_NS
+#define CEC_BASE CEC_BASE_NS
+
+#define I2C1 I2C1_NS
+#define I2C1_BASE I2C1_BASE_NS
+
+#define I2C2 I2C2_NS
+#define I2C2_BASE I2C2_BASE_NS
+
+#define I2C3 I2C3_NS
+#define I2C3_BASE I2C3_BASE_NS
+
+#define I2C4 I2C4_NS
+#define I2C4_BASE I2C4_BASE_NS
+
+#define I3C1 I3C1_NS
+#define I3C1_BASE I3C1_BASE_NS
+
+#define CRS CRS_NS
+#define CRS_BASE CRS_BASE_NS
+
+#define FDCAN1 FDCAN1_NS
+#define FDCAN1_BASE FDCAN1_BASE_NS
+
+#define FDCAN_CONFIG FDCAN_CONFIG_NS
+#define FDCAN_CONFIG_BASE FDCAN_CONFIG_BASE_NS
+#define SRAMCAN_BASE SRAMCAN_BASE_NS
+
+
+#define DAC1 DAC1_NS
+#define DAC1_BASE DAC1_BASE_NS
+
+#define LPTIM1 LPTIM1_NS
+#define LPTIM1_BASE LPTIM1_BASE_NS
+
+#define LPTIM2 LPTIM2_NS
+#define LPTIM2_BASE LPTIM2_BASE_NS
+
+#define LPTIM3 LPTIM3_NS
+#define LPTIM3_BASE LPTIM3_BASE_NS
+
+#define LPTIM4 LPTIM4_NS
+#define LPTIM4_BASE LPTIM4_BASE_NS
+
+#define LPTIM5 LPTIM5_NS
+#define LPTIM5_BASE LPTIM5_BASE_NS
+
+#define LPTIM6 LPTIM6_NS
+#define LPTIM6_BASE LPTIM6_BASE_NS
+
+#define LPUART1 LPUART1_NS
+#define LPUART1_BASE LPUART1_BASE_NS
+
+#define UCPD1 UCPD1_NS
+#define UCPD1_BASE UCPD1_BASE_NS
+
+#define SBS SBS_NS
+#define SBS_BASE SBS_BASE_NS
+
+#define VREFBUF VREFBUF_NS
+#define VREFBUF_BASE VREFBUF_BASE_NS
+
+#define SAI1 SAI1_NS
+#define SAI1_BASE SAI1_BASE_NS
+
+#define SAI1_Block_A SAI1_Block_A_NS
+#define SAI1_Block_A_BASE SAI1_Block_A_BASE_NS
+
+#define SAI1_Block_B SAI1_Block_B_NS
+#define SAI1_Block_B_BASE SAI1_Block_B_BASE_NS
+
+#define SAI2 SAI2_NS
+#define SAI2_BASE SAI2_BASE_NS
+
+#define SAI2_Block_A SAI2_Block_A_NS
+#define SAI2_Block_A_BASE SAI2_Block_A_BASE_NS
+
+#define SAI2_Block_B SAI2_Block_B_NS
+#define SAI2_Block_B_BASE SAI2_Block_B_BASE_NS
+
+#define USB_DRD_FS USB_DRD_FS_NS
+#define USB_DRD_BASE USB_DRD_BASE_NS
+#define USB_DRD_PMAADDR USB_DRD_PMAADDR_NS
+#define USB_DRD_PMA_BUFF USB_DRD_PMA_BUFF_NS
+
+#define CRC CRC_NS
+#define CRC_BASE CRC_BASE_NS
+
+#define ADC1 ADC1_NS
+#define ADC1_BASE ADC1_BASE_NS
+
+#define ADC2 ADC2_NS
+#define ADC2_BASE ADC2_BASE_NS
+
+#define ADC12_COMMON ADC12_COMMON_NS
+#define ADC12_COMMON_BASE ADC12_COMMON_BASE_NS
+
+#define HASH HASH_NS
+#define HASH_BASE HASH_BASE_NS
+
+#define HASH_DIGEST HASH_DIGEST_NS
+#define HASH_DIGEST_BASE HASH_DIGEST_BASE_NS
+
+#define RNG RNG_NS
+#define RNG_BASE RNG_BASE_NS
+
+#define PKA PKA_NS
+#define PKA_BASE PKA_BASE_NS
+#define PKA_RAM_BASE PKA_RAM_BASE_NS
+
+
+
+#define SDMMC1 SDMMC1_NS
+#define SDMMC1_BASE SDMMC1_BASE_NS
+
+
+#define FMC_Bank1_R FMC_Bank1_R_NS
+#define FMC_Bank1_R_BASE FMC_Bank1_R_BASE_NS
+
+#define FMC_Bank1E_R FMC_Bank1E_R_NS
+#define FMC_Bank1E_R_BASE FMC_Bank1E_R_BASE_NS
+
+#define FMC_Bank3_R FMC_Bank3_R_NS
+#define FMC_Bank3_R_BASE FMC_Bank3_R_BASE_NS
+
+#define FMC_Bank5_6_R FMC_Bank5_6_R_NS
+#define FMC_Bank5_6_R_BASE FMC_Bank5_6_R_BASE_NS
+
+#define OCTOSPI1 OCTOSPI1_NS
+#define OCTOSPI1_R_BASE OCTOSPI1_R_BASE_NS
+
+#define DLYB_SDMMC1 DLYB_SDMMC1_NS
+#define DLYB_SDMMC1_BASE DLYB_SDMMC1_BASE_NS
+
+#define DLYB_OCTOSPI1 DLYB_OCTOSPI1_NS
+#define DLYB_OCTOSPI1_BASE DLYB_OCTOSPI1_BASE_NS
+
+#endif
+
+
+/******************************************************************************/
+/* */
+/* Analog to Digital Converter */
+/* */
+/******************************************************************************/
+#define ADC_MULTIMODE_SUPPORT /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */
+/******************** Bit definition for ADC_ISR register *******************/
+#define ADC_ISR_ADRDY_Pos (0U)
+#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */
+#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */
+#define ADC_ISR_EOSMP_Pos (1U)
+#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */
+#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */
+#define ADC_ISR_EOC_Pos (2U)
+#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */
+#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */
+#define ADC_ISR_EOS_Pos (3U)
+#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */
+#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */
+#define ADC_ISR_OVR_Pos (4U)
+#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */
+#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */
+#define ADC_ISR_JEOC_Pos (5U)
+#define ADC_ISR_JEOC_Msk (0x1UL << ADC_ISR_JEOC_Pos) /*!< 0x00000020 */
+#define ADC_ISR_JEOC ADC_ISR_JEOC_Msk /*!< ADC group injected end of unitary conversion flag */
+#define ADC_ISR_JEOS_Pos (6U)
+#define ADC_ISR_JEOS_Msk (0x1UL << ADC_ISR_JEOS_Pos) /*!< 0x00000040 */
+#define ADC_ISR_JEOS ADC_ISR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */
+#define ADC_ISR_AWD1_Pos (7U)
+#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */
+#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */
+#define ADC_ISR_AWD2_Pos (8U)
+#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */
+#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */
+#define ADC_ISR_AWD3_Pos (9U)
+#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */
+#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */
+#define ADC_ISR_JQOVF_Pos (10U)
+#define ADC_ISR_JQOVF_Msk (0x1UL << ADC_ISR_JQOVF_Pos) /*!< 0x00000400 */
+#define ADC_ISR_JQOVF ADC_ISR_JQOVF_Msk /*!< ADC group injected contexts queue overflow flag */
+
+/******************** Bit definition for ADC_IER register *******************/
+#define ADC_IER_ADRDYIE_Pos (0U)
+#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */
+#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */
+#define ADC_IER_EOSMPIE_Pos (1U)
+#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */
+#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */
+#define ADC_IER_EOCIE_Pos (2U)
+#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */
+#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */
+#define ADC_IER_EOSIE_Pos (3U)
+#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */
+#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */
+#define ADC_IER_OVRIE_Pos (4U)
+#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */
+#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */
+#define ADC_IER_JEOCIE_Pos (5U)
+#define ADC_IER_JEOCIE_Msk (0x1UL << ADC_IER_JEOCIE_Pos) /*!< 0x00000020 */
+#define ADC_IER_JEOCIE ADC_IER_JEOCIE_Msk /*!< ADC group injected end of unitary conversion interrupt */
+#define ADC_IER_JEOSIE_Pos (6U)
+#define ADC_IER_JEOSIE_Msk (0x1UL << ADC_IER_JEOSIE_Pos) /*!< 0x00000040 */
+#define ADC_IER_JEOSIE ADC_IER_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */
+#define ADC_IER_AWD1IE_Pos (7U)
+#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */
+#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */
+#define ADC_IER_AWD2IE_Pos (8U)
+#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */
+#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */
+#define ADC_IER_AWD3IE_Pos (9U)
+#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */
+#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */
+#define ADC_IER_JQOVFIE_Pos (10U)
+#define ADC_IER_JQOVFIE_Msk (0x1UL << ADC_IER_JQOVFIE_Pos) /*!< 0x00000400 */
+#define ADC_IER_JQOVFIE ADC_IER_JQOVFIE_Msk /*!< ADC group injected contexts queue overflow interrupt */
+
+/******************** Bit definition for ADC_CR register ********************/
+#define ADC_CR_ADEN_Pos (0U)
+#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */
+#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */
+#define ADC_CR_ADDIS_Pos (1U)
+#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */
+#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */
+#define ADC_CR_ADSTART_Pos (2U)
+#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */
+#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */
+#define ADC_CR_JADSTART_Pos (3U)
+#define ADC_CR_JADSTART_Msk (0x1UL << ADC_CR_JADSTART_Pos) /*!< 0x00000008 */
+#define ADC_CR_JADSTART ADC_CR_JADSTART_Msk /*!< ADC group injected conversion start */
+#define ADC_CR_ADSTP_Pos (4U)
+#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */
+#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */
+#define ADC_CR_JADSTP_Pos (5U)
+#define ADC_CR_JADSTP_Msk (0x1UL << ADC_CR_JADSTP_Pos) /*!< 0x00000020 */
+#define ADC_CR_JADSTP ADC_CR_JADSTP_Msk /*!< ADC group injected conversion stop */
+#define ADC_CR_ADVREGEN_Pos (28U)
+#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */
+#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */
+#define ADC_CR_DEEPPWD_Pos (29U)
+#define ADC_CR_DEEPPWD_Msk (0x1UL << ADC_CR_DEEPPWD_Pos) /*!< 0x20000000 */
+#define ADC_CR_DEEPPWD ADC_CR_DEEPPWD_Msk /*!< ADC deep power down enable */
+#define ADC_CR_ADCALDIF_Pos (30U)
+#define ADC_CR_ADCALDIF_Msk (0x1UL << ADC_CR_ADCALDIF_Pos) /*!< 0x40000000 */
+#define ADC_CR_ADCALDIF ADC_CR_ADCALDIF_Msk /*!< ADC differential mode for calibration */
+#define ADC_CR_ADCAL_Pos (31U)
+#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */
+#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */
+
+/******************** Bit definition for ADC_CFGR register ******************/
+#define ADC_CFGR_DMAEN_Pos (0U)
+#define ADC_CFGR_DMAEN_Msk (0x1UL << ADC_CFGR_DMAEN_Pos) /*!< 0x00000001 */
+#define ADC_CFGR_DMAEN ADC_CFGR_DMAEN_Msk /*!< ADC DMA transfer enable */
+#define ADC_CFGR_DMACFG_Pos (1U)
+#define ADC_CFGR_DMACFG_Msk (0x1UL << ADC_CFGR_DMACFG_Pos) /*!< 0x00000002 */
+#define ADC_CFGR_DMACFG ADC_CFGR_DMACFG_Msk /*!< ADC DMA transfer configuration */
+
+#define ADC_CFGR_RES_Pos (3U)
+#define ADC_CFGR_RES_Msk (0x3UL << ADC_CFGR_RES_Pos) /*!< 0x00000018 */
+#define ADC_CFGR_RES ADC_CFGR_RES_Msk /*!< ADC data resolution */
+#define ADC_CFGR_RES_0 (0x1UL << ADC_CFGR_RES_Pos) /*!< 0x00000008 */
+#define ADC_CFGR_RES_1 (0x2UL << ADC_CFGR_RES_Pos) /*!< 0x00000010 */
+
+#define ADC_CFGR_EXTSEL_Pos (5U)
+#define ADC_CFGR_EXTSEL_Msk (0x1FUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003E0 */
+#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */
+#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000020 */
+#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */
+#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */
+#define ADC_CFGR_EXTSEL_3 (0x8UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */
+#define ADC_CFGR_EXTSEL_4 (0x10UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000200 */
+
+#define ADC_CFGR_EXTEN_Pos (10U)
+#define ADC_CFGR_EXTEN_Msk (0x3UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000C00 */
+#define ADC_CFGR_EXTEN ADC_CFGR_EXTEN_Msk /*!< ADC group regular external trigger polarity */
+#define ADC_CFGR_EXTEN_0 (0x1UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000400 */
+#define ADC_CFGR_EXTEN_1 (0x2UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000800 */
+
+#define ADC_CFGR_OVRMOD_Pos (12U)
+#define ADC_CFGR_OVRMOD_Msk (0x1UL << ADC_CFGR_OVRMOD_Pos) /*!< 0x00001000 */
+#define ADC_CFGR_OVRMOD ADC_CFGR_OVRMOD_Msk /*!< ADC group regular overrun configuration */
+#define ADC_CFGR_CONT_Pos (13U)
+#define ADC_CFGR_CONT_Msk (0x1UL << ADC_CFGR_CONT_Pos) /*!< 0x00002000 */
+#define ADC_CFGR_CONT ADC_CFGR_CONT_Msk /*!< ADC group regular continuous conversion mode */
+#define ADC_CFGR_AUTDLY_Pos (14U)
+#define ADC_CFGR_AUTDLY_Msk (0x1UL << ADC_CFGR_AUTDLY_Pos) /*!< 0x00004000 */
+#define ADC_CFGR_AUTDLY ADC_CFGR_AUTDLY_Msk /*!< ADC low power auto wait */
+#define ADC_CFGR_ALIGN_Pos (15U)
+#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00008000 */
+#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignment */
+#define ADC_CFGR_DISCEN_Pos (16U)
+#define ADC_CFGR_DISCEN_Msk (0x1UL << ADC_CFGR_DISCEN_Pos) /*!< 0x00010000 */
+#define ADC_CFGR_DISCEN ADC_CFGR_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */
+
+#define ADC_CFGR_DISCNUM_Pos (17U)
+#define ADC_CFGR_DISCNUM_Msk (0x7UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x000E0000 */
+#define ADC_CFGR_DISCNUM ADC_CFGR_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */
+#define ADC_CFGR_DISCNUM_0 (0x1UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00020000 */
+#define ADC_CFGR_DISCNUM_1 (0x2UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00040000 */
+#define ADC_CFGR_DISCNUM_2 (0x4UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00080000 */
+
+#define ADC_CFGR_JDISCEN_Pos (20U)
+#define ADC_CFGR_JDISCEN_Msk (0x1UL << ADC_CFGR_JDISCEN_Pos) /*!< 0x00100000 */
+#define ADC_CFGR_JDISCEN ADC_CFGR_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */
+#define ADC_CFGR_JQM_Pos (21U)
+#define ADC_CFGR_JQM_Msk (0x1UL << ADC_CFGR_JQM_Pos) /*!< 0x00200000 */
+#define ADC_CFGR_JQM ADC_CFGR_JQM_Msk /*!< ADC group injected contexts queue mode */
+#define ADC_CFGR_AWD1SGL_Pos (22U)
+#define ADC_CFGR_AWD1SGL_Msk (0x1UL << ADC_CFGR_AWD1SGL_Pos) /*!< 0x00400000 */
+#define ADC_CFGR_AWD1SGL ADC_CFGR_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */
+#define ADC_CFGR_AWD1EN_Pos (23U)
+#define ADC_CFGR_AWD1EN_Msk (0x1UL << ADC_CFGR_AWD1EN_Pos) /*!< 0x00800000 */
+#define ADC_CFGR_AWD1EN ADC_CFGR_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */
+#define ADC_CFGR_JAWD1EN_Pos (24U)
+#define ADC_CFGR_JAWD1EN_Msk (0x1UL << ADC_CFGR_JAWD1EN_Pos) /*!< 0x01000000 */
+#define ADC_CFGR_JAWD1EN ADC_CFGR_JAWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */
+#define ADC_CFGR_JAUTO_Pos (25U)
+#define ADC_CFGR_JAUTO_Msk (0x1UL << ADC_CFGR_JAUTO_Pos) /*!< 0x02000000 */
+#define ADC_CFGR_JAUTO ADC_CFGR_JAUTO_Msk /*!< ADC group injected automatic trigger mode */
+
+#define ADC_CFGR_AWD1CH_Pos (26U)
+#define ADC_CFGR_AWD1CH_Msk (0x1FUL << ADC_CFGR_AWD1CH_Pos) /*!< 0x7C000000 */
+#define ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */
+#define ADC_CFGR_AWD1CH_0 (0x01UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x04000000 */
+#define ADC_CFGR_AWD1CH_1 (0x02UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x08000000 */
+#define ADC_CFGR_AWD1CH_2 (0x04UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x10000000 */
+#define ADC_CFGR_AWD1CH_3 (0x08UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x20000000 */
+#define ADC_CFGR_AWD1CH_4 (0x10UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x40000000 */
+
+#define ADC_CFGR_JQDIS_Pos (31U)
+#define ADC_CFGR_JQDIS_Msk (0x1UL << ADC_CFGR_JQDIS_Pos) /*!< 0x80000000 */
+#define ADC_CFGR_JQDIS ADC_CFGR_JQDIS_Msk /*!< ADC group injected contexts queue disable */
+
+/******************** Bit definition for ADC_CFGR2 register *****************/
+#define ADC_CFGR2_ROVSE_Pos (0U)
+#define ADC_CFGR2_ROVSE_Msk (0x1UL << ADC_CFGR2_ROVSE_Pos) /*!< 0x00000001 */
+#define ADC_CFGR2_ROVSE ADC_CFGR2_ROVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */
+#define ADC_CFGR2_JOVSE_Pos (1U)
+#define ADC_CFGR2_JOVSE_Msk (0x1UL << ADC_CFGR2_JOVSE_Pos) /*!< 0x00000002 */
+#define ADC_CFGR2_JOVSE ADC_CFGR2_JOVSE_Msk /*!< ADC oversampler enable on scope ADC group injected */
+
+#define ADC_CFGR2_OVSR_Pos (2U)
+#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */
+#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */
+#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */
+#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */
+#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */
+
+#define ADC_CFGR2_OVSS_Pos (5U)
+#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */
+#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */
+#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */
+#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */
+#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */
+#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */
+
+#define ADC_CFGR2_TROVS_Pos (9U)
+#define ADC_CFGR2_TROVS_Msk (0x1UL << ADC_CFGR2_TROVS_Pos) /*!< 0x00000200 */
+#define ADC_CFGR2_TROVS ADC_CFGR2_TROVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */
+#define ADC_CFGR2_ROVSM_Pos (10U)
+#define ADC_CFGR2_ROVSM_Msk (0x1UL << ADC_CFGR2_ROVSM_Pos) /*!< 0x00000400 */
+#define ADC_CFGR2_ROVSM ADC_CFGR2_ROVSM_Msk /*!< ADC oversampling mode managing interlaced conversions of ADC group regular and group injected */
+
+#define ADC_CFGR2_GCOMP_Pos (16U)
+#define ADC_CFGR2_GCOMP_Msk (0x1UL << ADC_CFGR2_GCOMP_Pos) /*!< 0x00010000 */
+#define ADC_CFGR2_GCOMP ADC_CFGR2_GCOMP_Msk /*!< ADC Gain Compensation mode */
+
+#define ADC_CFGR2_SWTRIG_Pos (25U)
+#define ADC_CFGR2_SWTRIG_Msk (0x1UL << ADC_CFGR2_SWTRIG_Pos) /*!< 0x02000000 */
+#define ADC_CFGR2_SWTRIG ADC_CFGR2_SWTRIG_Msk /*!< ADC Software Trigger Bit for Sample time control trigger mode */
+#define ADC_CFGR2_BULB_Pos (26U)
+#define ADC_CFGR2_BULB_Msk (0x1UL << ADC_CFGR2_BULB_Pos) /*!< 0x04000000 */
+#define ADC_CFGR2_BULB ADC_CFGR2_BULB_Msk /*!< ADC Bulb sampling mode */
+#define ADC_CFGR2_SMPTRIG_Pos (27U)
+#define ADC_CFGR2_SMPTRIG_Msk (0x1UL << ADC_CFGR2_SMPTRIG_Pos) /*!< 0x08000000 */
+#define ADC_CFGR2_SMPTRIG ADC_CFGR2_SMPTRIG_Msk /*!< ADC Sample Time Control Trigger mode */
+
+#define ADC_CFGR2_LFTRIG_Pos (29U)
+#define ADC_CFGR2_LFTRIG_Msk (0x1UL << ADC_CFGR2_LFTRIG_Pos) /*!< 0x20000000 */
+#define ADC_CFGR2_LFTRIG ADC_CFGR2_LFTRIG_Msk /*!< ADC Low Frequency Trigger */
+
+/******************** Bit definition for ADC_SMPR1 register *****************/
+#define ADC_SMPR1_SMP0_Pos (0U)
+#define ADC_SMPR1_SMP0_Msk (0x7UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000007 */
+#define ADC_SMPR1_SMP0 ADC_SMPR1_SMP0_Msk /*!< ADC channel 0 sampling time selection */
+#define ADC_SMPR1_SMP0_0 (0x1UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000001 */
+#define ADC_SMPR1_SMP0_1 (0x2UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000002 */
+#define ADC_SMPR1_SMP0_2 (0x4UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000004 */
+
+#define ADC_SMPR1_SMP1_Pos (3U)
+#define ADC_SMPR1_SMP1_Msk (0x7UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000038 */
+#define ADC_SMPR1_SMP1 ADC_SMPR1_SMP1_Msk /*!< ADC channel 1 sampling time selection */
+#define ADC_SMPR1_SMP1_0 (0x1UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000008 */
+#define ADC_SMPR1_SMP1_1 (0x2UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000010 */
+#define ADC_SMPR1_SMP1_2 (0x4UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000020 */
+
+#define ADC_SMPR1_SMP2_Pos (6U)
+#define ADC_SMPR1_SMP2_Msk (0x7UL << ADC_SMPR1_SMP2_Pos) /*!< 0x000001C0 */
+#define ADC_SMPR1_SMP2 ADC_SMPR1_SMP2_Msk /*!< ADC channel 2 sampling time selection */
+#define ADC_SMPR1_SMP2_0 (0x1UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000040 */
+#define ADC_SMPR1_SMP2_1 (0x2UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000080 */
+#define ADC_SMPR1_SMP2_2 (0x4UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000100 */
+
+#define ADC_SMPR1_SMP3_Pos (9U)
+#define ADC_SMPR1_SMP3_Msk (0x7UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000E00 */
+#define ADC_SMPR1_SMP3 ADC_SMPR1_SMP3_Msk /*!< ADC channel 3 sampling time selection */
+#define ADC_SMPR1_SMP3_0 (0x1UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000200 */
+#define ADC_SMPR1_SMP3_1 (0x2UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000400 */
+#define ADC_SMPR1_SMP3_2 (0x4UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000800 */
+
+#define ADC_SMPR1_SMP4_Pos (12U)
+#define ADC_SMPR1_SMP4_Msk (0x7UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00007000 */
+#define ADC_SMPR1_SMP4 ADC_SMPR1_SMP4_Msk /*!< ADC channel 4 sampling time selection */
+#define ADC_SMPR1_SMP4_0 (0x1UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00001000 */
+#define ADC_SMPR1_SMP4_1 (0x2UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00002000 */
+#define ADC_SMPR1_SMP4_2 (0x4UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00004000 */
+
+#define ADC_SMPR1_SMP5_Pos (15U)
+#define ADC_SMPR1_SMP5_Msk (0x7UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00038000 */
+#define ADC_SMPR1_SMP5 ADC_SMPR1_SMP5_Msk /*!< ADC channel 5 sampling time selection */
+#define ADC_SMPR1_SMP5_0 (0x1UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00008000 */
+#define ADC_SMPR1_SMP5_1 (0x2UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00010000 */
+#define ADC_SMPR1_SMP5_2 (0x4UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00020000 */
+
+#define ADC_SMPR1_SMP6_Pos (18U)
+#define ADC_SMPR1_SMP6_Msk (0x7UL << ADC_SMPR1_SMP6_Pos) /*!< 0x001C0000 */
+#define ADC_SMPR1_SMP6 ADC_SMPR1_SMP6_Msk /*!< ADC channel 6 sampling time selection */
+#define ADC_SMPR1_SMP6_0 (0x1UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00040000 */
+#define ADC_SMPR1_SMP6_1 (0x2UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00080000 */
+#define ADC_SMPR1_SMP6_2 (0x4UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00100000 */
+
+#define ADC_SMPR1_SMP7_Pos (21U)
+#define ADC_SMPR1_SMP7_Msk (0x7UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00E00000 */
+#define ADC_SMPR1_SMP7 ADC_SMPR1_SMP7_Msk /*!< ADC channel 7 sampling time selection */
+#define ADC_SMPR1_SMP7_0 (0x1UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00200000 */
+#define ADC_SMPR1_SMP7_1 (0x2UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00400000 */
+#define ADC_SMPR1_SMP7_2 (0x4UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00800000 */
+
+#define ADC_SMPR1_SMP8_Pos (24U)
+#define ADC_SMPR1_SMP8_Msk (0x7UL << ADC_SMPR1_SMP8_Pos) /*!< 0x07000000 */
+#define ADC_SMPR1_SMP8 ADC_SMPR1_SMP8_Msk /*!< ADC channel 8 sampling time selection */
+#define ADC_SMPR1_SMP8_0 (0x1UL << ADC_SMPR1_SMP8_Pos) /*!< 0x01000000 */
+#define ADC_SMPR1_SMP8_1 (0x2UL << ADC_SMPR1_SMP8_Pos) /*!< 0x02000000 */
+#define ADC_SMPR1_SMP8_2 (0x4UL << ADC_SMPR1_SMP8_Pos) /*!< 0x04000000 */
+
+#define ADC_SMPR1_SMP9_Pos (27U)
+#define ADC_SMPR1_SMP9_Msk (0x7UL << ADC_SMPR1_SMP9_Pos) /*!< 0x38000000 */
+#define ADC_SMPR1_SMP9 ADC_SMPR1_SMP9_Msk /*!< ADC channel 9 sampling time selection */
+#define ADC_SMPR1_SMP9_0 (0x1UL << ADC_SMPR1_SMP9_Pos) /*!< 0x08000000 */
+#define ADC_SMPR1_SMP9_1 (0x2UL << ADC_SMPR1_SMP9_Pos) /*!< 0x10000000 */
+#define ADC_SMPR1_SMP9_2 (0x4UL << ADC_SMPR1_SMP9_Pos) /*!< 0x20000000 */
+
+#define ADC_SMPR1_SMPPLUS_Pos (31U)
+#define ADC_SMPR1_SMPPLUS_Msk (0x1UL << ADC_SMPR1_SMPPLUS_Pos) /*!< 0x80000000 */
+#define ADC_SMPR1_SMPPLUS ADC_SMPR1_SMPPLUS_Msk /*!< ADC channels sampling time additional setting */
+
+/******************** Bit definition for ADC_SMPR2 register *****************/
+#define ADC_SMPR2_SMP10_Pos (0U)
+#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */
+#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< ADC channel 10 sampling time selection */
+#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */
+#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */
+#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000004 */
+
+#define ADC_SMPR2_SMP11_Pos (3U)
+#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000038 */
+#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< ADC channel 11 sampling time selection */
+#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000008 */
+#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000010 */
+#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000020 */
+
+#define ADC_SMPR2_SMP12_Pos (6U)
+#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x000001C0 */
+#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< ADC channel 12 sampling time selection */
+#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000040 */
+#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000080 */
+#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000100 */
+
+#define ADC_SMPR2_SMP13_Pos (9U)
+#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000E00 */
+#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< ADC channel 13 sampling time selection */
+#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000200 */
+#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000400 */
+#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000800 */
+
+#define ADC_SMPR2_SMP14_Pos (12U)
+#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00007000 */
+#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< ADC channel 14 sampling time selection */
+#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00001000 */
+#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00002000 */
+#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00004000 */
+
+#define ADC_SMPR2_SMP15_Pos (15U)
+#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */
+#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< ADC channel 15 sampling time selection */
+#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */
+#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */
+#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */
+
+#define ADC_SMPR2_SMP16_Pos (18U)
+#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x001C0000 */
+#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< ADC channel 16 sampling time selection */
+#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00040000 */
+#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00080000 */
+#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00100000 */
+
+#define ADC_SMPR2_SMP17_Pos (21U)
+#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00E00000 */
+#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< ADC channel 17 sampling time selection */
+#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00200000 */
+#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00400000 */
+#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00800000 */
+
+#define ADC_SMPR2_SMP18_Pos (24U)
+#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x07000000 */
+#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< ADC channel 18 sampling time selection */
+#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x01000000 */
+#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x02000000 */
+#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) /*!< 0x04000000 */
+
+/******************** Bit definition for ADC_TR1 register *******************/
+#define ADC_TR1_LT1_Pos (0U)
+#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */
+#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */
+
+#define ADC_TR1_AWDFILT_Pos (12U)
+#define ADC_TR1_AWDFILT_Msk (0x7UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00007000 */
+#define ADC_TR1_AWDFILT ADC_TR1_AWDFILT_Msk /*!< ADC analog watchdog filtering parameter */
+#define ADC_TR1_AWDFILT_0 (0x1UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00001000 */
+#define ADC_TR1_AWDFILT_1 (0x2UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00002000 */
+#define ADC_TR1_AWDFILT_2 (0x4UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00004000 */
+
+#define ADC_TR1_HT1_Pos (16U)
+#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */
+#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC analog watchdog 1 threshold high */
+
+/******************** Bit definition for ADC_TR2 register *******************/
+#define ADC_TR2_LT2_Pos (0U)
+#define ADC_TR2_LT2_Msk (0xFFUL << ADC_TR2_LT2_Pos) /*!< 0x000000FF */
+#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */
+
+#define ADC_TR2_HT2_Pos (16U)
+#define ADC_TR2_HT2_Msk (0xFFUL << ADC_TR2_HT2_Pos) /*!< 0x00FF0000 */
+#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */
+
+/******************** Bit definition for ADC_TR3 register *******************/
+#define ADC_TR3_LT3_Pos (0U)
+#define ADC_TR3_LT3_Msk (0xFFUL << ADC_TR3_LT3_Pos) /*!< 0x000000FF */
+#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */
+
+#define ADC_TR3_HT3_Pos (16U)
+#define ADC_TR3_HT3_Msk (0xFFUL << ADC_TR3_HT3_Pos) /*!< 0x00FF0000 */
+#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */
+
+/******************** Bit definition for ADC_SQR1 register ******************/
+#define ADC_SQR1_L_Pos (0U)
+#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x0000000F */
+#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */
+#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00000001 */
+#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00000002 */
+#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00000004 */
+#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00000008 */
+
+#define ADC_SQR1_SQ1_Pos (6U)
+#define ADC_SQR1_SQ1_Msk (0x1FUL << ADC_SQR1_SQ1_Pos) /*!< 0x000007C0 */
+#define ADC_SQR1_SQ1 ADC_SQR1_SQ1_Msk /*!< ADC group regular sequencer rank 1 */
+#define ADC_SQR1_SQ1_0 (0x01UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000040 */
+#define ADC_SQR1_SQ1_1 (0x02UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000080 */
+#define ADC_SQR1_SQ1_2 (0x04UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000100 */
+#define ADC_SQR1_SQ1_3 (0x08UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000200 */
+#define ADC_SQR1_SQ1_4 (0x10UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR1_SQ2_Pos (12U)
+#define ADC_SQR1_SQ2_Msk (0x1FUL << ADC_SQR1_SQ2_Pos) /*!< 0x0001F000 */
+#define ADC_SQR1_SQ2 ADC_SQR1_SQ2_Msk /*!< ADC group regular sequencer rank 2 */
+#define ADC_SQR1_SQ2_0 (0x01UL << ADC_SQR1_SQ2_Pos) /*!< 0x00001000 */
+#define ADC_SQR1_SQ2_1 (0x02UL << ADC_SQR1_SQ2_Pos) /*!< 0x00002000 */
+#define ADC_SQR1_SQ2_2 (0x04UL << ADC_SQR1_SQ2_Pos) /*!< 0x00004000 */
+#define ADC_SQR1_SQ2_3 (0x08UL << ADC_SQR1_SQ2_Pos) /*!< 0x00008000 */
+#define ADC_SQR1_SQ2_4 (0x10UL << ADC_SQR1_SQ2_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR1_SQ3_Pos (18U)
+#define ADC_SQR1_SQ3_Msk (0x1FUL << ADC_SQR1_SQ3_Pos) /*!< 0x007C0000 */
+#define ADC_SQR1_SQ3 ADC_SQR1_SQ3_Msk /*!< ADC group regular sequencer rank 3 */
+#define ADC_SQR1_SQ3_0 (0x01UL << ADC_SQR1_SQ3_Pos) /*!< 0x00040000 */
+#define ADC_SQR1_SQ3_1 (0x02UL << ADC_SQR1_SQ3_Pos) /*!< 0x00080000 */
+#define ADC_SQR1_SQ3_2 (0x04UL << ADC_SQR1_SQ3_Pos) /*!< 0x00100000 */
+#define ADC_SQR1_SQ3_3 (0x08UL << ADC_SQR1_SQ3_Pos) /*!< 0x00200000 */
+#define ADC_SQR1_SQ3_4 (0x10UL<< ADC_SQR1_SQ3_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR1_SQ4_Pos (24U)
+#define ADC_SQR1_SQ4_Msk (0x1FUL << ADC_SQR1_SQ4_Pos) /*!< 0x1F000000 */
+#define ADC_SQR1_SQ4 ADC_SQR1_SQ4_Msk /*!< ADC group regular sequencer rank 4 */
+#define ADC_SQR1_SQ4_0 (0x01UL << ADC_SQR1_SQ4_Pos) /*!< 0x01000000 */
+#define ADC_SQR1_SQ4_1 (0x02UL << ADC_SQR1_SQ4_Pos) /*!< 0x02000000 */
+#define ADC_SQR1_SQ4_2 (0x04UL << ADC_SQR1_SQ4_Pos) /*!< 0x04000000 */
+#define ADC_SQR1_SQ4_3 (0x08UL << ADC_SQR1_SQ4_Pos) /*!< 0x08000000 */
+#define ADC_SQR1_SQ4_4 (0x10UL << ADC_SQR1_SQ4_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR2 register ******************/
+#define ADC_SQR2_SQ5_Pos (0U)
+#define ADC_SQR2_SQ5_Msk (0x1FUL << ADC_SQR2_SQ5_Pos) /*!< 0x0000001F */
+#define ADC_SQR2_SQ5 ADC_SQR2_SQ5_Msk /*!< ADC group regular sequencer rank 5 */
+#define ADC_SQR2_SQ5_0 (0x01UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000001 */
+#define ADC_SQR2_SQ5_1 (0x02UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000002 */
+#define ADC_SQR2_SQ5_2 (0x04UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000004 */
+#define ADC_SQR2_SQ5_3 (0x08UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000008 */
+#define ADC_SQR2_SQ5_4 (0x10UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR2_SQ6_Pos (6U)
+#define ADC_SQR2_SQ6_Msk (0x1FUL << ADC_SQR2_SQ6_Pos) /*!< 0x000007C0 */
+#define ADC_SQR2_SQ6 ADC_SQR2_SQ6_Msk /*!< ADC group regular sequencer rank 6 */
+#define ADC_SQR2_SQ6_0 (0x01UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000040 */
+#define ADC_SQR2_SQ6_1 (0x02UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000080 */
+#define ADC_SQR2_SQ6_2 (0x04UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000100 */
+#define ADC_SQR2_SQ6_3 (0x08UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000200 */
+#define ADC_SQR2_SQ6_4 (0x10UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR2_SQ7_Pos (12U)
+#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0001F000 */
+#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */
+#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00001000 */
+#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00002000 */
+#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00004000 */
+#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00008000 */
+#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR2_SQ8_Pos (18U)
+#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x007C0000 */
+#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */
+#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00040000 */
+#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00080000 */
+#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00100000 */
+#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00200000 */
+#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR2_SQ9_Pos (24U)
+#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x1F000000 */
+#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */
+#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x01000000 */
+#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x02000000 */
+#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x04000000 */
+#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x08000000 */
+#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR3 register ******************/
+#define ADC_SQR3_SQ10_Pos (0U)
+#define ADC_SQR3_SQ10_Msk (0x1FUL << ADC_SQR3_SQ10_Pos) /*!< 0x0000001F */
+#define ADC_SQR3_SQ10 ADC_SQR3_SQ10_Msk /*!< ADC group regular sequencer rank 10 */
+#define ADC_SQR3_SQ10_0 (0x01UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000001 */
+#define ADC_SQR3_SQ10_1 (0x02UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000002 */
+#define ADC_SQR3_SQ10_2 (0x04UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000004 */
+#define ADC_SQR3_SQ10_3 (0x08UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000008 */
+#define ADC_SQR3_SQ10_4 (0x10UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR3_SQ11_Pos (6U)
+#define ADC_SQR3_SQ11_Msk (0x1FUL << ADC_SQR3_SQ11_Pos) /*!< 0x000007C0 */
+#define ADC_SQR3_SQ11 ADC_SQR3_SQ11_Msk /*!< ADC group regular sequencer rank 11 */
+#define ADC_SQR3_SQ11_0 (0x01UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000040 */
+#define ADC_SQR3_SQ11_1 (0x02UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000080 */
+#define ADC_SQR3_SQ11_2 (0x04UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000100 */
+#define ADC_SQR3_SQ11_3 (0x08UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000200 */
+#define ADC_SQR3_SQ11_4 (0x10UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR3_SQ12_Pos (12U)
+#define ADC_SQR3_SQ12_Msk (0x1FUL << ADC_SQR3_SQ12_Pos) /*!< 0x0001F000 */
+#define ADC_SQR3_SQ12 ADC_SQR3_SQ12_Msk /*!< ADC group regular sequencer rank 12 */
+#define ADC_SQR3_SQ12_0 (0x01UL << ADC_SQR3_SQ12_Pos) /*!< 0x00001000 */
+#define ADC_SQR3_SQ12_1 (0x02UL << ADC_SQR3_SQ12_Pos) /*!< 0x00002000 */
+#define ADC_SQR3_SQ12_2 (0x04UL << ADC_SQR3_SQ12_Pos) /*!< 0x00004000 */
+#define ADC_SQR3_SQ12_3 (0x08UL << ADC_SQR3_SQ12_Pos) /*!< 0x00008000 */
+#define ADC_SQR3_SQ12_4 (0x10UL << ADC_SQR3_SQ12_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR3_SQ13_Pos (18U)
+#define ADC_SQR3_SQ13_Msk (0x1FUL << ADC_SQR3_SQ13_Pos) /*!< 0x007C0000 */
+#define ADC_SQR3_SQ13 ADC_SQR3_SQ13_Msk /*!< ADC group regular sequencer rank 13 */
+#define ADC_SQR3_SQ13_0 (0x01UL << ADC_SQR3_SQ13_Pos) /*!< 0x00040000 */
+#define ADC_SQR3_SQ13_1 (0x02UL << ADC_SQR3_SQ13_Pos) /*!< 0x00080000 */
+#define ADC_SQR3_SQ13_2 (0x04UL << ADC_SQR3_SQ13_Pos) /*!< 0x00100000 */
+#define ADC_SQR3_SQ13_3 (0x08UL << ADC_SQR3_SQ13_Pos) /*!< 0x00200000 */
+#define ADC_SQR3_SQ13_4 (0x10UL << ADC_SQR3_SQ13_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR3_SQ14_Pos (24U)
+#define ADC_SQR3_SQ14_Msk (0x1FUL << ADC_SQR3_SQ14_Pos) /*!< 0x1F000000 */
+#define ADC_SQR3_SQ14 ADC_SQR3_SQ14_Msk /*!< ADC group regular sequencer rank 14 */
+#define ADC_SQR3_SQ14_0 (0x01UL << ADC_SQR3_SQ14_Pos) /*!< 0x01000000 */
+#define ADC_SQR3_SQ14_1 (0x02UL << ADC_SQR3_SQ14_Pos) /*!< 0x02000000 */
+#define ADC_SQR3_SQ14_2 (0x04UL << ADC_SQR3_SQ14_Pos) /*!< 0x04000000 */
+#define ADC_SQR3_SQ14_3 (0x08UL << ADC_SQR3_SQ14_Pos) /*!< 0x08000000 */
+#define ADC_SQR3_SQ14_4 (0x10UL << ADC_SQR3_SQ14_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR4 register ******************/
+#define ADC_SQR4_SQ15_Pos (0U)
+#define ADC_SQR4_SQ15_Msk (0x1FUL << ADC_SQR4_SQ15_Pos) /*!< 0x0000001F */
+#define ADC_SQR4_SQ15 ADC_SQR4_SQ15_Msk /*!< ADC group regular sequencer rank 15 */
+#define ADC_SQR4_SQ15_0 (0x01UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000001 */
+#define ADC_SQR4_SQ15_1 (0x02UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000002 */
+#define ADC_SQR4_SQ15_2 (0x04UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000004 */
+#define ADC_SQR4_SQ15_3 (0x08UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000008 */
+#define ADC_SQR4_SQ15_4 (0x10UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR4_SQ16_Pos (6U)
+#define ADC_SQR4_SQ16_Msk (0x1FUL << ADC_SQR4_SQ16_Pos) /*!< 0x000007C0 */
+#define ADC_SQR4_SQ16 ADC_SQR4_SQ16_Msk /*!< ADC group regular sequencer rank 16 */
+#define ADC_SQR4_SQ16_0 (0x01UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000040 */
+#define ADC_SQR4_SQ16_1 (0x02UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000080 */
+#define ADC_SQR4_SQ16_2 (0x04UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000100 */
+#define ADC_SQR4_SQ16_3 (0x08UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000200 */
+#define ADC_SQR4_SQ16_4 (0x10UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000400 */
+
+/******************** Bit definition for ADC_DR register ********************/
+#define ADC_DR_RDATA_Pos (0U)
+#define ADC_DR_RDATA_Msk (0xFFFFUL << ADC_DR_RDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_DR_RDATA ADC_DR_RDATA_Msk /*!< ADC group regular conversion data */
+
+/******************** Bit definition for ADC_JSQR register ******************/
+#define ADC_JSQR_JL_Pos (0U)
+#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00000003 */
+#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */
+#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00000001 */
+#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00000002 */
+
+#define ADC_JSQR_JEXTSEL_Pos (2U)
+#define ADC_JSQR_JEXTSEL_Msk (0x1FUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000007C */
+#define ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_Msk /*!< ADC group injected external trigger source */
+#define ADC_JSQR_JEXTSEL_0 (0x1UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000004 */
+#define ADC_JSQR_JEXTSEL_1 (0x2UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000008 */
+#define ADC_JSQR_JEXTSEL_2 (0x4UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000010 */
+#define ADC_JSQR_JEXTSEL_3 (0x8UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000020 */
+#define ADC_JSQR_JEXTSEL_4 (0x10UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000040 */
+
+#define ADC_JSQR_JEXTEN_Pos (7U)
+#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000180 */
+#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */
+#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */
+#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000100 */
+
+#define ADC_JSQR_JSQ1_Pos (9U)
+#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00003E00 */
+#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */
+#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */
+#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */
+#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */
+#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */
+#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00002000 */
+
+#define ADC_JSQR_JSQ2_Pos (15U)
+#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x0007C000 */
+#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */
+#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00004000 */
+#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00008000 */
+#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00010000 */
+#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00020000 */
+#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00040000 */
+
+#define ADC_JSQR_JSQ3_Pos (21U)
+#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x03E00000 */
+#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */
+#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */
+#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */
+#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */
+#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */
+#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x02000000 */
+
+#define ADC_JSQR_JSQ4_Pos (27U)
+#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0xF8000000 */
+#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */
+#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */
+#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */
+#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */
+#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */
+#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x80000000 */
+
+/******************** Bit definition for ADC_OFR1 register ******************/
+#define ADC_OFR1_OFFSET1_Pos (0U)
+#define ADC_OFR1_OFFSET1_Msk (0xFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000FFF */
+#define ADC_OFR1_OFFSET1 ADC_OFR1_OFFSET1_Msk /*!< ADC offset number 1 offset level */
+
+#define ADC_OFR1_OFFSETPOS_Pos (24U)
+#define ADC_OFR1_OFFSETPOS_Msk (0x1UL << ADC_OFR1_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR1_OFFSETPOS ADC_OFR1_OFFSETPOS_Msk /*!< ADC offset number 1 positive */
+#define ADC_OFR1_SATEN_Pos (25U)
+#define ADC_OFR1_SATEN_Msk (0x1UL << ADC_OFR1_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR1_SATEN ADC_OFR1_SATEN_Msk /*!< ADC offset number 1 saturation enable */
+
+#define ADC_OFR1_OFFSET1_CH_Pos (26U)
+#define ADC_OFR1_OFFSET1_CH_Msk (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR1_OFFSET1_CH ADC_OFR1_OFFSET1_CH_Msk /*!< ADC offset number 1 channel selection */
+#define ADC_OFR1_OFFSET1_CH_0 (0x01UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR1_OFFSET1_CH_1 (0x02UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR1_OFFSET1_CH_2 (0x04UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR1_OFFSET1_CH_3 (0x08UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR1_OFFSET1_CH_4 (0x10UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR1_OFFSET1_EN_Pos (31U)
+#define ADC_OFR1_OFFSET1_EN_Msk (0x1UL << ADC_OFR1_OFFSET1_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR1_OFFSET1_EN ADC_OFR1_OFFSET1_EN_Msk /*!< ADC offset number 1 enable */
+
+/******************** Bit definition for ADC_OFR2 register ******************/
+#define ADC_OFR2_OFFSET2_Pos (0U)
+#define ADC_OFR2_OFFSET2_Msk (0xFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000FFF */
+#define ADC_OFR2_OFFSET2 ADC_OFR2_OFFSET2_Msk /*!< ADC offset number 2 offset level */
+
+#define ADC_OFR2_OFFSETPOS_Pos (24U)
+#define ADC_OFR2_OFFSETPOS_Msk (0x1UL << ADC_OFR2_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR2_OFFSETPOS ADC_OFR2_OFFSETPOS_Msk /*!< ADC offset number 2 positive */
+#define ADC_OFR2_SATEN_Pos (25U)
+#define ADC_OFR2_SATEN_Msk (0x1UL << ADC_OFR2_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR2_SATEN ADC_OFR2_SATEN_Msk /*!< ADC offset number 2 saturation enable */
+
+#define ADC_OFR2_OFFSET2_CH_Pos (26U)
+#define ADC_OFR2_OFFSET2_CH_Msk (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR2_OFFSET2_CH ADC_OFR2_OFFSET2_CH_Msk /*!< ADC offset number 2 channel selection */
+#define ADC_OFR2_OFFSET2_CH_0 (0x01UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR2_OFFSET2_CH_1 (0x02UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR2_OFFSET2_CH_2 (0x04UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR2_OFFSET2_CH_3 (0x08UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR2_OFFSET2_CH_4 (0x10UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR2_OFFSET2_EN_Pos (31U)
+#define ADC_OFR2_OFFSET2_EN_Msk (0x1UL << ADC_OFR2_OFFSET2_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR2_OFFSET2_EN ADC_OFR2_OFFSET2_EN_Msk /*!< ADC offset number 2 enable */
+
+/******************** Bit definition for ADC_OFR3 register ******************/
+#define ADC_OFR3_OFFSET3_Pos (0U)
+#define ADC_OFR3_OFFSET3_Msk (0xFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000FFF */
+#define ADC_OFR3_OFFSET3 ADC_OFR3_OFFSET3_Msk /*!< ADC offset number 3 offset level */
+
+#define ADC_OFR3_OFFSETPOS_Pos (24U)
+#define ADC_OFR3_OFFSETPOS_Msk (0x1UL << ADC_OFR3_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR3_OFFSETPOS ADC_OFR3_OFFSETPOS_Msk /*!< ADC offset number 3 positive */
+#define ADC_OFR3_SATEN_Pos (25U)
+#define ADC_OFR3_SATEN_Msk (0x1UL << ADC_OFR3_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR3_SATEN ADC_OFR3_SATEN_Msk /*!< ADC offset number 3 saturation enable */
+
+#define ADC_OFR3_OFFSET3_CH_Pos (26U)
+#define ADC_OFR3_OFFSET3_CH_Msk (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR3_OFFSET3_CH ADC_OFR3_OFFSET3_CH_Msk /*!< ADC offset number 3 channel selection */
+#define ADC_OFR3_OFFSET3_CH_0 (0x01UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR3_OFFSET3_CH_1 (0x02UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR3_OFFSET3_CH_2 (0x04UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR3_OFFSET3_CH_3 (0x08UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR3_OFFSET3_CH_4 (0x10UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR3_OFFSET3_EN_Pos (31U)
+#define ADC_OFR3_OFFSET3_EN_Msk (0x1UL << ADC_OFR3_OFFSET3_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR3_OFFSET3_EN ADC_OFR3_OFFSET3_EN_Msk /*!< ADC offset number 3 enable */
+
+/******************** Bit definition for ADC_OFR4 register ******************/
+#define ADC_OFR4_OFFSET4_Pos (0U)
+#define ADC_OFR4_OFFSET4_Msk (0xFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000FFF */
+#define ADC_OFR4_OFFSET4 ADC_OFR4_OFFSET4_Msk /*!< ADC offset number 4 offset level */
+
+#define ADC_OFR4_OFFSETPOS_Pos (24U)
+#define ADC_OFR4_OFFSETPOS_Msk (0x1UL << ADC_OFR4_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR4_OFFSETPOS ADC_OFR4_OFFSETPOS_Msk /*!< ADC offset number 4 positive */
+#define ADC_OFR4_SATEN_Pos (25U)
+#define ADC_OFR4_SATEN_Msk (0x1UL << ADC_OFR4_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR4_SATEN ADC_OFR4_SATEN_Msk /*!< ADC offset number 4 saturation enable */
+
+#define ADC_OFR4_OFFSET4_CH_Pos (26U)
+#define ADC_OFR4_OFFSET4_CH_Msk (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR4_OFFSET4_CH ADC_OFR4_OFFSET4_CH_Msk /*!< ADC offset number 4 channel selection */
+#define ADC_OFR4_OFFSET4_CH_0 (0x01UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR4_OFFSET4_CH_1 (0x02UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR4_OFFSET4_CH_2 (0x04UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR4_OFFSET4_CH_3 (0x08UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR4_OFFSET4_CH_4 (0x10UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR4_OFFSET4_EN_Pos (31U)
+#define ADC_OFR4_OFFSET4_EN_Msk (0x1UL << ADC_OFR4_OFFSET4_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR4_OFFSET4_EN ADC_OFR4_OFFSET4_EN_Msk /*!< ADC offset number 4 enable */
+
+/******************** Bit definition for ADC_JDR1 register ******************/
+#define ADC_JDR1_JDATA_Pos (0U)
+#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */
+
+/******************** Bit definition for ADC_JDR2 register ******************/
+#define ADC_JDR2_JDATA_Pos (0U)
+#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */
+
+/******************** Bit definition for ADC_JDR3 register ******************/
+#define ADC_JDR3_JDATA_Pos (0U)
+#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */
+
+/******************** Bit definition for ADC_JDR4 register ******************/
+#define ADC_JDR4_JDATA_Pos (0U)
+#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */
+
+/******************** Bit definition for ADC_AWD2CR register ****************/
+#define ADC_AWD2CR_AWD2CH_Pos (0U)
+#define ADC_AWD2CR_AWD2CH_Msk (0xFFFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */
+#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */
+#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */
+#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */
+#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */
+#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */
+#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */
+#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */
+#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */
+#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */
+#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */
+#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */
+#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */
+#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */
+#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */
+#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */
+#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */
+#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */
+#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */
+#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */
+#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */
+#define ADC_AWD2CR_AWD2CH_19 (0x80000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_AWD3CR register ****************/
+#define ADC_AWD3CR_AWD3CH_Pos (0U)
+#define ADC_AWD3CR_AWD3CH_Msk (0xFFFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */
+#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */
+#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */
+#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */
+#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */
+#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */
+#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */
+#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */
+#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */
+#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */
+#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */
+#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */
+#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */
+#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */
+#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */
+#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */
+#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */
+#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */
+#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */
+#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */
+#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */
+#define ADC_AWD3CR_AWD2CH_19 (0x80000UL << ADC_AWD3CR_AWD2CH_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_DIFSEL register ****************/
+#define ADC_DIFSEL_DIFSEL_Pos (0U)
+#define ADC_DIFSEL_DIFSEL_Msk (0xFFFFFUL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x0007FFFF */
+#define ADC_DIFSEL_DIFSEL ADC_DIFSEL_DIFSEL_Msk /*!< ADC channel differential or single-ended mode */
+#define ADC_DIFSEL_DIFSEL_0 (0x00001UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000001 */
+#define ADC_DIFSEL_DIFSEL_1 (0x00002UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000002 */
+#define ADC_DIFSEL_DIFSEL_2 (0x00004UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000004 */
+#define ADC_DIFSEL_DIFSEL_3 (0x00008UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000008 */
+#define ADC_DIFSEL_DIFSEL_4 (0x00010UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000010 */
+#define ADC_DIFSEL_DIFSEL_5 (0x00020UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000020 */
+#define ADC_DIFSEL_DIFSEL_6 (0x00040UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000040 */
+#define ADC_DIFSEL_DIFSEL_7 (0x00080UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000080 */
+#define ADC_DIFSEL_DIFSEL_8 (0x00100UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000100 */
+#define ADC_DIFSEL_DIFSEL_9 (0x00200UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000200 */
+#define ADC_DIFSEL_DIFSEL_10 (0x00400UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000400 */
+#define ADC_DIFSEL_DIFSEL_11 (0x00800UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000800 */
+#define ADC_DIFSEL_DIFSEL_12 (0x01000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00001000 */
+#define ADC_DIFSEL_DIFSEL_13 (0x02000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00002000 */
+#define ADC_DIFSEL_DIFSEL_14 (0x04000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00004000 */
+#define ADC_DIFSEL_DIFSEL_15 (0x08000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00008000 */
+#define ADC_DIFSEL_DIFSEL_16 (0x10000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00010000 */
+#define ADC_DIFSEL_DIFSEL_17 (0x20000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00020000 */
+#define ADC_DIFSEL_DIFSEL_18 (0x40000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00040000 */
+#define ADC_DIFSEL_DIFSEL_19 (0x80000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_CALFACT register ***************/
+#define ADC_CALFACT_CALFACT_S_Pos (0U)
+#define ADC_CALFACT_CALFACT_S_Msk (0x7FUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x0000007F */
+#define ADC_CALFACT_CALFACT_S ADC_CALFACT_CALFACT_S_Msk /*!< ADC calibration factor in single-ended mode */
+#define ADC_CALFACT_CALFACT_S_0 (0x01UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */
+#define ADC_CALFACT_CALFACT_S_1 (0x02UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */
+#define ADC_CALFACT_CALFACT_S_2 (0x04UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */
+#define ADC_CALFACT_CALFACT_S_3 (0x08UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */
+#define ADC_CALFACT_CALFACT_S_4 (0x10UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */
+#define ADC_CALFACT_CALFACT_S_5 (0x20UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */
+#define ADC_CALFACT_CALFACT_S_6 (0x40UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000030 */
+
+#define ADC_CALFACT_CALFACT_D_Pos (16U)
+#define ADC_CALFACT_CALFACT_D_Msk (0x7FUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x007F0000 */
+#define ADC_CALFACT_CALFACT_D ADC_CALFACT_CALFACT_D_Msk /*!< ADC calibration factor in differential mode */
+#define ADC_CALFACT_CALFACT_D_0 (0x01UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */
+#define ADC_CALFACT_CALFACT_D_1 (0x02UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */
+#define ADC_CALFACT_CALFACT_D_2 (0x04UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */
+#define ADC_CALFACT_CALFACT_D_3 (0x08UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */
+#define ADC_CALFACT_CALFACT_D_4 (0x10UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */
+#define ADC_CALFACT_CALFACT_D_5 (0x20UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */
+#define ADC_CALFACT_CALFACT_D_6 (0x40UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00300000 */
+
+/******************** Bit definition for ADC_OR register *****************/
+#define ADC_OR_OP0_Pos (0U)
+#define ADC_OR_OP0_Msk (0x01UL << ADC_OR_OP0_Pos) /*!< 0x00000001 */
+#define ADC_OR_OP0 ADC_OR_OP0_Msk /*!< ADC Option bit 0 */
+#define ADC_OR_OP1_Pos (1U)
+#define ADC_OR_OP1_Msk (0x01UL << ADC_OR_OP1_Pos) /*!< 0x00000001 */
+#define ADC_OR_OP1 ADC_OR_OP1_Msk /*!< ADC Option bit 1 */
+
+/************************* ADC Common registers *****************************/
+/******************** Bit definition for ADC_CSR register *******************/
+#define ADC_CSR_ADRDY_MST_Pos (0U)
+#define ADC_CSR_ADRDY_MST_Msk (0x1UL << ADC_CSR_ADRDY_MST_Pos) /*!< 0x00000001 */
+#define ADC_CSR_ADRDY_MST ADC_CSR_ADRDY_MST_Msk /*!< ADC multimode master ready flag */
+#define ADC_CSR_EOSMP_MST_Pos (1U)
+#define ADC_CSR_EOSMP_MST_Msk (0x1UL << ADC_CSR_EOSMP_MST_Pos) /*!< 0x00000002 */
+#define ADC_CSR_EOSMP_MST ADC_CSR_EOSMP_MST_Msk /*!< ADC multimode master group regular end of sampling flag */
+#define ADC_CSR_EOC_MST_Pos (2U)
+#define ADC_CSR_EOC_MST_Msk (0x1UL << ADC_CSR_EOC_MST_Pos) /*!< 0x00000004 */
+#define ADC_CSR_EOC_MST ADC_CSR_EOC_MST_Msk /*!< ADC multimode master group regular end of unitary conversion flag */
+#define ADC_CSR_EOS_MST_Pos (3U)
+#define ADC_CSR_EOS_MST_Msk (0x1UL << ADC_CSR_EOS_MST_Pos) /*!< 0x00000008 */
+#define ADC_CSR_EOS_MST ADC_CSR_EOS_MST_Msk /*!< ADC multimode master group regular end of sequence conversions flag */
+#define ADC_CSR_OVR_MST_Pos (4U)
+#define ADC_CSR_OVR_MST_Msk (0x1UL << ADC_CSR_OVR_MST_Pos) /*!< 0x00000010 */
+#define ADC_CSR_OVR_MST ADC_CSR_OVR_MST_Msk /*!< ADC multimode master group regular overrun flag */
+#define ADC_CSR_JEOC_MST_Pos (5U)
+#define ADC_CSR_JEOC_MST_Msk (0x1UL << ADC_CSR_JEOC_MST_Pos) /*!< 0x00000020 */
+#define ADC_CSR_JEOC_MST ADC_CSR_JEOC_MST_Msk /*!< ADC multimode master group injected end of unitary conversion flag */
+#define ADC_CSR_JEOS_MST_Pos (6U)
+#define ADC_CSR_JEOS_MST_Msk (0x1UL << ADC_CSR_JEOS_MST_Pos) /*!< 0x00000040 */
+#define ADC_CSR_JEOS_MST ADC_CSR_JEOS_MST_Msk /*!< ADC multimode master group injected end of sequence conversions flag */
+#define ADC_CSR_AWD1_MST_Pos (7U)
+#define ADC_CSR_AWD1_MST_Msk (0x1UL << ADC_CSR_AWD1_MST_Pos) /*!< 0x00000080 */
+#define ADC_CSR_AWD1_MST ADC_CSR_AWD1_MST_Msk /*!< ADC multimode master analog watchdog 1 flag */
+#define ADC_CSR_AWD2_MST_Pos (8U)
+#define ADC_CSR_AWD2_MST_Msk (0x1UL << ADC_CSR_AWD2_MST_Pos) /*!< 0x00000100 */
+#define ADC_CSR_AWD2_MST ADC_CSR_AWD2_MST_Msk /*!< ADC multimode master analog watchdog 2 flag */
+#define ADC_CSR_AWD3_MST_Pos (9U)
+#define ADC_CSR_AWD3_MST_Msk (0x1UL << ADC_CSR_AWD3_MST_Pos) /*!< 0x00000200 */
+#define ADC_CSR_AWD3_MST ADC_CSR_AWD3_MST_Msk /*!< ADC multimode master analog watchdog 3 flag */
+#define ADC_CSR_JQOVF_MST_Pos (10U)
+#define ADC_CSR_JQOVF_MST_Msk (0x1UL << ADC_CSR_JQOVF_MST_Pos) /*!< 0x00000400 */
+#define ADC_CSR_JQOVF_MST ADC_CSR_JQOVF_MST_Msk /*!< ADC multimode master group injected contexts queue overflow flag */
+
+#define ADC_CSR_ADRDY_SLV_Pos (16U)
+#define ADC_CSR_ADRDY_SLV_Msk (0x1UL << ADC_CSR_ADRDY_SLV_Pos) /*!< 0x00010000 */
+#define ADC_CSR_ADRDY_SLV ADC_CSR_ADRDY_SLV_Msk /*!< ADC multimode slave ready flag */
+#define ADC_CSR_EOSMP_SLV_Pos (17U)
+#define ADC_CSR_EOSMP_SLV_Msk (0x1UL << ADC_CSR_EOSMP_SLV_Pos) /*!< 0x00020000 */
+#define ADC_CSR_EOSMP_SLV ADC_CSR_EOSMP_SLV_Msk /*!< ADC multimode slave group regular end of sampling flag */
+#define ADC_CSR_EOC_SLV_Pos (18U)
+#define ADC_CSR_EOC_SLV_Msk (0x1UL << ADC_CSR_EOC_SLV_Pos) /*!< 0x00040000 */
+#define ADC_CSR_EOC_SLV ADC_CSR_EOC_SLV_Msk /*!< ADC multimode slave group regular end of unitary conversion flag */
+#define ADC_CSR_EOS_SLV_Pos (19U)
+#define ADC_CSR_EOS_SLV_Msk (0x1UL << ADC_CSR_EOS_SLV_Pos) /*!< 0x00080000 */
+#define ADC_CSR_EOS_SLV ADC_CSR_EOS_SLV_Msk /*!< ADC multimode slave group regular end of sequence conversions flag */
+#define ADC_CSR_OVR_SLV_Pos (20U)
+#define ADC_CSR_OVR_SLV_Msk (0x1UL << ADC_CSR_OVR_SLV_Pos) /*!< 0x00100000 */
+#define ADC_CSR_OVR_SLV ADC_CSR_OVR_SLV_Msk /*!< ADC multimode slave group regular overrun flag */
+#define ADC_CSR_JEOC_SLV_Pos (21U)
+#define ADC_CSR_JEOC_SLV_Msk (0x1UL << ADC_CSR_JEOC_SLV_Pos) /*!< 0x00200000 */
+#define ADC_CSR_JEOC_SLV ADC_CSR_JEOC_SLV_Msk /*!< ADC multimode slave group injected end of unitary conversion flag */
+#define ADC_CSR_JEOS_SLV_Pos (22U)
+#define ADC_CSR_JEOS_SLV_Msk (0x1UL << ADC_CSR_JEOS_SLV_Pos) /*!< 0x00400000 */
+#define ADC_CSR_JEOS_SLV ADC_CSR_JEOS_SLV_Msk /*!< ADC multimode slave group injected end of sequence conversions flag */
+#define ADC_CSR_AWD1_SLV_Pos (23U)
+#define ADC_CSR_AWD1_SLV_Msk (0x1UL << ADC_CSR_AWD1_SLV_Pos) /*!< 0x00800000 */
+#define ADC_CSR_AWD1_SLV ADC_CSR_AWD1_SLV_Msk /*!< ADC multimode slave analog watchdog 1 flag */
+#define ADC_CSR_AWD2_SLV_Pos (24U)
+#define ADC_CSR_AWD2_SLV_Msk (0x1UL << ADC_CSR_AWD2_SLV_Pos) /*!< 0x01000000 */
+#define ADC_CSR_AWD2_SLV ADC_CSR_AWD2_SLV_Msk /*!< ADC multimode slave analog watchdog 2 flag */
+#define ADC_CSR_AWD3_SLV_Pos (25U)
+#define ADC_CSR_AWD3_SLV_Msk (0x1UL << ADC_CSR_AWD3_SLV_Pos) /*!< 0x02000000 */
+#define ADC_CSR_AWD3_SLV ADC_CSR_AWD3_SLV_Msk /*!< ADC multimode slave analog watchdog 3 flag */
+#define ADC_CSR_JQOVF_SLV_Pos (26U)
+#define ADC_CSR_JQOVF_SLV_Msk (0x1UL << ADC_CSR_JQOVF_SLV_Pos) /*!< 0x04000000 */
+#define ADC_CSR_JQOVF_SLV ADC_CSR_JQOVF_SLV_Msk /*!< ADC multimode slave group injected contexts queue overflow flag */
+
+/******************** Bit definition for ADC_CCR register *******************/
+#define ADC_CCR_DUAL_Pos (0U)
+#define ADC_CCR_DUAL_Msk (0x1FUL << ADC_CCR_DUAL_Pos) /*!< 0x0000001F */
+#define ADC_CCR_DUAL ADC_CCR_DUAL_Msk /*!< ADC multimode mode selection */
+#define ADC_CCR_DUAL_0 (0x01UL << ADC_CCR_DUAL_Pos) /*!< 0x00000001 */
+#define ADC_CCR_DUAL_1 (0x02UL << ADC_CCR_DUAL_Pos) /*!< 0x00000002 */
+#define ADC_CCR_DUAL_2 (0x04UL << ADC_CCR_DUAL_Pos) /*!< 0x00000004 */
+#define ADC_CCR_DUAL_3 (0x08UL << ADC_CCR_DUAL_Pos) /*!< 0x00000008 */
+#define ADC_CCR_DUAL_4 (0x10UL << ADC_CCR_DUAL_Pos) /*!< 0x00000010 */
+
+#define ADC_CCR_DELAY_Pos (8U)
+#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */
+#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!< ADC multimode delay between 2 sampling phases */
+#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */
+#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */
+#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */
+#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */
+
+#define ADC_CCR_DMACFG_Pos (13U)
+#define ADC_CCR_DMACFG_Msk (0x1UL << ADC_CCR_DMACFG_Pos) /*!< 0x00002000 */
+#define ADC_CCR_DMACFG ADC_CCR_DMACFG_Msk /*!< ADC multimode DMA transfer configuration */
+
+#define ADC_CCR_MDMA_Pos (14U)
+#define ADC_CCR_MDMA_Msk (0x3UL << ADC_CCR_MDMA_Pos) /*!< 0x0000C000 */
+#define ADC_CCR_MDMA ADC_CCR_MDMA_Msk /*!< ADC multimode DMA transfer enable */
+#define ADC_CCR_MDMA_0 (0x1UL << ADC_CCR_MDMA_Pos) /*!< 0x00004000 */
+#define ADC_CCR_MDMA_1 (0x2UL << ADC_CCR_MDMA_Pos) /*!< 0x00008000 */
+
+#define ADC_CCR_CKMODE_Pos (16U)
+#define ADC_CCR_CKMODE_Msk (0x3UL << ADC_CCR_CKMODE_Pos) /*!< 0x00030000 */
+#define ADC_CCR_CKMODE ADC_CCR_CKMODE_Msk /*!< ADC common clock source and prescaler (prescaler only for clock source synchronous) */
+#define ADC_CCR_CKMODE_0 (0x1UL << ADC_CCR_CKMODE_Pos) /*!< 0x00010000 */
+#define ADC_CCR_CKMODE_1 (0x2UL << ADC_CCR_CKMODE_Pos) /*!< 0x00020000 */
+
+#define ADC_CCR_PRESC_Pos (18U)
+#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */
+#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */
+#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */
+#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */
+#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */
+#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */
+
+#define ADC_CCR_VREFEN_Pos (22U)
+#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */
+#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */
+#define ADC_CCR_TSEN_Pos (23U)
+#define ADC_CCR_TSEN_Msk (0x1UL << ADC_CCR_TSEN_Pos) /*!< 0x00800000 */
+#define ADC_CCR_TSEN ADC_CCR_TSEN_Msk /*!< ADC internal path to temperature sensor enable */
+#define ADC_CCR_VBATEN_Pos (24U)
+#define ADC_CCR_VBATEN_Msk (0x1UL << ADC_CCR_VBATEN_Pos) /*!< 0x01000000 */
+#define ADC_CCR_VBATEN ADC_CCR_VBATEN_Msk /*!< ADC internal path to battery voltage enable */
+
+/******************** Bit definition for ADC_CDR register *******************/
+#define ADC_CDR_RDATA_MST_Pos (0U)
+#define ADC_CDR_RDATA_MST_Msk (0xFFFFUL << ADC_CDR_RDATA_MST_Pos) /*!< 0x0000FFFF */
+#define ADC_CDR_RDATA_MST ADC_CDR_RDATA_MST_Msk /*!< ADC multimode master group regular conversion data */
+
+#define ADC_CDR_RDATA_SLV_Pos (16U)
+#define ADC_CDR_RDATA_SLV_Msk (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos) /*!< 0xFFFF0000 */
+#define ADC_CDR_RDATA_SLV ADC_CDR_RDATA_SLV_Msk /*!< ADC multimode slave group regular conversion data */
+
+
+/******************************************************************************/
+/* */
+/* CORDIC calculation unit */
+/* */
+/******************************************************************************/
+/******************* Bit definition for CORDIC_CSR register *****************/
+#define CORDIC_CSR_FUNC_Pos (0U)
+#define CORDIC_CSR_FUNC_Msk (0xFUL << CORDIC_CSR_FUNC_Pos) /*!< 0x0000000F */
+#define CORDIC_CSR_FUNC CORDIC_CSR_FUNC_Msk /*!< Function */
+#define CORDIC_CSR_FUNC_0 (0x1UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000001 */
+#define CORDIC_CSR_FUNC_1 (0x2UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000002 */
+#define CORDIC_CSR_FUNC_2 (0x4UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000004 */
+#define CORDIC_CSR_FUNC_3 (0x8UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000008 */
+#define CORDIC_CSR_PRECISION_Pos (4U)
+#define CORDIC_CSR_PRECISION_Msk (0xFUL << CORDIC_CSR_PRECISION_Pos) /*!< 0x000000F0 */
+#define CORDIC_CSR_PRECISION CORDIC_CSR_PRECISION_Msk /*!< Precision */
+#define CORDIC_CSR_PRECISION_0 (0x1UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000010 */
+#define CORDIC_CSR_PRECISION_1 (0x2UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000020 */
+#define CORDIC_CSR_PRECISION_2 (0x4UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000040 */
+#define CORDIC_CSR_PRECISION_3 (0x8UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000080 */
+#define CORDIC_CSR_SCALE_Pos (8U)
+#define CORDIC_CSR_SCALE_Msk (0x7UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000700 */
+#define CORDIC_CSR_SCALE CORDIC_CSR_SCALE_Msk /*!< Scaling factor */
+#define CORDIC_CSR_SCALE_0 (0x1UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000100 */
+#define CORDIC_CSR_SCALE_1 (0x2UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000200 */
+#define CORDIC_CSR_SCALE_2 (0x4UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000400 */
+#define CORDIC_CSR_IEN_Pos (16U)
+#define CORDIC_CSR_IEN_Msk (0x1UL << CORDIC_CSR_IEN_Pos) /*!< 0x00010000 */
+#define CORDIC_CSR_IEN CORDIC_CSR_IEN_Msk /*!< Interrupt Enable */
+#define CORDIC_CSR_DMAREN_Pos (17U)
+#define CORDIC_CSR_DMAREN_Msk (0x1UL << CORDIC_CSR_DMAREN_Pos) /*!< 0x00020000 */
+#define CORDIC_CSR_DMAREN CORDIC_CSR_DMAREN_Msk /*!< DMA Read channel Enable */
+#define CORDIC_CSR_DMAWEN_Pos (18U)
+#define CORDIC_CSR_DMAWEN_Msk (0x1UL << CORDIC_CSR_DMAWEN_Pos) /*!< 0x00040000 */
+#define CORDIC_CSR_DMAWEN CORDIC_CSR_DMAWEN_Msk /*!< DMA Write channel Enable */
+#define CORDIC_CSR_NRES_Pos (19U)
+#define CORDIC_CSR_NRES_Msk (0x1UL << CORDIC_CSR_NRES_Pos) /*!< 0x00080000 */
+#define CORDIC_CSR_NRES CORDIC_CSR_NRES_Msk /*!< Number of results in WDATA register */
+#define CORDIC_CSR_NARGS_Pos (20U)
+#define CORDIC_CSR_NARGS_Msk (0x1UL << CORDIC_CSR_NARGS_Pos) /*!< 0x00100000 */
+#define CORDIC_CSR_NARGS CORDIC_CSR_NARGS_Msk /*!< Number of arguments in RDATA register */
+#define CORDIC_CSR_RESSIZE_Pos (21U)
+#define CORDIC_CSR_RESSIZE_Msk (0x1UL << CORDIC_CSR_RESSIZE_Pos) /*!< 0x00200000 */
+#define CORDIC_CSR_RESSIZE CORDIC_CSR_RESSIZE_Msk /*!< Width of output data */
+#define CORDIC_CSR_ARGSIZE_Pos (22U)
+#define CORDIC_CSR_ARGSIZE_Msk (0x1UL << CORDIC_CSR_ARGSIZE_Pos) /*!< 0x00400000 */
+#define CORDIC_CSR_ARGSIZE CORDIC_CSR_ARGSIZE_Msk /*!< Width of input data */
+#define CORDIC_CSR_RRDY_Pos (31U)
+#define CORDIC_CSR_RRDY_Msk (0x1UL << CORDIC_CSR_RRDY_Pos) /*!< 0x80000000 */
+#define CORDIC_CSR_RRDY CORDIC_CSR_RRDY_Msk /*!< Result Ready Flag */
+
+/******************* Bit definition for CORDIC_WDATA register ***************/
+#define CORDIC_WDATA_ARG_Pos (0U)
+#define CORDIC_WDATA_ARG_Msk (0xFFFFFFFFUL << CORDIC_WDATA_ARG_Pos) /*!< 0xFFFFFFFF */
+#define CORDIC_WDATA_ARG CORDIC_WDATA_ARG_Msk /*!< Input Argument */
+
+/******************* Bit definition for CORDIC_RDATA register ***************/
+#define CORDIC_RDATA_RES_Pos (0U)
+#define CORDIC_RDATA_RES_Msk (0xFFFFFFFFUL << CORDIC_RDATA_RES_Pos) /*!< 0xFFFFFFFF */
+#define CORDIC_RDATA_RES CORDIC_RDATA_RES_Msk /*!< Output Result */
+
+/******************************************************************************/
+/* */
+/* CRC calculation unit */
+/* */
+/******************************************************************************/
+/******************* Bit definition for CRC_DR register *********************/
+#define CRC_DR_DR_Pos (0U)
+#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */
+#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */
+
+/******************* Bit definition for CRC_IDR register ********************/
+#define CRC_IDR_IDR_Pos (0U)
+#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */
+#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bits data register bits */
+
+/******************** Bit definition for CRC_CR register ********************/
+#define CRC_CR_RESET_Pos (0U)
+#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */
+#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */
+#define CRC_CR_POLYSIZE_Pos (3U)
+#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */
+#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */
+#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */
+#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */
+#define CRC_CR_REV_IN_Pos (5U)
+#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */
+#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */
+#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */
+#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */
+#define CRC_CR_REV_OUT_Pos (7U)
+#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */
+#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */
+
+/******************* Bit definition for CRC_INIT register *******************/
+#define CRC_INIT_INIT_Pos (0U)
+#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */
+#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */
+
+/******************* Bit definition for CRC_POL register ********************/
+#define CRC_POL_POL_Pos (0U)
+#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */
+#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */
+
+
+/******************************************************************************/
+/* */
+/* CRS Clock Recovery System */
+/******************************************************************************/
+/******************* Bit definition for CRS_CR register *********************/
+#define CRS_CR_SYNCOKIE_Pos (0U)
+#define CRS_CR_SYNCOKIE_Msk (0x1UL << CRS_CR_SYNCOKIE_Pos) /*!< 0x00000001 */
+#define CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE_Msk /*!< SYNC event OK interrupt enable */
+#define CRS_CR_SYNCWARNIE_Pos (1U)
+#define CRS_CR_SYNCWARNIE_Msk (0x1UL << CRS_CR_SYNCWARNIE_Pos) /*!< 0x00000002 */
+#define CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE_Msk /*!< SYNC warning interrupt enable */
+#define CRS_CR_ERRIE_Pos (2U)
+#define CRS_CR_ERRIE_Msk (0x1UL << CRS_CR_ERRIE_Pos) /*!< 0x00000004 */
+#define CRS_CR_ERRIE CRS_CR_ERRIE_Msk /*!< SYNC error or trimming error interrupt enable */
+#define CRS_CR_ESYNCIE_Pos (3U)
+#define CRS_CR_ESYNCIE_Msk (0x1UL << CRS_CR_ESYNCIE_Pos) /*!< 0x00000008 */
+#define CRS_CR_ESYNCIE CRS_CR_ESYNCIE_Msk /*!< Expected SYNC interrupt enable */
+#define CRS_CR_CEN_Pos (5U)
+#define CRS_CR_CEN_Msk (0x1UL << CRS_CR_CEN_Pos) /*!< 0x00000020 */
+#define CRS_CR_CEN CRS_CR_CEN_Msk /*!< Frequency error counter enable */
+#define CRS_CR_AUTOTRIMEN_Pos (6U)
+#define CRS_CR_AUTOTRIMEN_Msk (0x1UL << CRS_CR_AUTOTRIMEN_Pos) /*!< 0x00000040 */
+#define CRS_CR_AUTOTRIMEN CRS_CR_AUTOTRIMEN_Msk /*!< Automatic trimming enable */
+#define CRS_CR_SWSYNC_Pos (7U)
+#define CRS_CR_SWSYNC_Msk (0x1UL << CRS_CR_SWSYNC_Pos) /*!< 0x00000080 */
+#define CRS_CR_SWSYNC CRS_CR_SWSYNC_Msk /*!< Generate software SYNC event */
+#define CRS_CR_TRIM_Pos (8U)
+#define CRS_CR_TRIM_Msk (0x3FUL << CRS_CR_TRIM_Pos) /*!< 0x00003F00 */
+#define CRS_CR_TRIM CRS_CR_TRIM_Msk /*!< HSI48 oscillator smooth trimming */
+
+/******************* Bit definition for CRS_CFGR register *********************/
+#define CRS_CFGR_RELOAD_Pos (0U)
+#define CRS_CFGR_RELOAD_Msk (0xFFFFUL << CRS_CFGR_RELOAD_Pos) /*!< 0x0000FFFF */
+#define CRS_CFGR_RELOAD CRS_CFGR_RELOAD_Msk /*!< Counter reload value */
+#define CRS_CFGR_FELIM_Pos (16U)
+#define CRS_CFGR_FELIM_Msk (0xFFUL << CRS_CFGR_FELIM_Pos) /*!< 0x00FF0000 */
+#define CRS_CFGR_FELIM CRS_CFGR_FELIM_Msk /*!< Frequency error limit */
+#define CRS_CFGR_SYNCDIV_Pos (24U)
+#define CRS_CFGR_SYNCDIV_Msk (0x7UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x07000000 */
+#define CRS_CFGR_SYNCDIV CRS_CFGR_SYNCDIV_Msk /*!< SYNC divider */
+#define CRS_CFGR_SYNCDIV_0 (0x1UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x01000000 */
+#define CRS_CFGR_SYNCDIV_1 (0x2UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x02000000 */
+#define CRS_CFGR_SYNCDIV_2 (0x4UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x04000000 */
+#define CRS_CFGR_SYNCSRC_Pos (28U)
+#define CRS_CFGR_SYNCSRC_Msk (0x3UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x30000000 */
+#define CRS_CFGR_SYNCSRC CRS_CFGR_SYNCSRC_Msk /*!< SYNC signal source selection */
+#define CRS_CFGR_SYNCSRC_0 (0x1UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x10000000 */
+#define CRS_CFGR_SYNCSRC_1 (0x2UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x20000000 */
+#define CRS_CFGR_SYNCPOL_Pos (31U)
+#define CRS_CFGR_SYNCPOL_Msk (0x1UL << CRS_CFGR_SYNCPOL_Pos) /*!< 0x80000000 */
+#define CRS_CFGR_SYNCPOL CRS_CFGR_SYNCPOL_Msk /*!< SYNC polarity selection */
+
+/******************* Bit definition for CRS_ISR register *********************/
+#define CRS_ISR_SYNCOKF_Pos (0U)
+#define CRS_ISR_SYNCOKF_Msk (0x1UL << CRS_ISR_SYNCOKF_Pos) /*!< 0x00000001 */
+#define CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF_Msk /*!< SYNC event OK flag */
+#define CRS_ISR_SYNCWARNF_Pos (1U)
+#define CRS_ISR_SYNCWARNF_Msk (0x1UL << CRS_ISR_SYNCWARNF_Pos) /*!< 0x00000002 */
+#define CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF_Msk /*!< SYNC warning flag */
+#define CRS_ISR_ERRF_Pos (2U)
+#define CRS_ISR_ERRF_Msk (0x1UL << CRS_ISR_ERRF_Pos) /*!< 0x00000004 */
+#define CRS_ISR_ERRF CRS_ISR_ERRF_Msk /*!< Error flag */
+#define CRS_ISR_ESYNCF_Pos (3U)
+#define CRS_ISR_ESYNCF_Msk (0x1UL << CRS_ISR_ESYNCF_Pos) /*!< 0x00000008 */
+#define CRS_ISR_ESYNCF CRS_ISR_ESYNCF_Msk /*!< Expected SYNC flag */
+#define CRS_ISR_SYNCERR_Pos (8U)
+#define CRS_ISR_SYNCERR_Msk (0x1UL << CRS_ISR_SYNCERR_Pos) /*!< 0x00000100 */
+#define CRS_ISR_SYNCERR CRS_ISR_SYNCERR_Msk /*!< SYNC error */
+#define CRS_ISR_SYNCMISS_Pos (9U)
+#define CRS_ISR_SYNCMISS_Msk (0x1UL << CRS_ISR_SYNCMISS_Pos) /*!< 0x00000200 */
+#define CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS_Msk /*!< SYNC missed */
+#define CRS_ISR_TRIMOVF_Pos (10U)
+#define CRS_ISR_TRIMOVF_Msk (0x1UL << CRS_ISR_TRIMOVF_Pos) /*!< 0x00000400 */
+#define CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF_Msk /*!< Trimming overflow or underflow */
+#define CRS_ISR_FEDIR_Pos (15U)
+#define CRS_ISR_FEDIR_Msk (0x1UL << CRS_ISR_FEDIR_Pos) /*!< 0x00008000 */
+#define CRS_ISR_FEDIR CRS_ISR_FEDIR_Msk /*!< Frequency error direction */
+#define CRS_ISR_FECAP_Pos (16U)
+#define CRS_ISR_FECAP_Msk (0xFFFFUL << CRS_ISR_FECAP_Pos) /*!< 0xFFFF0000 */
+#define CRS_ISR_FECAP CRS_ISR_FECAP_Msk /*!< Frequency error capture */
+
+/******************* Bit definition for CRS_ICR register *********************/
+#define CRS_ICR_SYNCOKC_Pos (0U)
+#define CRS_ICR_SYNCOKC_Msk (0x1UL << CRS_ICR_SYNCOKC_Pos) /*!< 0x00000001 */
+#define CRS_ICR_SYNCOKC CRS_ICR_SYNCOKC_Msk /*!< SYNC event OK clear flag */
+#define CRS_ICR_SYNCWARNC_Pos (1U)
+#define CRS_ICR_SYNCWARNC_Msk (0x1UL << CRS_ICR_SYNCWARNC_Pos) /*!< 0x00000002 */
+#define CRS_ICR_SYNCWARNC CRS_ICR_SYNCWARNC_Msk /*!< SYNC warning clear flag */
+#define CRS_ICR_ERRC_Pos (2U)
+#define CRS_ICR_ERRC_Msk (0x1UL << CRS_ICR_ERRC_Pos) /*!< 0x00000004 */
+#define CRS_ICR_ERRC CRS_ICR_ERRC_Msk /*!< Error clear flag */
+#define CRS_ICR_ESYNCC_Pos (3U)
+#define CRS_ICR_ESYNCC_Msk (0x1UL << CRS_ICR_ESYNCC_Pos) /*!< 0x00000008 */
+#define CRS_ICR_ESYNCC CRS_ICR_ESYNCC_Msk /*!< Expected SYNC clear flag */
+
+
+/******************************************************************************/
+/* */
+/* RNG */
+/* */
+/******************************************************************************/
+/******************** Bits definition for RNG_CR register *******************/
+#define RNG_CR_RNGEN_Pos (2U)
+#define RNG_CR_RNGEN_Msk (0x1UL << RNG_CR_RNGEN_Pos) /*!< 0x00000004 */
+#define RNG_CR_RNGEN RNG_CR_RNGEN_Msk
+#define RNG_CR_IE_Pos (3U)
+#define RNG_CR_IE_Msk (0x1UL << RNG_CR_IE_Pos) /*!< 0x00000008 */
+#define RNG_CR_IE RNG_CR_IE_Msk
+#define RNG_CR_CED_Pos (5U)
+#define RNG_CR_CED_Msk (0x1UL << RNG_CR_CED_Pos) /*!< 0x00000020 */
+#define RNG_CR_CED RNG_CR_CED_Msk
+#define RNG_CR_ARDIS_Pos (7U)
+#define RNG_CR_ARDIS_Msk (0x1UL << RNG_CR_ARDIS_Pos)
+#define RNG_CR_ARDIS RNG_CR_ARDIS_Msk
+#define RNG_CR_RNG_CONFIG3_Pos (8U)
+#define RNG_CR_RNG_CONFIG3_Msk (0xFUL << RNG_CR_RNG_CONFIG3_Pos)
+#define RNG_CR_RNG_CONFIG3 RNG_CR_RNG_CONFIG3_Msk
+#define RNG_CR_NISTC_Pos (12U)
+#define RNG_CR_NISTC_Msk (0x1UL << RNG_CR_NISTC_Pos)
+#define RNG_CR_NISTC RNG_CR_NISTC_Msk
+#define RNG_CR_RNG_CONFIG2_Pos (13U)
+#define RNG_CR_RNG_CONFIG2_Msk (0x7UL << RNG_CR_RNG_CONFIG2_Pos)
+#define RNG_CR_RNG_CONFIG2 RNG_CR_RNG_CONFIG2_Msk
+#define RNG_CR_CLKDIV_Pos (16U)
+#define RNG_CR_CLKDIV_Msk (0xFUL << RNG_CR_CLKDIV_Pos)
+#define RNG_CR_CLKDIV RNG_CR_CLKDIV_Msk
+#define RNG_CR_CLKDIV_0 (0x1UL << RNG_CR_CLKDIV_Pos) /*!< 0x00010000 */
+#define RNG_CR_CLKDIV_1 (0x2UL << RNG_CR_CLKDIV_Pos) /*!< 0x00020000 */
+#define RNG_CR_CLKDIV_2 (0x4UL << RNG_CR_CLKDIV_Pos) /*!< 0x00040000 */
+#define RNG_CR_CLKDIV_3 (0x8UL << RNG_CR_CLKDIV_Pos) /*!< 0x00080000 */
+#define RNG_CR_RNG_CONFIG1_Pos (20U)
+#define RNG_CR_RNG_CONFIG1_Msk (0x3FUL << RNG_CR_RNG_CONFIG1_Pos)
+#define RNG_CR_RNG_CONFIG1 RNG_CR_RNG_CONFIG1_Msk
+#define RNG_CR_CONDRST_Pos (30U)
+#define RNG_CR_CONDRST_Msk (0x1UL << RNG_CR_CONDRST_Pos)
+#define RNG_CR_CONDRST RNG_CR_CONDRST_Msk
+#define RNG_CR_CONFIGLOCK_Pos (31U)
+#define RNG_CR_CONFIGLOCK_Msk (0x1UL << RNG_CR_CONFIGLOCK_Pos)
+#define RNG_CR_CONFIGLOCK RNG_CR_CONFIGLOCK_Msk
+
+/******************** Bits definition for RNG_SR register *******************/
+#define RNG_SR_DRDY_Pos (0U)
+#define RNG_SR_DRDY_Msk (0x1UL << RNG_SR_DRDY_Pos) /*!< 0x00000001 */
+#define RNG_SR_DRDY RNG_SR_DRDY_Msk
+#define RNG_SR_CECS_Pos (1U)
+#define RNG_SR_CECS_Msk (0x1UL << RNG_SR_CECS_Pos) /*!< 0x00000002 */
+#define RNG_SR_CECS RNG_SR_CECS_Msk
+#define RNG_SR_SECS_Pos (2U)
+#define RNG_SR_SECS_Msk (0x1UL << RNG_SR_SECS_Pos) /*!< 0x00000004 */
+#define RNG_SR_SECS RNG_SR_SECS_Msk
+#define RNG_SR_CEIS_Pos (5U)
+#define RNG_SR_CEIS_Msk (0x1UL << RNG_SR_CEIS_Pos) /*!< 0x00000020 */
+#define RNG_SR_CEIS RNG_SR_CEIS_Msk
+#define RNG_SR_SEIS_Pos (6U)
+#define RNG_SR_SEIS_Msk (0x1UL << RNG_SR_SEIS_Pos) /*!< 0x00000040 */
+#define RNG_SR_SEIS RNG_SR_SEIS_Msk
+
+/******************** Bits definition for RNG_NSCR register *******************/
+#define RNG_NSCR_EN_OSC1_Pos (0U)
+#define RNG_NSCR_EN_OSC1_Msk (0x7UL << RNG_NSCR_EN_OSC1_Pos) /*!< 0x00000007 */
+#define RNG_NSCR_EN_OSC1 RNG_NSCR_EN_OSC1_Msk
+#define RNG_NSCR_EN_OSC2_Pos (3U)
+#define RNG_NSCR_EN_OSC2_Msk (0x7UL << RNG_NSCR_EN_OSC2_Pos) /*!< 0x00000038 */
+#define RNG_NSCR_EN_OSC2 RNG_NSCR_EN_OSC2_Msk
+#define RNG_NSCR_EN_OSC3_Pos (6U)
+#define RNG_NSCR_EN_OSC3_Msk (0x7UL << RNG_NSCR_EN_OSC3_Pos) /*!< 0x000001C0 */
+#define RNG_NSCR_EN_OSC3 RNG_NSCR_EN_OSC3_Msk
+#define RNG_NSCR_EN_OSC4_Pos (9U)
+#define RNG_NSCR_EN_OSC4_Msk (0x7UL << RNG_NSCR_EN_OSC4_Pos) /*!< 0x00000E00 */
+#define RNG_NSCR_EN_OSC4 RNG_NSCR_EN_OSC4_Msk
+#define RNG_NSCR_EN_OSC5_Pos (12U)
+#define RNG_NSCR_EN_OSC5_Msk (0x7UL << RNG_NSCR_EN_OSC5_Pos) /*!< 0x00007000 */
+#define RNG_NSCR_EN_OSC5 RNG_NSCR_EN_OSC5_Msk
+#define RNG_NSCR_EN_OSC6_Pos (15U)
+#define RNG_NSCR_EN_OSC6_Msk (0x7UL << RNG_NSCR_EN_OSC6_Pos) /*!< 0x00038000 */
+#define RNG_NSCR_EN_OSC6 RNG_NSCR_EN_OSC6_Msk
+
+/******************** Bits definition for RNG_HTCR register *******************/
+#define RNG_HTCR_HTCFG_Pos (0U)
+#define RNG_HTCR_HTCFG_Msk (0xFFFFFFFFUL << RNG_HTCR_HTCFG_Pos) /*!< 0xFFFFFFFF */
+#define RNG_HTCR_HTCFG RNG_HTCR_HTCFG_Msk
+
+/******************** RNG Nist Compliance Values ******************************/
+#define RNG_CR_NIST_VALUE (0x00F00E00U)
+#define RNG_HTCR_NIST_VALUE (0x6A91U)
+#define RNG_NSCR_NIST_VALUE (0x3AF66U)
+
+/******************************************************************************/
+/* */
+/* Digital to Analog Converter */
+/* */
+/******************************************************************************/
+#define DAC_CHANNEL2_SUPPORT /*!< DAC feature available only on specific devices: DAC channel 2 available */
+
+/******************** Bit definition for DAC_CR register ********************/
+#define DAC_CR_EN1_Pos (0U)
+#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */
+#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!*/
+#define DAC_CR_CEN1_Pos (14U)
+#define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */
+#define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!*/
+#define DAC_CR_EN2_Pos (16U)
+#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */
+#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!*/
+#define DAC_CR_CEN2_Pos (30U)
+#define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */
+#define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!*/
+
+/***************** Bit definition for DAC_SWTRIGR register ******************/
+#define DAC_SWTRIGR_SWTRIG1_Pos (0U)
+#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */
+#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!> 1U) /*!< FLASH Bank Size */
+#define FLASH_SECTOR_SIZE 0x2000U /*!< Flash Sector Size: 8 KB */
+
+/******************* Bits definition for FLASH_ACR register *****************/
+#define FLASH_ACR_LATENCY_Pos (0U)
+#define FLASH_ACR_LATENCY_Msk (0xFUL << FLASH_ACR_LATENCY_Pos) /*!< 0x0000000F */
+#define FLASH_ACR_LATENCY FLASH_ACR_LATENCY_Msk /*!< Latency */
+#define FLASH_ACR_LATENCY_0WS (0x00000000U)
+#define FLASH_ACR_LATENCY_1WS (0x00000001U)
+#define FLASH_ACR_LATENCY_2WS (0x00000002U)
+#define FLASH_ACR_LATENCY_3WS (0x00000003U)
+#define FLASH_ACR_LATENCY_4WS (0x00000004U)
+#define FLASH_ACR_LATENCY_5WS (0x00000005U)
+#define FLASH_ACR_LATENCY_6WS (0x00000006U)
+#define FLASH_ACR_LATENCY_7WS (0x00000007U)
+#define FLASH_ACR_LATENCY_8WS (0x00000008U)
+#define FLASH_ACR_LATENCY_9WS (0x00000009U)
+#define FLASH_ACR_LATENCY_10WS (0x0000000AU)
+#define FLASH_ACR_LATENCY_11WS (0x0000000BU)
+#define FLASH_ACR_LATENCY_12WS (0x0000000CU)
+#define FLASH_ACR_LATENCY_13WS (0x0000000DU)
+#define FLASH_ACR_LATENCY_14WS (0x0000000EU)
+#define FLASH_ACR_LATENCY_15WS (0x0000000FU)
+#define FLASH_ACR_WRHIGHFREQ_Pos (4U)
+#define FLASH_ACR_WRHIGHFREQ_Msk (0x3UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000030 */
+#define FLASH_ACR_WRHIGHFREQ FLASH_ACR_WRHIGHFREQ_Msk /*!< Flash signal delay */
+#define FLASH_ACR_WRHIGHFREQ_0 (0x1UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000010 */
+#define FLASH_ACR_WRHIGHFREQ_1 (0x2UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000020 */
+#define FLASH_ACR_PRFTEN_Pos (8U)
+#define FLASH_ACR_PRFTEN_Msk (0x1UL << FLASH_ACR_PRFTEN_Pos) /*!< 0x00000100 */
+#define FLASH_ACR_PRFTEN FLASH_ACR_PRFTEN_Msk /*!< Prefetch enable */
+
+/******************* Bits definition for FLASH_OPSR register ***************/
+#define FLASH_OPSR_ADDR_OP_Pos (0U)
+#define FLASH_OPSR_ADDR_OP_Msk (0xFFFFFUL << FLASH_OPSR_ADDR_OP_Pos) /*!< 0x000FFFFF */
+#define FLASH_OPSR_ADDR_OP FLASH_OPSR_ADDR_OP_Msk /*!< Interrupted operation address */
+#define FLASH_OPSR_DATA_OP_Pos (21U)
+#define FLASH_OPSR_DATA_OP_Msk (0x1UL << FLASH_OPSR_DATA_OP_Pos) /*!< 0x00200000 */
+#define FLASH_OPSR_DATA_OP FLASH_OPSR_DATA_OP_Msk /*!< Operation in Flash high-cycle data area interrupted */
+#define FLASH_OPSR_BK_OP_Pos (22U)
+#define FLASH_OPSR_BK_OP_Msk (0x1UL << FLASH_OPSR_BK_OP_Pos) /*!< 0x00400000 */
+#define FLASH_OPSR_BK_OP FLASH_OPSR_BK_OP_Msk /*!< Interrupted operation bank */
+#define FLASH_OPSR_SYSF_OP_Pos (23U)
+#define FLASH_OPSR_SYSF_OP_Msk (0x1UL << FLASH_OPSR_SYSF_OP_Pos) /*!< 0x00800000 */
+#define FLASH_OPSR_SYSF_OP FLASH_OPSR_SYSF_OP_Msk /*!< Operation in System Flash interrupted */
+#define FLASH_OPSR_OTP_OP_Pos (24U)
+#define FLASH_OPSR_OTP_OP_Msk (0x1UL << FLASH_OPSR_OTP_OP_Pos) /*!< 0x01000000 */
+#define FLASH_OPSR_OTP_OP FLASH_OPSR_OTP_OP_Msk /*!< Operation in OTP area interrupted */
+#define FLASH_OPSR_CODE_OP_Pos (29U)
+#define FLASH_OPSR_CODE_OP_Msk (0x7UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0xE0000000 */
+#define FLASH_OPSR_CODE_OP FLASH_OPSR_CODE_OP_Msk /*!< Flash memory operation code */
+#define FLASH_OPSR_CODE_OP_0 (0x1UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x20000000 */
+#define FLASH_OPSR_CODE_OP_1 (0x2UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x40000000 */
+#define FLASH_OPSR_CODE_OP_2 (0x4UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x80000000 */
+
+/******************* Bits definition for FLASH_OPTCR register *******************/
+#define FLASH_OPTCR_OPTLOCK_Pos (0U)
+#define FLASH_OPTCR_OPTLOCK_Msk (0x1UL << FLASH_OPTCR_OPTLOCK_Pos) /*!< 0x00000001 */
+#define FLASH_OPTCR_OPTLOCK FLASH_OPTCR_OPTLOCK_Msk /*!< FLASH_OPTCR lock option configuration bit */
+#define FLASH_OPTCR_OPTSTART_Pos (1U)
+#define FLASH_OPTCR_OPTSTART_Msk (0x1UL << FLASH_OPTCR_OPTSTART_Pos) /*!< 0x00000002 */
+#define FLASH_OPTCR_OPTSTART FLASH_OPTCR_OPTSTART_Msk /*!< Option byte start change option configuration bit */
+#define FLASH_OPTCR_SWAP_BANK_Pos (31U)
+#define FLASH_OPTCR_SWAP_BANK_Msk (0x1UL << FLASH_OPTCR_SWAP_BANK_Pos) /*!< 0x80000000 */
+#define FLASH_OPTCR_SWAP_BANK FLASH_OPTCR_SWAP_BANK_Msk /*!< Bank swapping option configuration bit */
+
+/******************* Bits definition for FLASH_SR register ***********************/
+#define FLASH_SR_BSY_Pos (0U)
+#define FLASH_SR_BSY_Msk (0x1UL << FLASH_SR_BSY_Pos) /*!< 0x00000001 */
+#define FLASH_SR_BSY FLASH_SR_BSY_Msk /*!< Busy flag */
+#define FLASH_SR_WBNE_Pos (1U)
+#define FLASH_SR_WBNE_Msk (0x1UL << FLASH_SR_WBNE_Pos) /*!< 0x00000002 */
+#define FLASH_SR_WBNE FLASH_SR_WBNE_Msk /*!< Write buffer not empty flag */
+#define FLASH_SR_DBNE_Pos (3U)
+#define FLASH_SR_DBNE_Msk (0x1UL << FLASH_SR_DBNE_Pos) /*!< 0x00000008 */
+#define FLASH_SR_DBNE FLASH_SR_DBNE_Msk /*!< Data buffer not empty flag */
+#define FLASH_SR_EOP_Pos (16U)
+#define FLASH_SR_EOP_Msk (0x1UL << FLASH_SR_EOP_Pos) /*!< 0x00010000 */
+#define FLASH_SR_EOP FLASH_SR_EOP_Msk /*!< End-of-program flag */
+#define FLASH_SR_WRPERR_Pos (17U)
+#define FLASH_SR_WRPERR_Msk (0x1UL << FLASH_SR_WRPERR_Pos) /*!< 0x00020000 */
+#define FLASH_SR_WRPERR FLASH_SR_WRPERR_Msk /*!< Write protection error flag */
+#define FLASH_SR_PGSERR_Pos (18U)
+#define FLASH_SR_PGSERR_Msk (0x1UL << FLASH_SR_PGSERR_Pos) /*!< 0x00040000 */
+#define FLASH_SR_PGSERR FLASH_SR_PGSERR_Msk /*!< Programming sequence error flag */
+#define FLASH_SR_STRBERR_Pos (19U)
+#define FLASH_SR_STRBERR_Msk (0x1UL << FLASH_SR_STRBERR_Pos) /*!< 0x00080000 */
+#define FLASH_SR_STRBERR FLASH_SR_STRBERR_Msk /*!< Strobe error flag */
+#define FLASH_SR_INCERR_Pos (20U)
+#define FLASH_SR_INCERR_Msk (0x1UL << FLASH_SR_INCERR_Pos) /*!< 0x00100000 */
+#define FLASH_SR_INCERR FLASH_SR_INCERR_Msk /*!< Inconsistency error flag */
+#define FLASH_SR_OBKERR_Pos (21U)
+#define FLASH_SR_OBKERR_Msk (0x1UL << FLASH_SR_OBKERR_Pos) /*!< 0x00200000 */
+#define FLASH_SR_OBKERR FLASH_SR_OBKERR_Msk /*!< OBK general error flag */
+#define FLASH_SR_OBKWERR_Pos (22U)
+#define FLASH_SR_OBKWERR_Msk (0x1UL << FLASH_SR_OBKWERR_Pos) /*!< 0x00400000 */
+#define FLASH_SR_OBKWERR FLASH_SR_OBKWERR_Msk /*!< OBK write error flag */
+#define FLASH_SR_OPTCHANGEERR_Pos (23U)
+#define FLASH_SR_OPTCHANGEERR_Msk (0x1UL << FLASH_SR_OPTCHANGEERR_Pos) /*!< 0x00800000 */
+#define FLASH_SR_OPTCHANGEERR FLASH_SR_OPTCHANGEERR_Msk /*!< Option byte change error flag */
+
+/******************* Bits definition for FLASH_CR register ***********************/
+#define FLASH_CR_LOCK_Pos (0U)
+#define FLASH_CR_LOCK_Msk (0x1UL << FLASH_CR_LOCK_Pos) /*!< 0x00000001 */
+#define FLASH_CR_LOCK FLASH_CR_LOCK_Msk /*!< Configuration lock bit */
+#define FLASH_CR_PG_Pos (1U)
+#define FLASH_CR_PG_Msk (0x1UL << FLASH_CR_PG_Pos) /*!< 0x00000002 */
+#define FLASH_CR_PG FLASH_CR_PG_Msk /*!< Programming control bit */
+#define FLASH_CR_SER_Pos (2U)
+#define FLASH_CR_SER_Msk (0x1UL << FLASH_CR_SER_Pos) /*!< 0x00000004 */
+#define FLASH_CR_SER FLASH_CR_SER_Msk /*!< Sector erase request */
+#define FLASH_CR_BER_Pos (3U)
+#define FLASH_CR_BER_Msk (0x1UL << FLASH_CR_BER_Pos) /*!< 0x00000008 */
+#define FLASH_CR_BER FLASH_CR_BER_Msk /*!< Bank erase request */
+#define FLASH_CR_FW_Pos (4U)
+#define FLASH_CR_FW_Msk (0x1UL << FLASH_CR_FW_Pos) /*!< 0x00000010 */
+#define FLASH_CR_FW FLASH_CR_FW_Msk /*!< Write forcing control bit */
+#define FLASH_CR_START_Pos (5U)
+#define FLASH_CR_START_Msk (0x1UL << FLASH_CR_START_Pos) /*!< 0x00000020 */
+#define FLASH_CR_START FLASH_CR_START_Msk /*!< Erase start control bit */
+#define FLASH_CR_SNB_Pos (6U)
+#define FLASH_CR_SNB_Msk (0x7FUL << FLASH_CR_SNB_Pos) /*!< 0x00001FC0 */
+#define FLASH_CR_SNB FLASH_CR_SNB_Msk /*!< Sector erase selection number */
+#define FLASH_CR_SNB_0 (0x01UL << FLASH_CR_SNB_Pos) /*!< 0x00000040 */
+#define FLASH_CR_SNB_1 (0x02UL << FLASH_CR_SNB_Pos) /*!< 0x00000080 */
+#define FLASH_CR_SNB_2 (0x04UL << FLASH_CR_SNB_Pos) /*!< 0x00000100 */
+#define FLASH_CR_SNB_3 (0x08UL << FLASH_CR_SNB_Pos) /*!< 0x00000200 */
+#define FLASH_CR_SNB_4 (0x10UL << FLASH_CR_SNB_Pos) /*!< 0x00000400 */
+#define FLASH_CR_SNB_5 (0x20UL << FLASH_CR_SNB_Pos) /*!< 0x00000800 */
+#define FLASH_CR_SNB_6 (0x40UL << FLASH_CR_SNB_Pos) /*!< 0x00001000 */
+#define FLASH_CR_MER_Pos (15U)
+#define FLASH_CR_MER_Msk (0x1UL << FLASH_CR_MER_Pos) /*!< 0x00008000 */
+#define FLASH_CR_MER FLASH_CR_MER_Msk /*!< Mass erase */
+#define FLASH_CR_EOPIE_Pos (16U)
+#define FLASH_CR_EOPIE_Msk (0x1UL << FLASH_CR_EOPIE_Pos) /*!< 0x00010000 */
+#define FLASH_CR_EOPIE FLASH_CR_EOPIE_Msk /*!< End-of-operation interrupt control bit */
+#define FLASH_CR_WRPERRIE_Pos (17U)
+#define FLASH_CR_WRPERRIE_Msk (0x1UL << FLASH_CR_WRPERRIE_Pos) /*!< 0x00020000 */
+#define FLASH_CR_WRPERRIE FLASH_CR_WRPERRIE_Msk /*!< Write protection error interrupt enable bit */
+#define FLASH_CR_PGSERRIE_Pos (18U)
+#define FLASH_CR_PGSERRIE_Msk (0x1UL << FLASH_CR_PGSERRIE_Pos) /*!< 0x00040000 */
+#define FLASH_CR_PGSERRIE FLASH_CR_PGSERRIE_Msk /*!< Programming sequence error interrupt enable bit */
+#define FLASH_CR_STRBERRIE_Pos (19U)
+#define FLASH_CR_STRBERRIE_Msk (0x1UL << FLASH_CR_STRBERRIE_Pos) /*!< 0x00080000 */
+#define FLASH_CR_STRBERRIE FLASH_CR_STRBERRIE_Msk /*!< Strobe error interrupt enable bit */
+#define FLASH_CR_INCERRIE_Pos (20U)
+#define FLASH_CR_INCERRIE_Msk (0x1UL << FLASH_CR_INCERRIE_Pos) /*!< 0x00100000 */
+#define FLASH_CR_INCERRIE FLASH_CR_INCERRIE_Msk /*!< Inconsistency error interrupt enable bit */
+#define FLASH_CR_OBKERRIE_Pos (21U)
+#define FLASH_CR_OBKERRIE_Msk (0x1UL << FLASH_CR_OBKERRIE_Pos) /*!< 0x00200000 */
+#define FLASH_CR_OBKERRIE FLASH_CR_OBKERRIE_Msk /*!< OBK general error interrupt enable bitt */
+#define FLASH_CR_OBKWERRIE_Pos (22U)
+#define FLASH_CR_OBKWERRIE_Msk (0x1UL << FLASH_CR_OBKWERRIE_Pos) /*!< 0x00400000 */
+#define FLASH_CR_OBKWERRIE FLASH_CR_OBKWERRIE_Msk /*!< OBK write error interrupt enable bit */
+#define FLASH_CR_OPTCHANGEERRIE_Pos (23U)
+#define FLASH_CR_OPTCHANGEERRIE_Msk (0x1UL << FLASH_CR_OPTCHANGEERRIE_Pos) /*!< 0x00800000 */
+#define FLASH_CR_OPTCHANGEERRIE FLASH_CR_OPTCHANGEERRIE_Msk /*!< Option byte change error interrupt enable bit */
+#define FLASH_CR_INV_Pos (29U)
+#define FLASH_CR_INV_Msk (0x1UL << FLASH_CR_INV_Pos) /*!< 0x20000000 */
+#define FLASH_CR_INV FLASH_CR_INV_Msk /*!< Flash Security State Invert */
+#define FLASH_CR_BKSEL_Pos (31U)
+#define FLASH_CR_BKSEL_Msk (0x1UL << FLASH_CR_BKSEL_Pos) /*!< 0x10000000 */
+#define FLASH_CR_BKSEL FLASH_CR_BKSEL_Msk /*!< Bank selector */
+
+/******************* Bits definition for FLASH_CCR register *******************/
+#define FLASH_CCR_CLR_EOP_Pos (16U)
+#define FLASH_CCR_CLR_EOP_Msk (0x1UL << FLASH_CCR_CLR_EOP_Pos) /*!< 0x00010000 */
+#define FLASH_CCR_CLR_EOP FLASH_CCR_CLR_EOP_Msk /*!< EOP flag clear bit */
+#define FLASH_CCR_CLR_WRPERR_Pos (17U)
+#define FLASH_CCR_CLR_WRPERR_Msk (0x1UL << FLASH_CCR_CLR_WRPERR_Pos) /*!< 0x00020000 */
+#define FLASH_CCR_CLR_WRPERR FLASH_CCR_CLR_WRPERR_Msk /*!< WRPERR flag clear bit */
+#define FLASH_CCR_CLR_PGSERR_Pos (18U)
+#define FLASH_CCR_CLR_PGSERR_Msk (0x1UL << FLASH_CCR_CLR_PGSERR_Pos) /*!< 0x00040000 */
+#define FLASH_CCR_CLR_PGSERR FLASH_CCR_CLR_PGSERR_Msk /*!< PGSERR flag clear bit */
+#define FLASH_CCR_CLR_STRBERR_Pos (19U)
+#define FLASH_CCR_CLR_STRBERR_Msk (0x1UL << FLASH_CCR_CLR_STRBERR_Pos) /*!< 0x00080000 */
+#define FLASH_CCR_CLR_STRBERR FLASH_CCR_CLR_STRBERR_Msk /*!< STRBERR flag clear bit */
+#define FLASH_CCR_CLR_INCERR_Pos (20U)
+#define FLASH_CCR_CLR_INCERR_Msk (0x1UL << FLASH_CCR_CLR_INCERR_Pos) /*!< 0x00100000 */
+#define FLASH_CCR_CLR_INCERR FLASH_CCR_CLR_INCERR_Msk /*!< INCERR flag clear bit */
+#define FLASH_CCR_CLR_OBKERR_Pos (21U)
+#define FLASH_CCR_CLR_OBKERR_Msk (0x1UL << FLASH_CCR_CLR_OBKERR_Pos) /*!< 0x00200000 */
+#define FLASH_CCR_CLR_OBKERR FLASH_CCR_CLR_OBKERR_Msk /*!< OBKERR flag clear bit */
+#define FLASH_CCR_CLR_OBKWERR_Pos (22U)
+#define FLASH_CCR_CLR_OBKWERR_Msk (0x1UL << FLASH_CCR_CLR_OBKWERR_Pos) /*!< 0x00400000 */
+#define FLASH_CCR_CLR_OBKWERR FLASH_CCR_CLR_OBKWERR_Msk /*!< OBKWERR flag clear bit */
+#define FLASH_CCR_CLR_OPTCHANGEERR_Pos (23U)
+#define FLASH_CCR_CLR_OPTCHANGEERR_Msk (0x1UL << FLASH_CCR_CLR_OPTCHANGEERR_Pos) /*!< 0x00800000 */
+#define FLASH_CCR_CLR_OPTCHANGEERR FLASH_CCR_CLR_OPTCHANGEERR_Msk /*!< Option byte change error clear bit */
+
+/****************** Bits definition for FLASH_PRIVCFGR register ***********/
+#define FLASH_PRIVCFGR_SPRIV_Pos (0U)
+#define FLASH_PRIVCFGR_SPRIV_Msk (0x1UL << FLASH_PRIVCFGR_SPRIV_Pos) /*!< 0x00000001 */
+#define FLASH_PRIVCFGR_SPRIV FLASH_PRIVCFGR_SPRIV_Msk /*!< Privilege protection for secure registers */
+#define FLASH_PRIVCFGR_NSPRIV_Pos (1U)
+#define FLASH_PRIVCFGR_NSPRIV_Msk (0x1UL << FLASH_PRIVCFGR_NSPRIV_Pos) /*!< 0x00000002 */
+#define FLASH_PRIVCFGR_NSPRIV FLASH_PRIVCFGR_NSPRIV_Msk /*!< Privilege protection for non-secure registers */
+
+/****************** Bits definition for FLASH_OBKCFGR register *****************/
+#define FLASH_OBKCFGR_LOCK_Pos (0U)
+#define FLASH_OBKCFGR_LOCK_Msk (0x1UL << FLASH_OBKCFGR_LOCK_Pos) /*!< 0x00000001 */
+#define FLASH_OBKCFGR_LOCK FLASH_OBKCFGR_LOCK_Msk /*!< OBKCFGR lock */
+#define FLASH_OBKCFGR_SWAP_SECT_REQ_Pos (1U)
+#define FLASH_OBKCFGR_SWAP_SECT_REQ_Msk (0x1UL << FLASH_OBKCFGR_SWAP_SECT_REQ_Pos) /*!< 0x00000002 */
+#define FLASH_OBKCFGR_SWAP_SECT_REQ FLASH_OBKCFGR_SWAP_SECT_REQ_Msk /*!< OBK swap sector request */
+#define FLASH_OBKCFGR_ALT_SECT_Pos (2U)
+#define FLASH_OBKCFGR_ALT_SECT_Msk (0x1UL << FLASH_OBKCFGR_ALT_SECT_Pos) /*!< 0x00000004 */
+#define FLASH_OBKCFGR_ALT_SECT FLASH_OBKCFGR_ALT_SECT_Msk /*!< Alternate sector */
+#define FLASH_OBKCFGR_ALT_SECT_ERASE_Pos (3U)
+#define FLASH_OBKCFGR_ALT_SECT_ERASE_Msk (0x1UL << FLASH_OBKCFGR_ALT_SECT_ERASE_Pos) /*!< 0x00000008 */
+#define FLASH_OBKCFGR_ALT_SECT_ERASE FLASH_OBKCFGR_ALT_SECT_ERASE_Msk /*!< Alternate sector erase */
+#define FLASH_OBKCFGR_SWAP_OFFSET_Pos (16U)
+#define FLASH_OBKCFGR_SWAP_OFFSET_Msk (0x1FFUL << FLASH_OBKCFGR_SWAP_OFFSET_Pos) /*!< 0x01FF0000 */
+#define FLASH_OBKCFGR_SWAP_OFFSET FLASH_OBKCFGR_SWAP_OFFSET_Msk /*!< Swap offset */
+
+/****************** Bits definition for FLASH_HDPEXTR register *****************/
+#define FLASH_HDPEXTR_HDP1_EXT_Pos (0U)
+#define FLASH_HDPEXTR_HDP1_EXT_Msk (0x7FUL << FLASH_HDPEXTR_HDP1_EXT_Pos) /*!< 0x0000007F */
+#define FLASH_HDPEXTR_HDP1_EXT FLASH_HDPEXTR_HDP1_EXT_Msk /*!< HDP area extension in 8kB sectors in bank 1 */
+#define FLASH_HDPEXTR_HDP2_EXT_Pos (16U)
+#define FLASH_HDPEXTR_HDP2_EXT_Msk (0x7FUL << FLASH_HDPEXTR_HDP2_EXT_Pos) /*!< 0x007F0000 */
+#define FLASH_HDPEXTR_HDP2_EXT FLASH_HDPEXTR_HDP2_EXT_Msk /*!< HDP area extension in 8kB sectors in bank 2 */
+
+/******************* Bits definition for FLASH_OPTSR register ***************/
+#define FLASH_OPTSR_BOR_LEV_Pos (0U)
+#define FLASH_OPTSR_BOR_LEV_Msk (0x3UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000003 */
+#define FLASH_OPTSR_BOR_LEV FLASH_OPTSR_BOR_LEV_Msk /*!< Brownout level option bit */
+#define FLASH_OPTSR_BOR_LEV_0 (0x1UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000001 */
+#define FLASH_OPTSR_BOR_LEV_1 (0x2UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000002 */
+#define FLASH_OPTSR_BORH_EN_Pos (2U)
+#define FLASH_OPTSR_BORH_EN_Msk (0x1UL << FLASH_OPTSR_BORH_EN_Pos) /*!< 0x00000004 */
+#define FLASH_OPTSR_BORH_EN FLASH_OPTSR_BORH_EN_Msk /*!< Brownout high enable configuration bit */
+#define FLASH_OPTSR_IWDG_SW_Pos (3U)
+#define FLASH_OPTSR_IWDG_SW_Msk (0x1UL << FLASH_OPTSR_IWDG_SW_Pos) /*!< 0x00000008 */
+#define FLASH_OPTSR_IWDG_SW FLASH_OPTSR_IWDG_SW_Msk /*!< IWDG control mode option bit */
+#define FLASH_OPTSR_WWDG_SW_Pos (4U)
+#define FLASH_OPTSR_WWDG_SW_Msk (0x1UL << FLASH_OPTSR_WWDG_SW_Pos) /*!< 0x00000010 */
+#define FLASH_OPTSR_WWDG_SW FLASH_OPTSR_WWDG_SW_Msk /*!< WWDG control mode option bit */
+#define FLASH_OPTSR_NRST_STOP_Pos (6U)
+#define FLASH_OPTSR_NRST_STOP_Msk (0x1UL << FLASH_OPTSR_NRST_STOP_Pos) /*!< 0x00000040 */
+#define FLASH_OPTSR_NRST_STOP FLASH_OPTSR_NRST_STOP_Msk /*!< Stop mode entry reset option bit */
+#define FLASH_OPTSR_NRST_STDBY_Pos (7U)
+#define FLASH_OPTSR_NRST_STDBY_Msk (0x1UL << FLASH_OPTSR_NRST_STDBY_Pos) /*!< 0x00000080 */
+#define FLASH_OPTSR_NRST_STDBY FLASH_OPTSR_NRST_STDBY_Msk /*!< Standby mode entry reset option bit */
+#define FLASH_OPTSR_PRODUCT_STATE_Pos (8U)
+#define FLASH_OPTSR_PRODUCT_STATE_Msk (0xFFUL << FLASH_OPTSR_PRODUCT_STATE_Pos) /*!< 0x0000FF00 */
+#define FLASH_OPTSR_PRODUCT_STATE FLASH_OPTSR_PRODUCT_STATE_Msk /*!< Life state code option byte */
+#define FLASH_OPTSR_IO_VDD_HSLV_Pos (16U)
+#define FLASH_OPTSR_IO_VDD_HSLV_Msk (0x1UL << FLASH_OPTSR_IO_VDD_HSLV_Pos) /*!< 0x00010000 */
+#define FLASH_OPTSR_IO_VDD_HSLV FLASH_OPTSR_IO_VDD_HSLV_Msk /*!< VDD I/O high-speed at low-voltage option bit */
+#define FLASH_OPTSR_IO_VDDIO2_HSLV_Pos (17U)
+#define FLASH_OPTSR_IO_VDDIO2_HSLV_Msk (0x1UL << FLASH_OPTSR_IO_VDDIO2_HSLV_Pos) /*!< 0x00020000 */
+#define FLASH_OPTSR_IO_VDDIO2_HSLV FLASH_OPTSR_IO_VDDIO2_HSLV_Msk /*!< VDDIO2 I/O high-speed at low-voltage option bit */
+#define FLASH_OPTSR_IWDG_STOP_Pos (20U)
+#define FLASH_OPTSR_IWDG_STOP_Msk (0x1UL << FLASH_OPTSR_IWDG_STOP_Pos) /*!< 0x00100000 */
+#define FLASH_OPTSR_IWDG_STOP FLASH_OPTSR_IWDG_STOP_Msk /*!< Independent watchdog counter freeze in Stop mode */
+#define FLASH_OPTSR_IWDG_STDBY_Pos (21U)
+#define FLASH_OPTSR_IWDG_STDBY_Msk (0x1UL << FLASH_OPTSR_IWDG_STDBY_Pos) /*!< 0x00200000 */
+#define FLASH_OPTSR_IWDG_STDBY FLASH_OPTSR_IWDG_STDBY_Msk /*!< Independent watchdog counter freeze in Standby mode */
+#define FLASH_OPTSR_BOOT_UBE_Pos (22U)
+#define FLASH_OPTSR_BOOT_UBE_Msk (0xFFUL << FLASH_OPTSR_BOOT_UBE_Pos) /*!< 0x3FC00000 */
+#define FLASH_OPTSR_BOOT_UBE FLASH_OPTSR_BOOT_UBE_Msk /*!< Unique boot entry option byte */
+#define FLASH_OPTSR_SWAP_BANK_Pos (31U)
+#define FLASH_OPTSR_SWAP_BANK_Msk (0x1UL << FLASH_OPTSR_SWAP_BANK_Pos) /*!< 0x80000000 */
+#define FLASH_OPTSR_SWAP_BANK FLASH_OPTSR_SWAP_BANK_Msk /*!< Bank swapping option bit */
+
+/******************* Bits definition for FLASH_EPOCHR register ***************/
+#define FLASH_EPOCHR_EPOCH_Pos (0U)
+#define FLASH_EPOCHR_EPOCH_Msk (0xFFFFFFUL << FLASH_EPOCHR_EPOCH_Pos) /*!< 0x00FFFFFF */
+#define FLASH_EPOCHR_EPOCH FLASH_EPOCHR_EPOCH_Msk /*!< EPOCH counter */
+
+/******************* Bits definition for FLASH_OPTSR2 register ***************/
+#define FLASH_OPTSR2_SRAM1_3_RST_Pos (2U)
+#define FLASH_OPTSR2_SRAM1_3_RST_Msk (0x1UL << FLASH_OPTSR2_SRAM1_3_RST_Pos) /*!< 0x00000004 */
+#define FLASH_OPTSR2_SRAM1_3_RST FLASH_OPTSR2_SRAM1_3_RST_Msk /*!< SRAM1 and SRAM3 erased when a system reset occurs */
+#define FLASH_OPTSR2_SRAM2_RST_Pos (3U)
+#define FLASH_OPTSR2_SRAM2_RST_Msk (0x1UL << FLASH_OPTSR2_SRAM2_RST_Pos) /*!< 0x00000008 */
+#define FLASH_OPTSR2_SRAM2_RST FLASH_OPTSR2_SRAM2_RST_Msk /*!< SRAM2 erased when a system reset occurs*/
+#define FLASH_OPTSR2_BKPRAM_ECC_Pos (4U)
+#define FLASH_OPTSR2_BKPRAM_ECC_Msk (0x1UL << FLASH_OPTSR2_BKPRAM_ECC_Pos) /*!< 0x00000010 */
+#define FLASH_OPTSR2_BKPRAM_ECC FLASH_OPTSR2_BKPRAM_ECC_Msk /*!< Backup RAM ECC detection and correction enable */
+#define FLASH_OPTSR2_SRAM3_ECC_Pos (5U)
+#define FLASH_OPTSR2_SRAM3_ECC_Msk (0x1UL << FLASH_OPTSR2_SRAM3_ECC_Pos) /*!< 0x00000020 */
+#define FLASH_OPTSR2_SRAM3_ECC FLASH_OPTSR2_SRAM3_ECC_Msk /*!< SRAM3 ECC detection and correction enable */
+#define FLASH_OPTSR2_SRAM2_ECC_Pos (6U)
+#define FLASH_OPTSR2_SRAM2_ECC_Msk (0x1UL << FLASH_OPTSR2_SRAM2_ECC_Pos) /*!< 0x00000040 */
+#define FLASH_OPTSR2_SRAM2_ECC FLASH_OPTSR2_SRAM2_ECC_Msk /*!< SRAM2 ECC detection and correction disable */
+#define FLASH_OPTSR2_USBPD_DIS_Pos (8U)
+#define FLASH_OPTSR2_USBPD_DIS_Msk (0x1UL << FLASH_OPTSR2_USBPD_DIS_Pos) /*!< 0x00000100 */
+#define FLASH_OPTSR2_USBPD_DIS FLASH_OPTSR2_USBPD_DIS_Msk /*!< USB power delivery configuration disable */
+#define FLASH_OPTSR2_TZEN_Pos (24U)
+#define FLASH_OPTSR2_TZEN_Msk (0xFFUL << FLASH_OPTSR2_TZEN_Pos) /*!< 0xFF000000 */
+#define FLASH_OPTSR2_TZEN FLASH_OPTSR2_TZEN_Msk /*!< TrustZone enable */
+
+/**************** Bits definition for FLASH_BOOTR register **********************/
+#define FLASH_BOOTR_BOOT_LOCK_Pos (0U)
+#define FLASH_BOOTR_BOOT_LOCK_Msk (0xFFUL << FLASH_BOOTR_BOOT_LOCK_Pos) /*!< 0x000000FF */
+#define FLASH_BOOTR_BOOT_LOCK FLASH_BOOTR_BOOT_LOCK_Msk /*!< Boot Lock */
+#define FLASH_BOOTR_BOOTADD_Pos (8U)
+#define FLASH_BOOTR_BOOTADD_Msk (0xFFFFFFUL << FLASH_BOOTR_BOOTADD_Pos) /*!< 0xFFFFFF00 */
+#define FLASH_BOOTR_BOOTADD FLASH_BOOTR_BOOTADD_Msk /*!< Boot address */
+
+/**************** Bits definition for FLASH_PRIVBBR register *******************/
+#define FLASH_PRIVBBR_PRIVBB_Pos (0U)
+#define FLASH_PRIVBBR_PRIVBB_Msk (0xFFFFFFFFUL << FLASH_PRIVBBR_PRIVBB_Pos) /*!< 0xFFFFFFFF */
+#define FLASH_PRIVBBR_PRIVBB FLASH_PRIVBBR_PRIVBB_Msk /*!< Privileged/unprivileged 8-Kbyte Flash sector attribute */
+
+/***************** Bits definition for FLASH_SECWMR register ********************/
+#define FLASH_SECWMR_SECWM_STRT_Pos (0U)
+#define FLASH_SECWMR_SECWM_STRT_Msk (0x7FUL << FLASH_SECWMR_SECWM_STRT_Pos) /*!< 0x0000007F */
+#define FLASH_SECWMR_SECWM_STRT FLASH_SECWMR_SECWM_STRT_Msk /*!< Start sector of secure area */
+#define FLASH_SECWMR_SECWM_END_Pos (16U)
+#define FLASH_SECWMR_SECWM_END_Msk (0x7FUL << FLASH_SECWMR_SECWM_END_Pos) /*!< 0x007F0000 */
+#define FLASH_SECWMR_SECWM_END FLASH_SECWMR_SECWM_END_Msk /*!< End sector of secure area */
+
+/***************** Bits definition for FLASH_WRPR register *********************/
+#define FLASH_WRPR_WRPSG_Pos (0U)
+#define FLASH_WRPR_WRPSG_Msk (0xFFFFFFFFUL << FLASH_WRPR_WRPSG_Pos) /*!< 0xFFFFFFFF */
+#define FLASH_WRPR_WRPSG FLASH_WRPR_WRPSG_Msk /*!< Sector group protection option status */
+
+/***************** Bits definition for FLASH_EDATA register ********************/
+#define FLASH_EDATAR_EDATA_STRT_Pos (0U)
+#define FLASH_EDATAR_EDATA_STRT_Msk (0x7UL << FLASH_EDATAR_EDATA_STRT_Pos) /*!< 0x00000007 */
+#define FLASH_EDATAR_EDATA_STRT FLASH_EDATAR_EDATA_STRT_Msk /*!< Flash high-cycle data start sector */
+#define FLASH_EDATAR_EDATA_EN_Pos (15U)
+#define FLASH_EDATAR_EDATA_EN_Msk (0x1UL << FLASH_EDATAR_EDATA_EN_Pos) /*!< 0x00008000 */
+#define FLASH_EDATAR_EDATA_EN FLASH_EDATAR_EDATA_EN_Msk /*!< Flash high-cycle data enable */
+
+/***************** Bits definition for FLASH_HDPR register ********************/
+#define FLASH_HDPR_HDP_STRT_Pos (0U)
+#define FLASH_HDPR_HDP_STRT_Msk (0x7FUL << FLASH_HDPR_HDP_STRT_Pos) /*!< 0x0000007F */
+#define FLASH_HDPR_HDP_STRT FLASH_HDPR_HDP_STRT_Msk /*!< Start sector of hide protection area */
+#define FLASH_HDPR_HDP_END_Pos (16U)
+#define FLASH_HDPR_HDP_END_Msk (0x7FUL << FLASH_HDPR_HDP_END_Pos) /*!< 0x007F0000 */
+#define FLASH_HDPR_HDP_END FLASH_HDPR_HDP_END_Msk /*!< End sector of hide protection area */
+
+/******************* Bits definition for FLASH_ECCR register ***************/
+#define FLASH_ECCR_ADDR_ECC_Pos (0U)
+#define FLASH_ECCR_ADDR_ECC_Msk (0xFFFFUL << FLASH_ECCR_ADDR_ECC_Pos) /*!< 0x0000FFFF */
+#define FLASH_ECCR_ADDR_ECC FLASH_ECCR_ADDR_ECC_Msk /*!< ECC fail address */
+#define FLASH_ECCR_OBK_ECC_Pos (20U)
+#define FLASH_ECCR_OBK_ECC_Msk (0x1UL << FLASH_ECCR_OBK_ECC_Pos) /*!< 0x00200000 */
+#define FLASH_ECCR_OBK_ECC FLASH_ECCR_OBK_ECC_Msk /*!< Flash OB Keys storage area ECC fail */
+#define FLASH_ECCR_DATA_ECC_Pos (21U)
+#define FLASH_ECCR_DATA_ECC_Msk (0x1UL << FLASH_ECCR_DATA_ECC_Pos) /*!< 0x00400000 */
+#define FLASH_ECCR_DATA_ECC FLASH_ECCR_DATA_ECC_Msk /*!< Flash high-cycle data ECC fail */
+#define FLASH_ECCR_BK_ECC_Pos (22U)
+#define FLASH_ECCR_BK_ECC_Msk (0x1UL << FLASH_ECCR_BK_ECC_Pos) /*!< 0x00400000 */
+#define FLASH_ECCR_BK_ECC FLASH_ECCR_BK_ECC_Msk /*!< ECC fail bank */
+#define FLASH_ECCR_SYSF_ECC_Pos (23U)
+#define FLASH_ECCR_SYSF_ECC_Msk (0x1UL << FLASH_ECCR_SYSF_ECC_Pos) /*!< 0x00800000 */
+#define FLASH_ECCR_SYSF_ECC FLASH_ECCR_SYSF_ECC_Msk /*!< System Flash ECC fail */
+#define FLASH_ECCR_OTP_ECC_Pos (24U)
+#define FLASH_ECCR_OTP_ECC_Msk (0x1UL << FLASH_ECCR_OTP_ECC_Pos) /*!< 0x01000000 */
+#define FLASH_ECCR_OTP_ECC FLASH_ECCR_OTP_ECC_Msk /*!< Flash OTP ECC fail */
+#define FLASH_ECCR_ECCIE_Pos (25U)
+#define FLASH_ECCR_ECCIE_Msk (0x1UL << FLASH_ECCR_ECCIE_Pos) /*!< 0x02000000 */
+#define FLASH_ECCR_ECCIE FLASH_ECCR_ECCIE_Msk /*!< ECC correction interrupt enable */
+#define FLASH_ECCR_ECCC_Pos (30U)
+#define FLASH_ECCR_ECCC_Msk (0x1UL << FLASH_ECCR_ECCC_Pos) /*!< 0x40000000 */
+#define FLASH_ECCR_ECCC FLASH_ECCR_ECCC_Msk /*!< ECC correction */
+#define FLASH_ECCR_ECCD_Pos (31U)
+#define FLASH_ECCR_ECCD_Msk (0x1UL << FLASH_ECCR_ECCD_Pos) /*!< 0x80000000 */
+#define FLASH_ECCR_ECCD FLASH_ECCR_ECCD_Msk /*!< ECC detection */
+
+/******************* Bits definition for FLASH_ECCDR register ***************/
+#define FLASH_ECCDR_FAIL_DATA_Pos (0U)
+#define FLASH_ECCDR_FAIL_DATA_Msk (0xFFFFUL << FLASH_ECCDR_FAIL_DATA_Pos) /*!< 0x0000FFFF */
+#define FLASH_ECCDR_FAIL_DATA FLASH_ECCDR_FAIL_DATA_Msk /*!< ECC fail data */
+
+/******************************************************************************/
+/* */
+/* Filter Mathematical ACcelerator unit (FMAC) */
+/* */
+/******************************************************************************/
+/***************** Bit definition for FMAC_X1BUFCFG register ****************/
+#define FMAC_X1BUFCFG_X1_BASE_Pos (0U)
+#define FMAC_X1BUFCFG_X1_BASE_Msk (0xFFUL << FMAC_X1BUFCFG_X1_BASE_Pos) /*!< 0x000000FF */
+#define FMAC_X1BUFCFG_X1_BASE FMAC_X1BUFCFG_X1_BASE_Msk /*!< Base address of X1 buffer */
+#define FMAC_X1BUFCFG_X1_BUF_SIZE_Pos (8U)
+#define FMAC_X1BUFCFG_X1_BUF_SIZE_Msk (0xFFUL << FMAC_X1BUFCFG_X1_BUF_SIZE_Pos) /*!< 0x0000FF00 */
+#define FMAC_X1BUFCFG_X1_BUF_SIZE FMAC_X1BUFCFG_X1_BUF_SIZE_Msk /*!< Allocated size of X1 buffer in 16-bit words */
+#define FMAC_X1BUFCFG_FULL_WM_Pos (24U)
+#define FMAC_X1BUFCFG_FULL_WM_Msk (0x3UL << FMAC_X1BUFCFG_FULL_WM_Pos) /*!< 0x03000000 */
+#define FMAC_X1BUFCFG_FULL_WM FMAC_X1BUFCFG_FULL_WM_Msk /*!< Watermark for buffer full flag */
+
+/***************** Bit definition for FMAC_X2BUFCFG register ****************/
+#define FMAC_X2BUFCFG_X2_BASE_Pos (0U)
+#define FMAC_X2BUFCFG_X2_BASE_Msk (0xFFUL << FMAC_X2BUFCFG_X2_BASE_Pos) /*!< 0x000000FF */
+#define FMAC_X2BUFCFG_X2_BASE FMAC_X2BUFCFG_X2_BASE_Msk /*!< Base address of X2 buffer */
+#define FMAC_X2BUFCFG_X2_BUF_SIZE_Pos (8U)
+#define FMAC_X2BUFCFG_X2_BUF_SIZE_Msk (0xFFUL << FMAC_X2BUFCFG_X2_BUF_SIZE_Pos) /*!< 0x0000FF00 */
+#define FMAC_X2BUFCFG_X2_BUF_SIZE FMAC_X2BUFCFG_X2_BUF_SIZE_Msk /*!< Size of X2 buffer in 16-bit words */
+
+/***************** Bit definition for FMAC_YBUFCFG register *****************/
+#define FMAC_YBUFCFG_Y_BASE_Pos (0U)
+#define FMAC_YBUFCFG_Y_BASE_Msk (0xFFUL << FMAC_YBUFCFG_Y_BASE_Pos) /*!< 0x000000FF */
+#define FMAC_YBUFCFG_Y_BASE FMAC_YBUFCFG_Y_BASE_Msk /*!< Base address of Y buffer */
+#define FMAC_YBUFCFG_Y_BUF_SIZE_Pos (8U)
+#define FMAC_YBUFCFG_Y_BUF_SIZE_Msk (0xFFUL << FMAC_YBUFCFG_Y_BUF_SIZE_Pos) /*!< 0x0000FF00 */
+#define FMAC_YBUFCFG_Y_BUF_SIZE FMAC_YBUFCFG_Y_BUF_SIZE_Msk /*!< Size of Y buffer in 16-bit words */
+#define FMAC_YBUFCFG_EMPTY_WM_Pos (24U)
+#define FMAC_YBUFCFG_EMPTY_WM_Msk (0x3UL << FMAC_YBUFCFG_EMPTY_WM_Pos) /*!< 0x03000000 */
+#define FMAC_YBUFCFG_EMPTY_WM FMAC_YBUFCFG_EMPTY_WM_Msk /*!< Watermark for buffer empty flag */
+
+/****************** Bit definition for FMAC_PARAM register ******************/
+#define FMAC_PARAM_P_Pos (0U)
+#define FMAC_PARAM_P_Msk (0xFFUL << FMAC_PARAM_P_Pos) /*!< 0x000000FF */
+#define FMAC_PARAM_P FMAC_PARAM_P_Msk /*!< Input parameter P */
+#define FMAC_PARAM_Q_Pos (8U)
+#define FMAC_PARAM_Q_Msk (0xFFUL << FMAC_PARAM_Q_Pos) /*!< 0x0000FF00 */
+#define FMAC_PARAM_Q FMAC_PARAM_Q_Msk /*!< Input parameter Q */
+#define FMAC_PARAM_R_Pos (16U)
+#define FMAC_PARAM_R_Msk (0xFFUL << FMAC_PARAM_R_Pos) /*!< 0x00FF0000 */
+#define FMAC_PARAM_R FMAC_PARAM_R_Msk /*!< Input parameter R */
+#define FMAC_PARAM_FUNC_Pos (24U)
+#define FMAC_PARAM_FUNC_Msk (0x7FUL << FMAC_PARAM_FUNC_Pos) /*!< 0x7F000000 */
+#define FMAC_PARAM_FUNC FMAC_PARAM_FUNC_Msk /*!< Function */
+#define FMAC_PARAM_FUNC_0 (0x1UL << FMAC_PARAM_FUNC_Pos) /*!< 0x01000000 */
+#define FMAC_PARAM_FUNC_1 (0x2UL << FMAC_PARAM_FUNC_Pos) /*!< 0x02000000 */
+#define FMAC_PARAM_FUNC_2 (0x4UL << FMAC_PARAM_FUNC_Pos) /*!< 0x04000000 */
+#define FMAC_PARAM_FUNC_3 (0x8UL << FMAC_PARAM_FUNC_Pos) /*!< 0x08000000 */
+#define FMAC_PARAM_FUNC_4 (0x10UL << FMAC_PARAM_FUNC_Pos) /*!< 0x10000000 */
+#define FMAC_PARAM_FUNC_5 (0x20UL << FMAC_PARAM_FUNC_Pos) /*!< 0x20000000 */
+#define FMAC_PARAM_FUNC_6 (0x40UL << FMAC_PARAM_FUNC_Pos) /*!< 0x40000000 */
+#define FMAC_PARAM_START_Pos (31U)
+#define FMAC_PARAM_START_Msk (0x1UL << FMAC_PARAM_START_Pos) /*!< 0x80000000 */
+#define FMAC_PARAM_START FMAC_PARAM_START_Msk /*!< Enable execution */
+
+/******************** Bit definition for FMAC_CR register *******************/
+#define FMAC_CR_RIEN_Pos (0U)
+#define FMAC_CR_RIEN_Msk (0x1UL << FMAC_CR_RIEN_Pos) /*!< 0x00000001 */
+#define FMAC_CR_RIEN FMAC_CR_RIEN_Msk /*!< Enable read interrupt */
+#define FMAC_CR_WIEN_Pos (1U)
+#define FMAC_CR_WIEN_Msk (0x1UL << FMAC_CR_WIEN_Pos) /*!< 0x00000002 */
+#define FMAC_CR_WIEN FMAC_CR_WIEN_Msk /*!< Enable write interrupt */
+#define FMAC_CR_OVFLIEN_Pos (2U)
+#define FMAC_CR_OVFLIEN_Msk (0x1UL << FMAC_CR_OVFLIEN_Pos) /*!< 0x00000004 */
+#define FMAC_CR_OVFLIEN FMAC_CR_OVFLIEN_Msk /*!< Enable overflow error interrupts */
+#define FMAC_CR_UNFLIEN_Pos (3U)
+#define FMAC_CR_UNFLIEN_Msk (0x1UL << FMAC_CR_UNFLIEN_Pos) /*!< 0x00000008 */
+#define FMAC_CR_UNFLIEN FMAC_CR_UNFLIEN_Msk /*!< Enable underflow error interrupts */
+#define FMAC_CR_SATIEN_Pos (4U)
+#define FMAC_CR_SATIEN_Msk (0x1UL << FMAC_CR_SATIEN_Pos) /*!< 0x00000010 */
+#define FMAC_CR_SATIEN FMAC_CR_SATIEN_Msk /*!< Enable saturation error interrupts */
+#define FMAC_CR_DMAREN_Pos (8U)
+#define FMAC_CR_DMAREN_Msk (0x1UL << FMAC_CR_DMAREN_Pos) /*!< 0x00000100 */
+#define FMAC_CR_DMAREN FMAC_CR_DMAREN_Msk /*!< Enable DMA read channel requests */
+#define FMAC_CR_DMAWEN_Pos (9U)
+#define FMAC_CR_DMAWEN_Msk (0x1UL << FMAC_CR_DMAWEN_Pos) /*!< 0x00000200 */
+#define FMAC_CR_DMAWEN FMAC_CR_DMAWEN_Msk /*!< Enable DMA write channel requests */
+#define FMAC_CR_CLIPEN_Pos (15U)
+#define FMAC_CR_CLIPEN_Msk (0x1UL << FMAC_CR_CLIPEN_Pos) /*!< 0x00008000 */
+#define FMAC_CR_CLIPEN FMAC_CR_CLIPEN_Msk /*!< Enable clipping */
+#define FMAC_CR_RESET_Pos (16U)
+#define FMAC_CR_RESET_Msk (0x1UL << FMAC_CR_RESET_Pos) /*!< 0x00010000 */
+#define FMAC_CR_RESET FMAC_CR_RESET_Msk /*!< Reset filter mathematical accelerator unit */
+
+/******************* Bit definition for FMAC_SR register ********************/
+#define FMAC_SR_YEMPTY_Pos (0U)
+#define FMAC_SR_YEMPTY_Msk (0x1UL << FMAC_SR_YEMPTY_Pos) /*!< 0x00000001 */
+#define FMAC_SR_YEMPTY FMAC_SR_YEMPTY_Msk /*!< Y buffer empty flag */
+#define FMAC_SR_X1FULL_Pos (1U)
+#define FMAC_SR_X1FULL_Msk (0x1UL << FMAC_SR_X1FULL_Pos) /*!< 0x00000002 */
+#define FMAC_SR_X1FULL FMAC_SR_X1FULL_Msk /*!< X1 buffer full flag */
+#define FMAC_SR_OVFL_Pos (8U)
+#define FMAC_SR_OVFL_Msk (0x1UL << FMAC_SR_OVFL_Pos) /*!< 0x00000100 */
+#define FMAC_SR_OVFL FMAC_SR_OVFL_Msk /*!< Overflow error flag */
+#define FMAC_SR_UNFL_Pos (9U)
+#define FMAC_SR_UNFL_Msk (0x1UL << FMAC_SR_UNFL_Pos) /*!< 0x00000200 */
+#define FMAC_SR_UNFL FMAC_SR_UNFL_Msk /*!< Underflow error flag */
+#define FMAC_SR_SAT_Pos (10U)
+#define FMAC_SR_SAT_Msk (0x1UL << FMAC_SR_SAT_Pos) /*!< 0x00000400 */
+#define FMAC_SR_SAT FMAC_SR_SAT_Msk /*!< Saturation error flag */
+
+/****************** Bit definition for FMAC_WDATA register ******************/
+#define FMAC_WDATA_WDATA_Pos (0U)
+#define FMAC_WDATA_WDATA_Msk (0xFFFFUL << FMAC_WDATA_WDATA_Pos) /*!< 0x0000FFFF */
+#define FMAC_WDATA_WDATA FMAC_WDATA_WDATA_Msk /*!< Write data */
+
+/****************** Bit definition for FMACX_RDATA register *****************/
+#define FMAC_RDATA_RDATA_Pos (0U)
+#define FMAC_RDATA_RDATA_Msk (0xFFFFUL << FMAC_RDATA_RDATA_Pos) /*!< 0x0000FFFF */
+#define FMAC_RDATA_RDATA FMAC_RDATA_RDATA_Msk /*!< Read data */
+
+/******************************************************************************/
+/* */
+/* Flexible Memory Controller */
+/* */
+/******************************************************************************/
+/****************** Bit definition for FMC_BCR1 register *******************/
+#define FMC_BCR1_CCLKEN_Pos (20U)
+#define FMC_BCR1_CCLKEN_Msk (0x1UL << FMC_BCR1_CCLKEN_Pos) /*!< 0x00100000 */
+#define FMC_BCR1_CCLKEN FMC_BCR1_CCLKEN_Msk /*! */
+
+/******************** Bits definition for RTC_ALRMAR register ***************/
+#define RTC_ALRMAR_SU_Pos (0U)
+#define RTC_ALRMAR_SU_Msk (0xFUL << RTC_ALRMAR_SU_Pos) /*!< 0x0000000F */
+#define RTC_ALRMAR_SU RTC_ALRMAR_SU_Msk
+#define RTC_ALRMAR_SU_0 (0x1UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000001 */
+#define RTC_ALRMAR_SU_1 (0x2UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000002 */
+#define RTC_ALRMAR_SU_2 (0x4UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000004 */
+#define RTC_ALRMAR_SU_3 (0x8UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000008 */
+#define RTC_ALRMAR_ST_Pos (4U)
+#define RTC_ALRMAR_ST_Msk (0x7UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000070 */
+#define RTC_ALRMAR_ST RTC_ALRMAR_ST_Msk
+#define RTC_ALRMAR_ST_0 (0x1UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000010 */
+#define RTC_ALRMAR_ST_1 (0x2UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000020 */
+#define RTC_ALRMAR_ST_2 (0x4UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000040 */
+#define RTC_ALRMAR_MSK1_Pos (7U)
+#define RTC_ALRMAR_MSK1_Msk (0x1UL << RTC_ALRMAR_MSK1_Pos) /*!< 0x00000080 */
+#define RTC_ALRMAR_MSK1 RTC_ALRMAR_MSK1_Msk
+#define RTC_ALRMAR_MNU_Pos (8U)
+#define RTC_ALRMAR_MNU_Msk (0xFUL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000F00 */
+#define RTC_ALRMAR_MNU RTC_ALRMAR_MNU_Msk
+#define RTC_ALRMAR_MNU_0 (0x1UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000100 */
+#define RTC_ALRMAR_MNU_1 (0x2UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000200 */
+#define RTC_ALRMAR_MNU_2 (0x4UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000400 */
+#define RTC_ALRMAR_MNU_3 (0x8UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000800 */
+#define RTC_ALRMAR_MNT_Pos (12U)
+#define RTC_ALRMAR_MNT_Msk (0x7UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00007000 */
+#define RTC_ALRMAR_MNT RTC_ALRMAR_MNT_Msk
+#define RTC_ALRMAR_MNT_0 (0x1UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00001000 */
+#define RTC_ALRMAR_MNT_1 (0x2UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00002000 */
+#define RTC_ALRMAR_MNT_2 (0x4UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00004000 */
+#define RTC_ALRMAR_MSK2_Pos (15U)
+#define RTC_ALRMAR_MSK2_Msk (0x1UL << RTC_ALRMAR_MSK2_Pos) /*!< 0x00008000 */
+#define RTC_ALRMAR_MSK2 RTC_ALRMAR_MSK2_Msk
+#define RTC_ALRMAR_HU_Pos (16U)
+#define RTC_ALRMAR_HU_Msk (0xFUL << RTC_ALRMAR_HU_Pos) /*!< 0x000F0000 */
+#define RTC_ALRMAR_HU RTC_ALRMAR_HU_Msk
+#define RTC_ALRMAR_HU_0 (0x1UL << RTC_ALRMAR_HU_Pos) /*!< 0x00010000 */
+#define RTC_ALRMAR_HU_1 (0x2UL << RTC_ALRMAR_HU_Pos) /*!< 0x00020000 */
+#define RTC_ALRMAR_HU_2 (0x4UL << RTC_ALRMAR_HU_Pos) /*!< 0x00040000 */
+#define RTC_ALRMAR_HU_3 (0x8UL << RTC_ALRMAR_HU_Pos) /*!< 0x00080000 */
+#define RTC_ALRMAR_HT_Pos (20U)
+#define RTC_ALRMAR_HT_Msk (0x3UL << RTC_ALRMAR_HT_Pos) /*!< 0x00300000 */
+#define RTC_ALRMAR_HT RTC_ALRMAR_HT_Msk
+#define RTC_ALRMAR_HT_0 (0x1UL << RTC_ALRMAR_HT_Pos) /*!< 0x00100000 */
+#define RTC_ALRMAR_HT_1 (0x2UL << RTC_ALRMAR_HT_Pos) /*!< 0x00200000 */
+#define RTC_ALRMAR_PM_Pos (22U)
+#define RTC_ALRMAR_PM_Msk (0x1UL << RTC_ALRMAR_PM_Pos) /*!< 0x00400000 */
+#define RTC_ALRMAR_PM RTC_ALRMAR_PM_Msk
+#define RTC_ALRMAR_MSK3_Pos (23U)
+#define RTC_ALRMAR_MSK3_Msk (0x1UL << RTC_ALRMAR_MSK3_Pos) /*!< 0x00800000 */
+#define RTC_ALRMAR_MSK3 RTC_ALRMAR_MSK3_Msk
+#define RTC_ALRMAR_DU_Pos (24U)
+#define RTC_ALRMAR_DU_Msk (0xFUL << RTC_ALRMAR_DU_Pos) /*!< 0x0F000000 */
+#define RTC_ALRMAR_DU RTC_ALRMAR_DU_Msk
+#define RTC_ALRMAR_DU_0 (0x1UL << RTC_ALRMAR_DU_Pos) /*!< 0x01000000 */
+#define RTC_ALRMAR_DU_1 (0x2UL << RTC_ALRMAR_DU_Pos) /*!< 0x02000000 */
+#define RTC_ALRMAR_DU_2 (0x4UL << RTC_ALRMAR_DU_Pos) /*!< 0x04000000 */
+#define RTC_ALRMAR_DU_3 (0x8UL << RTC_ALRMAR_DU_Pos) /*!< 0x08000000 */
+#define RTC_ALRMAR_DT_Pos (28U)
+#define RTC_ALRMAR_DT_Msk (0x3UL << RTC_ALRMAR_DT_Pos) /*!< 0x30000000 */
+#define RTC_ALRMAR_DT RTC_ALRMAR_DT_Msk
+#define RTC_ALRMAR_DT_0 (0x1UL << RTC_ALRMAR_DT_Pos) /*!< 0x10000000 */
+#define RTC_ALRMAR_DT_1 (0x2UL << RTC_ALRMAR_DT_Pos) /*!< 0x20000000 */
+#define RTC_ALRMAR_WDSEL_Pos (30U)
+#define RTC_ALRMAR_WDSEL_Msk (0x1UL << RTC_ALRMAR_WDSEL_Pos) /*!< 0x40000000 */
+#define RTC_ALRMAR_WDSEL RTC_ALRMAR_WDSEL_Msk
+#define RTC_ALRMAR_MSK4_Pos (31U)
+#define RTC_ALRMAR_MSK4_Msk (0x1UL << RTC_ALRMAR_MSK4_Pos) /*!< 0x80000000 */
+#define RTC_ALRMAR_MSK4 RTC_ALRMAR_MSK4_Msk
+
+/******************** Bits definition for RTC_ALRMASSR register *************/
+#define RTC_ALRMASSR_SS_Pos (0U)
+#define RTC_ALRMASSR_SS_Msk (0x7FFFUL << RTC_ALRMASSR_SS_Pos) /*!< 0x00007FFF */
+#define RTC_ALRMASSR_SS RTC_ALRMASSR_SS_Msk
+#define RTC_ALRMASSR_MASKSS_Pos (24U)
+#define RTC_ALRMASSR_MASKSS_Msk (0x3FUL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x3F000000 */
+#define RTC_ALRMASSR_MASKSS RTC_ALRMASSR_MASKSS_Msk
+#define RTC_ALRMASSR_MASKSS_0 (0x1UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x01000000 */
+#define RTC_ALRMASSR_MASKSS_1 (0x2UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x02000000 */
+#define RTC_ALRMASSR_MASKSS_2 (0x4UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x04000000 */
+#define RTC_ALRMASSR_MASKSS_3 (0x8UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x08000000 */
+#define RTC_ALRMASSR_MASKSS_4 (0x10UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x10000000 */
+#define RTC_ALRMASSR_MASKSS_5 (0x20UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x20000000 */
+#define RTC_ALRMASSR_SSCLR_Pos (31U)
+#define RTC_ALRMASSR_SSCLR_Msk (0x1UL << RTC_ALRMASSR_SSCLR_Pos) /*!< 0x80000000 */
+#define RTC_ALRMASSR_SSCLR RTC_ALRMASSR_SSCLR_Msk
+
+/******************** Bits definition for RTC_ALRMBR register ***************/
+#define RTC_ALRMBR_SU_Pos (0U)
+#define RTC_ALRMBR_SU_Msk (0xFUL << RTC_ALRMBR_SU_Pos) /*!< 0x0000000F */
+#define RTC_ALRMBR_SU RTC_ALRMBR_SU_Msk
+#define RTC_ALRMBR_SU_0 (0x1UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000001 */
+#define RTC_ALRMBR_SU_1 (0x2UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000002 */
+#define RTC_ALRMBR_SU_2 (0x4UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000004 */
+#define RTC_ALRMBR_SU_3 (0x8UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000008 */
+#define RTC_ALRMBR_ST_Pos (4U)
+#define RTC_ALRMBR_ST_Msk (0x7UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000070 */
+#define RTC_ALRMBR_ST RTC_ALRMBR_ST_Msk
+#define RTC_ALRMBR_ST_0 (0x1UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000010 */
+#define RTC_ALRMBR_ST_1 (0x2UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000020 */
+#define RTC_ALRMBR_ST_2 (0x4UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000040 */
+#define RTC_ALRMBR_MSK1_Pos (7U)
+#define RTC_ALRMBR_MSK1_Msk (0x1UL << RTC_ALRMBR_MSK1_Pos) /*!< 0x00000080 */
+#define RTC_ALRMBR_MSK1 RTC_ALRMBR_MSK1_Msk
+#define RTC_ALRMBR_MNU_Pos (8U)
+#define RTC_ALRMBR_MNU_Msk (0xFUL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000F00 */
+#define RTC_ALRMBR_MNU RTC_ALRMBR_MNU_Msk
+#define RTC_ALRMBR_MNU_0 (0x1UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000100 */
+#define RTC_ALRMBR_MNU_1 (0x2UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000200 */
+#define RTC_ALRMBR_MNU_2 (0x4UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000400 */
+#define RTC_ALRMBR_MNU_3 (0x8UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000800 */
+#define RTC_ALRMBR_MNT_Pos (12U)
+#define RTC_ALRMBR_MNT_Msk (0x7UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00007000 */
+#define RTC_ALRMBR_MNT RTC_ALRMBR_MNT_Msk
+#define RTC_ALRMBR_MNT_0 (0x1UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00001000 */
+#define RTC_ALRMBR_MNT_1 (0x2UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00002000 */
+#define RTC_ALRMBR_MNT_2 (0x4UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00004000 */
+#define RTC_ALRMBR_MSK2_Pos (15U)
+#define RTC_ALRMBR_MSK2_Msk (0x1UL << RTC_ALRMBR_MSK2_Pos) /*!< 0x00008000 */
+#define RTC_ALRMBR_MSK2 RTC_ALRMBR_MSK2_Msk
+#define RTC_ALRMBR_HU_Pos (16U)
+#define RTC_ALRMBR_HU_Msk (0xFUL << RTC_ALRMBR_HU_Pos) /*!< 0x000F0000 */
+#define RTC_ALRMBR_HU RTC_ALRMBR_HU_Msk
+#define RTC_ALRMBR_HU_0 (0x1UL << RTC_ALRMBR_HU_Pos) /*!< 0x00010000 */
+#define RTC_ALRMBR_HU_1 (0x2UL << RTC_ALRMBR_HU_Pos) /*!< 0x00020000 */
+#define RTC_ALRMBR_HU_2 (0x4UL << RTC_ALRMBR_HU_Pos) /*!< 0x00040000 */
+#define RTC_ALRMBR_HU_3 (0x8UL << RTC_ALRMBR_HU_Pos) /*!< 0x00080000 */
+#define RTC_ALRMBR_HT_Pos (20U)
+#define RTC_ALRMBR_HT_Msk (0x3UL << RTC_ALRMBR_HT_Pos) /*!< 0x00300000 */
+#define RTC_ALRMBR_HT RTC_ALRMBR_HT_Msk
+#define RTC_ALRMBR_HT_0 (0x1UL << RTC_ALRMBR_HT_Pos) /*!< 0x00100000 */
+#define RTC_ALRMBR_HT_1 (0x2UL << RTC_ALRMBR_HT_Pos) /*!< 0x00200000 */
+#define RTC_ALRMBR_PM_Pos (22U)
+#define RTC_ALRMBR_PM_Msk (0x1UL << RTC_ALRMBR_PM_Pos) /*!< 0x00400000 */
+#define RTC_ALRMBR_PM RTC_ALRMBR_PM_Msk
+#define RTC_ALRMBR_MSK3_Pos (23U)
+#define RTC_ALRMBR_MSK3_Msk (0x1UL << RTC_ALRMBR_MSK3_Pos) /*!< 0x00800000 */
+#define RTC_ALRMBR_MSK3 RTC_ALRMBR_MSK3_Msk
+#define RTC_ALRMBR_DU_Pos (24U)
+#define RTC_ALRMBR_DU_Msk (0xFUL << RTC_ALRMBR_DU_Pos) /*!< 0x0F000000 */
+#define RTC_ALRMBR_DU RTC_ALRMBR_DU_Msk
+#define RTC_ALRMBR_DU_0 (0x1UL << RTC_ALRMBR_DU_Pos) /*!< 0x01000000 */
+#define RTC_ALRMBR_DU_1 (0x2UL << RTC_ALRMBR_DU_Pos) /*!< 0x02000000 */
+#define RTC_ALRMBR_DU_2 (0x4UL << RTC_ALRMBR_DU_Pos) /*!< 0x04000000 */
+#define RTC_ALRMBR_DU_3 (0x8UL << RTC_ALRMBR_DU_Pos) /*!< 0x08000000 */
+#define RTC_ALRMBR_DT_Pos (28U)
+#define RTC_ALRMBR_DT_Msk (0x3UL << RTC_ALRMBR_DT_Pos) /*!< 0x30000000 */
+#define RTC_ALRMBR_DT RTC_ALRMBR_DT_Msk
+#define RTC_ALRMBR_DT_0 (0x1UL << RTC_ALRMBR_DT_Pos) /*!< 0x10000000 */
+#define RTC_ALRMBR_DT_1 (0x2UL << RTC_ALRMBR_DT_Pos) /*!< 0x20000000 */
+#define RTC_ALRMBR_WDSEL_Pos (30U)
+#define RTC_ALRMBR_WDSEL_Msk (0x1UL << RTC_ALRMBR_WDSEL_Pos) /*!< 0x40000000 */
+#define RTC_ALRMBR_WDSEL RTC_ALRMBR_WDSEL_Msk
+#define RTC_ALRMBR_MSK4_Pos (31U)
+#define RTC_ALRMBR_MSK4_Msk (0x1UL << RTC_ALRMBR_MSK4_Pos) /*!< 0x80000000 */
+#define RTC_ALRMBR_MSK4 RTC_ALRMBR_MSK4_Msk
+
+/******************** Bits definition for RTC_ALRMBSSR register *************/
+#define RTC_ALRMBSSR_SS_Pos (0U)
+#define RTC_ALRMBSSR_SS_Msk (0x7FFFUL << RTC_ALRMBSSR_SS_Pos) /*!< 0x00007FFF */
+#define RTC_ALRMBSSR_SS RTC_ALRMBSSR_SS_Msk
+#define RTC_ALRMBSSR_MASKSS_Pos (24U)
+#define RTC_ALRMBSSR_MASKSS_Msk (0x3FUL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x3F000000 */
+#define RTC_ALRMBSSR_MASKSS RTC_ALRMBSSR_MASKSS_Msk
+#define RTC_ALRMBSSR_MASKSS_0 (0x1UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x01000000 */
+#define RTC_ALRMBSSR_MASKSS_1 (0x2UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x02000000 */
+#define RTC_ALRMBSSR_MASKSS_2 (0x4UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x04000000 */
+#define RTC_ALRMBSSR_MASKSS_3 (0x8UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x08000000 */
+#define RTC_ALRMBSSR_MASKSS_4 (0x10UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x10000000 */
+#define RTC_ALRMBSSR_MASKSS_5 (0x20UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x20000000 */
+#define RTC_ALRMBSSR_SSCLR_Pos (31U)
+#define RTC_ALRMBSSR_SSCLR_Msk (0x1UL << RTC_ALRMBSSR_SSCLR_Pos) /*!< 0x80000000 */
+#define RTC_ALRMBSSR_SSCLR RTC_ALRMBSSR_SSCLR_Msk
+
+/******************** Bits definition for RTC_SR register *******************/
+#define RTC_SR_ALRAF_Pos (0U)
+#define RTC_SR_ALRAF_Msk (0x1UL << RTC_SR_ALRAF_Pos) /*!< 0x00000001 */
+#define RTC_SR_ALRAF RTC_SR_ALRAF_Msk
+#define RTC_SR_ALRBF_Pos (1U)
+#define RTC_SR_ALRBF_Msk (0x1UL << RTC_SR_ALRBF_Pos) /*!< 0x00000002 */
+#define RTC_SR_ALRBF RTC_SR_ALRBF_Msk
+#define RTC_SR_WUTF_Pos (2U)
+#define RTC_SR_WUTF_Msk (0x1UL << RTC_SR_WUTF_Pos) /*!< 0x00000004 */
+#define RTC_SR_WUTF RTC_SR_WUTF_Msk
+#define RTC_SR_TSF_Pos (3U)
+#define RTC_SR_TSF_Msk (0x1UL << RTC_SR_TSF_Pos) /*!< 0x00000008 */
+#define RTC_SR_TSF RTC_SR_TSF_Msk
+#define RTC_SR_TSOVF_Pos (4U)
+#define RTC_SR_TSOVF_Msk (0x1UL << RTC_SR_TSOVF_Pos) /*!< 0x00000010 */
+#define RTC_SR_TSOVF RTC_SR_TSOVF_Msk
+#define RTC_SR_ITSF_Pos (5U)
+#define RTC_SR_ITSF_Msk (0x1UL << RTC_SR_ITSF_Pos) /*!< 0x00000020 */
+#define RTC_SR_ITSF RTC_SR_ITSF_Msk
+#define RTC_SR_SSRUF_Pos (6U)
+#define RTC_SR_SSRUF_Msk (0x1UL << RTC_SR_SSRUF_Pos) /*!< 0x00000040 */
+#define RTC_SR_SSRUF RTC_SR_SSRUF_Msk
+
+/******************** Bits definition for RTC_MISR register *****************/
+#define RTC_MISR_ALRAMF_Pos (0U)
+#define RTC_MISR_ALRAMF_Msk (0x1UL << RTC_MISR_ALRAMF_Pos) /*!< 0x00000001 */
+#define RTC_MISR_ALRAMF RTC_MISR_ALRAMF_Msk
+#define RTC_MISR_ALRBMF_Pos (1U)
+#define RTC_MISR_ALRBMF_Msk (0x1UL << RTC_MISR_ALRBMF_Pos) /*!< 0x00000002 */
+#define RTC_MISR_ALRBMF RTC_MISR_ALRBMF_Msk
+#define RTC_MISR_WUTMF_Pos (2U)
+#define RTC_MISR_WUTMF_Msk (0x1UL << RTC_MISR_WUTMF_Pos) /*!< 0x00000004 */
+#define RTC_MISR_WUTMF RTC_MISR_WUTMF_Msk
+#define RTC_MISR_TSMF_Pos (3U)
+#define RTC_MISR_TSMF_Msk (0x1UL << RTC_MISR_TSMF_Pos) /*!< 0x00000008 */
+#define RTC_MISR_TSMF RTC_MISR_TSMF_Msk
+#define RTC_MISR_TSOVMF_Pos (4U)
+#define RTC_MISR_TSOVMF_Msk (0x1UL << RTC_MISR_TSOVMF_Pos) /*!< 0x00000010 */
+#define RTC_MISR_TSOVMF RTC_MISR_TSOVMF_Msk
+#define RTC_MISR_ITSMF_Pos (5U)
+#define RTC_MISR_ITSMF_Msk (0x1UL << RTC_MISR_ITSMF_Pos) /*!< 0x00000020 */
+#define RTC_MISR_ITSMF RTC_MISR_ITSMF_Msk
+#define RTC_MISR_SSRUMF_Pos (6U)
+#define RTC_MISR_SSRUMF_Msk (0x1UL << RTC_MISR_SSRUMF_Pos) /*!< 0x00000040 */
+#define RTC_MISR_SSRUMF RTC_MISR_SSRUMF_Msk
+
+/******************** Bits definition for RTC_SMISR register *****************/
+#define RTC_SMISR_ALRAMF_Pos (0U)
+#define RTC_SMISR_ALRAMF_Msk (0x1UL << RTC_SMISR_ALRAMF_Pos) /*!< 0x00000001 */
+#define RTC_SMISR_ALRAMF RTC_SMISR_ALRAMF_Msk
+#define RTC_SMISR_ALRBMF_Pos (1U)
+#define RTC_SMISR_ALRBMF_Msk (0x1UL << RTC_SMISR_ALRBMF_Pos) /*!< 0x00000002 */
+#define RTC_SMISR_ALRBMF RTC_SMISR_ALRBMF_Msk
+#define RTC_SMISR_WUTMF_Pos (2U)
+#define RTC_SMISR_WUTMF_Msk (0x1UL << RTC_SMISR_WUTMF_Pos) /*!< 0x00000004 */
+#define RTC_SMISR_WUTMF RTC_SMISR_WUTMF_Msk
+#define RTC_SMISR_TSMF_Pos (3U)
+#define RTC_SMISR_TSMF_Msk (0x1UL << RTC_SMISR_TSMF_Pos) /*!< 0x00000008 */
+#define RTC_SMISR_TSMF RTC_SMISR_TSMF_Msk
+#define RTC_SMISR_TSOVMF_Pos (4U)
+#define RTC_SMISR_TSOVMF_Msk (0x1UL << RTC_SMISR_TSOVMF_Pos) /*!< 0x00000010 */
+#define RTC_SMISR_TSOVMF RTC_SMISR_TSOVMF_Msk
+#define RTC_SMISR_ITSMF_Pos (5U)
+#define RTC_SMISR_ITSMF_Msk (0x1UL << RTC_SMISR_ITSMF_Pos) /*!< 0x00000020 */
+#define RTC_SMISR_ITSMF RTC_SMISR_ITSMF_Msk
+#define RTC_SMISR_SSRUMF_Pos (6U)
+#define RTC_SMISR_SSRUMF_Msk (0x1UL << RTC_SMISR_SSRUMF_Pos) /*!< 0x00000040 */
+#define RTC_SMISR_SSRUMF RTC_SMISR_SSRUMF_Msk
+
+/******************** Bits definition for RTC_SCR register ******************/
+#define RTC_SCR_CALRAF_Pos (0U)
+#define RTC_SCR_CALRAF_Msk (0x1UL << RTC_SCR_CALRAF_Pos) /*!< 0x00000001 */
+#define RTC_SCR_CALRAF RTC_SCR_CALRAF_Msk
+#define RTC_SCR_CALRBF_Pos (1U)
+#define RTC_SCR_CALRBF_Msk (0x1UL << RTC_SCR_CALRBF_Pos) /*!< 0x00000002 */
+#define RTC_SCR_CALRBF RTC_SCR_CALRBF_Msk
+#define RTC_SCR_CWUTF_Pos (2U)
+#define RTC_SCR_CWUTF_Msk (0x1UL << RTC_SCR_CWUTF_Pos) /*!< 0x00000004 */
+#define RTC_SCR_CWUTF RTC_SCR_CWUTF_Msk
+#define RTC_SCR_CTSF_Pos (3U)
+#define RTC_SCR_CTSF_Msk (0x1UL << RTC_SCR_CTSF_Pos) /*!< 0x00000008 */
+#define RTC_SCR_CTSF RTC_SCR_CTSF_Msk
+#define RTC_SCR_CTSOVF_Pos (4U)
+#define RTC_SCR_CTSOVF_Msk (0x1UL << RTC_SCR_CTSOVF_Pos) /*!< 0x00000010 */
+#define RTC_SCR_CTSOVF RTC_SCR_CTSOVF_Msk
+#define RTC_SCR_CITSF_Pos (5U)
+#define RTC_SCR_CITSF_Msk (0x1UL << RTC_SCR_CITSF_Pos) /*!< 0x00000020 */
+#define RTC_SCR_CITSF RTC_SCR_CITSF_Msk
+#define RTC_SCR_CSSRUF_Pos (6U)
+#define RTC_SCR_CSSRUF_Msk (0x1UL << RTC_SCR_CSSRUF_Pos) /*!< 0x00000040 */
+#define RTC_SCR_CSSRUF RTC_SCR_CSSRUF_Msk
+
+/******************** Bits definition for RTC_OR register ******************/
+#define RTC_OR_OUT2_RMP_Pos (0U)
+#define RTC_OR_OUT2_RMP_Msk (0x1UL << RTC_OR_OUT2_RMP_Pos) /*!< 0x00000001 */
+#define RTC_OR_OUT2_RMP RTC_OR_OUT2_RMP_Msk
+
+/******************** Bits definition for RTC_ALRABINR register ******************/
+#define RTC_ALRABINR_SS_Pos (0U)
+#define RTC_ALRABINR_SS_Msk (0xFFFFFFFFUL << RTC_ALRABINR_SS_Pos) /*!< 0xFFFFFFFF */
+#define RTC_ALRABINR_SS RTC_ALRABINR_SS_Msk
+
+/******************** Bits definition for RTC_ALRBBINR register ******************/
+#define RTC_ALRBBINR_SS_Pos (0U)
+#define RTC_ALRBBINR_SS_Msk (0xFFFFFFFFUL << RTC_ALRBBINR_SS_Pos) /*!< 0xFFFFFFFF */
+#define RTC_ALRBBINR_SS RTC_ALRBBINR_SS_Msk
+
+/******************************************************************************/
+/* */
+/* Tamper and backup register (TAMP) */
+/* */
+/******************************************************************************/
+/******************** Bits definition for TAMP_CR1 register *****************/
+#define TAMP_CR1_TAMP1E_Pos (0U)
+#define TAMP_CR1_TAMP1E_Msk (0x1UL << TAMP_CR1_TAMP1E_Pos) /*!< 0x00000001 */
+#define TAMP_CR1_TAMP1E TAMP_CR1_TAMP1E_Msk
+#define TAMP_CR1_TAMP2E_Pos (1U)
+#define TAMP_CR1_TAMP2E_Msk (0x1UL << TAMP_CR1_TAMP2E_Pos) /*!< 0x00000002 */
+#define TAMP_CR1_TAMP2E TAMP_CR1_TAMP2E_Msk
+#define TAMP_CR1_TAMP3E_Pos (2U)
+#define TAMP_CR1_TAMP3E_Msk (0x1UL << TAMP_CR1_TAMP3E_Pos) /*!< 0x00000004 */
+#define TAMP_CR1_TAMP3E TAMP_CR1_TAMP3E_Msk
+#define TAMP_CR1_TAMP4E_Pos (3U)
+#define TAMP_CR1_TAMP4E_Msk (0x1UL << TAMP_CR1_TAMP4E_Pos) /*!< 0x00000008 */
+#define TAMP_CR1_TAMP4E TAMP_CR1_TAMP4E_Msk
+#define TAMP_CR1_TAMP5E_Pos (4U)
+#define TAMP_CR1_TAMP5E_Msk (0x1UL << TAMP_CR1_TAMP5E_Pos) /*!< 0x00000010 */
+#define TAMP_CR1_TAMP5E TAMP_CR1_TAMP5E_Msk
+#define TAMP_CR1_TAMP6E_Pos (5U)
+#define TAMP_CR1_TAMP6E_Msk (0x1UL << TAMP_CR1_TAMP6E_Pos) /*!< 0x00000020 */
+#define TAMP_CR1_TAMP6E TAMP_CR1_TAMP6E_Msk
+#define TAMP_CR1_TAMP7E_Pos (6U)
+#define TAMP_CR1_TAMP7E_Msk (0x1UL << TAMP_CR1_TAMP7E_Pos) /*!< 0x00000040 */
+#define TAMP_CR1_TAMP7E TAMP_CR1_TAMP7E_Msk
+#define TAMP_CR1_TAMP8E_Pos (7U)
+#define TAMP_CR1_TAMP8E_Msk (0x1UL << TAMP_CR1_TAMP8E_Pos) /*!< 0x00000080 */
+#define TAMP_CR1_TAMP8E TAMP_CR1_TAMP8E_Msk
+#define TAMP_CR1_ITAMP1E_Pos (16U)
+#define TAMP_CR1_ITAMP1E_Msk (0x1UL << TAMP_CR1_ITAMP1E_Pos) /*!< 0x00010000 */
+#define TAMP_CR1_ITAMP1E TAMP_CR1_ITAMP1E_Msk
+#define TAMP_CR1_ITAMP2E_Pos (17U)
+#define TAMP_CR1_ITAMP2E_Msk (0x1UL << TAMP_CR1_ITAMP2E_Pos) /*!< 0x00020000 */
+#define TAMP_CR1_ITAMP2E TAMP_CR1_ITAMP2E_Msk
+#define TAMP_CR1_ITAMP3E_Pos (18U)
+#define TAMP_CR1_ITAMP3E_Msk (0x1UL << TAMP_CR1_ITAMP3E_Pos) /*!< 0x00040000 */
+#define TAMP_CR1_ITAMP3E TAMP_CR1_ITAMP3E_Msk
+#define TAMP_CR1_ITAMP4E_Pos (19U)
+#define TAMP_CR1_ITAMP4E_Msk (0x1UL << TAMP_CR1_ITAMP4E_Pos) /*!< 0x00080000 */
+#define TAMP_CR1_ITAMP4E TAMP_CR1_ITAMP4E_Msk
+#define TAMP_CR1_ITAMP5E_Pos (20U)
+#define TAMP_CR1_ITAMP5E_Msk (0x1UL << TAMP_CR1_ITAMP5E_Pos) /*!< 0x00100000 */
+#define TAMP_CR1_ITAMP5E TAMP_CR1_ITAMP5E_Msk
+#define TAMP_CR1_ITAMP6E_Pos (21U)
+#define TAMP_CR1_ITAMP6E_Msk (0x1UL << TAMP_CR1_ITAMP6E_Pos) /*!< 0x00200000 */
+#define TAMP_CR1_ITAMP6E TAMP_CR1_ITAMP6E_Msk
+#define TAMP_CR1_ITAMP7E_Pos (22U)
+#define TAMP_CR1_ITAMP7E_Msk (0x1UL << TAMP_CR1_ITAMP7E_Pos) /*!< 0x00400000 */
+#define TAMP_CR1_ITAMP7E TAMP_CR1_ITAMP7E_Msk
+#define TAMP_CR1_ITAMP8E_Pos (23U)
+#define TAMP_CR1_ITAMP8E_Msk (0x1UL << TAMP_CR1_ITAMP8E_Pos) /*!< 0x00800000 */
+#define TAMP_CR1_ITAMP8E TAMP_CR1_ITAMP8E_Msk
+#define TAMP_CR1_ITAMP9E_Pos (24U)
+#define TAMP_CR1_ITAMP9E_Msk (0x1UL << TAMP_CR1_ITAMP9E_Pos) /*!< 0x01000000 */
+#define TAMP_CR1_ITAMP9E TAMP_CR1_ITAMP9E_Msk
+#define TAMP_CR1_ITAMP11E_Pos (26U)
+#define TAMP_CR1_ITAMP11E_Msk (0x1UL << TAMP_CR1_ITAMP11E_Pos) /*!< 0x04000000 */
+#define TAMP_CR1_ITAMP11E TAMP_CR1_ITAMP11E_Msk
+#define TAMP_CR1_ITAMP12E_Pos (27U)
+#define TAMP_CR1_ITAMP12E_Msk (0x1UL << TAMP_CR1_ITAMP12E_Pos) /*!< 0x08000000 */
+#define TAMP_CR1_ITAMP12E TAMP_CR1_ITAMP12E_Msk
+#define TAMP_CR1_ITAMP13E_Pos (28U)
+#define TAMP_CR1_ITAMP13E_Msk (0x1UL << TAMP_CR1_ITAMP13E_Pos) /*!< 0x10000000 */
+#define TAMP_CR1_ITAMP13E TAMP_CR1_ITAMP13E_Msk
+#define TAMP_CR1_ITAMP15E_Pos (30U)
+#define TAMP_CR1_ITAMP15E_Msk (0x1UL << TAMP_CR1_ITAMP15E_Pos) /*!< 0x40000000 */
+#define TAMP_CR1_ITAMP15E TAMP_CR1_ITAMP15E_Msk
+
+/******************** Bits definition for TAMP_CR2 register *****************/
+#define TAMP_CR2_TAMP1NOERASE_Pos (0U)
+#define TAMP_CR2_TAMP1NOERASE_Msk (0x1UL << TAMP_CR2_TAMP1NOERASE_Pos) /*!< 0x00000001 */
+#define TAMP_CR2_TAMP1NOERASE TAMP_CR2_TAMP1NOERASE_Msk
+#define TAMP_CR2_TAMP2NOERASE_Pos (1U)
+#define TAMP_CR2_TAMP2NOERASE_Msk (0x1UL << TAMP_CR2_TAMP2NOERASE_Pos) /*!< 0x00000002 */
+#define TAMP_CR2_TAMP2NOERASE TAMP_CR2_TAMP2NOERASE_Msk
+#define TAMP_CR2_TAMP3NOERASE_Pos (2U)
+#define TAMP_CR2_TAMP3NOERASE_Msk (0x1UL << TAMP_CR2_TAMP3NOERASE_Pos) /*!< 0x00000004 */
+#define TAMP_CR2_TAMP3NOERASE TAMP_CR2_TAMP3NOERASE_Msk
+#define TAMP_CR2_TAMP4NOERASE_Pos (3U)
+#define TAMP_CR2_TAMP4NOERASE_Msk (0x1UL << TAMP_CR2_TAMP4NOERASE_Pos) /*!< 0x00000008 */
+#define TAMP_CR2_TAMP4NOERASE TAMP_CR2_TAMP4NOERASE_Msk
+#define TAMP_CR2_TAMP5NOERASE_Pos (4U)
+#define TAMP_CR2_TAMP5NOERASE_Msk (0x1UL << TAMP_CR2_TAMP5NOERASE_Pos) /*!< 0x00000010 */
+#define TAMP_CR2_TAMP5NOERASE TAMP_CR2_TAMP5NOERASE_Msk
+#define TAMP_CR2_TAMP6NOERASE_Pos (5U)
+#define TAMP_CR2_TAMP6NOERASE_Msk (0x1UL << TAMP_CR2_TAMP6NOERASE_Pos) /*!< 0x00000020 */
+#define TAMP_CR2_TAMP6NOERASE TAMP_CR2_TAMP6NOERASE_Msk
+#define TAMP_CR2_TAMP7NOERASE_Pos (6U)
+#define TAMP_CR2_TAMP7NOERASE_Msk (0x1UL << TAMP_CR2_TAMP7NOERASE_Pos) /*!< 0x00000040 */
+#define TAMP_CR2_TAMP7NOERASE TAMP_CR2_TAMP7NOERASE_Msk
+#define TAMP_CR2_TAMP8NOERASE_Pos (7U)
+#define TAMP_CR2_TAMP8NOERASE_Msk (0x1UL << TAMP_CR2_TAMP8NOERASE_Pos) /*!< 0x00000080 */
+#define TAMP_CR2_TAMP8NOERASE TAMP_CR2_TAMP8NOERASE_Msk
+#define TAMP_CR2_TAMP1MSK_Pos (16U)
+#define TAMP_CR2_TAMP1MSK_Msk (0x1UL << TAMP_CR2_TAMP1MSK_Pos) /*!< 0x00010000 */
+#define TAMP_CR2_TAMP1MSK TAMP_CR2_TAMP1MSK_Msk
+#define TAMP_CR2_TAMP2MSK_Pos (17U)
+#define TAMP_CR2_TAMP2MSK_Msk (0x1UL << TAMP_CR2_TAMP2MSK_Pos) /*!< 0x00020000 */
+#define TAMP_CR2_TAMP2MSK TAMP_CR2_TAMP2MSK_Msk
+#define TAMP_CR2_TAMP3MSK_Pos (18U)
+#define TAMP_CR2_TAMP3MSK_Msk (0x1UL << TAMP_CR2_TAMP3MSK_Pos) /*!< 0x00040000 */
+#define TAMP_CR2_TAMP3MSK TAMP_CR2_TAMP3MSK_Msk
+#define TAMP_CR2_BKBLOCK_Pos (22U)
+#define TAMP_CR2_BKBLOCK_Msk (0x1UL << TAMP_CR2_BKBLOCK_Pos) /*!< 0x00400000 */
+#define TAMP_CR2_BKBLOCK TAMP_CR2_BKBLOCK_Msk
+#define TAMP_CR2_BKERASE_Pos (23U)
+#define TAMP_CR2_BKERASE_Msk (0x1UL << TAMP_CR2_BKERASE_Pos) /*!< 0x00800000 */
+#define TAMP_CR2_BKERASE TAMP_CR2_BKERASE_Msk
+#define TAMP_CR2_TAMP1TRG_Pos (24U)
+#define TAMP_CR2_TAMP1TRG_Msk (0x1UL << TAMP_CR2_TAMP1TRG_Pos) /*!< 0x01000000 */
+#define TAMP_CR2_TAMP1TRG TAMP_CR2_TAMP1TRG_Msk
+#define TAMP_CR2_TAMP2TRG_Pos (25U)
+#define TAMP_CR2_TAMP2TRG_Msk (0x1UL << TAMP_CR2_TAMP2TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP2TRG TAMP_CR2_TAMP2TRG_Msk
+#define TAMP_CR2_TAMP3TRG_Pos (26U)
+#define TAMP_CR2_TAMP3TRG_Msk (0x1UL << TAMP_CR2_TAMP3TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP3TRG TAMP_CR2_TAMP3TRG_Msk
+#define TAMP_CR2_TAMP4TRG_Pos (27U)
+#define TAMP_CR2_TAMP4TRG_Msk (0x1UL << TAMP_CR2_TAMP4TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP4TRG TAMP_CR2_TAMP4TRG_Msk
+#define TAMP_CR2_TAMP5TRG_Pos (28U)
+#define TAMP_CR2_TAMP5TRG_Msk (0x1UL << TAMP_CR2_TAMP5TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP5TRG TAMP_CR2_TAMP5TRG_Msk
+#define TAMP_CR2_TAMP6TRG_Pos (29U)
+#define TAMP_CR2_TAMP6TRG_Msk (0x1UL << TAMP_CR2_TAMP6TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP6TRG TAMP_CR2_TAMP6TRG_Msk
+#define TAMP_CR2_TAMP7TRG_Pos (30U)
+#define TAMP_CR2_TAMP7TRG_Msk (0x1UL << TAMP_CR2_TAMP7TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP7TRG TAMP_CR2_TAMP7TRG_Msk
+#define TAMP_CR2_TAMP8TRG_Pos (31U)
+#define TAMP_CR2_TAMP8TRG_Msk (0x1UL << TAMP_CR2_TAMP8TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP8TRG TAMP_CR2_TAMP8TRG_Msk
+
+/******************** Bits definition for TAMP_CR3 register *****************/
+#define TAMP_CR3_ITAMP1NOER_Pos (0U)
+#define TAMP_CR3_ITAMP1NOER_Msk (0x1UL << TAMP_CR3_ITAMP1NOER_Pos) /*!< 0x00000001 */
+#define TAMP_CR3_ITAMP1NOER TAMP_CR3_ITAMP1NOER_Msk
+#define TAMP_CR3_ITAMP2NOER_Pos (1U)
+#define TAMP_CR3_ITAMP2NOER_Msk (0x1UL << TAMP_CR3_ITAMP2NOER_Pos) /*!< 0x00000002 */
+#define TAMP_CR3_ITAMP2NOER TAMP_CR3_ITAMP2NOER_Msk
+#define TAMP_CR3_ITAMP3NOER_Pos (2U)
+#define TAMP_CR3_ITAMP3NOER_Msk (0x1UL << TAMP_CR3_ITAMP3NOER_Pos) /*!< 0x00000004 */
+#define TAMP_CR3_ITAMP3NOER TAMP_CR3_ITAMP3NOER_Msk
+#define TAMP_CR3_ITAMP4NOER_Pos (3U)
+#define TAMP_CR3_ITAMP4NOER_Msk (0x1UL << TAMP_CR3_ITAMP4NOER_Pos) /*!< 0x00000008 */
+#define TAMP_CR3_ITAMP4NOER TAMP_CR3_ITAMP4NOER_Msk
+#define TAMP_CR3_ITAMP5NOER_Pos (4U)
+#define TAMP_CR3_ITAMP5NOER_Msk (0x1UL << TAMP_CR3_ITAMP5NOER_Pos) /*!< 0x00000010 */
+#define TAMP_CR3_ITAMP5NOER TAMP_CR3_ITAMP5NOER_Msk
+#define TAMP_CR3_ITAMP6NOER_Pos (5U)
+#define TAMP_CR3_ITAMP6NOER_Msk (0x1UL << TAMP_CR3_ITAMP6NOER_Pos) /*!< 0x00000020 */
+#define TAMP_CR3_ITAMP6NOER TAMP_CR3_ITAMP6NOER_Msk
+#define TAMP_CR3_ITAMP7NOER_Pos (6U)
+#define TAMP_CR3_ITAMP7NOER_Msk (0x1UL << TAMP_CR3_ITAMP7NOER_Pos) /*!< 0x00000040 */
+#define TAMP_CR3_ITAMP7NOER TAMP_CR3_ITAMP7NOER_Msk
+#define TAMP_CR3_ITAMP8NOER_Pos (7U)
+#define TAMP_CR3_ITAMP8NOER_Msk (0x1UL << TAMP_CR3_ITAMP8NOER_Pos) /*!< 0x00000080 */
+#define TAMP_CR3_ITAMP8NOER TAMP_CR3_ITAMP8NOER_Msk
+#define TAMP_CR3_ITAMP9NOER_Pos (8U)
+#define TAMP_CR3_ITAMP9NOER_Msk (0x1UL << TAMP_CR3_ITAMP9NOER_Pos) /*!< 0x00000100 */
+#define TAMP_CR3_ITAMP9NOER TAMP_CR3_ITAMP9NOER_Msk
+#define TAMP_CR3_ITAMP11NOER_Pos (10U)
+#define TAMP_CR3_ITAMP11NOER_Msk (0x1UL << TAMP_CR3_ITAMP11NOER_Pos) /*!< 0x00000400 */
+#define TAMP_CR3_ITAMP11NOER TAMP_CR3_ITAMP11NOER_Msk
+#define TAMP_CR3_ITAMP12NOER_Pos (11U)
+#define TAMP_CR3_ITAMP12NOER_Msk (0x1UL << TAMP_CR3_ITAMP12NOER_Pos) /*!< 0x00000800 */
+#define TAMP_CR3_ITAMP12NOER TAMP_CR3_ITAMP12NOER_Msk
+#define TAMP_CR3_ITAMP13NOER_Pos (12U)
+#define TAMP_CR3_ITAMP13NOER_Msk (0x1UL << TAMP_CR3_ITAMP13NOER_Pos) /*!< 0x00001000 */
+#define TAMP_CR3_ITAMP13NOER TAMP_CR3_ITAMP13NOER_Msk
+#define TAMP_CR3_ITAMP15NOER_Pos (14U)
+#define TAMP_CR3_ITAMP15NOER_Msk (0x1UL << TAMP_CR3_ITAMP15NOER_Pos) /*!< 0x00004000 */
+#define TAMP_CR3_ITAMP15NOER TAMP_CR3_ITAMP15NOER_Msk
+
+/******************** Bits definition for TAMP_FLTCR register ***************/
+#define TAMP_FLTCR_TAMPFREQ_Pos (0U)
+#define TAMP_FLTCR_TAMPFREQ_Msk (0x7UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000007 */
+#define TAMP_FLTCR_TAMPFREQ TAMP_FLTCR_TAMPFREQ_Msk
+#define TAMP_FLTCR_TAMPFREQ_0 (0x1UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000001 */
+#define TAMP_FLTCR_TAMPFREQ_1 (0x2UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000002 */
+#define TAMP_FLTCR_TAMPFREQ_2 (0x4UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000004 */
+#define TAMP_FLTCR_TAMPFLT_Pos (3U)
+#define TAMP_FLTCR_TAMPFLT_Msk (0x3UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000018 */
+#define TAMP_FLTCR_TAMPFLT TAMP_FLTCR_TAMPFLT_Msk
+#define TAMP_FLTCR_TAMPFLT_0 (0x1UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000008 */
+#define TAMP_FLTCR_TAMPFLT_1 (0x2UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000010 */
+#define TAMP_FLTCR_TAMPPRCH_Pos (5U)
+#define TAMP_FLTCR_TAMPPRCH_Msk (0x3UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000060 */
+#define TAMP_FLTCR_TAMPPRCH TAMP_FLTCR_TAMPPRCH_Msk
+#define TAMP_FLTCR_TAMPPRCH_0 (0x1UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000020 */
+#define TAMP_FLTCR_TAMPPRCH_1 (0x2UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000040 */
+#define TAMP_FLTCR_TAMPPUDIS_Pos (7U)
+#define TAMP_FLTCR_TAMPPUDIS_Msk (0x1UL << TAMP_FLTCR_TAMPPUDIS_Pos) /*!< 0x00000080 */
+#define TAMP_FLTCR_TAMPPUDIS TAMP_FLTCR_TAMPPUDIS_Msk
+
+/******************** Bits definition for TAMP_ATCR1 register ***************/
+#define TAMP_ATCR1_TAMP1AM_Pos (0U)
+#define TAMP_ATCR1_TAMP1AM_Msk (0x1UL << TAMP_ATCR1_TAMP1AM_Pos) /*!< 0x00000001 */
+#define TAMP_ATCR1_TAMP1AM TAMP_ATCR1_TAMP1AM_Msk
+#define TAMP_ATCR1_TAMP2AM_Pos (1U)
+#define TAMP_ATCR1_TAMP2AM_Msk (0x1UL << TAMP_ATCR1_TAMP2AM_Pos) /*!< 0x00000002 */
+#define TAMP_ATCR1_TAMP2AM TAMP_ATCR1_TAMP2AM_Msk
+#define TAMP_ATCR1_TAMP3AM_Pos (2U)
+#define TAMP_ATCR1_TAMP3AM_Msk (0x1UL << TAMP_ATCR1_TAMP3AM_Pos) /*!< 0x00000004 */
+#define TAMP_ATCR1_TAMP3AM TAMP_ATCR1_TAMP3AM_Msk
+#define TAMP_ATCR1_TAMP4AM_Pos (3U)
+#define TAMP_ATCR1_TAMP4AM_Msk (0x1UL << TAMP_ATCR1_TAMP4AM_Pos) /*!< 0x00000008 */
+#define TAMP_ATCR1_TAMP4AM TAMP_ATCR1_TAMP4AM_Msk
+#define TAMP_ATCR1_TAMP5AM_Pos (4U)
+#define TAMP_ATCR1_TAMP5AM_Msk (0x1UL << TAMP_ATCR1_TAMP5AM_Pos) /*!< 0x00000010 */
+#define TAMP_ATCR1_TAMP5AM TAMP_ATCR1_TAMP5AM_Msk
+#define TAMP_ATCR1_TAMP6AM_Pos (5U)
+#define TAMP_ATCR1_TAMP6AM_Msk (0x1UL << TAMP_ATCR1_TAMP6AM_Pos) /*!< 0x00000010 */
+#define TAMP_ATCR1_TAMP6AM TAMP_ATCR1_TAMP6AM_Msk
+#define TAMP_ATCR1_TAMP7AM_Pos (6U)
+#define TAMP_ATCR1_TAMP7AM_Msk (0x1UL << TAMP_ATCR1_TAMP7AM_Pos) /*!< 0x00000040 */
+#define TAMP_ATCR1_TAMP7AM TAMP_ATCR1_TAMP7AM_Msk
+#define TAMP_ATCR1_TAMP8AM_Pos (7U)
+#define TAMP_ATCR1_TAMP8AM_Msk (0x1UL << TAMP_ATCR1_TAMP8AM_Pos) /*!< 0x00000080 */
+#define TAMP_ATCR1_TAMP8AM TAMP_ATCR1_TAMP8AM_Msk
+#define TAMP_ATCR1_ATOSEL1_Pos (8U)
+#define TAMP_ATCR1_ATOSEL1_Msk (0x3UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000300 */
+#define TAMP_ATCR1_ATOSEL1 TAMP_ATCR1_ATOSEL1_Msk
+#define TAMP_ATCR1_ATOSEL1_0 (0x1UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000100 */
+#define TAMP_ATCR1_ATOSEL1_1 (0x2UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000200 */
+#define TAMP_ATCR1_ATOSEL2_Pos (10U)
+#define TAMP_ATCR1_ATOSEL2_Msk (0x3UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000C00 */
+#define TAMP_ATCR1_ATOSEL2 TAMP_ATCR1_ATOSEL2_Msk
+#define TAMP_ATCR1_ATOSEL2_0 (0x1UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000400 */
+#define TAMP_ATCR1_ATOSEL2_1 (0x2UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000800 */
+#define TAMP_ATCR1_ATOSEL3_Pos (12U)
+#define TAMP_ATCR1_ATOSEL3_Msk (0x3UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00003000 */
+#define TAMP_ATCR1_ATOSEL3 TAMP_ATCR1_ATOSEL3_Msk
+#define TAMP_ATCR1_ATOSEL3_0 (0x1UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00001000 */
+#define TAMP_ATCR1_ATOSEL3_1 (0x2UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00002000 */
+#define TAMP_ATCR1_ATOSEL4_Pos (14U)
+#define TAMP_ATCR1_ATOSEL4_Msk (0x3UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x0000C000 */
+#define TAMP_ATCR1_ATOSEL4 TAMP_ATCR1_ATOSEL4_Msk
+#define TAMP_ATCR1_ATOSEL4_0 (0x1UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x00004000 */
+#define TAMP_ATCR1_ATOSEL4_1 (0x2UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x00008000 */
+#define TAMP_ATCR1_ATCKSEL_Pos (16U)
+#define TAMP_ATCR1_ATCKSEL_Msk (0xFUL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x000F0000 */
+#define TAMP_ATCR1_ATCKSEL TAMP_ATCR1_ATCKSEL_Msk
+#define TAMP_ATCR1_ATCKSEL_0 (0x1UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00010000 */
+#define TAMP_ATCR1_ATCKSEL_1 (0x2UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00020000 */
+#define TAMP_ATCR1_ATCKSEL_2 (0x4UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00040000 */
+#define TAMP_ATCR1_ATCKSEL_3 (0x8UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00080000 */
+#define TAMP_ATCR1_ATPER_Pos (24U)
+#define TAMP_ATCR1_ATPER_Msk (0x7UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x07000000 */
+#define TAMP_ATCR1_ATPER TAMP_ATCR1_ATPER_Msk
+#define TAMP_ATCR1_ATPER_0 (0x1UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x01000000 */
+#define TAMP_ATCR1_ATPER_1 (0x2UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x02000000 */
+#define TAMP_ATCR1_ATPER_2 (0x4UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x04000000 */
+#define TAMP_ATCR1_ATOSHARE_Pos (30U)
+#define TAMP_ATCR1_ATOSHARE_Msk (0x1UL << TAMP_ATCR1_ATOSHARE_Pos) /*!< 0x40000000 */
+#define TAMP_ATCR1_ATOSHARE TAMP_ATCR1_ATOSHARE_Msk
+#define TAMP_ATCR1_FLTEN_Pos (31U)
+#define TAMP_ATCR1_FLTEN_Msk (0x1UL << TAMP_ATCR1_FLTEN_Pos) /*!< 0x80000000 */
+#define TAMP_ATCR1_FLTEN TAMP_ATCR1_FLTEN_Msk
+
+/******************** Bits definition for TAMP_ATSEEDR register ******************/
+#define TAMP_ATSEEDR_SEED_Pos (0U)
+#define TAMP_ATSEEDR_SEED_Msk (0xFFFFFFFFUL << TAMP_ATSEEDR_SEED_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_ATSEEDR_SEED TAMP_ATSEEDR_SEED_Msk
+
+/******************** Bits definition for TAMP_ATOR register ******************/
+#define TAMP_ATOR_PRNG_Pos (0U)
+#define TAMP_ATOR_PRNG_Msk (0xFFUL << TAMP_ATOR_PRNG_Pos) /*!< 0x000000FF */
+#define TAMP_ATOR_PRNG TAMP_ATOR_PRNG_Msk
+#define TAMP_ATOR_PRNG_0 (0x1UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000001 */
+#define TAMP_ATOR_PRNG_1 (0x2UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000002 */
+#define TAMP_ATOR_PRNG_2 (0x4UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000004 */
+#define TAMP_ATOR_PRNG_3 (0x8UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000008 */
+#define TAMP_ATOR_PRNG_4 (0x10UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000010 */
+#define TAMP_ATOR_PRNG_5 (0x20UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000020 */
+#define TAMP_ATOR_PRNG_6 (0x40UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000040 */
+#define TAMP_ATOR_PRNG_7 (0x80UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000080 */
+#define TAMP_ATOR_SEEDF_Pos (14U)
+#define TAMP_ATOR_SEEDF_Msk (1UL << TAMP_ATOR_SEEDF_Pos) /*!< 0x00004000 */
+#define TAMP_ATOR_SEEDF TAMP_ATOR_SEEDF_Msk
+#define TAMP_ATOR_INITS_Pos (15U)
+#define TAMP_ATOR_INITS_Msk (1UL << TAMP_ATOR_INITS_Pos) /*!< 0x00008000 */
+#define TAMP_ATOR_INITS TAMP_ATOR_INITS_Msk
+
+/******************** Bits definition for TAMP_ATCR2 register ***************/
+#define TAMP_ATCR2_ATOSEL1_Pos (8U)
+#define TAMP_ATCR2_ATOSEL1_Msk (0x7UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000700 */
+#define TAMP_ATCR2_ATOSEL1 TAMP_ATCR2_ATOSEL1_Msk
+#define TAMP_ATCR2_ATOSEL1_0 (0x1UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000100 */
+#define TAMP_ATCR2_ATOSEL1_1 (0x2UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000200 */
+#define TAMP_ATCR2_ATOSEL1_2 (0x4UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000400 */
+#define TAMP_ATCR2_ATOSEL2_Pos (11U)
+#define TAMP_ATCR2_ATOSEL2_Msk (0x7UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00003800 */
+#define TAMP_ATCR2_ATOSEL2 TAMP_ATCR2_ATOSEL2_Msk
+#define TAMP_ATCR2_ATOSEL2_0 (0x1UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00000800 */
+#define TAMP_ATCR2_ATOSEL2_1 (0x2UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00001000 */
+#define TAMP_ATCR2_ATOSEL2_2 (0x4UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00002000 */
+#define TAMP_ATCR2_ATOSEL3_Pos (14U)
+#define TAMP_ATCR2_ATOSEL3_Msk (0x7UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x0001C000 */
+#define TAMP_ATCR2_ATOSEL3 TAMP_ATCR2_ATOSEL3_Msk
+#define TAMP_ATCR2_ATOSEL3_0 (0x1UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00004000 */
+#define TAMP_ATCR2_ATOSEL3_1 (0x2UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00008000 */
+#define TAMP_ATCR2_ATOSEL3_2 (0x4UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00010000 */
+#define TAMP_ATCR2_ATOSEL4_Pos (17U)
+#define TAMP_ATCR2_ATOSEL4_Msk (0x7UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x000E0000 */
+#define TAMP_ATCR2_ATOSEL4 TAMP_ATCR2_ATOSEL4_Msk
+#define TAMP_ATCR2_ATOSEL4_0 (0x1UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00020000 */
+#define TAMP_ATCR2_ATOSEL4_1 (0x2UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00040000 */
+#define TAMP_ATCR2_ATOSEL4_2 (0x4UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00080000 */
+#define TAMP_ATCR2_ATOSEL5_Pos (20U)
+#define TAMP_ATCR2_ATOSEL5_Msk (0x7UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00700000 */
+#define TAMP_ATCR2_ATOSEL5 TAMP_ATCR2_ATOSEL5_Msk
+#define TAMP_ATCR2_ATOSEL5_0 (0x1UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00100000 */
+#define TAMP_ATCR2_ATOSEL5_1 (0x2UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00200000 */
+#define TAMP_ATCR2_ATOSEL5_2 (0x4UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00400000 */
+#define TAMP_ATCR2_ATOSEL6_Pos (23U)
+#define TAMP_ATCR2_ATOSEL6_Msk (0x7UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x03800000 */
+#define TAMP_ATCR2_ATOSEL6 TAMP_ATCR2_ATOSEL6_Msk
+#define TAMP_ATCR2_ATOSEL6_0 (0x1UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x00800000 */
+#define TAMP_ATCR2_ATOSEL6_1 (0x2UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x01000000 */
+#define TAMP_ATCR2_ATOSEL6_2 (0x4UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x02000000 */
+#define TAMP_ATCR2_ATOSEL7_Pos (26U)
+#define TAMP_ATCR2_ATOSEL7_Msk (0x7UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x1C000000 */
+#define TAMP_ATCR2_ATOSEL7 TAMP_ATCR2_ATOSEL7_Msk
+#define TAMP_ATCR2_ATOSEL7_0 (0x1UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x04000000 */
+#define TAMP_ATCR2_ATOSEL7_1 (0x2UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x08000000 */
+#define TAMP_ATCR2_ATOSEL7_2 (0x4UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x10000000 */
+#define TAMP_ATCR2_ATOSEL8_Pos (29U)
+#define TAMP_ATCR2_ATOSEL8_Msk (0x7UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0xE0000000 */
+#define TAMP_ATCR2_ATOSEL8 TAMP_ATCR2_ATOSEL8_Msk
+#define TAMP_ATCR2_ATOSEL8_0 (0x1UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x20000000 */
+#define TAMP_ATCR2_ATOSEL8_1 (0x2UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x40000000 */
+#define TAMP_ATCR2_ATOSEL8_2 (0x4UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x80000000 */
+
+/******************** Bits definition for TAMP_SECCFGR register *************/
+#define TAMP_SECCFGR_BKPRWSEC_Pos (0U)
+#define TAMP_SECCFGR_BKPRWSEC_Msk (0xFFUL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x000000FF */
+#define TAMP_SECCFGR_BKPRWSEC TAMP_SECCFGR_BKPRWSEC_Msk
+#define TAMP_SECCFGR_BKPRWSEC_0 (0x1UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000001 */
+#define TAMP_SECCFGR_BKPRWSEC_1 (0x2UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000002 */
+#define TAMP_SECCFGR_BKPRWSEC_2 (0x4UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000004 */
+#define TAMP_SECCFGR_BKPRWSEC_3 (0x8UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000008 */
+#define TAMP_SECCFGR_BKPRWSEC_4 (0x10UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000010 */
+#define TAMP_SECCFGR_BKPRWSEC_5 (0x20UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000020 */
+#define TAMP_SECCFGR_BKPRWSEC_6 (0x40UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000040 */
+#define TAMP_SECCFGR_BKPRWSEC_7 (0x80UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000080 */
+#define TAMP_SECCFGR_CNT1SEC_Pos (15U)
+#define TAMP_SECCFGR_CNT1SEC_Msk (0x1UL << TAMP_SECCFGR_CNT1SEC_Pos) /*!< 0x00008000 */
+#define TAMP_SECCFGR_CNT1SEC TAMP_SECCFGR_CNT1SEC_Msk
+#define TAMP_SECCFGR_BKPWSEC_Pos (16U)
+#define TAMP_SECCFGR_BKPWSEC_Msk (0xFFUL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00FF0000 */
+#define TAMP_SECCFGR_BKPWSEC TAMP_SECCFGR_BKPWSEC_Msk
+#define TAMP_SECCFGR_BKPWSEC_0 (0x1UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00010000 */
+#define TAMP_SECCFGR_BKPWSEC_1 (0x2UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00020000 */
+#define TAMP_SECCFGR_BKPWSEC_2 (0x4UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00040000 */
+#define TAMP_SECCFGR_BKPWSEC_3 (0x8UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00080000 */
+#define TAMP_SECCFGR_BKPWSEC_4 (0x10UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00100000 */
+#define TAMP_SECCFGR_BKPWSEC_5 (0x20UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00200000 */
+#define TAMP_SECCFGR_BKPWSEC_6 (0x40UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00400000 */
+#define TAMP_SECCFGR_BKPWSEC_7 (0x80UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00800000 */
+#define TAMP_SECCFGR_BHKLOCK_Pos (30U)
+#define TAMP_SECCFGR_BHKLOCK_Msk (0x1UL << TAMP_SECCFGR_BHKLOCK_Pos) /*!< 0x40000000 */
+#define TAMP_SECCFGR_BHKLOCK TAMP_SECCFGR_BHKLOCK_Msk
+#define TAMP_SECCFGR_TAMPSEC_Pos (31U)
+#define TAMP_SECCFGR_TAMPSEC_Msk (0x1UL << TAMP_SECCFGR_TAMPSEC_Pos) /*!< 0x80000000 */
+#define TAMP_SECCFGR_TAMPSEC TAMP_SECCFGR_TAMPSEC_Msk
+
+/******************** Bits definition for TAMP_PRIVCFGR register ************/
+#define TAMP_PRIVCFGR_CNT1PRIV_Pos (15U)
+#define TAMP_PRIVCFGR_CNT1PRIV_Msk (0x1UL << TAMP_PRIVCFGR_CNT1PRIV_Pos) /*!< 0x20000000 */
+#define TAMP_PRIVCFGR_CNT1PRIV TAMP_PRIVCFGR_CNT1PRIV_Msk
+#define TAMP_PRIVCFGR_BKPRWPRIV_Pos (29U)
+#define TAMP_PRIVCFGR_BKPRWPRIV_Msk (0x1UL << TAMP_PRIVCFGR_BKPRWPRIV_Pos) /*!< 0x20000000 */
+#define TAMP_PRIVCFGR_BKPRWPRIV TAMP_PRIVCFGR_BKPRWPRIV_Msk
+#define TAMP_PRIVCFGR_BKPWPRIV_Pos (30U)
+#define TAMP_PRIVCFGR_BKPWPRIV_Msk (0x1UL << TAMP_PRIVCFGR_BKPWPRIV_Pos) /*!< 0x40000000 */
+#define TAMP_PRIVCFGR_BKPWPRIV TAMP_PRIVCFGR_BKPWPRIV_Msk
+#define TAMP_PRIVCFGR_TAMPPRIV_Pos (31U)
+#define TAMP_PRIVCFGR_TAMPPRIV_Msk (0x1UL << TAMP_PRIVCFGR_TAMPPRIV_Pos) /*!< 0x80000000 */
+#define TAMP_PRIVCFGR_TAMPPRIV TAMP_PRIVCFGR_TAMPPRIV_Msk
+
+/******************** Bits definition for TAMP_IER register *****************/
+#define TAMP_IER_TAMP1IE_Pos (0U)
+#define TAMP_IER_TAMP1IE_Msk (0x1UL << TAMP_IER_TAMP1IE_Pos) /*!< 0x00000001 */
+#define TAMP_IER_TAMP1IE TAMP_IER_TAMP1IE_Msk
+#define TAMP_IER_TAMP2IE_Pos (1U)
+#define TAMP_IER_TAMP2IE_Msk (0x1UL << TAMP_IER_TAMP2IE_Pos) /*!< 0x00000002 */
+#define TAMP_IER_TAMP2IE TAMP_IER_TAMP2IE_Msk
+#define TAMP_IER_TAMP3IE_Pos (2U)
+#define TAMP_IER_TAMP3IE_Msk (0x1UL << TAMP_IER_TAMP3IE_Pos) /*!< 0x00000004 */
+#define TAMP_IER_TAMP3IE TAMP_IER_TAMP3IE_Msk
+#define TAMP_IER_TAMP4IE_Pos (3U)
+#define TAMP_IER_TAMP4IE_Msk (0x1UL << TAMP_IER_TAMP4IE_Pos) /*!< 0x00000008 */
+#define TAMP_IER_TAMP4IE TAMP_IER_TAMP4IE_Msk
+#define TAMP_IER_TAMP5IE_Pos (4U)
+#define TAMP_IER_TAMP5IE_Msk (0x1UL << TAMP_IER_TAMP5IE_Pos) /*!< 0x00000010 */
+#define TAMP_IER_TAMP5IE TAMP_IER_TAMP5IE_Msk
+#define TAMP_IER_TAMP6IE_Pos (5U)
+#define TAMP_IER_TAMP6IE_Msk (0x1UL << TAMP_IER_TAMP6IE_Pos) /*!< 0x00000020 */
+#define TAMP_IER_TAMP6IE TAMP_IER_TAMP6IE_Msk
+#define TAMP_IER_TAMP7IE_Pos (6U)
+#define TAMP_IER_TAMP7IE_Msk (0x1UL << TAMP_IER_TAMP7IE_Pos) /*!< 0x00000040 */
+#define TAMP_IER_TAMP7IE TAMP_IER_TAMP7IE_Msk
+#define TAMP_IER_TAMP8IE_Pos (7U)
+#define TAMP_IER_TAMP8IE_Msk (0x1UL << TAMP_IER_TAMP8IE_Pos) /*!< 0x00000080 */
+#define TAMP_IER_TAMP8IE TAMP_IER_TAMP8IE_Msk
+#define TAMP_IER_ITAMP1IE_Pos (16U)
+#define TAMP_IER_ITAMP1IE_Msk (0x1UL << TAMP_IER_ITAMP1IE_Pos) /*!< 0x00010000 */
+#define TAMP_IER_ITAMP1IE TAMP_IER_ITAMP1IE_Msk
+#define TAMP_IER_ITAMP2IE_Pos (17U)
+#define TAMP_IER_ITAMP2IE_Msk (0x1UL << TAMP_IER_ITAMP2IE_Pos) /*!< 0x00020000 */
+#define TAMP_IER_ITAMP2IE TAMP_IER_ITAMP2IE_Msk
+#define TAMP_IER_ITAMP3IE_Pos (18U)
+#define TAMP_IER_ITAMP3IE_Msk (0x1UL << TAMP_IER_ITAMP3IE_Pos) /*!< 0x00040000 */
+#define TAMP_IER_ITAMP3IE TAMP_IER_ITAMP3IE_Msk
+#define TAMP_IER_ITAMP4IE_Pos (19U)
+#define TAMP_IER_ITAMP4IE_Msk (0x1UL << TAMP_IER_ITAMP4IE_Pos) /*!< 0x00080000 */
+#define TAMP_IER_ITAMP4IE TAMP_IER_ITAMP4IE_Msk
+#define TAMP_IER_ITAMP5IE_Pos (20U)
+#define TAMP_IER_ITAMP5IE_Msk (0x1UL << TAMP_IER_ITAMP5IE_Pos) /*!< 0x00100000 */
+#define TAMP_IER_ITAMP5IE TAMP_IER_ITAMP5IE_Msk
+#define TAMP_IER_ITAMP6IE_Pos (21U)
+#define TAMP_IER_ITAMP6IE_Msk (0x1UL << TAMP_IER_ITAMP6IE_Pos) /*!< 0x00200000 */
+#define TAMP_IER_ITAMP6IE TAMP_IER_ITAMP6IE_Msk
+#define TAMP_IER_ITAMP7IE_Pos (22U)
+#define TAMP_IER_ITAMP7IE_Msk (0x1UL << TAMP_IER_ITAMP7IE_Pos) /*!< 0x00400000 */
+#define TAMP_IER_ITAMP7IE TAMP_IER_ITAMP7IE_Msk
+#define TAMP_IER_ITAMP8IE_Pos (23U)
+#define TAMP_IER_ITAMP8IE_Msk (0x1UL << TAMP_IER_ITAMP8IE_Pos) /*!< 0x00800000 */
+#define TAMP_IER_ITAMP8IE TAMP_IER_ITAMP8IE_Msk
+#define TAMP_IER_ITAMP9IE_Pos (24U)
+#define TAMP_IER_ITAMP9IE_Msk (0x1UL << TAMP_IER_ITAMP9IE_Pos) /*!< 0x01000000 */
+#define TAMP_IER_ITAMP9IE TAMP_IER_ITAMP9IE_Msk
+#define TAMP_IER_ITAMP11IE_Pos (26U)
+#define TAMP_IER_ITAMP11IE_Msk (0x1UL << TAMP_IER_ITAMP11IE_Pos) /*!< 0x04000000 */
+#define TAMP_IER_ITAMP11IE TAMP_IER_ITAMP11IE_Msk
+#define TAMP_IER_ITAMP12IE_Pos (27U)
+#define TAMP_IER_ITAMP12IE_Msk (0x1UL << TAMP_IER_ITAMP12IE_Pos) /*!< 0x08000000 */
+#define TAMP_IER_ITAMP12IE TAMP_IER_ITAMP12IE_Msk
+#define TAMP_IER_ITAMP13IE_Pos (28U)
+#define TAMP_IER_ITAMP13IE_Msk (0x1UL << TAMP_IER_ITAMP13IE_Pos) /*!< 0x10000000 */
+#define TAMP_IER_ITAMP13IE TAMP_IER_ITAMP13IE_Msk
+#define TAMP_IER_ITAMP15IE_Pos (30U)
+#define TAMP_IER_ITAMP15IE_Msk (0x1UL << TAMP_IER_ITAMP15IE_Pos) /*!< 0x40000000 */
+#define TAMP_IER_ITAMP15IE TAMP_IER_ITAMP15IE_Msk
+
+/******************** Bits definition for TAMP_SR register *****************/
+#define TAMP_SR_TAMP1F_Pos (0U)
+#define TAMP_SR_TAMP1F_Msk (0x1UL << TAMP_SR_TAMP1F_Pos) /*!< 0x00000001 */
+#define TAMP_SR_TAMP1F TAMP_SR_TAMP1F_Msk
+#define TAMP_SR_TAMP2F_Pos (1U)
+#define TAMP_SR_TAMP2F_Msk (0x1UL << TAMP_SR_TAMP2F_Pos) /*!< 0x00000002 */
+#define TAMP_SR_TAMP2F TAMP_SR_TAMP2F_Msk
+#define TAMP_SR_TAMP3F_Pos (2U)
+#define TAMP_SR_TAMP3F_Msk (0x1UL << TAMP_SR_TAMP3F_Pos) /*!< 0x00000004 */
+#define TAMP_SR_TAMP3F TAMP_SR_TAMP3F_Msk
+#define TAMP_SR_TAMP4F_Pos (3U)
+#define TAMP_SR_TAMP4F_Msk (0x1UL << TAMP_SR_TAMP4F_Pos) /*!< 0x00000008 */
+#define TAMP_SR_TAMP4F TAMP_SR_TAMP4F_Msk
+#define TAMP_SR_TAMP5F_Pos (4U)
+#define TAMP_SR_TAMP5F_Msk (0x1UL << TAMP_SR_TAMP5F_Pos) /*!< 0x00000010 */
+#define TAMP_SR_TAMP5F TAMP_SR_TAMP5F_Msk
+#define TAMP_SR_TAMP6F_Pos (5U)
+#define TAMP_SR_TAMP6F_Msk (0x1UL << TAMP_SR_TAMP6F_Pos) /*!< 0x00000020 */
+#define TAMP_SR_TAMP6F TAMP_SR_TAMP6F_Msk
+#define TAMP_SR_TAMP7F_Pos (6U)
+#define TAMP_SR_TAMP7F_Msk (0x1UL << TAMP_SR_TAMP7F_Pos) /*!< 0x00000040 */
+#define TAMP_SR_TAMP7F TAMP_SR_TAMP7F_Msk
+#define TAMP_SR_TAMP8F_Pos (7U)
+#define TAMP_SR_TAMP8F_Msk (0x1UL << TAMP_SR_TAMP8F_Pos) /*!< 0x00000080 */
+#define TAMP_SR_TAMP8F TAMP_SR_TAMP8F_Msk
+#define TAMP_SR_ITAMP1F_Pos (16U)
+#define TAMP_SR_ITAMP1F_Msk (0x1UL << TAMP_SR_ITAMP1F_Pos) /*!< 0x00010000 */
+#define TAMP_SR_ITAMP1F TAMP_SR_ITAMP1F_Msk
+#define TAMP_SR_ITAMP2F_Pos (17U)
+#define TAMP_SR_ITAMP2F_Msk (0x1UL << TAMP_SR_ITAMP2F_Pos) /*!< 0x00020000 */
+#define TAMP_SR_ITAMP2F TAMP_SR_ITAMP2F_Msk
+#define TAMP_SR_ITAMP3F_Pos (18U)
+#define TAMP_SR_ITAMP3F_Msk (0x1UL << TAMP_SR_ITAMP3F_Pos) /*!< 0x00040000 */
+#define TAMP_SR_ITAMP3F TAMP_SR_ITAMP3F_Msk
+#define TAMP_SR_ITAMP4F_Pos (19U)
+#define TAMP_SR_ITAMP4F_Msk (0x1UL << TAMP_SR_ITAMP4F_Pos) /*!< 0x00080000 */
+#define TAMP_SR_ITAMP4F TAMP_SR_ITAMP4F_Msk
+#define TAMP_SR_ITAMP5F_Pos (20U)
+#define TAMP_SR_ITAMP5F_Msk (0x1UL << TAMP_SR_ITAMP5F_Pos) /*!< 0x00100000 */
+#define TAMP_SR_ITAMP5F TAMP_SR_ITAMP5F_Msk
+#define TAMP_SR_ITAMP6F_Pos (21U)
+#define TAMP_SR_ITAMP6F_Msk (0x1UL << TAMP_SR_ITAMP6F_Pos) /*!< 0x00200000 */
+#define TAMP_SR_ITAMP6F TAMP_SR_ITAMP6F_Msk
+#define TAMP_SR_ITAMP7F_Pos (22U)
+#define TAMP_SR_ITAMP7F_Msk (0x1UL << TAMP_SR_ITAMP7F_Pos) /*!< 0x00400000 */
+#define TAMP_SR_ITAMP7F TAMP_SR_ITAMP7F_Msk
+#define TAMP_SR_ITAMP8F_Pos (23U)
+#define TAMP_SR_ITAMP8F_Msk (0x1UL << TAMP_SR_ITAMP8F_Pos) /*!< 0x00800000 */
+#define TAMP_SR_ITAMP8F TAMP_SR_ITAMP8F_Msk
+#define TAMP_SR_ITAMP9F_Pos (24U)
+#define TAMP_SR_ITAMP9F_Msk (0x1UL << TAMP_SR_ITAMP9F_Pos) /*!< 0x01000000 */
+#define TAMP_SR_ITAMP9F TAMP_SR_ITAMP9F_Msk
+#define TAMP_SR_ITAMP11F_Pos (26U)
+#define TAMP_SR_ITAMP11F_Msk (0x1UL << TAMP_SR_ITAMP11F_Pos) /*!< 0x04000000 */
+#define TAMP_SR_ITAMP11F TAMP_SR_ITAMP11F_Msk
+#define TAMP_SR_ITAMP12F_Pos (27U)
+#define TAMP_SR_ITAMP12F_Msk (0x1UL << TAMP_SR_ITAMP12F_Pos) /*!< 0x08000000 */
+#define TAMP_SR_ITAMP12F TAMP_SR_ITAMP12F_Msk
+#define TAMP_SR_ITAMP13F_Pos (28U)
+#define TAMP_SR_ITAMP13F_Msk (0x1UL << TAMP_SR_ITAMP13F_Pos) /*!< 0x10000000 */
+#define TAMP_SR_ITAMP13F TAMP_SR_ITAMP13F_Msk
+#define TAMP_SR_ITAMP15F_Pos (30U)
+#define TAMP_SR_ITAMP15F_Msk (0x1UL << TAMP_SR_ITAMP15F_Pos) /*!< 0x40000000 */
+#define TAMP_SR_ITAMP15F TAMP_SR_ITAMP15F_Msk
+
+/******************** Bits definition for TAMP_MISR register ****************/
+#define TAMP_MISR_TAMP1MF_Pos (0U)
+#define TAMP_MISR_TAMP1MF_Msk (0x1UL << TAMP_MISR_TAMP1MF_Pos) /*!< 0x00000001 */
+#define TAMP_MISR_TAMP1MF TAMP_MISR_TAMP1MF_Msk
+#define TAMP_MISR_TAMP2MF_Pos (1U)
+#define TAMP_MISR_TAMP2MF_Msk (0x1UL << TAMP_MISR_TAMP2MF_Pos) /*!< 0x00000002 */
+#define TAMP_MISR_TAMP2MF TAMP_MISR_TAMP2MF_Msk
+#define TAMP_MISR_TAMP3MF_Pos (2U)
+#define TAMP_MISR_TAMP3MF_Msk (0x1UL << TAMP_MISR_TAMP3MF_Pos) /*!< 0x00000004 */
+#define TAMP_MISR_TAMP3MF TAMP_MISR_TAMP3MF_Msk
+#define TAMP_MISR_TAMP4MF_Pos (3U)
+#define TAMP_MISR_TAMP4MF_Msk (0x1UL << TAMP_MISR_TAMP4MF_Pos) /*!< 0x00000008 */
+#define TAMP_MISR_TAMP4MF TAMP_MISR_TAMP4MF_Msk
+#define TAMP_MISR_TAMP5MF_Pos (4U)
+#define TAMP_MISR_TAMP5MF_Msk (0x1UL << TAMP_MISR_TAMP5MF_Pos) /*!< 0x00000010 */
+#define TAMP_MISR_TAMP5MF TAMP_MISR_TAMP5MF_Msk
+#define TAMP_MISR_TAMP6MF_Pos (5U)
+#define TAMP_MISR_TAMP6MF_Msk (0x1UL << TAMP_MISR_TAMP6MF_Pos) /*!< 0x00000020 */
+#define TAMP_MISR_TAMP6MF TAMP_MISR_TAMP6MF_Msk
+#define TAMP_MISR_TAMP7MF_Pos (6U)
+#define TAMP_MISR_TAMP7MF_Msk (0x1UL << TAMP_MISR_TAMP7MF_Pos) /*!< 0x00000040 */
+#define TAMP_MISR_TAMP7MF TAMP_MISR_TAMP7MF_Msk
+#define TAMP_MISR_TAMP8MF_Pos (7U)
+#define TAMP_MISR_TAMP8MF_Msk (0x1UL << TAMP_MISR_TAMP8MF_Pos) /*!< 0x00000080 */
+#define TAMP_MISR_TAMP8MF TAMP_MISR_TAMP8MF_Msk
+#define TAMP_MISR_ITAMP1MF_Pos (16U)
+#define TAMP_MISR_ITAMP1MF_Msk (0x1UL << TAMP_MISR_ITAMP1MF_Pos) /*!< 0x00010000 */
+#define TAMP_MISR_ITAMP1MF TAMP_MISR_ITAMP1MF_Msk
+#define TAMP_MISR_ITAMP2MF_Pos (17U)
+#define TAMP_MISR_ITAMP2MF_Msk (0x1UL << TAMP_MISR_ITAMP2MF_Pos) /*!< 0x00020000 */
+#define TAMP_MISR_ITAMP2MF TAMP_MISR_ITAMP2MF_Msk
+#define TAMP_MISR_ITAMP3MF_Pos (18U)
+#define TAMP_MISR_ITAMP3MF_Msk (0x1UL << TAMP_MISR_ITAMP3MF_Pos) /*!< 0x00040000 */
+#define TAMP_MISR_ITAMP3MF TAMP_MISR_ITAMP3MF_Msk
+#define TAMP_MISR_ITAMP4MF_Pos (19U)
+#define TAMP_MISR_ITAMP4MF_Msk (0x1UL << TAMP_MISR_ITAMP4MF_Pos) /*!< 0x00080000 */
+#define TAMP_MISR_ITAMP4MF TAMP_MISR_ITAMP4MF_Msk
+#define TAMP_MISR_ITAMP5MF_Pos (20U)
+#define TAMP_MISR_ITAMP5MF_Msk (0x1UL << TAMP_MISR_ITAMP5MF_Pos) /*!< 0x00100000 */
+#define TAMP_MISR_ITAMP5MF TAMP_MISR_ITAMP5MF_Msk
+#define TAMP_MISR_ITAMP6MF_Pos (21U)
+#define TAMP_MISR_ITAMP6MF_Msk (0x1UL << TAMP_MISR_ITAMP6MF_Pos) /*!< 0x00200000 */
+#define TAMP_MISR_ITAMP6MF TAMP_MISR_ITAMP6MF_Msk
+#define TAMP_MISR_ITAMP7MF_Pos (22U)
+#define TAMP_MISR_ITAMP7MF_Msk (0x1UL << TAMP_MISR_ITAMP7MF_Pos) /*!< 0x00400000 */
+#define TAMP_MISR_ITAMP7MF TAMP_MISR_ITAMP7MF_Msk
+#define TAMP_MISR_ITAMP8MF_Pos (23U)
+#define TAMP_MISR_ITAMP8MF_Msk (0x1UL << TAMP_MISR_ITAMP8MF_Pos) /*!< 0x00800000 */
+#define TAMP_MISR_ITAMP8MF TAMP_MISR_ITAMP8MF_Msk
+#define TAMP_MISR_ITAMP9MF_Pos (24U)
+#define TAMP_MISR_ITAMP9MF_Msk (0x1UL << TAMP_MISR_ITAMP9MF_Pos) /*!< 0x01000000 */
+#define TAMP_MISR_ITAMP9MF TAMP_MISR_ITAMP9MF_Msk
+#define TAMP_MISR_ITAMP11MF_Pos (26U)
+#define TAMP_MISR_ITAMP11MF_Msk (0x1UL << TAMP_MISR_ITAMP11MF_Pos) /*!< 0x04000000 */
+#define TAMP_MISR_ITAMP11MF TAMP_MISR_ITAMP11MF_Msk
+#define TAMP_MISR_ITAMP12MF_Pos (27U)
+#define TAMP_MISR_ITAMP12MF_Msk (0x1UL << TAMP_MISR_ITAMP12MF_Pos) /*!< 0x08000000 */
+#define TAMP_MISR_ITAMP12MF TAMP_MISR_ITAMP12MF_Msk
+#define TAMP_MISR_ITAMP13MF_Pos (28U)
+#define TAMP_MISR_ITAMP13MF_Msk (0x1UL << TAMP_MISR_ITAMP13MF_Pos) /*!< 0x10000000 */
+#define TAMP_MISR_ITAMP13MF TAMP_MISR_ITAMP13MF_Msk
+#define TAMP_MISR_ITAMP15MF_Pos (30U)
+#define TAMP_MISR_ITAMP15MF_Msk (0x1UL << TAMP_MISR_ITAMP15MF_Pos) /*!< 0x40000000 */
+#define TAMP_MISR_ITAMP15MF TAMP_MISR_ITAMP15MF_Msk
+
+/******************** Bits definition for TAMP_SMISR register ************ *****/
+#define TAMP_SMISR_TAMP1MF_Pos (0U)
+#define TAMP_SMISR_TAMP1MF_Msk (0x1UL << TAMP_SMISR_TAMP1MF_Pos) /*!< 0x00000001 */
+#define TAMP_SMISR_TAMP1MF TAMP_SMISR_TAMP1MF_Msk
+#define TAMP_SMISR_TAMP2MF_Pos (1U)
+#define TAMP_SMISR_TAMP2MF_Msk (0x1UL << TAMP_SMISR_TAMP2MF_Pos) /*!< 0x00000002 */
+#define TAMP_SMISR_TAMP2MF TAMP_SMISR_TAMP2MF_Msk
+#define TAMP_SMISR_TAMP3MF_Pos (2U)
+#define TAMP_SMISR_TAMP3MF_Msk (0x1UL << TAMP_SMISR_TAMP3MF_Pos) /*!< 0x00000004 */
+#define TAMP_SMISR_TAMP3MF TAMP_SMISR_TAMP3MF_Msk
+#define TAMP_SMISR_TAMP4MF_Pos (3U)
+#define TAMP_SMISR_TAMP4MF_Msk (0x1UL << TAMP_SMISR_TAMP4MF_Pos) /*!< 0x00000008 */
+#define TAMP_SMISR_TAMP4MF TAMP_SMISR_TAMP4MF_Msk
+#define TAMP_SMISR_TAMP5MF_Pos (4U)
+#define TAMP_SMISR_TAMP5MF_Msk (0x1UL << TAMP_SMISR_TAMP5MF_Pos) /*!< 0x00000010 */
+#define TAMP_SMISR_TAMP5MF TAMP_SMISR_TAMP5MF_Msk
+#define TAMP_SMISR_TAMP6MF_Pos (5U)
+#define TAMP_SMISR_TAMP6MF_Msk (0x1UL << TAMP_SMISR_TAMP6MF_Pos) /*!< 0x00000020 */
+#define TAMP_SMISR_TAMP6MF TAMP_SMISR_TAMP6MF_Msk
+#define TAMP_SMISR_TAMP7MF_Pos (6U)
+#define TAMP_SMISR_TAMP7MF_Msk (0x1UL << TAMP_SMISR_TAMP7MF_Pos) /*!< 0x00000040 */
+#define TAMP_SMISR_TAMP7MF TAMP_SMISR_TAMP7MF_Msk
+#define TAMP_SMISR_TAMP8MF_Pos (7U)
+#define TAMP_SMISR_TAMP8MF_Msk (0x1UL << TAMP_SMISR_TAMP8MF_Pos) /*!< 0x00000080 */
+#define TAMP_SMISR_TAMP8MF TAMP_SMISR_TAMP8MF_Msk
+#define TAMP_SMISR_ITAMP1MF_Pos (16U)
+#define TAMP_SMISR_ITAMP1MF_Msk (0x1UL << TAMP_SMISR_ITAMP1MF_Pos) /*!< 0x00010000 */
+#define TAMP_SMISR_ITAMP1MF TAMP_SMISR_ITAMP1MF_Msk
+#define TAMP_SMISR_ITAMP2MF_Pos (17U)
+#define TAMP_SMISR_ITAMP2MF_Msk (0x1UL << TAMP_SMISR_ITAMP2MF_Pos) /*!< 0x00020000 */
+#define TAMP_SMISR_ITAMP2MF TAMP_SMISR_ITAMP2MF_Msk
+#define TAMP_SMISR_ITAMP3MF_Pos (18U)
+#define TAMP_SMISR_ITAMP3MF_Msk (0x1UL << TAMP_SMISR_ITAMP3MF_Pos) /*!< 0x00040000 */
+#define TAMP_SMISR_ITAMP3MF TAMP_SMISR_ITAMP3MF_Msk
+#define TAMP_SMISR_ITAMP4MF_Pos (19U)
+#define TAMP_SMISR_ITAMP4MF_Msk (0x1UL << TAMP_SMISR_ITAMP4MF_Pos) /*!< 0x00080000 */
+#define TAMP_SMISR_ITAMP4MF TAMP_SMISR_ITAMP4MF_Msk
+#define TAMP_SMISR_ITAMP5MF_Pos (20U)
+#define TAMP_SMISR_ITAMP5MF_Msk (0x1UL << TAMP_SMISR_ITAMP5MF_Pos) /*!< 0x00100000 */
+#define TAMP_SMISR_ITAMP5MF TAMP_SMISR_ITAMP5MF_Msk
+#define TAMP_SMISR_ITAMP6MF_Pos (21U)
+#define TAMP_SMISR_ITAMP6MF_Msk (0x1UL << TAMP_SMISR_ITAMP6MF_Pos) /*!< 0x00200000 */
+#define TAMP_SMISR_ITAMP6MF TAMP_SMISR_ITAMP6MF_Msk
+#define TAMP_SMISR_ITAMP7MF_Pos (22U)
+#define TAMP_SMISR_ITAMP7MF_Msk (0x1UL << TAMP_SMISR_ITAMP7MF_Pos) /*!< 0x00400000 */
+#define TAMP_SMISR_ITAMP7MF TAMP_SMISR_ITAMP7MF_Msk
+#define TAMP_SMISR_ITAMP8MF_Pos (23U)
+#define TAMP_SMISR_ITAMP8MF_Msk (0x1UL << TAMP_SMISR_ITAMP8MF_Pos) /*!< 0x00800000 */
+#define TAMP_SMISR_ITAMP8MF TAMP_SMISR_ITAMP8MF_Msk
+#define TAMP_SMISR_ITAMP9MF_Pos (24U)
+#define TAMP_SMISR_ITAMP9MF_Msk (0x1UL << TAMP_SMISR_ITAMP9MF_Pos) /*!< 0x00100000 */
+#define TAMP_SMISR_ITAMP9MF TAMP_SMISR_ITAMP9MF_Msk
+#define TAMP_SMISR_ITAMP11MF_Pos (26U)
+#define TAMP_SMISR_ITAMP11MF_Msk (0x1UL << TAMP_SMISR_ITAMP11MF_Pos) /*!< 0x00400000 */
+#define TAMP_SMISR_ITAMP11MF TAMP_SMISR_ITAMP11MF_Msk
+#define TAMP_SMISR_ITAMP12MF_Pos (27U)
+#define TAMP_SMISR_ITAMP12MF_Msk (0x1UL << TAMP_SMISR_ITAMP12MF_Pos) /*!< 0x08000000 */
+#define TAMP_SMISR_ITAMP12MF TAMP_SMISR_ITAMP12MF_Msk
+#define TAMP_SMISR_ITAMP13MF_Pos (28U)
+#define TAMP_SMISR_ITAMP13MF_Msk (0x1UL << TAMP_SMISR_ITAMP13MF_Pos) /*!< 0x10000000 */
+#define TAMP_SMISR_ITAMP13MF TAMP_SMISR_ITAMP13MF_Msk
+#define TAMP_SMISR_ITAMP15MF_Pos (30U)
+#define TAMP_SMISR_ITAMP15MF_Msk (0x1UL << TAMP_SMISR_ITAMP15MF_Pos) /*!< 0x40000000 */
+#define TAMP_SMISR_ITAMP15MF TAMP_SMISR_ITAMP15MF_Msk
+
+/******************** Bits definition for TAMP_SCR register *****************/
+#define TAMP_SCR_CTAMP1F_Pos (0U)
+#define TAMP_SCR_CTAMP1F_Msk (0x1UL << TAMP_SCR_CTAMP1F_Pos) /*!< 0x00000001 */
+#define TAMP_SCR_CTAMP1F TAMP_SCR_CTAMP1F_Msk
+#define TAMP_SCR_CTAMP2F_Pos (1U)
+#define TAMP_SCR_CTAMP2F_Msk (0x1UL << TAMP_SCR_CTAMP2F_Pos) /*!< 0x00000002 */
+#define TAMP_SCR_CTAMP2F TAMP_SCR_CTAMP2F_Msk
+#define TAMP_SCR_CTAMP3F_Pos (2U)
+#define TAMP_SCR_CTAMP3F_Msk (0x1UL << TAMP_SCR_CTAMP3F_Pos) /*!< 0x00000004 */
+#define TAMP_SCR_CTAMP3F TAMP_SCR_CTAMP3F_Msk
+#define TAMP_SCR_CTAMP4F_Pos (3U)
+#define TAMP_SCR_CTAMP4F_Msk (0x1UL << TAMP_SCR_CTAMP4F_Pos) /*!< 0x00000008 */
+#define TAMP_SCR_CTAMP4F TAMP_SCR_CTAMP4F_Msk
+#define TAMP_SCR_CTAMP5F_Pos (4U)
+#define TAMP_SCR_CTAMP5F_Msk (0x1UL << TAMP_SCR_CTAMP5F_Pos) /*!< 0x00000010 */
+#define TAMP_SCR_CTAMP5F TAMP_SCR_CTAMP5F_Msk
+#define TAMP_SCR_CTAMP6F_Pos (5U)
+#define TAMP_SCR_CTAMP6F_Msk (0x1UL << TAMP_SCR_CTAMP6F_Pos) /*!< 0x00000020 */
+#define TAMP_SCR_CTAMP6F TAMP_SCR_CTAMP6F_Msk
+#define TAMP_SCR_CTAMP7F_Pos (6U)
+#define TAMP_SCR_CTAMP7F_Msk (0x1UL << TAMP_SCR_CTAMP7F_Pos) /*!< 0x00000040 */
+#define TAMP_SCR_CTAMP7F TAMP_SCR_CTAMP7F_Msk
+#define TAMP_SCR_CTAMP8F_Pos (7U)
+#define TAMP_SCR_CTAMP8F_Msk (0x1UL << TAMP_SCR_CTAMP8F_Pos) /*!< 0x00000080 */
+#define TAMP_SCR_CTAMP8F TAMP_SCR_CTAMP8F_Msk
+#define TAMP_SCR_CITAMP1F_Pos (16U)
+#define TAMP_SCR_CITAMP1F_Msk (0x1UL << TAMP_SCR_CITAMP1F_Pos) /*!< 0x00010000 */
+#define TAMP_SCR_CITAMP1F TAMP_SCR_CITAMP1F_Msk
+#define TAMP_SCR_CITAMP2F_Pos (17U)
+#define TAMP_SCR_CITAMP2F_Msk (0x1UL << TAMP_SCR_CITAMP2F_Pos) /*!< 0x00020000 */
+#define TAMP_SCR_CITAMP2F TAMP_SCR_CITAMP2F_Msk
+#define TAMP_SCR_CITAMP3F_Pos (18U)
+#define TAMP_SCR_CITAMP3F_Msk (0x1UL << TAMP_SCR_CITAMP3F_Pos) /*!< 0x00040000 */
+#define TAMP_SCR_CITAMP3F TAMP_SCR_CITAMP3F_Msk
+#define TAMP_SCR_CITAMP4F_Pos (19U)
+#define TAMP_SCR_CITAMP4F_Msk (0x1UL << TAMP_SCR_CITAMP4F_Pos) /*!< 0x00080000 */
+#define TAMP_SCR_CITAMP4F TAMP_SCR_CITAMP4F_Msk
+#define TAMP_SCR_CITAMP5F_Pos (20U)
+#define TAMP_SCR_CITAMP5F_Msk (0x1UL << TAMP_SCR_CITAMP5F_Pos) /*!< 0x00100000 */
+#define TAMP_SCR_CITAMP5F TAMP_SCR_CITAMP5F_Msk
+#define TAMP_SCR_CITAMP6F_Pos (21U)
+#define TAMP_SCR_CITAMP6F_Msk (0x1UL << TAMP_SCR_CITAMP6F_Pos) /*!< 0x00200000 */
+#define TAMP_SCR_CITAMP6F TAMP_SCR_CITAMP6F_Msk
+#define TAMP_SCR_CITAMP7F_Pos (22U)
+#define TAMP_SCR_CITAMP7F_Msk (0x1UL << TAMP_SCR_CITAMP7F_Pos) /*!< 0x00400000 */
+#define TAMP_SCR_CITAMP7F TAMP_SCR_CITAMP7F_Msk
+#define TAMP_SCR_CITAMP8F_Pos (23U)
+#define TAMP_SCR_CITAMP8F_Msk (0x1UL << TAMP_SCR_CITAMP8F_Pos) /*!< 0x00800000 */
+#define TAMP_SCR_CITAMP8F TAMP_SCR_CITAMP8F_Msk
+#define TAMP_SCR_CITAMP9F_Pos (24U)
+#define TAMP_SCR_CITAMP9F_Msk (0x1UL << TAMP_SCR_CITAMP9F_Pos) /*!< 0x00100000 */
+#define TAMP_SCR_CITAMP9F TAMP_SCR_CITAMP9F_Msk
+#define TAMP_SCR_CITAMP11F_Pos (26U)
+#define TAMP_SCR_CITAMP11F_Msk (0x1UL << TAMP_SCR_CITAMP11F_Pos) /*!< 0x00400000 */
+#define TAMP_SCR_CITAMP11F TAMP_SCR_CITAMP11F_Msk
+#define TAMP_SCR_CITAMP12F_Pos (27U)
+#define TAMP_SCR_CITAMP12F_Msk (0x1UL << TAMP_SCR_CITAMP12F_Pos) /*!< 0x08000000 */
+#define TAMP_SCR_CITAMP12F TAMP_SCR_CITAMP12F_Msk
+#define TAMP_SCR_CITAMP13F_Pos (28U)
+#define TAMP_SCR_CITAMP13F_Msk (0x1UL << TAMP_SCR_CITAMP13F_Pos) /*!< 0x10000000 */
+#define TAMP_SCR_CITAMP13F TAMP_SCR_CITAMP13F_Msk
+#define TAMP_SCR_CITAMP15F_Pos (30U)
+#define TAMP_SCR_CITAMP15F_Msk (0x1UL << TAMP_SCR_CITAMP15F_Pos) /*!< 0x40000000 */
+#define TAMP_SCR_CITAMP15F TAMP_SCR_CITAMP15F_Msk
+/******************** Bits definition for TAMP_COUNT1R register ***************/
+#define TAMP_COUNT1R_COUNT_Pos (0U)
+#define TAMP_COUNT1R_COUNT_Msk (0xFFFFFFFFUL << TAMP_COUNT1R_COUNT_Pos)/*!< 0xFFFFFFFF */
+#define TAMP_COUNT1R_COUNT TAMP_COUNT1R_COUNT_Msk
+
+/******************** Bits definition for TAMP_OR register ***************/
+#define TAMP_OR_OUT3_RMP_Pos (1U)
+#define TAMP_OR_OUT3_RMP_Msk (0x2UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00000006 */
+#define TAMP_OR_OUT3_RMP TAMP_OR_OUT3_RMP_Msk
+#define TAMP_OR_OUT3_RMP_0 (0x1UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00100000 */
+#define TAMP_OR_OUT3_RMP_1 (0x2UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00200000 */
+#define TAMP_OR_OUT5_RMP_Pos (3U)
+#define TAMP_OR_OUT5_RMP_Msk (0x1UL << TAMP_OR_OUT5_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_OUT5_RMP TAMP_OR_OUT5_RMP_Msk
+#define TAMP_OR_IN2_RMP_Pos (8U)
+#define TAMP_OR_IN2_RMP_Msk (0x1UL << TAMP_OR_IN2_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN2_RMP TAMP_OR_IN2_RMP_Msk
+#define TAMP_OR_IN3_RMP_Pos (9U)
+#define TAMP_OR_IN3_RMP_Msk (0x1UL << TAMP_OR_IN3_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN3_RMP TAMP_OR_IN3_RMP_Msk
+#define TAMP_OR_IN4_RMP_Pos (10U)
+#define TAMP_OR_IN4_RMP_Msk (0x1UL << TAMP_OR_IN4_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN4_RMP TAMP_OR_IN4_RMP_Msk
+
+/******************** Bits definition for TAMP_ERCFG register ***************/
+#define TAMP_ERCFGR_ERCFG0_Pos (0U)
+#define TAMP_ERCFGR_ERCFG0_Msk (0x1UL << TAMP_ERCFGR_ERCFG0_Pos) /*!< 0x00000001 */
+#define TAMP_ERCFGR_ERCFG0 TAMP_ERCFGR_ERCFG0_Msk
+
+/******************** Bits definition for TAMP_BKP0R register ***************/
+#define TAMP_BKP0R_Pos (0U)
+#define TAMP_BKP0R_Msk (0xFFFFFFFFUL << TAMP_BKP0R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP0R TAMP_BKP0R_Msk
+
+/******************** Bits definition for TAMP_BKP1R register ****************/
+#define TAMP_BKP1R_Pos (0U)
+#define TAMP_BKP1R_Msk (0xFFFFFFFFUL << TAMP_BKP1R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP1R TAMP_BKP1R_Msk
+
+/******************** Bits definition for TAMP_BKP2R register ****************/
+#define TAMP_BKP2R_Pos (0U)
+#define TAMP_BKP2R_Msk (0xFFFFFFFFUL << TAMP_BKP2R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP2R TAMP_BKP2R_Msk
+
+/******************** Bits definition for TAMP_BKP3R register ****************/
+#define TAMP_BKP3R_Pos (0U)
+#define TAMP_BKP3R_Msk (0xFFFFFFFFUL << TAMP_BKP3R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP3R TAMP_BKP3R_Msk
+
+/******************** Bits definition for TAMP_BKP4R register ****************/
+#define TAMP_BKP4R_Pos (0U)
+#define TAMP_BKP4R_Msk (0xFFFFFFFFUL << TAMP_BKP4R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP4R TAMP_BKP4R_Msk
+
+/******************** Bits definition for TAMP_BKP5R register ****************/
+#define TAMP_BKP5R_Pos (0U)
+#define TAMP_BKP5R_Msk (0xFFFFFFFFUL << TAMP_BKP5R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP5R TAMP_BKP5R_Msk
+
+/******************** Bits definition for TAMP_BKP6R register ****************/
+#define TAMP_BKP6R_Pos (0U)
+#define TAMP_BKP6R_Msk (0xFFFFFFFFUL << TAMP_BKP6R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP6R TAMP_BKP6R_Msk
+
+/******************** Bits definition for TAMP_BKP7R register ****************/
+#define TAMP_BKP7R_Pos (0U)
+#define TAMP_BKP7R_Msk (0xFFFFFFFFUL << TAMP_BKP7R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP7R TAMP_BKP7R_Msk
+
+/******************** Bits definition for TAMP_BKP8R register ****************/
+#define TAMP_BKP8R_Pos (0U)
+#define TAMP_BKP8R_Msk (0xFFFFFFFFUL << TAMP_BKP8R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP8R TAMP_BKP8R_Msk
+
+/******************** Bits definition for TAMP_BKP9R register ****************/
+#define TAMP_BKP9R_Pos (0U)
+#define TAMP_BKP9R_Msk (0xFFFFFFFFUL << TAMP_BKP9R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP9R TAMP_BKP9R_Msk
+
+/******************** Bits definition for TAMP_BKP10R register ***************/
+#define TAMP_BKP10R_Pos (0U)
+#define TAMP_BKP10R_Msk (0xFFFFFFFFUL << TAMP_BKP10R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP10R TAMP_BKP10R_Msk
+
+/******************** Bits definition for TAMP_BKP11R register ***************/
+#define TAMP_BKP11R_Pos (0U)
+#define TAMP_BKP11R_Msk (0xFFFFFFFFUL << TAMP_BKP11R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP11R TAMP_BKP11R_Msk
+
+/******************** Bits definition for TAMP_BKP12R register ***************/
+#define TAMP_BKP12R_Pos (0U)
+#define TAMP_BKP12R_Msk (0xFFFFFFFFUL << TAMP_BKP12R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP12R TAMP_BKP12R_Msk
+
+/******************** Bits definition for TAMP_BKP13R register ***************/
+#define TAMP_BKP13R_Pos (0U)
+#define TAMP_BKP13R_Msk (0xFFFFFFFFUL << TAMP_BKP13R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP13R TAMP_BKP13R_Msk
+
+/******************** Bits definition for TAMP_BKP14R register ***************/
+#define TAMP_BKP14R_Pos (0U)
+#define TAMP_BKP14R_Msk (0xFFFFFFFFUL << TAMP_BKP14R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP14R TAMP_BKP14R_Msk
+
+/******************** Bits definition for TAMP_BKP15R register ***************/
+#define TAMP_BKP15R_Pos (0U)
+#define TAMP_BKP15R_Msk (0xFFFFFFFFUL << TAMP_BKP15R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP15R TAMP_BKP15R_Msk
+
+/******************** Bits definition for TAMP_BKP16R register ***************/
+#define TAMP_BKP16R_Pos (0U)
+#define TAMP_BKP16R_Msk (0xFFFFFFFFUL << TAMP_BKP16R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP16R TAMP_BKP16R_Msk
+
+/******************** Bits definition for TAMP_BKP17R register ***************/
+#define TAMP_BKP17R_Pos (0U)
+#define TAMP_BKP17R_Msk (0xFFFFFFFFUL << TAMP_BKP17R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP17R TAMP_BKP17R_Msk
+
+/******************** Bits definition for TAMP_BKP18R register ***************/
+#define TAMP_BKP18R_Pos (0U)
+#define TAMP_BKP18R_Msk (0xFFFFFFFFUL << TAMP_BKP18R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP18R TAMP_BKP18R_Msk
+
+/******************** Bits definition for TAMP_BKP19R register ***************/
+#define TAMP_BKP19R_Pos (0U)
+#define TAMP_BKP19R_Msk (0xFFFFFFFFUL << TAMP_BKP19R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP19R TAMP_BKP19R_Msk
+
+/******************** Bits definition for TAMP_BKP20R register ***************/
+#define TAMP_BKP20R_Pos (0U)
+#define TAMP_BKP20R_Msk (0xFFFFFFFFUL << TAMP_BKP20R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP20R TAMP_BKP20R_Msk
+
+/******************** Bits definition for TAMP_BKP21R register ***************/
+#define TAMP_BKP21R_Pos (0U)
+#define TAMP_BKP21R_Msk (0xFFFFFFFFUL << TAMP_BKP21R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP21R TAMP_BKP21R_Msk
+
+/******************** Bits definition for TAMP_BKP22R register ***************/
+#define TAMP_BKP22R_Pos (0U)
+#define TAMP_BKP22R_Msk (0xFFFFFFFFUL << TAMP_BKP22R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP22R TAMP_BKP22R_Msk
+
+/******************** Bits definition for TAMP_BKP23R register ***************/
+#define TAMP_BKP23R_Pos (0U)
+#define TAMP_BKP23R_Msk (0xFFFFFFFFUL << TAMP_BKP23R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP23R TAMP_BKP23R_Msk
+
+/******************** Bits definition for TAMP_BKP24R register ***************/
+#define TAMP_BKP24R_Pos (0U)
+#define TAMP_BKP24R_Msk (0xFFFFFFFFUL << TAMP_BKP24R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP24R TAMP_BKP24R_Msk
+
+/******************** Bits definition for TAMP_BKP25R register ***************/
+#define TAMP_BKP25R_Pos (0U)
+#define TAMP_BKP25R_Msk (0xFFFFFFFFUL << TAMP_BKP25R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP25R TAMP_BKP25R_Msk
+
+/******************** Bits definition for TAMP_BKP26R register ***************/
+#define TAMP_BKP26R_Pos (0U)
+#define TAMP_BKP26R_Msk (0xFFFFFFFFUL << TAMP_BKP26R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP26R TAMP_BKP26R_Msk
+
+/******************** Bits definition for TAMP_BKP27R register ***************/
+#define TAMP_BKP27R_Pos (0U)
+#define TAMP_BKP27R_Msk (0xFFFFFFFFUL << TAMP_BKP27R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP27R TAMP_BKP27R_Msk
+
+/******************** Bits definition for TAMP_BKP28R register ***************/
+#define TAMP_BKP28R_Pos (0U)
+#define TAMP_BKP28R_Msk (0xFFFFFFFFUL << TAMP_BKP28R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP28R TAMP_BKP28R_Msk
+
+/******************** Bits definition for TAMP_BKP29R register ***************/
+#define TAMP_BKP29R_Pos (0U)
+#define TAMP_BKP29R_Msk (0xFFFFFFFFUL << TAMP_BKP29R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP29R TAMP_BKP29R_Msk
+
+/******************** Bits definition for TAMP_BKP30R register ***************/
+#define TAMP_BKP30R_Pos (0U)
+#define TAMP_BKP30R_Msk (0xFFFFFFFFUL << TAMP_BKP30R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP30R TAMP_BKP30R_Msk
+
+/******************** Bits definition for TAMP_BKP31R register ***************/
+#define TAMP_BKP31R_Pos (0U)
+#define TAMP_BKP31R_Msk (0xFFFFFFFFUL << TAMP_BKP31R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP31R TAMP_BKP31R_Msk
+
+/******************************************************************************/
+/* */
+/* Serial Audio Interface */
+/* */
+/******************************************************************************/
+/******************** Bit definition for SAI_GCR register *******************/
+#define SAI_GCR_SYNCIN_Pos (0U)
+#define SAI_GCR_SYNCIN_Msk (0x3UL << SAI_GCR_SYNCIN_Pos) /*!< 0x00000003 */
+#define SAI_GCR_SYNCIN SAI_GCR_SYNCIN_Msk /*!>2) /*!< Input modulus number of bits */
+#define PKA_MONTGOMERY_PARAM_IN_MODULUS ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Compute Montgomery parameter output data */
+#define PKA_MONTGOMERY_PARAM_OUT_PARAMETER ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Output Montgomery parameter */
+
+/* Compute modular exponentiation input data */
+#define PKA_MODULAR_EXP_IN_EXP_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent number of bits */
+#define PKA_MODULAR_EXP_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_EXP_IN_MONTGOMERY_PARAM ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+#define PKA_MODULAR_EXP_IN_EXPONENT_BASE ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the exponentiation */
+#define PKA_MODULAR_EXP_IN_EXPONENT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent to process */
+#define PKA_MODULAR_EXP_IN_MODULUS ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+#define PKA_MODULAR_EXP_PROTECT_IN_EXPONENT_BASE ((0x16C8UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the protected exponentiation */
+#define PKA_MODULAR_EXP_PROTECT_IN_EXPONENT ((0x14B8UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent to process protected exponentiation*/
+#define PKA_MODULAR_EXP_PROTECT_IN_MODULUS ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus to process protected exponentiation */
+#define PKA_MODULAR_EXP_PROTECT_IN_PHI ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input phi to process protected exponentiation */
+
+/* Compute modular exponentiation output data */
+#define PKA_MODULAR_EXP_OUT_RESULT ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Output result of the exponentiation */
+#define PKA_MODULAR_EXP_OUT_ERROR ((0x1298UL - PKA_RAM_OFFSET)>>2) /*!< Output error of the exponentiation */
+#define PKA_MODULAR_EXP_OUT_MONTGOMERY_PARAM ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Output storage area for Montgomery parameter */
+#define PKA_MODULAR_EXP_OUT_EXPONENT_BASE ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Output base of the exponentiation */
+
+/* Compute ECC scalar multiplication input data */
+#define PKA_ECC_SCALAR_MUL_IN_EXP_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input curve prime order n number of bits */
+#define PKA_ECC_SCALAR_MUL_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECC_SCALAR_MUL_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_MOD_GF ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_SCALAR_MUL_IN_K ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input 'k' of KP */
+#define PKA_ECC_SCALAR_MUL_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_SCALAR_MUL_IN_INITIAL_POINT_Y ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_SCALAR_MUL_IN_N_PRIME_ORDER ((0x0F88UL - PKA_RAM_OFFSET)>>2) /*!< Input prime order n */
+
+/* Compute ECC scalar multiplication output data */
+#define PKA_ECC_SCALAR_MUL_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate */
+#define PKA_ECC_SCALAR_MUL_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate */
+#define PKA_ECC_SCALAR_MUL_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+/* Point check input data */
+#define PKA_POINT_CHECK_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_POINT_CHECK_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_POINT_CHECK_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_POINT_CHECK_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_POINT_CHECK_IN_MOD_GF ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_POINT_CHECK_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_POINT_CHECK_IN_INITIAL_POINT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_POINT_CHECK_IN_MONTGOMERY_PARAM ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+
+/* Point check output data */
+#define PKA_POINT_CHECK_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output error */
+
+/* ECDSA signature input data */
+#define PKA_ECDSA_SIGN_IN_ORDER_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input order number of bits */
+#define PKA_ECDSA_SIGN_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECDSA_SIGN_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECDSA_SIGN_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECDSA_SIGN_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_ECDSA_SIGN_IN_MOD_GF ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECDSA_SIGN_IN_K ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input k value of the ECDSA */
+#define PKA_ECDSA_SIGN_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECDSA_SIGN_IN_INITIAL_POINT_Y ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECDSA_SIGN_IN_HASH_E ((0x0FE8UL - PKA_RAM_OFFSET)>>2) /*!< Input e, hash of the message */
+#define PKA_ECDSA_SIGN_IN_PRIVATE_KEY_D ((0x0F28UL - PKA_RAM_OFFSET)>>2) /*!< Input d, private key */
+#define PKA_ECDSA_SIGN_IN_ORDER_N ((0x0F88UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+
+/* ECDSA signature output data */
+#define PKA_ECDSA_SIGN_OUT_ERROR ((0x0FE0UL - PKA_RAM_OFFSET)>>2) /*!< Output error */
+#define PKA_ECDSA_SIGN_OUT_SIGNATURE_R ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Output signature r */
+#define PKA_ECDSA_SIGN_OUT_SIGNATURE_S ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Output signature s */
+#define PKA_ECDSA_SIGN_OUT_FINAL_POINT_X ((0x1400UL - PKA_RAM_OFFSET)>>2) /*!< Extended output result point X coordinate */
+#define PKA_ECDSA_SIGN_OUT_FINAL_POINT_Y ((0x1458UL - PKA_RAM_OFFSET)>>2) /*!< Extended output result point Y coordinate */
+
+
+/* ECDSA verification input data */
+#define PKA_ECDSA_VERIF_IN_ORDER_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input order number of bits */
+#define PKA_ECDSA_VERIF_IN_MOD_NB_BITS ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECDSA_VERIF_IN_A_COEFF_SIGN ((0x0468UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECDSA_VERIF_IN_A_COEFF ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECDSA_VERIF_IN_MOD_GF ((0x04D0UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECDSA_VERIF_IN_INITIAL_POINT_X ((0x0678UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECDSA_VERIF_IN_INITIAL_POINT_Y ((0x06D0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_X ((0x12F8UL - PKA_RAM_OFFSET)>>2) /*!< Input public key point X coordinate */
+#define PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_Y ((0x1350UL - PKA_RAM_OFFSET)>>2) /*!< Input public key point Y coordinate */
+#define PKA_ECDSA_VERIF_IN_SIGNATURE_R ((0x10E0UL - PKA_RAM_OFFSET)>>2) /*!< Input r, part of the signature */
+#define PKA_ECDSA_VERIF_IN_SIGNATURE_S ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input s, part of the signature */
+#define PKA_ECDSA_VERIF_IN_HASH_E ((0x13A8UL - PKA_RAM_OFFSET)>>2) /*!< Input e, hash of the message */
+#define PKA_ECDSA_VERIF_IN_ORDER_N ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+
+/* ECDSA verification output data */
+#define PKA_ECDSA_VERIF_OUT_RESULT ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* RSA CRT exponentiation input data */
+#define PKA_RSA_CRT_EXP_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operands number of bits */
+#define PKA_RSA_CRT_EXP_IN_DP_CRT ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input Dp CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_DQ_CRT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Input Dq CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_QINV_CRT ((0x0948UL - PKA_RAM_OFFSET)>>2) /*!< Input qInv CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_PRIME_P ((0x0B60UL - PKA_RAM_OFFSET)>>2) /*!< Input Prime p */
+#define PKA_RSA_CRT_EXP_IN_PRIME_Q ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input Prime q */
+#define PKA_RSA_CRT_EXP_IN_EXPONENT_BASE ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the exponentiation */
+
+/* RSA CRT exponentiation output data */
+#define PKA_RSA_CRT_EXP_OUT_RESULT ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular reduction input data */
+#define PKA_MODULAR_REDUC_IN_OP_LENGTH ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input operand length */
+#define PKA_MODULAR_REDUC_IN_MOD_LENGTH ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus length */
+#define PKA_MODULAR_REDUC_IN_OPERAND ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand */
+#define PKA_MODULAR_REDUC_IN_MODULUS ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Modular reduction output data */
+#define PKA_MODULAR_REDUC_OUT_RESULT ((0xE78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic addition input data */
+#define PKA_ARITHMETIC_ADD_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_ADD_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_ADD_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic addition output data */
+#define PKA_ARITHMETIC_ADD_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic subtraction input data */
+#define PKA_ARITHMETIC_SUB_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_SUB_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_SUB_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic subtraction output data */
+#define PKA_ARITHMETIC_SUB_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic multiplication input data */
+#define PKA_ARITHMETIC_MUL_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_MUL_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_MUL_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic multiplication output data */
+#define PKA_ARITHMETIC_MUL_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Comparison input data */
+#define PKA_COMPARISON_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_COMPARISON_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_COMPARISON_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Comparison output data */
+#define PKA_COMPARISON_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular addition input data */
+#define PKA_MODULAR_ADD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_ADD_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_ADD_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MODULAR_ADD_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op3 (modulus) */
+
+/* Modular addition output data */
+#define PKA_MODULAR_ADD_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular inversion input data */
+#define PKA_MODULAR_INV_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_INV_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_INV_IN_OP2_MOD ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 (modulus) */
+
+/* Modular inversion output data */
+#define PKA_MODULAR_INV_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular subtraction input data */
+#define PKA_MODULAR_SUB_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_SUB_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_SUB_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MODULAR_SUB_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op3 */
+
+/* Modular subtraction output data */
+#define PKA_MODULAR_SUB_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Montgomery multiplication input data */
+#define PKA_MONTGOMERY_MUL_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MONTGOMERY_MUL_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MONTGOMERY_MUL_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MONTGOMERY_MUL_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Montgomery multiplication output data */
+#define PKA_MONTGOMERY_MUL_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Generic Arithmetic input data */
+#define PKA_ARITHMETIC_ALL_OPS_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP3 ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Generic Arithmetic output data */
+#define PKA_ARITHMETIC_ALL_OPS_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result for arithmetic operations */
+
+/* Compute ECC complete addition input data */
+#define PKA_ECC_COMPLETE_ADD_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_COMPLETE_ADD_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_COMPLETE_ADD_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve '|a|' coefficient */
+#define PKA_ECC_COMPLETE_ADD_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_X ((0x0628UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_Y ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_Z ((0x06D8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Z coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_X ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q X coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_Y ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_Z ((0x07E0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Z coordinate */
+
+/* Compute ECC complete addition output data */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_X ((0x0D60UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_Y ((0x0DB8UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_Z ((0x0E10UL - PKA_RAM_OFFSET)>>2) /*!< Output result Z coordinate */
+
+/* Compute ECC double base ladder input data */
+#define PKA_ECC_DOUBLE_LADDER_IN_PRIME_ORDER_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+#define PKA_ECC_DOUBLE_LADDER_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_DOUBLE_LADDER_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve '|a|' coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_DOUBLE_LADDER_IN_K_INTEGER ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input 'k' integer coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_M_INTEGER ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input 'm' integer coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_X ((0x0628UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_Y ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_Z ((0x06D8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Z coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_X ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q X coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_Y ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Y coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_Z ((0x07E0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Z coordinate */
+
+/* Compute ECC double base ladder output data */
+#define PKA_ECC_DOUBLE_LADDER_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate (affine coordinate) */
+#define PKA_ECC_DOUBLE_LADDER_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate (affine coordinate) */
+#define PKA_ECC_DOUBLE_LADDER_OUT_ERROR ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+/* Compute ECC projective to affine conversion input data */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_X ((0x0D60UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P X coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_Y ((0x0DB8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P Y coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_Z ((0x0E10UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P Z coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MONTGOMERY_PARAM_R2 ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+
+/* Compute ECC projective to affine conversion output data */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result x affine coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result y affine coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+
+/** @addtogroup STM32H5xx_Peripheral_Exported_macros
+ * @{
+ */
+
+/******************************* ADC Instances ********************************/
+#define IS_ADC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == ADC1_NS) || \
+ ((INSTANCE) == ADC1_S)|| \
+ ((INSTANCE) == ADC2_NS)|| \
+ ((INSTANCE) == ADC2_S))
+
+#define IS_ADC_MULTIMODE_MASTER_INSTANCE(INSTANCE) (((INSTANCE) == ADC1_NS) || \
+ ((INSTANCE) == ADC1_S))
+
+
+#define IS_ADC_COMMON_INSTANCE(INSTANCE) (((INSTANCE) == ADC12_COMMON_NS) || \
+ ((INSTANCE) == ADC12_COMMON_S))
+/******************************* PKA Instances ********************************/
+#define IS_PKA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == PKA_NS) || ((INSTANCE) == PKA_S))
+
+/******************************* CORDIC Instances *****************************/
+#define IS_CORDIC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == CORDIC_NS) || ((INSTANCE) == CORDIC_S))
+
+/******************************* CRC Instances ********************************/
+#define IS_CRC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == CRC_NS) || ((INSTANCE) == CRC_S))
+
+/******************************* DAC Instances ********************************/
+#define IS_DAC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DAC1_NS) || ((INSTANCE) == DAC1_S))
+
+/******************************* DCACHE Instances *****************************/
+#define IS_DCACHE_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DCACHE1_NS) || ((INSTANCE) == DCACHE1_S))
+
+/******************************* DELAYBLOCK Instances *******************************/
+#define IS_DLYB_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DLYB_SDMMC1_NS) || \
+ ((INSTANCE) == DLYB_SDMMC1_S) || \
+ ((INSTANCE) == DLYB_OCTOSPI1_NS) || \
+ ((INSTANCE) == DLYB_OCTOSPI1_S ))
+/******************************** DMA Instances *******************************/
+#define IS_DMA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel0_NS) || ((INSTANCE) == GPDMA1_Channel0_S) || \
+ ((INSTANCE) == GPDMA1_Channel1_NS) || ((INSTANCE) == GPDMA1_Channel1_S) || \
+ ((INSTANCE) == GPDMA1_Channel2_NS) || ((INSTANCE) == GPDMA1_Channel2_S) || \
+ ((INSTANCE) == GPDMA1_Channel3_NS) || ((INSTANCE) == GPDMA1_Channel3_S) || \
+ ((INSTANCE) == GPDMA1_Channel4_NS) || ((INSTANCE) == GPDMA1_Channel4_S) || \
+ ((INSTANCE) == GPDMA1_Channel5_NS) || ((INSTANCE) == GPDMA1_Channel5_S) || \
+ ((INSTANCE) == GPDMA1_Channel6_NS) || ((INSTANCE) == GPDMA1_Channel6_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel0_NS) || ((INSTANCE) == GPDMA2_Channel0_S) || \
+ ((INSTANCE) == GPDMA2_Channel1_NS) || ((INSTANCE) == GPDMA2_Channel1_S) || \
+ ((INSTANCE) == GPDMA2_Channel2_NS) || ((INSTANCE) == GPDMA2_Channel2_S) || \
+ ((INSTANCE) == GPDMA2_Channel3_NS) || ((INSTANCE) == GPDMA2_Channel3_S) || \
+ ((INSTANCE) == GPDMA2_Channel4_NS) || ((INSTANCE) == GPDMA2_Channel4_S) || \
+ ((INSTANCE) == GPDMA2_Channel5_NS) || ((INSTANCE) == GPDMA2_Channel5_S) || \
+ ((INSTANCE) == GPDMA2_Channel6_NS) || ((INSTANCE) == GPDMA2_Channel6_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+#define IS_GPDMA_INSTANCE(INSTANCE) IS_DMA_ALL_INSTANCE(INSTANCE)
+
+#define IS_DMA_2D_ADDRESSING_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel6_NS) || ((INSTANCE) == GPDMA1_Channel6_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel6_NS) || ((INSTANCE) == GPDMA2_Channel6_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+#define IS_DMA_PFREQ_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel0_NS) || ((INSTANCE) == GPDMA1_Channel0_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel0_NS) || ((INSTANCE) == GPDMA2_Channel0_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+/****************************** RAMCFG Instances ********************************/
+#define IS_RAMCFG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM1_NS) || ((INSTANCE) == RAMCFG_SRAM1_S) || \
+ ((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S) || \
+ ((INSTANCE) == RAMCFG_SRAM3_NS) || ((INSTANCE) == RAMCFG_SRAM3_S) || \
+ ((INSTANCE) == RAMCFG_BKPRAM_NS) || ((INSTANCE) == RAMCFG_BKPRAM_S))
+
+/***************************** RAMCFG ECC Instances *****************************/
+#define IS_RAMCFG_ECC_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S) || \
+ ((INSTANCE) == RAMCFG_SRAM3_NS) || ((INSTANCE) == RAMCFG_SRAM3_S) || \
+ ((INSTANCE) == RAMCFG_BKPRAM_NS) || ((INSTANCE) == RAMCFG_BKPRAM_S))
+
+/************************ RAMCFG Write Protection Instances *********************/
+#define IS_RAMCFG_WP_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S))
+
+
+/******************************** FMAC Instances ******************************/
+#define IS_FMAC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == FMAC_NS) || ((INSTANCE) == FMAC_S))
+
+/******************************* GPIO Instances *******************************/
+#define IS_GPIO_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPIOA_NS) || ((INSTANCE) == GPIOA_S) || \
+ ((INSTANCE) == GPIOB_NS) || ((INSTANCE) == GPIOB_S) || \
+ ((INSTANCE) == GPIOC_NS) || ((INSTANCE) == GPIOC_S) || \
+ ((INSTANCE) == GPIOD_NS) || ((INSTANCE) == GPIOD_S) || \
+ ((INSTANCE) == GPIOE_NS) || ((INSTANCE) == GPIOE_S) || \
+ ((INSTANCE) == GPIOF_NS) || ((INSTANCE) == GPIOF_S) || \
+ ((INSTANCE) == GPIOG_NS) || ((INSTANCE) == GPIOG_S) || \
+ ((INSTANCE) == GPIOH_NS) || ((INSTANCE) == GPIOH_S) || \
+ ((INSTANCE) == GPIOI_NS) || ((INSTANCE) == GPIOI_S))
+
+/******************************* DCMI Instances *******************************/
+#define IS_DCMI_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == DCMI_NS) || ((__INSTANCE__) == DCMI_S))
+
+/******************************* PSSI Instances *******************************/
+#define IS_PSSI_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == PSSI_NS) || ((__INSTANCE__) == PSSI_S))
+
+/******************************* DTS Instances *******************************/
+#define IS_DTS_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == DTS_NS) || ((__INSTANCE__) == DTS_S))
+
+/******************************* GPIO AF Instances ****************************/
+/* On H5, all GPIO Bank support AF */
+#define IS_GPIO_AF_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)
+
+/**************************** GPIO Lock Instances *****************************/
+/* On H5, all GPIO Bank support the Lock mechanism */
+#define IS_GPIO_LOCK_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)
+
+/******************************** I2C Instances *******************************/
+#define IS_I2C_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1_NS) || ((INSTANCE) == I2C1_S) || \
+ ((INSTANCE) == I2C2_NS) || ((INSTANCE) == I2C2_S) || \
+ ((INSTANCE) == I2C3_NS) || ((INSTANCE) == I2C3_S) || \
+ ((INSTANCE) == I2C4_NS) || ((INSTANCE) == I2C4_S))
+
+/****************** I2C Instances : wakeup capability from stop modes *********/
+#define IS_I2C_WAKEUP_FROMSTOP_INSTANCE(INSTANCE) IS_I2C_ALL_INSTANCE(INSTANCE)
+
+/******************************** I3C Instances *******************************/
+#define IS_I3C_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I3C1_NS) || ((INSTANCE) == I3C1_S))
+
+/******************************* OSPI Instances *******************************/
+#define IS_OSPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == OCTOSPI1_NS) || ((INSTANCE) == OCTOSPI1_S))
+
+/******************************* RNG Instances ********************************/
+#define IS_RNG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RNG_NS) || ((INSTANCE) == RNG_S))
+
+/****************************** RTC Instances *********************************/
+#define IS_RTC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RTC_NS) || ((INSTANCE) == RTC_S))
+
+/******************************** SAI Instances *******************************/
+#define IS_SAI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SAI1_Block_A_NS) || ((INSTANCE) == SAI1_Block_A_S) || \
+ ((INSTANCE) == SAI1_Block_B_NS) || ((INSTANCE) == SAI1_Block_B_S) || \
+ ((INSTANCE) == SAI2_Block_A_NS) || ((INSTANCE) == SAI2_Block_A_S) || \
+ ((INSTANCE) == SAI2_Block_B_NS) || ((INSTANCE) == SAI2_Block_B_S))
+
+/****************************** SDMMC Instances *******************************/
+#define IS_SDMMC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SDMMC1_NS) || ((INSTANCE) == SDMMC1_S))
+
+/****************************** FDCAN Instances *******************************/
+#define IS_FDCAN_ALL_INSTANCE(INSTANCE) (((INSTANCE) == FDCAN1_NS) || ((INSTANCE) == FDCAN1_S))
+
+/****************************** SMBUS Instances *******************************/
+#define IS_SMBUS_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1_NS) || ((INSTANCE) == I2C1_S) || \
+ ((INSTANCE) == I2C2_NS) || ((INSTANCE) == I2C2_S) || \
+ ((INSTANCE) == I2C3_NS) || ((INSTANCE) == I2C3_S) || \
+ ((INSTANCE) == I2C4_NS) || ((INSTANCE) == I2C4_S))
+
+/******************************** SPI Instances *******************************/
+#define IS_SPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1_NS) || ((INSTANCE) == SPI1_S) || \
+ ((INSTANCE) == SPI2_NS) || ((INSTANCE) == SPI2_S) || \
+ ((INSTANCE) == SPI3_NS) || ((INSTANCE) == SPI3_S) || \
+ ((INSTANCE) == SPI4_NS) || ((INSTANCE) == SPI4_S) || \
+ ((INSTANCE) == SPI5_NS) || ((INSTANCE) == SPI5_S) || \
+ ((INSTANCE) == SPI6_NS) || ((INSTANCE) == SPI6_S))
+
+#define IS_SPI_LIMITED_INSTANCE(INSTANCE) (((INSTANCE) == SPI4_NS) || ((INSTANCE) == SPI4_S) || \
+ ((INSTANCE) == SPI5_NS) || ((INSTANCE) == SPI5_S) || \
+ ((INSTANCE) == SPI6_NS) || ((INSTANCE) == SPI6_S))
+
+#define IS_SPI_FULL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1_NS) || ((INSTANCE) == SPI1_S) || \
+ ((INSTANCE) == SPI2_NS) || ((INSTANCE) == SPI2_S) || \
+ ((INSTANCE) == SPI3_NS) || ((INSTANCE) == SPI3_S))
+
+/****************** LPTIM Instances : All supported instances *****************/
+#define IS_LPTIM_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM4_NS) || ((INSTANCE) == LPTIM4_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/****************** LPTIM Instances : DMA supported instances *****************/
+#define IS_LPTIM_DMA_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/************* LPTIM Instances : at least 1 capture/compare channel ***********/
+#define IS_LPTIM_CC1_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM4_NS) || ((INSTANCE) == LPTIM4_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/************* LPTIM Instances : at least 2 capture/compare channel ***********/
+#define IS_LPTIM_CC2_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/****************** LPTIM Instances : supporting encoder interface **************/
+#define IS_LPTIM_ENCODER_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/****************** LPTIM Instances : supporting Input Capture **************/
+#define IS_LPTIM_INPUT_CAPTURE_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/****************** TIM Instances : All supported instances *******************/
+#define IS_TIM_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM13_NS) || ((INSTANCE) == TIM13_S) || \
+ ((INSTANCE) == TIM14_NS) || ((INSTANCE) == TIM14_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : supporting 32 bits counter ****************/
+#define IS_TIM_32B_COUNTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S))
+
+/****************** TIM Instances : supporting the break function *************/
+#define IS_TIM_BREAK_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/************** TIM Instances : supporting Break source selection *************/
+#define IS_TIM_BREAKSOURCE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : supporting 2 break inputs *****************/
+#define IS_TIM_BKIN2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************* TIM Instances : at least 1 capture/compare channel *************/
+#define IS_TIM_CC1_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM13_NS) || ((INSTANCE) == TIM13_S) || \
+ ((INSTANCE) == TIM14_NS) || ((INSTANCE) == TIM14_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/************ TIM Instances : at least 2 capture/compare channels *************/
+#define IS_TIM_CC2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/************ TIM Instances : at least 3 capture/compare channels *************/
+#define IS_TIM_CC3_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************ TIM Instances : at least 4 capture/compare channels *************/
+#define IS_TIM_CC4_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : at least 5 capture/compare channels *******/
+#define IS_TIM_CC5_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : at least 6 capture/compare channels *******/
+#define IS_TIM_CC6_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : DMA requests generation (TIMx_DIER.UDE) ***/
+#define IS_TIM_DMA_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/************ TIM Instances : DMA requests generation (TIMx_DIER.CCxDE) *******/
+#define IS_TIM_DMA_CC_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/******************** TIM Instances : DMA burst feature ***********************/
+#define IS_TIM_DMABURST_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/******************* TIM Instances : output(s) available **********************/
+#define IS_TIM_CCX_INSTANCE(INSTANCE, CHANNEL) \
+ (((((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4) || \
+ ((CHANNEL) == TIM_CHANNEL_5) || \
+ ((CHANNEL) == TIM_CHANNEL_6))) \
+ || \
+ ((((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4) || \
+ ((CHANNEL) == TIM_CHANNEL_5) || \
+ ((CHANNEL) == TIM_CHANNEL_6))) \
+ || \
+ ((((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2))) \
+ || \
+ ((((INSTANCE) == TIM13_NS) || ((INSTANCE) == TIM13_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1))) \
+ || \
+ ((((INSTANCE) == TIM14_NS) || ((INSTANCE) == TIM14_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1))) \
+ || \
+ ((((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2))) \
+ || \
+ ((((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1))) \
+ || \
+ ((((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1))))
+
+/****************** TIM Instances : supporting complementary output(s) ********/
+#define IS_TIM_CCXN_INSTANCE(INSTANCE, CHANNEL) \
+ (((((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S)) && \
+ ((CHANNEL) == TIM_CHANNEL_1)) \
+ || \
+ ((((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S)) && \
+ ((CHANNEL) == TIM_CHANNEL_1)) \
+ || \
+ ((((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S)) && \
+ ((CHANNEL) == TIM_CHANNEL_1)))
+
+/****************** TIM Instances : supporting clock division *****************/
+#define IS_TIM_CLOCK_DIVISION_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM13_NS) || ((INSTANCE) == TIM13_S) || \
+ ((INSTANCE) == TIM14_NS) || ((INSTANCE) == TIM14_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****** TIM Instances : supporting external clock mode 1 for ETRF input *******/
+#define IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****** TIM Instances : supporting external clock mode 2 for ETRF input *******/
+#define IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting external clock mode 1 for TIX inputs*/
+#define IS_TIM_CLOCKSOURCE_TIX_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting internal trigger inputs(ITRX) *******/
+#define IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM13_NS) || ((INSTANCE) == TIM13_S) || \
+ ((INSTANCE) == TIM14_NS) || ((INSTANCE) == TIM14_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting combined 3-phase PWM mode ******/
+#define IS_TIM_COMBINED3PHASEPWM_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting commutation event generation ***/
+#define IS_TIM_COMMUTATION_EVENT_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : supporting counting mode selection ********/
+#define IS_TIM_COUNTER_MODE_SELECT_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting encoder interface **************/
+#define IS_TIM_ENCODER_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting Hall sensor interface **********/
+#define IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/**************** TIM Instances : external trigger input available ************/
+#define IS_TIM_ETR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************* TIM Instances : supporting ETR source selection ***************/
+#define IS_TIM_ETRSEL_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****** TIM Instances : Master mode available (TIMx_CR2.MMS available )********/
+#define IS_TIM_MASTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/*********** TIM Instances : Slave mode available (TIMx_SMCR available )*******/
+#define IS_TIM_SLAVE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting OCxREF clear *******************/
+#define IS_TIM_OCXREF_CLEAR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : remapping capability **********************/
+#define IS_TIM_REMAP_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting repetition counter *************/
+#define IS_TIM_REPETITION_COUNTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : supporting ADC triggering through TRGO2 ***/
+#define IS_TIM_TRGO2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/******************* TIM Instances : Timer input XOR function *****************/
+#define IS_TIM_XOR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/******************* TIM Instances : Timer input selection ********************/
+#define IS_TIM_TISEL_INSTANCE(INSTANCE) (((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S)|| \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S)|| \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S)|| \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/******************* TIM Instances : supporting bitfield RTCPREEN in OR1 register ********************/
+#define IS_TIM_RTCPREEN_INSTANCE(INSTANCE) (((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : Advanced timer instances *******************/
+#define IS_TIM_ADVANCED_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting synchronization ****************/
+#define IS_TIM_SYNCHRO_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1_NS) || ((__INSTANCE__) == TIM1_S) || \
+ ((__INSTANCE__) == TIM2_NS) || ((__INSTANCE__) == TIM2_S) || \
+ ((__INSTANCE__) == TIM3_NS) || ((__INSTANCE__) == TIM3_S) || \
+ ((__INSTANCE__) == TIM4_NS) || ((__INSTANCE__) == TIM4_S) || \
+ ((__INSTANCE__) == TIM5_NS) || ((__INSTANCE__) == TIM5_S) || \
+ ((__INSTANCE__) == TIM6_NS) || ((__INSTANCE__) == TIM6_S) || \
+ ((__INSTANCE__) == TIM7_NS) || ((__INSTANCE__) == TIM7_S) || \
+ ((__INSTANCE__) == TIM8_NS) || ((__INSTANCE__) == TIM8_S) || \
+ ((__INSTANCE__) == TIM12_NS) || ((__INSTANCE__) == TIM12_S)|| \
+ ((__INSTANCE__) == TIM15_NS) || ((__INSTANCE__) == TIM15_S))
+
+/******************** USART Instances : Synchronous mode **********************/
+#define IS_USART_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S))
+
+/******************** UART Instances : Asynchronous mode **********************/
+#define IS_UART_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S))
+
+/*********************** UART Instances : FIFO mode ***************************/
+#define IS_UART_FIFO_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/*********************** UART Instances : SPI Slave mode **********************/
+#define IS_UART_SPI_SLAVE_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S))
+
+/******************************** I2S Instances *******************************/
+#define IS_I2S_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1) || \
+ ((INSTANCE) == SPI2) || \
+ ((INSTANCE) == SPI3))
+
+/****************** UART Instances : Auto Baud Rate detection ****************/
+#define IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S))
+
+/****************** UART Instances : Driver Enable *****************/
+#define IS_UART_DRIVER_ENABLE_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** UART Instances : Half-Duplex mode **********************/
+#define IS_UART_HALFDUPLEX_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/****************** UART Instances : Hardware Flow control ********************/
+#define IS_UART_HWFLOW_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** UART Instances : LIN mode **********************/
+#define IS_UART_LIN_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S))
+
+/******************** UART Instances : Wake-up from Stop mode **********************/
+#define IS_UART_WAKEUP_FROMSTOP_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/*********************** UART Instances : IRDA mode ***************************/
+#define IS_IRDA_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S))
+
+/********************* USART Instances : Smard card mode ***********************/
+#define IS_SMARTCARD_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S))
+
+/******************** LPUART Instance *****************************************/
+#define IS_LPUART_INSTANCE(INSTANCE) (((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** CEC Instance *****************************************/
+#define IS_CEC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == CEC_NS) || ((INSTANCE) == CEC_S))
+
+/****************************** IWDG Instances ********************************/
+#define IS_IWDG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == IWDG_NS) || ((INSTANCE) == IWDG_S))
+
+/****************************** WWDG Instances ********************************/
+#define IS_WWDG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == WWDG_NS) || ((INSTANCE) == WWDG_S))
+
+/****************************** UCPD Instances ********************************/
+#define IS_UCPD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == UCPD1_NS) || ((INSTANCE) == UCPD1_S))
+
+/******************************* USB DRD FS HCD Instances *************************/
+#define IS_HCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_DRD_FS_NS) || ((INSTANCE) == USB_DRD_FS_S))
+
+/******************************* USB DRD FS PCD Instances *************************/
+#define IS_PCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_DRD_FS_NS) || ((INSTANCE) == USB_DRD_FS_S))
+
+/** @} */ /* End of group STM32H5xx_Peripheral_Exported_macros */
+
+/** @} */ /* End of group STM32H562xx */
+
+/** @} */ /* End of group ST */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* STM32H562xx_H */
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h563xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h563xx.h
new file mode 100644
index 000000000..e35987ddb
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h563xx.h
@@ -0,0 +1,24005 @@
+/**
+ ******************************************************************************
+ * @file stm32h563xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H563xx Device Peripheral Access Layer Header File.
+ *
+ * This file contains:
+ * - Data structures and the address mapping for all peripherals
+ * - Peripheral's registers declarations and bits definition
+ * - Macros to access peripheral's registers hardware
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2023 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.
+ *
+ ******************************************************************************
+ */
+
+#ifndef STM32H563xx_H
+#define STM32H563xx_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** @addtogroup ST
+ * @{
+ */
+
+
+/** @addtogroup STM32H563xx
+ * @{
+ */
+
+
+/** @addtogroup Configuration_of_CMSIS
+ * @{
+ */
+
+
+/* =========================================================================================================================== */
+/* ================ Interrupt Number Definition ================ */
+/* =========================================================================================================================== */
+
+typedef enum
+{
+/* ======================================= ARM Cortex-M33 Specific Interrupt Numbers ======================================= */
+ Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */
+ NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */
+ HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */
+ MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation
+ and No Match */
+ BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory
+ related Fault */
+ UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */
+ SecureFault_IRQn = -9, /*!< -9 Secure Fault */
+ SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */
+ DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */
+ PendSV_IRQn = -2, /*!< -2 Pendable request for system service */
+ SysTick_IRQn = -1, /*!< -1 System Tick Timer */
+
+/* =========================================== STM32H563xx Specific Interrupt Numbers ====================================== */
+ WWDG_IRQn = 0, /*!< Window WatchDog interrupt */
+ PVD_AVD_IRQn = 1, /*!< PVD/AVD through EXTI Line detection Interrupt */
+ RTC_IRQn = 2, /*!< RTC non-secure interrupt */
+ RTC_S_IRQn = 3, /*!< RTC secure interrupt */
+ TAMP_IRQn = 4, /*!< Tamper global interrupt */
+ RAMCFG_IRQn = 5, /*!< RAMCFG global interrupt */
+ FLASH_IRQn = 6, /*!< FLASH non-secure global interrupt */
+ FLASH_S_IRQn = 7, /*!< FLASH secure global interrupt */
+ GTZC_IRQn = 8, /*!< Global TrustZone Controller interrupt */
+ RCC_IRQn = 9, /*!< RCC non secure global interrupt */
+ RCC_S_IRQn = 10, /*!< RCC secure global interrupt */
+ EXTI0_IRQn = 11, /*!< EXTI Line0 interrupt */
+ EXTI1_IRQn = 12, /*!< EXTI Line1 interrupt */
+ EXTI2_IRQn = 13, /*!< EXTI Line2 interrupt */
+ EXTI3_IRQn = 14, /*!< EXTI Line3 interrupt */
+ EXTI4_IRQn = 15, /*!< EXTI Line4 interrupt */
+ EXTI5_IRQn = 16, /*!< EXTI Line5 interrupt */
+ EXTI6_IRQn = 17, /*!< EXTI Line6 interrupt */
+ EXTI7_IRQn = 18, /*!< EXTI Line7 interrupt */
+ EXTI8_IRQn = 19, /*!< EXTI Line8 interrupt */
+ EXTI9_IRQn = 20, /*!< EXTI Line9 interrupt */
+ EXTI10_IRQn = 21, /*!< EXTI Line10 interrupt */
+ EXTI11_IRQn = 22, /*!< EXTI Line11 interrupt */
+ EXTI12_IRQn = 23, /*!< EXTI Line12 interrupt */
+ EXTI13_IRQn = 24, /*!< EXTI Line13 interrupt */
+ EXTI14_IRQn = 25, /*!< EXTI Line14 interrupt */
+ EXTI15_IRQn = 26, /*!< EXTI Line15 interrupt */
+ GPDMA1_Channel0_IRQn = 27, /*!< GPDMA1 Channel 0 global interrupt */
+ GPDMA1_Channel1_IRQn = 28, /*!< GPDMA1 Channel 1 global interrupt */
+ GPDMA1_Channel2_IRQn = 29, /*!< GPDMA1 Channel 2 global interrupt */
+ GPDMA1_Channel3_IRQn = 30, /*!< GPDMA1 Channel 3 global interrupt */
+ GPDMA1_Channel4_IRQn = 31, /*!< GPDMA1 Channel 4 global interrupt */
+ GPDMA1_Channel5_IRQn = 32, /*!< GPDMA1 Channel 5 global interrupt */
+ GPDMA1_Channel6_IRQn = 33, /*!< GPDMA1 Channel 6 global interrupt */
+ GPDMA1_Channel7_IRQn = 34, /*!< GPDMA1 Channel 7 global interrupt */
+ IWDG_IRQn = 35, /*!< IWDG global interrupt */
+ ADC1_IRQn = 37, /*!< ADC1 global interrupt */
+ DAC1_IRQn = 38, /*!< DAC1 global interrupt */
+ FDCAN1_IT0_IRQn = 39, /*!< FDCAN1 interrupt 0 */
+ FDCAN1_IT1_IRQn = 40, /*!< FDCAN1 interrupt 1 */
+ TIM1_BRK_IRQn = 41, /*!< TIM1 Break interrupt */
+ TIM1_UP_IRQn = 42, /*!< TIM1 Update interrupt */
+ TIM1_TRG_COM_IRQn = 43, /*!< TIM1 Trigger and Commutation interrupt */
+ TIM1_CC_IRQn = 44, /*!< TIM1 Capture Compare interrupt */
+ TIM2_IRQn = 45, /*!< TIM2 global interrupt */
+ TIM3_IRQn = 46, /*!< TIM3 global interrupt */
+ TIM4_IRQn = 47, /*!< TIM4 global interrupt */
+ TIM5_IRQn = 48, /*!< TIM5 global interrupt */
+ TIM6_IRQn = 49, /*!< TIM6 global interrupt */
+ TIM7_IRQn = 50, /*!< TIM7 global interrupt */
+ I2C1_EV_IRQn = 51, /*!< I2C1 Event interrupt */
+ I2C1_ER_IRQn = 52, /*!< I2C1 Error interrupt */
+ I2C2_EV_IRQn = 53, /*!< I2C2 Event interrupt */
+ I2C2_ER_IRQn = 54, /*!< I2C2 Error interrupt */
+ SPI1_IRQn = 55, /*!< SPI1 global interrupt */
+ SPI2_IRQn = 56, /*!< SPI2 global interrupt */
+ SPI3_IRQn = 57, /*!< SPI3 global interrupt */
+ USART1_IRQn = 58, /*!< USART1 global interrupt */
+ USART2_IRQn = 59, /*!< USART2 global interrupt */
+ USART3_IRQn = 60, /*!< USART3 global interrupt */
+ UART4_IRQn = 61, /*!< UART4 global interrupt */
+ UART5_IRQn = 62, /*!< UART5 global interrupt */
+ LPUART1_IRQn = 63, /*!< LPUART1 global interrupt */
+ LPTIM1_IRQn = 64, /*!< LPTIM1 global interrupt */
+ TIM8_BRK_IRQn = 65, /*!< TIM8 Break interrupt */
+ TIM8_UP_IRQn = 66, /*!< TIM8 Update interrupt */
+ TIM8_TRG_COM_IRQn = 67, /*!< TIM8 Trigger and Commutation interrupt */
+ TIM8_CC_IRQn = 68, /*!< TIM8 Capture Compare interrupt */
+ ADC2_IRQn = 69, /*!< ADC2 global interrupt */
+ LPTIM2_IRQn = 70, /*!< LPTIM2 global interrupt */
+ TIM15_IRQn = 71, /*!< TIM15 global interrupt */
+ TIM16_IRQn = 72, /*!< TIM16 global interrupt */
+ TIM17_IRQn = 73, /*!< TIM17 global interrupt */
+ USB_DRD_FS_IRQn = 74, /*!< USB FS global interrupt */
+ CRS_IRQn = 75, /*!< CRS global interrupt */
+ UCPD1_IRQn = 76, /*!< UCPD1 global interrupt */
+ FMC_IRQn = 77, /*!< FMC global interrupt */
+ OCTOSPI1_IRQn = 78, /*!< OctoSPI1 global interrupt */
+ SDMMC1_IRQn = 79, /*!< SDMMC1 global interrupt */
+ I2C3_EV_IRQn = 80, /*!< I2C3 event interrupt */
+ I2C3_ER_IRQn = 81, /*!< I2C3 error interrupt */
+ SPI4_IRQn = 82, /*!< SPI4 global interrupt */
+ SPI5_IRQn = 83, /*!< SPI5 global interrupt */
+ SPI6_IRQn = 84, /*!< SPI6 global interrupt */
+ USART6_IRQn = 85, /*!< USART6 global interrupt */
+ USART10_IRQn = 86, /*!< USART10 global interrupt */
+ USART11_IRQn = 87, /*!< USART11 global interrupt */
+ SAI1_IRQn = 88, /*!< Serial Audio Interface 1 global interrupt */
+ SAI2_IRQn = 89, /*!< Serial Audio Interface 2 global interrupt */
+ GPDMA2_Channel0_IRQn = 90, /*!< GPDMA2 Channel 0 global interrupt */
+ GPDMA2_Channel1_IRQn = 91, /*!< GPDMA2 Channel 1 global interrupt */
+ GPDMA2_Channel2_IRQn = 92, /*!< GPDMA2 Channel 2 global interrupt */
+ GPDMA2_Channel3_IRQn = 93, /*!< GPDMA2 Channel 3 global interrupt */
+ GPDMA2_Channel4_IRQn = 94, /*!< GPDMA2 Channel 4 global interrupt */
+ GPDMA2_Channel5_IRQn = 95, /*!< GPDMA2 Channel 5 global interrupt */
+ GPDMA2_Channel6_IRQn = 96, /*!< GPDMA2 Channel 6 global interrupt */
+ GPDMA2_Channel7_IRQn = 97, /*!< GPDMA2 Channel 7 global interrupt */
+ UART7_IRQn = 98, /*!< UART7 global interrupt */
+ UART8_IRQn = 99, /*!< UART8 global interrupt */
+ UART9_IRQn = 100, /*!< UART9 global interrupt */
+ UART12_IRQn = 101, /*!< UART12 global interrupt */
+ SDMMC2_IRQn = 102, /*!< SDMMC2 global interrupt */
+ FPU_IRQn = 103, /*!< FPU global interrupt */
+ ICACHE_IRQn = 104, /*!< Instruction cache global interrupt */
+ DCACHE1_IRQn = 105, /*!< Data cache global interrupt */
+ ETH_IRQn = 106, /*!< Ethernet global interrupt */
+ ETH_WKUP_IRQn = 107, /*!< Ethernet Wakeup global interrupt */
+ DCMI_PSSI_IRQn = 108, /*!< DCMI/PSSI global interrupt */
+ FDCAN2_IT0_IRQn = 109, /*!< FDCAN2 interrupt 0 */
+ FDCAN2_IT1_IRQn = 110, /*!< FDCAN2 interrupt 1 */
+ CORDIC_IRQn = 111, /*!< CORDIC global interrupt */
+ FMAC_IRQn = 112, /*!< FMAC global interrupt */
+ DTS_IRQn = 113, /*!< DTS global interrupt */
+ RNG_IRQn = 114, /*!< RNG global interrupt */
+ HASH_IRQn = 117, /*!< HASH global interrupt */
+ PKA_IRQn = 118, /*!< PKA global interrupt */
+ CEC_IRQn = 119, /*!< CEC-HDMI global interrupt */
+ TIM12_IRQn = 120, /*!< TIM12 global interrupt */
+ TIM13_IRQn = 121, /*!< TIM13 global interrupt */
+ TIM14_IRQn = 122, /*!< TIM14 global interrupt */
+ I3C1_EV_IRQn = 123, /*!< I3C1 event interrupt */
+ I3C1_ER_IRQn = 124, /*!< I3C1 error interrupt */
+ I2C4_EV_IRQn = 125, /*!< I2C4 event interrupt */
+ I2C4_ER_IRQn = 126, /*!< I2C4 error interrupt */
+ LPTIM3_IRQn = 127, /*!< LPTIM3 global interrupt */
+ LPTIM4_IRQn = 128, /*!< LPTIM4 global interrupt */
+ LPTIM5_IRQn = 129, /*!< LPTIM5 global interrupt */
+ LPTIM6_IRQn = 130, /*!< LPTIM6 global interrupt */
+} IRQn_Type;
+
+
+
+/* =========================================================================================================================== */
+/* ================ Processor and Core Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+/* ------- Start of section using anonymous unions and disabling warnings ------- */
+#if defined (__CC_ARM)
+ #pragma push
+ #pragma anon_unions
+#elif defined (__ICCARM__)
+ #pragma language=extended
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wc11-extensions"
+ #pragma clang diagnostic ignored "-Wreserved-id-macro"
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning 586
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+#define SMPS /*!< Switched mode power supply feature */
+
+/* -------- Configuration of the Cortex-M33 Processor and Core Peripherals ------ */
+#define __CM33_REV 0x0000U /* Core revision r0p1 */
+#define __SAUREGION_PRESENT 1U /* SAU regions present */
+#define __MPU_PRESENT 1U /* MPU present */
+#define __VTOR_PRESENT 1U /* VTOR present */
+#define __NVIC_PRIO_BITS 4U /* Number of Bits used for Priority Levels */
+#define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */
+#define __FPU_PRESENT 1U /* FPU present */
+#define __DSP_PRESENT 1U /* DSP extension present */
+
+/** @} */ /* End of group Configuration_of_CMSIS */
+
+
+#include /*!< ARM Cortex-M33 processor and core peripherals */
+#include "system_stm32h5xx.h" /*!< STM32H5xx System */
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_peripherals
+ * @{
+ */
+
+/**
+ * @brief CRC calculation unit
+ */
+typedef struct
+{
+ __IO uint32_t DR; /*!< CRC Data register, Address offset: 0x00 */
+ __IO uint32_t IDR; /*!< CRC Independent data register, Address offset: 0x04 */
+ __IO uint32_t CR; /*!< CRC Control register, Address offset: 0x08 */
+ uint32_t RESERVED2; /*!< Reserved, 0x0C */
+ __IO uint32_t INIT; /*!< Initial CRC value register, Address offset: 0x10 */
+ __IO uint32_t POL; /*!< CRC polynomial register, Address offset: 0x14 */
+ uint32_t RESERVED3[246]; /*!< Reserved, */
+ __IO uint32_t HWCFGR; /*!< CRC IP HWCFGR register, Address offset: 0x3F0 */
+ __IO uint32_t VERR; /*!< CRC IP version register, Address offset: 0x3F4 */
+ __IO uint32_t PIDR; /*!< CRC IP type identification register, Address offset: 0x3F8 */
+ __IO uint32_t SIDR; /*!< CRC IP map Size ID register, Address offset: 0x3FC */
+} CRC_TypeDef;
+
+/**
+ * @brief Inter-integrated Circuit Interface
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< I2C Control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< I2C Control register 2, Address offset: 0x04 */
+ __IO uint32_t OAR1; /*!< I2C Own address 1 register, Address offset: 0x08 */
+ __IO uint32_t OAR2; /*!< I2C Own address 2 register, Address offset: 0x0C */
+ __IO uint32_t TIMINGR; /*!< I2C Timing register, Address offset: 0x10 */
+ __IO uint32_t TIMEOUTR; /*!< I2C Timeout register, Address offset: 0x14 */
+ __IO uint32_t ISR; /*!< I2C Interrupt and status register, Address offset: 0x18 */
+ __IO uint32_t ICR; /*!< I2C Interrupt clear register, Address offset: 0x1C */
+ __IO uint32_t PECR; /*!< I2C PEC register, Address offset: 0x20 */
+ __IO uint32_t RXDR; /*!< I2C Receive data register, Address offset: 0x24 */
+ __IO uint32_t TXDR; /*!< I2C Transmit data register, Address offset: 0x28 */
+} I2C_TypeDef;
+
+/**
+ * @brief Improved Inter-integrated Circuit Interface
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< I3C Control register, Address offset: 0x00 */
+ __IO uint32_t CFGR; /*!< I3C Controller Configuration register, Address offset: 0x04 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x08-0x0C */
+ __IO uint32_t RDR; /*!< I3C Received Data register, Address offset: 0x10 */
+ __IO uint32_t RDWR; /*!< I3C Received Data Word register, Address offset: 0x14 */
+ __IO uint32_t TDR; /*!< I3C Transmit Data register, Address offset: 0x18 */
+ __IO uint32_t TDWR; /*!< I3C Transmit Data Word register, Address offset: 0x1C */
+ __IO uint32_t IBIDR; /*!< I3C IBI payload Data register, Address offset: 0x20 */
+ __IO uint32_t TGTTDR; /*!< I3C Target Transmit register, Address offset: 0x24 */
+ uint32_t RESERVED2[2]; /*!< Reserved, Address offset: 0x28-0x2C */
+ __IO uint32_t SR; /*!< I3C Status register, Address offset: 0x30 */
+ __IO uint32_t SER; /*!< I3C Status Error register, Address offset: 0x34 */
+ uint32_t RESERVED3[2]; /*!< Reserved, Address offset: 0x38-0x3C */
+ __IO uint32_t RMR; /*!< I3C Received Message register, Address offset: 0x40 */
+ uint32_t RESERVED4[3]; /*!< Reserved, Address offset: 0x44-0x4C */
+ __IO uint32_t EVR; /*!< I3C Event register, Address offset: 0x50 */
+ __IO uint32_t IER; /*!< I3C Interrupt Enable register, Address offset: 0x54 */
+ __IO uint32_t CEVR; /*!< I3C Clear Event register, Address offset: 0x58 */
+ uint32_t RESERVED5; /*!< Reserved, Address offset: 0x5C */
+ __IO uint32_t DEVR0; /*!< I3C own Target characteristics register, Address offset: 0x60 */
+ __IO uint32_t DEVRX[4]; /*!< I3C Target x (1<=x<=4) register, Address offset: 0x64-0x70 */
+ uint32_t RESERVED6[7]; /*!< Reserved, Address offset: 0x74-0x8C */
+ __IO uint32_t MAXRLR; /*!< I3C Maximum Read Length register, Address offset: 0x90 */
+ __IO uint32_t MAXWLR; /*!< I3C Maximum Write Length register, Address offset: 0x94 */
+ uint32_t RESERVED7[2]; /*!< Reserved, Address offset: 0x98-0x9C */
+ __IO uint32_t TIMINGR0; /*!< I3C Timing 0 register, Address offset: 0xA0 */
+ __IO uint32_t TIMINGR1; /*!< I3C Timing 1 register, Address offset: 0xA4 */
+ __IO uint32_t TIMINGR2; /*!< I3C Timing 2 register, Address offset: 0xA8 */
+ uint32_t RESERVED9[5]; /*!< Reserved, Address offset: 0xAC-0xBC */
+ __IO uint32_t BCR; /*!< I3C Bus Characteristics register, Address offset: 0xC0 */
+ __IO uint32_t DCR; /*!< I3C Device Characteristics register, Address offset: 0xC4 */
+ __IO uint32_t GETCAPR; /*!< I3C GET CAPabilities register, Address offset: 0xC8 */
+ __IO uint32_t CRCAPR; /*!< I3C Controller CAPabilities register, Address offset: 0xCC */
+ __IO uint32_t GETMXDSR; /*!< I3C GET Max Data Speed register, Address offset: 0xD0 */
+ __IO uint32_t EPIDR; /*!< I3C Extended Provisioned ID register, Address offset: 0xD4 */
+} I3C_TypeDef;
+
+/**
+ * @brief DAC
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DAC control register, Address offset: 0x00 */
+ __IO uint32_t SWTRIGR; /*!< DAC software trigger register, Address offset: 0x04 */
+ __IO uint32_t DHR12R1; /*!< DAC channel1 12-bit right-aligned data holding register, Address offset: 0x08 */
+ __IO uint32_t DHR12L1; /*!< DAC channel1 12-bit left aligned data holding register, Address offset: 0x0C */
+ __IO uint32_t DHR8R1; /*!< DAC channel1 8-bit right aligned data holding register, Address offset: 0x10 */
+ __IO uint32_t DHR12R2; /*!< DAC channel2 12-bit right aligned data holding register, Address offset: 0x14 */
+ __IO uint32_t DHR12L2; /*!< DAC channel2 12-bit left aligned data holding register, Address offset: 0x18 */
+ __IO uint32_t DHR8R2; /*!< DAC channel2 8-bit right-aligned data holding register, Address offset: 0x1C */
+ __IO uint32_t DHR12RD; /*!< Dual DAC 12-bit right-aligned data holding register, Address offset: 0x20 */
+ __IO uint32_t DHR12LD; /*!< DUAL DAC 12-bit left aligned data holding register, Address offset: 0x24 */
+ __IO uint32_t DHR8RD; /*!< DUAL DAC 8-bit right aligned data holding register, Address offset: 0x28 */
+ __IO uint32_t DOR1; /*!< DAC channel1 data output register, Address offset: 0x2C */
+ __IO uint32_t DOR2; /*!< DAC channel2 data output register, Address offset: 0x30 */
+ __IO uint32_t SR; /*!< DAC status register, Address offset: 0x34 */
+ __IO uint32_t CCR; /*!< DAC calibration control register, Address offset: 0x38 */
+ __IO uint32_t MCR; /*!< DAC mode control register, Address offset: 0x3C */
+ __IO uint32_t SHSR1; /*!< DAC Sample and Hold sample time register 1, Address offset: 0x40 */
+ __IO uint32_t SHSR2; /*!< DAC Sample and Hold sample time register 2, Address offset: 0x44 */
+ __IO uint32_t SHHR; /*!< DAC Sample and Hold hold time register, Address offset: 0x48 */
+ __IO uint32_t SHRR; /*!< DAC Sample and Hold refresh time register, Address offset: 0x4C */
+ __IO uint32_t RESERVED[1];
+ __IO uint32_t AUTOCR; /*!< DAC Autonomous mode register, Address offset: 0x54 */
+} DAC_TypeDef;
+
+/**
+ * @brief Clock Recovery System
+ */
+typedef struct
+{
+__IO uint32_t CR; /*!< CRS ccontrol register, Address offset: 0x00 */
+__IO uint32_t CFGR; /*!< CRS configuration register, Address offset: 0x04 */
+__IO uint32_t ISR; /*!< CRS interrupt and status register, Address offset: 0x08 */
+__IO uint32_t ICR; /*!< CRS interrupt flag clear register, Address offset: 0x0C */
+} CRS_TypeDef;
+
+
+/**
+ * @brief HASH
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< HASH control register, Address offset: 0x00 */
+ __IO uint32_t DIN; /*!< HASH data input register, Address offset: 0x04 */
+ __IO uint32_t STR; /*!< HASH start register, Address offset: 0x08 */
+ __IO uint32_t HR[5]; /*!< HASH digest registers, Address offset: 0x0C-0x1C */
+ __IO uint32_t IMR; /*!< HASH interrupt enable register, Address offset: 0x20 */
+ __IO uint32_t SR; /*!< HASH status register, Address offset: 0x24 */
+ uint32_t RESERVED[52]; /*!< Reserved, 0x28-0xF4 */
+ __IO uint32_t CSR[103]; /*!< HASH context swap registers, Address offset: 0x0F8-0x290 */
+} HASH_TypeDef;
+
+/**
+ * @brief HASH_DIGEST
+ */
+typedef struct
+{
+ __IO uint32_t HR[16]; /*!< HASH digest registers, Address offset: 0x310-0x34C */
+} HASH_DIGEST_TypeDef;
+
+/**
+ * @brief RNG
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< RNG control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< RNG status register, Address offset: 0x04 */
+ __IO uint32_t DR; /*!< RNG data register, Address offset: 0x08 */
+ __IO uint32_t NSCR; /*!< RNG noise source control register , Address offset: 0x0C */
+ __IO uint32_t HTCR; /*!< RNG health test configuration register, Address offset: 0x10 */
+} RNG_TypeDef;
+
+/**
+ * @brief Debug MCU
+ */
+typedef struct
+{
+ __IO uint32_t IDCODE; /*!< MCU device ID code, Address offset: 0x00 */
+ __IO uint32_t CR; /*!< Debug MCU configuration register, Address offset: 0x04 */
+ __IO uint32_t APB1FZR1; /*!< Debug MCU APB1 freeze register 1, Address offset: 0x08 */
+ __IO uint32_t APB1FZR2; /*!< Debug MCU APB1 freeze register 2, Address offset: 0x0C */
+ __IO uint32_t APB2FZR; /*!< Debug MCU APB2 freeze register, Address offset: 0x10 */
+ __IO uint32_t APB3FZR; /*!< Debug MCU APB3 freeze register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, 0x18 - 0x1C */
+ __IO uint32_t AHB1FZR; /*!< Debug MCU AHB1 freeze register, Address offset: 0x20 */
+ uint32_t RESERVED2[54]; /*!< Reserved, 0x24 - 0xF8 */
+ __IO uint32_t SR; /*!< Debug MCU SR register, Address offset: 0xFC */
+ __IO uint32_t DBG_AUTH_HOST; /*!< Debug DBG_AUTH_HOST register, Address offset: 0x100 */
+ __IO uint32_t DBG_AUTH_DEV; /*!< Debug DBG_AUTH_DEV register, Address offset: 0x104 */
+ __IO uint32_t DBG_AUTH_ACK; /*!< Debug DBG_AUTH_ACK register, Address offset: 0x108 */
+ uint32_t RESERVED3[945]; /*!< Reserved, 0x10C - 0xFCC */
+ __IO uint32_t PIDR4; /*!< Debug MCU Peripheral ID register 4, Address offset: 0xFD0 */
+ __IO uint32_t PIDR5; /*!< Debug MCU Peripheral ID register 5, Address offset: 0xFD4 */
+ __IO uint32_t PIDR6; /*!< Debug MCU Peripheral ID register 6, Address offset: 0xFD8 */
+ __IO uint32_t PIDR7; /*!< Debug MCU Peripheral ID register 7, Address offset: 0xFDC */
+ __IO uint32_t PIDR0; /*!< Debug MCU Peripheral ID register 0, Address offset: 0xFE0 */
+ __IO uint32_t PIDR1; /*!< Debug MCU Peripheral ID register 1, Address offset: 0xFE4 */
+ __IO uint32_t PIDR2; /*!< Debug MCU Peripheral ID register 2, Address offset: 0xFE8 */
+ __IO uint32_t PIDR3; /*!< Debug MCU Peripheral ID register 3, Address offset: 0xFEC */
+ __IO uint32_t CIDR0; /*!< Debug MCU Component ID register 0, Address offset: 0xFF0 */
+ __IO uint32_t CIDR1; /*!< Debug MCU Component ID register 1, Address offset: 0xFF4 */
+ __IO uint32_t CIDR2; /*!< Debug MCU Component ID register 2, Address offset: 0xFF8 */
+ __IO uint32_t CIDR3; /*!< Debug MCU Component ID register 3, Address offset: 0xFFC */
+} DBGMCU_TypeDef;
+
+/**
+ * @brief DCMI
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DCMI control register 1, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< DCMI status register, Address offset: 0x04 */
+ __IO uint32_t RISR; /*!< DCMI raw interrupt status register, Address offset: 0x08 */
+ __IO uint32_t IER; /*!< DCMI interrupt enable register, Address offset: 0x0C */
+ __IO uint32_t MISR; /*!< DCMI masked interrupt status register, Address offset: 0x10 */
+ __IO uint32_t ICR; /*!< DCMI interrupt clear register, Address offset: 0x14 */
+ __IO uint32_t ESCR; /*!< DCMI embedded synchronization code register, Address offset: 0x18 */
+ __IO uint32_t ESUR; /*!< DCMI embedded synchronization unmask register, Address offset: 0x1C */
+ __IO uint32_t CWSTRTR; /*!< DCMI crop window start, Address offset: 0x20 */
+ __IO uint32_t CWSIZER; /*!< DCMI crop window size, Address offset: 0x24 */
+ __IO uint32_t DR; /*!< DCMI data register, Address offset: 0x28 */
+} DCMI_TypeDef;
+
+/**
+ * @brief PSSI
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< PSSI control register, Address offset: 0x000 */
+ __IO uint32_t SR; /*!< PSSI status register, Address offset: 0x004 */
+ __IO uint32_t RIS; /*!< PSSI raw interrupt status register, Address offset: 0x008 */
+ __IO uint32_t IER; /*!< PSSI interrupt enable register, Address offset: 0x00C */
+ __IO uint32_t MIS; /*!< PSSI masked interrupt status register, Address offset: 0x010 */
+ __IO uint32_t ICR; /*!< PSSI interrupt clear register, Address offset: 0x014 */
+ __IO uint32_t RESERVED1[4]; /*!< Reserved, 0x018 - 0x024 */
+ __IO uint32_t DR; /*!< PSSI data register, Address offset: 0x028 */
+} PSSI_TypeDef;
+
+/**
+ * @brief DMA Controller
+ */
+typedef struct
+{
+ __IO uint32_t SECCFGR; /*!< DMA secure configuration register, Address offset: 0x00 */
+ __IO uint32_t PRIVCFGR; /*!< DMA privileged configuration register, Address offset: 0x04 */
+ __IO uint32_t RCFGLOCKR; /*!< DMA lock configuration register, Address offset: 0x08 */
+ __IO uint32_t MISR; /*!< DMA non secure masked interrupt status register, Address offset: 0x0C */
+ __IO uint32_t SMISR; /*!< DMA secure masked interrupt status register, Address offset: 0x10 */
+} DMA_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CLBAR; /*!< DMA channel x linked-list base address register, Address offset: 0x50 + (x * 0x80) */
+ uint32_t RESERVED1[2]; /*!< Reserved 1, Address offset: 0x54 -- 0x58 */
+ __IO uint32_t CFCR; /*!< DMA channel x flag clear register, Address offset: 0x5C + (x * 0x80) */
+ __IO uint32_t CSR; /*!< DMA channel x flag status register, Address offset: 0x60 + (x * 0x80) */
+ __IO uint32_t CCR; /*!< DMA channel x control register, Address offset: 0x64 + (x * 0x80) */
+ uint32_t RESERVED2[10];/*!< Reserved 2, Address offset: 0x68 -- 0x8C */
+ __IO uint32_t CTR1; /*!< DMA channel x transfer register 1, Address offset: 0x90 + (x * 0x80) */
+ __IO uint32_t CTR2; /*!< DMA channel x transfer register 2, Address offset: 0x94 + (x * 0x80) */
+ __IO uint32_t CBR1; /*!< DMA channel x block register 1, Address offset: 0x98 + (x * 0x80) */
+ __IO uint32_t CSAR; /*!< DMA channel x source address register, Address offset: 0x9C + (x * 0x80) */
+ __IO uint32_t CDAR; /*!< DMA channel x destination address register, Address offset: 0xA0 + (x * 0x80) */
+ __IO uint32_t CTR3; /*!< DMA channel x transfer register 3, Address offset: 0xA4 + (x * 0x80) */
+ __IO uint32_t CBR2; /*!< DMA channel x block register 2, Address offset: 0xA8 + (x * 0x80) */
+ uint32_t RESERVED3[8]; /*!< Reserved 3, Address offset: 0xAC -- 0xC8 */
+ __IO uint32_t CLLR; /*!< DMA channel x linked-list address register, Address offset: 0xCC + (x * 0x80) */
+} DMA_Channel_TypeDef;
+
+/**
+ * @brief Ethernet MAC
+ */
+typedef struct
+{
+ __IO uint32_t MACCR;
+ __IO uint32_t MACECR;
+ __IO uint32_t MACPFR;
+ __IO uint32_t MACWTR;
+ __IO uint32_t MACHT0R;
+ __IO uint32_t MACHT1R;
+ uint32_t RESERVED1[14];
+ __IO uint32_t MACVTR;
+ uint32_t RESERVED2;
+ __IO uint32_t MACVHTR;
+ uint32_t RESERVED3;
+ __IO uint32_t MACVIR;
+ __IO uint32_t MACIVIR;
+ uint32_t RESERVED4[2];
+ __IO uint32_t MACTFCR;
+ uint32_t RESERVED5[7];
+ __IO uint32_t MACRFCR;
+ uint32_t RESERVED6[7];
+ __IO uint32_t MACISR;
+ __IO uint32_t MACIER;
+ __IO uint32_t MACRXTXSR;
+ uint32_t RESERVED7;
+ __IO uint32_t MACPCSR;
+ __IO uint32_t MACRWKPFR;
+ uint32_t RESERVED8[2];
+ __IO uint32_t MACLCSR;
+ __IO uint32_t MACLTCR;
+ __IO uint32_t MACLETR;
+ __IO uint32_t MAC1USTCR;
+ uint32_t RESERVED9[12];
+ __IO uint32_t MACVR;
+ __IO uint32_t MACDR;
+ uint32_t RESERVED10;
+ __IO uint32_t MACHWF0R;
+ __IO uint32_t MACHWF1R;
+ __IO uint32_t MACHWF2R;
+ uint32_t RESERVED11[54];
+ __IO uint32_t MACMDIOAR;
+ __IO uint32_t MACMDIODR;
+ uint32_t RESERVED12[2];
+ __IO uint32_t MACARPAR;
+ uint32_t RESERVED13[59];
+ __IO uint32_t MACA0HR;
+ __IO uint32_t MACA0LR;
+ __IO uint32_t MACA1HR;
+ __IO uint32_t MACA1LR;
+ __IO uint32_t MACA2HR;
+ __IO uint32_t MACA2LR;
+ __IO uint32_t MACA3HR;
+ __IO uint32_t MACA3LR;
+ uint32_t RESERVED14[248];
+ __IO uint32_t MMCCR;
+ __IO uint32_t MMCRIR;
+ __IO uint32_t MMCTIR;
+ __IO uint32_t MMCRIMR;
+ __IO uint32_t MMCTIMR;
+ uint32_t RESERVED15[14];
+ __IO uint32_t MMCTSCGPR;
+ __IO uint32_t MMCTMCGPR;
+ uint32_t RESERVED16[5];
+ __IO uint32_t MMCTPCGR;
+ uint32_t RESERVED17[10];
+ __IO uint32_t MMCRCRCEPR;
+ __IO uint32_t MMCRAEPR;
+ uint32_t RESERVED18[10];
+ __IO uint32_t MMCRUPGR;
+ uint32_t RESERVED19[9];
+ __IO uint32_t MMCTLPIMSTR;
+ __IO uint32_t MMCTLPITCR;
+ __IO uint32_t MMCRLPIMSTR;
+ __IO uint32_t MMCRLPITCR;
+ uint32_t RESERVED20[65];
+ __IO uint32_t MACL3L4C0R;
+ __IO uint32_t MACL4A0R;
+ uint32_t RESERVED21[2];
+ __IO uint32_t MACL3A0R0R;
+ __IO uint32_t MACL3A1R0R;
+ __IO uint32_t MACL3A2R0R;
+ __IO uint32_t MACL3A3R0R;
+ uint32_t RESERVED22[4];
+ __IO uint32_t MACL3L4C1R;
+ __IO uint32_t MACL4A1R;
+ uint32_t RESERVED23[2];
+ __IO uint32_t MACL3A0R1R;
+ __IO uint32_t MACL3A1R1R;
+ __IO uint32_t MACL3A2R1R;
+ __IO uint32_t MACL3A3R1R;
+ uint32_t RESERVED24[108];
+ __IO uint32_t MACTSCR;
+ __IO uint32_t MACSSIR;
+ __IO uint32_t MACSTSR;
+ __IO uint32_t MACSTNR;
+ __IO uint32_t MACSTSUR;
+ __IO uint32_t MACSTNUR;
+ __IO uint32_t MACTSAR;
+ uint32_t RESERVED25;
+ __IO uint32_t MACTSSR;
+ uint32_t RESERVED26[3];
+ __IO uint32_t MACTTSSNR;
+ __IO uint32_t MACTTSSSR;
+ uint32_t RESERVED27[2];
+ __IO uint32_t MACACR;
+ uint32_t RESERVED28;
+ __IO uint32_t MACATSNR;
+ __IO uint32_t MACATSSR;
+ __IO uint32_t MACTSIACR;
+ __IO uint32_t MACTSEACR;
+ __IO uint32_t MACTSICNR;
+ __IO uint32_t MACTSECNR;
+ uint32_t RESERVED29[4];
+ __IO uint32_t MACPPSCR;
+ uint32_t RESERVED30[3];
+ __IO uint32_t MACPPSTTSR;
+ __IO uint32_t MACPPSTTNR;
+ __IO uint32_t MACPPSIR;
+ __IO uint32_t MACPPSWR;
+ uint32_t RESERVED31[12];
+ __IO uint32_t MACPOCR;
+ __IO uint32_t MACSPI0R;
+ __IO uint32_t MACSPI1R;
+ __IO uint32_t MACSPI2R;
+ __IO uint32_t MACLMIR;
+ uint32_t RESERVED32[11];
+ __IO uint32_t MTLOMR;
+ uint32_t RESERVED33[7];
+ __IO uint32_t MTLISR;
+ uint32_t RESERVED34[55];
+ __IO uint32_t MTLTQOMR;
+ __IO uint32_t MTLTQUR;
+ __IO uint32_t MTLTQDR;
+ uint32_t RESERVED35[8];
+ __IO uint32_t MTLQICSR;
+ __IO uint32_t MTLRQOMR;
+ __IO uint32_t MTLRQMPOCR;
+ __IO uint32_t MTLRQDR;
+ uint32_t RESERVED36[177];
+ __IO uint32_t DMAMR;
+ __IO uint32_t DMASBMR;
+ __IO uint32_t DMAISR;
+ __IO uint32_t DMADSR;
+ uint32_t RESERVED37[60];
+ __IO uint32_t DMACCR;
+ __IO uint32_t DMACTCR;
+ __IO uint32_t DMACRCR;
+ uint32_t RESERVED38[2];
+ __IO uint32_t DMACTDLAR;
+ uint32_t RESERVED39;
+ __IO uint32_t DMACRDLAR;
+ __IO uint32_t DMACTDTPR;
+ uint32_t RESERVED40;
+ __IO uint32_t DMACRDTPR;
+ __IO uint32_t DMACTDRLR;
+ __IO uint32_t DMACRDRLR;
+ __IO uint32_t DMACIER;
+ __IO uint32_t DMACRIWTR;
+ __IO uint32_t DMACSFCSR;
+ uint32_t RESERVED41;
+ __IO uint32_t DMACCATDR;
+ uint32_t RESERVED42;
+ __IO uint32_t DMACCARDR;
+ uint32_t RESERVED43;
+ __IO uint32_t DMACCATBR;
+ uint32_t RESERVED44;
+ __IO uint32_t DMACCARBR;
+ __IO uint32_t DMACSR;
+ uint32_t RESERVED45[2];
+ __IO uint32_t DMACMFCR;
+}ETH_TypeDef;
+
+/**
+ * @brief Asynch Interrupt/Event Controller (EXTI)
+ */
+typedef struct
+{
+ __IO uint32_t RTSR1; /*!< EXTI Rising Trigger Selection Register 1, Address offset: 0x00 */
+ __IO uint32_t FTSR1; /*!< EXTI Falling Trigger Selection Register 1, Address offset: 0x04 */
+ __IO uint32_t SWIER1; /*!< EXTI Software Interrupt event Register 1, Address offset: 0x08 */
+ __IO uint32_t RPR1; /*!< EXTI Rising Pending Register 1, Address offset: 0x0C */
+ __IO uint32_t FPR1; /*!< EXTI Falling Pending Register 1, Address offset: 0x10 */
+ __IO uint32_t SECCFGR1; /*!< EXTI Security Configuration Register 1, Address offset: 0x14 */
+ __IO uint32_t PRIVCFGR1; /*!< EXTI Privilege Configuration Register 1, Address offset: 0x18 */
+ uint32_t RESERVED1; /*!< Reserved 1, Address offset: 0x1C */
+ __IO uint32_t RTSR2; /*!< EXTI Rising Trigger Selection Register 2, Address offset: 0x20 */
+ __IO uint32_t FTSR2; /*!< EXTI Falling Trigger Selection Register 2, Address offset: 0x24 */
+ __IO uint32_t SWIER2; /*!< EXTI Software Interrupt event Register 2, Address offset: 0x28 */
+ __IO uint32_t RPR2; /*!< EXTI Rising Pending Register 2, Address offset: 0x2C */
+ __IO uint32_t FPR2; /*!< EXTI Falling Pending Register 2, Address offset: 0x30 */
+ __IO uint32_t SECCFGR2; /*!< EXTI Security Configuration Register 2, Address offset: 0x34 */
+ __IO uint32_t PRIVCFGR2; /*!< EXTI Privilege Configuration Register 2, Address offset: 0x38 */
+ uint32_t RESERVED2[9]; /*!< Reserved 2, 0x3C-- 0x5C */
+ __IO uint32_t EXTICR[4]; /*!< EXIT External Interrupt Configuration Register, 0x60 -- 0x6C */
+ __IO uint32_t LOCKR; /*!< EXTI Lock Register, Address offset: 0x70 */
+ uint32_t RESERVED3[3]; /*!< Reserved 3, 0x74 -- 0x7C */
+ __IO uint32_t IMR1; /*!< EXTI Interrupt Mask Register 1, Address offset: 0x80 */
+ __IO uint32_t EMR1; /*!< EXTI Event Mask Register 1, Address offset: 0x84 */
+ uint32_t RESERVED4[2]; /*!< Reserved 4, 0x88 -- 0x8C */
+ __IO uint32_t IMR2; /*!< EXTI Interrupt Mask Register 2, Address offset: 0x90 */
+ __IO uint32_t EMR2; /*!< EXTI Event Mask Register 2, Address offset: 0x94 */
+} EXTI_TypeDef;
+
+/**
+ * @brief FLASH Registers
+ */
+typedef struct
+{
+ __IO uint32_t ACR; /*!< FLASH access control register, Address offset: 0x00 */
+ __IO uint32_t NSKEYR; /*!< FLASH non-secure key register, Address offset: 0x04 */
+ __IO uint32_t SECKEYR; /*!< FLASH secure key register, Address offset: 0x08 */
+ __IO uint32_t OPTKEYR; /*!< FLASH option key register, Address offset: 0x0C */
+ __IO uint32_t NSOBKKEYR; /*!< FLASH non-secure option bytes keys key register, Address offset: 0x10 */
+ __IO uint32_t SECOBKKEYR; /*!< FLASH secure option bytes keys key register, Address offset: 0x14 */
+ __IO uint32_t OPSR; /*!< FLASH OPSR register, Address offset: 0x18 */
+ __IO uint32_t OPTCR; /*!< Flash Option Control Register, Address offset: 0x1C */
+ __IO uint32_t NSSR; /*!< FLASH non-secure status register, Address offset: 0x20 */
+ __IO uint32_t SECSR; /*!< FLASH secure status register, Address offset: 0x24 */
+ __IO uint32_t NSCR; /*!< FLASH non-secure control register, Address offset: 0x28 */
+ __IO uint32_t SECCR; /*!< FLASH secure control register, Address offset: 0x2C */
+ __IO uint32_t NSCCR; /*!< FLASH non-secure clear control register, Address offset: 0x30 */
+ __IO uint32_t SECCCR; /*!< FLASH secure clear control register, Address offset: 0x34 */
+ uint32_t RESERVED1; /*!< Reserved1, Address offset: 0x38 */
+ __IO uint32_t PRIVCFGR; /*!< FLASH privilege configuration register, Address offset: 0x3C */
+ __IO uint32_t NSOBKCFGR; /*!< FLASH non-secure option byte key configuration register, Address offset: 0x40 */
+ __IO uint32_t SECOBKCFGR; /*!< FLASH secure option byte key configuration register, Address offset: 0x44 */
+ __IO uint32_t HDPEXTR; /*!< FLASH HDP extension register, Address offset: 0x48 */
+ uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x4C */
+ __IO uint32_t OPTSR_CUR; /*!< FLASH option status current register, Address offset: 0x50 */
+ __IO uint32_t OPTSR_PRG; /*!< FLASH option status to program register, Address offset: 0x54 */
+ uint32_t RESERVED3[2]; /*!< Reserved3, Address offset: 0x58-0x5C */
+ __IO uint32_t NSEPOCHR_CUR; /*!< FLASH non-secure epoch current register, Address offset: 0x60 */
+ __IO uint32_t NSEPOCHR_PRG; /*!< FLASH non-secure epoch to program register, Address offset: 0x64 */
+ __IO uint32_t SECEPOCHR_CUR; /*!< FLASH secure epoch current register, Address offset: 0x68 */
+ __IO uint32_t SECEPOCHR_PRG; /*!< FLASH secure epoch to program register, Address offset: 0x6C */
+ __IO uint32_t OPTSR2_CUR; /*!< FLASH option status current register 2, Address offset: 0x70 */
+ __IO uint32_t OPTSR2_PRG; /*!< FLASH option status to program register 2, Address offset: 0x74 */
+ uint32_t RESERVED4[2]; /*!< Reserved4, Address offset: 0x78-0x7C */
+ __IO uint32_t NSBOOTR_CUR; /*!< FLASH non-secure unique boot entry current register, Address offset: 0x80 */
+ __IO uint32_t NSBOOTR_PRG; /*!< FLASH non-secure unique boot entry to program register, Address offset: 0x84 */
+ __IO uint32_t SECBOOTR_CUR; /*!< FLASH secure unique boot entry current register, Address offset: 0x88 */
+ __IO uint32_t SECBOOTR_PRG; /*!< FLASH secure unique boot entry to program register, Address offset: 0x8C */
+ __IO uint32_t OTPBLR_CUR; /*!< FLASH OTP block lock current register, Address offset: 0x90 */
+ __IO uint32_t OTPBLR_PRG; /*!< FLASH OTP block Lock to program register, Address offset: 0x94 */
+ uint32_t RESERVED5[2]; /*!< Reserved5, Address offset: 0x98-0x9C */
+ __IO uint32_t SECBB1R1; /*!< FLASH secure block-based bank 1 register 1, Address offset: 0xA0 */
+ __IO uint32_t SECBB1R2; /*!< FLASH secure block-based bank 1 register 2, Address offset: 0xA4 */
+ __IO uint32_t SECBB1R3; /*!< FLASH secure block-based bank 1 register 3, Address offset: 0xA8 */
+ __IO uint32_t SECBB1R4; /*!< FLASH secure block-based bank 1 register 4, Address offset: 0xAC */
+ uint32_t RESERVED6[4]; /*!< Reserved6, Address offset: 0xB0-0xBC */
+ __IO uint32_t PRIVBB1R1; /*!< FLASH privilege block-based bank 1 register 1, Address offset: 0xC0 */
+ __IO uint32_t PRIVBB1R2; /*!< FLASH privilege block-based bank 1 register 2, Address offset: 0xC4 */
+ __IO uint32_t PRIVBB1R3; /*!< FLASH privilege block-based bank 1 register 3, Address offset: 0xC8 */
+ __IO uint32_t PRIVBB1R4; /*!< FLASH privilege block-based bank 1 register 4, Address offset: 0xCC */
+ uint32_t RESERVED7[4]; /*!< Reserved7, Address offset: 0xD0-0xDC */
+ __IO uint32_t SECWM1R_CUR; /*!< FLASH secure watermark 1 current register, Address offset: 0xE0 */
+ __IO uint32_t SECWM1R_PRG; /*!< FLASH secure watermark 1 to program register, Address offset: 0xE4 */
+ __IO uint32_t WRP1R_CUR; /*!< FLASH write sector group protection current register for bank1, Address offset: 0xE8 */
+ __IO uint32_t WRP1R_PRG; /*!< FLASH write sector group protection to program register for bank1, Address offset: 0xEC */
+ __IO uint32_t EDATA1R_CUR; /*!< FLASH data sectors configuration current register for bank1, Address offset: 0xF0 */
+ __IO uint32_t EDATA1R_PRG; /*!< FLASH data sectors configuration to program register for bank1, Address offset: 0xF4 */
+ __IO uint32_t HDP1R_CUR; /*!< FLASH HDP configuration current register for bank1, Address offset: 0xF8 */
+ __IO uint32_t HDP1R_PRG; /*!< FLASH HDP configuration to program register for bank1, Address offset: 0xFC */
+ __IO uint32_t ECCCORR; /*!< FLASH ECC correction register, Address offset: 0x100 */
+ __IO uint32_t ECCDETR; /*!< FLASH ECC detection register, Address offset: 0x104 */
+ __IO uint32_t ECCDR; /*!< FLASH ECC data register, Address offset: 0x108 */
+ uint32_t RESERVED8[37]; /*!< Reserved8, Address offset: 0x10C-0x19C */
+ __IO uint32_t SECBB2R1; /*!< FLASH secure block-based bank 2 register 1, Address offset: 0x1A0 */
+ __IO uint32_t SECBB2R2; /*!< FLASH secure block-based bank 2 register 2, Address offset: 0x1A4 */
+ __IO uint32_t SECBB2R3; /*!< FLASH secure block-based bank 2 register 3, Address offset: 0x1A8 */
+ __IO uint32_t SECBB2R4; /*!< FLASH secure block-based bank 2 register 4, Address offset: 0x1AC */
+ uint32_t RESERVED9[4]; /*!< Reserved9, Address offset: 0x1B0-0x1BC */
+ __IO uint32_t PRIVBB2R1; /*!< FLASH privilege block-based bank 2 register 1, Address offset: 0x1C0 */
+ __IO uint32_t PRIVBB2R2; /*!< FLASH privilege block-based bank 2 register 2, Address offset: 0x1C4 */
+ __IO uint32_t PRIVBB2R3; /*!< FLASH privilege block-based bank 2 register 3, Address offset: 0x1C8 */
+ __IO uint32_t PRIVBB2R4; /*!< FLASH privilege block-based bank 2 register 4, Address offset: 0x1CC */
+ uint32_t RESERVED10[4]; /*!< Reserved10, Address offset: 0x1D0-0x1DC */
+ __IO uint32_t SECWM2R_CUR; /*!< FLASH secure watermark 2 current register, Address offset: 0x1E0 */
+ __IO uint32_t SECWM2R_PRG; /*!< FLASH secure watermark 2 to program register, Address offset: 0x1E4 */
+ __IO uint32_t WRP2R_CUR; /*!< FLASH write sector group protection current register for bank2, Address offset: 0x1E8 */
+ __IO uint32_t WRP2R_PRG; /*!< FLASH write sector group protection to program register for bank2, Address offset: 0x1EC */
+ __IO uint32_t EDATA2R_CUR; /*!< FLASH data sectors configuration current register for bank2, Address offset: 0x1F0 */
+ __IO uint32_t EDATA2R_PRG; /*!< FLASH data sectors configuration to program register for bank2, Address offset: 0x1F4 */
+ __IO uint32_t HDP2R_CUR; /*!< FLASH HDP configuration current register for bank2, Address offset: 0x1F8 */
+ __IO uint32_t HDP2R_PRG; /*!< FLASH HDP configuration to program register for bank2, Address offset: 0x1FC */
+} FLASH_TypeDef;
+
+/**
+ * @brief FMAC
+ */
+typedef struct
+{
+ __IO uint32_t X1BUFCFG; /*!< FMAC X1 Buffer Configuration register, Address offset: 0x00 */
+ __IO uint32_t X2BUFCFG; /*!< FMAC X2 Buffer Configuration register, Address offset: 0x04 */
+ __IO uint32_t YBUFCFG; /*!< FMAC Y Buffer Configuration register, Address offset: 0x08 */
+ __IO uint32_t PARAM; /*!< FMAC Parameter register, Address offset: 0x0C */
+ __IO uint32_t CR; /*!< FMAC Control register, Address offset: 0x10 */
+ __IO uint32_t SR; /*!< FMAC Status register, Address offset: 0x14 */
+ __IO uint32_t WDATA; /*!< FMAC Write Data register, Address offset: 0x18 */
+ __IO uint32_t RDATA; /*!< FMAC Read Data register, Address offset: 0x1C */
+} FMAC_TypeDef;
+
+/**
+ * @brief General Purpose I/O
+ */
+typedef struct
+{
+ __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */
+ __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */
+ __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */
+ __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */
+ __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */
+ __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */
+ __IO uint32_t BSRR; /*!< GPIO port bit set/reset register, Address offset: 0x18 */
+ __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */
+ __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */
+ __IO uint32_t BRR; /*!< GPIO Bit Reset register, Address offset: 0x28 */
+ __IO uint32_t HSLVR; /*!< GPIO high-speed low voltage register, Address offset: 0x2C */
+ __IO uint32_t SECCFGR; /*!< GPIO secure configuration register, Address offset: 0x30 */
+} GPIO_TypeDef;
+
+/**
+ * @brief Global TrustZone Controller
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< TZSC control register, Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved1, Address offset: 0x04-0x0C */
+ __IO uint32_t SECCFGR1; /*!< TZSC secure configuration register 1, Address offset: 0x10 */
+ __IO uint32_t SECCFGR2; /*!< TZSC secure configuration register 2, Address offset: 0x14 */
+ __IO uint32_t SECCFGR3; /*!< TZSC secure configuration register 3, Address offset: 0x18 */
+ uint32_t RESERVED2; /*!< Reserved2, Address offset: 0x1C */
+ __IO uint32_t PRIVCFGR1; /*!< TZSC privilege configuration register 1, Address offset: 0x20 */
+ __IO uint32_t PRIVCFGR2; /*!< TZSC privilege configuration register 2, Address offset: 0x24 */
+ __IO uint32_t PRIVCFGR3; /*!< TZSC privilege configuration register 3, Address offset: 0x28 */
+ uint32_t RESERVED3[5]; /*!< Reserved3, Address offset: 0x2C-0x3C */
+ __IO uint32_t MPCWM1ACFGR; /*!< TZSC memory 1 sub-region A watermark configuration register, Address offset: 0x40 */
+ __IO uint32_t MPCWM1AR; /*!< TZSC memory 1 sub-region A watermark register, Address offset: 0x44 */
+ __IO uint32_t MPCWM1BCFGR; /*!< TZSC memory 1 sub-region B watermark configuration register, Address offset: 0x48 */
+ __IO uint32_t MPCWM1BR; /*!< TZSC memory 1 sub-region B watermark register, Address offset: 0x4C */
+ __IO uint32_t MPCWM2ACFGR; /*!< TZSC memory 2 sub-region A watermark configuration register, Address offset: 0x50 */
+ __IO uint32_t MPCWM2AR; /*!< TZSC memory 2 sub-region A watermark register, Address offset: 0x54 */
+ __IO uint32_t MPCWM2BCFGR; /*!< TZSC memory 2 sub-region B watermark configuration register, Address offset: 0x58 */
+ __IO uint32_t MPCWM2BR; /*!< TZSC memory 2 sub-region B watermark register, Address offset: 0x5C */
+ __IO uint32_t MPCWM3ACFGR; /*!< TZSC memory 3 sub-region A watermark configuration register, Address offset: 0x60 */
+ __IO uint32_t MPCWM3AR; /*!< TZSC memory 3 sub-region A watermark register, Address offset: 0x64 */
+ __IO uint32_t MPCWM3BCFGR; /*!< TZSC memory 3 sub-region B watermark configuration register, Address offset: 0x68 */
+ __IO uint32_t MPCWM3BR; /*!< TZSC memory 3 sub-region B watermark register, Address offset: 0x6C */
+ __IO uint32_t MPCWM4ACFGR; /*!< TZSC memory 4 sub-region A watermark configuration register, Address offset: 0x70 */
+ __IO uint32_t MPCWM4AR; /*!< TZSC memory 4 sub-region A watermark register, Address offset: 0x74 */
+ __IO uint32_t MPCWM4BCFGR; /*!< TZSC memory 4 sub-region B watermark configuration register, Address offset: 0x78 */
+ __IO uint32_t MPCWM4BR; /*!< TZSC memory 4 sub-region B watermark register, Address offset: 0x7c */
+} GTZC_TZSC_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< MPCBBx control register, Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved1, Address offset: 0x04-0x0C */
+ __IO uint32_t CFGLOCKR1; /*!< MPCBBx lock register, Address offset: 0x10 */
+ uint32_t RESERVED2[59]; /*!< Reserved2, Address offset: 0x14-0xFC */
+ __IO uint32_t SECCFGR[32]; /*!< MPCBBx security configuration registers, Address offset: 0x100-0x17C */
+ uint32_t RESERVED3[32]; /*!< Reserved3, Address offset: 0x180-0x1FC */
+ __IO uint32_t PRIVCFGR[32]; /*!< MPCBBx privilege configuration registers, Address offset: 0x200-0x280 */
+} GTZC_MPCBB_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t IER1; /*!< TZIC interrupt enable register 1, Address offset: 0x00 */
+ __IO uint32_t IER2; /*!< TZIC interrupt enable register 2, Address offset: 0x04 */
+ __IO uint32_t IER3; /*!< TZIC interrupt enable register 3, Address offset: 0x08 */
+ __IO uint32_t IER4; /*!< TZIC interrupt enable register 4, Address offset: 0x0C */
+ __IO uint32_t SR1; /*!< TZIC status register 1, Address offset: 0x10 */
+ __IO uint32_t SR2; /*!< TZIC status register 2, Address offset: 0x14 */
+ __IO uint32_t SR3; /*!< TZIC status register 3, Address offset: 0x18 */
+ __IO uint32_t SR4; /*!< TZIC status register 4, Address offset: 0x1C */
+ __IO uint32_t FCR1; /*!< TZIC flag clear register 1, Address offset: 0x20 */
+ __IO uint32_t FCR2; /*!< TZIC flag clear register 2, Address offset: 0x24 */
+ __IO uint32_t FCR3; /*!< TZIC flag clear register 3, Address offset: 0x28 */
+ __IO uint32_t FCR4; /*!< TZIC flag clear register 3, Address offset: 0x2C */
+} GTZC_TZIC_TypeDef;
+
+/**
+ * @brief Instruction Cache
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< ICACHE control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< ICACHE status register, Address offset: 0x04 */
+ __IO uint32_t IER; /*!< ICACHE interrupt enable register, Address offset: 0x08 */
+ __IO uint32_t FCR; /*!< ICACHE Flag clear register, Address offset: 0x0C */
+ __IO uint32_t HMONR; /*!< ICACHE hit monitor register, Address offset: 0x10 */
+ __IO uint32_t MMONR; /*!< ICACHE miss monitor register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x018-0x01C */
+ __IO uint32_t CRR0; /*!< ICACHE region 0 configuration register, Address offset: 0x20 */
+ __IO uint32_t CRR1; /*!< ICACHE region 1 configuration register, Address offset: 0x24 */
+ __IO uint32_t CRR2; /*!< ICACHE region 2 configuration register, Address offset: 0x28 */
+ __IO uint32_t CRR3; /*!< ICACHE region 3 configuration register, Address offset: 0x2C */
+} ICACHE_TypeDef;
+
+/**
+ * @brief Data Cache
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< DCACHE control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< DCACHE status register, Address offset: 0x04 */
+ __IO uint32_t IER; /*!< DCACHE interrupt enable register, Address offset: 0x08 */
+ __IO uint32_t FCR; /*!< DCACHE Flag clear register, Address offset: 0x0C */
+ __IO uint32_t RHMONR; /*!< DCACHE Read hit monitor register, Address offset: 0x10 */
+ __IO uint32_t RMMONR; /*!< DCACHE Read miss monitor register, Address offset: 0x14 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x18-0x1C */
+ __IO uint32_t WHMONR; /*!< DCACHE Write hit monitor register, Address offset: 0x20 */
+ __IO uint32_t WMMONR; /*!< DCACHE Write miss monitor register, Address offset: 0x24 */
+ __IO uint32_t CMDRSADDRR; /*!< DCACHE Command Start Address register, Address offset: 0x28 */
+ __IO uint32_t CMDREADDRR; /*!< DCACHE Command End Address register, Address offset: 0x2C */
+} DCACHE_TypeDef;
+
+/**
+ * @brief TIM
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< TIM control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< TIM control register 2, Address offset: 0x04 */
+ __IO uint32_t SMCR; /*!< TIM slave mode control register, Address offset: 0x08 */
+ __IO uint32_t DIER; /*!< TIM DMA/interrupt enable register, Address offset: 0x0C */
+ __IO uint32_t SR; /*!< TIM status register, Address offset: 0x10 */
+ __IO uint32_t EGR; /*!< TIM event generation register, Address offset: 0x14 */
+ __IO uint32_t CCMR1; /*!< TIM capture/compare mode register 1, Address offset: 0x18 */
+ __IO uint32_t CCMR2; /*!< TIM capture/compare mode register 2, Address offset: 0x1C */
+ __IO uint32_t CCER; /*!< TIM capture/compare enable register, Address offset: 0x20 */
+ __IO uint32_t CNT; /*!< TIM counter register, Address offset: 0x24 */
+ __IO uint32_t PSC; /*!< TIM prescaler, Address offset: 0x28 */
+ __IO uint32_t ARR; /*!< TIM auto-reload register, Address offset: 0x2C */
+ __IO uint32_t RCR; /*!< TIM repetition counter register, Address offset: 0x30 */
+ __IO uint32_t CCR1; /*!< TIM capture/compare register 1, Address offset: 0x34 */
+ __IO uint32_t CCR2; /*!< TIM capture/compare register 2, Address offset: 0x38 */
+ __IO uint32_t CCR3; /*!< TIM capture/compare register 3, Address offset: 0x3C */
+ __IO uint32_t CCR4; /*!< TIM capture/compare register 4, Address offset: 0x40 */
+ __IO uint32_t BDTR; /*!< TIM break and dead-time register, Address offset: 0x44 */
+ __IO uint32_t CCR5; /*!< TIM capture/compare register 5, Address offset: 0x48 */
+ __IO uint32_t CCR6; /*!< TIM capture/compare register 6, Address offset: 0x4C */
+ __IO uint32_t CCMR3; /*!< TIM capture/compare mode register 3, Address offset: 0x50 */
+ __IO uint32_t DTR2; /*!< TIM deadtime register 2, Address offset: 0x54 */
+ __IO uint32_t ECR; /*!< TIM encoder control register, Address offset: 0x58 */
+ __IO uint32_t TISEL; /*!< TIM Input Selection register, Address offset: 0x5C */
+ __IO uint32_t AF1; /*!< TIM alternate function option register 1, Address offset: 0x60 */
+ __IO uint32_t AF2; /*!< TIM alternate function option register 2, Address offset: 0x64 */
+ __IO uint32_t OR1 ; /*!< TIM option register, Address offset: 0x68 */
+ uint32_t RESERVED0[220];/*!< Reserved, Address offset: 0x6C */
+ __IO uint32_t DCR; /*!< TIM DMA control register, Address offset: 0x3DC */
+ __IO uint32_t DMAR; /*!< TIM DMA address for full transfer, Address offset: 0x3E0 */
+} TIM_TypeDef;
+
+/**
+ * @brief LPTIMER
+ */
+typedef struct
+{
+ __IO uint32_t ISR; /*!< LPTIM Interrupt and Status register, Address offset: 0x00 */
+ __IO uint32_t ICR; /*!< LPTIM Interrupt Clear register, Address offset: 0x04 */
+ __IO uint32_t DIER; /*!< LPTIM Interrupt Enable register, Address offset: 0x08 */
+ __IO uint32_t CFGR; /*!< LPTIM Configuration register, Address offset: 0x0C */
+ __IO uint32_t CR; /*!< LPTIM Control register, Address offset: 0x10 */
+ __IO uint32_t CCR1; /*!< LPTIM Capture/Compare register 1, Address offset: 0x14 */
+ __IO uint32_t ARR; /*!< LPTIM Autoreload register, Address offset: 0x18 */
+ __IO uint32_t CNT; /*!< LPTIM Counter register, Address offset: 0x1C */
+ __IO uint32_t RESERVED0; /*!< Reserved, Address offset: 0x20 */
+ __IO uint32_t CFGR2; /*!< LPTIM Configuration register 2, Address offset: 0x24 */
+ __IO uint32_t RCR; /*!< LPTIM Repetition register, Address offset: 0x28 */
+ __IO uint32_t CCMR1; /*!< LPTIM Capture/Compare mode register, Address offset: 0x2C */
+ __IO uint32_t RESERVED1; /*!< Reserved, Address offset: 0x30 */
+ __IO uint32_t CCR2; /*!< LPTIM Capture/Compare register 2, Address offset: 0x34 */
+} LPTIM_TypeDef;
+
+/**
+ * @brief OCTO Serial Peripheral Interface
+ */
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< OCTOSPI Control register, Address offset: 0x000 */
+ uint32_t RESERVED; /*!< Reserved, Address offset: 0x004 */
+ __IO uint32_t DCR1; /*!< OCTOSPI Device Configuration register 1, Address offset: 0x008 */
+ __IO uint32_t DCR2; /*!< OCTOSPI Device Configuration register 2, Address offset: 0x00C */
+ __IO uint32_t DCR3; /*!< OCTOSPI Device Configuration register 3, Address offset: 0x010 */
+ __IO uint32_t DCR4; /*!< OCTOSPI Device Configuration register 4, Address offset: 0x014 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x018-0x01C */
+ __IO uint32_t SR; /*!< OCTOSPI Status register, Address offset: 0x020 */
+ __IO uint32_t FCR; /*!< OCTOSPI Flag Clear register, Address offset: 0x024 */
+ uint32_t RESERVED2[6]; /*!< Reserved, Address offset: 0x028-0x03C */
+ __IO uint32_t DLR; /*!< OCTOSPI Data Length register, Address offset: 0x040 */
+ uint32_t RESERVED3; /*!< Reserved, Address offset: 0x044 */
+ __IO uint32_t AR; /*!< OCTOSPI Address register, Address offset: 0x048 */
+ uint32_t RESERVED4; /*!< Reserved, Address offset: 0x04C */
+ __IO uint32_t DR; /*!< OCTOSPI Data register, Address offset: 0x050 */
+ uint32_t RESERVED5[11]; /*!< Reserved, Address offset: 0x054-0x07C */
+ __IO uint32_t PSMKR; /*!< OCTOSPI Polling Status Mask register, Address offset: 0x080 */
+ uint32_t RESERVED6; /*!< Reserved, Address offset: 0x084 */
+ __IO uint32_t PSMAR; /*!< OCTOSPI Polling Status Match register, Address offset: 0x088 */
+ uint32_t RESERVED7; /*!< Reserved, Address offset: 0x08C */
+ __IO uint32_t PIR; /*!< OCTOSPI Polling Interval register, Address offset: 0x090 */
+ uint32_t RESERVED8[27]; /*!< Reserved, Address offset: 0x094-0x0FC */
+ __IO uint32_t CCR; /*!< OCTOSPI Communication Configuration register, Address offset: 0x100 */
+ uint32_t RESERVED9; /*!< Reserved, Address offset: 0x104 */
+ __IO uint32_t TCR; /*!< OCTOSPI Timing Configuration register, Address offset: 0x108 */
+ uint32_t RESERVED10; /*!< Reserved, Address offset: 0x10C */
+ __IO uint32_t IR; /*!< OCTOSPI Instruction register, Address offset: 0x110 */
+ uint32_t RESERVED11[3]; /*!< Reserved, Address offset: 0x114-0x11C */
+ __IO uint32_t ABR; /*!< OCTOSPI Alternate Bytes register, Address offset: 0x120 */
+ uint32_t RESERVED12[3]; /*!< Reserved, Address offset: 0x124-0x12C */
+ __IO uint32_t LPTR; /*!< OCTOSPI Low Power Timeout register, Address offset: 0x130 */
+ uint32_t RESERVED13[3]; /*!< Reserved, Address offset: 0x134-0x13C */
+ __IO uint32_t WPCCR; /*!< OCTOSPI Wrap Communication Configuration register, Address offset: 0x140 */
+ uint32_t RESERVED14; /*!< Reserved, Address offset: 0x144 */
+ __IO uint32_t WPTCR; /*!< OCTOSPI Wrap Timing Configuration register, Address offset: 0x148 */
+ uint32_t RESERVED15; /*!< Reserved, Address offset: 0x14C */
+ __IO uint32_t WPIR; /*!< OCTOSPI Wrap Instruction register, Address offset: 0x150 */
+ uint32_t RESERVED16[3]; /*!< Reserved, Address offset: 0x154-0x15C */
+ __IO uint32_t WPABR; /*!< OCTOSPI Wrap Alternate Bytes register, Address offset: 0x160 */
+ uint32_t RESERVED17[7]; /*!< Reserved, Address offset: 0x164-0x17C */
+ __IO uint32_t WCCR; /*!< OCTOSPI Write Communication Configuration register, Address offset: 0x180 */
+ uint32_t RESERVED18; /*!< Reserved, Address offset: 0x184 */
+ __IO uint32_t WTCR; /*!< OCTOSPI Write Timing Configuration register, Address offset: 0x188 */
+ uint32_t RESERVED19; /*!< Reserved, Address offset: 0x18C */
+ __IO uint32_t WIR; /*!< OCTOSPI Write Instruction register, Address offset: 0x190 */
+ uint32_t RESERVED20[3]; /*!< Reserved, Address offset: 0x194-0x19C */
+ __IO uint32_t WABR; /*!< OCTOSPI Write Alternate Bytes register, Address offset: 0x1A0 */
+ uint32_t RESERVED21[23]; /*!< Reserved, Address offset: 0x1A4-0x1FC */
+ __IO uint32_t HLCR; /*!< OCTOSPI Hyperbus Latency Configuration register, Address offset: 0x200 */
+} XSPI_TypeDef;
+
+typedef XSPI_TypeDef OCTOSPI_TypeDef;
+
+/**
+ * @brief Power Control
+ */
+typedef struct
+{
+ __IO uint32_t PMCR; /*!< Power mode control register , Address offset: 0x00 */
+ __IO uint32_t PMSR; /*!< Power mode status register , Address offset: 0x04 */
+ uint32_t RESERVED1[2]; /*!< Reserved, Address offset: 0x08-0x0C */
+ __IO uint32_t VOSCR; /*!< Voltage scaling control register , Address offset: 0x10 */
+ __IO uint32_t VOSSR; /*!< Voltage sacling status register , Address offset: 0x14 */
+ uint32_t RESERVED2[2]; /*!< Reserved, Address offset: 0x18-0x1C */
+ __IO uint32_t BDCR; /*!< BacKup domain control register , Address offset: 0x20 */
+ __IO uint32_t DBPCR; /*!< DBP control register, Address offset: 0x24 */
+ __IO uint32_t BDSR; /*!< BacKup domain status register, Address offset: 0x28 */
+ __IO uint32_t UCPDR; /*!< Usb typeC and Power Delivery Register, Address offset: 0x2C */
+ __IO uint32_t SCCR; /*!< Supply configuration control register, Address offset: 0x30 */
+ __IO uint32_t VMCR; /*!< Voltage Monitor Control Register, Address offset: 0x34 */
+ __IO uint32_t USBSCR; /*!< USB Supply Control Register Address offset: 0x38 */
+ __IO uint32_t VMSR; /*!< Status Register Voltage Monitoring, Address offset: 0x3C */
+ __IO uint32_t WUSCR; /*!< WakeUP status clear register, Address offset: 0x40 */
+ __IO uint32_t WUSR; /*!< WakeUP status Register, Address offset: 0x44 */
+ __IO uint32_t WUCR; /*!< WakeUP configuration register, Address offset: 0x48 */
+ uint32_t RESERVED3; /*!< Reserved, Address offset: 0x4C */
+ __IO uint32_t IORETR; /*!< IO RETention Register, Address offset: 0x50 */
+ uint32_t RESERVED4[43];/*!< Reserved, Address offset: 0x54-0xFC */
+ __IO uint32_t SECCFGR; /*!< Security configuration register, Address offset: 0x100 */
+ __IO uint32_t PRIVCFGR; /*!< Privilege configuration register, Address offset: 0x104 */
+}PWR_TypeDef;
+
+/**
+ * @brief SRAMs configuration controller
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< Control Register, Address offset: 0x00 */
+ __IO uint32_t IER; /*!< Interrupt Enable Register, Address offset: 0x04 */
+ __IO uint32_t ISR; /*!< Interrupt Status Register, Address offset: 0x08 */
+ __IO uint32_t SEAR; /*!< ECC Single Error Address Register, Address offset: 0x0C */
+ __IO uint32_t DEAR; /*!< ECC Double Error Address Register, Address offset: 0x10 */
+ __IO uint32_t ICR; /*!< Interrupt Clear Register, Address offset: 0x14 */
+ __IO uint32_t WPR1; /*!< SRAM Write Protection Register 1, Address offset: 0x18 */
+ __IO uint32_t WPR2; /*!< SRAM Write Protection Register 2, Address offset: 0x1C */
+ uint32_t RESERVED; /*!< Reserved, Address offset: 0x20 */
+ __IO uint32_t ECCKEY; /*!< SRAM ECC Key Register, Address offset: 0x24 */
+ __IO uint32_t ERKEYR; /*!< SRAM Erase Key Register, Address offset: 0x28 */
+}RAMCFG_TypeDef;
+
+/**
+ * @brief Reset and Clock Control
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< RCC clock control register Address offset: 0x00 */
+ uint32_t RESERVED1[3]; /*!< Reserved, Address offset: 0x04 */
+ __IO uint32_t HSICFGR; /*!< RCC HSI Clock Calibration Register, Address offset: 0x10 */
+ __IO uint32_t CRRCR; /*!< RCC Clock Recovery RC Register, Address offset: 0x14 */
+ __IO uint32_t CSICFGR; /*!< RCC CSI Clock Calibration Register, Address offset: 0x18 */
+ __IO uint32_t CFGR1; /*!< RCC clock configuration register 1 Address offset: 0x1C */
+ __IO uint32_t CFGR2; /*!< RCC clock configuration register 2 Address offset: 0x20 */
+ uint32_t RESERVED2; /*!< Reserved, Address offset: 0x24 */
+ __IO uint32_t PLL1CFGR; /*!< RCC PLL1 Configuration Register Address offset: 0x28 */
+ __IO uint32_t PLL2CFGR; /*!< RCC PLL2 Configuration Register Address offset: 0x2C */
+ __IO uint32_t PLL3CFGR; /*!< RCC PLL3 Configuration Register Address offset: 0x30 */
+ __IO uint32_t PLL1DIVR; /*!< RCC PLL1 Dividers Configuration Register Address offset: 0x34 */
+ __IO uint32_t PLL1FRACR; /*!< RCC PLL1 Fractional Divider Configuration Register Address offset: 0x38 */
+ __IO uint32_t PLL2DIVR; /*!< RCC PLL2 Dividers Configuration Register Address offset: 0x3C */
+ __IO uint32_t PLL2FRACR; /*!< RCC PLL2 Fractional Divider Configuration Register Address offset: 0x40 */
+ __IO uint32_t PLL3DIVR; /*!< RCC PLL3 Dividers Configuration Register Address offset: 0x44 */
+ __IO uint32_t PLL3FRACR; /*!< RCC PLL3 Fractional Divider Configuration Register Address offset: 0x48 */
+ uint32_t RESERVED5; /*!< Reserved Address offset: 0x4C */
+ __IO uint32_t CIER; /*!< RCC Clock Interrupt Enable Register Address offset: 0x50 */
+ __IO uint32_t CIFR; /*!< RCC Clock Interrupt Flag Register Address offset: 0x54 */
+ __IO uint32_t CICR; /*!< RCC Clock Interrupt Clear Register Address offset: 0x58 */
+ uint32_t RESERVED6; /*!< Reserved Address offset: 0x5C */
+ __IO uint32_t AHB1RSTR; /*!< RCC AHB1 Peripherals Reset Register Address offset: 0x60 */
+ __IO uint32_t AHB2RSTR; /*!< RCC AHB2 Peripherals Reset Register Address offset: 0x64 */
+ uint32_t RESERVED7; /*!< Reserved Address offset: 0x68 */
+ __IO uint32_t AHB4RSTR; /*!< RCC AHB4 Peripherals Reset Register Address offset: 0x6C */
+ uint32_t RESERVED9; /*!< Reserved Address offset: 0x70 */
+ __IO uint32_t APB1LRSTR; /*!< RCC APB1 Peripherals reset Low Word register Address offset: 0x74 */
+ __IO uint32_t APB1HRSTR; /*!< RCC APB1 Peripherals reset High Word register Address offset: 0x78 */
+ __IO uint32_t APB2RSTR; /*!< RCC APB2 Peripherals Reset Register Address offset: 0x7C */
+ __IO uint32_t APB3RSTR; /*!< RCC APB3 Peripherals Reset Register Address offset: 0x80 */
+ uint32_t RESERVED10; /*!< Reserved Address offset: 0x84 */
+ __IO uint32_t AHB1ENR; /*!< RCC AHB1 Peripherals Clock Enable Register Address offset: 0x88 */
+ __IO uint32_t AHB2ENR; /*!< RCC AHB2 Peripherals Clock Enable Register Address offset: 0x8C */
+ uint32_t RESERVED11; /*!< Reserved Address offset: 0x90 */
+ __IO uint32_t AHB4ENR; /*!< RCC AHB4 Peripherals Clock Enable Register Address offset: 0x94 */
+ uint32_t RESERVED13; /*!< Reserved Address offset: 0x98 */
+ __IO uint32_t APB1LENR; /*!< RCC APB1 Peripherals clock Enable Low Word register Address offset: 0x9C */
+ __IO uint32_t APB1HENR; /*!< RCC APB1 Peripherals clock Enable High Word register Address offset: 0xA0 */
+ __IO uint32_t APB2ENR; /*!< RCC APB2 Peripherals Clock Enable Register Address offset: 0xA4 */
+ __IO uint32_t APB3ENR; /*!< RCC APB3 Peripherals Clock Enable Register Address offset: 0xA8 */
+ uint32_t RESERVED14; /*!< Reserved Address offset: 0xAC */
+ __IO uint32_t AHB1LPENR; /*!< RCC AHB1 Peripheral sleep clock Register Address offset: 0xB0 */
+ __IO uint32_t AHB2LPENR; /*!< RCC AHB2 Peripheral sleep clock Register Address offset: 0xB4 */
+ uint32_t RESERVED15; /*!< Reserved Address offset: 0xB8 */
+ __IO uint32_t AHB4LPENR; /*!< RCC AHB4 Peripherals sleep clock Register Address offset: 0xBC */
+ uint32_t RESERVED17; /*!< Reserved Address offset: 0xC0 */
+ __IO uint32_t APB1LLPENR; /*!< RCC APB1 Peripherals sleep clock Low Word Register Address offset: 0xC4 */
+ __IO uint32_t APB1HLPENR; /*!< RCC APB1 Peripherals sleep clock High Word Register Address offset: 0xC8 */
+ __IO uint32_t APB2LPENR; /*!< RCC APB2 Peripherals sleep clock Register Address offset: 0xCC */
+ __IO uint32_t APB3LPENR; /*!< RCC APB3 Peripherals Clock Low Power Enable Register Address offset: 0xD0 */
+ uint32_t RESERVED18; /*!< Reserved Address offset: 0xD4 */
+ __IO uint32_t CCIPR1; /*!< RCC IPs Clocks Configuration Register 1 Address offset: 0xD8 */
+ __IO uint32_t CCIPR2; /*!< RCC IPs Clocks Configuration Register 2 Address offset: 0xDC */
+ __IO uint32_t CCIPR3; /*!< RCC IPs Clocks Configuration Register 3 Address offset: 0xE0 */
+ __IO uint32_t CCIPR4; /*!< RCC IPs Clocks Configuration Register 4 Address offset: 0xE4 */
+ __IO uint32_t CCIPR5; /*!< RCC IPs Clocks Configuration Register 5 Address offset: 0xE8 */
+ uint32_t RESERVED19; /*!< Reserved, Address offset: 0xEC */
+ __IO uint32_t BDCR; /*!< RCC VSW Backup Domain & V33 Domain Control Register Address offset: 0xF0 */
+ __IO uint32_t RSR; /*!< RCC Reset status Register Address offset: 0xF4 */
+ uint32_t RESERVED20[6]; /*!< Reserved Address offset: 0xF8 */
+ __IO uint32_t SECCFGR; /*!< RCC Secure mode configuration register Address offset: 0x110 */
+ __IO uint32_t PRIVCFGR; /*!< RCC Privilege configuration register Address offset: 0x114 */
+} RCC_TypeDef;
+
+/**
+ * @brief PKA
+ */
+typedef struct
+{
+ __IO uint32_t CR; /*!< PKA control register, Address offset: 0x00 */
+ __IO uint32_t SR; /*!< PKA status register, Address offset: 0x04 */
+ __IO uint32_t CLRFR; /*!< PKA clear flag register, Address offset: 0x08 */
+ uint32_t Reserved[253]; /*!< Reserved memory area Address offset: 0x0C -> 0x03FC */
+ __IO uint32_t RAM[1334]; /*!< PKA RAM Address offset: 0x400 -> 0x18D4 */
+} PKA_TypeDef;
+
+/*
+* @brief RTC Specific device feature definitions
+*/
+#define RTC_BKP_NB 32U
+#define RTC_TAMP_NB 8U
+
+/**
+ * @brief Real-Time Clock
+ */
+typedef struct
+{
+ __IO uint32_t TR; /*!< RTC time register, Address offset: 0x00 */
+ __IO uint32_t DR; /*!< RTC date register, Address offset: 0x04 */
+ __IO uint32_t SSR; /*!< RTC sub second register, Address offset: 0x08 */
+ __IO uint32_t ICSR; /*!< RTC initialization control and status register, Address offset: 0x0C */
+ __IO uint32_t PRER; /*!< RTC prescaler register, Address offset: 0x10 */
+ __IO uint32_t WUTR; /*!< RTC wakeup timer register, Address offset: 0x14 */
+ __IO uint32_t CR; /*!< RTC control register, Address offset: 0x18 */
+ __IO uint32_t PRIVCFGR; /*!< RTC privilege mode control register, Address offset: 0x1C */
+ __IO uint32_t SECCFGR; /*!< RTC secure mode control register, Address offset: 0x20 */
+ __IO uint32_t WPR; /*!< RTC write protection register, Address offset: 0x24 */
+ __IO uint32_t CALR; /*!< RTC calibration register, Address offset: 0x28 */
+ __IO uint32_t SHIFTR; /*!< RTC shift control register, Address offset: 0x2C */
+ __IO uint32_t TSTR; /*!< RTC time stamp time register, Address offset: 0x30 */
+ __IO uint32_t TSDR; /*!< RTC time stamp date register, Address offset: 0x34 */
+ __IO uint32_t TSSSR; /*!< RTC time-stamp sub second register, Address offset: 0x38 */
+ uint32_t RESERVED0; /*!< Reserved, Address offset: 0x3C */
+ __IO uint32_t ALRMAR; /*!< RTC alarm A register, Address offset: 0x40 */
+ __IO uint32_t ALRMASSR; /*!< RTC alarm A sub second register, Address offset: 0x44 */
+ __IO uint32_t ALRMBR; /*!< RTC alarm B register, Address offset: 0x48 */
+ __IO uint32_t ALRMBSSR; /*!< RTC alarm B sub second register, Address offset: 0x4C */
+ __IO uint32_t SR; /*!< RTC Status register, Address offset: 0x50 */
+ __IO uint32_t MISR; /*!< RTC masked interrupt status register, Address offset: 0x54 */
+ __IO uint32_t SMISR; /*!< RTC secure masked interrupt status register, Address offset: 0x58 */
+ __IO uint32_t SCR; /*!< RTC status Clear register, Address offset: 0x5C */
+ __IO uint32_t OR; /*!< RTC option register, Address offset: 0x60 */
+ uint32_t RESERVED1[3];/*!< Reserved, Address offset: 0x64 */
+ __IO uint32_t ALRABINR; /*!< RTC alarm A binary mode register, Address offset: 0x70 */
+ __IO uint32_t ALRBBINR; /*!< RTC alarm B binary mode register, Address offset: 0x74 */
+} RTC_TypeDef;
+
+/**
+ * @brief Tamper and backup registers
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< TAMP control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< TAMP control register 2, Address offset: 0x04 */
+ __IO uint32_t CR3; /*!< TAMP control register 3, Address offset: 0x08 */
+ __IO uint32_t FLTCR; /*!< TAMP filter control register, Address offset: 0x0C */
+ __IO uint32_t ATCR1; /*!< TAMP filter control register 1 Address offset: 0x10 */
+ __IO uint32_t ATSEEDR; /*!< TAMP active tamper seed register, Address offset: 0x14 */
+ __IO uint32_t ATOR; /*!< TAMP active tamper output register, Address offset: 0x18 */
+ __IO uint32_t ATCR2; /*!< TAMP filter control register 2, Address offset: 0x1C */
+ __IO uint32_t SECCFGR; /*!< TAMP secure mode control register, Address offset: 0x20 */
+ __IO uint32_t PRIVCFGR; /*!< TAMP privilege mode control register, Address offset: 0x24 */
+ uint32_t RESERVED0; /*!< Reserved, Address offset: 0x28 */
+ __IO uint32_t IER; /*!< TAMP interrupt enable register, Address offset: 0x2C */
+ __IO uint32_t SR; /*!< TAMP status register, Address offset: 0x30 */
+ __IO uint32_t MISR; /*!< TAMP masked interrupt status register, Address offset: 0x34 */
+ __IO uint32_t SMISR; /*!< TAMP secure masked interrupt status register, Address offset: 0x38 */
+ __IO uint32_t SCR; /*!< TAMP status clear register, Address offset: 0x3C */
+ __IO uint32_t COUNT1R; /*!< TAMP monotonic counter register, Address offset: 0x40 */
+ uint32_t RESERVED1[3];/*!< Reserved, Address offset: 0x44 -- 0x4C */
+ __IO uint32_t OR; /*!< TAMP option register, Address offset: 0x50 */
+ __IO uint32_t ERCFGR; /*!< TAMP erase configuration register, Address offset: 0x54 */
+ uint32_t RESERVED2[42];/*!< Reserved, Address offset: 0x58 -- 0xFC */
+ __IO uint32_t BKP0R; /*!< TAMP backup register 0, Address offset: 0x100 */
+ __IO uint32_t BKP1R; /*!< TAMP backup register 1, Address offset: 0x104 */
+ __IO uint32_t BKP2R; /*!< TAMP backup register 2, Address offset: 0x108 */
+ __IO uint32_t BKP3R; /*!< TAMP backup register 3, Address offset: 0x10C */
+ __IO uint32_t BKP4R; /*!< TAMP backup register 4, Address offset: 0x110 */
+ __IO uint32_t BKP5R; /*!< TAMP backup register 5, Address offset: 0x114 */
+ __IO uint32_t BKP6R; /*!< TAMP backup register 6, Address offset: 0x118 */
+ __IO uint32_t BKP7R; /*!< TAMP backup register 7, Address offset: 0x11C */
+ __IO uint32_t BKP8R; /*!< TAMP backup register 8, Address offset: 0x120 */
+ __IO uint32_t BKP9R; /*!< TAMP backup register 9, Address offset: 0x124 */
+ __IO uint32_t BKP10R; /*!< TAMP backup register 10, Address offset: 0x128 */
+ __IO uint32_t BKP11R; /*!< TAMP backup register 11, Address offset: 0x12C */
+ __IO uint32_t BKP12R; /*!< TAMP backup register 12, Address offset: 0x130 */
+ __IO uint32_t BKP13R; /*!< TAMP backup register 13, Address offset: 0x134 */
+ __IO uint32_t BKP14R; /*!< TAMP backup register 14, Address offset: 0x138 */
+ __IO uint32_t BKP15R; /*!< TAMP backup register 15, Address offset: 0x13C */
+ __IO uint32_t BKP16R; /*!< TAMP backup register 16, Address offset: 0x140 */
+ __IO uint32_t BKP17R; /*!< TAMP backup register 17, Address offset: 0x144 */
+ __IO uint32_t BKP18R; /*!< TAMP backup register 18, Address offset: 0x148 */
+ __IO uint32_t BKP19R; /*!< TAMP backup register 19, Address offset: 0x14C */
+ __IO uint32_t BKP20R; /*!< TAMP backup register 20, Address offset: 0x150 */
+ __IO uint32_t BKP21R; /*!< TAMP backup register 21, Address offset: 0x154 */
+ __IO uint32_t BKP22R; /*!< TAMP backup register 22, Address offset: 0x158 */
+ __IO uint32_t BKP23R; /*!< TAMP backup register 23, Address offset: 0x15C */
+ __IO uint32_t BKP24R; /*!< TAMP backup register 24, Address offset: 0x160 */
+ __IO uint32_t BKP25R; /*!< TAMP backup register 25, Address offset: 0x164 */
+ __IO uint32_t BKP26R; /*!< TAMP backup register 26, Address offset: 0x168 */
+ __IO uint32_t BKP27R; /*!< TAMP backup register 27, Address offset: 0x16C */
+ __IO uint32_t BKP28R; /*!< TAMP backup register 28, Address offset: 0x170 */
+ __IO uint32_t BKP29R; /*!< TAMP backup register 29, Address offset: 0x174 */
+ __IO uint32_t BKP30R; /*!< TAMP backup register 30, Address offset: 0x178 */
+ __IO uint32_t BKP31R; /*!< TAMP backup register 31, Address offset: 0x17C */
+} TAMP_TypeDef;
+
+/**
+ * @brief Universal Synchronous Asynchronous Receiver Transmitter
+ */
+typedef struct
+{
+ __IO uint32_t CR1; /*!< USART Control register 1, Address offset: 0x00 */
+ __IO uint32_t CR2; /*!< USART Control register 2, Address offset: 0x04 */
+ __IO uint32_t CR3; /*!< USART Control register 3, Address offset: 0x08 */
+ __IO uint32_t BRR; /*!< USART Baud rate register, Address offset: 0x0C */
+ __IO uint32_t GTPR; /*!< USART Guard time and prescaler register, Address offset: 0x10 */
+ __IO uint32_t RTOR; /*!< USART Receiver Time Out register, Address offset: 0x14 */
+ __IO uint32_t RQR; /*!< USART Request register, Address offset: 0x18 */
+ __IO uint32_t ISR; /*!< USART Interrupt and status register, Address offset: 0x1C */
+ __IO uint32_t ICR; /*!< USART Interrupt flag Clear register, Address offset: 0x20 */
+ __IO uint32_t RDR; /*!< USART Receive Data register, Address offset: 0x24 */
+ __IO uint32_t TDR; /*!< USART Transmit Data register, Address offset: 0x28 */
+ __IO uint32_t PRESC; /*!< USART Prescaler register, Address offset: 0x2C */
+} USART_TypeDef;
+
+/**
+ * @brief Serial Audio Interface
+ */
+typedef struct
+{
+ __IO uint32_t GCR; /*!< SAI global configuration register, Address offset: 0x00 */
+ uint32_t RESERVED[16]; /*!< Reserved, Address offset: 0x04 to 0x40 */
+ __IO uint32_t PDMCR; /*!< SAI PDM control register, Address offset: 0x44 */
+ __IO uint32_t PDMDLY; /*!< SAI PDM delay register, Address offset: 0x48 */
+} SAI_TypeDef;
+
+typedef struct
+{
+ __IO uint32_t CR1; /*!< SAI block x configuration register 1, Address offset: 0x04 */
+ __IO uint32_t CR2; /*!< SAI block x configuration register 2, Address offset: 0x08 */
+ __IO uint32_t FRCR; /*!< SAI block x frame configuration register, Address offset: 0x0C */
+ __IO uint32_t SLOTR; /*!< SAI block x slot register, Address offset: 0x10 */
+ __IO uint32_t IMR; /*!< SAI block x interrupt mask register, Address offset: 0x14 */
+ __IO uint32_t SR; /*!< SAI block x status register, Address offset: 0x18 */
+ __IO uint32_t CLRFR; /*!< SAI block x clear flag register, Address offset: 0x1C */
+ __IO uint32_t DR; /*!< SAI block x data register, Address offset: 0x20 */
+} SAI_Block_TypeDef;
+/**
+ * @brief System configuration, Boot and Security
+ */
+typedef struct
+{
+ uint32_t RESERVED1[4]; /*!< RESERVED1, Address offset: 0x00 - 0x0C */
+ __IO uint32_t HDPLCR; /*!< SBS HDPL Control Register, Address offset: 0x10 */
+ __IO uint32_t HDPLSR; /*!< SBS HDPL Status Register, Address offset: 0x14 */
+ __IO uint32_t NEXTHDPLCR; /*!< NEXT HDPL Control Register, Address offset: 0x18 */
+ __IO uint32_t RESERVED2; /*!< RESERVED2, Address offset: 0x1C */
+ __IO uint32_t DBGCR; /*!< SBS Debug Control Register, Address offset: 0x20 */
+ __IO uint32_t DBGLOCKR; /*!< SBS Debug Lock Register, Address offset: 0x24 */
+ uint32_t RESERVED3[3]; /*!< RESERVED3, Address offset: 0x28 - 0x30 */
+ __IO uint32_t RSSCMDR; /*!< SBS RSS Command Register, Address offset: 0x34 */
+ uint32_t RESERVED4[26]; /*!< RESERVED4, Address offset: 0x38 - 0x9C */
+ __IO uint32_t EPOCHSELCR; /*!< EPOCH Selection Register, Address offset: 0xA0 */
+ uint32_t RESERVED5[7]; /*!< RESERVED5, Address offset: 0xA4 - 0xBC */
+ __IO uint32_t SECCFGR; /*!< SBS Security Mode Configuration, Address offset: 0xC0 */
+ uint32_t RESERVED6[15]; /*!< RESERVED6, Address offset: 0xC4 - 0xFC */
+ __IO uint32_t PMCR; /*!< SBS Product Mode & Config Register, Address offset: 0x100 */
+ __IO uint32_t FPUIMR; /*!< SBS FPU Interrupt Mask Register, Address offset: 0x104 */
+ __IO uint32_t MESR; /*!< SBS Memory Erase Status Register, Address offset: 0x108 */
+ uint32_t RESERVED7; /*!< RESERVED7, Address offset: 0x10C */
+ __IO uint32_t CCCSR; /*!< SBS Compensation Cell Control & Status Register, Address offset: 0x110 */
+ __IO uint32_t CCVALR; /*!< SBS Compensation Cell Value Register, Address offset: 0x114 */
+ __IO uint32_t CCSWCR; /*!< SBS Compensation Cell for I/Os sw code Register, Address offset: 0x118 */
+ __IO uint32_t RESERVED8; /*!< RESERVED8, Address offset: 0x11C */
+ __IO uint32_t CFGR2; /*!< SBS Class B Register, Address offset: 0x120 */
+ uint32_t RESERVED9[8]; /*!< RESERVED9, Address offset: 0x124 - 0x140 */
+ __IO uint32_t CNSLCKR; /*!< SBS CPU Non-secure Lock Register, Address offset: 0x144 */
+ __IO uint32_t CSLCKR; /*!< SBS CPU Secure Lock Register, Address offset: 0x148 */
+ __IO uint32_t ECCNMIR; /*!< SBS FLITF ECC NMI MASK Register, Address offset: 0x14C */
+} SBS_TypeDef;
+
+/**
+ * @brief Secure digital input/output Interface
+ */
+typedef struct
+{
+ __IO uint32_t POWER; /*!< SDMMC power control register, Address offset: 0x00 */
+ __IO uint32_t CLKCR; /*!< SDMMC clock control register, Address offset: 0x04 */
+ __IO uint32_t ARG; /*!< SDMMC argument register, Address offset: 0x08 */
+ __IO uint32_t CMD; /*!< SDMMC command register, Address offset: 0x0C */
+ __I uint32_t RESPCMD; /*!< SDMMC command response register, Address offset: 0x10 */
+ __I uint32_t RESP1; /*!< SDMMC response 1 register, Address offset: 0x14 */
+ __I uint32_t RESP2; /*!< SDMMC response 2 register, Address offset: 0x18 */
+ __I uint32_t RESP3; /*!< SDMMC response 3 register, Address offset: 0x1C */
+ __I uint32_t RESP4; /*!< SDMMC response 4 register, Address offset: 0x20 */
+ __IO uint32_t DTIMER; /*!< SDMMC data timer register, Address offset: 0x24 */
+ __IO uint32_t DLEN; /*!< SDMMC data length register, Address offset: 0x28 */
+ __IO uint32_t DCTRL; /*!< SDMMC data control register, Address offset: 0x2C */
+ __I uint32_t DCOUNT; /*!< SDMMC data counter register, Address offset: 0x30 */
+ __I uint32_t STA; /*!< SDMMC status register, Address offset: 0x34 */
+ __IO uint32_t ICR; /*!< SDMMC interrupt clear register, Address offset: 0x38 */
+ __IO uint32_t MASK; /*!< SDMMC mask register, Address offset: 0x3C */
+ __IO uint32_t ACKTIME; /*!< SDMMC Acknowledgement timer register, Address offset: 0x40 */
+ uint32_t RESERVED0[3]; /*!< Reserved, 0x44 - 0x4C - 0x4C */
+ __IO uint32_t IDMACTRL; /*!< SDMMC DMA control register, Address offset: 0x50 */
+ __IO uint32_t IDMABSIZE; /*!< SDMMC DMA buffer size register, Address offset: 0x54 */
+ __IO uint32_t IDMABASER; /*!< SDMMC DMA buffer base address register, Address offset: 0x58 */
+ uint32_t RESERVED1[2]; /*!< Reserved, 0x60 */
+ __IO uint32_t IDMALAR; /*!< SDMMC DMA linked list address register, Address offset: 0x64 */
+ __IO uint32_t IDMABAR; /*!< SDMMC DMA linked list memory base register,Address offset: 0x68 */
+ uint32_t RESERVED2[5]; /*!< Reserved, 0x6C-0x7C */
+ __IO uint32_t FIFO; /*!< SDMMC data FIFO register, Address offset: 0x80 */
+} SDMMC_TypeDef;
+
+
+
+/**
+ * @brief Delay Block DLYB
+ */
+
+typedef struct
+{
+ __IO uint32_t CR; /*!< DELAY BLOCK control register, Address offset: 0x00 */
+ __IO uint32_t CFGR; /*!< DELAY BLOCK configuration register, Address offset: 0x04 */
+} DLYB_TypeDef;
+
+/**
+ * @brief UCPD
+ */
+typedef struct
+{
+ __IO uint32_t CFG1; /*!< UCPD configuration register 1, Address offset: 0x00 */
+ __IO uint32_t CFG2; /*!< UCPD configuration register 2, Address offset: 0x04 */
+ __IO uint32_t CFG3; /*!< UCPD configuration register 3, Address offset: 0x08 */
+ __IO uint32_t CR; /*!< UCPD control register, Address offset: 0x0C */
+ __IO uint32_t IMR; /*!< UCPD interrupt mask register, Address offset: 0x10 */
+ __IO uint32_t SR; /*!< UCPD status register, Address offset: 0x14 */
+ __IO uint32_t ICR; /*!< UCPD interrupt flag clear register Address offset: 0x18 */
+ __IO uint32_t TX_ORDSET; /*!< UCPD Tx ordered set type register, Address offset: 0x1C */
+ __IO uint32_t TX_PAYSZ; /*!< UCPD Tx payload size register, Address offset: 0x20 */
+ __IO uint32_t TXDR; /*!< UCPD Tx data register, Address offset: 0x24 */
+ __IO uint32_t RX_ORDSET; /*!< UCPD Rx ordered set type register, Address offset: 0x28 */
+ __IO uint32_t RX_PAYSZ; /*!< UCPD Rx payload size register, Address offset: 0x2C */
+ __IO uint32_t RXDR; /*!< UCPD Rx data register, Address offset: 0x30 */
+ __IO uint32_t RX_ORDEXT1; /*!< UCPD Rx ordered set extension 1 register, Address offset: 0x34 */
+ __IO uint32_t RX_ORDEXT2; /*!< UCPD Rx ordered set extension 2 register, Address offset: 0x38 */
+ uint32_t RESERVED[949];/*!< Reserved, Address offset: 0x3C -- 0x3F0 */
+ __IO uint32_t IPVER; /*!< UCPD IP version register, Address offset: 0x3F4 */
+ __IO uint32_t IPID; /*!< UCPD IP Identification register, Address offset: 0x3F8 */
+ __IO uint32_t MID; /*!< UCPD Magic Identification register, Address offset: 0x3FC */
+} UCPD_TypeDef;
+
+/**
+ * @brief Universal Serial Bus Full Speed Dual Role Device
+ */
+typedef struct
+{
+ __IO uint32_t CHEP0R; /*!< USB Channel/Endpoint 0 register, Address offset: 0x00 */
+ __IO uint32_t CHEP1R; /*!< USB Channel/Endpoint 1 register, Address offset: 0x04 */
+ __IO uint32_t CHEP2R; /*!< USB Channel/Endpoint 2 register, Address offset: 0x08 */
+ __IO uint32_t CHEP3R; /*!< USB Channel/Endpoint 3 register, Address offset: 0x0C */
+ __IO uint32_t CHEP4R; /*!< USB Channel/Endpoint 4 register, Address offset: 0x10 */
+ __IO uint32_t CHEP5R; /*!< USB Channel/Endpoint 5 register, Address offset: 0x14 */
+ __IO uint32_t CHEP6R; /*!< USB Channel/Endpoint 6 register, Address offset: 0x18 */
+ __IO uint32_t CHEP7R; /*!< USB Channel/Endpoint 7 register, Address offset: 0x1C */
+ __IO uint32_t RESERVED0[8]; /*!< Reserved, */
+ __IO uint32_t CNTR; /*!< Control register, Address offset: 0x40 */
+ __IO uint32_t ISTR; /*!< Interrupt status register, Address offset: 0x44 */
+ __IO uint32_t FNR; /*!< Frame number register, Address offset: 0x48 */
+ __IO uint32_t DADDR; /*!< Device address register, Address offset: 0x4C */
+ __IO uint32_t RESERVED1; /*!< Reserved */
+ __IO uint32_t LPMCSR; /*!< LPM Control and Status register, Address offset: 0x54 */
+ __IO uint32_t BCDR; /*!< Battery Charging detector register, Address offset: 0x58 */
+} USB_DRD_TypeDef;
+
+/**
+ * @brief Universal Serial Bus PacketMemoryArea Buffer Descriptor Table
+ */
+typedef struct
+{
+ __IO uint32_t TXBD; /*!= 6010050)
+ #pragma clang diagnostic pop
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning restore
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+
+/* =========================================================================================================================== */
+/* ================ Device Specific Peripheral Address Map ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_Peripheral_peripheralAddr
+ * @{
+ */
+
+/* Internal SRAMs size */
+#define SRAM1_SIZE (0x40000UL) /*!< SRAM1=256k */
+#define SRAM2_SIZE (0x10000UL) /*!< SRAM2=64k */
+#define SRAM3_SIZE (0x50000UL) /*!< SRAM3=320k */
+#define BKPSRAM_SIZE (0x01000UL) /*!< BKPSRAM=4k */
+
+/* Flash, Peripheral and internal SRAMs base addresses - Non secure */
+#define FLASH_BASE_NS (0x08000000UL) /*!< FLASH (up to 2 MB) non-secure base address */
+#define SRAM1_BASE_NS (0x20000000UL) /*!< SRAM1 (256 KB) non-secure base address */
+#define SRAM2_BASE_NS (0x20040000UL) /*!< SRAM2 (64 KB) non-secure base address */
+#define SRAM3_BASE_NS (0x20050000UL) /*!< SRAM3 (320 KB) non-secure base address */
+#define PERIPH_BASE_NS (0x40000000UL) /*!< Peripheral non-secure base address */
+
+/* External memories base addresses - Not aliased */
+#define FMC_BASE (0x60000000UL) /*!< FMC base address */
+#define OCTOSPI1_BASE (0x90000000UL) /*!< OCTOSPI1 memories accessible over AHB base address */
+
+#define FMC_BANK1 FMC_BASE
+#define FMC_BANK1_1 FMC_BANK1
+#define FMC_BANK1_2 (FMC_BANK1 + 0x04000000UL) /*!< FMC Memory Bank1 for SRAM, NOR and PSRAM */
+#define FMC_BANK1_3 (FMC_BANK1 + 0x08000000UL)
+#define FMC_BANK1_4 (FMC_BANK1 + 0x0C000000UL)
+#define FMC_BANK3 (FMC_BASE + 0x20000000UL) /*!< FMC Memory Bank3 for NAND */
+#define FMC_SDRAM_BANK_1 (FMC_BASE + 0x60000000UL) /*!< FMC Memory SDRAM Bank1 */
+#define FMC_SDRAM_BANK_2 (FMC_BASE + 0x70000000UL) /*!< FMC Memory SDRAM Bank2 */
+
+
+/* Peripheral memory map - Non secure */
+#define APB1PERIPH_BASE_NS PERIPH_BASE_NS
+#define APB2PERIPH_BASE_NS (PERIPH_BASE_NS + 0x00010000UL)
+#define AHB1PERIPH_BASE_NS (PERIPH_BASE_NS + 0x00020000UL)
+#define AHB2PERIPH_BASE_NS (PERIPH_BASE_NS + 0x02020000UL)
+#define APB3PERIPH_BASE_NS (PERIPH_BASE_NS + 0x04000000UL)
+#define AHB3PERIPH_BASE_NS (PERIPH_BASE_NS + 0x04020000UL)
+#define AHB4PERIPH_BASE_NS (PERIPH_BASE_NS + 0x06000000UL)
+
+/*!< APB1 Non secure peripherals */
+#define TIM2_BASE_NS (APB1PERIPH_BASE_NS + 0x0000UL)
+#define TIM3_BASE_NS (APB1PERIPH_BASE_NS + 0x0400UL)
+#define TIM4_BASE_NS (APB1PERIPH_BASE_NS + 0x0800UL)
+#define TIM5_BASE_NS (APB1PERIPH_BASE_NS + 0x0C00UL)
+#define TIM6_BASE_NS (APB1PERIPH_BASE_NS + 0x1000UL)
+#define TIM7_BASE_NS (APB1PERIPH_BASE_NS + 0x1400UL)
+#define TIM12_BASE_NS (APB1PERIPH_BASE_NS + 0x1800UL)
+#define TIM13_BASE_NS (APB1PERIPH_BASE_NS + 0x1C00UL)
+#define TIM14_BASE_NS (APB1PERIPH_BASE_NS + 0x2000UL)
+#define WWDG_BASE_NS (APB1PERIPH_BASE_NS + 0x2C00UL)
+#define IWDG_BASE_NS (APB1PERIPH_BASE_NS + 0x3000UL)
+#define SPI2_BASE_NS (APB1PERIPH_BASE_NS + 0x3800UL)
+#define SPI3_BASE_NS (APB1PERIPH_BASE_NS + 0x3C00UL)
+#define USART2_BASE_NS (APB1PERIPH_BASE_NS + 0x4400UL)
+#define USART3_BASE_NS (APB1PERIPH_BASE_NS + 0x4800UL)
+#define UART4_BASE_NS (APB1PERIPH_BASE_NS + 0x4C00UL)
+#define UART5_BASE_NS (APB1PERIPH_BASE_NS + 0x5000UL)
+#define I2C1_BASE_NS (APB1PERIPH_BASE_NS + 0x5400UL)
+#define I2C2_BASE_NS (APB1PERIPH_BASE_NS + 0x5800UL)
+#define I3C1_BASE_NS (APB1PERIPH_BASE_NS + 0x5C00UL)
+#define CRS_BASE_NS (APB1PERIPH_BASE_NS + 0x6000UL)
+#define USART6_BASE_NS (APB1PERIPH_BASE_NS + 0x6400UL)
+#define USART10_BASE_NS (APB1PERIPH_BASE_NS + 0x6800UL)
+#define USART11_BASE_NS (APB1PERIPH_BASE_NS + 0x6C00UL)
+#define CEC_BASE_NS (APB1PERIPH_BASE_NS + 0x7000UL)
+#define UART7_BASE_NS (APB1PERIPH_BASE_NS + 0x7800UL)
+#define UART8_BASE_NS (APB1PERIPH_BASE_NS + 0x7C00UL)
+#define UART9_BASE_NS (APB1PERIPH_BASE_NS + 0x8000UL)
+#define UART12_BASE_NS (APB1PERIPH_BASE_NS + 0x8400UL)
+#define DTS_BASE_NS (APB1PERIPH_BASE_NS + 0x8C00UL)
+#define LPTIM2_BASE_NS (APB1PERIPH_BASE_NS + 0x9400UL)
+#define FDCAN1_BASE_NS (APB1PERIPH_BASE_NS + 0xA400UL)
+#define FDCAN_CONFIG_BASE_NS (APB1PERIPH_BASE_NS + 0xA500UL)
+#define SRAMCAN_BASE_NS (APB1PERIPH_BASE_NS + 0xAC00UL)
+#define FDCAN2_BASE_NS (APB1PERIPH_BASE_NS + 0xA800UL)
+#define UCPD1_BASE_NS (APB1PERIPH_BASE_NS + 0xDC00UL)
+
+/*!< APB2 Non secure peripherals */
+#define TIM1_BASE_NS (APB2PERIPH_BASE_NS + 0x2C00UL)
+#define SPI1_BASE_NS (APB2PERIPH_BASE_NS + 0x3000UL)
+#define TIM8_BASE_NS (APB2PERIPH_BASE_NS + 0x3400UL)
+#define USART1_BASE_NS (APB2PERIPH_BASE_NS + 0x3800UL)
+#define TIM15_BASE_NS (APB2PERIPH_BASE_NS + 0x4000UL)
+#define TIM16_BASE_NS (APB2PERIPH_BASE_NS + 0x4400UL)
+#define TIM17_BASE_NS (APB2PERIPH_BASE_NS + 0x4800UL)
+#define SPI4_BASE_NS (APB2PERIPH_BASE_NS + 0x4C00UL)
+#define SPI6_BASE_NS (APB2PERIPH_BASE_NS + 0x5000UL)
+#define SAI1_BASE_NS (APB2PERIPH_BASE_NS + 0x5400UL)
+#define SAI1_Block_A_BASE_NS (SAI1_BASE_NS + 0x004UL)
+#define SAI1_Block_B_BASE_NS (SAI1_BASE_NS + 0x024UL)
+#define SAI2_BASE_NS (APB2PERIPH_BASE_NS + 0x5800UL)
+#define SAI2_Block_A_BASE_NS (SAI2_BASE_NS + 0x004UL)
+#define SAI2_Block_B_BASE_NS (SAI2_BASE_NS + 0x024UL)
+#define USB_DRD_BASE_NS (APB2PERIPH_BASE_NS + 0x6000UL)
+#define USB_DRD_PMAADDR_NS (APB2PERIPH_BASE_NS + 0x6400UL)
+
+/*!< AHB1 Non secure peripherals */
+#define GPDMA1_BASE_NS AHB1PERIPH_BASE_NS
+#define GPDMA2_BASE_NS (AHB1PERIPH_BASE_NS + 0x01000UL)
+#define FLASH_R_BASE_NS (AHB1PERIPH_BASE_NS + 0x02000UL)
+#define CRC_BASE_NS (AHB1PERIPH_BASE_NS + 0x03000UL)
+#define CORDIC_BASE_NS (AHB1PERIPH_BASE_NS + 0x03800UL)
+#define FMAC_BASE_NS (AHB1PERIPH_BASE_NS + 0x03C00UL)
+#define RAMCFG_BASE_NS (AHB1PERIPH_BASE_NS + 0x06000UL)
+#define ETH_BASE_NS (AHB1PERIPH_BASE_NS + 0x8000UL)
+#define ETH_MAC_BASE_NS (ETH_BASE)
+#define ICACHE_BASE_NS (AHB1PERIPH_BASE_NS + 0x10400UL)
+#define DCACHE1_BASE_NS (AHB1PERIPH_BASE_NS + 0x11400UL)
+#define GTZC_TZSC1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12400UL)
+#define GTZC_TZIC1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12800UL)
+#define GTZC_MPCBB1_BASE_NS (AHB1PERIPH_BASE_NS + 0x12C00UL)
+#define GTZC_MPCBB2_BASE_NS (AHB1PERIPH_BASE_NS + 0x13000UL)
+#define GTZC_MPCBB3_BASE_NS (AHB1PERIPH_BASE_NS + 0x13400UL)
+#define BKPSRAM_BASE_NS (AHB1PERIPH_BASE_NS + 0x16400UL)
+
+#define GPDMA1_Channel0_BASE_NS (GPDMA1_BASE_NS + 0x0050UL)
+#define GPDMA1_Channel1_BASE_NS (GPDMA1_BASE_NS + 0x00D0UL)
+#define GPDMA1_Channel2_BASE_NS (GPDMA1_BASE_NS + 0x0150UL)
+#define GPDMA1_Channel3_BASE_NS (GPDMA1_BASE_NS + 0x01D0UL)
+#define GPDMA1_Channel4_BASE_NS (GPDMA1_BASE_NS + 0x0250UL)
+#define GPDMA1_Channel5_BASE_NS (GPDMA1_BASE_NS + 0x02D0UL)
+#define GPDMA1_Channel6_BASE_NS (GPDMA1_BASE_NS + 0x0350UL)
+#define GPDMA1_Channel7_BASE_NS (GPDMA1_BASE_NS + 0x03D0UL)
+#define GPDMA2_Channel0_BASE_NS (GPDMA2_BASE_NS + 0x0050UL)
+#define GPDMA2_Channel1_BASE_NS (GPDMA2_BASE_NS + 0x00D0UL)
+#define GPDMA2_Channel2_BASE_NS (GPDMA2_BASE_NS + 0x0150UL)
+#define GPDMA2_Channel3_BASE_NS (GPDMA2_BASE_NS + 0x01D0UL)
+#define GPDMA2_Channel4_BASE_NS (GPDMA2_BASE_NS + 0x0250UL)
+#define GPDMA2_Channel5_BASE_NS (GPDMA2_BASE_NS + 0x02D0UL)
+#define GPDMA2_Channel6_BASE_NS (GPDMA2_BASE_NS + 0x0350UL)
+#define GPDMA2_Channel7_BASE_NS (GPDMA2_BASE_NS + 0x03D0UL)
+
+#define RAMCFG_SRAM1_BASE_NS (RAMCFG_BASE_NS)
+#define RAMCFG_SRAM2_BASE_NS (RAMCFG_BASE_NS + 0x0040UL)
+#define RAMCFG_SRAM3_BASE_NS (RAMCFG_BASE_NS + 0x0080UL)
+#define RAMCFG_BKPRAM_BASE_NS (RAMCFG_BASE_NS + 0x0100UL)
+
+/*!< AHB2 Non secure peripherals */
+#define GPIOA_BASE_NS (AHB2PERIPH_BASE_NS + 0x00000UL)
+#define GPIOB_BASE_NS (AHB2PERIPH_BASE_NS + 0x00400UL)
+#define GPIOC_BASE_NS (AHB2PERIPH_BASE_NS + 0x00800UL)
+#define GPIOD_BASE_NS (AHB2PERIPH_BASE_NS + 0x00C00UL)
+#define GPIOE_BASE_NS (AHB2PERIPH_BASE_NS + 0x01000UL)
+#define GPIOF_BASE_NS (AHB2PERIPH_BASE_NS + 0x01400UL)
+#define GPIOG_BASE_NS (AHB2PERIPH_BASE_NS + 0x01800UL)
+#define GPIOH_BASE_NS (AHB2PERIPH_BASE_NS + 0x01C00UL)
+#define GPIOI_BASE_NS (AHB2PERIPH_BASE_NS + 0x02000UL)
+#define ADC1_BASE_NS (AHB2PERIPH_BASE_NS + 0x08000UL)
+#define ADC2_BASE_NS (AHB2PERIPH_BASE_NS + 0x08100UL)
+#define ADC12_COMMON_BASE_NS (AHB2PERIPH_BASE_NS + 0x08300UL)
+#define DAC1_BASE_NS (AHB2PERIPH_BASE_NS + 0x08400UL)
+#define DCMI_BASE_NS (AHB2PERIPH_BASE_NS + 0x0C000UL)
+#define PSSI_BASE_NS (AHB2PERIPH_BASE_NS + 0x0C400UL)
+#define HASH_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0400UL)
+#define HASH_DIGEST_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0710UL)
+#define RNG_BASE_NS (AHB2PERIPH_BASE_NS + 0xA0800UL)
+#define PKA_BASE_NS (AHB2PERIPH_BASE_NS + 0xA2000UL)
+#define PKA_RAM_BASE_NS (AHB2PERIPH_BASE_NS + 0xA2400UL)
+
+/*!< APB3 Non secure peripherals */
+#define SBS_BASE_NS (APB3PERIPH_BASE_NS + 0x0400UL)
+#define SPI5_BASE_NS (APB3PERIPH_BASE_NS + 0x2000UL)
+#define LPUART1_BASE_NS (APB3PERIPH_BASE_NS + 0x2400UL)
+#define I2C3_BASE_NS (APB3PERIPH_BASE_NS + 0x2800UL)
+#define I2C4_BASE_NS (APB3PERIPH_BASE_NS + 0x2C00UL)
+#define LPTIM1_BASE_NS (APB3PERIPH_BASE_NS + 0x4400UL)
+#define LPTIM3_BASE_NS (APB3PERIPH_BASE_NS + 0x4800UL)
+#define LPTIM4_BASE_NS (APB3PERIPH_BASE_NS + 0x4C00UL)
+#define LPTIM5_BASE_NS (APB3PERIPH_BASE_NS + 0x5000UL)
+#define LPTIM6_BASE_NS (APB3PERIPH_BASE_NS + 0x5400UL)
+#define VREFBUF_BASE_NS (APB3PERIPH_BASE_NS + 0x7400UL)
+#define RTC_BASE_NS (APB3PERIPH_BASE_NS + 0x7800UL)
+#define TAMP_BASE_NS (APB3PERIPH_BASE_NS + 0x7C00UL)
+
+/*!< AHB3 Non secure peripherals */
+#define PWR_BASE_NS (AHB3PERIPH_BASE_NS + 0x0800UL)
+#define RCC_BASE_NS (AHB3PERIPH_BASE_NS + 0x0C00UL)
+#define EXTI_BASE_NS (AHB3PERIPH_BASE_NS + 0x2000UL)
+#define DEBUG_BASE_NS (AHB3PERIPH_BASE_NS + 0x4000UL)
+
+/*!< AHB4 Non secure peripherals */
+#define SDMMC1_BASE_NS (AHB4PERIPH_BASE_NS + 0x8000UL)
+#define DLYB_SDMMC1_BASE_NS (AHB4PERIPH_BASE_NS + 0x8400UL)
+#define SDMMC2_BASE_NS (AHB4PERIPH_BASE_NS + 0x8C00UL)
+#define DLYB_SDMMC2_BASE_NS (AHB4PERIPH_BASE_NS + 0x8800UL)
+#define FMC_R_BASE_NS (AHB4PERIPH_BASE_NS + 0x1000400UL) /*!< FMC control registers base address */
+#define OCTOSPI1_R_BASE_NS (AHB4PERIPH_BASE_NS + 0x1001400UL) /*!< OCTOSPI1 control registers base address */
+#define DLYB_OCTOSPI1_BASE_NS (AHB4PERIPH_BASE_NS + 0x0F000UL)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_BASE_NS (FMC_R_BASE_NS + 0x0000UL)
+#define FMC_Bank1E_R_BASE_NS (FMC_R_BASE_NS + 0x0104UL)
+#define FMC_Bank3_R_BASE_NS (FMC_R_BASE_NS + 0x0080UL)
+#define FMC_Bank5_6_R_BASE_NS (FMC_R_BASE_NS + 0x0140UL)
+
+/* Flash, Peripheral and internal SRAMs base addresses - Secure */
+#define FLASH_BASE_S (0x0C000000UL) /*!< FLASH (up to 2 MB) secure base address */
+#define SRAM1_BASE_S (0x30000000UL) /*!< SRAM1 (256 KB) secure base address */
+#define SRAM2_BASE_S (0x30040000UL) /*!< SRAM2 (64 KB) secure base address */
+#define SRAM3_BASE_S (0x30050000UL) /*!< SRAM3 (320 KB) secure base address */
+#define PERIPH_BASE_S (0x50000000UL) /*!< Peripheral secure base address */
+
+/* Peripheral memory map - Secure */
+#define APB1PERIPH_BASE_S PERIPH_BASE_S
+#define APB2PERIPH_BASE_S (PERIPH_BASE_S + 0x00010000UL)
+#define AHB1PERIPH_BASE_S (PERIPH_BASE_S + 0x00020000UL)
+#define AHB2PERIPH_BASE_S (PERIPH_BASE_S + 0x02020000UL)
+#define APB3PERIPH_BASE_S (PERIPH_BASE_S + 0x04000000UL)
+#define AHB3PERIPH_BASE_S (PERIPH_BASE_S + 0x04020000UL)
+#define AHB4PERIPH_BASE_S (PERIPH_BASE_S + 0x06000000UL)
+
+/*!< APB1 secure peripherals */
+#define TIM2_BASE_S (APB1PERIPH_BASE_S + 0x0000UL)
+#define TIM3_BASE_S (APB1PERIPH_BASE_S + 0x0400UL)
+#define TIM4_BASE_S (APB1PERIPH_BASE_S + 0x0800UL)
+#define TIM5_BASE_S (APB1PERIPH_BASE_S + 0x0C00UL)
+#define TIM6_BASE_S (APB1PERIPH_BASE_S + 0x1000UL)
+#define TIM7_BASE_S (APB1PERIPH_BASE_S + 0x1400UL)
+#define TIM12_BASE_S (APB1PERIPH_BASE_S + 0x1800UL)
+#define TIM13_BASE_S (APB1PERIPH_BASE_S + 0x1C00UL)
+#define TIM14_BASE_S (APB1PERIPH_BASE_S + 0x2000UL)
+#define WWDG_BASE_S (APB1PERIPH_BASE_S + 0x2C00UL)
+#define IWDG_BASE_S (APB1PERIPH_BASE_S + 0x3000UL)
+#define SPI2_BASE_S (APB1PERIPH_BASE_S + 0x3800UL)
+#define SPI3_BASE_S (APB1PERIPH_BASE_S + 0x3C00UL)
+#define USART2_BASE_S (APB1PERIPH_BASE_S + 0x4400UL)
+#define USART3_BASE_S (APB1PERIPH_BASE_S + 0x4800UL)
+#define UART4_BASE_S (APB1PERIPH_BASE_S + 0x4C00UL)
+#define UART5_BASE_S (APB1PERIPH_BASE_S + 0x5000UL)
+#define I2C1_BASE_S (APB1PERIPH_BASE_S + 0x5400UL)
+#define I2C2_BASE_S (APB1PERIPH_BASE_S + 0x5800UL)
+#define I3C1_BASE_S (APB1PERIPH_BASE_S + 0x5C00UL)
+#define CRS_BASE_S (APB1PERIPH_BASE_S + 0x6000UL)
+#define USART6_BASE_S (APB1PERIPH_BASE_S + 0x6400UL)
+#define USART10_BASE_S (APB1PERIPH_BASE_S + 0x6800UL)
+#define USART11_BASE_S (APB1PERIPH_BASE_S + 0x6C00UL)
+#define CEC_BASE_S (APB1PERIPH_BASE_S + 0x7000UL)
+#define UART7_BASE_S (APB1PERIPH_BASE_S + 0x7800UL)
+#define UART8_BASE_S (APB1PERIPH_BASE_S + 0x7C00UL)
+#define UART9_BASE_S (APB1PERIPH_BASE_S + 0x8000UL)
+#define UART12_BASE_S (APB1PERIPH_BASE_S + 0x8400UL)
+#define DTS_BASE_S (APB1PERIPH_BASE_S + 0x8C00UL)
+#define LPTIM2_BASE_S (APB1PERIPH_BASE_S + 0x9400UL)
+#define FDCAN1_BASE_S (APB1PERIPH_BASE_S + 0xA400UL)
+#define FDCAN_CONFIG_BASE_S (APB1PERIPH_BASE_S + 0xA500UL)
+#define SRAMCAN_BASE_S (APB1PERIPH_BASE_S + 0xAC00UL)
+#define FDCAN2_BASE_S (APB1PERIPH_BASE_S + 0xA800UL)
+#define UCPD1_BASE_S (APB1PERIPH_BASE_S + 0xDC00UL)
+
+/*!< APB2 Secure peripherals */
+#define TIM1_BASE_S (APB2PERIPH_BASE_S + 0x2C00UL)
+#define SPI1_BASE_S (APB2PERIPH_BASE_S + 0x3000UL)
+#define TIM8_BASE_S (APB2PERIPH_BASE_S + 0x3400UL)
+#define USART1_BASE_S (APB2PERIPH_BASE_S + 0x3800UL)
+#define TIM15_BASE_S (APB2PERIPH_BASE_S + 0x4000UL)
+#define TIM16_BASE_S (APB2PERIPH_BASE_S + 0x4400UL)
+#define TIM17_BASE_S (APB2PERIPH_BASE_S + 0x4800UL)
+#define SPI4_BASE_S (APB2PERIPH_BASE_S + 0x4C00UL)
+#define SPI6_BASE_S (APB2PERIPH_BASE_S + 0x5000UL)
+#define SAI1_BASE_S (APB2PERIPH_BASE_S + 0x5400UL)
+#define SAI1_Block_A_BASE_S (SAI1_BASE_S + 0x004UL)
+#define SAI1_Block_B_BASE_S (SAI1_BASE_S + 0x024UL)
+#define SAI2_BASE_S (APB2PERIPH_BASE_S + 0x5800UL)
+#define SAI2_Block_A_BASE_S (SAI2_BASE_S + 0x004UL)
+#define SAI2_Block_B_BASE_S (SAI2_BASE_S + 0x024UL)
+#define USB_DRD_BASE_S (APB2PERIPH_BASE_S + 0x6000UL)
+#define USB_DRD_PMAADDR_S (APB2PERIPH_BASE_S + 0x6400UL)
+
+/*!< AHB1 secure peripherals */
+#define GPDMA1_BASE_S AHB1PERIPH_BASE_S
+#define GPDMA2_BASE_S (AHB1PERIPH_BASE_S + 0x01000UL)
+#define FLASH_R_BASE_S (AHB1PERIPH_BASE_S + 0x02000UL)
+#define CRC_BASE_S (AHB1PERIPH_BASE_S + 0x03000UL)
+#define CORDIC_BASE_S (AHB1PERIPH_BASE_S + 0x03800UL)
+#define FMAC_BASE_S (AHB1PERIPH_BASE_S + 0x03C00UL)
+#define RAMCFG_BASE_S (AHB1PERIPH_BASE_S + 0x06000UL)
+#define ETH_BASE_S (AHB1PERIPH_BASE_S + 0x8000UL)
+#define ETH_MAC_BASE_S (ETH_BASE_S)
+#define ICACHE_BASE_S (AHB1PERIPH_BASE_S + 0x10400UL)
+#define DCACHE1_BASE_S (AHB1PERIPH_BASE_S + 0x11400UL)
+#define GTZC_TZSC1_BASE_S (AHB1PERIPH_BASE_S + 0x12400UL)
+#define GTZC_TZIC1_BASE_S (AHB1PERIPH_BASE_S + 0x12800UL)
+#define GTZC_MPCBB1_BASE_S (AHB1PERIPH_BASE_S + 0x12C00UL)
+#define GTZC_MPCBB2_BASE_S (AHB1PERIPH_BASE_S + 0x13000UL)
+#define GTZC_MPCBB3_BASE_S (AHB1PERIPH_BASE_S + 0x13400UL)
+#define BKPSRAM_BASE_S (AHB1PERIPH_BASE_S + 0x16400UL)
+#define GPDMA1_Channel0_BASE_S (GPDMA1_BASE_S + 0x0050UL)
+#define GPDMA1_Channel1_BASE_S (GPDMA1_BASE_S + 0x00D0UL)
+#define GPDMA1_Channel2_BASE_S (GPDMA1_BASE_S + 0x0150UL)
+#define GPDMA1_Channel3_BASE_S (GPDMA1_BASE_S + 0x01D0UL)
+#define GPDMA1_Channel4_BASE_S (GPDMA1_BASE_S + 0x0250UL)
+#define GPDMA1_Channel5_BASE_S (GPDMA1_BASE_S + 0x02D0UL)
+#define GPDMA1_Channel6_BASE_S (GPDMA1_BASE_S + 0x0350UL)
+#define GPDMA1_Channel7_BASE_S (GPDMA1_BASE_S + 0x03D0UL)
+#define GPDMA2_Channel0_BASE_S (GPDMA2_BASE_S + 0x0050UL)
+#define GPDMA2_Channel1_BASE_S (GPDMA2_BASE_S + 0x00D0UL)
+#define GPDMA2_Channel2_BASE_S (GPDMA2_BASE_S + 0x0150UL)
+#define GPDMA2_Channel3_BASE_S (GPDMA2_BASE_S + 0x01D0UL)
+#define GPDMA2_Channel4_BASE_S (GPDMA2_BASE_S + 0x0250UL)
+#define GPDMA2_Channel5_BASE_S (GPDMA2_BASE_S + 0x02D0UL)
+#define GPDMA2_Channel6_BASE_S (GPDMA2_BASE_S + 0x0350UL)
+#define GPDMA2_Channel7_BASE_S (GPDMA2_BASE_S + 0x03D0UL)
+#define RAMCFG_SRAM1_BASE_S (RAMCFG_BASE_S)
+#define RAMCFG_SRAM2_BASE_S (RAMCFG_BASE_S + 0x0040UL)
+#define RAMCFG_SRAM3_BASE_S (RAMCFG_BASE_S + 0x0080UL)
+#define RAMCFG_BKPRAM_BASE_S (RAMCFG_BASE_S + 0x0100UL)
+
+/*!< AHB2 secure peripherals */
+#define GPIOA_BASE_S (AHB2PERIPH_BASE_S + 0x00000UL)
+#define GPIOB_BASE_S (AHB2PERIPH_BASE_S + 0x00400UL)
+#define GPIOC_BASE_S (AHB2PERIPH_BASE_S + 0x00800UL)
+#define GPIOD_BASE_S (AHB2PERIPH_BASE_S + 0x00C00UL)
+#define GPIOE_BASE_S (AHB2PERIPH_BASE_S + 0x01000UL)
+#define GPIOF_BASE_S (AHB2PERIPH_BASE_S + 0x01400UL)
+#define GPIOG_BASE_S (AHB2PERIPH_BASE_S + 0x01800UL)
+#define GPIOH_BASE_S (AHB2PERIPH_BASE_S + 0x01C00UL)
+#define GPIOI_BASE_S (AHB2PERIPH_BASE_S + 0x02000UL)
+#define ADC1_BASE_S (AHB2PERIPH_BASE_S + 0x08000UL)
+#define ADC2_BASE_S (AHB2PERIPH_BASE_S + 0x08100UL)
+#define ADC12_COMMON_BASE_S (AHB2PERIPH_BASE_S + 0x08300UL)
+#define DAC1_BASE_S (AHB2PERIPH_BASE_S + 0x08400UL)
+#define DCMI_BASE_S (AHB2PERIPH_BASE_S + 0x0C000UL)
+#define PSSI_BASE_S (AHB2PERIPH_BASE_S + 0x0C400UL)
+#define HASH_BASE_S (AHB2PERIPH_BASE_S + 0xA0400UL)
+#define HASH_DIGEST_BASE_S (AHB2PERIPH_BASE_S + 0xA0710UL)
+#define RNG_BASE_S (AHB2PERIPH_BASE_S + 0xA0800UL)
+#define PKA_BASE_S (AHB2PERIPH_BASE_S + 0xA2000UL)
+#define PKA_RAM_BASE_S (AHB2PERIPH_BASE_S + 0xA2400UL)
+
+/*!< APB3 secure peripherals */
+#define SBS_BASE_S (APB3PERIPH_BASE_S + 0x0400UL)
+#define SPI5_BASE_S (APB3PERIPH_BASE_S + 0x2000UL)
+#define LPUART1_BASE_S (APB3PERIPH_BASE_S + 0x2400UL)
+#define I2C3_BASE_S (APB3PERIPH_BASE_S + 0x2800UL)
+#define I2C4_BASE_S (APB3PERIPH_BASE_S + 0x2C00UL)
+#define LPTIM1_BASE_S (APB3PERIPH_BASE_S + 0x4400UL)
+#define LPTIM3_BASE_S (APB3PERIPH_BASE_S + 0x4800UL)
+#define LPTIM4_BASE_S (APB3PERIPH_BASE_S + 0x4C00UL)
+#define LPTIM5_BASE_S (APB3PERIPH_BASE_S + 0x5000UL)
+#define LPTIM6_BASE_S (APB3PERIPH_BASE_S + 0x5400UL)
+#define VREFBUF_BASE_S (APB3PERIPH_BASE_S + 0x7400UL)
+#define RTC_BASE_S (APB3PERIPH_BASE_S + 0x7800UL)
+#define TAMP_BASE_S (APB3PERIPH_BASE_S + 0x7C00UL)
+
+/*!< AHB3 secure peripherals */
+#define PWR_BASE_S (AHB3PERIPH_BASE_S + 0x0800UL)
+#define RCC_BASE_S (AHB3PERIPH_BASE_S + 0x0C00UL)
+#define EXTI_BASE_S (AHB3PERIPH_BASE_S + 0x2000UL)
+#define DEBUG_BASE_S (AHB3PERIPH_BASE_S + 0x4000UL)
+
+/*!< AHB4 secure peripherals */
+#define SDMMC1_BASE_S (AHB4PERIPH_BASE_S + 0x8000UL)
+#define DLYB_SDMMC1_BASE_S (AHB4PERIPH_BASE_S + 0x8400UL)
+#define SDMMC2_BASE_S (AHB4PERIPH_BASE_S + 0x8C00UL)
+#define DLYB_SDMMC2_BASE_S (AHB4PERIPH_BASE_S + 0x8800UL)
+#define FMC_R_BASE_S (AHB4PERIPH_BASE_S + 0x1000400UL) /*!< FMC control registers base address */
+#define OCTOSPI1_R_BASE_S (AHB4PERIPH_BASE_S + 0x1001400UL) /*!< OCTOSPI1 control registers base address */
+#define DLYB_OCTOSPI1_BASE_S (AHB4PERIPH_BASE_S + 0x0F000UL)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_BASE_S (FMC_R_BASE_S + 0x0000UL)
+#define FMC_Bank1E_R_BASE_S (FMC_R_BASE_S + 0x0104UL)
+#define FMC_Bank3_R_BASE_S (FMC_R_BASE_S + 0x0080UL)
+#define FMC_Bank5_6_R_BASE_S (FMC_R_BASE_S + 0x0140UL)
+
+/* Debug MCU registers base address */
+#define DBGMCU_BASE (0x44024000UL)
+#define PACKAGE_BASE (0x08FFF80EUL) /*!< Package data register base address */
+#define UID_BASE (0x08FFF800UL) /*!< Unique device ID register base address */
+#define FLASHSIZE_BASE (0x08FFF80CUL) /*!< Flash size data register base address */
+
+/* Internal Flash OTP Area */
+#define FLASH_OTP_BASE (0x08FFF000UL) /*!< FLASH OTP (one-time programmable) base address */
+#define FLASH_OTP_SIZE (0x800U) /*!< 2048 bytes OTP (one-time programmable) */
+
+/* Flash system Area */
+#define FLASH_SYSTEM_BASE_NS (0x0BF80000UL) /*!< FLASH System non-secure base address */
+#define FLASH_SYSTEM_BASE_S (0x0FF80000UL) /*!< FLASH System secure base address */
+#define FLASH_SYSTEM_SIZE (0x10000U) /*!< 64 Kbytes system Flash */
+
+/* Internal Flash EDATA Area */
+#define FLASH_EDATA_BASE_NS (0x09000000UL) /*!< FLASH high-cycle data non-secure base address */
+#define FLASH_EDATA_BASE_S (0x0D000000UL) /*!< FLASH high-cycle data secure base address */
+#define FLASH_EDATA_SIZE (0x18000U) /*!< 96 KB of Flash high-cycle data */
+
+/* Internal Flash OBK Area */
+#define FLASH_OBK_BASE_NS (0x0BFD0000UL) /*!< FLASH OBK (option byte keys) non-secure base address */
+#define FLASH_OBK_BASE_S (0x0FFD0000UL) /*!< FLASH OBK (option byte keys) secure base address */
+#define FLASH_OBK_SIZE (0x2000U) /*!< 8 KB of option byte keys */
+#define FLASH_OBK_HDPL0_SIZE (0x100U) /*!< 256 Bytes of HDPL1 option byte keys */
+
+#define FLASH_OBK_HDPL1_BASE_NS (FLASH_OBK_BASE_NS + FLASH_OBK_HDPL0_SIZE) /*!< FLASH OBK HDPL1 non-secure base address */
+#define FLASH_OBK_HDPL1_BASE_S (FLASH_OBK_BASE_S + FLASH_OBK_HDPL0_SIZE) /*!< FLASH OBK HDPL1 secure base address */
+#define FLASH_OBK_HDPL1_SIZE (0x800U) /*!< 2 KB of HDPL1 option byte keys */
+
+#define FLASH_OBK_HDPL2_BASE_NS (FLASH_OBK_HDPL1_BASE_NS + FLASH_OBK_HDPL1_SIZE) /*!< FLASH OBK HDPL2 non-secure base address */
+#define FLASH_OBK_HDPL2_BASE_S (FLASH_OBK_HDPL1_BASE_S + FLASH_OBK_HDPL1_SIZE) /*!< FLASH OBK HDPL2 secure base address */
+#define FLASH_OBK_HDPL2_SIZE (0x300U) /*!< 768 Bytes of HDPL2 option byte keys */
+
+#define FLASH_OBK_HDPL3_BASE_NS (FLASH_OBK_HDPL2_BASE_NS + FLASH_OBK_HDPL2_SIZE) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3_BASE_S (FLASH_OBK_HDPL2_BASE_S + FLASH_OBK_HDPL2_SIZE) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3_SIZE (0x13F0U) /*!< 5104 Bytes HDPL3 option byte keys */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+#define FLASH_OBK_HDPL3S_BASE_NS (FLASH_OBK_HDPL3_BASE_NS) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3S_BASE_S (FLASH_OBK_HDPL3_BASE_S) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3S_SIZE (0x0C00U) /*!< 3072 Bytes of secure HDPL3 option byte keys */
+
+#define FLASH_OBK_HDPL3NS_BASE_NS (FLASH_OBK_HDPL3_BASE_NS + FLASH_OBK_HDPL3S_SIZE) /*!< FLASH OBK HDPL3 non-secure base address */
+#define FLASH_OBK_HDPL3NS_BASE_S (FLASH_OBK_HDPL3_BASE_S + FLASH_OBK_HDPL3S_SIZE) /*!< FLASH OBK HDPL3 secure base address */
+#define FLASH_OBK_HDPL3NS_SIZE (FLASH_OBK_HDPL3_SIZE - FLASH_OBK_HDPL3S_SIZE) /*!< 2032 Bytes of non-secure HDPL3 option byte keys */
+#endif /* CMSE */
+
+/*!< Root Secure Service Library */
+/************ RSSLIB SAU system Flash region definition constants *************/
+#define RSSLIB_SYS_FLASH_NS_PFUNC_START (0xBF9FB68UL)
+#define RSSLIB_SYS_FLASH_NS_PFUNC_END (0xBF9FB84UL)
+
+/************ RSSLIB function return constants ********************************/
+#define RSSLIB_ERROR (0xF5F5F5F5UL)
+#define RSSLIB_SUCCESS (0xEAEAEAEAUL)
+
+/*!< RSSLIB pointer function structure address definition */
+#define RSSLIB_PFUNC_BASE (0xBF9FB68UL)
+#define RSSLIB_PFUNC ((RSSLIB_pFunc_TypeDef *)RSSLIB_PFUNC_BASE)
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level2 Function
+ * @detail This function increments HDP level up to HDP level 2
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl2_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl3_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it jumps to the non-secure reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_S_JumpHDPlvl3NS_TypeDef)(uint32_t VectorTableAddr);
+
+/**
+ * @brief Input parameter definition of RSSLIB_DataProvisioning
+ */
+typedef struct
+{
+ uint32_t *pSource; /*!< Address of the Data to be provisioned, shall be in SRAM3 */
+ uint32_t *pDestination; /*!< Address in OBKeys sections where to provision Data */
+ uint32_t Size; /*!< Size in bytes of the Data to be provisioned*/
+ uint32_t DoEncryption; /*!< Notifies RSSLIB_DataProvisioning to encrypt or not Data*/
+ uint32_t Crc; /*!< CRC over full Data buffer and previous field in the structure*/
+} RSSLIB_DataProvisioningConf_t;
+
+/**
+ * @brief Prototype of RSSLIB Data Provisioning Function
+ * @detail This function write Data within OBKeys sections.
+ * @param pointer on the structure defining Data to be provisioned and where to
+ * provision them within OBKeys sections.
+ * @retval RSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*RSSLIB_NSC_DataProvisioning_TypeDef)(RSSLIB_DataProvisioningConf_t *pConfig);
+
+
+/**
+ * @brief RSSLib secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM RSSLIB_S_JumpHDPlvl2_TypeDef JumpHDPLvl2;
+ __IM RSSLIB_S_JumpHDPlvl3_TypeDef JumpHDPLvl3;
+ __IM RSSLIB_S_JumpHDPlvl3NS_TypeDef JumpHDPLvl3NS;
+} S_pFuncTypeDef;
+
+/**
+ * @brief RSSLib Non-secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM RSSLIB_NSC_DataProvisioning_TypeDef DataProvisioning;
+} NSC_pFuncTypeDef;
+
+/**
+ * @brief RSSLib function pointer structure
+ */
+typedef struct
+{
+ NSC_pFuncTypeDef NSC;
+ uint32_t RESERVED1[3];
+ S_pFuncTypeDef S;
+}RSSLIB_pFunc_TypeDef;
+
+/*!< Non Secure Service Library */
+/************ RSSLIB SAU system Flash region definition constants *************/
+#define NSSLIB_SYS_FLASH_NS_PFUNC_START (0xBF9FB6CUL)
+#define NSSLIB_SYS_FLASH_NS_PFUNC_END (0xBF9FB74UL)
+
+/************ RSSLIB function return constants ********************************/
+#define NSSLIB_ERROR (0xF5F5F5F5UL)
+#define NSSLIB_SUCCESS (0xEAEAEAEAUL)
+
+/*!< RSSLIB pointer function structure address definition */
+#define NSSLIB_PFUNC_BASE (0xBF9FB6CUL)
+#define NSSLIB_PFUNC ((NSSLIB_pFunc_TypeDef *)NSSLIB_PFUNC_BASE)
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level2 Function
+ * @detail This function increments HDP level up to HDP level 2
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval NSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*NSSLIB_S_JumpHDPlvl2_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief Prototype of RSSLIB Jump to HDP level3 Function
+ * @detail This function increments HDP level up to HDP level 3
+ * Then it enables the MPU region corresponding the MPU index
+ * provided as input parameter. The Vector Table shall be located
+ * within this MPU region.
+ * Then it jumps to the reset handler present within the
+ * Vector table. The function does not return on successful execution.
+ * @param pointer on the vector table containing the reset handler the function
+ * jumps to.
+ * @param MPU region index containing the vector table
+ * jumps to.
+ * @retval NSSLIB_RSS_ERROR on error on input parameter, otherwise does not return.
+ */
+typedef uint32_t (*NSSLIB_S_JumpHDPlvl3_TypeDef)(uint32_t VectorTableAddr, uint32_t MPUIndex);
+
+/**
+ * @brief RSSLib secure callable function pointer structure
+ */
+typedef struct
+{
+ __IM NSSLIB_S_JumpHDPlvl2_TypeDef JumpHDPLvl2;
+ __IM NSSLIB_S_JumpHDPlvl3_TypeDef JumpHDPLvl3;
+} NSSLIB_pFunc_TypeDef;
+
+
+/** @} */ /* End of group STM32H5xx_Peripheral_peripheralAddr */
+
+
+/* =========================================================================================================================== */
+/* ================ Peripheral declaration ================ */
+/* =========================================================================================================================== */
+
+
+/** @addtogroup STM32H5xx_Peripheral_declaration
+ * @{
+ */
+
+/*!< APB1 Non secure peripherals */
+#define TIM2_NS ((TIM_TypeDef *)TIM2_BASE_NS)
+#define TIM3_NS ((TIM_TypeDef *)TIM3_BASE_NS)
+#define TIM4_NS ((TIM_TypeDef *)TIM4_BASE_NS)
+#define TIM5_NS ((TIM_TypeDef *)TIM5_BASE_NS)
+#define TIM6_NS ((TIM_TypeDef *)TIM6_BASE_NS)
+#define TIM7_NS ((TIM_TypeDef *)TIM7_BASE_NS)
+#define TIM12_NS ((TIM_TypeDef *)TIM12_BASE_NS)
+#define TIM13_NS ((TIM_TypeDef *)TIM13_BASE_NS)
+#define TIM14_NS ((TIM_TypeDef *)TIM14_BASE_NS)
+#define WWDG_NS ((WWDG_TypeDef *)WWDG_BASE_NS)
+#define IWDG_NS ((IWDG_TypeDef *)IWDG_BASE_NS)
+#define SPI2_NS ((SPI_TypeDef *)SPI2_BASE_NS)
+#define SPI3_NS ((SPI_TypeDef *)SPI3_BASE_NS)
+#define USART2_NS ((USART_TypeDef *)USART2_BASE_NS)
+#define USART3_NS ((USART_TypeDef *)USART3_BASE_NS)
+#define UART4_NS ((USART_TypeDef *)UART4_BASE_NS)
+#define UART5_NS ((USART_TypeDef *)UART5_BASE_NS)
+#define I2C1_NS ((I2C_TypeDef *)I2C1_BASE_NS)
+#define I2C2_NS ((I2C_TypeDef *)I2C2_BASE_NS)
+#define I3C1_NS ((I3C_TypeDef *)I3C1_BASE_NS)
+#define CRS_NS ((CRS_TypeDef *)CRS_BASE_NS)
+#define USART6_NS ((USART_TypeDef *)USART6_BASE_NS)
+#define USART10_NS ((USART_TypeDef *)USART10_BASE_NS)
+#define USART11_NS ((USART_TypeDef *)USART11_BASE_NS)
+#define CEC_NS ((CEC_TypeDef *)CEC_BASE_NS)
+#define UART7_NS ((USART_TypeDef *)UART7_BASE_NS)
+#define UART8_NS ((USART_TypeDef *)UART8_BASE_NS)
+#define UART9_NS ((USART_TypeDef *)UART9_BASE_NS)
+#define UART12_NS ((USART_TypeDef *)UART12_BASE_NS)
+#define DTS_NS ((DTS_TypeDef *)DTS_BASE_NS)
+#define LPTIM2_NS ((LPTIM_TypeDef *)LPTIM2_BASE_NS)
+#define FDCAN1_NS ((FDCAN_GlobalTypeDef *)FDCAN1_BASE_NS)
+#define FDCAN_CONFIG_NS ((FDCAN_Config_TypeDef *)FDCAN_CONFIG_BASE_NS)
+#define FDCAN2_NS ((FDCAN_GlobalTypeDef *)FDCAN2_BASE_NS)
+#define UCPD1_NS ((UCPD_TypeDef *)UCPD1_BASE_NS)
+
+/*!< APB2 Non secure peripherals */
+#define TIM1_NS ((TIM_TypeDef *) TIM1_BASE_NS)
+#define SPI1_NS ((SPI_TypeDef *) SPI1_BASE_NS)
+#define TIM8_NS ((TIM_TypeDef *) TIM8_BASE_NS)
+#define USART1_NS ((USART_TypeDef *) USART1_BASE_NS)
+#define TIM15_NS ((TIM_TypeDef *) TIM15_BASE_NS)
+#define TIM16_NS ((TIM_TypeDef *) TIM16_BASE_NS)
+#define TIM17_NS ((TIM_TypeDef *) TIM17_BASE_NS)
+#define SPI4_NS ((SPI_TypeDef *) SPI4_BASE_NS)
+#define SPI6_NS ((SPI_TypeDef *) SPI6_BASE_NS)
+#define SAI1_NS ((SAI_TypeDef *) SAI1_BASE_NS)
+#define SAI1_Block_A_NS ((SAI_Block_TypeDef *)SAI1_Block_A_BASE_NS)
+#define SAI1_Block_B_NS ((SAI_Block_TypeDef *)SAI1_Block_B_BASE_NS)
+#define SAI2_NS ((SAI_TypeDef *) SAI2_BASE_NS)
+#define SAI2_Block_A_NS ((SAI_Block_TypeDef *)SAI2_Block_A_BASE_NS)
+#define SAI2_Block_B_NS ((SAI_Block_TypeDef *)SAI2_Block_B_BASE_NS)
+#define USB_DRD_FS_NS ((USB_DRD_TypeDef *) USB_DRD_BASE_NS)
+#define USB_DRD_PMA_BUFF_NS ((USB_DRD_PMABuffDescTypeDef *) USB_DRD_PMAADDR_NS)
+
+/*!< AHB1 Non secure peripherals */
+#define GPDMA1_NS ((DMA_TypeDef *) GPDMA1_BASE_NS)
+#define GPDMA2_NS ((DMA_TypeDef *) GPDMA2_BASE_NS)
+#define FLASH_NS ((FLASH_TypeDef *) FLASH_R_BASE_NS)
+#define CRC_NS ((CRC_TypeDef *) CRC_BASE_NS)
+#define CORDIC_NS ((CORDIC_TypeDef *) CORDIC_BASE_NS)
+#define FMAC_NS ((FMAC_TypeDef *) FMAC_BASE_NS)
+#define RAMCFG_SRAM1_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM1_BASE_NS)
+#define RAMCFG_SRAM2_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM2_BASE_NS)
+#define RAMCFG_SRAM3_NS ((RAMCFG_TypeDef *) RAMCFG_SRAM3_BASE_NS)
+#define RAMCFG_BKPRAM_NS ((RAMCFG_TypeDef *) RAMCFG_BKPRAM_BASE_NS)
+#define ETH_NS ((ETH_TypeDef *) ETH_BASE_NS)
+#define ETH_MAC_NS ((ETH_TypeDef *) ETH_MAC_BASE_NS)
+#define ICACHE_NS ((ICACHE_TypeDef *) ICACHE_BASE_NS)
+#define DCACHE1_NS ((DCACHE_TypeDef *) DCACHE1_BASE_NS)
+#define GTZC_TZSC1_NS ((GTZC_TZSC_TypeDef *) GTZC_TZSC1_BASE_NS)
+#define GTZC_TZIC1_NS ((GTZC_TZIC_TypeDef *) GTZC_TZIC1_BASE_NS)
+#define GTZC_MPCBB1_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB1_BASE_NS)
+#define GTZC_MPCBB2_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB2_BASE_NS)
+#define GTZC_MPCBB3_NS ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB3_BASE_NS)
+#define GPDMA1_Channel0_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel0_BASE_NS)
+#define GPDMA1_Channel1_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel1_BASE_NS)
+#define GPDMA1_Channel2_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel2_BASE_NS)
+#define GPDMA1_Channel3_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel3_BASE_NS)
+#define GPDMA1_Channel4_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel4_BASE_NS)
+#define GPDMA1_Channel5_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel5_BASE_NS)
+#define GPDMA1_Channel6_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel6_BASE_NS)
+#define GPDMA1_Channel7_NS ((DMA_Channel_TypeDef *) GPDMA1_Channel7_BASE_NS)
+#define GPDMA2_Channel0_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel0_BASE_NS)
+#define GPDMA2_Channel1_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel1_BASE_NS)
+#define GPDMA2_Channel2_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel2_BASE_NS)
+#define GPDMA2_Channel3_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel3_BASE_NS)
+#define GPDMA2_Channel4_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel4_BASE_NS)
+#define GPDMA2_Channel5_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel5_BASE_NS)
+#define GPDMA2_Channel6_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel6_BASE_NS)
+#define GPDMA2_Channel7_NS ((DMA_Channel_TypeDef *) GPDMA2_Channel7_BASE_NS)
+
+/*!< AHB2 Non secure peripherals */
+#define GPIOA_NS ((GPIO_TypeDef *) GPIOA_BASE_NS)
+#define GPIOB_NS ((GPIO_TypeDef *) GPIOB_BASE_NS)
+#define GPIOC_NS ((GPIO_TypeDef *) GPIOC_BASE_NS)
+#define GPIOD_NS ((GPIO_TypeDef *) GPIOD_BASE_NS)
+#define GPIOE_NS ((GPIO_TypeDef *) GPIOE_BASE_NS)
+#define GPIOF_NS ((GPIO_TypeDef *) GPIOF_BASE_NS)
+#define GPIOG_NS ((GPIO_TypeDef *) GPIOG_BASE_NS)
+#define GPIOH_NS ((GPIO_TypeDef *) GPIOH_BASE_NS)
+#define GPIOI_NS ((GPIO_TypeDef *) GPIOI_BASE_NS)
+#define ADC1_NS ((ADC_TypeDef *) ADC1_BASE_NS)
+#define ADC2_NS ((ADC_TypeDef *) ADC2_BASE_NS)
+#define ADC12_COMMON_NS ((ADC_Common_TypeDef *) ADC12_COMMON_BASE_NS)
+#define DAC1_NS ((DAC_TypeDef *) DAC1_BASE_NS)
+#define DCMI_NS ((DCMI_TypeDef *) DCMI_BASE_NS)
+#define PSSI_NS ((PSSI_TypeDef *) PSSI_BASE_NS)
+#define HASH_NS ((HASH_TypeDef *) HASH_BASE_NS)
+#define HASH_DIGEST_NS ((HASH_DIGEST_TypeDef *) HASH_DIGEST_BASE_NS)
+#define RNG_NS ((RNG_TypeDef *) RNG_BASE_NS)
+#define PKA_NS ((PKA_TypeDef *) PKA_BASE_NS)
+
+
+/*!< APB3 Non secure peripherals */
+#define SBS_NS ((SBS_TypeDef *) SBS_BASE_NS)
+#define SPI5_NS ((SPI_TypeDef *) SPI5_BASE_NS)
+#define LPUART1_NS ((USART_TypeDef *) LPUART1_BASE_NS)
+#define I2C3_NS ((I2C_TypeDef *) I2C3_BASE_NS)
+#define I2C4_NS ((I2C_TypeDef *) I2C4_BASE_NS)
+#define LPTIM1_NS ((LPTIM_TypeDef *) LPTIM1_BASE_NS)
+#define LPTIM3_NS ((LPTIM_TypeDef *) LPTIM3_BASE_NS)
+#define LPTIM4_NS ((LPTIM_TypeDef *) LPTIM4_BASE_NS)
+#define LPTIM5_NS ((LPTIM_TypeDef *) LPTIM5_BASE_NS)
+#define LPTIM6_NS ((LPTIM_TypeDef *) LPTIM6_BASE_NS)
+#define VREFBUF_NS ((VREFBUF_TypeDef *) VREFBUF_BASE_NS)
+#define RTC_NS ((RTC_TypeDef *) RTC_BASE_NS)
+#define TAMP_NS ((TAMP_TypeDef *) TAMP_BASE_NS)
+
+/*!< AHB3 Non secure peripherals */
+#define PWR_NS ((PWR_TypeDef *) PWR_BASE_NS)
+#define RCC_NS ((RCC_TypeDef *) RCC_BASE_NS)
+#define EXTI_NS ((EXTI_TypeDef *) EXTI_BASE_NS)
+
+/*!< AHB4 Non secure peripherals */
+#define SDMMC1_NS ((SDMMC_TypeDef *) SDMMC1_BASE_NS)
+#define DLYB_SDMMC1_NS ((DLYB_TypeDef *) DLYB_SDMMC1_BASE_NS)
+#define SDMMC2_NS ((SDMMC_TypeDef *) SDMMC2_BASE_NS)
+#define DLYB_SDMMC2_NS ((DLYB_TypeDef *) DLYB_SDMMC2_BASE_NS)
+
+#define OCTOSPI1_NS ((OCTOSPI_TypeDef *) OCTOSPI1_R_BASE_NS)
+#define DLYB_OCTOSPI1_NS ((DLYB_TypeDef *) DLYB_OCTOSPI1_BASE_NS)
+
+/*!< FMC Banks Non secure registers base address */
+#define FMC_Bank1_R_NS ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE_NS)
+#define FMC_Bank1E_R_NS ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE_NS)
+#define FMC_Bank3_R_NS ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE_NS)
+#define FMC_Bank5_6_R_NS ((FMC_Bank5_6_TypeDef *) FMC_Bank5_6_R_BASE_NS)
+
+/*!< APB1 Secure peripherals */
+#define TIM2_S ((TIM_TypeDef *)TIM2_BASE_S)
+#define TIM3_S ((TIM_TypeDef *)TIM3_BASE_S)
+#define TIM4_S ((TIM_TypeDef *)TIM4_BASE_S)
+#define TIM5_S ((TIM_TypeDef *)TIM5_BASE_S)
+#define TIM6_S ((TIM_TypeDef *)TIM6_BASE_S)
+#define TIM7_S ((TIM_TypeDef *)TIM7_BASE_S)
+#define TIM12_S ((TIM_TypeDef *)TIM12_BASE_S)
+#define TIM13_S ((TIM_TypeDef *)TIM13_BASE_S)
+#define TIM14_S ((TIM_TypeDef *)TIM14_BASE_S)
+#define WWDG_S ((WWDG_TypeDef *)WWDG_BASE_S)
+#define IWDG_S ((IWDG_TypeDef *)IWDG_BASE_S)
+#define SPI2_S ((SPI_TypeDef *)SPI2_BASE_S)
+#define SPI3_S ((SPI_TypeDef *)SPI3_BASE_S)
+#define USART2_S ((USART_TypeDef *)USART2_BASE_S)
+#define USART3_S ((USART_TypeDef *)USART3_BASE_S)
+#define UART4_S ((USART_TypeDef *)UART4_BASE_S)
+#define UART5_S ((USART_TypeDef *)UART5_BASE_S)
+#define I2C1_S ((I2C_TypeDef *)I2C1_BASE_S)
+#define I2C2_S ((I2C_TypeDef *)I2C2_BASE_S)
+#define I3C1_S ((I3C_TypeDef *)I3C1_BASE_S)
+#define CRS_S ((CRS_TypeDef *)CRS_BASE_S)
+#define USART6_S ((USART_TypeDef *)USART6_BASE_S)
+#define USART10_S ((USART_TypeDef *)USART10_BASE_S)
+#define USART11_S ((USART_TypeDef *)USART11_BASE_S)
+#define CEC_S ((CEC_TypeDef *)CEC_BASE_S)
+#define UART7_S ((USART_TypeDef *)UART7_BASE_S)
+#define UART8_S ((USART_TypeDef *)UART8_BASE_S)
+#define UART9_S ((USART_TypeDef *)UART9_BASE_S)
+#define UART12_S ((USART_TypeDef *)UART12_BASE_S)
+#define DTS_S ((DTS_TypeDef *)DTS_BASE_S)
+#define LPTIM2_S ((LPTIM_TypeDef *)LPTIM2_BASE_S)
+#define FDCAN1_S ((FDCAN_GlobalTypeDef *)FDCAN1_BASE_S)
+#define FDCAN_CONFIG_S ((FDCAN_Config_TypeDef *)FDCAN_CONFIG_BASE_S)
+#define FDCAN2_S ((FDCAN_GlobalTypeDef *)FDCAN2_BASE_S)
+#define UCPD1_S ((UCPD_TypeDef *)UCPD1_BASE_S)
+
+/*!< APB2 secure peripherals */
+#define TIM1_S ((TIM_TypeDef *) TIM1_BASE_S)
+#define SPI1_S ((SPI_TypeDef *) SPI1_BASE_S)
+#define TIM8_S ((TIM_TypeDef *) TIM8_BASE_S)
+#define USART1_S ((USART_TypeDef *) USART1_BASE_S)
+#define TIM15_S ((TIM_TypeDef *) TIM15_BASE_S)
+#define TIM16_S ((TIM_TypeDef *) TIM16_BASE_S)
+#define TIM17_S ((TIM_TypeDef *) TIM17_BASE_S)
+#define SPI4_S ((SPI_TypeDef *) SPI4_BASE_S)
+#define SPI6_S ((SPI_TypeDef *) SPI6_BASE_S)
+#define SAI1_S ((SAI_TypeDef *) SAI1_BASE_S)
+#define SAI1_Block_A_S ((SAI_Block_TypeDef *)SAI1_Block_A_BASE_S)
+#define SAI1_Block_B_S ((SAI_Block_TypeDef *)SAI1_Block_B_BASE_S)
+#define SAI2_S ((SAI_TypeDef *) SAI2_BASE_S)
+#define SAI2_Block_A_S ((SAI_Block_TypeDef *)SAI2_Block_A_BASE_S)
+#define SAI2_Block_B_S ((SAI_Block_TypeDef *)SAI2_Block_B_BASE_S)
+#define USB_DRD_FS_S ((USB_DRD_TypeDef *)USB_DRD_BASE_S)
+#define USB_DRD_PMA_BUFF_S ((USB_DRD_PMABuffDescTypeDef *) USB_DRD_PMAADDR_S)
+
+/*!< AHB1 secure peripherals */
+#define GPDMA1_S ((DMA_TypeDef *) GPDMA1_BASE_S)
+#define GPDMA2_S ((DMA_TypeDef *) GPDMA2_BASE_S)
+#define FLASH_S ((FLASH_TypeDef *) FLASH_R_BASE_S)
+#define CRC_S ((CRC_TypeDef *) CRC_BASE_S)
+#define CORDIC_S ((CORDIC_TypeDef *) CORDIC_BASE_S)
+#define FMAC_S ((FMAC_TypeDef *) FMAC_BASE_S)
+#define RAMCFG_SRAM1_S ((RAMCFG_TypeDef *) RAMCFG_SRAM1_BASE_S)
+#define RAMCFG_SRAM2_S ((RAMCFG_TypeDef *) RAMCFG_SRAM2_BASE_S)
+#define RAMCFG_SRAM3_S ((RAMCFG_TypeDef *) RAMCFG_SRAM3_BASE_S)
+#define RAMCFG_BKPRAM_S ((RAMCFG_TypeDef *) RAMCFG_BKPRAM_BASE_S)
+#define ETH_S ((ETH_TypeDef *) ETH_BASE_S)
+#define ETH_MAC_S ((ETH_TypeDef *) ETH_MAC_BASE_S)
+#define ICACHE_S ((ICACHE_TypeDef *) ICACHE_BASE_S)
+#define DCACHE1_S ((DCACHE_TypeDef *) DCACHE1_BASE_S)
+#define GTZC_TZSC1_S ((GTZC_TZSC_TypeDef *) GTZC_TZSC1_BASE_S)
+#define GTZC_TZIC1_S ((GTZC_TZIC_TypeDef *) GTZC_TZIC1_BASE_S)
+#define GTZC_MPCBB1_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB1_BASE_S)
+#define GTZC_MPCBB2_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB2_BASE_S)
+#define GTZC_MPCBB3_S ((GTZC_MPCBB_TypeDef *) GTZC_MPCBB3_BASE_S)
+#define GPDMA1_Channel0_S ((DMA_Channel_TypeDef *) GPDMA1_Channel0_BASE_S)
+#define GPDMA1_Channel1_S ((DMA_Channel_TypeDef *) GPDMA1_Channel1_BASE_S)
+#define GPDMA1_Channel2_S ((DMA_Channel_TypeDef *) GPDMA1_Channel2_BASE_S)
+#define GPDMA1_Channel3_S ((DMA_Channel_TypeDef *) GPDMA1_Channel3_BASE_S)
+#define GPDMA1_Channel4_S ((DMA_Channel_TypeDef *) GPDMA1_Channel4_BASE_S)
+#define GPDMA1_Channel5_S ((DMA_Channel_TypeDef *) GPDMA1_Channel5_BASE_S)
+#define GPDMA1_Channel6_S ((DMA_Channel_TypeDef *) GPDMA1_Channel6_BASE_S)
+#define GPDMA1_Channel7_S ((DMA_Channel_TypeDef *) GPDMA1_Channel7_BASE_S)
+#define GPDMA2_Channel0_S ((DMA_Channel_TypeDef *) GPDMA2_Channel0_BASE_S)
+#define GPDMA2_Channel1_S ((DMA_Channel_TypeDef *) GPDMA2_Channel1_BASE_S)
+#define GPDMA2_Channel2_S ((DMA_Channel_TypeDef *) GPDMA2_Channel2_BASE_S)
+#define GPDMA2_Channel3_S ((DMA_Channel_TypeDef *) GPDMA2_Channel3_BASE_S)
+#define GPDMA2_Channel4_S ((DMA_Channel_TypeDef *) GPDMA2_Channel4_BASE_S)
+#define GPDMA2_Channel5_S ((DMA_Channel_TypeDef *) GPDMA2_Channel5_BASE_S)
+#define GPDMA2_Channel6_S ((DMA_Channel_TypeDef *) GPDMA2_Channel6_BASE_S)
+#define GPDMA2_Channel7_S ((DMA_Channel_TypeDef *) GPDMA2_Channel7_BASE_S)
+
+
+/*!< AHB2 secure peripherals */
+#define GPIOA_S ((GPIO_TypeDef *) GPIOA_BASE_S)
+#define GPIOB_S ((GPIO_TypeDef *) GPIOB_BASE_S)
+#define GPIOC_S ((GPIO_TypeDef *) GPIOC_BASE_S)
+#define GPIOD_S ((GPIO_TypeDef *) GPIOD_BASE_S)
+#define GPIOE_S ((GPIO_TypeDef *) GPIOE_BASE_S)
+#define GPIOF_S ((GPIO_TypeDef *) GPIOF_BASE_S)
+#define GPIOG_S ((GPIO_TypeDef *) GPIOG_BASE_S)
+#define GPIOH_S ((GPIO_TypeDef *) GPIOH_BASE_S)
+#define GPIOI_S ((GPIO_TypeDef *) GPIOI_BASE_S)
+#define ADC1_S ((ADC_TypeDef *) ADC1_BASE_S)
+#define ADC2_S ((ADC_TypeDef *) ADC2_BASE_S)
+#define ADC12_COMMON_S ((ADC_Common_TypeDef *) ADC12_COMMON_BASE_S)
+#define DAC1_S ((DAC_TypeDef *) DAC1_BASE_S)
+#define DCMI_S ((DCMI_TypeDef *) DCMI_BASE_S)
+#define PSSI_S ((PSSI_TypeDef *) PSSI_BASE_S)
+#define HASH_S ((HASH_TypeDef *) HASH_BASE_S)
+#define HASH_DIGEST_S ((HASH_DIGEST_TypeDef *) HASH_DIGEST_BASE_S)
+#define RNG_S ((RNG_TypeDef *) RNG_BASE_S)
+#define PKA_S ((PKA_TypeDef *) PKA_BASE_S)
+
+/*!< APB3 secure peripherals */
+#define SBS_S ((SBS_TypeDef *) SBS_BASE_S)
+#define SPI5_S ((SPI_TypeDef *) SPI5_BASE_S)
+#define LPUART1_S ((USART_TypeDef *) LPUART1_BASE_S)
+#define I2C3_S ((I2C_TypeDef *) I2C3_BASE_S)
+#define I2C4_S ((I2C_TypeDef *) I2C4_BASE_S)
+#define LPTIM1_S ((LPTIM_TypeDef *) LPTIM1_BASE_S)
+#define LPTIM3_S ((LPTIM_TypeDef *) LPTIM3_BASE_S)
+#define LPTIM4_S ((LPTIM_TypeDef *) LPTIM4_BASE_S)
+#define LPTIM5_S ((LPTIM_TypeDef *) LPTIM5_BASE_S)
+#define LPTIM6_S ((LPTIM_TypeDef *) LPTIM6_BASE_S)
+#define VREFBUF_S ((VREFBUF_TypeDef *) VREFBUF_BASE_S)
+#define RTC_S ((RTC_TypeDef *) RTC_BASE_S)
+#define TAMP_S ((TAMP_TypeDef *) TAMP_BASE_S)
+
+/*!< AHB3 Secure peripherals */
+#define PWR_S ((PWR_TypeDef *) PWR_BASE_S)
+#define RCC_S ((RCC_TypeDef *) RCC_BASE_S)
+#define EXTI_S ((EXTI_TypeDef *) EXTI_BASE_S)
+
+/*!< AHB4 secure peripherals */
+#define SDMMC1_S ((SDMMC_TypeDef *) SDMMC1_BASE_S)
+#define DLYB_SDMMC1_S ((DLYB_TypeDef *) DLYB_SDMMC1_BASE_S)
+#define SDMMC2_S ((SDMMC_TypeDef *) SDMMC2_BASE_S)
+#define DLYB_SDMMC2_S ((DLYB_TypeDef *) DLYB_SDMMC2_BASE_S)
+
+#define FMC_Bank1_R_S ((FMC_Bank1_TypeDef *) FMC_Bank1_R_BASE_S)
+#define FMC_Bank1E_R_S ((FMC_Bank1E_TypeDef *) FMC_Bank1E_R_BASE_S)
+#define FMC_Bank3_R_S ((FMC_Bank3_TypeDef *) FMC_Bank3_R_BASE_S)
+#define FMC_Bank5_6_R_S ((FMC_Bank5_6_TypeDef *) FMC_Bank5_6_R_BASE_S)
+
+#define OCTOSPI1_S ((OCTOSPI_TypeDef *) OCTOSPI1_R_BASE_S)
+#define DLYB_OCTOSPI1_S ((DLYB_TypeDef *) DLYB_OCTOSPI1_BASE_S)
+
+#define DBGMCU ((DBGMCU_TypeDef *) DBGMCU_BASE)
+
+/*!< Memory & Instance aliases and base addresses for Non-Secure/Secure peripherals */
+
+#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
+
+/*!< Memory base addresses for Secure peripherals */
+#define FLASH_BASE FLASH_BASE_S
+#define FLASH_OBK_BASE FLASH_OBK_BASE_S
+#define FLASH_EDATA_BASE FLASH_EDATA_BASE_S
+#define FLASH_SYSTEM_BASE FLASH_SYSTEM_BASE_S
+#define SRAM1_BASE SRAM1_BASE_S
+#define SRAM2_BASE SRAM2_BASE_S
+#define SRAM3_BASE SRAM3_BASE_S
+#define BKPSRAM_BASE BKPSRAM_BASE_S
+#define PERIPH_BASE PERIPH_BASE_S
+#define APB1PERIPH_BASE APB1PERIPH_BASE_S
+#define APB2PERIPH_BASE APB2PERIPH_BASE_S
+#define APB3PERIPH_BASE APB3PERIPH_BASE_S
+#define AHB1PERIPH_BASE AHB1PERIPH_BASE_S
+#define AHB2PERIPH_BASE AHB2PERIPH_BASE_S
+#define AHB3PERIPH_BASE AHB3PERIPH_BASE_S
+#define AHB4PERIPH_BASE AHB4PERIPH_BASE_S
+
+/*!< Instance aliases and base addresses for Secure peripherals */
+#define CORDIC CORDIC_S
+#define CORDIC_BASE CORDIC_BASE_S
+
+#define RCC RCC_S
+#define RCC_BASE RCC_BASE_S
+
+#define DCMI DCMI_S
+#define DCMI_BASE DCMI_BASE_S
+
+#define PSSI PSSI_S
+#define PSSI_BASE PSSI_BASE_S
+
+#define DTS DTS_S
+#define DTS_BASE DTS_BASE_S
+
+#define FLASH FLASH_S
+#define FLASH_R_BASE FLASH_R_BASE_S
+
+#define FMAC FMAC_S
+#define FMAC_BASE FMAC_BASE_S
+
+#define GPDMA1 GPDMA1_S
+#define GPDMA1_BASE GPDMA1_BASE_S
+
+#define GPDMA1_Channel0 GPDMA1_Channel0_S
+#define GPDMA1_Channel0_BASE GPDMA1_Channel0_BASE_S
+
+#define GPDMA1_Channel1 GPDMA1_Channel1_S
+#define GPDMA1_Channel1_BASE GPDMA1_Channel1_BASE_S
+
+#define GPDMA1_Channel2 GPDMA1_Channel2_S
+#define GPDMA1_Channel2_BASE GPDMA1_Channel2_BASE_S
+
+#define GPDMA1_Channel3 GPDMA1_Channel3_S
+#define GPDMA1_Channel3_BASE GPDMA1_Channel3_BASE_S
+
+#define GPDMA1_Channel4 GPDMA1_Channel4_S
+#define GPDMA1_Channel4_BASE GPDMA1_Channel4_BASE_S
+
+#define GPDMA1_Channel5 GPDMA1_Channel5_S
+#define GPDMA1_Channel5_BASE GPDMA1_Channel5_BASE_S
+
+#define GPDMA1_Channel6 GPDMA1_Channel6_S
+#define GPDMA1_Channel6_BASE GPDMA1_Channel6_BASE_S
+
+#define GPDMA1_Channel7 GPDMA1_Channel7_S
+#define GPDMA1_Channel7_BASE GPDMA1_Channel7_BASE_S
+
+#define GPDMA2 GPDMA2_S
+#define GPDMA2_BASE GPDMA2_BASE_S
+
+#define GPDMA2_Channel0 GPDMA2_Channel0_S
+#define GPDMA2_Channel0_BASE GPDMA2_Channel0_BASE_S
+
+#define GPDMA2_Channel1 GPDMA2_Channel1_S
+#define GPDMA2_Channel1_BASE GPDMA2_Channel1_BASE_S
+
+#define GPDMA2_Channel2 GPDMA2_Channel2_S
+#define GPDMA2_Channel2_BASE GPDMA2_Channel2_BASE_S
+
+#define GPDMA2_Channel3 GPDMA2_Channel3_S
+#define GPDMA2_Channel3_BASE GPDMA2_Channel3_BASE_S
+
+#define GPDMA2_Channel4 GPDMA2_Channel4_S
+#define GPDMA2_Channel4_BASE GPDMA2_Channel4_BASE_S
+
+#define GPDMA2_Channel5 GPDMA2_Channel5_S
+#define GPDMA2_Channel5_BASE GPDMA2_Channel5_BASE_S
+
+#define GPDMA2_Channel6 GPDMA2_Channel6_S
+#define GPDMA2_Channel6_BASE GPDMA2_Channel6_BASE_S
+
+#define GPDMA2_Channel7 GPDMA2_Channel7_S
+#define GPDMA2_Channel7_BASE GPDMA2_Channel7_BASE_S
+
+#define GPIOA GPIOA_S
+#define GPIOA_BASE GPIOA_BASE_S
+
+#define GPIOB GPIOB_S
+#define GPIOB_BASE GPIOB_BASE_S
+
+#define GPIOC GPIOC_S
+#define GPIOC_BASE GPIOC_BASE_S
+
+#define GPIOD GPIOD_S
+#define GPIOD_BASE GPIOD_BASE_S
+
+#define GPIOE GPIOE_S
+#define GPIOE_BASE GPIOE_BASE_S
+
+#define GPIOF GPIOF_S
+#define GPIOF_BASE GPIOF_BASE_S
+
+#define GPIOG GPIOG_S
+#define GPIOG_BASE GPIOG_BASE_S
+
+#define GPIOH GPIOH_S
+#define GPIOH_BASE GPIOH_BASE_S
+
+#define GPIOI GPIOI_S
+#define GPIOI_BASE GPIOI_BASE_S
+
+#define PWR PWR_S
+#define PWR_BASE PWR_BASE_S
+
+#define RAMCFG_SRAM1 RAMCFG_SRAM1_S
+#define RAMCFG_SRAM1_BASE RAMCFG_SRAM1_BASE_S
+
+#define RAMCFG_SRAM2 RAMCFG_SRAM2_S
+#define RAMCFG_SRAM2_BASE RAMCFG_SRAM2_BASE_S
+
+#define RAMCFG_SRAM3 RAMCFG_SRAM3_S
+#define RAMCFG_SRAM3_BASE RAMCFG_SRAM3_BASE_S
+
+#define RAMCFG_BKPRAM RAMCFG_BKPRAM_S
+#define RAMCFG_BKPRAM_BASE RAMCFG_BKPRAM_BASE_S
+
+#define EXTI EXTI_S
+#define EXTI_BASE EXTI_BASE_S
+
+#define ICACHE ICACHE_S
+#define ICACHE_BASE ICACHE_BASE_S
+
+#define DCACHE1 DCACHE1_S
+#define DCACHE1_BASE DCACHE1_BASE_S
+
+#define GTZC_TZSC1 GTZC_TZSC1_S
+#define GTZC_TZSC1_BASE GTZC_TZSC1_BASE_S
+
+#define GTZC_TZIC1 GTZC_TZIC1_S
+#define GTZC_TZIC1_BASE GTZC_TZIC1_BASE_S
+
+#define GTZC_MPCBB1 GTZC_MPCBB1_S
+#define GTZC_MPCBB1_BASE GTZC_MPCBB1_BASE_S
+
+#define GTZC_MPCBB2 GTZC_MPCBB2_S
+#define GTZC_MPCBB2_BASE GTZC_MPCBB2_BASE_S
+
+#define GTZC_MPCBB3 GTZC_MPCBB3_S
+#define GTZC_MPCBB3_BASE GTZC_MPCBB3_BASE_S
+
+#define RTC RTC_S
+#define RTC_BASE RTC_BASE_S
+
+#define TAMP TAMP_S
+#define TAMP_BASE TAMP_BASE_S
+
+#define TIM1 TIM1_S
+#define TIM1_BASE TIM1_BASE_S
+
+#define TIM2 TIM2_S
+#define TIM2_BASE TIM2_BASE_S
+
+#define TIM3 TIM3_S
+#define TIM3_BASE TIM3_BASE_S
+
+#define TIM4 TIM4_S
+#define TIM4_BASE TIM4_BASE_S
+
+#define TIM5 TIM5_S
+#define TIM5_BASE TIM5_BASE_S
+
+#define TIM6 TIM6_S
+#define TIM6_BASE TIM6_BASE_S
+
+#define TIM7 TIM7_S
+#define TIM7_BASE TIM7_BASE_S
+
+#define TIM8 TIM8_S
+#define TIM8_BASE TIM8_BASE_S
+
+#define TIM15 TIM15_S
+#define TIM15_BASE TIM15_BASE_S
+
+#define TIM12 TIM12_S
+#define TIM12_BASE TIM12_BASE_S
+
+#define TIM13 TIM13_S
+#define TIM13_BASE TIM13_BASE_S
+
+#define TIM14 TIM14_S
+#define TIM14_BASE TIM14_BASE_S
+
+#define TIM16 TIM16_S
+#define TIM16_BASE TIM16_BASE_S
+
+#define TIM17 TIM17_S
+#define TIM17_BASE TIM17_BASE_S
+
+#define WWDG WWDG_S
+#define WWDG_BASE WWDG_BASE_S
+
+#define IWDG IWDG_S
+#define IWDG_BASE IWDG_BASE_S
+
+#define SPI1 SPI1_S
+#define SPI1_BASE SPI1_BASE_S
+
+#define SPI2 SPI2_S
+#define SPI2_BASE SPI2_BASE_S
+
+#define SPI3 SPI3_S
+#define SPI3_BASE SPI3_BASE_S
+
+#define SPI4 SPI4_S
+#define SPI4_BASE SPI4_BASE_S
+
+#define SPI5 SPI5_S
+#define SPI5_BASE SPI5_BASE_S
+
+#define SPI6 SPI6_S
+#define SPI6_BASE SPI6_BASE_S
+
+#define USART1 USART1_S
+#define USART1_BASE USART1_BASE_S
+
+#define USART2 USART2_S
+#define USART2_BASE USART2_BASE_S
+
+#define USART3 USART3_S
+#define USART3_BASE USART3_BASE_S
+
+#define UART4 UART4_S
+#define UART4_BASE UART4_BASE_S
+
+#define UART5 UART5_S
+#define UART5_BASE UART5_BASE_S
+
+#define USART6 USART6_S
+#define USART6_BASE USART6_BASE_S
+
+#define UART7 UART7_S
+#define UART7_BASE UART7_BASE_S
+
+#define UART8 UART8_S
+#define UART8_BASE UART8_BASE_S
+
+#define UART9 UART9_S
+#define UART9_BASE UART9_BASE_S
+
+#define USART10 USART10_S
+#define USART10_BASE USART10_BASE_S
+
+#define USART11 USART11_S
+#define USART11_BASE USART11_BASE_S
+
+#define UART12 UART12_S
+#define UART12_BASE UART12_BASE_S
+
+#define CEC CEC_S
+#define CEC_BASE CEC_BASE_S
+
+#define I2C1 I2C1_S
+#define I2C1_BASE I2C1_BASE_S
+
+#define I2C2 I2C2_S
+#define I2C2_BASE I2C2_BASE_S
+
+#define I2C3 I2C3_S
+#define I2C3_BASE I2C3_BASE_S
+
+#define I2C4 I2C4_S
+#define I2C4_BASE I2C4_BASE_S
+
+#define I3C1 I3C1_S
+#define I3C1_BASE I3C1_BASE_S
+
+#define CRS CRS_S
+#define CRS_BASE CRS_BASE_S
+
+#define FDCAN1 FDCAN1_S
+#define FDCAN1_BASE FDCAN1_BASE_S
+
+#define FDCAN_CONFIG FDCAN_CONFIG_S
+#define FDCAN_CONFIG_BASE FDCAN_CONFIG_BASE_S
+#define SRAMCAN_BASE SRAMCAN_BASE_S
+
+#define FDCAN2 FDCAN2_S
+#define FDCAN2_BASE FDCAN2_BASE_S
+
+#define DAC1 DAC1_S
+#define DAC1_BASE DAC1_BASE_S
+
+#define LPTIM1 LPTIM1_S
+#define LPTIM1_BASE LPTIM1_BASE_S
+
+#define LPTIM2 LPTIM2_S
+#define LPTIM2_BASE LPTIM2_BASE_S
+
+#define LPTIM3 LPTIM3_S
+#define LPTIM3_BASE LPTIM3_BASE_S
+
+#define LPTIM4 LPTIM4_S
+#define LPTIM4_BASE LPTIM4_BASE_S
+
+#define LPTIM5 LPTIM5_S
+#define LPTIM5_BASE LPTIM5_BASE_S
+
+#define LPTIM6 LPTIM6_S
+#define LPTIM6_BASE LPTIM6_BASE_S
+
+#define LPUART1 LPUART1_S
+#define LPUART1_BASE LPUART1_BASE_S
+
+#define UCPD1 UCPD1_S
+#define UCPD1_BASE UCPD1_BASE_S
+
+#define SBS SBS_S
+#define SBS_BASE SBS_BASE_S
+
+#define VREFBUF VREFBUF_S
+#define VREFBUF_BASE VREFBUF_BASE_S
+
+#define SAI1 SAI1_S
+#define SAI1_BASE SAI1_BASE_S
+
+#define SAI1_Block_A SAI1_Block_A_S
+#define SAI1_Block_A_BASE SAI1_Block_A_BASE_S
+
+#define SAI1_Block_B SAI1_Block_B_S
+#define SAI1_Block_B_BASE SAI1_Block_B_BASE_S
+
+#define SAI2 SAI2_S
+#define SAI2_BASE SAI2_BASE_S
+
+#define SAI2_Block_A SAI2_Block_A_S
+#define SAI2_Block_A_BASE SAI2_Block_A_BASE_S
+
+#define SAI2_Block_B SAI2_Block_B_S
+#define SAI2_Block_B_BASE SAI2_Block_B_BASE_S
+
+#define USB_DRD_FS USB_DRD_FS_S
+#define USB_DRD_BASE USB_DRD_BASE_S
+#define USB_DRD_PMAADDR USB_DRD_PMAADDR_S
+#define USB_DRD_PMA_BUFF USB_DRD_PMA_BUFF_S
+
+#define CRC CRC_S
+#define CRC_BASE CRC_BASE_S
+
+#define ADC1 ADC1_S
+#define ADC1_BASE ADC1_BASE_S
+
+#define ADC2 ADC2_S
+#define ADC2_BASE ADC2_BASE_S
+
+#define ADC12_COMMON ADC12_COMMON_S
+#define ADC12_COMMON_BASE ADC12_COMMON_BASE_S
+
+#define HASH HASH_S
+#define HASH_BASE HASH_BASE_S
+
+#define HASH_DIGEST HASH_DIGEST_S
+#define HASH_DIGEST_BASE HASH_DIGEST_BASE_S
+
+#define RNG RNG_S
+#define RNG_BASE RNG_BASE_S
+
+#define PKA PKA_S
+#define PKA_BASE PKA_BASE_S
+#define PKA_RAM_BASE PKA_RAM_BASE_S
+
+#define ETH ETH_S
+#define ETH_BASE ETH_BASE_S
+#define ETH_MAC ETH_MAC_S
+#define ETH_MAC_BASE ETH_MAC_BASE_S
+
+#define SDMMC1 SDMMC1_S
+#define SDMMC1_BASE SDMMC1_BASE_S
+
+#define SDMMC2 SDMMC2_S
+#define SDMMC2_BASE SDMMC2_BASE_S
+
+#define FMC_Bank1_R FMC_Bank1_R_S
+#define FMC_Bank1_R_BASE FMC_Bank1_R_BASE_S
+
+#define FMC_Bank1E_R FMC_Bank1E_R_S
+#define FMC_Bank1E_R_BASE FMC_Bank1E_R_BASE_S
+
+#define FMC_Bank3_R FMC_Bank3_R_S
+#define FMC_Bank3_R_BASE FMC_Bank3_R_BASE_S
+
+#define FMC_Bank5_6_R FMC_Bank5_6_R_S
+#define FMC_Bank5_6_R_BASE FMC_Bank5_6_R_BASE_S
+
+#define OCTOSPI1 OCTOSPI1_S
+#define OCTOSPI1_R_BASE OCTOSPI1_R_BASE_S
+
+#define DLYB_SDMMC1 DLYB_SDMMC1_S
+#define DLYB_SDMMC1_BASE DLYB_SDMMC1_BASE_S
+
+#define DLYB_SDMMC2 DLYB_SDMMC2_S
+#define DLYB_SDMMC2_BASE DLYB_SDMMC2_BASE_S
+
+#define DLYB_OCTOSPI1 DLYB_OCTOSPI1_S
+#define DLYB_OCTOSPI1_BASE DLYB_OCTOSPI1_BASE_S
+
+#else
+
+/*!< Memory base addresses for Non secure peripherals */
+#define FLASH_BASE FLASH_BASE_NS
+#define FLASH_OBK_BASE FLASH_OBK_BASE_NS
+#define FLASH_EDATA_BASE FLASH_EDATA_BASE_NS
+#define FLASH_SYSTEM_BASE FLASH_SYSTEM_BASE_NS
+
+#define SRAM1_BASE SRAM1_BASE_NS
+#define SRAM2_BASE SRAM2_BASE_NS
+
+#define SRAM3_BASE SRAM3_BASE_NS
+#define BKPSRAM_BASE BKPSRAM_BASE_NS
+
+#define PERIPH_BASE PERIPH_BASE_NS
+#define APB1PERIPH_BASE APB1PERIPH_BASE_NS
+#define APB2PERIPH_BASE APB2PERIPH_BASE_NS
+#define APB3PERIPH_BASE APB3PERIPH_BASE_NS
+#define AHB1PERIPH_BASE AHB1PERIPH_BASE_NS
+#define AHB2PERIPH_BASE AHB2PERIPH_BASE_NS
+#define AHB3PERIPH_BASE AHB3PERIPH_BASE_NS
+#define AHB4PERIPH_BASE AHB4PERIPH_BASE_NS
+
+/*!< Instance aliases and base addresses for Non secure peripherals */
+#define CORDIC CORDIC_NS
+#define CORDIC_BASE CORDIC_BASE_NS
+
+#define RCC RCC_NS
+#define RCC_BASE RCC_BASE_NS
+
+#define DCMI DCMI_NS
+#define DCMI_BASE DCMI_BASE_NS
+
+#define PSSI PSSI_NS
+#define PSSI_BASE PSSI_BASE_NS
+
+#define DTS DTS_NS
+#define DTS_BASE DTS_BASE_NS
+
+#define FLASH FLASH_NS
+#define FLASH_R_BASE FLASH_R_BASE_NS
+
+#define FMAC FMAC_NS
+#define FMAC_BASE FMAC_BASE_NS
+
+#define GPDMA1 GPDMA1_NS
+#define GPDMA1_BASE GPDMA1_BASE_NS
+
+#define GPDMA1_Channel0 GPDMA1_Channel0_NS
+#define GPDMA1_Channel0_BASE GPDMA1_Channel0_BASE_NS
+
+#define GPDMA1_Channel1 GPDMA1_Channel1_NS
+#define GPDMA1_Channel1_BASE GPDMA1_Channel1_BASE_NS
+
+#define GPDMA1_Channel2 GPDMA1_Channel2_NS
+#define GPDMA1_Channel2_BASE GPDMA1_Channel2_BASE_NS
+
+#define GPDMA1_Channel3 GPDMA1_Channel3_NS
+#define GPDMA1_Channel3_BASE GPDMA1_Channel3_BASE_NS
+
+#define GPDMA1_Channel4 GPDMA1_Channel4_NS
+#define GPDMA1_Channel4_BASE GPDMA1_Channel4_BASE_NS
+
+#define GPDMA1_Channel5 GPDMA1_Channel5_NS
+#define GPDMA1_Channel5_BASE GPDMA1_Channel5_BASE_NS
+
+#define GPDMA1_Channel6 GPDMA1_Channel6_NS
+#define GPDMA1_Channel6_BASE GPDMA1_Channel6_BASE_NS
+
+#define GPDMA1_Channel7 GPDMA1_Channel7_NS
+#define GPDMA1_Channel7_BASE GPDMA1_Channel7_BASE_NS
+
+#define GPDMA2 GPDMA2_NS
+#define GPDMA2_BASE GPDMA2_BASE_NS
+
+#define GPDMA2_Channel0 GPDMA2_Channel0_NS
+#define GPDMA2_Channel0_BASE GPDMA2_Channel0_BASE_NS
+
+#define GPDMA2_Channel1 GPDMA2_Channel1_NS
+#define GPDMA2_Channel1_BASE GPDMA2_Channel1_BASE_NS
+
+#define GPDMA2_Channel2 GPDMA2_Channel2_NS
+#define GPDMA2_Channel2_BASE GPDMA2_Channel2_BASE_NS
+
+#define GPDMA2_Channel3 GPDMA2_Channel3_NS
+#define GPDMA2_Channel3_BASE GPDMA2_Channel3_BASE_NS
+
+#define GPDMA2_Channel4 GPDMA2_Channel4_NS
+#define GPDMA2_Channel4_BASE GPDMA2_Channel4_BASE_NS
+
+#define GPDMA2_Channel5 GPDMA2_Channel5_NS
+#define GPDMA2_Channel5_BASE GPDMA2_Channel5_BASE_NS
+
+#define GPDMA2_Channel6 GPDMA2_Channel6_NS
+#define GPDMA2_Channel6_BASE GPDMA2_Channel6_BASE_NS
+
+#define GPDMA2_Channel7 GPDMA2_Channel7_NS
+#define GPDMA2_Channel7_BASE GPDMA2_Channel7_BASE_NS
+
+#define GPIOA GPIOA_NS
+#define GPIOA_BASE GPIOA_BASE_NS
+
+#define GPIOB GPIOB_NS
+#define GPIOB_BASE GPIOB_BASE_NS
+
+#define GPIOC GPIOC_NS
+#define GPIOC_BASE GPIOC_BASE_NS
+
+#define GPIOD GPIOD_NS
+#define GPIOD_BASE GPIOD_BASE_NS
+
+#define GPIOE GPIOE_NS
+#define GPIOE_BASE GPIOE_BASE_NS
+
+#define GPIOF GPIOF_NS
+#define GPIOF_BASE GPIOF_BASE_NS
+
+#define GPIOG GPIOG_NS
+#define GPIOG_BASE GPIOG_BASE_NS
+
+#define GPIOH GPIOH_NS
+#define GPIOH_BASE GPIOH_BASE_NS
+
+#define GPIOI GPIOI_NS
+#define GPIOI_BASE GPIOI_BASE_NS
+
+#define PWR PWR_NS
+#define PWR_BASE PWR_BASE_NS
+
+#define RAMCFG_SRAM1 RAMCFG_SRAM1_NS
+#define RAMCFG_SRAM1_BASE RAMCFG_SRAM1_BASE_NS
+
+#define RAMCFG_SRAM2 RAMCFG_SRAM2_NS
+#define RAMCFG_SRAM2_BASE RAMCFG_SRAM2_BASE_NS
+
+#define RAMCFG_SRAM3 RAMCFG_SRAM3_NS
+#define RAMCFG_SRAM3_BASE RAMCFG_SRAM3_BASE_NS
+
+#define RAMCFG_BKPRAM RAMCFG_BKPRAM_NS
+#define RAMCFG_BKPRAM_BASE RAMCFG_BKPRAM_BASE_NS
+
+#define EXTI EXTI_NS
+#define EXTI_BASE EXTI_BASE_NS
+
+#define ICACHE ICACHE_NS
+#define ICACHE_BASE ICACHE_BASE_NS
+
+#define DCACHE1 DCACHE1_NS
+#define DCACHE1_BASE DCACHE1_BASE_NS
+
+#define GTZC_TZSC1 GTZC_TZSC1_NS
+#define GTZC_TZSC1_BASE GTZC_TZSC1_BASE_NS
+
+#define GTZC_TZIC1 GTZC_TZIC1_NS
+#define GTZC_TZIC1_BASE GTZC_TZIC1_BASE_NS
+
+#define GTZC_MPCBB1 GTZC_MPCBB1_NS
+#define GTZC_MPCBB1_BASE GTZC_MPCBB1_BASE_NS
+
+#define GTZC_MPCBB2 GTZC_MPCBB2_NS
+#define GTZC_MPCBB2_BASE GTZC_MPCBB2_BASE_NS
+
+#define GTZC_MPCBB3 GTZC_MPCBB3_NS
+#define GTZC_MPCBB3_BASE GTZC_MPCBB3_BASE_NS
+
+#define RTC RTC_NS
+#define RTC_BASE RTC_BASE_NS
+
+#define TAMP TAMP_NS
+#define TAMP_BASE TAMP_BASE_NS
+
+#define TIM1 TIM1_NS
+#define TIM1_BASE TIM1_BASE_NS
+
+#define TIM2 TIM2_NS
+#define TIM2_BASE TIM2_BASE_NS
+
+#define TIM3 TIM3_NS
+#define TIM3_BASE TIM3_BASE_NS
+
+#define TIM4 TIM4_NS
+#define TIM4_BASE TIM4_BASE_NS
+
+#define TIM5 TIM5_NS
+#define TIM5_BASE TIM5_BASE_NS
+
+#define TIM6 TIM6_NS
+#define TIM6_BASE TIM6_BASE_NS
+
+#define TIM7 TIM7_NS
+#define TIM7_BASE TIM7_BASE_NS
+
+#define TIM8 TIM8_NS
+#define TIM8_BASE TIM8_BASE_NS
+
+#define TIM12 TIM12_NS
+#define TIM12_BASE TIM12_BASE_NS
+
+#define TIM13 TIM13_NS
+#define TIM13_BASE TIM13_BASE_NS
+
+#define TIM14 TIM14_NS
+#define TIM14_BASE TIM14_BASE_NS
+
+#define TIM15 TIM15_NS
+#define TIM15_BASE TIM15_BASE_NS
+
+#define TIM16 TIM16_NS
+#define TIM16_BASE TIM16_BASE_NS
+
+#define TIM17 TIM17_NS
+#define TIM17_BASE TIM17_BASE_NS
+
+#define WWDG WWDG_NS
+#define WWDG_BASE WWDG_BASE_NS
+
+#define IWDG IWDG_NS
+#define IWDG_BASE IWDG_BASE_NS
+
+#define SPI1 SPI1_NS
+#define SPI1_BASE SPI1_BASE_NS
+
+#define SPI2 SPI2_NS
+#define SPI2_BASE SPI2_BASE_NS
+
+#define SPI3 SPI3_NS
+#define SPI3_BASE SPI3_BASE_NS
+
+#define SPI4 SPI4_NS
+#define SPI4_BASE SPI4_BASE_NS
+
+#define SPI5 SPI5_NS
+#define SPI5_BASE SPI5_BASE_NS
+
+#define SPI6 SPI6_NS
+#define SPI6_BASE SPI6_BASE_NS
+
+#define USART1 USART1_NS
+#define USART1_BASE USART1_BASE_NS
+
+#define USART2 USART2_NS
+#define USART2_BASE USART2_BASE_NS
+
+#define USART3 USART3_NS
+#define USART3_BASE USART3_BASE_NS
+
+#define UART4 UART4_NS
+#define UART4_BASE UART4_BASE_NS
+
+#define UART5 UART5_NS
+#define UART5_BASE UART5_BASE_NS
+
+#define USART6 USART6_NS
+#define USART6_BASE USART6_BASE_NS
+
+#define UART7 UART7_NS
+#define UART7_BASE UART7_BASE_NS
+
+#define UART8 UART8_NS
+#define UART8_BASE UART8_BASE_NS
+
+#define UART9 UART9_NS
+#define UART9_BASE UART9_BASE_NS
+
+#define USART10 USART10_NS
+#define USART10_BASE USART10_BASE_NS
+
+#define USART11 USART11_NS
+#define USART11_BASE USART11_BASE_NS
+
+#define UART12 UART12_NS
+#define UART12_BASE UART12_BASE_NS
+
+#define CEC CEC_NS
+#define CEC_BASE CEC_BASE_NS
+
+#define I2C1 I2C1_NS
+#define I2C1_BASE I2C1_BASE_NS
+
+#define I2C2 I2C2_NS
+#define I2C2_BASE I2C2_BASE_NS
+
+#define I2C3 I2C3_NS
+#define I2C3_BASE I2C3_BASE_NS
+
+#define I2C4 I2C4_NS
+#define I2C4_BASE I2C4_BASE_NS
+
+#define I3C1 I3C1_NS
+#define I3C1_BASE I3C1_BASE_NS
+
+#define CRS CRS_NS
+#define CRS_BASE CRS_BASE_NS
+
+#define FDCAN1 FDCAN1_NS
+#define FDCAN1_BASE FDCAN1_BASE_NS
+
+#define FDCAN_CONFIG FDCAN_CONFIG_NS
+#define FDCAN_CONFIG_BASE FDCAN_CONFIG_BASE_NS
+#define SRAMCAN_BASE SRAMCAN_BASE_NS
+
+#define FDCAN2 FDCAN2_NS
+#define FDCAN2_BASE FDCAN2_BASE_NS
+
+#define DAC1 DAC1_NS
+#define DAC1_BASE DAC1_BASE_NS
+
+#define LPTIM1 LPTIM1_NS
+#define LPTIM1_BASE LPTIM1_BASE_NS
+
+#define LPTIM2 LPTIM2_NS
+#define LPTIM2_BASE LPTIM2_BASE_NS
+
+#define LPTIM3 LPTIM3_NS
+#define LPTIM3_BASE LPTIM3_BASE_NS
+
+#define LPTIM4 LPTIM4_NS
+#define LPTIM4_BASE LPTIM4_BASE_NS
+
+#define LPTIM5 LPTIM5_NS
+#define LPTIM5_BASE LPTIM5_BASE_NS
+
+#define LPTIM6 LPTIM6_NS
+#define LPTIM6_BASE LPTIM6_BASE_NS
+
+#define LPUART1 LPUART1_NS
+#define LPUART1_BASE LPUART1_BASE_NS
+
+#define UCPD1 UCPD1_NS
+#define UCPD1_BASE UCPD1_BASE_NS
+
+#define SBS SBS_NS
+#define SBS_BASE SBS_BASE_NS
+
+#define VREFBUF VREFBUF_NS
+#define VREFBUF_BASE VREFBUF_BASE_NS
+
+#define SAI1 SAI1_NS
+#define SAI1_BASE SAI1_BASE_NS
+
+#define SAI1_Block_A SAI1_Block_A_NS
+#define SAI1_Block_A_BASE SAI1_Block_A_BASE_NS
+
+#define SAI1_Block_B SAI1_Block_B_NS
+#define SAI1_Block_B_BASE SAI1_Block_B_BASE_NS
+
+#define SAI2 SAI2_NS
+#define SAI2_BASE SAI2_BASE_NS
+
+#define SAI2_Block_A SAI2_Block_A_NS
+#define SAI2_Block_A_BASE SAI2_Block_A_BASE_NS
+
+#define SAI2_Block_B SAI2_Block_B_NS
+#define SAI2_Block_B_BASE SAI2_Block_B_BASE_NS
+
+#define USB_DRD_FS USB_DRD_FS_NS
+#define USB_DRD_BASE USB_DRD_BASE_NS
+#define USB_DRD_PMAADDR USB_DRD_PMAADDR_NS
+#define USB_DRD_PMA_BUFF USB_DRD_PMA_BUFF_NS
+
+#define CRC CRC_NS
+#define CRC_BASE CRC_BASE_NS
+
+#define ADC1 ADC1_NS
+#define ADC1_BASE ADC1_BASE_NS
+
+#define ADC2 ADC2_NS
+#define ADC2_BASE ADC2_BASE_NS
+
+#define ADC12_COMMON ADC12_COMMON_NS
+#define ADC12_COMMON_BASE ADC12_COMMON_BASE_NS
+
+#define HASH HASH_NS
+#define HASH_BASE HASH_BASE_NS
+
+#define HASH_DIGEST HASH_DIGEST_NS
+#define HASH_DIGEST_BASE HASH_DIGEST_BASE_NS
+
+#define RNG RNG_NS
+#define RNG_BASE RNG_BASE_NS
+
+#define PKA PKA_NS
+#define PKA_BASE PKA_BASE_NS
+#define PKA_RAM_BASE PKA_RAM_BASE_NS
+
+
+#define ETH ETH_NS
+#define ETH_BASE ETH_BASE_NS
+#define ETH_MAC ETH_MAC_NS
+#define ETH_MAC_BASE ETH_MAC_BASE_NS
+
+#define SDMMC1 SDMMC1_NS
+#define SDMMC1_BASE SDMMC1_BASE_NS
+
+#define SDMMC2 SDMMC2_NS
+#define SDMMC2_BASE SDMMC2_BASE_NS
+
+#define FMC_Bank1_R FMC_Bank1_R_NS
+#define FMC_Bank1_R_BASE FMC_Bank1_R_BASE_NS
+
+#define FMC_Bank1E_R FMC_Bank1E_R_NS
+#define FMC_Bank1E_R_BASE FMC_Bank1E_R_BASE_NS
+
+#define FMC_Bank3_R FMC_Bank3_R_NS
+#define FMC_Bank3_R_BASE FMC_Bank3_R_BASE_NS
+
+#define FMC_Bank5_6_R FMC_Bank5_6_R_NS
+#define FMC_Bank5_6_R_BASE FMC_Bank5_6_R_BASE_NS
+
+#define OCTOSPI1 OCTOSPI1_NS
+#define OCTOSPI1_R_BASE OCTOSPI1_R_BASE_NS
+
+#define DLYB_SDMMC1 DLYB_SDMMC1_NS
+#define DLYB_SDMMC1_BASE DLYB_SDMMC1_BASE_NS
+
+#define DLYB_SDMMC2 DLYB_SDMMC2_NS
+#define DLYB_SDMMC2_BASE DLYB_SDMMC2_BASE_NS
+
+#define DLYB_OCTOSPI1 DLYB_OCTOSPI1_NS
+#define DLYB_OCTOSPI1_BASE DLYB_OCTOSPI1_BASE_NS
+
+#endif
+
+
+/******************************************************************************/
+/* */
+/* Analog to Digital Converter */
+/* */
+/******************************************************************************/
+#define ADC_MULTIMODE_SUPPORT /*!< ADC feature available only on specific devices: multimode available on devices with several ADC instances */
+/******************** Bit definition for ADC_ISR register *******************/
+#define ADC_ISR_ADRDY_Pos (0U)
+#define ADC_ISR_ADRDY_Msk (0x1UL << ADC_ISR_ADRDY_Pos) /*!< 0x00000001 */
+#define ADC_ISR_ADRDY ADC_ISR_ADRDY_Msk /*!< ADC ready flag */
+#define ADC_ISR_EOSMP_Pos (1U)
+#define ADC_ISR_EOSMP_Msk (0x1UL << ADC_ISR_EOSMP_Pos) /*!< 0x00000002 */
+#define ADC_ISR_EOSMP ADC_ISR_EOSMP_Msk /*!< ADC group regular end of sampling flag */
+#define ADC_ISR_EOC_Pos (2U)
+#define ADC_ISR_EOC_Msk (0x1UL << ADC_ISR_EOC_Pos) /*!< 0x00000004 */
+#define ADC_ISR_EOC ADC_ISR_EOC_Msk /*!< ADC group regular end of unitary conversion flag */
+#define ADC_ISR_EOS_Pos (3U)
+#define ADC_ISR_EOS_Msk (0x1UL << ADC_ISR_EOS_Pos) /*!< 0x00000008 */
+#define ADC_ISR_EOS ADC_ISR_EOS_Msk /*!< ADC group regular end of sequence conversions flag */
+#define ADC_ISR_OVR_Pos (4U)
+#define ADC_ISR_OVR_Msk (0x1UL << ADC_ISR_OVR_Pos) /*!< 0x00000010 */
+#define ADC_ISR_OVR ADC_ISR_OVR_Msk /*!< ADC group regular overrun flag */
+#define ADC_ISR_JEOC_Pos (5U)
+#define ADC_ISR_JEOC_Msk (0x1UL << ADC_ISR_JEOC_Pos) /*!< 0x00000020 */
+#define ADC_ISR_JEOC ADC_ISR_JEOC_Msk /*!< ADC group injected end of unitary conversion flag */
+#define ADC_ISR_JEOS_Pos (6U)
+#define ADC_ISR_JEOS_Msk (0x1UL << ADC_ISR_JEOS_Pos) /*!< 0x00000040 */
+#define ADC_ISR_JEOS ADC_ISR_JEOS_Msk /*!< ADC group injected end of sequence conversions flag */
+#define ADC_ISR_AWD1_Pos (7U)
+#define ADC_ISR_AWD1_Msk (0x1UL << ADC_ISR_AWD1_Pos) /*!< 0x00000080 */
+#define ADC_ISR_AWD1 ADC_ISR_AWD1_Msk /*!< ADC analog watchdog 1 flag */
+#define ADC_ISR_AWD2_Pos (8U)
+#define ADC_ISR_AWD2_Msk (0x1UL << ADC_ISR_AWD2_Pos) /*!< 0x00000100 */
+#define ADC_ISR_AWD2 ADC_ISR_AWD2_Msk /*!< ADC analog watchdog 2 flag */
+#define ADC_ISR_AWD3_Pos (9U)
+#define ADC_ISR_AWD3_Msk (0x1UL << ADC_ISR_AWD3_Pos) /*!< 0x00000200 */
+#define ADC_ISR_AWD3 ADC_ISR_AWD3_Msk /*!< ADC analog watchdog 3 flag */
+#define ADC_ISR_JQOVF_Pos (10U)
+#define ADC_ISR_JQOVF_Msk (0x1UL << ADC_ISR_JQOVF_Pos) /*!< 0x00000400 */
+#define ADC_ISR_JQOVF ADC_ISR_JQOVF_Msk /*!< ADC group injected contexts queue overflow flag */
+
+/******************** Bit definition for ADC_IER register *******************/
+#define ADC_IER_ADRDYIE_Pos (0U)
+#define ADC_IER_ADRDYIE_Msk (0x1UL << ADC_IER_ADRDYIE_Pos) /*!< 0x00000001 */
+#define ADC_IER_ADRDYIE ADC_IER_ADRDYIE_Msk /*!< ADC ready interrupt */
+#define ADC_IER_EOSMPIE_Pos (1U)
+#define ADC_IER_EOSMPIE_Msk (0x1UL << ADC_IER_EOSMPIE_Pos) /*!< 0x00000002 */
+#define ADC_IER_EOSMPIE ADC_IER_EOSMPIE_Msk /*!< ADC group regular end of sampling interrupt */
+#define ADC_IER_EOCIE_Pos (2U)
+#define ADC_IER_EOCIE_Msk (0x1UL << ADC_IER_EOCIE_Pos) /*!< 0x00000004 */
+#define ADC_IER_EOCIE ADC_IER_EOCIE_Msk /*!< ADC group regular end of unitary conversion interrupt */
+#define ADC_IER_EOSIE_Pos (3U)
+#define ADC_IER_EOSIE_Msk (0x1UL << ADC_IER_EOSIE_Pos) /*!< 0x00000008 */
+#define ADC_IER_EOSIE ADC_IER_EOSIE_Msk /*!< ADC group regular end of sequence conversions interrupt */
+#define ADC_IER_OVRIE_Pos (4U)
+#define ADC_IER_OVRIE_Msk (0x1UL << ADC_IER_OVRIE_Pos) /*!< 0x00000010 */
+#define ADC_IER_OVRIE ADC_IER_OVRIE_Msk /*!< ADC group regular overrun interrupt */
+#define ADC_IER_JEOCIE_Pos (5U)
+#define ADC_IER_JEOCIE_Msk (0x1UL << ADC_IER_JEOCIE_Pos) /*!< 0x00000020 */
+#define ADC_IER_JEOCIE ADC_IER_JEOCIE_Msk /*!< ADC group injected end of unitary conversion interrupt */
+#define ADC_IER_JEOSIE_Pos (6U)
+#define ADC_IER_JEOSIE_Msk (0x1UL << ADC_IER_JEOSIE_Pos) /*!< 0x00000040 */
+#define ADC_IER_JEOSIE ADC_IER_JEOSIE_Msk /*!< ADC group injected end of sequence conversions interrupt */
+#define ADC_IER_AWD1IE_Pos (7U)
+#define ADC_IER_AWD1IE_Msk (0x1UL << ADC_IER_AWD1IE_Pos) /*!< 0x00000080 */
+#define ADC_IER_AWD1IE ADC_IER_AWD1IE_Msk /*!< ADC analog watchdog 1 interrupt */
+#define ADC_IER_AWD2IE_Pos (8U)
+#define ADC_IER_AWD2IE_Msk (0x1UL << ADC_IER_AWD2IE_Pos) /*!< 0x00000100 */
+#define ADC_IER_AWD2IE ADC_IER_AWD2IE_Msk /*!< ADC analog watchdog 2 interrupt */
+#define ADC_IER_AWD3IE_Pos (9U)
+#define ADC_IER_AWD3IE_Msk (0x1UL << ADC_IER_AWD3IE_Pos) /*!< 0x00000200 */
+#define ADC_IER_AWD3IE ADC_IER_AWD3IE_Msk /*!< ADC analog watchdog 3 interrupt */
+#define ADC_IER_JQOVFIE_Pos (10U)
+#define ADC_IER_JQOVFIE_Msk (0x1UL << ADC_IER_JQOVFIE_Pos) /*!< 0x00000400 */
+#define ADC_IER_JQOVFIE ADC_IER_JQOVFIE_Msk /*!< ADC group injected contexts queue overflow interrupt */
+
+/******************** Bit definition for ADC_CR register ********************/
+#define ADC_CR_ADEN_Pos (0U)
+#define ADC_CR_ADEN_Msk (0x1UL << ADC_CR_ADEN_Pos) /*!< 0x00000001 */
+#define ADC_CR_ADEN ADC_CR_ADEN_Msk /*!< ADC enable */
+#define ADC_CR_ADDIS_Pos (1U)
+#define ADC_CR_ADDIS_Msk (0x1UL << ADC_CR_ADDIS_Pos) /*!< 0x00000002 */
+#define ADC_CR_ADDIS ADC_CR_ADDIS_Msk /*!< ADC disable */
+#define ADC_CR_ADSTART_Pos (2U)
+#define ADC_CR_ADSTART_Msk (0x1UL << ADC_CR_ADSTART_Pos) /*!< 0x00000004 */
+#define ADC_CR_ADSTART ADC_CR_ADSTART_Msk /*!< ADC group regular conversion start */
+#define ADC_CR_JADSTART_Pos (3U)
+#define ADC_CR_JADSTART_Msk (0x1UL << ADC_CR_JADSTART_Pos) /*!< 0x00000008 */
+#define ADC_CR_JADSTART ADC_CR_JADSTART_Msk /*!< ADC group injected conversion start */
+#define ADC_CR_ADSTP_Pos (4U)
+#define ADC_CR_ADSTP_Msk (0x1UL << ADC_CR_ADSTP_Pos) /*!< 0x00000010 */
+#define ADC_CR_ADSTP ADC_CR_ADSTP_Msk /*!< ADC group regular conversion stop */
+#define ADC_CR_JADSTP_Pos (5U)
+#define ADC_CR_JADSTP_Msk (0x1UL << ADC_CR_JADSTP_Pos) /*!< 0x00000020 */
+#define ADC_CR_JADSTP ADC_CR_JADSTP_Msk /*!< ADC group injected conversion stop */
+#define ADC_CR_ADVREGEN_Pos (28U)
+#define ADC_CR_ADVREGEN_Msk (0x1UL << ADC_CR_ADVREGEN_Pos) /*!< 0x10000000 */
+#define ADC_CR_ADVREGEN ADC_CR_ADVREGEN_Msk /*!< ADC voltage regulator enable */
+#define ADC_CR_DEEPPWD_Pos (29U)
+#define ADC_CR_DEEPPWD_Msk (0x1UL << ADC_CR_DEEPPWD_Pos) /*!< 0x20000000 */
+#define ADC_CR_DEEPPWD ADC_CR_DEEPPWD_Msk /*!< ADC deep power down enable */
+#define ADC_CR_ADCALDIF_Pos (30U)
+#define ADC_CR_ADCALDIF_Msk (0x1UL << ADC_CR_ADCALDIF_Pos) /*!< 0x40000000 */
+#define ADC_CR_ADCALDIF ADC_CR_ADCALDIF_Msk /*!< ADC differential mode for calibration */
+#define ADC_CR_ADCAL_Pos (31U)
+#define ADC_CR_ADCAL_Msk (0x1UL << ADC_CR_ADCAL_Pos) /*!< 0x80000000 */
+#define ADC_CR_ADCAL ADC_CR_ADCAL_Msk /*!< ADC calibration */
+
+/******************** Bit definition for ADC_CFGR register ******************/
+#define ADC_CFGR_DMAEN_Pos (0U)
+#define ADC_CFGR_DMAEN_Msk (0x1UL << ADC_CFGR_DMAEN_Pos) /*!< 0x00000001 */
+#define ADC_CFGR_DMAEN ADC_CFGR_DMAEN_Msk /*!< ADC DMA transfer enable */
+#define ADC_CFGR_DMACFG_Pos (1U)
+#define ADC_CFGR_DMACFG_Msk (0x1UL << ADC_CFGR_DMACFG_Pos) /*!< 0x00000002 */
+#define ADC_CFGR_DMACFG ADC_CFGR_DMACFG_Msk /*!< ADC DMA transfer configuration */
+
+#define ADC_CFGR_RES_Pos (3U)
+#define ADC_CFGR_RES_Msk (0x3UL << ADC_CFGR_RES_Pos) /*!< 0x00000018 */
+#define ADC_CFGR_RES ADC_CFGR_RES_Msk /*!< ADC data resolution */
+#define ADC_CFGR_RES_0 (0x1UL << ADC_CFGR_RES_Pos) /*!< 0x00000008 */
+#define ADC_CFGR_RES_1 (0x2UL << ADC_CFGR_RES_Pos) /*!< 0x00000010 */
+
+#define ADC_CFGR_EXTSEL_Pos (5U)
+#define ADC_CFGR_EXTSEL_Msk (0x1FUL << ADC_CFGR_EXTSEL_Pos) /*!< 0x000003E0 */
+#define ADC_CFGR_EXTSEL ADC_CFGR_EXTSEL_Msk /*!< ADC group regular external trigger source */
+#define ADC_CFGR_EXTSEL_0 (0x1UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000020 */
+#define ADC_CFGR_EXTSEL_1 (0x2UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000040 */
+#define ADC_CFGR_EXTSEL_2 (0x4UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000080 */
+#define ADC_CFGR_EXTSEL_3 (0x8UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000100 */
+#define ADC_CFGR_EXTSEL_4 (0x10UL << ADC_CFGR_EXTSEL_Pos) /*!< 0x00000200 */
+
+#define ADC_CFGR_EXTEN_Pos (10U)
+#define ADC_CFGR_EXTEN_Msk (0x3UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000C00 */
+#define ADC_CFGR_EXTEN ADC_CFGR_EXTEN_Msk /*!< ADC group regular external trigger polarity */
+#define ADC_CFGR_EXTEN_0 (0x1UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000400 */
+#define ADC_CFGR_EXTEN_1 (0x2UL << ADC_CFGR_EXTEN_Pos) /*!< 0x00000800 */
+
+#define ADC_CFGR_OVRMOD_Pos (12U)
+#define ADC_CFGR_OVRMOD_Msk (0x1UL << ADC_CFGR_OVRMOD_Pos) /*!< 0x00001000 */
+#define ADC_CFGR_OVRMOD ADC_CFGR_OVRMOD_Msk /*!< ADC group regular overrun configuration */
+#define ADC_CFGR_CONT_Pos (13U)
+#define ADC_CFGR_CONT_Msk (0x1UL << ADC_CFGR_CONT_Pos) /*!< 0x00002000 */
+#define ADC_CFGR_CONT ADC_CFGR_CONT_Msk /*!< ADC group regular continuous conversion mode */
+#define ADC_CFGR_AUTDLY_Pos (14U)
+#define ADC_CFGR_AUTDLY_Msk (0x1UL << ADC_CFGR_AUTDLY_Pos) /*!< 0x00004000 */
+#define ADC_CFGR_AUTDLY ADC_CFGR_AUTDLY_Msk /*!< ADC low power auto wait */
+#define ADC_CFGR_ALIGN_Pos (15U)
+#define ADC_CFGR_ALIGN_Msk (0x1UL << ADC_CFGR_ALIGN_Pos) /*!< 0x00008000 */
+#define ADC_CFGR_ALIGN ADC_CFGR_ALIGN_Msk /*!< ADC data alignment */
+#define ADC_CFGR_DISCEN_Pos (16U)
+#define ADC_CFGR_DISCEN_Msk (0x1UL << ADC_CFGR_DISCEN_Pos) /*!< 0x00010000 */
+#define ADC_CFGR_DISCEN ADC_CFGR_DISCEN_Msk /*!< ADC group regular sequencer discontinuous mode */
+
+#define ADC_CFGR_DISCNUM_Pos (17U)
+#define ADC_CFGR_DISCNUM_Msk (0x7UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x000E0000 */
+#define ADC_CFGR_DISCNUM ADC_CFGR_DISCNUM_Msk /*!< ADC group regular sequencer discontinuous number of ranks */
+#define ADC_CFGR_DISCNUM_0 (0x1UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00020000 */
+#define ADC_CFGR_DISCNUM_1 (0x2UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00040000 */
+#define ADC_CFGR_DISCNUM_2 (0x4UL << ADC_CFGR_DISCNUM_Pos) /*!< 0x00080000 */
+
+#define ADC_CFGR_JDISCEN_Pos (20U)
+#define ADC_CFGR_JDISCEN_Msk (0x1UL << ADC_CFGR_JDISCEN_Pos) /*!< 0x00100000 */
+#define ADC_CFGR_JDISCEN ADC_CFGR_JDISCEN_Msk /*!< ADC group injected sequencer discontinuous mode */
+#define ADC_CFGR_JQM_Pos (21U)
+#define ADC_CFGR_JQM_Msk (0x1UL << ADC_CFGR_JQM_Pos) /*!< 0x00200000 */
+#define ADC_CFGR_JQM ADC_CFGR_JQM_Msk /*!< ADC group injected contexts queue mode */
+#define ADC_CFGR_AWD1SGL_Pos (22U)
+#define ADC_CFGR_AWD1SGL_Msk (0x1UL << ADC_CFGR_AWD1SGL_Pos) /*!< 0x00400000 */
+#define ADC_CFGR_AWD1SGL ADC_CFGR_AWD1SGL_Msk /*!< ADC analog watchdog 1 monitoring a single channel or all channels */
+#define ADC_CFGR_AWD1EN_Pos (23U)
+#define ADC_CFGR_AWD1EN_Msk (0x1UL << ADC_CFGR_AWD1EN_Pos) /*!< 0x00800000 */
+#define ADC_CFGR_AWD1EN ADC_CFGR_AWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group regular */
+#define ADC_CFGR_JAWD1EN_Pos (24U)
+#define ADC_CFGR_JAWD1EN_Msk (0x1UL << ADC_CFGR_JAWD1EN_Pos) /*!< 0x01000000 */
+#define ADC_CFGR_JAWD1EN ADC_CFGR_JAWD1EN_Msk /*!< ADC analog watchdog 1 enable on scope ADC group injected */
+#define ADC_CFGR_JAUTO_Pos (25U)
+#define ADC_CFGR_JAUTO_Msk (0x1UL << ADC_CFGR_JAUTO_Pos) /*!< 0x02000000 */
+#define ADC_CFGR_JAUTO ADC_CFGR_JAUTO_Msk /*!< ADC group injected automatic trigger mode */
+
+#define ADC_CFGR_AWD1CH_Pos (26U)
+#define ADC_CFGR_AWD1CH_Msk (0x1FUL << ADC_CFGR_AWD1CH_Pos) /*!< 0x7C000000 */
+#define ADC_CFGR_AWD1CH ADC_CFGR_AWD1CH_Msk /*!< ADC analog watchdog 1 monitored channel selection */
+#define ADC_CFGR_AWD1CH_0 (0x01UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x04000000 */
+#define ADC_CFGR_AWD1CH_1 (0x02UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x08000000 */
+#define ADC_CFGR_AWD1CH_2 (0x04UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x10000000 */
+#define ADC_CFGR_AWD1CH_3 (0x08UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x20000000 */
+#define ADC_CFGR_AWD1CH_4 (0x10UL << ADC_CFGR_AWD1CH_Pos) /*!< 0x40000000 */
+
+#define ADC_CFGR_JQDIS_Pos (31U)
+#define ADC_CFGR_JQDIS_Msk (0x1UL << ADC_CFGR_JQDIS_Pos) /*!< 0x80000000 */
+#define ADC_CFGR_JQDIS ADC_CFGR_JQDIS_Msk /*!< ADC group injected contexts queue disable */
+
+/******************** Bit definition for ADC_CFGR2 register *****************/
+#define ADC_CFGR2_ROVSE_Pos (0U)
+#define ADC_CFGR2_ROVSE_Msk (0x1UL << ADC_CFGR2_ROVSE_Pos) /*!< 0x00000001 */
+#define ADC_CFGR2_ROVSE ADC_CFGR2_ROVSE_Msk /*!< ADC oversampler enable on scope ADC group regular */
+#define ADC_CFGR2_JOVSE_Pos (1U)
+#define ADC_CFGR2_JOVSE_Msk (0x1UL << ADC_CFGR2_JOVSE_Pos) /*!< 0x00000002 */
+#define ADC_CFGR2_JOVSE ADC_CFGR2_JOVSE_Msk /*!< ADC oversampler enable on scope ADC group injected */
+
+#define ADC_CFGR2_OVSR_Pos (2U)
+#define ADC_CFGR2_OVSR_Msk (0x7UL << ADC_CFGR2_OVSR_Pos) /*!< 0x0000001C */
+#define ADC_CFGR2_OVSR ADC_CFGR2_OVSR_Msk /*!< ADC oversampling ratio */
+#define ADC_CFGR2_OVSR_0 (0x1UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000004 */
+#define ADC_CFGR2_OVSR_1 (0x2UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000008 */
+#define ADC_CFGR2_OVSR_2 (0x4UL << ADC_CFGR2_OVSR_Pos) /*!< 0x00000010 */
+
+#define ADC_CFGR2_OVSS_Pos (5U)
+#define ADC_CFGR2_OVSS_Msk (0xFUL << ADC_CFGR2_OVSS_Pos) /*!< 0x000001E0 */
+#define ADC_CFGR2_OVSS ADC_CFGR2_OVSS_Msk /*!< ADC oversampling shift */
+#define ADC_CFGR2_OVSS_0 (0x1UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000020 */
+#define ADC_CFGR2_OVSS_1 (0x2UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000040 */
+#define ADC_CFGR2_OVSS_2 (0x4UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000080 */
+#define ADC_CFGR2_OVSS_3 (0x8UL << ADC_CFGR2_OVSS_Pos) /*!< 0x00000100 */
+
+#define ADC_CFGR2_TROVS_Pos (9U)
+#define ADC_CFGR2_TROVS_Msk (0x1UL << ADC_CFGR2_TROVS_Pos) /*!< 0x00000200 */
+#define ADC_CFGR2_TROVS ADC_CFGR2_TROVS_Msk /*!< ADC oversampling discontinuous mode (triggered mode) for ADC group regular */
+#define ADC_CFGR2_ROVSM_Pos (10U)
+#define ADC_CFGR2_ROVSM_Msk (0x1UL << ADC_CFGR2_ROVSM_Pos) /*!< 0x00000400 */
+#define ADC_CFGR2_ROVSM ADC_CFGR2_ROVSM_Msk /*!< ADC oversampling mode managing interlaced conversions of ADC group regular and group injected */
+
+#define ADC_CFGR2_GCOMP_Pos (16U)
+#define ADC_CFGR2_GCOMP_Msk (0x1UL << ADC_CFGR2_GCOMP_Pos) /*!< 0x00010000 */
+#define ADC_CFGR2_GCOMP ADC_CFGR2_GCOMP_Msk /*!< ADC Gain Compensation mode */
+
+#define ADC_CFGR2_SWTRIG_Pos (25U)
+#define ADC_CFGR2_SWTRIG_Msk (0x1UL << ADC_CFGR2_SWTRIG_Pos) /*!< 0x02000000 */
+#define ADC_CFGR2_SWTRIG ADC_CFGR2_SWTRIG_Msk /*!< ADC Software Trigger Bit for Sample time control trigger mode */
+#define ADC_CFGR2_BULB_Pos (26U)
+#define ADC_CFGR2_BULB_Msk (0x1UL << ADC_CFGR2_BULB_Pos) /*!< 0x04000000 */
+#define ADC_CFGR2_BULB ADC_CFGR2_BULB_Msk /*!< ADC Bulb sampling mode */
+#define ADC_CFGR2_SMPTRIG_Pos (27U)
+#define ADC_CFGR2_SMPTRIG_Msk (0x1UL << ADC_CFGR2_SMPTRIG_Pos) /*!< 0x08000000 */
+#define ADC_CFGR2_SMPTRIG ADC_CFGR2_SMPTRIG_Msk /*!< ADC Sample Time Control Trigger mode */
+
+#define ADC_CFGR2_LFTRIG_Pos (29U)
+#define ADC_CFGR2_LFTRIG_Msk (0x1UL << ADC_CFGR2_LFTRIG_Pos) /*!< 0x20000000 */
+#define ADC_CFGR2_LFTRIG ADC_CFGR2_LFTRIG_Msk /*!< ADC Low Frequency Trigger */
+
+/******************** Bit definition for ADC_SMPR1 register *****************/
+#define ADC_SMPR1_SMP0_Pos (0U)
+#define ADC_SMPR1_SMP0_Msk (0x7UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000007 */
+#define ADC_SMPR1_SMP0 ADC_SMPR1_SMP0_Msk /*!< ADC channel 0 sampling time selection */
+#define ADC_SMPR1_SMP0_0 (0x1UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000001 */
+#define ADC_SMPR1_SMP0_1 (0x2UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000002 */
+#define ADC_SMPR1_SMP0_2 (0x4UL << ADC_SMPR1_SMP0_Pos) /*!< 0x00000004 */
+
+#define ADC_SMPR1_SMP1_Pos (3U)
+#define ADC_SMPR1_SMP1_Msk (0x7UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000038 */
+#define ADC_SMPR1_SMP1 ADC_SMPR1_SMP1_Msk /*!< ADC channel 1 sampling time selection */
+#define ADC_SMPR1_SMP1_0 (0x1UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000008 */
+#define ADC_SMPR1_SMP1_1 (0x2UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000010 */
+#define ADC_SMPR1_SMP1_2 (0x4UL << ADC_SMPR1_SMP1_Pos) /*!< 0x00000020 */
+
+#define ADC_SMPR1_SMP2_Pos (6U)
+#define ADC_SMPR1_SMP2_Msk (0x7UL << ADC_SMPR1_SMP2_Pos) /*!< 0x000001C0 */
+#define ADC_SMPR1_SMP2 ADC_SMPR1_SMP2_Msk /*!< ADC channel 2 sampling time selection */
+#define ADC_SMPR1_SMP2_0 (0x1UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000040 */
+#define ADC_SMPR1_SMP2_1 (0x2UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000080 */
+#define ADC_SMPR1_SMP2_2 (0x4UL << ADC_SMPR1_SMP2_Pos) /*!< 0x00000100 */
+
+#define ADC_SMPR1_SMP3_Pos (9U)
+#define ADC_SMPR1_SMP3_Msk (0x7UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000E00 */
+#define ADC_SMPR1_SMP3 ADC_SMPR1_SMP3_Msk /*!< ADC channel 3 sampling time selection */
+#define ADC_SMPR1_SMP3_0 (0x1UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000200 */
+#define ADC_SMPR1_SMP3_1 (0x2UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000400 */
+#define ADC_SMPR1_SMP3_2 (0x4UL << ADC_SMPR1_SMP3_Pos) /*!< 0x00000800 */
+
+#define ADC_SMPR1_SMP4_Pos (12U)
+#define ADC_SMPR1_SMP4_Msk (0x7UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00007000 */
+#define ADC_SMPR1_SMP4 ADC_SMPR1_SMP4_Msk /*!< ADC channel 4 sampling time selection */
+#define ADC_SMPR1_SMP4_0 (0x1UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00001000 */
+#define ADC_SMPR1_SMP4_1 (0x2UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00002000 */
+#define ADC_SMPR1_SMP4_2 (0x4UL << ADC_SMPR1_SMP4_Pos) /*!< 0x00004000 */
+
+#define ADC_SMPR1_SMP5_Pos (15U)
+#define ADC_SMPR1_SMP5_Msk (0x7UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00038000 */
+#define ADC_SMPR1_SMP5 ADC_SMPR1_SMP5_Msk /*!< ADC channel 5 sampling time selection */
+#define ADC_SMPR1_SMP5_0 (0x1UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00008000 */
+#define ADC_SMPR1_SMP5_1 (0x2UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00010000 */
+#define ADC_SMPR1_SMP5_2 (0x4UL << ADC_SMPR1_SMP5_Pos) /*!< 0x00020000 */
+
+#define ADC_SMPR1_SMP6_Pos (18U)
+#define ADC_SMPR1_SMP6_Msk (0x7UL << ADC_SMPR1_SMP6_Pos) /*!< 0x001C0000 */
+#define ADC_SMPR1_SMP6 ADC_SMPR1_SMP6_Msk /*!< ADC channel 6 sampling time selection */
+#define ADC_SMPR1_SMP6_0 (0x1UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00040000 */
+#define ADC_SMPR1_SMP6_1 (0x2UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00080000 */
+#define ADC_SMPR1_SMP6_2 (0x4UL << ADC_SMPR1_SMP6_Pos) /*!< 0x00100000 */
+
+#define ADC_SMPR1_SMP7_Pos (21U)
+#define ADC_SMPR1_SMP7_Msk (0x7UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00E00000 */
+#define ADC_SMPR1_SMP7 ADC_SMPR1_SMP7_Msk /*!< ADC channel 7 sampling time selection */
+#define ADC_SMPR1_SMP7_0 (0x1UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00200000 */
+#define ADC_SMPR1_SMP7_1 (0x2UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00400000 */
+#define ADC_SMPR1_SMP7_2 (0x4UL << ADC_SMPR1_SMP7_Pos) /*!< 0x00800000 */
+
+#define ADC_SMPR1_SMP8_Pos (24U)
+#define ADC_SMPR1_SMP8_Msk (0x7UL << ADC_SMPR1_SMP8_Pos) /*!< 0x07000000 */
+#define ADC_SMPR1_SMP8 ADC_SMPR1_SMP8_Msk /*!< ADC channel 8 sampling time selection */
+#define ADC_SMPR1_SMP8_0 (0x1UL << ADC_SMPR1_SMP8_Pos) /*!< 0x01000000 */
+#define ADC_SMPR1_SMP8_1 (0x2UL << ADC_SMPR1_SMP8_Pos) /*!< 0x02000000 */
+#define ADC_SMPR1_SMP8_2 (0x4UL << ADC_SMPR1_SMP8_Pos) /*!< 0x04000000 */
+
+#define ADC_SMPR1_SMP9_Pos (27U)
+#define ADC_SMPR1_SMP9_Msk (0x7UL << ADC_SMPR1_SMP9_Pos) /*!< 0x38000000 */
+#define ADC_SMPR1_SMP9 ADC_SMPR1_SMP9_Msk /*!< ADC channel 9 sampling time selection */
+#define ADC_SMPR1_SMP9_0 (0x1UL << ADC_SMPR1_SMP9_Pos) /*!< 0x08000000 */
+#define ADC_SMPR1_SMP9_1 (0x2UL << ADC_SMPR1_SMP9_Pos) /*!< 0x10000000 */
+#define ADC_SMPR1_SMP9_2 (0x4UL << ADC_SMPR1_SMP9_Pos) /*!< 0x20000000 */
+
+#define ADC_SMPR1_SMPPLUS_Pos (31U)
+#define ADC_SMPR1_SMPPLUS_Msk (0x1UL << ADC_SMPR1_SMPPLUS_Pos) /*!< 0x80000000 */
+#define ADC_SMPR1_SMPPLUS ADC_SMPR1_SMPPLUS_Msk /*!< ADC channels sampling time additional setting */
+
+/******************** Bit definition for ADC_SMPR2 register *****************/
+#define ADC_SMPR2_SMP10_Pos (0U)
+#define ADC_SMPR2_SMP10_Msk (0x7UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000007 */
+#define ADC_SMPR2_SMP10 ADC_SMPR2_SMP10_Msk /*!< ADC channel 10 sampling time selection */
+#define ADC_SMPR2_SMP10_0 (0x1UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000001 */
+#define ADC_SMPR2_SMP10_1 (0x2UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000002 */
+#define ADC_SMPR2_SMP10_2 (0x4UL << ADC_SMPR2_SMP10_Pos) /*!< 0x00000004 */
+
+#define ADC_SMPR2_SMP11_Pos (3U)
+#define ADC_SMPR2_SMP11_Msk (0x7UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000038 */
+#define ADC_SMPR2_SMP11 ADC_SMPR2_SMP11_Msk /*!< ADC channel 11 sampling time selection */
+#define ADC_SMPR2_SMP11_0 (0x1UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000008 */
+#define ADC_SMPR2_SMP11_1 (0x2UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000010 */
+#define ADC_SMPR2_SMP11_2 (0x4UL << ADC_SMPR2_SMP11_Pos) /*!< 0x00000020 */
+
+#define ADC_SMPR2_SMP12_Pos (6U)
+#define ADC_SMPR2_SMP12_Msk (0x7UL << ADC_SMPR2_SMP12_Pos) /*!< 0x000001C0 */
+#define ADC_SMPR2_SMP12 ADC_SMPR2_SMP12_Msk /*!< ADC channel 12 sampling time selection */
+#define ADC_SMPR2_SMP12_0 (0x1UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000040 */
+#define ADC_SMPR2_SMP12_1 (0x2UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000080 */
+#define ADC_SMPR2_SMP12_2 (0x4UL << ADC_SMPR2_SMP12_Pos) /*!< 0x00000100 */
+
+#define ADC_SMPR2_SMP13_Pos (9U)
+#define ADC_SMPR2_SMP13_Msk (0x7UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000E00 */
+#define ADC_SMPR2_SMP13 ADC_SMPR2_SMP13_Msk /*!< ADC channel 13 sampling time selection */
+#define ADC_SMPR2_SMP13_0 (0x1UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000200 */
+#define ADC_SMPR2_SMP13_1 (0x2UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000400 */
+#define ADC_SMPR2_SMP13_2 (0x4UL << ADC_SMPR2_SMP13_Pos) /*!< 0x00000800 */
+
+#define ADC_SMPR2_SMP14_Pos (12U)
+#define ADC_SMPR2_SMP14_Msk (0x7UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00007000 */
+#define ADC_SMPR2_SMP14 ADC_SMPR2_SMP14_Msk /*!< ADC channel 14 sampling time selection */
+#define ADC_SMPR2_SMP14_0 (0x1UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00001000 */
+#define ADC_SMPR2_SMP14_1 (0x2UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00002000 */
+#define ADC_SMPR2_SMP14_2 (0x4UL << ADC_SMPR2_SMP14_Pos) /*!< 0x00004000 */
+
+#define ADC_SMPR2_SMP15_Pos (15U)
+#define ADC_SMPR2_SMP15_Msk (0x7UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00038000 */
+#define ADC_SMPR2_SMP15 ADC_SMPR2_SMP15_Msk /*!< ADC channel 15 sampling time selection */
+#define ADC_SMPR2_SMP15_0 (0x1UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00008000 */
+#define ADC_SMPR2_SMP15_1 (0x2UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00010000 */
+#define ADC_SMPR2_SMP15_2 (0x4UL << ADC_SMPR2_SMP15_Pos) /*!< 0x00020000 */
+
+#define ADC_SMPR2_SMP16_Pos (18U)
+#define ADC_SMPR2_SMP16_Msk (0x7UL << ADC_SMPR2_SMP16_Pos) /*!< 0x001C0000 */
+#define ADC_SMPR2_SMP16 ADC_SMPR2_SMP16_Msk /*!< ADC channel 16 sampling time selection */
+#define ADC_SMPR2_SMP16_0 (0x1UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00040000 */
+#define ADC_SMPR2_SMP16_1 (0x2UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00080000 */
+#define ADC_SMPR2_SMP16_2 (0x4UL << ADC_SMPR2_SMP16_Pos) /*!< 0x00100000 */
+
+#define ADC_SMPR2_SMP17_Pos (21U)
+#define ADC_SMPR2_SMP17_Msk (0x7UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00E00000 */
+#define ADC_SMPR2_SMP17 ADC_SMPR2_SMP17_Msk /*!< ADC channel 17 sampling time selection */
+#define ADC_SMPR2_SMP17_0 (0x1UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00200000 */
+#define ADC_SMPR2_SMP17_1 (0x2UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00400000 */
+#define ADC_SMPR2_SMP17_2 (0x4UL << ADC_SMPR2_SMP17_Pos) /*!< 0x00800000 */
+
+#define ADC_SMPR2_SMP18_Pos (24U)
+#define ADC_SMPR2_SMP18_Msk (0x7UL << ADC_SMPR2_SMP18_Pos) /*!< 0x07000000 */
+#define ADC_SMPR2_SMP18 ADC_SMPR2_SMP18_Msk /*!< ADC channel 18 sampling time selection */
+#define ADC_SMPR2_SMP18_0 (0x1UL << ADC_SMPR2_SMP18_Pos) /*!< 0x01000000 */
+#define ADC_SMPR2_SMP18_1 (0x2UL << ADC_SMPR2_SMP18_Pos) /*!< 0x02000000 */
+#define ADC_SMPR2_SMP18_2 (0x4UL << ADC_SMPR2_SMP18_Pos) /*!< 0x04000000 */
+
+/******************** Bit definition for ADC_TR1 register *******************/
+#define ADC_TR1_LT1_Pos (0U)
+#define ADC_TR1_LT1_Msk (0xFFFUL << ADC_TR1_LT1_Pos) /*!< 0x00000FFF */
+#define ADC_TR1_LT1 ADC_TR1_LT1_Msk /*!< ADC analog watchdog 1 threshold low */
+
+#define ADC_TR1_AWDFILT_Pos (12U)
+#define ADC_TR1_AWDFILT_Msk (0x7UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00007000 */
+#define ADC_TR1_AWDFILT ADC_TR1_AWDFILT_Msk /*!< ADC analog watchdog filtering parameter */
+#define ADC_TR1_AWDFILT_0 (0x1UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00001000 */
+#define ADC_TR1_AWDFILT_1 (0x2UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00002000 */
+#define ADC_TR1_AWDFILT_2 (0x4UL << ADC_TR1_AWDFILT_Pos) /*!< 0x00004000 */
+
+#define ADC_TR1_HT1_Pos (16U)
+#define ADC_TR1_HT1_Msk (0xFFFUL << ADC_TR1_HT1_Pos) /*!< 0x0FFF0000 */
+#define ADC_TR1_HT1 ADC_TR1_HT1_Msk /*!< ADC analog watchdog 1 threshold high */
+
+/******************** Bit definition for ADC_TR2 register *******************/
+#define ADC_TR2_LT2_Pos (0U)
+#define ADC_TR2_LT2_Msk (0xFFUL << ADC_TR2_LT2_Pos) /*!< 0x000000FF */
+#define ADC_TR2_LT2 ADC_TR2_LT2_Msk /*!< ADC analog watchdog 2 threshold low */
+
+#define ADC_TR2_HT2_Pos (16U)
+#define ADC_TR2_HT2_Msk (0xFFUL << ADC_TR2_HT2_Pos) /*!< 0x00FF0000 */
+#define ADC_TR2_HT2 ADC_TR2_HT2_Msk /*!< ADC analog watchdog 2 threshold high */
+
+/******************** Bit definition for ADC_TR3 register *******************/
+#define ADC_TR3_LT3_Pos (0U)
+#define ADC_TR3_LT3_Msk (0xFFUL << ADC_TR3_LT3_Pos) /*!< 0x000000FF */
+#define ADC_TR3_LT3 ADC_TR3_LT3_Msk /*!< ADC analog watchdog 3 threshold low */
+
+#define ADC_TR3_HT3_Pos (16U)
+#define ADC_TR3_HT3_Msk (0xFFUL << ADC_TR3_HT3_Pos) /*!< 0x00FF0000 */
+#define ADC_TR3_HT3 ADC_TR3_HT3_Msk /*!< ADC analog watchdog 3 threshold high */
+
+/******************** Bit definition for ADC_SQR1 register ******************/
+#define ADC_SQR1_L_Pos (0U)
+#define ADC_SQR1_L_Msk (0xFUL << ADC_SQR1_L_Pos) /*!< 0x0000000F */
+#define ADC_SQR1_L ADC_SQR1_L_Msk /*!< ADC group regular sequencer scan length */
+#define ADC_SQR1_L_0 (0x1UL << ADC_SQR1_L_Pos) /*!< 0x00000001 */
+#define ADC_SQR1_L_1 (0x2UL << ADC_SQR1_L_Pos) /*!< 0x00000002 */
+#define ADC_SQR1_L_2 (0x4UL << ADC_SQR1_L_Pos) /*!< 0x00000004 */
+#define ADC_SQR1_L_3 (0x8UL << ADC_SQR1_L_Pos) /*!< 0x00000008 */
+
+#define ADC_SQR1_SQ1_Pos (6U)
+#define ADC_SQR1_SQ1_Msk (0x1FUL << ADC_SQR1_SQ1_Pos) /*!< 0x000007C0 */
+#define ADC_SQR1_SQ1 ADC_SQR1_SQ1_Msk /*!< ADC group regular sequencer rank 1 */
+#define ADC_SQR1_SQ1_0 (0x01UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000040 */
+#define ADC_SQR1_SQ1_1 (0x02UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000080 */
+#define ADC_SQR1_SQ1_2 (0x04UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000100 */
+#define ADC_SQR1_SQ1_3 (0x08UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000200 */
+#define ADC_SQR1_SQ1_4 (0x10UL << ADC_SQR1_SQ1_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR1_SQ2_Pos (12U)
+#define ADC_SQR1_SQ2_Msk (0x1FUL << ADC_SQR1_SQ2_Pos) /*!< 0x0001F000 */
+#define ADC_SQR1_SQ2 ADC_SQR1_SQ2_Msk /*!< ADC group regular sequencer rank 2 */
+#define ADC_SQR1_SQ2_0 (0x01UL << ADC_SQR1_SQ2_Pos) /*!< 0x00001000 */
+#define ADC_SQR1_SQ2_1 (0x02UL << ADC_SQR1_SQ2_Pos) /*!< 0x00002000 */
+#define ADC_SQR1_SQ2_2 (0x04UL << ADC_SQR1_SQ2_Pos) /*!< 0x00004000 */
+#define ADC_SQR1_SQ2_3 (0x08UL << ADC_SQR1_SQ2_Pos) /*!< 0x00008000 */
+#define ADC_SQR1_SQ2_4 (0x10UL << ADC_SQR1_SQ2_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR1_SQ3_Pos (18U)
+#define ADC_SQR1_SQ3_Msk (0x1FUL << ADC_SQR1_SQ3_Pos) /*!< 0x007C0000 */
+#define ADC_SQR1_SQ3 ADC_SQR1_SQ3_Msk /*!< ADC group regular sequencer rank 3 */
+#define ADC_SQR1_SQ3_0 (0x01UL << ADC_SQR1_SQ3_Pos) /*!< 0x00040000 */
+#define ADC_SQR1_SQ3_1 (0x02UL << ADC_SQR1_SQ3_Pos) /*!< 0x00080000 */
+#define ADC_SQR1_SQ3_2 (0x04UL << ADC_SQR1_SQ3_Pos) /*!< 0x00100000 */
+#define ADC_SQR1_SQ3_3 (0x08UL << ADC_SQR1_SQ3_Pos) /*!< 0x00200000 */
+#define ADC_SQR1_SQ3_4 (0x10UL<< ADC_SQR1_SQ3_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR1_SQ4_Pos (24U)
+#define ADC_SQR1_SQ4_Msk (0x1FUL << ADC_SQR1_SQ4_Pos) /*!< 0x1F000000 */
+#define ADC_SQR1_SQ4 ADC_SQR1_SQ4_Msk /*!< ADC group regular sequencer rank 4 */
+#define ADC_SQR1_SQ4_0 (0x01UL << ADC_SQR1_SQ4_Pos) /*!< 0x01000000 */
+#define ADC_SQR1_SQ4_1 (0x02UL << ADC_SQR1_SQ4_Pos) /*!< 0x02000000 */
+#define ADC_SQR1_SQ4_2 (0x04UL << ADC_SQR1_SQ4_Pos) /*!< 0x04000000 */
+#define ADC_SQR1_SQ4_3 (0x08UL << ADC_SQR1_SQ4_Pos) /*!< 0x08000000 */
+#define ADC_SQR1_SQ4_4 (0x10UL << ADC_SQR1_SQ4_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR2 register ******************/
+#define ADC_SQR2_SQ5_Pos (0U)
+#define ADC_SQR2_SQ5_Msk (0x1FUL << ADC_SQR2_SQ5_Pos) /*!< 0x0000001F */
+#define ADC_SQR2_SQ5 ADC_SQR2_SQ5_Msk /*!< ADC group regular sequencer rank 5 */
+#define ADC_SQR2_SQ5_0 (0x01UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000001 */
+#define ADC_SQR2_SQ5_1 (0x02UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000002 */
+#define ADC_SQR2_SQ5_2 (0x04UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000004 */
+#define ADC_SQR2_SQ5_3 (0x08UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000008 */
+#define ADC_SQR2_SQ5_4 (0x10UL << ADC_SQR2_SQ5_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR2_SQ6_Pos (6U)
+#define ADC_SQR2_SQ6_Msk (0x1FUL << ADC_SQR2_SQ6_Pos) /*!< 0x000007C0 */
+#define ADC_SQR2_SQ6 ADC_SQR2_SQ6_Msk /*!< ADC group regular sequencer rank 6 */
+#define ADC_SQR2_SQ6_0 (0x01UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000040 */
+#define ADC_SQR2_SQ6_1 (0x02UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000080 */
+#define ADC_SQR2_SQ6_2 (0x04UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000100 */
+#define ADC_SQR2_SQ6_3 (0x08UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000200 */
+#define ADC_SQR2_SQ6_4 (0x10UL << ADC_SQR2_SQ6_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR2_SQ7_Pos (12U)
+#define ADC_SQR2_SQ7_Msk (0x1FUL << ADC_SQR2_SQ7_Pos) /*!< 0x0001F000 */
+#define ADC_SQR2_SQ7 ADC_SQR2_SQ7_Msk /*!< ADC group regular sequencer rank 7 */
+#define ADC_SQR2_SQ7_0 (0x01UL << ADC_SQR2_SQ7_Pos) /*!< 0x00001000 */
+#define ADC_SQR2_SQ7_1 (0x02UL << ADC_SQR2_SQ7_Pos) /*!< 0x00002000 */
+#define ADC_SQR2_SQ7_2 (0x04UL << ADC_SQR2_SQ7_Pos) /*!< 0x00004000 */
+#define ADC_SQR2_SQ7_3 (0x08UL << ADC_SQR2_SQ7_Pos) /*!< 0x00008000 */
+#define ADC_SQR2_SQ7_4 (0x10UL << ADC_SQR2_SQ7_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR2_SQ8_Pos (18U)
+#define ADC_SQR2_SQ8_Msk (0x1FUL << ADC_SQR2_SQ8_Pos) /*!< 0x007C0000 */
+#define ADC_SQR2_SQ8 ADC_SQR2_SQ8_Msk /*!< ADC group regular sequencer rank 8 */
+#define ADC_SQR2_SQ8_0 (0x01UL << ADC_SQR2_SQ8_Pos) /*!< 0x00040000 */
+#define ADC_SQR2_SQ8_1 (0x02UL << ADC_SQR2_SQ8_Pos) /*!< 0x00080000 */
+#define ADC_SQR2_SQ8_2 (0x04UL << ADC_SQR2_SQ8_Pos) /*!< 0x00100000 */
+#define ADC_SQR2_SQ8_3 (0x08UL << ADC_SQR2_SQ8_Pos) /*!< 0x00200000 */
+#define ADC_SQR2_SQ8_4 (0x10UL << ADC_SQR2_SQ8_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR2_SQ9_Pos (24U)
+#define ADC_SQR2_SQ9_Msk (0x1FUL << ADC_SQR2_SQ9_Pos) /*!< 0x1F000000 */
+#define ADC_SQR2_SQ9 ADC_SQR2_SQ9_Msk /*!< ADC group regular sequencer rank 9 */
+#define ADC_SQR2_SQ9_0 (0x01UL << ADC_SQR2_SQ9_Pos) /*!< 0x01000000 */
+#define ADC_SQR2_SQ9_1 (0x02UL << ADC_SQR2_SQ9_Pos) /*!< 0x02000000 */
+#define ADC_SQR2_SQ9_2 (0x04UL << ADC_SQR2_SQ9_Pos) /*!< 0x04000000 */
+#define ADC_SQR2_SQ9_3 (0x08UL << ADC_SQR2_SQ9_Pos) /*!< 0x08000000 */
+#define ADC_SQR2_SQ9_4 (0x10UL << ADC_SQR2_SQ9_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR3 register ******************/
+#define ADC_SQR3_SQ10_Pos (0U)
+#define ADC_SQR3_SQ10_Msk (0x1FUL << ADC_SQR3_SQ10_Pos) /*!< 0x0000001F */
+#define ADC_SQR3_SQ10 ADC_SQR3_SQ10_Msk /*!< ADC group regular sequencer rank 10 */
+#define ADC_SQR3_SQ10_0 (0x01UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000001 */
+#define ADC_SQR3_SQ10_1 (0x02UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000002 */
+#define ADC_SQR3_SQ10_2 (0x04UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000004 */
+#define ADC_SQR3_SQ10_3 (0x08UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000008 */
+#define ADC_SQR3_SQ10_4 (0x10UL << ADC_SQR3_SQ10_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR3_SQ11_Pos (6U)
+#define ADC_SQR3_SQ11_Msk (0x1FUL << ADC_SQR3_SQ11_Pos) /*!< 0x000007C0 */
+#define ADC_SQR3_SQ11 ADC_SQR3_SQ11_Msk /*!< ADC group regular sequencer rank 11 */
+#define ADC_SQR3_SQ11_0 (0x01UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000040 */
+#define ADC_SQR3_SQ11_1 (0x02UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000080 */
+#define ADC_SQR3_SQ11_2 (0x04UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000100 */
+#define ADC_SQR3_SQ11_3 (0x08UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000200 */
+#define ADC_SQR3_SQ11_4 (0x10UL << ADC_SQR3_SQ11_Pos) /*!< 0x00000400 */
+
+#define ADC_SQR3_SQ12_Pos (12U)
+#define ADC_SQR3_SQ12_Msk (0x1FUL << ADC_SQR3_SQ12_Pos) /*!< 0x0001F000 */
+#define ADC_SQR3_SQ12 ADC_SQR3_SQ12_Msk /*!< ADC group regular sequencer rank 12 */
+#define ADC_SQR3_SQ12_0 (0x01UL << ADC_SQR3_SQ12_Pos) /*!< 0x00001000 */
+#define ADC_SQR3_SQ12_1 (0x02UL << ADC_SQR3_SQ12_Pos) /*!< 0x00002000 */
+#define ADC_SQR3_SQ12_2 (0x04UL << ADC_SQR3_SQ12_Pos) /*!< 0x00004000 */
+#define ADC_SQR3_SQ12_3 (0x08UL << ADC_SQR3_SQ12_Pos) /*!< 0x00008000 */
+#define ADC_SQR3_SQ12_4 (0x10UL << ADC_SQR3_SQ12_Pos) /*!< 0x00010000 */
+
+#define ADC_SQR3_SQ13_Pos (18U)
+#define ADC_SQR3_SQ13_Msk (0x1FUL << ADC_SQR3_SQ13_Pos) /*!< 0x007C0000 */
+#define ADC_SQR3_SQ13 ADC_SQR3_SQ13_Msk /*!< ADC group regular sequencer rank 13 */
+#define ADC_SQR3_SQ13_0 (0x01UL << ADC_SQR3_SQ13_Pos) /*!< 0x00040000 */
+#define ADC_SQR3_SQ13_1 (0x02UL << ADC_SQR3_SQ13_Pos) /*!< 0x00080000 */
+#define ADC_SQR3_SQ13_2 (0x04UL << ADC_SQR3_SQ13_Pos) /*!< 0x00100000 */
+#define ADC_SQR3_SQ13_3 (0x08UL << ADC_SQR3_SQ13_Pos) /*!< 0x00200000 */
+#define ADC_SQR3_SQ13_4 (0x10UL << ADC_SQR3_SQ13_Pos) /*!< 0x00400000 */
+
+#define ADC_SQR3_SQ14_Pos (24U)
+#define ADC_SQR3_SQ14_Msk (0x1FUL << ADC_SQR3_SQ14_Pos) /*!< 0x1F000000 */
+#define ADC_SQR3_SQ14 ADC_SQR3_SQ14_Msk /*!< ADC group regular sequencer rank 14 */
+#define ADC_SQR3_SQ14_0 (0x01UL << ADC_SQR3_SQ14_Pos) /*!< 0x01000000 */
+#define ADC_SQR3_SQ14_1 (0x02UL << ADC_SQR3_SQ14_Pos) /*!< 0x02000000 */
+#define ADC_SQR3_SQ14_2 (0x04UL << ADC_SQR3_SQ14_Pos) /*!< 0x04000000 */
+#define ADC_SQR3_SQ14_3 (0x08UL << ADC_SQR3_SQ14_Pos) /*!< 0x08000000 */
+#define ADC_SQR3_SQ14_4 (0x10UL << ADC_SQR3_SQ14_Pos) /*!< 0x10000000 */
+
+/******************** Bit definition for ADC_SQR4 register ******************/
+#define ADC_SQR4_SQ15_Pos (0U)
+#define ADC_SQR4_SQ15_Msk (0x1FUL << ADC_SQR4_SQ15_Pos) /*!< 0x0000001F */
+#define ADC_SQR4_SQ15 ADC_SQR4_SQ15_Msk /*!< ADC group regular sequencer rank 15 */
+#define ADC_SQR4_SQ15_0 (0x01UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000001 */
+#define ADC_SQR4_SQ15_1 (0x02UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000002 */
+#define ADC_SQR4_SQ15_2 (0x04UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000004 */
+#define ADC_SQR4_SQ15_3 (0x08UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000008 */
+#define ADC_SQR4_SQ15_4 (0x10UL << ADC_SQR4_SQ15_Pos) /*!< 0x00000010 */
+
+#define ADC_SQR4_SQ16_Pos (6U)
+#define ADC_SQR4_SQ16_Msk (0x1FUL << ADC_SQR4_SQ16_Pos) /*!< 0x000007C0 */
+#define ADC_SQR4_SQ16 ADC_SQR4_SQ16_Msk /*!< ADC group regular sequencer rank 16 */
+#define ADC_SQR4_SQ16_0 (0x01UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000040 */
+#define ADC_SQR4_SQ16_1 (0x02UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000080 */
+#define ADC_SQR4_SQ16_2 (0x04UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000100 */
+#define ADC_SQR4_SQ16_3 (0x08UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000200 */
+#define ADC_SQR4_SQ16_4 (0x10UL << ADC_SQR4_SQ16_Pos) /*!< 0x00000400 */
+
+/******************** Bit definition for ADC_DR register ********************/
+#define ADC_DR_RDATA_Pos (0U)
+#define ADC_DR_RDATA_Msk (0xFFFFUL << ADC_DR_RDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_DR_RDATA ADC_DR_RDATA_Msk /*!< ADC group regular conversion data */
+
+/******************** Bit definition for ADC_JSQR register ******************/
+#define ADC_JSQR_JL_Pos (0U)
+#define ADC_JSQR_JL_Msk (0x3UL << ADC_JSQR_JL_Pos) /*!< 0x00000003 */
+#define ADC_JSQR_JL ADC_JSQR_JL_Msk /*!< ADC group injected sequencer scan length */
+#define ADC_JSQR_JL_0 (0x1UL << ADC_JSQR_JL_Pos) /*!< 0x00000001 */
+#define ADC_JSQR_JL_1 (0x2UL << ADC_JSQR_JL_Pos) /*!< 0x00000002 */
+
+#define ADC_JSQR_JEXTSEL_Pos (2U)
+#define ADC_JSQR_JEXTSEL_Msk (0x1FUL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x0000007C */
+#define ADC_JSQR_JEXTSEL ADC_JSQR_JEXTSEL_Msk /*!< ADC group injected external trigger source */
+#define ADC_JSQR_JEXTSEL_0 (0x1UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000004 */
+#define ADC_JSQR_JEXTSEL_1 (0x2UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000008 */
+#define ADC_JSQR_JEXTSEL_2 (0x4UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000010 */
+#define ADC_JSQR_JEXTSEL_3 (0x8UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000020 */
+#define ADC_JSQR_JEXTSEL_4 (0x10UL << ADC_JSQR_JEXTSEL_Pos) /*!< 0x00000040 */
+
+#define ADC_JSQR_JEXTEN_Pos (7U)
+#define ADC_JSQR_JEXTEN_Msk (0x3UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000180 */
+#define ADC_JSQR_JEXTEN ADC_JSQR_JEXTEN_Msk /*!< ADC group injected external trigger polarity */
+#define ADC_JSQR_JEXTEN_0 (0x1UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000080 */
+#define ADC_JSQR_JEXTEN_1 (0x2UL << ADC_JSQR_JEXTEN_Pos) /*!< 0x00000100 */
+
+#define ADC_JSQR_JSQ1_Pos (9U)
+#define ADC_JSQR_JSQ1_Msk (0x1FUL << ADC_JSQR_JSQ1_Pos) /*!< 0x00003E00 */
+#define ADC_JSQR_JSQ1 ADC_JSQR_JSQ1_Msk /*!< ADC group injected sequencer rank 1 */
+#define ADC_JSQR_JSQ1_0 (0x01UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000200 */
+#define ADC_JSQR_JSQ1_1 (0x02UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000400 */
+#define ADC_JSQR_JSQ1_2 (0x04UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00000800 */
+#define ADC_JSQR_JSQ1_3 (0x08UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00001000 */
+#define ADC_JSQR_JSQ1_4 (0x10UL << ADC_JSQR_JSQ1_Pos) /*!< 0x00002000 */
+
+#define ADC_JSQR_JSQ2_Pos (15U)
+#define ADC_JSQR_JSQ2_Msk (0x1FUL << ADC_JSQR_JSQ2_Pos) /*!< 0x0007C000 */
+#define ADC_JSQR_JSQ2 ADC_JSQR_JSQ2_Msk /*!< ADC group injected sequencer rank 2 */
+#define ADC_JSQR_JSQ2_0 (0x01UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00004000 */
+#define ADC_JSQR_JSQ2_1 (0x02UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00008000 */
+#define ADC_JSQR_JSQ2_2 (0x04UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00010000 */
+#define ADC_JSQR_JSQ2_3 (0x08UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00020000 */
+#define ADC_JSQR_JSQ2_4 (0x10UL << ADC_JSQR_JSQ2_Pos) /*!< 0x00040000 */
+
+#define ADC_JSQR_JSQ3_Pos (21U)
+#define ADC_JSQR_JSQ3_Msk (0x1FUL << ADC_JSQR_JSQ3_Pos) /*!< 0x03E00000 */
+#define ADC_JSQR_JSQ3 ADC_JSQR_JSQ3_Msk /*!< ADC group injected sequencer rank 3 */
+#define ADC_JSQR_JSQ3_0 (0x01UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00200000 */
+#define ADC_JSQR_JSQ3_1 (0x02UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00400000 */
+#define ADC_JSQR_JSQ3_2 (0x04UL << ADC_JSQR_JSQ3_Pos) /*!< 0x00800000 */
+#define ADC_JSQR_JSQ3_3 (0x08UL << ADC_JSQR_JSQ3_Pos) /*!< 0x01000000 */
+#define ADC_JSQR_JSQ3_4 (0x10UL << ADC_JSQR_JSQ3_Pos) /*!< 0x02000000 */
+
+#define ADC_JSQR_JSQ4_Pos (27U)
+#define ADC_JSQR_JSQ4_Msk (0x1FUL << ADC_JSQR_JSQ4_Pos) /*!< 0xF8000000 */
+#define ADC_JSQR_JSQ4 ADC_JSQR_JSQ4_Msk /*!< ADC group injected sequencer rank 4 */
+#define ADC_JSQR_JSQ4_0 (0x01UL << ADC_JSQR_JSQ4_Pos) /*!< 0x08000000 */
+#define ADC_JSQR_JSQ4_1 (0x02UL << ADC_JSQR_JSQ4_Pos) /*!< 0x10000000 */
+#define ADC_JSQR_JSQ4_2 (0x04UL << ADC_JSQR_JSQ4_Pos) /*!< 0x20000000 */
+#define ADC_JSQR_JSQ4_3 (0x08UL << ADC_JSQR_JSQ4_Pos) /*!< 0x40000000 */
+#define ADC_JSQR_JSQ4_4 (0x10UL << ADC_JSQR_JSQ4_Pos) /*!< 0x80000000 */
+
+/******************** Bit definition for ADC_OFR1 register ******************/
+#define ADC_OFR1_OFFSET1_Pos (0U)
+#define ADC_OFR1_OFFSET1_Msk (0xFFFUL << ADC_OFR1_OFFSET1_Pos) /*!< 0x00000FFF */
+#define ADC_OFR1_OFFSET1 ADC_OFR1_OFFSET1_Msk /*!< ADC offset number 1 offset level */
+
+#define ADC_OFR1_OFFSETPOS_Pos (24U)
+#define ADC_OFR1_OFFSETPOS_Msk (0x1UL << ADC_OFR1_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR1_OFFSETPOS ADC_OFR1_OFFSETPOS_Msk /*!< ADC offset number 1 positive */
+#define ADC_OFR1_SATEN_Pos (25U)
+#define ADC_OFR1_SATEN_Msk (0x1UL << ADC_OFR1_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR1_SATEN ADC_OFR1_SATEN_Msk /*!< ADC offset number 1 saturation enable */
+
+#define ADC_OFR1_OFFSET1_CH_Pos (26U)
+#define ADC_OFR1_OFFSET1_CH_Msk (0x1FUL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR1_OFFSET1_CH ADC_OFR1_OFFSET1_CH_Msk /*!< ADC offset number 1 channel selection */
+#define ADC_OFR1_OFFSET1_CH_0 (0x01UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR1_OFFSET1_CH_1 (0x02UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR1_OFFSET1_CH_2 (0x04UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR1_OFFSET1_CH_3 (0x08UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR1_OFFSET1_CH_4 (0x10UL << ADC_OFR1_OFFSET1_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR1_OFFSET1_EN_Pos (31U)
+#define ADC_OFR1_OFFSET1_EN_Msk (0x1UL << ADC_OFR1_OFFSET1_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR1_OFFSET1_EN ADC_OFR1_OFFSET1_EN_Msk /*!< ADC offset number 1 enable */
+
+/******************** Bit definition for ADC_OFR2 register ******************/
+#define ADC_OFR2_OFFSET2_Pos (0U)
+#define ADC_OFR2_OFFSET2_Msk (0xFFFUL << ADC_OFR2_OFFSET2_Pos) /*!< 0x00000FFF */
+#define ADC_OFR2_OFFSET2 ADC_OFR2_OFFSET2_Msk /*!< ADC offset number 2 offset level */
+
+#define ADC_OFR2_OFFSETPOS_Pos (24U)
+#define ADC_OFR2_OFFSETPOS_Msk (0x1UL << ADC_OFR2_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR2_OFFSETPOS ADC_OFR2_OFFSETPOS_Msk /*!< ADC offset number 2 positive */
+#define ADC_OFR2_SATEN_Pos (25U)
+#define ADC_OFR2_SATEN_Msk (0x1UL << ADC_OFR2_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR2_SATEN ADC_OFR2_SATEN_Msk /*!< ADC offset number 2 saturation enable */
+
+#define ADC_OFR2_OFFSET2_CH_Pos (26U)
+#define ADC_OFR2_OFFSET2_CH_Msk (0x1FUL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR2_OFFSET2_CH ADC_OFR2_OFFSET2_CH_Msk /*!< ADC offset number 2 channel selection */
+#define ADC_OFR2_OFFSET2_CH_0 (0x01UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR2_OFFSET2_CH_1 (0x02UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR2_OFFSET2_CH_2 (0x04UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR2_OFFSET2_CH_3 (0x08UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR2_OFFSET2_CH_4 (0x10UL << ADC_OFR2_OFFSET2_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR2_OFFSET2_EN_Pos (31U)
+#define ADC_OFR2_OFFSET2_EN_Msk (0x1UL << ADC_OFR2_OFFSET2_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR2_OFFSET2_EN ADC_OFR2_OFFSET2_EN_Msk /*!< ADC offset number 2 enable */
+
+/******************** Bit definition for ADC_OFR3 register ******************/
+#define ADC_OFR3_OFFSET3_Pos (0U)
+#define ADC_OFR3_OFFSET3_Msk (0xFFFUL << ADC_OFR3_OFFSET3_Pos) /*!< 0x00000FFF */
+#define ADC_OFR3_OFFSET3 ADC_OFR3_OFFSET3_Msk /*!< ADC offset number 3 offset level */
+
+#define ADC_OFR3_OFFSETPOS_Pos (24U)
+#define ADC_OFR3_OFFSETPOS_Msk (0x1UL << ADC_OFR3_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR3_OFFSETPOS ADC_OFR3_OFFSETPOS_Msk /*!< ADC offset number 3 positive */
+#define ADC_OFR3_SATEN_Pos (25U)
+#define ADC_OFR3_SATEN_Msk (0x1UL << ADC_OFR3_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR3_SATEN ADC_OFR3_SATEN_Msk /*!< ADC offset number 3 saturation enable */
+
+#define ADC_OFR3_OFFSET3_CH_Pos (26U)
+#define ADC_OFR3_OFFSET3_CH_Msk (0x1FUL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR3_OFFSET3_CH ADC_OFR3_OFFSET3_CH_Msk /*!< ADC offset number 3 channel selection */
+#define ADC_OFR3_OFFSET3_CH_0 (0x01UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR3_OFFSET3_CH_1 (0x02UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR3_OFFSET3_CH_2 (0x04UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR3_OFFSET3_CH_3 (0x08UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR3_OFFSET3_CH_4 (0x10UL << ADC_OFR3_OFFSET3_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR3_OFFSET3_EN_Pos (31U)
+#define ADC_OFR3_OFFSET3_EN_Msk (0x1UL << ADC_OFR3_OFFSET3_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR3_OFFSET3_EN ADC_OFR3_OFFSET3_EN_Msk /*!< ADC offset number 3 enable */
+
+/******************** Bit definition for ADC_OFR4 register ******************/
+#define ADC_OFR4_OFFSET4_Pos (0U)
+#define ADC_OFR4_OFFSET4_Msk (0xFFFUL << ADC_OFR4_OFFSET4_Pos) /*!< 0x00000FFF */
+#define ADC_OFR4_OFFSET4 ADC_OFR4_OFFSET4_Msk /*!< ADC offset number 4 offset level */
+
+#define ADC_OFR4_OFFSETPOS_Pos (24U)
+#define ADC_OFR4_OFFSETPOS_Msk (0x1UL << ADC_OFR4_OFFSETPOS_Pos) /*!< 0x01000000 */
+#define ADC_OFR4_OFFSETPOS ADC_OFR4_OFFSETPOS_Msk /*!< ADC offset number 4 positive */
+#define ADC_OFR4_SATEN_Pos (25U)
+#define ADC_OFR4_SATEN_Msk (0x1UL << ADC_OFR4_SATEN_Pos) /*!< 0x02000000 */
+#define ADC_OFR4_SATEN ADC_OFR4_SATEN_Msk /*!< ADC offset number 4 saturation enable */
+
+#define ADC_OFR4_OFFSET4_CH_Pos (26U)
+#define ADC_OFR4_OFFSET4_CH_Msk (0x1FUL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x7C000000 */
+#define ADC_OFR4_OFFSET4_CH ADC_OFR4_OFFSET4_CH_Msk /*!< ADC offset number 4 channel selection */
+#define ADC_OFR4_OFFSET4_CH_0 (0x01UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x04000000 */
+#define ADC_OFR4_OFFSET4_CH_1 (0x02UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x08000000 */
+#define ADC_OFR4_OFFSET4_CH_2 (0x04UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x10000000 */
+#define ADC_OFR4_OFFSET4_CH_3 (0x08UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x20000000 */
+#define ADC_OFR4_OFFSET4_CH_4 (0x10UL << ADC_OFR4_OFFSET4_CH_Pos) /*!< 0x40000000 */
+
+#define ADC_OFR4_OFFSET4_EN_Pos (31U)
+#define ADC_OFR4_OFFSET4_EN_Msk (0x1UL << ADC_OFR4_OFFSET4_EN_Pos) /*!< 0x80000000 */
+#define ADC_OFR4_OFFSET4_EN ADC_OFR4_OFFSET4_EN_Msk /*!< ADC offset number 4 enable */
+
+/******************** Bit definition for ADC_JDR1 register ******************/
+#define ADC_JDR1_JDATA_Pos (0U)
+#define ADC_JDR1_JDATA_Msk (0xFFFFUL << ADC_JDR1_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR1_JDATA ADC_JDR1_JDATA_Msk /*!< ADC group injected sequencer rank 1 conversion data */
+
+/******************** Bit definition for ADC_JDR2 register ******************/
+#define ADC_JDR2_JDATA_Pos (0U)
+#define ADC_JDR2_JDATA_Msk (0xFFFFUL << ADC_JDR2_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR2_JDATA ADC_JDR2_JDATA_Msk /*!< ADC group injected sequencer rank 2 conversion data */
+
+/******************** Bit definition for ADC_JDR3 register ******************/
+#define ADC_JDR3_JDATA_Pos (0U)
+#define ADC_JDR3_JDATA_Msk (0xFFFFUL << ADC_JDR3_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR3_JDATA ADC_JDR3_JDATA_Msk /*!< ADC group injected sequencer rank 3 conversion data */
+
+/******************** Bit definition for ADC_JDR4 register ******************/
+#define ADC_JDR4_JDATA_Pos (0U)
+#define ADC_JDR4_JDATA_Msk (0xFFFFUL << ADC_JDR4_JDATA_Pos) /*!< 0x0000FFFF */
+#define ADC_JDR4_JDATA ADC_JDR4_JDATA_Msk /*!< ADC group injected sequencer rank 4 conversion data */
+
+/******************** Bit definition for ADC_AWD2CR register ****************/
+#define ADC_AWD2CR_AWD2CH_Pos (0U)
+#define ADC_AWD2CR_AWD2CH_Msk (0xFFFFFUL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x0007FFFF */
+#define ADC_AWD2CR_AWD2CH ADC_AWD2CR_AWD2CH_Msk /*!< ADC analog watchdog 2 monitored channel selection */
+#define ADC_AWD2CR_AWD2CH_0 (0x00001UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000001 */
+#define ADC_AWD2CR_AWD2CH_1 (0x00002UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000002 */
+#define ADC_AWD2CR_AWD2CH_2 (0x00004UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000004 */
+#define ADC_AWD2CR_AWD2CH_3 (0x00008UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000008 */
+#define ADC_AWD2CR_AWD2CH_4 (0x00010UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000010 */
+#define ADC_AWD2CR_AWD2CH_5 (0x00020UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000020 */
+#define ADC_AWD2CR_AWD2CH_6 (0x00040UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000040 */
+#define ADC_AWD2CR_AWD2CH_7 (0x00080UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000080 */
+#define ADC_AWD2CR_AWD2CH_8 (0x00100UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000100 */
+#define ADC_AWD2CR_AWD2CH_9 (0x00200UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000200 */
+#define ADC_AWD2CR_AWD2CH_10 (0x00400UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000400 */
+#define ADC_AWD2CR_AWD2CH_11 (0x00800UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00000800 */
+#define ADC_AWD2CR_AWD2CH_12 (0x01000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00001000 */
+#define ADC_AWD2CR_AWD2CH_13 (0x02000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00002000 */
+#define ADC_AWD2CR_AWD2CH_14 (0x04000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00004000 */
+#define ADC_AWD2CR_AWD2CH_15 (0x08000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00008000 */
+#define ADC_AWD2CR_AWD2CH_16 (0x10000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00010000 */
+#define ADC_AWD2CR_AWD2CH_17 (0x20000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00020000 */
+#define ADC_AWD2CR_AWD2CH_18 (0x40000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00040000 */
+#define ADC_AWD2CR_AWD2CH_19 (0x80000UL << ADC_AWD2CR_AWD2CH_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_AWD3CR register ****************/
+#define ADC_AWD3CR_AWD3CH_Pos (0U)
+#define ADC_AWD3CR_AWD3CH_Msk (0xFFFFFUL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x0007FFFF */
+#define ADC_AWD3CR_AWD3CH ADC_AWD3CR_AWD3CH_Msk /*!< ADC analog watchdog 3 monitored channel selection */
+#define ADC_AWD3CR_AWD3CH_0 (0x00001UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000001 */
+#define ADC_AWD3CR_AWD3CH_1 (0x00002UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000002 */
+#define ADC_AWD3CR_AWD3CH_2 (0x00004UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000004 */
+#define ADC_AWD3CR_AWD3CH_3 (0x00008UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000008 */
+#define ADC_AWD3CR_AWD3CH_4 (0x00010UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000010 */
+#define ADC_AWD3CR_AWD3CH_5 (0x00020UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000020 */
+#define ADC_AWD3CR_AWD3CH_6 (0x00040UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000040 */
+#define ADC_AWD3CR_AWD3CH_7 (0x00080UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000080 */
+#define ADC_AWD3CR_AWD3CH_8 (0x00100UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000100 */
+#define ADC_AWD3CR_AWD3CH_9 (0x00200UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000200 */
+#define ADC_AWD3CR_AWD3CH_10 (0x00400UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000400 */
+#define ADC_AWD3CR_AWD3CH_11 (0x00800UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00000800 */
+#define ADC_AWD3CR_AWD3CH_12 (0x01000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00001000 */
+#define ADC_AWD3CR_AWD3CH_13 (0x02000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00002000 */
+#define ADC_AWD3CR_AWD3CH_14 (0x04000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00004000 */
+#define ADC_AWD3CR_AWD3CH_15 (0x08000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00008000 */
+#define ADC_AWD3CR_AWD3CH_16 (0x10000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00010000 */
+#define ADC_AWD3CR_AWD3CH_17 (0x20000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00020000 */
+#define ADC_AWD3CR_AWD3CH_18 (0x40000UL << ADC_AWD3CR_AWD3CH_Pos) /*!< 0x00040000 */
+#define ADC_AWD3CR_AWD2CH_19 (0x80000UL << ADC_AWD3CR_AWD2CH_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_DIFSEL register ****************/
+#define ADC_DIFSEL_DIFSEL_Pos (0U)
+#define ADC_DIFSEL_DIFSEL_Msk (0xFFFFFUL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x0007FFFF */
+#define ADC_DIFSEL_DIFSEL ADC_DIFSEL_DIFSEL_Msk /*!< ADC channel differential or single-ended mode */
+#define ADC_DIFSEL_DIFSEL_0 (0x00001UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000001 */
+#define ADC_DIFSEL_DIFSEL_1 (0x00002UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000002 */
+#define ADC_DIFSEL_DIFSEL_2 (0x00004UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000004 */
+#define ADC_DIFSEL_DIFSEL_3 (0x00008UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000008 */
+#define ADC_DIFSEL_DIFSEL_4 (0x00010UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000010 */
+#define ADC_DIFSEL_DIFSEL_5 (0x00020UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000020 */
+#define ADC_DIFSEL_DIFSEL_6 (0x00040UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000040 */
+#define ADC_DIFSEL_DIFSEL_7 (0x00080UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000080 */
+#define ADC_DIFSEL_DIFSEL_8 (0x00100UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000100 */
+#define ADC_DIFSEL_DIFSEL_9 (0x00200UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000200 */
+#define ADC_DIFSEL_DIFSEL_10 (0x00400UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000400 */
+#define ADC_DIFSEL_DIFSEL_11 (0x00800UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00000800 */
+#define ADC_DIFSEL_DIFSEL_12 (0x01000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00001000 */
+#define ADC_DIFSEL_DIFSEL_13 (0x02000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00002000 */
+#define ADC_DIFSEL_DIFSEL_14 (0x04000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00004000 */
+#define ADC_DIFSEL_DIFSEL_15 (0x08000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00008000 */
+#define ADC_DIFSEL_DIFSEL_16 (0x10000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00010000 */
+#define ADC_DIFSEL_DIFSEL_17 (0x20000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00020000 */
+#define ADC_DIFSEL_DIFSEL_18 (0x40000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00040000 */
+#define ADC_DIFSEL_DIFSEL_19 (0x80000UL << ADC_DIFSEL_DIFSEL_Pos) /*!< 0x00080000 */
+
+/******************** Bit definition for ADC_CALFACT register ***************/
+#define ADC_CALFACT_CALFACT_S_Pos (0U)
+#define ADC_CALFACT_CALFACT_S_Msk (0x7FUL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x0000007F */
+#define ADC_CALFACT_CALFACT_S ADC_CALFACT_CALFACT_S_Msk /*!< ADC calibration factor in single-ended mode */
+#define ADC_CALFACT_CALFACT_S_0 (0x01UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000001 */
+#define ADC_CALFACT_CALFACT_S_1 (0x02UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000002 */
+#define ADC_CALFACT_CALFACT_S_2 (0x04UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000004 */
+#define ADC_CALFACT_CALFACT_S_3 (0x08UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000008 */
+#define ADC_CALFACT_CALFACT_S_4 (0x10UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000010 */
+#define ADC_CALFACT_CALFACT_S_5 (0x20UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000020 */
+#define ADC_CALFACT_CALFACT_S_6 (0x40UL << ADC_CALFACT_CALFACT_S_Pos) /*!< 0x00000030 */
+
+#define ADC_CALFACT_CALFACT_D_Pos (16U)
+#define ADC_CALFACT_CALFACT_D_Msk (0x7FUL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x007F0000 */
+#define ADC_CALFACT_CALFACT_D ADC_CALFACT_CALFACT_D_Msk /*!< ADC calibration factor in differential mode */
+#define ADC_CALFACT_CALFACT_D_0 (0x01UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00010000 */
+#define ADC_CALFACT_CALFACT_D_1 (0x02UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00020000 */
+#define ADC_CALFACT_CALFACT_D_2 (0x04UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00040000 */
+#define ADC_CALFACT_CALFACT_D_3 (0x08UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00080000 */
+#define ADC_CALFACT_CALFACT_D_4 (0x10UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00100000 */
+#define ADC_CALFACT_CALFACT_D_5 (0x20UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00200000 */
+#define ADC_CALFACT_CALFACT_D_6 (0x40UL << ADC_CALFACT_CALFACT_D_Pos) /*!< 0x00300000 */
+
+/******************** Bit definition for ADC_OR register *****************/
+#define ADC_OR_OP0_Pos (0U)
+#define ADC_OR_OP0_Msk (0x01UL << ADC_OR_OP0_Pos) /*!< 0x00000001 */
+#define ADC_OR_OP0 ADC_OR_OP0_Msk /*!< ADC Option bit 0 */
+#define ADC_OR_OP1_Pos (1U)
+#define ADC_OR_OP1_Msk (0x01UL << ADC_OR_OP1_Pos) /*!< 0x00000001 */
+#define ADC_OR_OP1 ADC_OR_OP1_Msk /*!< ADC Option bit 1 */
+
+/************************* ADC Common registers *****************************/
+/******************** Bit definition for ADC_CSR register *******************/
+#define ADC_CSR_ADRDY_MST_Pos (0U)
+#define ADC_CSR_ADRDY_MST_Msk (0x1UL << ADC_CSR_ADRDY_MST_Pos) /*!< 0x00000001 */
+#define ADC_CSR_ADRDY_MST ADC_CSR_ADRDY_MST_Msk /*!< ADC multimode master ready flag */
+#define ADC_CSR_EOSMP_MST_Pos (1U)
+#define ADC_CSR_EOSMP_MST_Msk (0x1UL << ADC_CSR_EOSMP_MST_Pos) /*!< 0x00000002 */
+#define ADC_CSR_EOSMP_MST ADC_CSR_EOSMP_MST_Msk /*!< ADC multimode master group regular end of sampling flag */
+#define ADC_CSR_EOC_MST_Pos (2U)
+#define ADC_CSR_EOC_MST_Msk (0x1UL << ADC_CSR_EOC_MST_Pos) /*!< 0x00000004 */
+#define ADC_CSR_EOC_MST ADC_CSR_EOC_MST_Msk /*!< ADC multimode master group regular end of unitary conversion flag */
+#define ADC_CSR_EOS_MST_Pos (3U)
+#define ADC_CSR_EOS_MST_Msk (0x1UL << ADC_CSR_EOS_MST_Pos) /*!< 0x00000008 */
+#define ADC_CSR_EOS_MST ADC_CSR_EOS_MST_Msk /*!< ADC multimode master group regular end of sequence conversions flag */
+#define ADC_CSR_OVR_MST_Pos (4U)
+#define ADC_CSR_OVR_MST_Msk (0x1UL << ADC_CSR_OVR_MST_Pos) /*!< 0x00000010 */
+#define ADC_CSR_OVR_MST ADC_CSR_OVR_MST_Msk /*!< ADC multimode master group regular overrun flag */
+#define ADC_CSR_JEOC_MST_Pos (5U)
+#define ADC_CSR_JEOC_MST_Msk (0x1UL << ADC_CSR_JEOC_MST_Pos) /*!< 0x00000020 */
+#define ADC_CSR_JEOC_MST ADC_CSR_JEOC_MST_Msk /*!< ADC multimode master group injected end of unitary conversion flag */
+#define ADC_CSR_JEOS_MST_Pos (6U)
+#define ADC_CSR_JEOS_MST_Msk (0x1UL << ADC_CSR_JEOS_MST_Pos) /*!< 0x00000040 */
+#define ADC_CSR_JEOS_MST ADC_CSR_JEOS_MST_Msk /*!< ADC multimode master group injected end of sequence conversions flag */
+#define ADC_CSR_AWD1_MST_Pos (7U)
+#define ADC_CSR_AWD1_MST_Msk (0x1UL << ADC_CSR_AWD1_MST_Pos) /*!< 0x00000080 */
+#define ADC_CSR_AWD1_MST ADC_CSR_AWD1_MST_Msk /*!< ADC multimode master analog watchdog 1 flag */
+#define ADC_CSR_AWD2_MST_Pos (8U)
+#define ADC_CSR_AWD2_MST_Msk (0x1UL << ADC_CSR_AWD2_MST_Pos) /*!< 0x00000100 */
+#define ADC_CSR_AWD2_MST ADC_CSR_AWD2_MST_Msk /*!< ADC multimode master analog watchdog 2 flag */
+#define ADC_CSR_AWD3_MST_Pos (9U)
+#define ADC_CSR_AWD3_MST_Msk (0x1UL << ADC_CSR_AWD3_MST_Pos) /*!< 0x00000200 */
+#define ADC_CSR_AWD3_MST ADC_CSR_AWD3_MST_Msk /*!< ADC multimode master analog watchdog 3 flag */
+#define ADC_CSR_JQOVF_MST_Pos (10U)
+#define ADC_CSR_JQOVF_MST_Msk (0x1UL << ADC_CSR_JQOVF_MST_Pos) /*!< 0x00000400 */
+#define ADC_CSR_JQOVF_MST ADC_CSR_JQOVF_MST_Msk /*!< ADC multimode master group injected contexts queue overflow flag */
+
+#define ADC_CSR_ADRDY_SLV_Pos (16U)
+#define ADC_CSR_ADRDY_SLV_Msk (0x1UL << ADC_CSR_ADRDY_SLV_Pos) /*!< 0x00010000 */
+#define ADC_CSR_ADRDY_SLV ADC_CSR_ADRDY_SLV_Msk /*!< ADC multimode slave ready flag */
+#define ADC_CSR_EOSMP_SLV_Pos (17U)
+#define ADC_CSR_EOSMP_SLV_Msk (0x1UL << ADC_CSR_EOSMP_SLV_Pos) /*!< 0x00020000 */
+#define ADC_CSR_EOSMP_SLV ADC_CSR_EOSMP_SLV_Msk /*!< ADC multimode slave group regular end of sampling flag */
+#define ADC_CSR_EOC_SLV_Pos (18U)
+#define ADC_CSR_EOC_SLV_Msk (0x1UL << ADC_CSR_EOC_SLV_Pos) /*!< 0x00040000 */
+#define ADC_CSR_EOC_SLV ADC_CSR_EOC_SLV_Msk /*!< ADC multimode slave group regular end of unitary conversion flag */
+#define ADC_CSR_EOS_SLV_Pos (19U)
+#define ADC_CSR_EOS_SLV_Msk (0x1UL << ADC_CSR_EOS_SLV_Pos) /*!< 0x00080000 */
+#define ADC_CSR_EOS_SLV ADC_CSR_EOS_SLV_Msk /*!< ADC multimode slave group regular end of sequence conversions flag */
+#define ADC_CSR_OVR_SLV_Pos (20U)
+#define ADC_CSR_OVR_SLV_Msk (0x1UL << ADC_CSR_OVR_SLV_Pos) /*!< 0x00100000 */
+#define ADC_CSR_OVR_SLV ADC_CSR_OVR_SLV_Msk /*!< ADC multimode slave group regular overrun flag */
+#define ADC_CSR_JEOC_SLV_Pos (21U)
+#define ADC_CSR_JEOC_SLV_Msk (0x1UL << ADC_CSR_JEOC_SLV_Pos) /*!< 0x00200000 */
+#define ADC_CSR_JEOC_SLV ADC_CSR_JEOC_SLV_Msk /*!< ADC multimode slave group injected end of unitary conversion flag */
+#define ADC_CSR_JEOS_SLV_Pos (22U)
+#define ADC_CSR_JEOS_SLV_Msk (0x1UL << ADC_CSR_JEOS_SLV_Pos) /*!< 0x00400000 */
+#define ADC_CSR_JEOS_SLV ADC_CSR_JEOS_SLV_Msk /*!< ADC multimode slave group injected end of sequence conversions flag */
+#define ADC_CSR_AWD1_SLV_Pos (23U)
+#define ADC_CSR_AWD1_SLV_Msk (0x1UL << ADC_CSR_AWD1_SLV_Pos) /*!< 0x00800000 */
+#define ADC_CSR_AWD1_SLV ADC_CSR_AWD1_SLV_Msk /*!< ADC multimode slave analog watchdog 1 flag */
+#define ADC_CSR_AWD2_SLV_Pos (24U)
+#define ADC_CSR_AWD2_SLV_Msk (0x1UL << ADC_CSR_AWD2_SLV_Pos) /*!< 0x01000000 */
+#define ADC_CSR_AWD2_SLV ADC_CSR_AWD2_SLV_Msk /*!< ADC multimode slave analog watchdog 2 flag */
+#define ADC_CSR_AWD3_SLV_Pos (25U)
+#define ADC_CSR_AWD3_SLV_Msk (0x1UL << ADC_CSR_AWD3_SLV_Pos) /*!< 0x02000000 */
+#define ADC_CSR_AWD3_SLV ADC_CSR_AWD3_SLV_Msk /*!< ADC multimode slave analog watchdog 3 flag */
+#define ADC_CSR_JQOVF_SLV_Pos (26U)
+#define ADC_CSR_JQOVF_SLV_Msk (0x1UL << ADC_CSR_JQOVF_SLV_Pos) /*!< 0x04000000 */
+#define ADC_CSR_JQOVF_SLV ADC_CSR_JQOVF_SLV_Msk /*!< ADC multimode slave group injected contexts queue overflow flag */
+
+/******************** Bit definition for ADC_CCR register *******************/
+#define ADC_CCR_DUAL_Pos (0U)
+#define ADC_CCR_DUAL_Msk (0x1FUL << ADC_CCR_DUAL_Pos) /*!< 0x0000001F */
+#define ADC_CCR_DUAL ADC_CCR_DUAL_Msk /*!< ADC multimode mode selection */
+#define ADC_CCR_DUAL_0 (0x01UL << ADC_CCR_DUAL_Pos) /*!< 0x00000001 */
+#define ADC_CCR_DUAL_1 (0x02UL << ADC_CCR_DUAL_Pos) /*!< 0x00000002 */
+#define ADC_CCR_DUAL_2 (0x04UL << ADC_CCR_DUAL_Pos) /*!< 0x00000004 */
+#define ADC_CCR_DUAL_3 (0x08UL << ADC_CCR_DUAL_Pos) /*!< 0x00000008 */
+#define ADC_CCR_DUAL_4 (0x10UL << ADC_CCR_DUAL_Pos) /*!< 0x00000010 */
+
+#define ADC_CCR_DELAY_Pos (8U)
+#define ADC_CCR_DELAY_Msk (0xFUL << ADC_CCR_DELAY_Pos) /*!< 0x00000F00 */
+#define ADC_CCR_DELAY ADC_CCR_DELAY_Msk /*!< ADC multimode delay between 2 sampling phases */
+#define ADC_CCR_DELAY_0 (0x1UL << ADC_CCR_DELAY_Pos) /*!< 0x00000100 */
+#define ADC_CCR_DELAY_1 (0x2UL << ADC_CCR_DELAY_Pos) /*!< 0x00000200 */
+#define ADC_CCR_DELAY_2 (0x4UL << ADC_CCR_DELAY_Pos) /*!< 0x00000400 */
+#define ADC_CCR_DELAY_3 (0x8UL << ADC_CCR_DELAY_Pos) /*!< 0x00000800 */
+
+#define ADC_CCR_DMACFG_Pos (13U)
+#define ADC_CCR_DMACFG_Msk (0x1UL << ADC_CCR_DMACFG_Pos) /*!< 0x00002000 */
+#define ADC_CCR_DMACFG ADC_CCR_DMACFG_Msk /*!< ADC multimode DMA transfer configuration */
+
+#define ADC_CCR_MDMA_Pos (14U)
+#define ADC_CCR_MDMA_Msk (0x3UL << ADC_CCR_MDMA_Pos) /*!< 0x0000C000 */
+#define ADC_CCR_MDMA ADC_CCR_MDMA_Msk /*!< ADC multimode DMA transfer enable */
+#define ADC_CCR_MDMA_0 (0x1UL << ADC_CCR_MDMA_Pos) /*!< 0x00004000 */
+#define ADC_CCR_MDMA_1 (0x2UL << ADC_CCR_MDMA_Pos) /*!< 0x00008000 */
+
+#define ADC_CCR_CKMODE_Pos (16U)
+#define ADC_CCR_CKMODE_Msk (0x3UL << ADC_CCR_CKMODE_Pos) /*!< 0x00030000 */
+#define ADC_CCR_CKMODE ADC_CCR_CKMODE_Msk /*!< ADC common clock source and prescaler (prescaler only for clock source synchronous) */
+#define ADC_CCR_CKMODE_0 (0x1UL << ADC_CCR_CKMODE_Pos) /*!< 0x00010000 */
+#define ADC_CCR_CKMODE_1 (0x2UL << ADC_CCR_CKMODE_Pos) /*!< 0x00020000 */
+
+#define ADC_CCR_PRESC_Pos (18U)
+#define ADC_CCR_PRESC_Msk (0xFUL << ADC_CCR_PRESC_Pos) /*!< 0x003C0000 */
+#define ADC_CCR_PRESC ADC_CCR_PRESC_Msk /*!< ADC common clock prescaler, only for clock source asynchronous */
+#define ADC_CCR_PRESC_0 (0x1UL << ADC_CCR_PRESC_Pos) /*!< 0x00040000 */
+#define ADC_CCR_PRESC_1 (0x2UL << ADC_CCR_PRESC_Pos) /*!< 0x00080000 */
+#define ADC_CCR_PRESC_2 (0x4UL << ADC_CCR_PRESC_Pos) /*!< 0x00100000 */
+#define ADC_CCR_PRESC_3 (0x8UL << ADC_CCR_PRESC_Pos) /*!< 0x00200000 */
+
+#define ADC_CCR_VREFEN_Pos (22U)
+#define ADC_CCR_VREFEN_Msk (0x1UL << ADC_CCR_VREFEN_Pos) /*!< 0x00400000 */
+#define ADC_CCR_VREFEN ADC_CCR_VREFEN_Msk /*!< ADC internal path to VrefInt enable */
+#define ADC_CCR_TSEN_Pos (23U)
+#define ADC_CCR_TSEN_Msk (0x1UL << ADC_CCR_TSEN_Pos) /*!< 0x00800000 */
+#define ADC_CCR_TSEN ADC_CCR_TSEN_Msk /*!< ADC internal path to temperature sensor enable */
+#define ADC_CCR_VBATEN_Pos (24U)
+#define ADC_CCR_VBATEN_Msk (0x1UL << ADC_CCR_VBATEN_Pos) /*!< 0x01000000 */
+#define ADC_CCR_VBATEN ADC_CCR_VBATEN_Msk /*!< ADC internal path to battery voltage enable */
+
+/******************** Bit definition for ADC_CDR register *******************/
+#define ADC_CDR_RDATA_MST_Pos (0U)
+#define ADC_CDR_RDATA_MST_Msk (0xFFFFUL << ADC_CDR_RDATA_MST_Pos) /*!< 0x0000FFFF */
+#define ADC_CDR_RDATA_MST ADC_CDR_RDATA_MST_Msk /*!< ADC multimode master group regular conversion data */
+
+#define ADC_CDR_RDATA_SLV_Pos (16U)
+#define ADC_CDR_RDATA_SLV_Msk (0xFFFFUL << ADC_CDR_RDATA_SLV_Pos) /*!< 0xFFFF0000 */
+#define ADC_CDR_RDATA_SLV ADC_CDR_RDATA_SLV_Msk /*!< ADC multimode slave group regular conversion data */
+
+
+/******************************************************************************/
+/* */
+/* CORDIC calculation unit */
+/* */
+/******************************************************************************/
+/******************* Bit definition for CORDIC_CSR register *****************/
+#define CORDIC_CSR_FUNC_Pos (0U)
+#define CORDIC_CSR_FUNC_Msk (0xFUL << CORDIC_CSR_FUNC_Pos) /*!< 0x0000000F */
+#define CORDIC_CSR_FUNC CORDIC_CSR_FUNC_Msk /*!< Function */
+#define CORDIC_CSR_FUNC_0 (0x1UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000001 */
+#define CORDIC_CSR_FUNC_1 (0x2UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000002 */
+#define CORDIC_CSR_FUNC_2 (0x4UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000004 */
+#define CORDIC_CSR_FUNC_3 (0x8UL << CORDIC_CSR_FUNC_Pos) /*!< 0x00000008 */
+#define CORDIC_CSR_PRECISION_Pos (4U)
+#define CORDIC_CSR_PRECISION_Msk (0xFUL << CORDIC_CSR_PRECISION_Pos) /*!< 0x000000F0 */
+#define CORDIC_CSR_PRECISION CORDIC_CSR_PRECISION_Msk /*!< Precision */
+#define CORDIC_CSR_PRECISION_0 (0x1UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000010 */
+#define CORDIC_CSR_PRECISION_1 (0x2UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000020 */
+#define CORDIC_CSR_PRECISION_2 (0x4UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000040 */
+#define CORDIC_CSR_PRECISION_3 (0x8UL << CORDIC_CSR_PRECISION_Pos) /*!< 0x00000080 */
+#define CORDIC_CSR_SCALE_Pos (8U)
+#define CORDIC_CSR_SCALE_Msk (0x7UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000700 */
+#define CORDIC_CSR_SCALE CORDIC_CSR_SCALE_Msk /*!< Scaling factor */
+#define CORDIC_CSR_SCALE_0 (0x1UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000100 */
+#define CORDIC_CSR_SCALE_1 (0x2UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000200 */
+#define CORDIC_CSR_SCALE_2 (0x4UL << CORDIC_CSR_SCALE_Pos) /*!< 0x00000400 */
+#define CORDIC_CSR_IEN_Pos (16U)
+#define CORDIC_CSR_IEN_Msk (0x1UL << CORDIC_CSR_IEN_Pos) /*!< 0x00010000 */
+#define CORDIC_CSR_IEN CORDIC_CSR_IEN_Msk /*!< Interrupt Enable */
+#define CORDIC_CSR_DMAREN_Pos (17U)
+#define CORDIC_CSR_DMAREN_Msk (0x1UL << CORDIC_CSR_DMAREN_Pos) /*!< 0x00020000 */
+#define CORDIC_CSR_DMAREN CORDIC_CSR_DMAREN_Msk /*!< DMA Read channel Enable */
+#define CORDIC_CSR_DMAWEN_Pos (18U)
+#define CORDIC_CSR_DMAWEN_Msk (0x1UL << CORDIC_CSR_DMAWEN_Pos) /*!< 0x00040000 */
+#define CORDIC_CSR_DMAWEN CORDIC_CSR_DMAWEN_Msk /*!< DMA Write channel Enable */
+#define CORDIC_CSR_NRES_Pos (19U)
+#define CORDIC_CSR_NRES_Msk (0x1UL << CORDIC_CSR_NRES_Pos) /*!< 0x00080000 */
+#define CORDIC_CSR_NRES CORDIC_CSR_NRES_Msk /*!< Number of results in WDATA register */
+#define CORDIC_CSR_NARGS_Pos (20U)
+#define CORDIC_CSR_NARGS_Msk (0x1UL << CORDIC_CSR_NARGS_Pos) /*!< 0x00100000 */
+#define CORDIC_CSR_NARGS CORDIC_CSR_NARGS_Msk /*!< Number of arguments in RDATA register */
+#define CORDIC_CSR_RESSIZE_Pos (21U)
+#define CORDIC_CSR_RESSIZE_Msk (0x1UL << CORDIC_CSR_RESSIZE_Pos) /*!< 0x00200000 */
+#define CORDIC_CSR_RESSIZE CORDIC_CSR_RESSIZE_Msk /*!< Width of output data */
+#define CORDIC_CSR_ARGSIZE_Pos (22U)
+#define CORDIC_CSR_ARGSIZE_Msk (0x1UL << CORDIC_CSR_ARGSIZE_Pos) /*!< 0x00400000 */
+#define CORDIC_CSR_ARGSIZE CORDIC_CSR_ARGSIZE_Msk /*!< Width of input data */
+#define CORDIC_CSR_RRDY_Pos (31U)
+#define CORDIC_CSR_RRDY_Msk (0x1UL << CORDIC_CSR_RRDY_Pos) /*!< 0x80000000 */
+#define CORDIC_CSR_RRDY CORDIC_CSR_RRDY_Msk /*!< Result Ready Flag */
+
+/******************* Bit definition for CORDIC_WDATA register ***************/
+#define CORDIC_WDATA_ARG_Pos (0U)
+#define CORDIC_WDATA_ARG_Msk (0xFFFFFFFFUL << CORDIC_WDATA_ARG_Pos) /*!< 0xFFFFFFFF */
+#define CORDIC_WDATA_ARG CORDIC_WDATA_ARG_Msk /*!< Input Argument */
+
+/******************* Bit definition for CORDIC_RDATA register ***************/
+#define CORDIC_RDATA_RES_Pos (0U)
+#define CORDIC_RDATA_RES_Msk (0xFFFFFFFFUL << CORDIC_RDATA_RES_Pos) /*!< 0xFFFFFFFF */
+#define CORDIC_RDATA_RES CORDIC_RDATA_RES_Msk /*!< Output Result */
+
+/******************************************************************************/
+/* */
+/* CRC calculation unit */
+/* */
+/******************************************************************************/
+/******************* Bit definition for CRC_DR register *********************/
+#define CRC_DR_DR_Pos (0U)
+#define CRC_DR_DR_Msk (0xFFFFFFFFUL << CRC_DR_DR_Pos) /*!< 0xFFFFFFFF */
+#define CRC_DR_DR CRC_DR_DR_Msk /*!< Data register bits */
+
+/******************* Bit definition for CRC_IDR register ********************/
+#define CRC_IDR_IDR_Pos (0U)
+#define CRC_IDR_IDR_Msk (0xFFFFFFFFUL << CRC_IDR_IDR_Pos) /*!< 0xFFFFFFFF */
+#define CRC_IDR_IDR CRC_IDR_IDR_Msk /*!< General-purpose 32-bits data register bits */
+
+/******************** Bit definition for CRC_CR register ********************/
+#define CRC_CR_RESET_Pos (0U)
+#define CRC_CR_RESET_Msk (0x1UL << CRC_CR_RESET_Pos) /*!< 0x00000001 */
+#define CRC_CR_RESET CRC_CR_RESET_Msk /*!< RESET the CRC computation unit bit */
+#define CRC_CR_POLYSIZE_Pos (3U)
+#define CRC_CR_POLYSIZE_Msk (0x3UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000018 */
+#define CRC_CR_POLYSIZE CRC_CR_POLYSIZE_Msk /*!< Polynomial size bits */
+#define CRC_CR_POLYSIZE_0 (0x1UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000008 */
+#define CRC_CR_POLYSIZE_1 (0x2UL << CRC_CR_POLYSIZE_Pos) /*!< 0x00000010 */
+#define CRC_CR_REV_IN_Pos (5U)
+#define CRC_CR_REV_IN_Msk (0x3UL << CRC_CR_REV_IN_Pos) /*!< 0x00000060 */
+#define CRC_CR_REV_IN CRC_CR_REV_IN_Msk /*!< REV_IN Reverse Input Data bits */
+#define CRC_CR_REV_IN_0 (0x1UL << CRC_CR_REV_IN_Pos) /*!< 0x00000020 */
+#define CRC_CR_REV_IN_1 (0x2UL << CRC_CR_REV_IN_Pos) /*!< 0x00000040 */
+#define CRC_CR_REV_OUT_Pos (7U)
+#define CRC_CR_REV_OUT_Msk (0x1UL << CRC_CR_REV_OUT_Pos) /*!< 0x00000080 */
+#define CRC_CR_REV_OUT CRC_CR_REV_OUT_Msk /*!< REV_OUT Reverse Output Data bits */
+
+/******************* Bit definition for CRC_INIT register *******************/
+#define CRC_INIT_INIT_Pos (0U)
+#define CRC_INIT_INIT_Msk (0xFFFFFFFFUL << CRC_INIT_INIT_Pos) /*!< 0xFFFFFFFF */
+#define CRC_INIT_INIT CRC_INIT_INIT_Msk /*!< Initial CRC value bits */
+
+/******************* Bit definition for CRC_POL register ********************/
+#define CRC_POL_POL_Pos (0U)
+#define CRC_POL_POL_Msk (0xFFFFFFFFUL << CRC_POL_POL_Pos) /*!< 0xFFFFFFFF */
+#define CRC_POL_POL CRC_POL_POL_Msk /*!< Coefficients of the polynomial */
+
+
+/******************************************************************************/
+/* */
+/* CRS Clock Recovery System */
+/******************************************************************************/
+/******************* Bit definition for CRS_CR register *********************/
+#define CRS_CR_SYNCOKIE_Pos (0U)
+#define CRS_CR_SYNCOKIE_Msk (0x1UL << CRS_CR_SYNCOKIE_Pos) /*!< 0x00000001 */
+#define CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE_Msk /*!< SYNC event OK interrupt enable */
+#define CRS_CR_SYNCWARNIE_Pos (1U)
+#define CRS_CR_SYNCWARNIE_Msk (0x1UL << CRS_CR_SYNCWARNIE_Pos) /*!< 0x00000002 */
+#define CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE_Msk /*!< SYNC warning interrupt enable */
+#define CRS_CR_ERRIE_Pos (2U)
+#define CRS_CR_ERRIE_Msk (0x1UL << CRS_CR_ERRIE_Pos) /*!< 0x00000004 */
+#define CRS_CR_ERRIE CRS_CR_ERRIE_Msk /*!< SYNC error or trimming error interrupt enable */
+#define CRS_CR_ESYNCIE_Pos (3U)
+#define CRS_CR_ESYNCIE_Msk (0x1UL << CRS_CR_ESYNCIE_Pos) /*!< 0x00000008 */
+#define CRS_CR_ESYNCIE CRS_CR_ESYNCIE_Msk /*!< Expected SYNC interrupt enable */
+#define CRS_CR_CEN_Pos (5U)
+#define CRS_CR_CEN_Msk (0x1UL << CRS_CR_CEN_Pos) /*!< 0x00000020 */
+#define CRS_CR_CEN CRS_CR_CEN_Msk /*!< Frequency error counter enable */
+#define CRS_CR_AUTOTRIMEN_Pos (6U)
+#define CRS_CR_AUTOTRIMEN_Msk (0x1UL << CRS_CR_AUTOTRIMEN_Pos) /*!< 0x00000040 */
+#define CRS_CR_AUTOTRIMEN CRS_CR_AUTOTRIMEN_Msk /*!< Automatic trimming enable */
+#define CRS_CR_SWSYNC_Pos (7U)
+#define CRS_CR_SWSYNC_Msk (0x1UL << CRS_CR_SWSYNC_Pos) /*!< 0x00000080 */
+#define CRS_CR_SWSYNC CRS_CR_SWSYNC_Msk /*!< Generate software SYNC event */
+#define CRS_CR_TRIM_Pos (8U)
+#define CRS_CR_TRIM_Msk (0x3FUL << CRS_CR_TRIM_Pos) /*!< 0x00003F00 */
+#define CRS_CR_TRIM CRS_CR_TRIM_Msk /*!< HSI48 oscillator smooth trimming */
+
+/******************* Bit definition for CRS_CFGR register *********************/
+#define CRS_CFGR_RELOAD_Pos (0U)
+#define CRS_CFGR_RELOAD_Msk (0xFFFFUL << CRS_CFGR_RELOAD_Pos) /*!< 0x0000FFFF */
+#define CRS_CFGR_RELOAD CRS_CFGR_RELOAD_Msk /*!< Counter reload value */
+#define CRS_CFGR_FELIM_Pos (16U)
+#define CRS_CFGR_FELIM_Msk (0xFFUL << CRS_CFGR_FELIM_Pos) /*!< 0x00FF0000 */
+#define CRS_CFGR_FELIM CRS_CFGR_FELIM_Msk /*!< Frequency error limit */
+#define CRS_CFGR_SYNCDIV_Pos (24U)
+#define CRS_CFGR_SYNCDIV_Msk (0x7UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x07000000 */
+#define CRS_CFGR_SYNCDIV CRS_CFGR_SYNCDIV_Msk /*!< SYNC divider */
+#define CRS_CFGR_SYNCDIV_0 (0x1UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x01000000 */
+#define CRS_CFGR_SYNCDIV_1 (0x2UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x02000000 */
+#define CRS_CFGR_SYNCDIV_2 (0x4UL << CRS_CFGR_SYNCDIV_Pos) /*!< 0x04000000 */
+#define CRS_CFGR_SYNCSRC_Pos (28U)
+#define CRS_CFGR_SYNCSRC_Msk (0x3UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x30000000 */
+#define CRS_CFGR_SYNCSRC CRS_CFGR_SYNCSRC_Msk /*!< SYNC signal source selection */
+#define CRS_CFGR_SYNCSRC_0 (0x1UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x10000000 */
+#define CRS_CFGR_SYNCSRC_1 (0x2UL << CRS_CFGR_SYNCSRC_Pos) /*!< 0x20000000 */
+#define CRS_CFGR_SYNCPOL_Pos (31U)
+#define CRS_CFGR_SYNCPOL_Msk (0x1UL << CRS_CFGR_SYNCPOL_Pos) /*!< 0x80000000 */
+#define CRS_CFGR_SYNCPOL CRS_CFGR_SYNCPOL_Msk /*!< SYNC polarity selection */
+
+/******************* Bit definition for CRS_ISR register *********************/
+#define CRS_ISR_SYNCOKF_Pos (0U)
+#define CRS_ISR_SYNCOKF_Msk (0x1UL << CRS_ISR_SYNCOKF_Pos) /*!< 0x00000001 */
+#define CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF_Msk /*!< SYNC event OK flag */
+#define CRS_ISR_SYNCWARNF_Pos (1U)
+#define CRS_ISR_SYNCWARNF_Msk (0x1UL << CRS_ISR_SYNCWARNF_Pos) /*!< 0x00000002 */
+#define CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF_Msk /*!< SYNC warning flag */
+#define CRS_ISR_ERRF_Pos (2U)
+#define CRS_ISR_ERRF_Msk (0x1UL << CRS_ISR_ERRF_Pos) /*!< 0x00000004 */
+#define CRS_ISR_ERRF CRS_ISR_ERRF_Msk /*!< Error flag */
+#define CRS_ISR_ESYNCF_Pos (3U)
+#define CRS_ISR_ESYNCF_Msk (0x1UL << CRS_ISR_ESYNCF_Pos) /*!< 0x00000008 */
+#define CRS_ISR_ESYNCF CRS_ISR_ESYNCF_Msk /*!< Expected SYNC flag */
+#define CRS_ISR_SYNCERR_Pos (8U)
+#define CRS_ISR_SYNCERR_Msk (0x1UL << CRS_ISR_SYNCERR_Pos) /*!< 0x00000100 */
+#define CRS_ISR_SYNCERR CRS_ISR_SYNCERR_Msk /*!< SYNC error */
+#define CRS_ISR_SYNCMISS_Pos (9U)
+#define CRS_ISR_SYNCMISS_Msk (0x1UL << CRS_ISR_SYNCMISS_Pos) /*!< 0x00000200 */
+#define CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS_Msk /*!< SYNC missed */
+#define CRS_ISR_TRIMOVF_Pos (10U)
+#define CRS_ISR_TRIMOVF_Msk (0x1UL << CRS_ISR_TRIMOVF_Pos) /*!< 0x00000400 */
+#define CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF_Msk /*!< Trimming overflow or underflow */
+#define CRS_ISR_FEDIR_Pos (15U)
+#define CRS_ISR_FEDIR_Msk (0x1UL << CRS_ISR_FEDIR_Pos) /*!< 0x00008000 */
+#define CRS_ISR_FEDIR CRS_ISR_FEDIR_Msk /*!< Frequency error direction */
+#define CRS_ISR_FECAP_Pos (16U)
+#define CRS_ISR_FECAP_Msk (0xFFFFUL << CRS_ISR_FECAP_Pos) /*!< 0xFFFF0000 */
+#define CRS_ISR_FECAP CRS_ISR_FECAP_Msk /*!< Frequency error capture */
+
+/******************* Bit definition for CRS_ICR register *********************/
+#define CRS_ICR_SYNCOKC_Pos (0U)
+#define CRS_ICR_SYNCOKC_Msk (0x1UL << CRS_ICR_SYNCOKC_Pos) /*!< 0x00000001 */
+#define CRS_ICR_SYNCOKC CRS_ICR_SYNCOKC_Msk /*!< SYNC event OK clear flag */
+#define CRS_ICR_SYNCWARNC_Pos (1U)
+#define CRS_ICR_SYNCWARNC_Msk (0x1UL << CRS_ICR_SYNCWARNC_Pos) /*!< 0x00000002 */
+#define CRS_ICR_SYNCWARNC CRS_ICR_SYNCWARNC_Msk /*!< SYNC warning clear flag */
+#define CRS_ICR_ERRC_Pos (2U)
+#define CRS_ICR_ERRC_Msk (0x1UL << CRS_ICR_ERRC_Pos) /*!< 0x00000004 */
+#define CRS_ICR_ERRC CRS_ICR_ERRC_Msk /*!< Error clear flag */
+#define CRS_ICR_ESYNCC_Pos (3U)
+#define CRS_ICR_ESYNCC_Msk (0x1UL << CRS_ICR_ESYNCC_Pos) /*!< 0x00000008 */
+#define CRS_ICR_ESYNCC CRS_ICR_ESYNCC_Msk /*!< Expected SYNC clear flag */
+
+
+/******************************************************************************/
+/* */
+/* RNG */
+/* */
+/******************************************************************************/
+/******************** Bits definition for RNG_CR register *******************/
+#define RNG_CR_RNGEN_Pos (2U)
+#define RNG_CR_RNGEN_Msk (0x1UL << RNG_CR_RNGEN_Pos) /*!< 0x00000004 */
+#define RNG_CR_RNGEN RNG_CR_RNGEN_Msk
+#define RNG_CR_IE_Pos (3U)
+#define RNG_CR_IE_Msk (0x1UL << RNG_CR_IE_Pos) /*!< 0x00000008 */
+#define RNG_CR_IE RNG_CR_IE_Msk
+#define RNG_CR_CED_Pos (5U)
+#define RNG_CR_CED_Msk (0x1UL << RNG_CR_CED_Pos) /*!< 0x00000020 */
+#define RNG_CR_CED RNG_CR_CED_Msk
+#define RNG_CR_ARDIS_Pos (7U)
+#define RNG_CR_ARDIS_Msk (0x1UL << RNG_CR_ARDIS_Pos)
+#define RNG_CR_ARDIS RNG_CR_ARDIS_Msk
+#define RNG_CR_RNG_CONFIG3_Pos (8U)
+#define RNG_CR_RNG_CONFIG3_Msk (0xFUL << RNG_CR_RNG_CONFIG3_Pos)
+#define RNG_CR_RNG_CONFIG3 RNG_CR_RNG_CONFIG3_Msk
+#define RNG_CR_NISTC_Pos (12U)
+#define RNG_CR_NISTC_Msk (0x1UL << RNG_CR_NISTC_Pos)
+#define RNG_CR_NISTC RNG_CR_NISTC_Msk
+#define RNG_CR_RNG_CONFIG2_Pos (13U)
+#define RNG_CR_RNG_CONFIG2_Msk (0x7UL << RNG_CR_RNG_CONFIG2_Pos)
+#define RNG_CR_RNG_CONFIG2 RNG_CR_RNG_CONFIG2_Msk
+#define RNG_CR_CLKDIV_Pos (16U)
+#define RNG_CR_CLKDIV_Msk (0xFUL << RNG_CR_CLKDIV_Pos)
+#define RNG_CR_CLKDIV RNG_CR_CLKDIV_Msk
+#define RNG_CR_CLKDIV_0 (0x1UL << RNG_CR_CLKDIV_Pos) /*!< 0x00010000 */
+#define RNG_CR_CLKDIV_1 (0x2UL << RNG_CR_CLKDIV_Pos) /*!< 0x00020000 */
+#define RNG_CR_CLKDIV_2 (0x4UL << RNG_CR_CLKDIV_Pos) /*!< 0x00040000 */
+#define RNG_CR_CLKDIV_3 (0x8UL << RNG_CR_CLKDIV_Pos) /*!< 0x00080000 */
+#define RNG_CR_RNG_CONFIG1_Pos (20U)
+#define RNG_CR_RNG_CONFIG1_Msk (0x3FUL << RNG_CR_RNG_CONFIG1_Pos)
+#define RNG_CR_RNG_CONFIG1 RNG_CR_RNG_CONFIG1_Msk
+#define RNG_CR_CONDRST_Pos (30U)
+#define RNG_CR_CONDRST_Msk (0x1UL << RNG_CR_CONDRST_Pos)
+#define RNG_CR_CONDRST RNG_CR_CONDRST_Msk
+#define RNG_CR_CONFIGLOCK_Pos (31U)
+#define RNG_CR_CONFIGLOCK_Msk (0x1UL << RNG_CR_CONFIGLOCK_Pos)
+#define RNG_CR_CONFIGLOCK RNG_CR_CONFIGLOCK_Msk
+
+/******************** Bits definition for RNG_SR register *******************/
+#define RNG_SR_DRDY_Pos (0U)
+#define RNG_SR_DRDY_Msk (0x1UL << RNG_SR_DRDY_Pos) /*!< 0x00000001 */
+#define RNG_SR_DRDY RNG_SR_DRDY_Msk
+#define RNG_SR_CECS_Pos (1U)
+#define RNG_SR_CECS_Msk (0x1UL << RNG_SR_CECS_Pos) /*!< 0x00000002 */
+#define RNG_SR_CECS RNG_SR_CECS_Msk
+#define RNG_SR_SECS_Pos (2U)
+#define RNG_SR_SECS_Msk (0x1UL << RNG_SR_SECS_Pos) /*!< 0x00000004 */
+#define RNG_SR_SECS RNG_SR_SECS_Msk
+#define RNG_SR_CEIS_Pos (5U)
+#define RNG_SR_CEIS_Msk (0x1UL << RNG_SR_CEIS_Pos) /*!< 0x00000020 */
+#define RNG_SR_CEIS RNG_SR_CEIS_Msk
+#define RNG_SR_SEIS_Pos (6U)
+#define RNG_SR_SEIS_Msk (0x1UL << RNG_SR_SEIS_Pos) /*!< 0x00000040 */
+#define RNG_SR_SEIS RNG_SR_SEIS_Msk
+
+/******************** Bits definition for RNG_NSCR register *******************/
+#define RNG_NSCR_EN_OSC1_Pos (0U)
+#define RNG_NSCR_EN_OSC1_Msk (0x7UL << RNG_NSCR_EN_OSC1_Pos) /*!< 0x00000007 */
+#define RNG_NSCR_EN_OSC1 RNG_NSCR_EN_OSC1_Msk
+#define RNG_NSCR_EN_OSC2_Pos (3U)
+#define RNG_NSCR_EN_OSC2_Msk (0x7UL << RNG_NSCR_EN_OSC2_Pos) /*!< 0x00000038 */
+#define RNG_NSCR_EN_OSC2 RNG_NSCR_EN_OSC2_Msk
+#define RNG_NSCR_EN_OSC3_Pos (6U)
+#define RNG_NSCR_EN_OSC3_Msk (0x7UL << RNG_NSCR_EN_OSC3_Pos) /*!< 0x000001C0 */
+#define RNG_NSCR_EN_OSC3 RNG_NSCR_EN_OSC3_Msk
+#define RNG_NSCR_EN_OSC4_Pos (9U)
+#define RNG_NSCR_EN_OSC4_Msk (0x7UL << RNG_NSCR_EN_OSC4_Pos) /*!< 0x00000E00 */
+#define RNG_NSCR_EN_OSC4 RNG_NSCR_EN_OSC4_Msk
+#define RNG_NSCR_EN_OSC5_Pos (12U)
+#define RNG_NSCR_EN_OSC5_Msk (0x7UL << RNG_NSCR_EN_OSC5_Pos) /*!< 0x00007000 */
+#define RNG_NSCR_EN_OSC5 RNG_NSCR_EN_OSC5_Msk
+#define RNG_NSCR_EN_OSC6_Pos (15U)
+#define RNG_NSCR_EN_OSC6_Msk (0x7UL << RNG_NSCR_EN_OSC6_Pos) /*!< 0x00038000 */
+#define RNG_NSCR_EN_OSC6 RNG_NSCR_EN_OSC6_Msk
+
+/******************** Bits definition for RNG_HTCR register *******************/
+#define RNG_HTCR_HTCFG_Pos (0U)
+#define RNG_HTCR_HTCFG_Msk (0xFFFFFFFFUL << RNG_HTCR_HTCFG_Pos) /*!< 0xFFFFFFFF */
+#define RNG_HTCR_HTCFG RNG_HTCR_HTCFG_Msk
+
+/******************** RNG Nist Compliance Values ******************************/
+#define RNG_CR_NIST_VALUE (0x00F00E00U)
+#define RNG_HTCR_NIST_VALUE (0x6A91U)
+#define RNG_NSCR_NIST_VALUE (0x3AF66U)
+
+/******************************************************************************/
+/* */
+/* Digital to Analog Converter */
+/* */
+/******************************************************************************/
+#define DAC_CHANNEL2_SUPPORT /*!< DAC feature available only on specific devices: DAC channel 2 available */
+
+/******************** Bit definition for DAC_CR register ********************/
+#define DAC_CR_EN1_Pos (0U)
+#define DAC_CR_EN1_Msk (0x1UL << DAC_CR_EN1_Pos) /*!< 0x00000001 */
+#define DAC_CR_EN1 DAC_CR_EN1_Msk /*!*/
+#define DAC_CR_CEN1_Pos (14U)
+#define DAC_CR_CEN1_Msk (0x1UL << DAC_CR_CEN1_Pos) /*!< 0x00004000 */
+#define DAC_CR_CEN1 DAC_CR_CEN1_Msk /*!*/
+#define DAC_CR_EN2_Pos (16U)
+#define DAC_CR_EN2_Msk (0x1UL << DAC_CR_EN2_Pos) /*!< 0x00010000 */
+#define DAC_CR_EN2 DAC_CR_EN2_Msk /*!*/
+#define DAC_CR_CEN2_Pos (30U)
+#define DAC_CR_CEN2_Msk (0x1UL << DAC_CR_CEN2_Pos) /*!< 0x40000000 */
+#define DAC_CR_CEN2 DAC_CR_CEN2_Msk /*!*/
+
+/***************** Bit definition for DAC_SWTRIGR register ******************/
+#define DAC_SWTRIGR_SWTRIG1_Pos (0U)
+#define DAC_SWTRIGR_SWTRIG1_Msk (0x1UL << DAC_SWTRIGR_SWTRIG1_Pos) /*!< 0x00000001 */
+#define DAC_SWTRIGR_SWTRIG1 DAC_SWTRIGR_SWTRIG1_Msk /*!> 1U) /*!< FLASH Bank Size */
+#define FLASH_SECTOR_SIZE 0x2000U /*!< Flash Sector Size: 8 KB */
+
+/******************* Bits definition for FLASH_ACR register *****************/
+#define FLASH_ACR_LATENCY_Pos (0U)
+#define FLASH_ACR_LATENCY_Msk (0xFUL << FLASH_ACR_LATENCY_Pos) /*!< 0x0000000F */
+#define FLASH_ACR_LATENCY FLASH_ACR_LATENCY_Msk /*!< Latency */
+#define FLASH_ACR_LATENCY_0WS (0x00000000U)
+#define FLASH_ACR_LATENCY_1WS (0x00000001U)
+#define FLASH_ACR_LATENCY_2WS (0x00000002U)
+#define FLASH_ACR_LATENCY_3WS (0x00000003U)
+#define FLASH_ACR_LATENCY_4WS (0x00000004U)
+#define FLASH_ACR_LATENCY_5WS (0x00000005U)
+#define FLASH_ACR_LATENCY_6WS (0x00000006U)
+#define FLASH_ACR_LATENCY_7WS (0x00000007U)
+#define FLASH_ACR_LATENCY_8WS (0x00000008U)
+#define FLASH_ACR_LATENCY_9WS (0x00000009U)
+#define FLASH_ACR_LATENCY_10WS (0x0000000AU)
+#define FLASH_ACR_LATENCY_11WS (0x0000000BU)
+#define FLASH_ACR_LATENCY_12WS (0x0000000CU)
+#define FLASH_ACR_LATENCY_13WS (0x0000000DU)
+#define FLASH_ACR_LATENCY_14WS (0x0000000EU)
+#define FLASH_ACR_LATENCY_15WS (0x0000000FU)
+#define FLASH_ACR_WRHIGHFREQ_Pos (4U)
+#define FLASH_ACR_WRHIGHFREQ_Msk (0x3UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000030 */
+#define FLASH_ACR_WRHIGHFREQ FLASH_ACR_WRHIGHFREQ_Msk /*!< Flash signal delay */
+#define FLASH_ACR_WRHIGHFREQ_0 (0x1UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000010 */
+#define FLASH_ACR_WRHIGHFREQ_1 (0x2UL << FLASH_ACR_WRHIGHFREQ_Pos) /*!< 0x00000020 */
+#define FLASH_ACR_PRFTEN_Pos (8U)
+#define FLASH_ACR_PRFTEN_Msk (0x1UL << FLASH_ACR_PRFTEN_Pos) /*!< 0x00000100 */
+#define FLASH_ACR_PRFTEN FLASH_ACR_PRFTEN_Msk /*!< Prefetch enable */
+
+/******************* Bits definition for FLASH_OPSR register ***************/
+#define FLASH_OPSR_ADDR_OP_Pos (0U)
+#define FLASH_OPSR_ADDR_OP_Msk (0xFFFFFUL << FLASH_OPSR_ADDR_OP_Pos) /*!< 0x000FFFFF */
+#define FLASH_OPSR_ADDR_OP FLASH_OPSR_ADDR_OP_Msk /*!< Interrupted operation address */
+#define FLASH_OPSR_DATA_OP_Pos (21U)
+#define FLASH_OPSR_DATA_OP_Msk (0x1UL << FLASH_OPSR_DATA_OP_Pos) /*!< 0x00200000 */
+#define FLASH_OPSR_DATA_OP FLASH_OPSR_DATA_OP_Msk /*!< Operation in Flash high-cycle data area interrupted */
+#define FLASH_OPSR_BK_OP_Pos (22U)
+#define FLASH_OPSR_BK_OP_Msk (0x1UL << FLASH_OPSR_BK_OP_Pos) /*!< 0x00400000 */
+#define FLASH_OPSR_BK_OP FLASH_OPSR_BK_OP_Msk /*!< Interrupted operation bank */
+#define FLASH_OPSR_SYSF_OP_Pos (23U)
+#define FLASH_OPSR_SYSF_OP_Msk (0x1UL << FLASH_OPSR_SYSF_OP_Pos) /*!< 0x00800000 */
+#define FLASH_OPSR_SYSF_OP FLASH_OPSR_SYSF_OP_Msk /*!< Operation in System Flash interrupted */
+#define FLASH_OPSR_OTP_OP_Pos (24U)
+#define FLASH_OPSR_OTP_OP_Msk (0x1UL << FLASH_OPSR_OTP_OP_Pos) /*!< 0x01000000 */
+#define FLASH_OPSR_OTP_OP FLASH_OPSR_OTP_OP_Msk /*!< Operation in OTP area interrupted */
+#define FLASH_OPSR_CODE_OP_Pos (29U)
+#define FLASH_OPSR_CODE_OP_Msk (0x7UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0xE0000000 */
+#define FLASH_OPSR_CODE_OP FLASH_OPSR_CODE_OP_Msk /*!< Flash memory operation code */
+#define FLASH_OPSR_CODE_OP_0 (0x1UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x20000000 */
+#define FLASH_OPSR_CODE_OP_1 (0x2UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x40000000 */
+#define FLASH_OPSR_CODE_OP_2 (0x4UL << FLASH_OPSR_CODE_OP_Pos) /*!< 0x80000000 */
+
+/******************* Bits definition for FLASH_OPTCR register *******************/
+#define FLASH_OPTCR_OPTLOCK_Pos (0U)
+#define FLASH_OPTCR_OPTLOCK_Msk (0x1UL << FLASH_OPTCR_OPTLOCK_Pos) /*!< 0x00000001 */
+#define FLASH_OPTCR_OPTLOCK FLASH_OPTCR_OPTLOCK_Msk /*!< FLASH_OPTCR lock option configuration bit */
+#define FLASH_OPTCR_OPTSTART_Pos (1U)
+#define FLASH_OPTCR_OPTSTART_Msk (0x1UL << FLASH_OPTCR_OPTSTART_Pos) /*!< 0x00000002 */
+#define FLASH_OPTCR_OPTSTART FLASH_OPTCR_OPTSTART_Msk /*!< Option byte start change option configuration bit */
+#define FLASH_OPTCR_SWAP_BANK_Pos (31U)
+#define FLASH_OPTCR_SWAP_BANK_Msk (0x1UL << FLASH_OPTCR_SWAP_BANK_Pos) /*!< 0x80000000 */
+#define FLASH_OPTCR_SWAP_BANK FLASH_OPTCR_SWAP_BANK_Msk /*!< Bank swapping option configuration bit */
+
+/******************* Bits definition for FLASH_SR register ***********************/
+#define FLASH_SR_BSY_Pos (0U)
+#define FLASH_SR_BSY_Msk (0x1UL << FLASH_SR_BSY_Pos) /*!< 0x00000001 */
+#define FLASH_SR_BSY FLASH_SR_BSY_Msk /*!< Busy flag */
+#define FLASH_SR_WBNE_Pos (1U)
+#define FLASH_SR_WBNE_Msk (0x1UL << FLASH_SR_WBNE_Pos) /*!< 0x00000002 */
+#define FLASH_SR_WBNE FLASH_SR_WBNE_Msk /*!< Write buffer not empty flag */
+#define FLASH_SR_DBNE_Pos (3U)
+#define FLASH_SR_DBNE_Msk (0x1UL << FLASH_SR_DBNE_Pos) /*!< 0x00000008 */
+#define FLASH_SR_DBNE FLASH_SR_DBNE_Msk /*!< Data buffer not empty flag */
+#define FLASH_SR_EOP_Pos (16U)
+#define FLASH_SR_EOP_Msk (0x1UL << FLASH_SR_EOP_Pos) /*!< 0x00010000 */
+#define FLASH_SR_EOP FLASH_SR_EOP_Msk /*!< End-of-program flag */
+#define FLASH_SR_WRPERR_Pos (17U)
+#define FLASH_SR_WRPERR_Msk (0x1UL << FLASH_SR_WRPERR_Pos) /*!< 0x00020000 */
+#define FLASH_SR_WRPERR FLASH_SR_WRPERR_Msk /*!< Write protection error flag */
+#define FLASH_SR_PGSERR_Pos (18U)
+#define FLASH_SR_PGSERR_Msk (0x1UL << FLASH_SR_PGSERR_Pos) /*!< 0x00040000 */
+#define FLASH_SR_PGSERR FLASH_SR_PGSERR_Msk /*!< Programming sequence error flag */
+#define FLASH_SR_STRBERR_Pos (19U)
+#define FLASH_SR_STRBERR_Msk (0x1UL << FLASH_SR_STRBERR_Pos) /*!< 0x00080000 */
+#define FLASH_SR_STRBERR FLASH_SR_STRBERR_Msk /*!< Strobe error flag */
+#define FLASH_SR_INCERR_Pos (20U)
+#define FLASH_SR_INCERR_Msk (0x1UL << FLASH_SR_INCERR_Pos) /*!< 0x00100000 */
+#define FLASH_SR_INCERR FLASH_SR_INCERR_Msk /*!< Inconsistency error flag */
+#define FLASH_SR_OBKERR_Pos (21U)
+#define FLASH_SR_OBKERR_Msk (0x1UL << FLASH_SR_OBKERR_Pos) /*!< 0x00200000 */
+#define FLASH_SR_OBKERR FLASH_SR_OBKERR_Msk /*!< OBK general error flag */
+#define FLASH_SR_OBKWERR_Pos (22U)
+#define FLASH_SR_OBKWERR_Msk (0x1UL << FLASH_SR_OBKWERR_Pos) /*!< 0x00400000 */
+#define FLASH_SR_OBKWERR FLASH_SR_OBKWERR_Msk /*!< OBK write error flag */
+#define FLASH_SR_OPTCHANGEERR_Pos (23U)
+#define FLASH_SR_OPTCHANGEERR_Msk (0x1UL << FLASH_SR_OPTCHANGEERR_Pos) /*!< 0x00800000 */
+#define FLASH_SR_OPTCHANGEERR FLASH_SR_OPTCHANGEERR_Msk /*!< Option byte change error flag */
+
+/******************* Bits definition for FLASH_CR register ***********************/
+#define FLASH_CR_LOCK_Pos (0U)
+#define FLASH_CR_LOCK_Msk (0x1UL << FLASH_CR_LOCK_Pos) /*!< 0x00000001 */
+#define FLASH_CR_LOCK FLASH_CR_LOCK_Msk /*!< Configuration lock bit */
+#define FLASH_CR_PG_Pos (1U)
+#define FLASH_CR_PG_Msk (0x1UL << FLASH_CR_PG_Pos) /*!< 0x00000002 */
+#define FLASH_CR_PG FLASH_CR_PG_Msk /*!< Programming control bit */
+#define FLASH_CR_SER_Pos (2U)
+#define FLASH_CR_SER_Msk (0x1UL << FLASH_CR_SER_Pos) /*!< 0x00000004 */
+#define FLASH_CR_SER FLASH_CR_SER_Msk /*!< Sector erase request */
+#define FLASH_CR_BER_Pos (3U)
+#define FLASH_CR_BER_Msk (0x1UL << FLASH_CR_BER_Pos) /*!< 0x00000008 */
+#define FLASH_CR_BER FLASH_CR_BER_Msk /*!< Bank erase request */
+#define FLASH_CR_FW_Pos (4U)
+#define FLASH_CR_FW_Msk (0x1UL << FLASH_CR_FW_Pos) /*!< 0x00000010 */
+#define FLASH_CR_FW FLASH_CR_FW_Msk /*!< Write forcing control bit */
+#define FLASH_CR_START_Pos (5U)
+#define FLASH_CR_START_Msk (0x1UL << FLASH_CR_START_Pos) /*!< 0x00000020 */
+#define FLASH_CR_START FLASH_CR_START_Msk /*!< Erase start control bit */
+#define FLASH_CR_SNB_Pos (6U)
+#define FLASH_CR_SNB_Msk (0x7FUL << FLASH_CR_SNB_Pos) /*!< 0x00001FC0 */
+#define FLASH_CR_SNB FLASH_CR_SNB_Msk /*!< Sector erase selection number */
+#define FLASH_CR_SNB_0 (0x01UL << FLASH_CR_SNB_Pos) /*!< 0x00000040 */
+#define FLASH_CR_SNB_1 (0x02UL << FLASH_CR_SNB_Pos) /*!< 0x00000080 */
+#define FLASH_CR_SNB_2 (0x04UL << FLASH_CR_SNB_Pos) /*!< 0x00000100 */
+#define FLASH_CR_SNB_3 (0x08UL << FLASH_CR_SNB_Pos) /*!< 0x00000200 */
+#define FLASH_CR_SNB_4 (0x10UL << FLASH_CR_SNB_Pos) /*!< 0x00000400 */
+#define FLASH_CR_SNB_5 (0x20UL << FLASH_CR_SNB_Pos) /*!< 0x00000800 */
+#define FLASH_CR_SNB_6 (0x40UL << FLASH_CR_SNB_Pos) /*!< 0x00001000 */
+#define FLASH_CR_MER_Pos (15U)
+#define FLASH_CR_MER_Msk (0x1UL << FLASH_CR_MER_Pos) /*!< 0x00008000 */
+#define FLASH_CR_MER FLASH_CR_MER_Msk /*!< Mass erase */
+#define FLASH_CR_EOPIE_Pos (16U)
+#define FLASH_CR_EOPIE_Msk (0x1UL << FLASH_CR_EOPIE_Pos) /*!< 0x00010000 */
+#define FLASH_CR_EOPIE FLASH_CR_EOPIE_Msk /*!< End-of-operation interrupt control bit */
+#define FLASH_CR_WRPERRIE_Pos (17U)
+#define FLASH_CR_WRPERRIE_Msk (0x1UL << FLASH_CR_WRPERRIE_Pos) /*!< 0x00020000 */
+#define FLASH_CR_WRPERRIE FLASH_CR_WRPERRIE_Msk /*!< Write protection error interrupt enable bit */
+#define FLASH_CR_PGSERRIE_Pos (18U)
+#define FLASH_CR_PGSERRIE_Msk (0x1UL << FLASH_CR_PGSERRIE_Pos) /*!< 0x00040000 */
+#define FLASH_CR_PGSERRIE FLASH_CR_PGSERRIE_Msk /*!< Programming sequence error interrupt enable bit */
+#define FLASH_CR_STRBERRIE_Pos (19U)
+#define FLASH_CR_STRBERRIE_Msk (0x1UL << FLASH_CR_STRBERRIE_Pos) /*!< 0x00080000 */
+#define FLASH_CR_STRBERRIE FLASH_CR_STRBERRIE_Msk /*!< Strobe error interrupt enable bit */
+#define FLASH_CR_INCERRIE_Pos (20U)
+#define FLASH_CR_INCERRIE_Msk (0x1UL << FLASH_CR_INCERRIE_Pos) /*!< 0x00100000 */
+#define FLASH_CR_INCERRIE FLASH_CR_INCERRIE_Msk /*!< Inconsistency error interrupt enable bit */
+#define FLASH_CR_OBKERRIE_Pos (21U)
+#define FLASH_CR_OBKERRIE_Msk (0x1UL << FLASH_CR_OBKERRIE_Pos) /*!< 0x00200000 */
+#define FLASH_CR_OBKERRIE FLASH_CR_OBKERRIE_Msk /*!< OBK general error interrupt enable bitt */
+#define FLASH_CR_OBKWERRIE_Pos (22U)
+#define FLASH_CR_OBKWERRIE_Msk (0x1UL << FLASH_CR_OBKWERRIE_Pos) /*!< 0x00400000 */
+#define FLASH_CR_OBKWERRIE FLASH_CR_OBKWERRIE_Msk /*!< OBK write error interrupt enable bit */
+#define FLASH_CR_OPTCHANGEERRIE_Pos (23U)
+#define FLASH_CR_OPTCHANGEERRIE_Msk (0x1UL << FLASH_CR_OPTCHANGEERRIE_Pos) /*!< 0x00800000 */
+#define FLASH_CR_OPTCHANGEERRIE FLASH_CR_OPTCHANGEERRIE_Msk /*!< Option byte change error interrupt enable bit */
+#define FLASH_CR_INV_Pos (29U)
+#define FLASH_CR_INV_Msk (0x1UL << FLASH_CR_INV_Pos) /*!< 0x20000000 */
+#define FLASH_CR_INV FLASH_CR_INV_Msk /*!< Flash Security State Invert */
+#define FLASH_CR_BKSEL_Pos (31U)
+#define FLASH_CR_BKSEL_Msk (0x1UL << FLASH_CR_BKSEL_Pos) /*!< 0x10000000 */
+#define FLASH_CR_BKSEL FLASH_CR_BKSEL_Msk /*!< Bank selector */
+
+/******************* Bits definition for FLASH_CCR register *******************/
+#define FLASH_CCR_CLR_EOP_Pos (16U)
+#define FLASH_CCR_CLR_EOP_Msk (0x1UL << FLASH_CCR_CLR_EOP_Pos) /*!< 0x00010000 */
+#define FLASH_CCR_CLR_EOP FLASH_CCR_CLR_EOP_Msk /*!< EOP flag clear bit */
+#define FLASH_CCR_CLR_WRPERR_Pos (17U)
+#define FLASH_CCR_CLR_WRPERR_Msk (0x1UL << FLASH_CCR_CLR_WRPERR_Pos) /*!< 0x00020000 */
+#define FLASH_CCR_CLR_WRPERR FLASH_CCR_CLR_WRPERR_Msk /*!< WRPERR flag clear bit */
+#define FLASH_CCR_CLR_PGSERR_Pos (18U)
+#define FLASH_CCR_CLR_PGSERR_Msk (0x1UL << FLASH_CCR_CLR_PGSERR_Pos) /*!< 0x00040000 */
+#define FLASH_CCR_CLR_PGSERR FLASH_CCR_CLR_PGSERR_Msk /*!< PGSERR flag clear bit */
+#define FLASH_CCR_CLR_STRBERR_Pos (19U)
+#define FLASH_CCR_CLR_STRBERR_Msk (0x1UL << FLASH_CCR_CLR_STRBERR_Pos) /*!< 0x00080000 */
+#define FLASH_CCR_CLR_STRBERR FLASH_CCR_CLR_STRBERR_Msk /*!< STRBERR flag clear bit */
+#define FLASH_CCR_CLR_INCERR_Pos (20U)
+#define FLASH_CCR_CLR_INCERR_Msk (0x1UL << FLASH_CCR_CLR_INCERR_Pos) /*!< 0x00100000 */
+#define FLASH_CCR_CLR_INCERR FLASH_CCR_CLR_INCERR_Msk /*!< INCERR flag clear bit */
+#define FLASH_CCR_CLR_OBKERR_Pos (21U)
+#define FLASH_CCR_CLR_OBKERR_Msk (0x1UL << FLASH_CCR_CLR_OBKERR_Pos) /*!< 0x00200000 */
+#define FLASH_CCR_CLR_OBKERR FLASH_CCR_CLR_OBKERR_Msk /*!< OBKERR flag clear bit */
+#define FLASH_CCR_CLR_OBKWERR_Pos (22U)
+#define FLASH_CCR_CLR_OBKWERR_Msk (0x1UL << FLASH_CCR_CLR_OBKWERR_Pos) /*!< 0x00400000 */
+#define FLASH_CCR_CLR_OBKWERR FLASH_CCR_CLR_OBKWERR_Msk /*!< OBKWERR flag clear bit */
+#define FLASH_CCR_CLR_OPTCHANGEERR_Pos (23U)
+#define FLASH_CCR_CLR_OPTCHANGEERR_Msk (0x1UL << FLASH_CCR_CLR_OPTCHANGEERR_Pos) /*!< 0x00800000 */
+#define FLASH_CCR_CLR_OPTCHANGEERR FLASH_CCR_CLR_OPTCHANGEERR_Msk /*!< Option byte change error clear bit */
+
+/****************** Bits definition for FLASH_PRIVCFGR register ***********/
+#define FLASH_PRIVCFGR_SPRIV_Pos (0U)
+#define FLASH_PRIVCFGR_SPRIV_Msk (0x1UL << FLASH_PRIVCFGR_SPRIV_Pos) /*!< 0x00000001 */
+#define FLASH_PRIVCFGR_SPRIV FLASH_PRIVCFGR_SPRIV_Msk /*!< Privilege protection for secure registers */
+#define FLASH_PRIVCFGR_NSPRIV_Pos (1U)
+#define FLASH_PRIVCFGR_NSPRIV_Msk (0x1UL << FLASH_PRIVCFGR_NSPRIV_Pos) /*!< 0x00000002 */
+#define FLASH_PRIVCFGR_NSPRIV FLASH_PRIVCFGR_NSPRIV_Msk /*!< Privilege protection for non-secure registers */
+
+/****************** Bits definition for FLASH_OBKCFGR register *****************/
+#define FLASH_OBKCFGR_LOCK_Pos (0U)
+#define FLASH_OBKCFGR_LOCK_Msk (0x1UL << FLASH_OBKCFGR_LOCK_Pos) /*!< 0x00000001 */
+#define FLASH_OBKCFGR_LOCK FLASH_OBKCFGR_LOCK_Msk /*!< OBKCFGR lock */
+#define FLASH_OBKCFGR_SWAP_SECT_REQ_Pos (1U)
+#define FLASH_OBKCFGR_SWAP_SECT_REQ_Msk (0x1UL << FLASH_OBKCFGR_SWAP_SECT_REQ_Pos) /*!< 0x00000002 */
+#define FLASH_OBKCFGR_SWAP_SECT_REQ FLASH_OBKCFGR_SWAP_SECT_REQ_Msk /*!< OBK swap sector request */
+#define FLASH_OBKCFGR_ALT_SECT_Pos (2U)
+#define FLASH_OBKCFGR_ALT_SECT_Msk (0x1UL << FLASH_OBKCFGR_ALT_SECT_Pos) /*!< 0x00000004 */
+#define FLASH_OBKCFGR_ALT_SECT FLASH_OBKCFGR_ALT_SECT_Msk /*!< Alternate sector */
+#define FLASH_OBKCFGR_ALT_SECT_ERASE_Pos (3U)
+#define FLASH_OBKCFGR_ALT_SECT_ERASE_Msk (0x1UL << FLASH_OBKCFGR_ALT_SECT_ERASE_Pos) /*!< 0x00000008 */
+#define FLASH_OBKCFGR_ALT_SECT_ERASE FLASH_OBKCFGR_ALT_SECT_ERASE_Msk /*!< Alternate sector erase */
+#define FLASH_OBKCFGR_SWAP_OFFSET_Pos (16U)
+#define FLASH_OBKCFGR_SWAP_OFFSET_Msk (0x1FFUL << FLASH_OBKCFGR_SWAP_OFFSET_Pos) /*!< 0x01FF0000 */
+#define FLASH_OBKCFGR_SWAP_OFFSET FLASH_OBKCFGR_SWAP_OFFSET_Msk /*!< Swap offset */
+
+/****************** Bits definition for FLASH_HDPEXTR register *****************/
+#define FLASH_HDPEXTR_HDP1_EXT_Pos (0U)
+#define FLASH_HDPEXTR_HDP1_EXT_Msk (0x7FUL << FLASH_HDPEXTR_HDP1_EXT_Pos) /*!< 0x0000007F */
+#define FLASH_HDPEXTR_HDP1_EXT FLASH_HDPEXTR_HDP1_EXT_Msk /*!< HDP area extension in 8kB sectors in bank 1 */
+#define FLASH_HDPEXTR_HDP2_EXT_Pos (16U)
+#define FLASH_HDPEXTR_HDP2_EXT_Msk (0x7FUL << FLASH_HDPEXTR_HDP2_EXT_Pos) /*!< 0x007F0000 */
+#define FLASH_HDPEXTR_HDP2_EXT FLASH_HDPEXTR_HDP2_EXT_Msk /*!< HDP area extension in 8kB sectors in bank 2 */
+
+/******************* Bits definition for FLASH_OPTSR register ***************/
+#define FLASH_OPTSR_BOR_LEV_Pos (0U)
+#define FLASH_OPTSR_BOR_LEV_Msk (0x3UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000003 */
+#define FLASH_OPTSR_BOR_LEV FLASH_OPTSR_BOR_LEV_Msk /*!< Brownout level option bit */
+#define FLASH_OPTSR_BOR_LEV_0 (0x1UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000001 */
+#define FLASH_OPTSR_BOR_LEV_1 (0x2UL << FLASH_OPTSR_BOR_LEV_Pos) /*!< 0x00000002 */
+#define FLASH_OPTSR_BORH_EN_Pos (2U)
+#define FLASH_OPTSR_BORH_EN_Msk (0x1UL << FLASH_OPTSR_BORH_EN_Pos) /*!< 0x00000004 */
+#define FLASH_OPTSR_BORH_EN FLASH_OPTSR_BORH_EN_Msk /*!< Brownout high enable configuration bit */
+#define FLASH_OPTSR_IWDG_SW_Pos (3U)
+#define FLASH_OPTSR_IWDG_SW_Msk (0x1UL << FLASH_OPTSR_IWDG_SW_Pos) /*!< 0x00000008 */
+#define FLASH_OPTSR_IWDG_SW FLASH_OPTSR_IWDG_SW_Msk /*!< IWDG control mode option bit */
+#define FLASH_OPTSR_WWDG_SW_Pos (4U)
+#define FLASH_OPTSR_WWDG_SW_Msk (0x1UL << FLASH_OPTSR_WWDG_SW_Pos) /*!< 0x00000010 */
+#define FLASH_OPTSR_WWDG_SW FLASH_OPTSR_WWDG_SW_Msk /*!< WWDG control mode option bit */
+#define FLASH_OPTSR_NRST_STOP_Pos (6U)
+#define FLASH_OPTSR_NRST_STOP_Msk (0x1UL << FLASH_OPTSR_NRST_STOP_Pos) /*!< 0x00000040 */
+#define FLASH_OPTSR_NRST_STOP FLASH_OPTSR_NRST_STOP_Msk /*!< Stop mode entry reset option bit */
+#define FLASH_OPTSR_NRST_STDBY_Pos (7U)
+#define FLASH_OPTSR_NRST_STDBY_Msk (0x1UL << FLASH_OPTSR_NRST_STDBY_Pos) /*!< 0x00000080 */
+#define FLASH_OPTSR_NRST_STDBY FLASH_OPTSR_NRST_STDBY_Msk /*!< Standby mode entry reset option bit */
+#define FLASH_OPTSR_PRODUCT_STATE_Pos (8U)
+#define FLASH_OPTSR_PRODUCT_STATE_Msk (0xFFUL << FLASH_OPTSR_PRODUCT_STATE_Pos) /*!< 0x0000FF00 */
+#define FLASH_OPTSR_PRODUCT_STATE FLASH_OPTSR_PRODUCT_STATE_Msk /*!< Life state code option byte */
+#define FLASH_OPTSR_IO_VDD_HSLV_Pos (16U)
+#define FLASH_OPTSR_IO_VDD_HSLV_Msk (0x1UL << FLASH_OPTSR_IO_VDD_HSLV_Pos) /*!< 0x00010000 */
+#define FLASH_OPTSR_IO_VDD_HSLV FLASH_OPTSR_IO_VDD_HSLV_Msk /*!< VDD I/O high-speed at low-voltage option bit */
+#define FLASH_OPTSR_IO_VDDIO2_HSLV_Pos (17U)
+#define FLASH_OPTSR_IO_VDDIO2_HSLV_Msk (0x1UL << FLASH_OPTSR_IO_VDDIO2_HSLV_Pos) /*!< 0x00020000 */
+#define FLASH_OPTSR_IO_VDDIO2_HSLV FLASH_OPTSR_IO_VDDIO2_HSLV_Msk /*!< VDDIO2 I/O high-speed at low-voltage option bit */
+#define FLASH_OPTSR_IWDG_STOP_Pos (20U)
+#define FLASH_OPTSR_IWDG_STOP_Msk (0x1UL << FLASH_OPTSR_IWDG_STOP_Pos) /*!< 0x00100000 */
+#define FLASH_OPTSR_IWDG_STOP FLASH_OPTSR_IWDG_STOP_Msk /*!< Independent watchdog counter freeze in Stop mode */
+#define FLASH_OPTSR_IWDG_STDBY_Pos (21U)
+#define FLASH_OPTSR_IWDG_STDBY_Msk (0x1UL << FLASH_OPTSR_IWDG_STDBY_Pos) /*!< 0x00200000 */
+#define FLASH_OPTSR_IWDG_STDBY FLASH_OPTSR_IWDG_STDBY_Msk /*!< Independent watchdog counter freeze in Standby mode */
+#define FLASH_OPTSR_BOOT_UBE_Pos (22U)
+#define FLASH_OPTSR_BOOT_UBE_Msk (0xFFUL << FLASH_OPTSR_BOOT_UBE_Pos) /*!< 0x3FC00000 */
+#define FLASH_OPTSR_BOOT_UBE FLASH_OPTSR_BOOT_UBE_Msk /*!< Unique boot entry option byte */
+#define FLASH_OPTSR_SWAP_BANK_Pos (31U)
+#define FLASH_OPTSR_SWAP_BANK_Msk (0x1UL << FLASH_OPTSR_SWAP_BANK_Pos) /*!< 0x80000000 */
+#define FLASH_OPTSR_SWAP_BANK FLASH_OPTSR_SWAP_BANK_Msk /*!< Bank swapping option bit */
+
+/******************* Bits definition for FLASH_EPOCHR register ***************/
+#define FLASH_EPOCHR_EPOCH_Pos (0U)
+#define FLASH_EPOCHR_EPOCH_Msk (0xFFFFFFUL << FLASH_EPOCHR_EPOCH_Pos) /*!< 0x00FFFFFF */
+#define FLASH_EPOCHR_EPOCH FLASH_EPOCHR_EPOCH_Msk /*!< EPOCH counter */
+
+/******************* Bits definition for FLASH_OPTSR2 register ***************/
+#define FLASH_OPTSR2_SRAM1_3_RST_Pos (2U)
+#define FLASH_OPTSR2_SRAM1_3_RST_Msk (0x1UL << FLASH_OPTSR2_SRAM1_3_RST_Pos) /*!< 0x00000004 */
+#define FLASH_OPTSR2_SRAM1_3_RST FLASH_OPTSR2_SRAM1_3_RST_Msk /*!< SRAM1 and SRAM3 erased when a system reset occurs */
+#define FLASH_OPTSR2_SRAM2_RST_Pos (3U)
+#define FLASH_OPTSR2_SRAM2_RST_Msk (0x1UL << FLASH_OPTSR2_SRAM2_RST_Pos) /*!< 0x00000008 */
+#define FLASH_OPTSR2_SRAM2_RST FLASH_OPTSR2_SRAM2_RST_Msk /*!< SRAM2 erased when a system reset occurs*/
+#define FLASH_OPTSR2_BKPRAM_ECC_Pos (4U)
+#define FLASH_OPTSR2_BKPRAM_ECC_Msk (0x1UL << FLASH_OPTSR2_BKPRAM_ECC_Pos) /*!< 0x00000010 */
+#define FLASH_OPTSR2_BKPRAM_ECC FLASH_OPTSR2_BKPRAM_ECC_Msk /*!< Backup RAM ECC detection and correction enable */
+#define FLASH_OPTSR2_SRAM3_ECC_Pos (5U)
+#define FLASH_OPTSR2_SRAM3_ECC_Msk (0x1UL << FLASH_OPTSR2_SRAM3_ECC_Pos) /*!< 0x00000020 */
+#define FLASH_OPTSR2_SRAM3_ECC FLASH_OPTSR2_SRAM3_ECC_Msk /*!< SRAM3 ECC detection and correction enable */
+#define FLASH_OPTSR2_SRAM2_ECC_Pos (6U)
+#define FLASH_OPTSR2_SRAM2_ECC_Msk (0x1UL << FLASH_OPTSR2_SRAM2_ECC_Pos) /*!< 0x00000040 */
+#define FLASH_OPTSR2_SRAM2_ECC FLASH_OPTSR2_SRAM2_ECC_Msk /*!< SRAM2 ECC detection and correction disable */
+#define FLASH_OPTSR2_USBPD_DIS_Pos (8U)
+#define FLASH_OPTSR2_USBPD_DIS_Msk (0x1UL << FLASH_OPTSR2_USBPD_DIS_Pos) /*!< 0x00000100 */
+#define FLASH_OPTSR2_USBPD_DIS FLASH_OPTSR2_USBPD_DIS_Msk /*!< USB power delivery configuration disable */
+#define FLASH_OPTSR2_TZEN_Pos (24U)
+#define FLASH_OPTSR2_TZEN_Msk (0xFFUL << FLASH_OPTSR2_TZEN_Pos) /*!< 0xFF000000 */
+#define FLASH_OPTSR2_TZEN FLASH_OPTSR2_TZEN_Msk /*!< TrustZone enable */
+
+/**************** Bits definition for FLASH_BOOTR register **********************/
+#define FLASH_BOOTR_BOOT_LOCK_Pos (0U)
+#define FLASH_BOOTR_BOOT_LOCK_Msk (0xFFUL << FLASH_BOOTR_BOOT_LOCK_Pos) /*!< 0x000000FF */
+#define FLASH_BOOTR_BOOT_LOCK FLASH_BOOTR_BOOT_LOCK_Msk /*!< Boot Lock */
+#define FLASH_BOOTR_BOOTADD_Pos (8U)
+#define FLASH_BOOTR_BOOTADD_Msk (0xFFFFFFUL << FLASH_BOOTR_BOOTADD_Pos) /*!< 0xFFFFFF00 */
+#define FLASH_BOOTR_BOOTADD FLASH_BOOTR_BOOTADD_Msk /*!< Boot address */
+
+/**************** Bits definition for FLASH_PRIVBBR register *******************/
+#define FLASH_PRIVBBR_PRIVBB_Pos (0U)
+#define FLASH_PRIVBBR_PRIVBB_Msk (0xFFFFFFFFUL << FLASH_PRIVBBR_PRIVBB_Pos) /*!< 0xFFFFFFFF */
+#define FLASH_PRIVBBR_PRIVBB FLASH_PRIVBBR_PRIVBB_Msk /*!< Privileged/unprivileged 8-Kbyte Flash sector attribute */
+
+/***************** Bits definition for FLASH_SECWMR register ********************/
+#define FLASH_SECWMR_SECWM_STRT_Pos (0U)
+#define FLASH_SECWMR_SECWM_STRT_Msk (0x7FUL << FLASH_SECWMR_SECWM_STRT_Pos) /*!< 0x0000007F */
+#define FLASH_SECWMR_SECWM_STRT FLASH_SECWMR_SECWM_STRT_Msk /*!< Start sector of secure area */
+#define FLASH_SECWMR_SECWM_END_Pos (16U)
+#define FLASH_SECWMR_SECWM_END_Msk (0x7FUL << FLASH_SECWMR_SECWM_END_Pos) /*!< 0x007F0000 */
+#define FLASH_SECWMR_SECWM_END FLASH_SECWMR_SECWM_END_Msk /*!< End sector of secure area */
+
+/***************** Bits definition for FLASH_WRPR register *********************/
+#define FLASH_WRPR_WRPSG_Pos (0U)
+#define FLASH_WRPR_WRPSG_Msk (0xFFFFFFFFUL << FLASH_WRPR_WRPSG_Pos) /*!< 0xFFFFFFFF */
+#define FLASH_WRPR_WRPSG FLASH_WRPR_WRPSG_Msk /*!< Sector group protection option status */
+
+/***************** Bits definition for FLASH_EDATA register ********************/
+#define FLASH_EDATAR_EDATA_STRT_Pos (0U)
+#define FLASH_EDATAR_EDATA_STRT_Msk (0x7UL << FLASH_EDATAR_EDATA_STRT_Pos) /*!< 0x00000007 */
+#define FLASH_EDATAR_EDATA_STRT FLASH_EDATAR_EDATA_STRT_Msk /*!< Flash high-cycle data start sector */
+#define FLASH_EDATAR_EDATA_EN_Pos (15U)
+#define FLASH_EDATAR_EDATA_EN_Msk (0x1UL << FLASH_EDATAR_EDATA_EN_Pos) /*!< 0x00008000 */
+#define FLASH_EDATAR_EDATA_EN FLASH_EDATAR_EDATA_EN_Msk /*!< Flash high-cycle data enable */
+
+/***************** Bits definition for FLASH_HDPR register ********************/
+#define FLASH_HDPR_HDP_STRT_Pos (0U)
+#define FLASH_HDPR_HDP_STRT_Msk (0x7FUL << FLASH_HDPR_HDP_STRT_Pos) /*!< 0x0000007F */
+#define FLASH_HDPR_HDP_STRT FLASH_HDPR_HDP_STRT_Msk /*!< Start sector of hide protection area */
+#define FLASH_HDPR_HDP_END_Pos (16U)
+#define FLASH_HDPR_HDP_END_Msk (0x7FUL << FLASH_HDPR_HDP_END_Pos) /*!< 0x007F0000 */
+#define FLASH_HDPR_HDP_END FLASH_HDPR_HDP_END_Msk /*!< End sector of hide protection area */
+
+/******************* Bits definition for FLASH_ECCR register ***************/
+#define FLASH_ECCR_ADDR_ECC_Pos (0U)
+#define FLASH_ECCR_ADDR_ECC_Msk (0xFFFFUL << FLASH_ECCR_ADDR_ECC_Pos) /*!< 0x0000FFFF */
+#define FLASH_ECCR_ADDR_ECC FLASH_ECCR_ADDR_ECC_Msk /*!< ECC fail address */
+#define FLASH_ECCR_OBK_ECC_Pos (20U)
+#define FLASH_ECCR_OBK_ECC_Msk (0x1UL << FLASH_ECCR_OBK_ECC_Pos) /*!< 0x00200000 */
+#define FLASH_ECCR_OBK_ECC FLASH_ECCR_OBK_ECC_Msk /*!< Flash OB Keys storage area ECC fail */
+#define FLASH_ECCR_DATA_ECC_Pos (21U)
+#define FLASH_ECCR_DATA_ECC_Msk (0x1UL << FLASH_ECCR_DATA_ECC_Pos) /*!< 0x00400000 */
+#define FLASH_ECCR_DATA_ECC FLASH_ECCR_DATA_ECC_Msk /*!< Flash high-cycle data ECC fail */
+#define FLASH_ECCR_BK_ECC_Pos (22U)
+#define FLASH_ECCR_BK_ECC_Msk (0x1UL << FLASH_ECCR_BK_ECC_Pos) /*!< 0x00400000 */
+#define FLASH_ECCR_BK_ECC FLASH_ECCR_BK_ECC_Msk /*!< ECC fail bank */
+#define FLASH_ECCR_SYSF_ECC_Pos (23U)
+#define FLASH_ECCR_SYSF_ECC_Msk (0x1UL << FLASH_ECCR_SYSF_ECC_Pos) /*!< 0x00800000 */
+#define FLASH_ECCR_SYSF_ECC FLASH_ECCR_SYSF_ECC_Msk /*!< System Flash ECC fail */
+#define FLASH_ECCR_OTP_ECC_Pos (24U)
+#define FLASH_ECCR_OTP_ECC_Msk (0x1UL << FLASH_ECCR_OTP_ECC_Pos) /*!< 0x01000000 */
+#define FLASH_ECCR_OTP_ECC FLASH_ECCR_OTP_ECC_Msk /*!< Flash OTP ECC fail */
+#define FLASH_ECCR_ECCIE_Pos (25U)
+#define FLASH_ECCR_ECCIE_Msk (0x1UL << FLASH_ECCR_ECCIE_Pos) /*!< 0x02000000 */
+#define FLASH_ECCR_ECCIE FLASH_ECCR_ECCIE_Msk /*!< ECC correction interrupt enable */
+#define FLASH_ECCR_ECCC_Pos (30U)
+#define FLASH_ECCR_ECCC_Msk (0x1UL << FLASH_ECCR_ECCC_Pos) /*!< 0x40000000 */
+#define FLASH_ECCR_ECCC FLASH_ECCR_ECCC_Msk /*!< ECC correction */
+#define FLASH_ECCR_ECCD_Pos (31U)
+#define FLASH_ECCR_ECCD_Msk (0x1UL << FLASH_ECCR_ECCD_Pos) /*!< 0x80000000 */
+#define FLASH_ECCR_ECCD FLASH_ECCR_ECCD_Msk /*!< ECC detection */
+
+/******************* Bits definition for FLASH_ECCDR register ***************/
+#define FLASH_ECCDR_FAIL_DATA_Pos (0U)
+#define FLASH_ECCDR_FAIL_DATA_Msk (0xFFFFUL << FLASH_ECCDR_FAIL_DATA_Pos) /*!< 0x0000FFFF */
+#define FLASH_ECCDR_FAIL_DATA FLASH_ECCDR_FAIL_DATA_Msk /*!< ECC fail data */
+
+/******************************************************************************/
+/* */
+/* Filter Mathematical ACcelerator unit (FMAC) */
+/* */
+/******************************************************************************/
+/***************** Bit definition for FMAC_X1BUFCFG register ****************/
+#define FMAC_X1BUFCFG_X1_BASE_Pos (0U)
+#define FMAC_X1BUFCFG_X1_BASE_Msk (0xFFUL << FMAC_X1BUFCFG_X1_BASE_Pos) /*!< 0x000000FF */
+#define FMAC_X1BUFCFG_X1_BASE FMAC_X1BUFCFG_X1_BASE_Msk /*!< Base address of X1 buffer */
+#define FMAC_X1BUFCFG_X1_BUF_SIZE_Pos (8U)
+#define FMAC_X1BUFCFG_X1_BUF_SIZE_Msk (0xFFUL << FMAC_X1BUFCFG_X1_BUF_SIZE_Pos) /*!< 0x0000FF00 */
+#define FMAC_X1BUFCFG_X1_BUF_SIZE FMAC_X1BUFCFG_X1_BUF_SIZE_Msk /*!< Allocated size of X1 buffer in 16-bit words */
+#define FMAC_X1BUFCFG_FULL_WM_Pos (24U)
+#define FMAC_X1BUFCFG_FULL_WM_Msk (0x3UL << FMAC_X1BUFCFG_FULL_WM_Pos) /*!< 0x03000000 */
+#define FMAC_X1BUFCFG_FULL_WM FMAC_X1BUFCFG_FULL_WM_Msk /*!< Watermark for buffer full flag */
+
+/***************** Bit definition for FMAC_X2BUFCFG register ****************/
+#define FMAC_X2BUFCFG_X2_BASE_Pos (0U)
+#define FMAC_X2BUFCFG_X2_BASE_Msk (0xFFUL << FMAC_X2BUFCFG_X2_BASE_Pos) /*!< 0x000000FF */
+#define FMAC_X2BUFCFG_X2_BASE FMAC_X2BUFCFG_X2_BASE_Msk /*!< Base address of X2 buffer */
+#define FMAC_X2BUFCFG_X2_BUF_SIZE_Pos (8U)
+#define FMAC_X2BUFCFG_X2_BUF_SIZE_Msk (0xFFUL << FMAC_X2BUFCFG_X2_BUF_SIZE_Pos) /*!< 0x0000FF00 */
+#define FMAC_X2BUFCFG_X2_BUF_SIZE FMAC_X2BUFCFG_X2_BUF_SIZE_Msk /*!< Size of X2 buffer in 16-bit words */
+
+/***************** Bit definition for FMAC_YBUFCFG register *****************/
+#define FMAC_YBUFCFG_Y_BASE_Pos (0U)
+#define FMAC_YBUFCFG_Y_BASE_Msk (0xFFUL << FMAC_YBUFCFG_Y_BASE_Pos) /*!< 0x000000FF */
+#define FMAC_YBUFCFG_Y_BASE FMAC_YBUFCFG_Y_BASE_Msk /*!< Base address of Y buffer */
+#define FMAC_YBUFCFG_Y_BUF_SIZE_Pos (8U)
+#define FMAC_YBUFCFG_Y_BUF_SIZE_Msk (0xFFUL << FMAC_YBUFCFG_Y_BUF_SIZE_Pos) /*!< 0x0000FF00 */
+#define FMAC_YBUFCFG_Y_BUF_SIZE FMAC_YBUFCFG_Y_BUF_SIZE_Msk /*!< Size of Y buffer in 16-bit words */
+#define FMAC_YBUFCFG_EMPTY_WM_Pos (24U)
+#define FMAC_YBUFCFG_EMPTY_WM_Msk (0x3UL << FMAC_YBUFCFG_EMPTY_WM_Pos) /*!< 0x03000000 */
+#define FMAC_YBUFCFG_EMPTY_WM FMAC_YBUFCFG_EMPTY_WM_Msk /*!< Watermark for buffer empty flag */
+
+/****************** Bit definition for FMAC_PARAM register ******************/
+#define FMAC_PARAM_P_Pos (0U)
+#define FMAC_PARAM_P_Msk (0xFFUL << FMAC_PARAM_P_Pos) /*!< 0x000000FF */
+#define FMAC_PARAM_P FMAC_PARAM_P_Msk /*!< Input parameter P */
+#define FMAC_PARAM_Q_Pos (8U)
+#define FMAC_PARAM_Q_Msk (0xFFUL << FMAC_PARAM_Q_Pos) /*!< 0x0000FF00 */
+#define FMAC_PARAM_Q FMAC_PARAM_Q_Msk /*!< Input parameter Q */
+#define FMAC_PARAM_R_Pos (16U)
+#define FMAC_PARAM_R_Msk (0xFFUL << FMAC_PARAM_R_Pos) /*!< 0x00FF0000 */
+#define FMAC_PARAM_R FMAC_PARAM_R_Msk /*!< Input parameter R */
+#define FMAC_PARAM_FUNC_Pos (24U)
+#define FMAC_PARAM_FUNC_Msk (0x7FUL << FMAC_PARAM_FUNC_Pos) /*!< 0x7F000000 */
+#define FMAC_PARAM_FUNC FMAC_PARAM_FUNC_Msk /*!< Function */
+#define FMAC_PARAM_FUNC_0 (0x1UL << FMAC_PARAM_FUNC_Pos) /*!< 0x01000000 */
+#define FMAC_PARAM_FUNC_1 (0x2UL << FMAC_PARAM_FUNC_Pos) /*!< 0x02000000 */
+#define FMAC_PARAM_FUNC_2 (0x4UL << FMAC_PARAM_FUNC_Pos) /*!< 0x04000000 */
+#define FMAC_PARAM_FUNC_3 (0x8UL << FMAC_PARAM_FUNC_Pos) /*!< 0x08000000 */
+#define FMAC_PARAM_FUNC_4 (0x10UL << FMAC_PARAM_FUNC_Pos) /*!< 0x10000000 */
+#define FMAC_PARAM_FUNC_5 (0x20UL << FMAC_PARAM_FUNC_Pos) /*!< 0x20000000 */
+#define FMAC_PARAM_FUNC_6 (0x40UL << FMAC_PARAM_FUNC_Pos) /*!< 0x40000000 */
+#define FMAC_PARAM_START_Pos (31U)
+#define FMAC_PARAM_START_Msk (0x1UL << FMAC_PARAM_START_Pos) /*!< 0x80000000 */
+#define FMAC_PARAM_START FMAC_PARAM_START_Msk /*!< Enable execution */
+
+/******************** Bit definition for FMAC_CR register *******************/
+#define FMAC_CR_RIEN_Pos (0U)
+#define FMAC_CR_RIEN_Msk (0x1UL << FMAC_CR_RIEN_Pos) /*!< 0x00000001 */
+#define FMAC_CR_RIEN FMAC_CR_RIEN_Msk /*!< Enable read interrupt */
+#define FMAC_CR_WIEN_Pos (1U)
+#define FMAC_CR_WIEN_Msk (0x1UL << FMAC_CR_WIEN_Pos) /*!< 0x00000002 */
+#define FMAC_CR_WIEN FMAC_CR_WIEN_Msk /*!< Enable write interrupt */
+#define FMAC_CR_OVFLIEN_Pos (2U)
+#define FMAC_CR_OVFLIEN_Msk (0x1UL << FMAC_CR_OVFLIEN_Pos) /*!< 0x00000004 */
+#define FMAC_CR_OVFLIEN FMAC_CR_OVFLIEN_Msk /*!< Enable overflow error interrupts */
+#define FMAC_CR_UNFLIEN_Pos (3U)
+#define FMAC_CR_UNFLIEN_Msk (0x1UL << FMAC_CR_UNFLIEN_Pos) /*!< 0x00000008 */
+#define FMAC_CR_UNFLIEN FMAC_CR_UNFLIEN_Msk /*!< Enable underflow error interrupts */
+#define FMAC_CR_SATIEN_Pos (4U)
+#define FMAC_CR_SATIEN_Msk (0x1UL << FMAC_CR_SATIEN_Pos) /*!< 0x00000010 */
+#define FMAC_CR_SATIEN FMAC_CR_SATIEN_Msk /*!< Enable saturation error interrupts */
+#define FMAC_CR_DMAREN_Pos (8U)
+#define FMAC_CR_DMAREN_Msk (0x1UL << FMAC_CR_DMAREN_Pos) /*!< 0x00000100 */
+#define FMAC_CR_DMAREN FMAC_CR_DMAREN_Msk /*!< Enable DMA read channel requests */
+#define FMAC_CR_DMAWEN_Pos (9U)
+#define FMAC_CR_DMAWEN_Msk (0x1UL << FMAC_CR_DMAWEN_Pos) /*!< 0x00000200 */
+#define FMAC_CR_DMAWEN FMAC_CR_DMAWEN_Msk /*!< Enable DMA write channel requests */
+#define FMAC_CR_CLIPEN_Pos (15U)
+#define FMAC_CR_CLIPEN_Msk (0x1UL << FMAC_CR_CLIPEN_Pos) /*!< 0x00008000 */
+#define FMAC_CR_CLIPEN FMAC_CR_CLIPEN_Msk /*!< Enable clipping */
+#define FMAC_CR_RESET_Pos (16U)
+#define FMAC_CR_RESET_Msk (0x1UL << FMAC_CR_RESET_Pos) /*!< 0x00010000 */
+#define FMAC_CR_RESET FMAC_CR_RESET_Msk /*!< Reset filter mathematical accelerator unit */
+
+/******************* Bit definition for FMAC_SR register ********************/
+#define FMAC_SR_YEMPTY_Pos (0U)
+#define FMAC_SR_YEMPTY_Msk (0x1UL << FMAC_SR_YEMPTY_Pos) /*!< 0x00000001 */
+#define FMAC_SR_YEMPTY FMAC_SR_YEMPTY_Msk /*!< Y buffer empty flag */
+#define FMAC_SR_X1FULL_Pos (1U)
+#define FMAC_SR_X1FULL_Msk (0x1UL << FMAC_SR_X1FULL_Pos) /*!< 0x00000002 */
+#define FMAC_SR_X1FULL FMAC_SR_X1FULL_Msk /*!< X1 buffer full flag */
+#define FMAC_SR_OVFL_Pos (8U)
+#define FMAC_SR_OVFL_Msk (0x1UL << FMAC_SR_OVFL_Pos) /*!< 0x00000100 */
+#define FMAC_SR_OVFL FMAC_SR_OVFL_Msk /*!< Overflow error flag */
+#define FMAC_SR_UNFL_Pos (9U)
+#define FMAC_SR_UNFL_Msk (0x1UL << FMAC_SR_UNFL_Pos) /*!< 0x00000200 */
+#define FMAC_SR_UNFL FMAC_SR_UNFL_Msk /*!< Underflow error flag */
+#define FMAC_SR_SAT_Pos (10U)
+#define FMAC_SR_SAT_Msk (0x1UL << FMAC_SR_SAT_Pos) /*!< 0x00000400 */
+#define FMAC_SR_SAT FMAC_SR_SAT_Msk /*!< Saturation error flag */
+
+/****************** Bit definition for FMAC_WDATA register ******************/
+#define FMAC_WDATA_WDATA_Pos (0U)
+#define FMAC_WDATA_WDATA_Msk (0xFFFFUL << FMAC_WDATA_WDATA_Pos) /*!< 0x0000FFFF */
+#define FMAC_WDATA_WDATA FMAC_WDATA_WDATA_Msk /*!< Write data */
+
+/****************** Bit definition for FMACX_RDATA register *****************/
+#define FMAC_RDATA_RDATA_Pos (0U)
+#define FMAC_RDATA_RDATA_Msk (0xFFFFUL << FMAC_RDATA_RDATA_Pos) /*!< 0x0000FFFF */
+#define FMAC_RDATA_RDATA FMAC_RDATA_RDATA_Msk /*!< Read data */
+
+/******************************************************************************/
+/* */
+/* Flexible Memory Controller */
+/* */
+/******************************************************************************/
+/****************** Bit definition for FMC_BCR1 register *******************/
+#define FMC_BCR1_CCLKEN_Pos (20U)
+#define FMC_BCR1_CCLKEN_Msk (0x1UL << FMC_BCR1_CCLKEN_Pos) /*!< 0x00100000 */
+#define FMC_BCR1_CCLKEN FMC_BCR1_CCLKEN_Msk /*! */
+
+/******************** Bits definition for RTC_ALRMAR register ***************/
+#define RTC_ALRMAR_SU_Pos (0U)
+#define RTC_ALRMAR_SU_Msk (0xFUL << RTC_ALRMAR_SU_Pos) /*!< 0x0000000F */
+#define RTC_ALRMAR_SU RTC_ALRMAR_SU_Msk
+#define RTC_ALRMAR_SU_0 (0x1UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000001 */
+#define RTC_ALRMAR_SU_1 (0x2UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000002 */
+#define RTC_ALRMAR_SU_2 (0x4UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000004 */
+#define RTC_ALRMAR_SU_3 (0x8UL << RTC_ALRMAR_SU_Pos) /*!< 0x00000008 */
+#define RTC_ALRMAR_ST_Pos (4U)
+#define RTC_ALRMAR_ST_Msk (0x7UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000070 */
+#define RTC_ALRMAR_ST RTC_ALRMAR_ST_Msk
+#define RTC_ALRMAR_ST_0 (0x1UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000010 */
+#define RTC_ALRMAR_ST_1 (0x2UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000020 */
+#define RTC_ALRMAR_ST_2 (0x4UL << RTC_ALRMAR_ST_Pos) /*!< 0x00000040 */
+#define RTC_ALRMAR_MSK1_Pos (7U)
+#define RTC_ALRMAR_MSK1_Msk (0x1UL << RTC_ALRMAR_MSK1_Pos) /*!< 0x00000080 */
+#define RTC_ALRMAR_MSK1 RTC_ALRMAR_MSK1_Msk
+#define RTC_ALRMAR_MNU_Pos (8U)
+#define RTC_ALRMAR_MNU_Msk (0xFUL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000F00 */
+#define RTC_ALRMAR_MNU RTC_ALRMAR_MNU_Msk
+#define RTC_ALRMAR_MNU_0 (0x1UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000100 */
+#define RTC_ALRMAR_MNU_1 (0x2UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000200 */
+#define RTC_ALRMAR_MNU_2 (0x4UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000400 */
+#define RTC_ALRMAR_MNU_3 (0x8UL << RTC_ALRMAR_MNU_Pos) /*!< 0x00000800 */
+#define RTC_ALRMAR_MNT_Pos (12U)
+#define RTC_ALRMAR_MNT_Msk (0x7UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00007000 */
+#define RTC_ALRMAR_MNT RTC_ALRMAR_MNT_Msk
+#define RTC_ALRMAR_MNT_0 (0x1UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00001000 */
+#define RTC_ALRMAR_MNT_1 (0x2UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00002000 */
+#define RTC_ALRMAR_MNT_2 (0x4UL << RTC_ALRMAR_MNT_Pos) /*!< 0x00004000 */
+#define RTC_ALRMAR_MSK2_Pos (15U)
+#define RTC_ALRMAR_MSK2_Msk (0x1UL << RTC_ALRMAR_MSK2_Pos) /*!< 0x00008000 */
+#define RTC_ALRMAR_MSK2 RTC_ALRMAR_MSK2_Msk
+#define RTC_ALRMAR_HU_Pos (16U)
+#define RTC_ALRMAR_HU_Msk (0xFUL << RTC_ALRMAR_HU_Pos) /*!< 0x000F0000 */
+#define RTC_ALRMAR_HU RTC_ALRMAR_HU_Msk
+#define RTC_ALRMAR_HU_0 (0x1UL << RTC_ALRMAR_HU_Pos) /*!< 0x00010000 */
+#define RTC_ALRMAR_HU_1 (0x2UL << RTC_ALRMAR_HU_Pos) /*!< 0x00020000 */
+#define RTC_ALRMAR_HU_2 (0x4UL << RTC_ALRMAR_HU_Pos) /*!< 0x00040000 */
+#define RTC_ALRMAR_HU_3 (0x8UL << RTC_ALRMAR_HU_Pos) /*!< 0x00080000 */
+#define RTC_ALRMAR_HT_Pos (20U)
+#define RTC_ALRMAR_HT_Msk (0x3UL << RTC_ALRMAR_HT_Pos) /*!< 0x00300000 */
+#define RTC_ALRMAR_HT RTC_ALRMAR_HT_Msk
+#define RTC_ALRMAR_HT_0 (0x1UL << RTC_ALRMAR_HT_Pos) /*!< 0x00100000 */
+#define RTC_ALRMAR_HT_1 (0x2UL << RTC_ALRMAR_HT_Pos) /*!< 0x00200000 */
+#define RTC_ALRMAR_PM_Pos (22U)
+#define RTC_ALRMAR_PM_Msk (0x1UL << RTC_ALRMAR_PM_Pos) /*!< 0x00400000 */
+#define RTC_ALRMAR_PM RTC_ALRMAR_PM_Msk
+#define RTC_ALRMAR_MSK3_Pos (23U)
+#define RTC_ALRMAR_MSK3_Msk (0x1UL << RTC_ALRMAR_MSK3_Pos) /*!< 0x00800000 */
+#define RTC_ALRMAR_MSK3 RTC_ALRMAR_MSK3_Msk
+#define RTC_ALRMAR_DU_Pos (24U)
+#define RTC_ALRMAR_DU_Msk (0xFUL << RTC_ALRMAR_DU_Pos) /*!< 0x0F000000 */
+#define RTC_ALRMAR_DU RTC_ALRMAR_DU_Msk
+#define RTC_ALRMAR_DU_0 (0x1UL << RTC_ALRMAR_DU_Pos) /*!< 0x01000000 */
+#define RTC_ALRMAR_DU_1 (0x2UL << RTC_ALRMAR_DU_Pos) /*!< 0x02000000 */
+#define RTC_ALRMAR_DU_2 (0x4UL << RTC_ALRMAR_DU_Pos) /*!< 0x04000000 */
+#define RTC_ALRMAR_DU_3 (0x8UL << RTC_ALRMAR_DU_Pos) /*!< 0x08000000 */
+#define RTC_ALRMAR_DT_Pos (28U)
+#define RTC_ALRMAR_DT_Msk (0x3UL << RTC_ALRMAR_DT_Pos) /*!< 0x30000000 */
+#define RTC_ALRMAR_DT RTC_ALRMAR_DT_Msk
+#define RTC_ALRMAR_DT_0 (0x1UL << RTC_ALRMAR_DT_Pos) /*!< 0x10000000 */
+#define RTC_ALRMAR_DT_1 (0x2UL << RTC_ALRMAR_DT_Pos) /*!< 0x20000000 */
+#define RTC_ALRMAR_WDSEL_Pos (30U)
+#define RTC_ALRMAR_WDSEL_Msk (0x1UL << RTC_ALRMAR_WDSEL_Pos) /*!< 0x40000000 */
+#define RTC_ALRMAR_WDSEL RTC_ALRMAR_WDSEL_Msk
+#define RTC_ALRMAR_MSK4_Pos (31U)
+#define RTC_ALRMAR_MSK4_Msk (0x1UL << RTC_ALRMAR_MSK4_Pos) /*!< 0x80000000 */
+#define RTC_ALRMAR_MSK4 RTC_ALRMAR_MSK4_Msk
+
+/******************** Bits definition for RTC_ALRMASSR register *************/
+#define RTC_ALRMASSR_SS_Pos (0U)
+#define RTC_ALRMASSR_SS_Msk (0x7FFFUL << RTC_ALRMASSR_SS_Pos) /*!< 0x00007FFF */
+#define RTC_ALRMASSR_SS RTC_ALRMASSR_SS_Msk
+#define RTC_ALRMASSR_MASKSS_Pos (24U)
+#define RTC_ALRMASSR_MASKSS_Msk (0x3FUL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x3F000000 */
+#define RTC_ALRMASSR_MASKSS RTC_ALRMASSR_MASKSS_Msk
+#define RTC_ALRMASSR_MASKSS_0 (0x1UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x01000000 */
+#define RTC_ALRMASSR_MASKSS_1 (0x2UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x02000000 */
+#define RTC_ALRMASSR_MASKSS_2 (0x4UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x04000000 */
+#define RTC_ALRMASSR_MASKSS_3 (0x8UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x08000000 */
+#define RTC_ALRMASSR_MASKSS_4 (0x10UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x10000000 */
+#define RTC_ALRMASSR_MASKSS_5 (0x20UL << RTC_ALRMASSR_MASKSS_Pos) /*!< 0x20000000 */
+#define RTC_ALRMASSR_SSCLR_Pos (31U)
+#define RTC_ALRMASSR_SSCLR_Msk (0x1UL << RTC_ALRMASSR_SSCLR_Pos) /*!< 0x80000000 */
+#define RTC_ALRMASSR_SSCLR RTC_ALRMASSR_SSCLR_Msk
+
+/******************** Bits definition for RTC_ALRMBR register ***************/
+#define RTC_ALRMBR_SU_Pos (0U)
+#define RTC_ALRMBR_SU_Msk (0xFUL << RTC_ALRMBR_SU_Pos) /*!< 0x0000000F */
+#define RTC_ALRMBR_SU RTC_ALRMBR_SU_Msk
+#define RTC_ALRMBR_SU_0 (0x1UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000001 */
+#define RTC_ALRMBR_SU_1 (0x2UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000002 */
+#define RTC_ALRMBR_SU_2 (0x4UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000004 */
+#define RTC_ALRMBR_SU_3 (0x8UL << RTC_ALRMBR_SU_Pos) /*!< 0x00000008 */
+#define RTC_ALRMBR_ST_Pos (4U)
+#define RTC_ALRMBR_ST_Msk (0x7UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000070 */
+#define RTC_ALRMBR_ST RTC_ALRMBR_ST_Msk
+#define RTC_ALRMBR_ST_0 (0x1UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000010 */
+#define RTC_ALRMBR_ST_1 (0x2UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000020 */
+#define RTC_ALRMBR_ST_2 (0x4UL << RTC_ALRMBR_ST_Pos) /*!< 0x00000040 */
+#define RTC_ALRMBR_MSK1_Pos (7U)
+#define RTC_ALRMBR_MSK1_Msk (0x1UL << RTC_ALRMBR_MSK1_Pos) /*!< 0x00000080 */
+#define RTC_ALRMBR_MSK1 RTC_ALRMBR_MSK1_Msk
+#define RTC_ALRMBR_MNU_Pos (8U)
+#define RTC_ALRMBR_MNU_Msk (0xFUL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000F00 */
+#define RTC_ALRMBR_MNU RTC_ALRMBR_MNU_Msk
+#define RTC_ALRMBR_MNU_0 (0x1UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000100 */
+#define RTC_ALRMBR_MNU_1 (0x2UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000200 */
+#define RTC_ALRMBR_MNU_2 (0x4UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000400 */
+#define RTC_ALRMBR_MNU_3 (0x8UL << RTC_ALRMBR_MNU_Pos) /*!< 0x00000800 */
+#define RTC_ALRMBR_MNT_Pos (12U)
+#define RTC_ALRMBR_MNT_Msk (0x7UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00007000 */
+#define RTC_ALRMBR_MNT RTC_ALRMBR_MNT_Msk
+#define RTC_ALRMBR_MNT_0 (0x1UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00001000 */
+#define RTC_ALRMBR_MNT_1 (0x2UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00002000 */
+#define RTC_ALRMBR_MNT_2 (0x4UL << RTC_ALRMBR_MNT_Pos) /*!< 0x00004000 */
+#define RTC_ALRMBR_MSK2_Pos (15U)
+#define RTC_ALRMBR_MSK2_Msk (0x1UL << RTC_ALRMBR_MSK2_Pos) /*!< 0x00008000 */
+#define RTC_ALRMBR_MSK2 RTC_ALRMBR_MSK2_Msk
+#define RTC_ALRMBR_HU_Pos (16U)
+#define RTC_ALRMBR_HU_Msk (0xFUL << RTC_ALRMBR_HU_Pos) /*!< 0x000F0000 */
+#define RTC_ALRMBR_HU RTC_ALRMBR_HU_Msk
+#define RTC_ALRMBR_HU_0 (0x1UL << RTC_ALRMBR_HU_Pos) /*!< 0x00010000 */
+#define RTC_ALRMBR_HU_1 (0x2UL << RTC_ALRMBR_HU_Pos) /*!< 0x00020000 */
+#define RTC_ALRMBR_HU_2 (0x4UL << RTC_ALRMBR_HU_Pos) /*!< 0x00040000 */
+#define RTC_ALRMBR_HU_3 (0x8UL << RTC_ALRMBR_HU_Pos) /*!< 0x00080000 */
+#define RTC_ALRMBR_HT_Pos (20U)
+#define RTC_ALRMBR_HT_Msk (0x3UL << RTC_ALRMBR_HT_Pos) /*!< 0x00300000 */
+#define RTC_ALRMBR_HT RTC_ALRMBR_HT_Msk
+#define RTC_ALRMBR_HT_0 (0x1UL << RTC_ALRMBR_HT_Pos) /*!< 0x00100000 */
+#define RTC_ALRMBR_HT_1 (0x2UL << RTC_ALRMBR_HT_Pos) /*!< 0x00200000 */
+#define RTC_ALRMBR_PM_Pos (22U)
+#define RTC_ALRMBR_PM_Msk (0x1UL << RTC_ALRMBR_PM_Pos) /*!< 0x00400000 */
+#define RTC_ALRMBR_PM RTC_ALRMBR_PM_Msk
+#define RTC_ALRMBR_MSK3_Pos (23U)
+#define RTC_ALRMBR_MSK3_Msk (0x1UL << RTC_ALRMBR_MSK3_Pos) /*!< 0x00800000 */
+#define RTC_ALRMBR_MSK3 RTC_ALRMBR_MSK3_Msk
+#define RTC_ALRMBR_DU_Pos (24U)
+#define RTC_ALRMBR_DU_Msk (0xFUL << RTC_ALRMBR_DU_Pos) /*!< 0x0F000000 */
+#define RTC_ALRMBR_DU RTC_ALRMBR_DU_Msk
+#define RTC_ALRMBR_DU_0 (0x1UL << RTC_ALRMBR_DU_Pos) /*!< 0x01000000 */
+#define RTC_ALRMBR_DU_1 (0x2UL << RTC_ALRMBR_DU_Pos) /*!< 0x02000000 */
+#define RTC_ALRMBR_DU_2 (0x4UL << RTC_ALRMBR_DU_Pos) /*!< 0x04000000 */
+#define RTC_ALRMBR_DU_3 (0x8UL << RTC_ALRMBR_DU_Pos) /*!< 0x08000000 */
+#define RTC_ALRMBR_DT_Pos (28U)
+#define RTC_ALRMBR_DT_Msk (0x3UL << RTC_ALRMBR_DT_Pos) /*!< 0x30000000 */
+#define RTC_ALRMBR_DT RTC_ALRMBR_DT_Msk
+#define RTC_ALRMBR_DT_0 (0x1UL << RTC_ALRMBR_DT_Pos) /*!< 0x10000000 */
+#define RTC_ALRMBR_DT_1 (0x2UL << RTC_ALRMBR_DT_Pos) /*!< 0x20000000 */
+#define RTC_ALRMBR_WDSEL_Pos (30U)
+#define RTC_ALRMBR_WDSEL_Msk (0x1UL << RTC_ALRMBR_WDSEL_Pos) /*!< 0x40000000 */
+#define RTC_ALRMBR_WDSEL RTC_ALRMBR_WDSEL_Msk
+#define RTC_ALRMBR_MSK4_Pos (31U)
+#define RTC_ALRMBR_MSK4_Msk (0x1UL << RTC_ALRMBR_MSK4_Pos) /*!< 0x80000000 */
+#define RTC_ALRMBR_MSK4 RTC_ALRMBR_MSK4_Msk
+
+/******************** Bits definition for RTC_ALRMBSSR register *************/
+#define RTC_ALRMBSSR_SS_Pos (0U)
+#define RTC_ALRMBSSR_SS_Msk (0x7FFFUL << RTC_ALRMBSSR_SS_Pos) /*!< 0x00007FFF */
+#define RTC_ALRMBSSR_SS RTC_ALRMBSSR_SS_Msk
+#define RTC_ALRMBSSR_MASKSS_Pos (24U)
+#define RTC_ALRMBSSR_MASKSS_Msk (0x3FUL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x3F000000 */
+#define RTC_ALRMBSSR_MASKSS RTC_ALRMBSSR_MASKSS_Msk
+#define RTC_ALRMBSSR_MASKSS_0 (0x1UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x01000000 */
+#define RTC_ALRMBSSR_MASKSS_1 (0x2UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x02000000 */
+#define RTC_ALRMBSSR_MASKSS_2 (0x4UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x04000000 */
+#define RTC_ALRMBSSR_MASKSS_3 (0x8UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x08000000 */
+#define RTC_ALRMBSSR_MASKSS_4 (0x10UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x10000000 */
+#define RTC_ALRMBSSR_MASKSS_5 (0x20UL << RTC_ALRMBSSR_MASKSS_Pos) /*!< 0x20000000 */
+#define RTC_ALRMBSSR_SSCLR_Pos (31U)
+#define RTC_ALRMBSSR_SSCLR_Msk (0x1UL << RTC_ALRMBSSR_SSCLR_Pos) /*!< 0x80000000 */
+#define RTC_ALRMBSSR_SSCLR RTC_ALRMBSSR_SSCLR_Msk
+
+/******************** Bits definition for RTC_SR register *******************/
+#define RTC_SR_ALRAF_Pos (0U)
+#define RTC_SR_ALRAF_Msk (0x1UL << RTC_SR_ALRAF_Pos) /*!< 0x00000001 */
+#define RTC_SR_ALRAF RTC_SR_ALRAF_Msk
+#define RTC_SR_ALRBF_Pos (1U)
+#define RTC_SR_ALRBF_Msk (0x1UL << RTC_SR_ALRBF_Pos) /*!< 0x00000002 */
+#define RTC_SR_ALRBF RTC_SR_ALRBF_Msk
+#define RTC_SR_WUTF_Pos (2U)
+#define RTC_SR_WUTF_Msk (0x1UL << RTC_SR_WUTF_Pos) /*!< 0x00000004 */
+#define RTC_SR_WUTF RTC_SR_WUTF_Msk
+#define RTC_SR_TSF_Pos (3U)
+#define RTC_SR_TSF_Msk (0x1UL << RTC_SR_TSF_Pos) /*!< 0x00000008 */
+#define RTC_SR_TSF RTC_SR_TSF_Msk
+#define RTC_SR_TSOVF_Pos (4U)
+#define RTC_SR_TSOVF_Msk (0x1UL << RTC_SR_TSOVF_Pos) /*!< 0x00000010 */
+#define RTC_SR_TSOVF RTC_SR_TSOVF_Msk
+#define RTC_SR_ITSF_Pos (5U)
+#define RTC_SR_ITSF_Msk (0x1UL << RTC_SR_ITSF_Pos) /*!< 0x00000020 */
+#define RTC_SR_ITSF RTC_SR_ITSF_Msk
+#define RTC_SR_SSRUF_Pos (6U)
+#define RTC_SR_SSRUF_Msk (0x1UL << RTC_SR_SSRUF_Pos) /*!< 0x00000040 */
+#define RTC_SR_SSRUF RTC_SR_SSRUF_Msk
+
+/******************** Bits definition for RTC_MISR register *****************/
+#define RTC_MISR_ALRAMF_Pos (0U)
+#define RTC_MISR_ALRAMF_Msk (0x1UL << RTC_MISR_ALRAMF_Pos) /*!< 0x00000001 */
+#define RTC_MISR_ALRAMF RTC_MISR_ALRAMF_Msk
+#define RTC_MISR_ALRBMF_Pos (1U)
+#define RTC_MISR_ALRBMF_Msk (0x1UL << RTC_MISR_ALRBMF_Pos) /*!< 0x00000002 */
+#define RTC_MISR_ALRBMF RTC_MISR_ALRBMF_Msk
+#define RTC_MISR_WUTMF_Pos (2U)
+#define RTC_MISR_WUTMF_Msk (0x1UL << RTC_MISR_WUTMF_Pos) /*!< 0x00000004 */
+#define RTC_MISR_WUTMF RTC_MISR_WUTMF_Msk
+#define RTC_MISR_TSMF_Pos (3U)
+#define RTC_MISR_TSMF_Msk (0x1UL << RTC_MISR_TSMF_Pos) /*!< 0x00000008 */
+#define RTC_MISR_TSMF RTC_MISR_TSMF_Msk
+#define RTC_MISR_TSOVMF_Pos (4U)
+#define RTC_MISR_TSOVMF_Msk (0x1UL << RTC_MISR_TSOVMF_Pos) /*!< 0x00000010 */
+#define RTC_MISR_TSOVMF RTC_MISR_TSOVMF_Msk
+#define RTC_MISR_ITSMF_Pos (5U)
+#define RTC_MISR_ITSMF_Msk (0x1UL << RTC_MISR_ITSMF_Pos) /*!< 0x00000020 */
+#define RTC_MISR_ITSMF RTC_MISR_ITSMF_Msk
+#define RTC_MISR_SSRUMF_Pos (6U)
+#define RTC_MISR_SSRUMF_Msk (0x1UL << RTC_MISR_SSRUMF_Pos) /*!< 0x00000040 */
+#define RTC_MISR_SSRUMF RTC_MISR_SSRUMF_Msk
+
+/******************** Bits definition for RTC_SMISR register *****************/
+#define RTC_SMISR_ALRAMF_Pos (0U)
+#define RTC_SMISR_ALRAMF_Msk (0x1UL << RTC_SMISR_ALRAMF_Pos) /*!< 0x00000001 */
+#define RTC_SMISR_ALRAMF RTC_SMISR_ALRAMF_Msk
+#define RTC_SMISR_ALRBMF_Pos (1U)
+#define RTC_SMISR_ALRBMF_Msk (0x1UL << RTC_SMISR_ALRBMF_Pos) /*!< 0x00000002 */
+#define RTC_SMISR_ALRBMF RTC_SMISR_ALRBMF_Msk
+#define RTC_SMISR_WUTMF_Pos (2U)
+#define RTC_SMISR_WUTMF_Msk (0x1UL << RTC_SMISR_WUTMF_Pos) /*!< 0x00000004 */
+#define RTC_SMISR_WUTMF RTC_SMISR_WUTMF_Msk
+#define RTC_SMISR_TSMF_Pos (3U)
+#define RTC_SMISR_TSMF_Msk (0x1UL << RTC_SMISR_TSMF_Pos) /*!< 0x00000008 */
+#define RTC_SMISR_TSMF RTC_SMISR_TSMF_Msk
+#define RTC_SMISR_TSOVMF_Pos (4U)
+#define RTC_SMISR_TSOVMF_Msk (0x1UL << RTC_SMISR_TSOVMF_Pos) /*!< 0x00000010 */
+#define RTC_SMISR_TSOVMF RTC_SMISR_TSOVMF_Msk
+#define RTC_SMISR_ITSMF_Pos (5U)
+#define RTC_SMISR_ITSMF_Msk (0x1UL << RTC_SMISR_ITSMF_Pos) /*!< 0x00000020 */
+#define RTC_SMISR_ITSMF RTC_SMISR_ITSMF_Msk
+#define RTC_SMISR_SSRUMF_Pos (6U)
+#define RTC_SMISR_SSRUMF_Msk (0x1UL << RTC_SMISR_SSRUMF_Pos) /*!< 0x00000040 */
+#define RTC_SMISR_SSRUMF RTC_SMISR_SSRUMF_Msk
+
+/******************** Bits definition for RTC_SCR register ******************/
+#define RTC_SCR_CALRAF_Pos (0U)
+#define RTC_SCR_CALRAF_Msk (0x1UL << RTC_SCR_CALRAF_Pos) /*!< 0x00000001 */
+#define RTC_SCR_CALRAF RTC_SCR_CALRAF_Msk
+#define RTC_SCR_CALRBF_Pos (1U)
+#define RTC_SCR_CALRBF_Msk (0x1UL << RTC_SCR_CALRBF_Pos) /*!< 0x00000002 */
+#define RTC_SCR_CALRBF RTC_SCR_CALRBF_Msk
+#define RTC_SCR_CWUTF_Pos (2U)
+#define RTC_SCR_CWUTF_Msk (0x1UL << RTC_SCR_CWUTF_Pos) /*!< 0x00000004 */
+#define RTC_SCR_CWUTF RTC_SCR_CWUTF_Msk
+#define RTC_SCR_CTSF_Pos (3U)
+#define RTC_SCR_CTSF_Msk (0x1UL << RTC_SCR_CTSF_Pos) /*!< 0x00000008 */
+#define RTC_SCR_CTSF RTC_SCR_CTSF_Msk
+#define RTC_SCR_CTSOVF_Pos (4U)
+#define RTC_SCR_CTSOVF_Msk (0x1UL << RTC_SCR_CTSOVF_Pos) /*!< 0x00000010 */
+#define RTC_SCR_CTSOVF RTC_SCR_CTSOVF_Msk
+#define RTC_SCR_CITSF_Pos (5U)
+#define RTC_SCR_CITSF_Msk (0x1UL << RTC_SCR_CITSF_Pos) /*!< 0x00000020 */
+#define RTC_SCR_CITSF RTC_SCR_CITSF_Msk
+#define RTC_SCR_CSSRUF_Pos (6U)
+#define RTC_SCR_CSSRUF_Msk (0x1UL << RTC_SCR_CSSRUF_Pos) /*!< 0x00000040 */
+#define RTC_SCR_CSSRUF RTC_SCR_CSSRUF_Msk
+
+/******************** Bits definition for RTC_OR register ******************/
+#define RTC_OR_OUT2_RMP_Pos (0U)
+#define RTC_OR_OUT2_RMP_Msk (0x1UL << RTC_OR_OUT2_RMP_Pos) /*!< 0x00000001 */
+#define RTC_OR_OUT2_RMP RTC_OR_OUT2_RMP_Msk
+
+/******************** Bits definition for RTC_ALRABINR register ******************/
+#define RTC_ALRABINR_SS_Pos (0U)
+#define RTC_ALRABINR_SS_Msk (0xFFFFFFFFUL << RTC_ALRABINR_SS_Pos) /*!< 0xFFFFFFFF */
+#define RTC_ALRABINR_SS RTC_ALRABINR_SS_Msk
+
+/******************** Bits definition for RTC_ALRBBINR register ******************/
+#define RTC_ALRBBINR_SS_Pos (0U)
+#define RTC_ALRBBINR_SS_Msk (0xFFFFFFFFUL << RTC_ALRBBINR_SS_Pos) /*!< 0xFFFFFFFF */
+#define RTC_ALRBBINR_SS RTC_ALRBBINR_SS_Msk
+
+/******************************************************************************/
+/* */
+/* Tamper and backup register (TAMP) */
+/* */
+/******************************************************************************/
+/******************** Bits definition for TAMP_CR1 register *****************/
+#define TAMP_CR1_TAMP1E_Pos (0U)
+#define TAMP_CR1_TAMP1E_Msk (0x1UL << TAMP_CR1_TAMP1E_Pos) /*!< 0x00000001 */
+#define TAMP_CR1_TAMP1E TAMP_CR1_TAMP1E_Msk
+#define TAMP_CR1_TAMP2E_Pos (1U)
+#define TAMP_CR1_TAMP2E_Msk (0x1UL << TAMP_CR1_TAMP2E_Pos) /*!< 0x00000002 */
+#define TAMP_CR1_TAMP2E TAMP_CR1_TAMP2E_Msk
+#define TAMP_CR1_TAMP3E_Pos (2U)
+#define TAMP_CR1_TAMP3E_Msk (0x1UL << TAMP_CR1_TAMP3E_Pos) /*!< 0x00000004 */
+#define TAMP_CR1_TAMP3E TAMP_CR1_TAMP3E_Msk
+#define TAMP_CR1_TAMP4E_Pos (3U)
+#define TAMP_CR1_TAMP4E_Msk (0x1UL << TAMP_CR1_TAMP4E_Pos) /*!< 0x00000008 */
+#define TAMP_CR1_TAMP4E TAMP_CR1_TAMP4E_Msk
+#define TAMP_CR1_TAMP5E_Pos (4U)
+#define TAMP_CR1_TAMP5E_Msk (0x1UL << TAMP_CR1_TAMP5E_Pos) /*!< 0x00000010 */
+#define TAMP_CR1_TAMP5E TAMP_CR1_TAMP5E_Msk
+#define TAMP_CR1_TAMP6E_Pos (5U)
+#define TAMP_CR1_TAMP6E_Msk (0x1UL << TAMP_CR1_TAMP6E_Pos) /*!< 0x00000020 */
+#define TAMP_CR1_TAMP6E TAMP_CR1_TAMP6E_Msk
+#define TAMP_CR1_TAMP7E_Pos (6U)
+#define TAMP_CR1_TAMP7E_Msk (0x1UL << TAMP_CR1_TAMP7E_Pos) /*!< 0x00000040 */
+#define TAMP_CR1_TAMP7E TAMP_CR1_TAMP7E_Msk
+#define TAMP_CR1_TAMP8E_Pos (7U)
+#define TAMP_CR1_TAMP8E_Msk (0x1UL << TAMP_CR1_TAMP8E_Pos) /*!< 0x00000080 */
+#define TAMP_CR1_TAMP8E TAMP_CR1_TAMP8E_Msk
+#define TAMP_CR1_ITAMP1E_Pos (16U)
+#define TAMP_CR1_ITAMP1E_Msk (0x1UL << TAMP_CR1_ITAMP1E_Pos) /*!< 0x00010000 */
+#define TAMP_CR1_ITAMP1E TAMP_CR1_ITAMP1E_Msk
+#define TAMP_CR1_ITAMP2E_Pos (17U)
+#define TAMP_CR1_ITAMP2E_Msk (0x1UL << TAMP_CR1_ITAMP2E_Pos) /*!< 0x00020000 */
+#define TAMP_CR1_ITAMP2E TAMP_CR1_ITAMP2E_Msk
+#define TAMP_CR1_ITAMP3E_Pos (18U)
+#define TAMP_CR1_ITAMP3E_Msk (0x1UL << TAMP_CR1_ITAMP3E_Pos) /*!< 0x00040000 */
+#define TAMP_CR1_ITAMP3E TAMP_CR1_ITAMP3E_Msk
+#define TAMP_CR1_ITAMP4E_Pos (19U)
+#define TAMP_CR1_ITAMP4E_Msk (0x1UL << TAMP_CR1_ITAMP4E_Pos) /*!< 0x00080000 */
+#define TAMP_CR1_ITAMP4E TAMP_CR1_ITAMP4E_Msk
+#define TAMP_CR1_ITAMP5E_Pos (20U)
+#define TAMP_CR1_ITAMP5E_Msk (0x1UL << TAMP_CR1_ITAMP5E_Pos) /*!< 0x00100000 */
+#define TAMP_CR1_ITAMP5E TAMP_CR1_ITAMP5E_Msk
+#define TAMP_CR1_ITAMP6E_Pos (21U)
+#define TAMP_CR1_ITAMP6E_Msk (0x1UL << TAMP_CR1_ITAMP6E_Pos) /*!< 0x00200000 */
+#define TAMP_CR1_ITAMP6E TAMP_CR1_ITAMP6E_Msk
+#define TAMP_CR1_ITAMP7E_Pos (22U)
+#define TAMP_CR1_ITAMP7E_Msk (0x1UL << TAMP_CR1_ITAMP7E_Pos) /*!< 0x00400000 */
+#define TAMP_CR1_ITAMP7E TAMP_CR1_ITAMP7E_Msk
+#define TAMP_CR1_ITAMP8E_Pos (23U)
+#define TAMP_CR1_ITAMP8E_Msk (0x1UL << TAMP_CR1_ITAMP8E_Pos) /*!< 0x00800000 */
+#define TAMP_CR1_ITAMP8E TAMP_CR1_ITAMP8E_Msk
+#define TAMP_CR1_ITAMP9E_Pos (24U)
+#define TAMP_CR1_ITAMP9E_Msk (0x1UL << TAMP_CR1_ITAMP9E_Pos) /*!< 0x01000000 */
+#define TAMP_CR1_ITAMP9E TAMP_CR1_ITAMP9E_Msk
+#define TAMP_CR1_ITAMP11E_Pos (26U)
+#define TAMP_CR1_ITAMP11E_Msk (0x1UL << TAMP_CR1_ITAMP11E_Pos) /*!< 0x04000000 */
+#define TAMP_CR1_ITAMP11E TAMP_CR1_ITAMP11E_Msk
+#define TAMP_CR1_ITAMP12E_Pos (27U)
+#define TAMP_CR1_ITAMP12E_Msk (0x1UL << TAMP_CR1_ITAMP12E_Pos) /*!< 0x08000000 */
+#define TAMP_CR1_ITAMP12E TAMP_CR1_ITAMP12E_Msk
+#define TAMP_CR1_ITAMP13E_Pos (28U)
+#define TAMP_CR1_ITAMP13E_Msk (0x1UL << TAMP_CR1_ITAMP13E_Pos) /*!< 0x10000000 */
+#define TAMP_CR1_ITAMP13E TAMP_CR1_ITAMP13E_Msk
+#define TAMP_CR1_ITAMP15E_Pos (30U)
+#define TAMP_CR1_ITAMP15E_Msk (0x1UL << TAMP_CR1_ITAMP15E_Pos) /*!< 0x40000000 */
+#define TAMP_CR1_ITAMP15E TAMP_CR1_ITAMP15E_Msk
+
+/******************** Bits definition for TAMP_CR2 register *****************/
+#define TAMP_CR2_TAMP1NOERASE_Pos (0U)
+#define TAMP_CR2_TAMP1NOERASE_Msk (0x1UL << TAMP_CR2_TAMP1NOERASE_Pos) /*!< 0x00000001 */
+#define TAMP_CR2_TAMP1NOERASE TAMP_CR2_TAMP1NOERASE_Msk
+#define TAMP_CR2_TAMP2NOERASE_Pos (1U)
+#define TAMP_CR2_TAMP2NOERASE_Msk (0x1UL << TAMP_CR2_TAMP2NOERASE_Pos) /*!< 0x00000002 */
+#define TAMP_CR2_TAMP2NOERASE TAMP_CR2_TAMP2NOERASE_Msk
+#define TAMP_CR2_TAMP3NOERASE_Pos (2U)
+#define TAMP_CR2_TAMP3NOERASE_Msk (0x1UL << TAMP_CR2_TAMP3NOERASE_Pos) /*!< 0x00000004 */
+#define TAMP_CR2_TAMP3NOERASE TAMP_CR2_TAMP3NOERASE_Msk
+#define TAMP_CR2_TAMP4NOERASE_Pos (3U)
+#define TAMP_CR2_TAMP4NOERASE_Msk (0x1UL << TAMP_CR2_TAMP4NOERASE_Pos) /*!< 0x00000008 */
+#define TAMP_CR2_TAMP4NOERASE TAMP_CR2_TAMP4NOERASE_Msk
+#define TAMP_CR2_TAMP5NOERASE_Pos (4U)
+#define TAMP_CR2_TAMP5NOERASE_Msk (0x1UL << TAMP_CR2_TAMP5NOERASE_Pos) /*!< 0x00000010 */
+#define TAMP_CR2_TAMP5NOERASE TAMP_CR2_TAMP5NOERASE_Msk
+#define TAMP_CR2_TAMP6NOERASE_Pos (5U)
+#define TAMP_CR2_TAMP6NOERASE_Msk (0x1UL << TAMP_CR2_TAMP6NOERASE_Pos) /*!< 0x00000020 */
+#define TAMP_CR2_TAMP6NOERASE TAMP_CR2_TAMP6NOERASE_Msk
+#define TAMP_CR2_TAMP7NOERASE_Pos (6U)
+#define TAMP_CR2_TAMP7NOERASE_Msk (0x1UL << TAMP_CR2_TAMP7NOERASE_Pos) /*!< 0x00000040 */
+#define TAMP_CR2_TAMP7NOERASE TAMP_CR2_TAMP7NOERASE_Msk
+#define TAMP_CR2_TAMP8NOERASE_Pos (7U)
+#define TAMP_CR2_TAMP8NOERASE_Msk (0x1UL << TAMP_CR2_TAMP8NOERASE_Pos) /*!< 0x00000080 */
+#define TAMP_CR2_TAMP8NOERASE TAMP_CR2_TAMP8NOERASE_Msk
+#define TAMP_CR2_TAMP1MSK_Pos (16U)
+#define TAMP_CR2_TAMP1MSK_Msk (0x1UL << TAMP_CR2_TAMP1MSK_Pos) /*!< 0x00010000 */
+#define TAMP_CR2_TAMP1MSK TAMP_CR2_TAMP1MSK_Msk
+#define TAMP_CR2_TAMP2MSK_Pos (17U)
+#define TAMP_CR2_TAMP2MSK_Msk (0x1UL << TAMP_CR2_TAMP2MSK_Pos) /*!< 0x00020000 */
+#define TAMP_CR2_TAMP2MSK TAMP_CR2_TAMP2MSK_Msk
+#define TAMP_CR2_TAMP3MSK_Pos (18U)
+#define TAMP_CR2_TAMP3MSK_Msk (0x1UL << TAMP_CR2_TAMP3MSK_Pos) /*!< 0x00040000 */
+#define TAMP_CR2_TAMP3MSK TAMP_CR2_TAMP3MSK_Msk
+#define TAMP_CR2_BKBLOCK_Pos (22U)
+#define TAMP_CR2_BKBLOCK_Msk (0x1UL << TAMP_CR2_BKBLOCK_Pos) /*!< 0x00400000 */
+#define TAMP_CR2_BKBLOCK TAMP_CR2_BKBLOCK_Msk
+#define TAMP_CR2_BKERASE_Pos (23U)
+#define TAMP_CR2_BKERASE_Msk (0x1UL << TAMP_CR2_BKERASE_Pos) /*!< 0x00800000 */
+#define TAMP_CR2_BKERASE TAMP_CR2_BKERASE_Msk
+#define TAMP_CR2_TAMP1TRG_Pos (24U)
+#define TAMP_CR2_TAMP1TRG_Msk (0x1UL << TAMP_CR2_TAMP1TRG_Pos) /*!< 0x01000000 */
+#define TAMP_CR2_TAMP1TRG TAMP_CR2_TAMP1TRG_Msk
+#define TAMP_CR2_TAMP2TRG_Pos (25U)
+#define TAMP_CR2_TAMP2TRG_Msk (0x1UL << TAMP_CR2_TAMP2TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP2TRG TAMP_CR2_TAMP2TRG_Msk
+#define TAMP_CR2_TAMP3TRG_Pos (26U)
+#define TAMP_CR2_TAMP3TRG_Msk (0x1UL << TAMP_CR2_TAMP3TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP3TRG TAMP_CR2_TAMP3TRG_Msk
+#define TAMP_CR2_TAMP4TRG_Pos (27U)
+#define TAMP_CR2_TAMP4TRG_Msk (0x1UL << TAMP_CR2_TAMP4TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP4TRG TAMP_CR2_TAMP4TRG_Msk
+#define TAMP_CR2_TAMP5TRG_Pos (28U)
+#define TAMP_CR2_TAMP5TRG_Msk (0x1UL << TAMP_CR2_TAMP5TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP5TRG TAMP_CR2_TAMP5TRG_Msk
+#define TAMP_CR2_TAMP6TRG_Pos (29U)
+#define TAMP_CR2_TAMP6TRG_Msk (0x1UL << TAMP_CR2_TAMP6TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP6TRG TAMP_CR2_TAMP6TRG_Msk
+#define TAMP_CR2_TAMP7TRG_Pos (30U)
+#define TAMP_CR2_TAMP7TRG_Msk (0x1UL << TAMP_CR2_TAMP7TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP7TRG TAMP_CR2_TAMP7TRG_Msk
+#define TAMP_CR2_TAMP8TRG_Pos (31U)
+#define TAMP_CR2_TAMP8TRG_Msk (0x1UL << TAMP_CR2_TAMP8TRG_Pos) /*!< 0x02000000 */
+#define TAMP_CR2_TAMP8TRG TAMP_CR2_TAMP8TRG_Msk
+
+/******************** Bits definition for TAMP_CR3 register *****************/
+#define TAMP_CR3_ITAMP1NOER_Pos (0U)
+#define TAMP_CR3_ITAMP1NOER_Msk (0x1UL << TAMP_CR3_ITAMP1NOER_Pos) /*!< 0x00000001 */
+#define TAMP_CR3_ITAMP1NOER TAMP_CR3_ITAMP1NOER_Msk
+#define TAMP_CR3_ITAMP2NOER_Pos (1U)
+#define TAMP_CR3_ITAMP2NOER_Msk (0x1UL << TAMP_CR3_ITAMP2NOER_Pos) /*!< 0x00000002 */
+#define TAMP_CR3_ITAMP2NOER TAMP_CR3_ITAMP2NOER_Msk
+#define TAMP_CR3_ITAMP3NOER_Pos (2U)
+#define TAMP_CR3_ITAMP3NOER_Msk (0x1UL << TAMP_CR3_ITAMP3NOER_Pos) /*!< 0x00000004 */
+#define TAMP_CR3_ITAMP3NOER TAMP_CR3_ITAMP3NOER_Msk
+#define TAMP_CR3_ITAMP4NOER_Pos (3U)
+#define TAMP_CR3_ITAMP4NOER_Msk (0x1UL << TAMP_CR3_ITAMP4NOER_Pos) /*!< 0x00000008 */
+#define TAMP_CR3_ITAMP4NOER TAMP_CR3_ITAMP4NOER_Msk
+#define TAMP_CR3_ITAMP5NOER_Pos (4U)
+#define TAMP_CR3_ITAMP5NOER_Msk (0x1UL << TAMP_CR3_ITAMP5NOER_Pos) /*!< 0x00000010 */
+#define TAMP_CR3_ITAMP5NOER TAMP_CR3_ITAMP5NOER_Msk
+#define TAMP_CR3_ITAMP6NOER_Pos (5U)
+#define TAMP_CR3_ITAMP6NOER_Msk (0x1UL << TAMP_CR3_ITAMP6NOER_Pos) /*!< 0x00000020 */
+#define TAMP_CR3_ITAMP6NOER TAMP_CR3_ITAMP6NOER_Msk
+#define TAMP_CR3_ITAMP7NOER_Pos (6U)
+#define TAMP_CR3_ITAMP7NOER_Msk (0x1UL << TAMP_CR3_ITAMP7NOER_Pos) /*!< 0x00000040 */
+#define TAMP_CR3_ITAMP7NOER TAMP_CR3_ITAMP7NOER_Msk
+#define TAMP_CR3_ITAMP8NOER_Pos (7U)
+#define TAMP_CR3_ITAMP8NOER_Msk (0x1UL << TAMP_CR3_ITAMP8NOER_Pos) /*!< 0x00000080 */
+#define TAMP_CR3_ITAMP8NOER TAMP_CR3_ITAMP8NOER_Msk
+#define TAMP_CR3_ITAMP9NOER_Pos (8U)
+#define TAMP_CR3_ITAMP9NOER_Msk (0x1UL << TAMP_CR3_ITAMP9NOER_Pos) /*!< 0x00000100 */
+#define TAMP_CR3_ITAMP9NOER TAMP_CR3_ITAMP9NOER_Msk
+#define TAMP_CR3_ITAMP11NOER_Pos (10U)
+#define TAMP_CR3_ITAMP11NOER_Msk (0x1UL << TAMP_CR3_ITAMP11NOER_Pos) /*!< 0x00000400 */
+#define TAMP_CR3_ITAMP11NOER TAMP_CR3_ITAMP11NOER_Msk
+#define TAMP_CR3_ITAMP12NOER_Pos (11U)
+#define TAMP_CR3_ITAMP12NOER_Msk (0x1UL << TAMP_CR3_ITAMP12NOER_Pos) /*!< 0x00000800 */
+#define TAMP_CR3_ITAMP12NOER TAMP_CR3_ITAMP12NOER_Msk
+#define TAMP_CR3_ITAMP13NOER_Pos (12U)
+#define TAMP_CR3_ITAMP13NOER_Msk (0x1UL << TAMP_CR3_ITAMP13NOER_Pos) /*!< 0x00001000 */
+#define TAMP_CR3_ITAMP13NOER TAMP_CR3_ITAMP13NOER_Msk
+#define TAMP_CR3_ITAMP15NOER_Pos (14U)
+#define TAMP_CR3_ITAMP15NOER_Msk (0x1UL << TAMP_CR3_ITAMP15NOER_Pos) /*!< 0x00004000 */
+#define TAMP_CR3_ITAMP15NOER TAMP_CR3_ITAMP15NOER_Msk
+
+/******************** Bits definition for TAMP_FLTCR register ***************/
+#define TAMP_FLTCR_TAMPFREQ_Pos (0U)
+#define TAMP_FLTCR_TAMPFREQ_Msk (0x7UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000007 */
+#define TAMP_FLTCR_TAMPFREQ TAMP_FLTCR_TAMPFREQ_Msk
+#define TAMP_FLTCR_TAMPFREQ_0 (0x1UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000001 */
+#define TAMP_FLTCR_TAMPFREQ_1 (0x2UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000002 */
+#define TAMP_FLTCR_TAMPFREQ_2 (0x4UL << TAMP_FLTCR_TAMPFREQ_Pos) /*!< 0x00000004 */
+#define TAMP_FLTCR_TAMPFLT_Pos (3U)
+#define TAMP_FLTCR_TAMPFLT_Msk (0x3UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000018 */
+#define TAMP_FLTCR_TAMPFLT TAMP_FLTCR_TAMPFLT_Msk
+#define TAMP_FLTCR_TAMPFLT_0 (0x1UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000008 */
+#define TAMP_FLTCR_TAMPFLT_1 (0x2UL << TAMP_FLTCR_TAMPFLT_Pos) /*!< 0x00000010 */
+#define TAMP_FLTCR_TAMPPRCH_Pos (5U)
+#define TAMP_FLTCR_TAMPPRCH_Msk (0x3UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000060 */
+#define TAMP_FLTCR_TAMPPRCH TAMP_FLTCR_TAMPPRCH_Msk
+#define TAMP_FLTCR_TAMPPRCH_0 (0x1UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000020 */
+#define TAMP_FLTCR_TAMPPRCH_1 (0x2UL << TAMP_FLTCR_TAMPPRCH_Pos) /*!< 0x00000040 */
+#define TAMP_FLTCR_TAMPPUDIS_Pos (7U)
+#define TAMP_FLTCR_TAMPPUDIS_Msk (0x1UL << TAMP_FLTCR_TAMPPUDIS_Pos) /*!< 0x00000080 */
+#define TAMP_FLTCR_TAMPPUDIS TAMP_FLTCR_TAMPPUDIS_Msk
+
+/******************** Bits definition for TAMP_ATCR1 register ***************/
+#define TAMP_ATCR1_TAMP1AM_Pos (0U)
+#define TAMP_ATCR1_TAMP1AM_Msk (0x1UL << TAMP_ATCR1_TAMP1AM_Pos) /*!< 0x00000001 */
+#define TAMP_ATCR1_TAMP1AM TAMP_ATCR1_TAMP1AM_Msk
+#define TAMP_ATCR1_TAMP2AM_Pos (1U)
+#define TAMP_ATCR1_TAMP2AM_Msk (0x1UL << TAMP_ATCR1_TAMP2AM_Pos) /*!< 0x00000002 */
+#define TAMP_ATCR1_TAMP2AM TAMP_ATCR1_TAMP2AM_Msk
+#define TAMP_ATCR1_TAMP3AM_Pos (2U)
+#define TAMP_ATCR1_TAMP3AM_Msk (0x1UL << TAMP_ATCR1_TAMP3AM_Pos) /*!< 0x00000004 */
+#define TAMP_ATCR1_TAMP3AM TAMP_ATCR1_TAMP3AM_Msk
+#define TAMP_ATCR1_TAMP4AM_Pos (3U)
+#define TAMP_ATCR1_TAMP4AM_Msk (0x1UL << TAMP_ATCR1_TAMP4AM_Pos) /*!< 0x00000008 */
+#define TAMP_ATCR1_TAMP4AM TAMP_ATCR1_TAMP4AM_Msk
+#define TAMP_ATCR1_TAMP5AM_Pos (4U)
+#define TAMP_ATCR1_TAMP5AM_Msk (0x1UL << TAMP_ATCR1_TAMP5AM_Pos) /*!< 0x00000010 */
+#define TAMP_ATCR1_TAMP5AM TAMP_ATCR1_TAMP5AM_Msk
+#define TAMP_ATCR1_TAMP6AM_Pos (5U)
+#define TAMP_ATCR1_TAMP6AM_Msk (0x1UL << TAMP_ATCR1_TAMP6AM_Pos) /*!< 0x00000010 */
+#define TAMP_ATCR1_TAMP6AM TAMP_ATCR1_TAMP6AM_Msk
+#define TAMP_ATCR1_TAMP7AM_Pos (6U)
+#define TAMP_ATCR1_TAMP7AM_Msk (0x1UL << TAMP_ATCR1_TAMP7AM_Pos) /*!< 0x00000040 */
+#define TAMP_ATCR1_TAMP7AM TAMP_ATCR1_TAMP7AM_Msk
+#define TAMP_ATCR1_TAMP8AM_Pos (7U)
+#define TAMP_ATCR1_TAMP8AM_Msk (0x1UL << TAMP_ATCR1_TAMP8AM_Pos) /*!< 0x00000080 */
+#define TAMP_ATCR1_TAMP8AM TAMP_ATCR1_TAMP8AM_Msk
+#define TAMP_ATCR1_ATOSEL1_Pos (8U)
+#define TAMP_ATCR1_ATOSEL1_Msk (0x3UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000300 */
+#define TAMP_ATCR1_ATOSEL1 TAMP_ATCR1_ATOSEL1_Msk
+#define TAMP_ATCR1_ATOSEL1_0 (0x1UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000100 */
+#define TAMP_ATCR1_ATOSEL1_1 (0x2UL << TAMP_ATCR1_ATOSEL1_Pos) /*!< 0x00000200 */
+#define TAMP_ATCR1_ATOSEL2_Pos (10U)
+#define TAMP_ATCR1_ATOSEL2_Msk (0x3UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000C00 */
+#define TAMP_ATCR1_ATOSEL2 TAMP_ATCR1_ATOSEL2_Msk
+#define TAMP_ATCR1_ATOSEL2_0 (0x1UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000400 */
+#define TAMP_ATCR1_ATOSEL2_1 (0x2UL << TAMP_ATCR1_ATOSEL2_Pos) /*!< 0x00000800 */
+#define TAMP_ATCR1_ATOSEL3_Pos (12U)
+#define TAMP_ATCR1_ATOSEL3_Msk (0x3UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00003000 */
+#define TAMP_ATCR1_ATOSEL3 TAMP_ATCR1_ATOSEL3_Msk
+#define TAMP_ATCR1_ATOSEL3_0 (0x1UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00001000 */
+#define TAMP_ATCR1_ATOSEL3_1 (0x2UL << TAMP_ATCR1_ATOSEL3_Pos) /*!< 0x00002000 */
+#define TAMP_ATCR1_ATOSEL4_Pos (14U)
+#define TAMP_ATCR1_ATOSEL4_Msk (0x3UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x0000C000 */
+#define TAMP_ATCR1_ATOSEL4 TAMP_ATCR1_ATOSEL4_Msk
+#define TAMP_ATCR1_ATOSEL4_0 (0x1UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x00004000 */
+#define TAMP_ATCR1_ATOSEL4_1 (0x2UL << TAMP_ATCR1_ATOSEL4_Pos) /*!< 0x00008000 */
+#define TAMP_ATCR1_ATCKSEL_Pos (16U)
+#define TAMP_ATCR1_ATCKSEL_Msk (0xFUL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x000F0000 */
+#define TAMP_ATCR1_ATCKSEL TAMP_ATCR1_ATCKSEL_Msk
+#define TAMP_ATCR1_ATCKSEL_0 (0x1UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00010000 */
+#define TAMP_ATCR1_ATCKSEL_1 (0x2UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00020000 */
+#define TAMP_ATCR1_ATCKSEL_2 (0x4UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00040000 */
+#define TAMP_ATCR1_ATCKSEL_3 (0x8UL << TAMP_ATCR1_ATCKSEL_Pos) /*!< 0x00080000 */
+#define TAMP_ATCR1_ATPER_Pos (24U)
+#define TAMP_ATCR1_ATPER_Msk (0x7UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x07000000 */
+#define TAMP_ATCR1_ATPER TAMP_ATCR1_ATPER_Msk
+#define TAMP_ATCR1_ATPER_0 (0x1UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x01000000 */
+#define TAMP_ATCR1_ATPER_1 (0x2UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x02000000 */
+#define TAMP_ATCR1_ATPER_2 (0x4UL << TAMP_ATCR1_ATPER_Pos) /*!< 0x04000000 */
+#define TAMP_ATCR1_ATOSHARE_Pos (30U)
+#define TAMP_ATCR1_ATOSHARE_Msk (0x1UL << TAMP_ATCR1_ATOSHARE_Pos) /*!< 0x40000000 */
+#define TAMP_ATCR1_ATOSHARE TAMP_ATCR1_ATOSHARE_Msk
+#define TAMP_ATCR1_FLTEN_Pos (31U)
+#define TAMP_ATCR1_FLTEN_Msk (0x1UL << TAMP_ATCR1_FLTEN_Pos) /*!< 0x80000000 */
+#define TAMP_ATCR1_FLTEN TAMP_ATCR1_FLTEN_Msk
+
+/******************** Bits definition for TAMP_ATSEEDR register ******************/
+#define TAMP_ATSEEDR_SEED_Pos (0U)
+#define TAMP_ATSEEDR_SEED_Msk (0xFFFFFFFFUL << TAMP_ATSEEDR_SEED_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_ATSEEDR_SEED TAMP_ATSEEDR_SEED_Msk
+
+/******************** Bits definition for TAMP_ATOR register ******************/
+#define TAMP_ATOR_PRNG_Pos (0U)
+#define TAMP_ATOR_PRNG_Msk (0xFFUL << TAMP_ATOR_PRNG_Pos) /*!< 0x000000FF */
+#define TAMP_ATOR_PRNG TAMP_ATOR_PRNG_Msk
+#define TAMP_ATOR_PRNG_0 (0x1UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000001 */
+#define TAMP_ATOR_PRNG_1 (0x2UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000002 */
+#define TAMP_ATOR_PRNG_2 (0x4UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000004 */
+#define TAMP_ATOR_PRNG_3 (0x8UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000008 */
+#define TAMP_ATOR_PRNG_4 (0x10UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000010 */
+#define TAMP_ATOR_PRNG_5 (0x20UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000020 */
+#define TAMP_ATOR_PRNG_6 (0x40UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000040 */
+#define TAMP_ATOR_PRNG_7 (0x80UL << TAMP_ATOR_PRNG_Pos) /*!< 0x00000080 */
+#define TAMP_ATOR_SEEDF_Pos (14U)
+#define TAMP_ATOR_SEEDF_Msk (1UL << TAMP_ATOR_SEEDF_Pos) /*!< 0x00004000 */
+#define TAMP_ATOR_SEEDF TAMP_ATOR_SEEDF_Msk
+#define TAMP_ATOR_INITS_Pos (15U)
+#define TAMP_ATOR_INITS_Msk (1UL << TAMP_ATOR_INITS_Pos) /*!< 0x00008000 */
+#define TAMP_ATOR_INITS TAMP_ATOR_INITS_Msk
+
+/******************** Bits definition for TAMP_ATCR2 register ***************/
+#define TAMP_ATCR2_ATOSEL1_Pos (8U)
+#define TAMP_ATCR2_ATOSEL1_Msk (0x7UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000700 */
+#define TAMP_ATCR2_ATOSEL1 TAMP_ATCR2_ATOSEL1_Msk
+#define TAMP_ATCR2_ATOSEL1_0 (0x1UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000100 */
+#define TAMP_ATCR2_ATOSEL1_1 (0x2UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000200 */
+#define TAMP_ATCR2_ATOSEL1_2 (0x4UL << TAMP_ATCR2_ATOSEL1_Pos) /*!< 0x00000400 */
+#define TAMP_ATCR2_ATOSEL2_Pos (11U)
+#define TAMP_ATCR2_ATOSEL2_Msk (0x7UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00003800 */
+#define TAMP_ATCR2_ATOSEL2 TAMP_ATCR2_ATOSEL2_Msk
+#define TAMP_ATCR2_ATOSEL2_0 (0x1UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00000800 */
+#define TAMP_ATCR2_ATOSEL2_1 (0x2UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00001000 */
+#define TAMP_ATCR2_ATOSEL2_2 (0x4UL << TAMP_ATCR2_ATOSEL2_Pos) /*!< 0x00002000 */
+#define TAMP_ATCR2_ATOSEL3_Pos (14U)
+#define TAMP_ATCR2_ATOSEL3_Msk (0x7UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x0001C000 */
+#define TAMP_ATCR2_ATOSEL3 TAMP_ATCR2_ATOSEL3_Msk
+#define TAMP_ATCR2_ATOSEL3_0 (0x1UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00004000 */
+#define TAMP_ATCR2_ATOSEL3_1 (0x2UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00008000 */
+#define TAMP_ATCR2_ATOSEL3_2 (0x4UL << TAMP_ATCR2_ATOSEL3_Pos) /*!< 0x00010000 */
+#define TAMP_ATCR2_ATOSEL4_Pos (17U)
+#define TAMP_ATCR2_ATOSEL4_Msk (0x7UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x000E0000 */
+#define TAMP_ATCR2_ATOSEL4 TAMP_ATCR2_ATOSEL4_Msk
+#define TAMP_ATCR2_ATOSEL4_0 (0x1UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00020000 */
+#define TAMP_ATCR2_ATOSEL4_1 (0x2UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00040000 */
+#define TAMP_ATCR2_ATOSEL4_2 (0x4UL << TAMP_ATCR2_ATOSEL4_Pos) /*!< 0x00080000 */
+#define TAMP_ATCR2_ATOSEL5_Pos (20U)
+#define TAMP_ATCR2_ATOSEL5_Msk (0x7UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00700000 */
+#define TAMP_ATCR2_ATOSEL5 TAMP_ATCR2_ATOSEL5_Msk
+#define TAMP_ATCR2_ATOSEL5_0 (0x1UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00100000 */
+#define TAMP_ATCR2_ATOSEL5_1 (0x2UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00200000 */
+#define TAMP_ATCR2_ATOSEL5_2 (0x4UL << TAMP_ATCR2_ATOSEL5_Pos) /*!< 0x00400000 */
+#define TAMP_ATCR2_ATOSEL6_Pos (23U)
+#define TAMP_ATCR2_ATOSEL6_Msk (0x7UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x03800000 */
+#define TAMP_ATCR2_ATOSEL6 TAMP_ATCR2_ATOSEL6_Msk
+#define TAMP_ATCR2_ATOSEL6_0 (0x1UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x00800000 */
+#define TAMP_ATCR2_ATOSEL6_1 (0x2UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x01000000 */
+#define TAMP_ATCR2_ATOSEL6_2 (0x4UL << TAMP_ATCR2_ATOSEL6_Pos) /*!< 0x02000000 */
+#define TAMP_ATCR2_ATOSEL7_Pos (26U)
+#define TAMP_ATCR2_ATOSEL7_Msk (0x7UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x1C000000 */
+#define TAMP_ATCR2_ATOSEL7 TAMP_ATCR2_ATOSEL7_Msk
+#define TAMP_ATCR2_ATOSEL7_0 (0x1UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x04000000 */
+#define TAMP_ATCR2_ATOSEL7_1 (0x2UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x08000000 */
+#define TAMP_ATCR2_ATOSEL7_2 (0x4UL << TAMP_ATCR2_ATOSEL7_Pos) /*!< 0x10000000 */
+#define TAMP_ATCR2_ATOSEL8_Pos (29U)
+#define TAMP_ATCR2_ATOSEL8_Msk (0x7UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0xE0000000 */
+#define TAMP_ATCR2_ATOSEL8 TAMP_ATCR2_ATOSEL8_Msk
+#define TAMP_ATCR2_ATOSEL8_0 (0x1UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x20000000 */
+#define TAMP_ATCR2_ATOSEL8_1 (0x2UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x40000000 */
+#define TAMP_ATCR2_ATOSEL8_2 (0x4UL << TAMP_ATCR2_ATOSEL8_Pos) /*!< 0x80000000 */
+
+/******************** Bits definition for TAMP_SECCFGR register *************/
+#define TAMP_SECCFGR_BKPRWSEC_Pos (0U)
+#define TAMP_SECCFGR_BKPRWSEC_Msk (0xFFUL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x000000FF */
+#define TAMP_SECCFGR_BKPRWSEC TAMP_SECCFGR_BKPRWSEC_Msk
+#define TAMP_SECCFGR_BKPRWSEC_0 (0x1UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000001 */
+#define TAMP_SECCFGR_BKPRWSEC_1 (0x2UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000002 */
+#define TAMP_SECCFGR_BKPRWSEC_2 (0x4UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000004 */
+#define TAMP_SECCFGR_BKPRWSEC_3 (0x8UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000008 */
+#define TAMP_SECCFGR_BKPRWSEC_4 (0x10UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000010 */
+#define TAMP_SECCFGR_BKPRWSEC_5 (0x20UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000020 */
+#define TAMP_SECCFGR_BKPRWSEC_6 (0x40UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000040 */
+#define TAMP_SECCFGR_BKPRWSEC_7 (0x80UL << TAMP_SECCFGR_BKPRWSEC_Pos) /*!< 0x00000080 */
+#define TAMP_SECCFGR_CNT1SEC_Pos (15U)
+#define TAMP_SECCFGR_CNT1SEC_Msk (0x1UL << TAMP_SECCFGR_CNT1SEC_Pos) /*!< 0x00008000 */
+#define TAMP_SECCFGR_CNT1SEC TAMP_SECCFGR_CNT1SEC_Msk
+#define TAMP_SECCFGR_BKPWSEC_Pos (16U)
+#define TAMP_SECCFGR_BKPWSEC_Msk (0xFFUL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00FF0000 */
+#define TAMP_SECCFGR_BKPWSEC TAMP_SECCFGR_BKPWSEC_Msk
+#define TAMP_SECCFGR_BKPWSEC_0 (0x1UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00010000 */
+#define TAMP_SECCFGR_BKPWSEC_1 (0x2UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00020000 */
+#define TAMP_SECCFGR_BKPWSEC_2 (0x4UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00040000 */
+#define TAMP_SECCFGR_BKPWSEC_3 (0x8UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00080000 */
+#define TAMP_SECCFGR_BKPWSEC_4 (0x10UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00100000 */
+#define TAMP_SECCFGR_BKPWSEC_5 (0x20UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00200000 */
+#define TAMP_SECCFGR_BKPWSEC_6 (0x40UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00400000 */
+#define TAMP_SECCFGR_BKPWSEC_7 (0x80UL << TAMP_SECCFGR_BKPWSEC_Pos) /*!< 0x00800000 */
+#define TAMP_SECCFGR_BHKLOCK_Pos (30U)
+#define TAMP_SECCFGR_BHKLOCK_Msk (0x1UL << TAMP_SECCFGR_BHKLOCK_Pos) /*!< 0x40000000 */
+#define TAMP_SECCFGR_BHKLOCK TAMP_SECCFGR_BHKLOCK_Msk
+#define TAMP_SECCFGR_TAMPSEC_Pos (31U)
+#define TAMP_SECCFGR_TAMPSEC_Msk (0x1UL << TAMP_SECCFGR_TAMPSEC_Pos) /*!< 0x80000000 */
+#define TAMP_SECCFGR_TAMPSEC TAMP_SECCFGR_TAMPSEC_Msk
+
+/******************** Bits definition for TAMP_PRIVCFGR register ************/
+#define TAMP_PRIVCFGR_CNT1PRIV_Pos (15U)
+#define TAMP_PRIVCFGR_CNT1PRIV_Msk (0x1UL << TAMP_PRIVCFGR_CNT1PRIV_Pos) /*!< 0x20000000 */
+#define TAMP_PRIVCFGR_CNT1PRIV TAMP_PRIVCFGR_CNT1PRIV_Msk
+#define TAMP_PRIVCFGR_BKPRWPRIV_Pos (29U)
+#define TAMP_PRIVCFGR_BKPRWPRIV_Msk (0x1UL << TAMP_PRIVCFGR_BKPRWPRIV_Pos) /*!< 0x20000000 */
+#define TAMP_PRIVCFGR_BKPRWPRIV TAMP_PRIVCFGR_BKPRWPRIV_Msk
+#define TAMP_PRIVCFGR_BKPWPRIV_Pos (30U)
+#define TAMP_PRIVCFGR_BKPWPRIV_Msk (0x1UL << TAMP_PRIVCFGR_BKPWPRIV_Pos) /*!< 0x40000000 */
+#define TAMP_PRIVCFGR_BKPWPRIV TAMP_PRIVCFGR_BKPWPRIV_Msk
+#define TAMP_PRIVCFGR_TAMPPRIV_Pos (31U)
+#define TAMP_PRIVCFGR_TAMPPRIV_Msk (0x1UL << TAMP_PRIVCFGR_TAMPPRIV_Pos) /*!< 0x80000000 */
+#define TAMP_PRIVCFGR_TAMPPRIV TAMP_PRIVCFGR_TAMPPRIV_Msk
+
+/******************** Bits definition for TAMP_IER register *****************/
+#define TAMP_IER_TAMP1IE_Pos (0U)
+#define TAMP_IER_TAMP1IE_Msk (0x1UL << TAMP_IER_TAMP1IE_Pos) /*!< 0x00000001 */
+#define TAMP_IER_TAMP1IE TAMP_IER_TAMP1IE_Msk
+#define TAMP_IER_TAMP2IE_Pos (1U)
+#define TAMP_IER_TAMP2IE_Msk (0x1UL << TAMP_IER_TAMP2IE_Pos) /*!< 0x00000002 */
+#define TAMP_IER_TAMP2IE TAMP_IER_TAMP2IE_Msk
+#define TAMP_IER_TAMP3IE_Pos (2U)
+#define TAMP_IER_TAMP3IE_Msk (0x1UL << TAMP_IER_TAMP3IE_Pos) /*!< 0x00000004 */
+#define TAMP_IER_TAMP3IE TAMP_IER_TAMP3IE_Msk
+#define TAMP_IER_TAMP4IE_Pos (3U)
+#define TAMP_IER_TAMP4IE_Msk (0x1UL << TAMP_IER_TAMP4IE_Pos) /*!< 0x00000008 */
+#define TAMP_IER_TAMP4IE TAMP_IER_TAMP4IE_Msk
+#define TAMP_IER_TAMP5IE_Pos (4U)
+#define TAMP_IER_TAMP5IE_Msk (0x1UL << TAMP_IER_TAMP5IE_Pos) /*!< 0x00000010 */
+#define TAMP_IER_TAMP5IE TAMP_IER_TAMP5IE_Msk
+#define TAMP_IER_TAMP6IE_Pos (5U)
+#define TAMP_IER_TAMP6IE_Msk (0x1UL << TAMP_IER_TAMP6IE_Pos) /*!< 0x00000020 */
+#define TAMP_IER_TAMP6IE TAMP_IER_TAMP6IE_Msk
+#define TAMP_IER_TAMP7IE_Pos (6U)
+#define TAMP_IER_TAMP7IE_Msk (0x1UL << TAMP_IER_TAMP7IE_Pos) /*!< 0x00000040 */
+#define TAMP_IER_TAMP7IE TAMP_IER_TAMP7IE_Msk
+#define TAMP_IER_TAMP8IE_Pos (7U)
+#define TAMP_IER_TAMP8IE_Msk (0x1UL << TAMP_IER_TAMP8IE_Pos) /*!< 0x00000080 */
+#define TAMP_IER_TAMP8IE TAMP_IER_TAMP8IE_Msk
+#define TAMP_IER_ITAMP1IE_Pos (16U)
+#define TAMP_IER_ITAMP1IE_Msk (0x1UL << TAMP_IER_ITAMP1IE_Pos) /*!< 0x00010000 */
+#define TAMP_IER_ITAMP1IE TAMP_IER_ITAMP1IE_Msk
+#define TAMP_IER_ITAMP2IE_Pos (17U)
+#define TAMP_IER_ITAMP2IE_Msk (0x1UL << TAMP_IER_ITAMP2IE_Pos) /*!< 0x00020000 */
+#define TAMP_IER_ITAMP2IE TAMP_IER_ITAMP2IE_Msk
+#define TAMP_IER_ITAMP3IE_Pos (18U)
+#define TAMP_IER_ITAMP3IE_Msk (0x1UL << TAMP_IER_ITAMP3IE_Pos) /*!< 0x00040000 */
+#define TAMP_IER_ITAMP3IE TAMP_IER_ITAMP3IE_Msk
+#define TAMP_IER_ITAMP4IE_Pos (19U)
+#define TAMP_IER_ITAMP4IE_Msk (0x1UL << TAMP_IER_ITAMP4IE_Pos) /*!< 0x00080000 */
+#define TAMP_IER_ITAMP4IE TAMP_IER_ITAMP4IE_Msk
+#define TAMP_IER_ITAMP5IE_Pos (20U)
+#define TAMP_IER_ITAMP5IE_Msk (0x1UL << TAMP_IER_ITAMP5IE_Pos) /*!< 0x00100000 */
+#define TAMP_IER_ITAMP5IE TAMP_IER_ITAMP5IE_Msk
+#define TAMP_IER_ITAMP6IE_Pos (21U)
+#define TAMP_IER_ITAMP6IE_Msk (0x1UL << TAMP_IER_ITAMP6IE_Pos) /*!< 0x00200000 */
+#define TAMP_IER_ITAMP6IE TAMP_IER_ITAMP6IE_Msk
+#define TAMP_IER_ITAMP7IE_Pos (22U)
+#define TAMP_IER_ITAMP7IE_Msk (0x1UL << TAMP_IER_ITAMP7IE_Pos) /*!< 0x00400000 */
+#define TAMP_IER_ITAMP7IE TAMP_IER_ITAMP7IE_Msk
+#define TAMP_IER_ITAMP8IE_Pos (23U)
+#define TAMP_IER_ITAMP8IE_Msk (0x1UL << TAMP_IER_ITAMP8IE_Pos) /*!< 0x00800000 */
+#define TAMP_IER_ITAMP8IE TAMP_IER_ITAMP8IE_Msk
+#define TAMP_IER_ITAMP9IE_Pos (24U)
+#define TAMP_IER_ITAMP9IE_Msk (0x1UL << TAMP_IER_ITAMP9IE_Pos) /*!< 0x01000000 */
+#define TAMP_IER_ITAMP9IE TAMP_IER_ITAMP9IE_Msk
+#define TAMP_IER_ITAMP11IE_Pos (26U)
+#define TAMP_IER_ITAMP11IE_Msk (0x1UL << TAMP_IER_ITAMP11IE_Pos) /*!< 0x04000000 */
+#define TAMP_IER_ITAMP11IE TAMP_IER_ITAMP11IE_Msk
+#define TAMP_IER_ITAMP12IE_Pos (27U)
+#define TAMP_IER_ITAMP12IE_Msk (0x1UL << TAMP_IER_ITAMP12IE_Pos) /*!< 0x08000000 */
+#define TAMP_IER_ITAMP12IE TAMP_IER_ITAMP12IE_Msk
+#define TAMP_IER_ITAMP13IE_Pos (28U)
+#define TAMP_IER_ITAMP13IE_Msk (0x1UL << TAMP_IER_ITAMP13IE_Pos) /*!< 0x10000000 */
+#define TAMP_IER_ITAMP13IE TAMP_IER_ITAMP13IE_Msk
+#define TAMP_IER_ITAMP15IE_Pos (30U)
+#define TAMP_IER_ITAMP15IE_Msk (0x1UL << TAMP_IER_ITAMP15IE_Pos) /*!< 0x40000000 */
+#define TAMP_IER_ITAMP15IE TAMP_IER_ITAMP15IE_Msk
+
+/******************** Bits definition for TAMP_SR register *****************/
+#define TAMP_SR_TAMP1F_Pos (0U)
+#define TAMP_SR_TAMP1F_Msk (0x1UL << TAMP_SR_TAMP1F_Pos) /*!< 0x00000001 */
+#define TAMP_SR_TAMP1F TAMP_SR_TAMP1F_Msk
+#define TAMP_SR_TAMP2F_Pos (1U)
+#define TAMP_SR_TAMP2F_Msk (0x1UL << TAMP_SR_TAMP2F_Pos) /*!< 0x00000002 */
+#define TAMP_SR_TAMP2F TAMP_SR_TAMP2F_Msk
+#define TAMP_SR_TAMP3F_Pos (2U)
+#define TAMP_SR_TAMP3F_Msk (0x1UL << TAMP_SR_TAMP3F_Pos) /*!< 0x00000004 */
+#define TAMP_SR_TAMP3F TAMP_SR_TAMP3F_Msk
+#define TAMP_SR_TAMP4F_Pos (3U)
+#define TAMP_SR_TAMP4F_Msk (0x1UL << TAMP_SR_TAMP4F_Pos) /*!< 0x00000008 */
+#define TAMP_SR_TAMP4F TAMP_SR_TAMP4F_Msk
+#define TAMP_SR_TAMP5F_Pos (4U)
+#define TAMP_SR_TAMP5F_Msk (0x1UL << TAMP_SR_TAMP5F_Pos) /*!< 0x00000010 */
+#define TAMP_SR_TAMP5F TAMP_SR_TAMP5F_Msk
+#define TAMP_SR_TAMP6F_Pos (5U)
+#define TAMP_SR_TAMP6F_Msk (0x1UL << TAMP_SR_TAMP6F_Pos) /*!< 0x00000020 */
+#define TAMP_SR_TAMP6F TAMP_SR_TAMP6F_Msk
+#define TAMP_SR_TAMP7F_Pos (6U)
+#define TAMP_SR_TAMP7F_Msk (0x1UL << TAMP_SR_TAMP7F_Pos) /*!< 0x00000040 */
+#define TAMP_SR_TAMP7F TAMP_SR_TAMP7F_Msk
+#define TAMP_SR_TAMP8F_Pos (7U)
+#define TAMP_SR_TAMP8F_Msk (0x1UL << TAMP_SR_TAMP8F_Pos) /*!< 0x00000080 */
+#define TAMP_SR_TAMP8F TAMP_SR_TAMP8F_Msk
+#define TAMP_SR_ITAMP1F_Pos (16U)
+#define TAMP_SR_ITAMP1F_Msk (0x1UL << TAMP_SR_ITAMP1F_Pos) /*!< 0x00010000 */
+#define TAMP_SR_ITAMP1F TAMP_SR_ITAMP1F_Msk
+#define TAMP_SR_ITAMP2F_Pos (17U)
+#define TAMP_SR_ITAMP2F_Msk (0x1UL << TAMP_SR_ITAMP2F_Pos) /*!< 0x00020000 */
+#define TAMP_SR_ITAMP2F TAMP_SR_ITAMP2F_Msk
+#define TAMP_SR_ITAMP3F_Pos (18U)
+#define TAMP_SR_ITAMP3F_Msk (0x1UL << TAMP_SR_ITAMP3F_Pos) /*!< 0x00040000 */
+#define TAMP_SR_ITAMP3F TAMP_SR_ITAMP3F_Msk
+#define TAMP_SR_ITAMP4F_Pos (19U)
+#define TAMP_SR_ITAMP4F_Msk (0x1UL << TAMP_SR_ITAMP4F_Pos) /*!< 0x00080000 */
+#define TAMP_SR_ITAMP4F TAMP_SR_ITAMP4F_Msk
+#define TAMP_SR_ITAMP5F_Pos (20U)
+#define TAMP_SR_ITAMP5F_Msk (0x1UL << TAMP_SR_ITAMP5F_Pos) /*!< 0x00100000 */
+#define TAMP_SR_ITAMP5F TAMP_SR_ITAMP5F_Msk
+#define TAMP_SR_ITAMP6F_Pos (21U)
+#define TAMP_SR_ITAMP6F_Msk (0x1UL << TAMP_SR_ITAMP6F_Pos) /*!< 0x00200000 */
+#define TAMP_SR_ITAMP6F TAMP_SR_ITAMP6F_Msk
+#define TAMP_SR_ITAMP7F_Pos (22U)
+#define TAMP_SR_ITAMP7F_Msk (0x1UL << TAMP_SR_ITAMP7F_Pos) /*!< 0x00400000 */
+#define TAMP_SR_ITAMP7F TAMP_SR_ITAMP7F_Msk
+#define TAMP_SR_ITAMP8F_Pos (23U)
+#define TAMP_SR_ITAMP8F_Msk (0x1UL << TAMP_SR_ITAMP8F_Pos) /*!< 0x00800000 */
+#define TAMP_SR_ITAMP8F TAMP_SR_ITAMP8F_Msk
+#define TAMP_SR_ITAMP9F_Pos (24U)
+#define TAMP_SR_ITAMP9F_Msk (0x1UL << TAMP_SR_ITAMP9F_Pos) /*!< 0x01000000 */
+#define TAMP_SR_ITAMP9F TAMP_SR_ITAMP9F_Msk
+#define TAMP_SR_ITAMP11F_Pos (26U)
+#define TAMP_SR_ITAMP11F_Msk (0x1UL << TAMP_SR_ITAMP11F_Pos) /*!< 0x04000000 */
+#define TAMP_SR_ITAMP11F TAMP_SR_ITAMP11F_Msk
+#define TAMP_SR_ITAMP12F_Pos (27U)
+#define TAMP_SR_ITAMP12F_Msk (0x1UL << TAMP_SR_ITAMP12F_Pos) /*!< 0x08000000 */
+#define TAMP_SR_ITAMP12F TAMP_SR_ITAMP12F_Msk
+#define TAMP_SR_ITAMP13F_Pos (28U)
+#define TAMP_SR_ITAMP13F_Msk (0x1UL << TAMP_SR_ITAMP13F_Pos) /*!< 0x10000000 */
+#define TAMP_SR_ITAMP13F TAMP_SR_ITAMP13F_Msk
+#define TAMP_SR_ITAMP15F_Pos (30U)
+#define TAMP_SR_ITAMP15F_Msk (0x1UL << TAMP_SR_ITAMP15F_Pos) /*!< 0x40000000 */
+#define TAMP_SR_ITAMP15F TAMP_SR_ITAMP15F_Msk
+
+/******************** Bits definition for TAMP_MISR register ****************/
+#define TAMP_MISR_TAMP1MF_Pos (0U)
+#define TAMP_MISR_TAMP1MF_Msk (0x1UL << TAMP_MISR_TAMP1MF_Pos) /*!< 0x00000001 */
+#define TAMP_MISR_TAMP1MF TAMP_MISR_TAMP1MF_Msk
+#define TAMP_MISR_TAMP2MF_Pos (1U)
+#define TAMP_MISR_TAMP2MF_Msk (0x1UL << TAMP_MISR_TAMP2MF_Pos) /*!< 0x00000002 */
+#define TAMP_MISR_TAMP2MF TAMP_MISR_TAMP2MF_Msk
+#define TAMP_MISR_TAMP3MF_Pos (2U)
+#define TAMP_MISR_TAMP3MF_Msk (0x1UL << TAMP_MISR_TAMP3MF_Pos) /*!< 0x00000004 */
+#define TAMP_MISR_TAMP3MF TAMP_MISR_TAMP3MF_Msk
+#define TAMP_MISR_TAMP4MF_Pos (3U)
+#define TAMP_MISR_TAMP4MF_Msk (0x1UL << TAMP_MISR_TAMP4MF_Pos) /*!< 0x00000008 */
+#define TAMP_MISR_TAMP4MF TAMP_MISR_TAMP4MF_Msk
+#define TAMP_MISR_TAMP5MF_Pos (4U)
+#define TAMP_MISR_TAMP5MF_Msk (0x1UL << TAMP_MISR_TAMP5MF_Pos) /*!< 0x00000010 */
+#define TAMP_MISR_TAMP5MF TAMP_MISR_TAMP5MF_Msk
+#define TAMP_MISR_TAMP6MF_Pos (5U)
+#define TAMP_MISR_TAMP6MF_Msk (0x1UL << TAMP_MISR_TAMP6MF_Pos) /*!< 0x00000020 */
+#define TAMP_MISR_TAMP6MF TAMP_MISR_TAMP6MF_Msk
+#define TAMP_MISR_TAMP7MF_Pos (6U)
+#define TAMP_MISR_TAMP7MF_Msk (0x1UL << TAMP_MISR_TAMP7MF_Pos) /*!< 0x00000040 */
+#define TAMP_MISR_TAMP7MF TAMP_MISR_TAMP7MF_Msk
+#define TAMP_MISR_TAMP8MF_Pos (7U)
+#define TAMP_MISR_TAMP8MF_Msk (0x1UL << TAMP_MISR_TAMP8MF_Pos) /*!< 0x00000080 */
+#define TAMP_MISR_TAMP8MF TAMP_MISR_TAMP8MF_Msk
+#define TAMP_MISR_ITAMP1MF_Pos (16U)
+#define TAMP_MISR_ITAMP1MF_Msk (0x1UL << TAMP_MISR_ITAMP1MF_Pos) /*!< 0x00010000 */
+#define TAMP_MISR_ITAMP1MF TAMP_MISR_ITAMP1MF_Msk
+#define TAMP_MISR_ITAMP2MF_Pos (17U)
+#define TAMP_MISR_ITAMP2MF_Msk (0x1UL << TAMP_MISR_ITAMP2MF_Pos) /*!< 0x00020000 */
+#define TAMP_MISR_ITAMP2MF TAMP_MISR_ITAMP2MF_Msk
+#define TAMP_MISR_ITAMP3MF_Pos (18U)
+#define TAMP_MISR_ITAMP3MF_Msk (0x1UL << TAMP_MISR_ITAMP3MF_Pos) /*!< 0x00040000 */
+#define TAMP_MISR_ITAMP3MF TAMP_MISR_ITAMP3MF_Msk
+#define TAMP_MISR_ITAMP4MF_Pos (19U)
+#define TAMP_MISR_ITAMP4MF_Msk (0x1UL << TAMP_MISR_ITAMP4MF_Pos) /*!< 0x00080000 */
+#define TAMP_MISR_ITAMP4MF TAMP_MISR_ITAMP4MF_Msk
+#define TAMP_MISR_ITAMP5MF_Pos (20U)
+#define TAMP_MISR_ITAMP5MF_Msk (0x1UL << TAMP_MISR_ITAMP5MF_Pos) /*!< 0x00100000 */
+#define TAMP_MISR_ITAMP5MF TAMP_MISR_ITAMP5MF_Msk
+#define TAMP_MISR_ITAMP6MF_Pos (21U)
+#define TAMP_MISR_ITAMP6MF_Msk (0x1UL << TAMP_MISR_ITAMP6MF_Pos) /*!< 0x00200000 */
+#define TAMP_MISR_ITAMP6MF TAMP_MISR_ITAMP6MF_Msk
+#define TAMP_MISR_ITAMP7MF_Pos (22U)
+#define TAMP_MISR_ITAMP7MF_Msk (0x1UL << TAMP_MISR_ITAMP7MF_Pos) /*!< 0x00400000 */
+#define TAMP_MISR_ITAMP7MF TAMP_MISR_ITAMP7MF_Msk
+#define TAMP_MISR_ITAMP8MF_Pos (23U)
+#define TAMP_MISR_ITAMP8MF_Msk (0x1UL << TAMP_MISR_ITAMP8MF_Pos) /*!< 0x00800000 */
+#define TAMP_MISR_ITAMP8MF TAMP_MISR_ITAMP8MF_Msk
+#define TAMP_MISR_ITAMP9MF_Pos (24U)
+#define TAMP_MISR_ITAMP9MF_Msk (0x1UL << TAMP_MISR_ITAMP9MF_Pos) /*!< 0x01000000 */
+#define TAMP_MISR_ITAMP9MF TAMP_MISR_ITAMP9MF_Msk
+#define TAMP_MISR_ITAMP11MF_Pos (26U)
+#define TAMP_MISR_ITAMP11MF_Msk (0x1UL << TAMP_MISR_ITAMP11MF_Pos) /*!< 0x04000000 */
+#define TAMP_MISR_ITAMP11MF TAMP_MISR_ITAMP11MF_Msk
+#define TAMP_MISR_ITAMP12MF_Pos (27U)
+#define TAMP_MISR_ITAMP12MF_Msk (0x1UL << TAMP_MISR_ITAMP12MF_Pos) /*!< 0x08000000 */
+#define TAMP_MISR_ITAMP12MF TAMP_MISR_ITAMP12MF_Msk
+#define TAMP_MISR_ITAMP13MF_Pos (28U)
+#define TAMP_MISR_ITAMP13MF_Msk (0x1UL << TAMP_MISR_ITAMP13MF_Pos) /*!< 0x10000000 */
+#define TAMP_MISR_ITAMP13MF TAMP_MISR_ITAMP13MF_Msk
+#define TAMP_MISR_ITAMP15MF_Pos (30U)
+#define TAMP_MISR_ITAMP15MF_Msk (0x1UL << TAMP_MISR_ITAMP15MF_Pos) /*!< 0x40000000 */
+#define TAMP_MISR_ITAMP15MF TAMP_MISR_ITAMP15MF_Msk
+
+/******************** Bits definition for TAMP_SMISR register ************ *****/
+#define TAMP_SMISR_TAMP1MF_Pos (0U)
+#define TAMP_SMISR_TAMP1MF_Msk (0x1UL << TAMP_SMISR_TAMP1MF_Pos) /*!< 0x00000001 */
+#define TAMP_SMISR_TAMP1MF TAMP_SMISR_TAMP1MF_Msk
+#define TAMP_SMISR_TAMP2MF_Pos (1U)
+#define TAMP_SMISR_TAMP2MF_Msk (0x1UL << TAMP_SMISR_TAMP2MF_Pos) /*!< 0x00000002 */
+#define TAMP_SMISR_TAMP2MF TAMP_SMISR_TAMP2MF_Msk
+#define TAMP_SMISR_TAMP3MF_Pos (2U)
+#define TAMP_SMISR_TAMP3MF_Msk (0x1UL << TAMP_SMISR_TAMP3MF_Pos) /*!< 0x00000004 */
+#define TAMP_SMISR_TAMP3MF TAMP_SMISR_TAMP3MF_Msk
+#define TAMP_SMISR_TAMP4MF_Pos (3U)
+#define TAMP_SMISR_TAMP4MF_Msk (0x1UL << TAMP_SMISR_TAMP4MF_Pos) /*!< 0x00000008 */
+#define TAMP_SMISR_TAMP4MF TAMP_SMISR_TAMP4MF_Msk
+#define TAMP_SMISR_TAMP5MF_Pos (4U)
+#define TAMP_SMISR_TAMP5MF_Msk (0x1UL << TAMP_SMISR_TAMP5MF_Pos) /*!< 0x00000010 */
+#define TAMP_SMISR_TAMP5MF TAMP_SMISR_TAMP5MF_Msk
+#define TAMP_SMISR_TAMP6MF_Pos (5U)
+#define TAMP_SMISR_TAMP6MF_Msk (0x1UL << TAMP_SMISR_TAMP6MF_Pos) /*!< 0x00000020 */
+#define TAMP_SMISR_TAMP6MF TAMP_SMISR_TAMP6MF_Msk
+#define TAMP_SMISR_TAMP7MF_Pos (6U)
+#define TAMP_SMISR_TAMP7MF_Msk (0x1UL << TAMP_SMISR_TAMP7MF_Pos) /*!< 0x00000040 */
+#define TAMP_SMISR_TAMP7MF TAMP_SMISR_TAMP7MF_Msk
+#define TAMP_SMISR_TAMP8MF_Pos (7U)
+#define TAMP_SMISR_TAMP8MF_Msk (0x1UL << TAMP_SMISR_TAMP8MF_Pos) /*!< 0x00000080 */
+#define TAMP_SMISR_TAMP8MF TAMP_SMISR_TAMP8MF_Msk
+#define TAMP_SMISR_ITAMP1MF_Pos (16U)
+#define TAMP_SMISR_ITAMP1MF_Msk (0x1UL << TAMP_SMISR_ITAMP1MF_Pos) /*!< 0x00010000 */
+#define TAMP_SMISR_ITAMP1MF TAMP_SMISR_ITAMP1MF_Msk
+#define TAMP_SMISR_ITAMP2MF_Pos (17U)
+#define TAMP_SMISR_ITAMP2MF_Msk (0x1UL << TAMP_SMISR_ITAMP2MF_Pos) /*!< 0x00020000 */
+#define TAMP_SMISR_ITAMP2MF TAMP_SMISR_ITAMP2MF_Msk
+#define TAMP_SMISR_ITAMP3MF_Pos (18U)
+#define TAMP_SMISR_ITAMP3MF_Msk (0x1UL << TAMP_SMISR_ITAMP3MF_Pos) /*!< 0x00040000 */
+#define TAMP_SMISR_ITAMP3MF TAMP_SMISR_ITAMP3MF_Msk
+#define TAMP_SMISR_ITAMP4MF_Pos (19U)
+#define TAMP_SMISR_ITAMP4MF_Msk (0x1UL << TAMP_SMISR_ITAMP4MF_Pos) /*!< 0x00080000 */
+#define TAMP_SMISR_ITAMP4MF TAMP_SMISR_ITAMP4MF_Msk
+#define TAMP_SMISR_ITAMP5MF_Pos (20U)
+#define TAMP_SMISR_ITAMP5MF_Msk (0x1UL << TAMP_SMISR_ITAMP5MF_Pos) /*!< 0x00100000 */
+#define TAMP_SMISR_ITAMP5MF TAMP_SMISR_ITAMP5MF_Msk
+#define TAMP_SMISR_ITAMP6MF_Pos (21U)
+#define TAMP_SMISR_ITAMP6MF_Msk (0x1UL << TAMP_SMISR_ITAMP6MF_Pos) /*!< 0x00200000 */
+#define TAMP_SMISR_ITAMP6MF TAMP_SMISR_ITAMP6MF_Msk
+#define TAMP_SMISR_ITAMP7MF_Pos (22U)
+#define TAMP_SMISR_ITAMP7MF_Msk (0x1UL << TAMP_SMISR_ITAMP7MF_Pos) /*!< 0x00400000 */
+#define TAMP_SMISR_ITAMP7MF TAMP_SMISR_ITAMP7MF_Msk
+#define TAMP_SMISR_ITAMP8MF_Pos (23U)
+#define TAMP_SMISR_ITAMP8MF_Msk (0x1UL << TAMP_SMISR_ITAMP8MF_Pos) /*!< 0x00800000 */
+#define TAMP_SMISR_ITAMP8MF TAMP_SMISR_ITAMP8MF_Msk
+#define TAMP_SMISR_ITAMP9MF_Pos (24U)
+#define TAMP_SMISR_ITAMP9MF_Msk (0x1UL << TAMP_SMISR_ITAMP9MF_Pos) /*!< 0x00100000 */
+#define TAMP_SMISR_ITAMP9MF TAMP_SMISR_ITAMP9MF_Msk
+#define TAMP_SMISR_ITAMP11MF_Pos (26U)
+#define TAMP_SMISR_ITAMP11MF_Msk (0x1UL << TAMP_SMISR_ITAMP11MF_Pos) /*!< 0x00400000 */
+#define TAMP_SMISR_ITAMP11MF TAMP_SMISR_ITAMP11MF_Msk
+#define TAMP_SMISR_ITAMP12MF_Pos (27U)
+#define TAMP_SMISR_ITAMP12MF_Msk (0x1UL << TAMP_SMISR_ITAMP12MF_Pos) /*!< 0x08000000 */
+#define TAMP_SMISR_ITAMP12MF TAMP_SMISR_ITAMP12MF_Msk
+#define TAMP_SMISR_ITAMP13MF_Pos (28U)
+#define TAMP_SMISR_ITAMP13MF_Msk (0x1UL << TAMP_SMISR_ITAMP13MF_Pos) /*!< 0x10000000 */
+#define TAMP_SMISR_ITAMP13MF TAMP_SMISR_ITAMP13MF_Msk
+#define TAMP_SMISR_ITAMP15MF_Pos (30U)
+#define TAMP_SMISR_ITAMP15MF_Msk (0x1UL << TAMP_SMISR_ITAMP15MF_Pos) /*!< 0x40000000 */
+#define TAMP_SMISR_ITAMP15MF TAMP_SMISR_ITAMP15MF_Msk
+
+/******************** Bits definition for TAMP_SCR register *****************/
+#define TAMP_SCR_CTAMP1F_Pos (0U)
+#define TAMP_SCR_CTAMP1F_Msk (0x1UL << TAMP_SCR_CTAMP1F_Pos) /*!< 0x00000001 */
+#define TAMP_SCR_CTAMP1F TAMP_SCR_CTAMP1F_Msk
+#define TAMP_SCR_CTAMP2F_Pos (1U)
+#define TAMP_SCR_CTAMP2F_Msk (0x1UL << TAMP_SCR_CTAMP2F_Pos) /*!< 0x00000002 */
+#define TAMP_SCR_CTAMP2F TAMP_SCR_CTAMP2F_Msk
+#define TAMP_SCR_CTAMP3F_Pos (2U)
+#define TAMP_SCR_CTAMP3F_Msk (0x1UL << TAMP_SCR_CTAMP3F_Pos) /*!< 0x00000004 */
+#define TAMP_SCR_CTAMP3F TAMP_SCR_CTAMP3F_Msk
+#define TAMP_SCR_CTAMP4F_Pos (3U)
+#define TAMP_SCR_CTAMP4F_Msk (0x1UL << TAMP_SCR_CTAMP4F_Pos) /*!< 0x00000008 */
+#define TAMP_SCR_CTAMP4F TAMP_SCR_CTAMP4F_Msk
+#define TAMP_SCR_CTAMP5F_Pos (4U)
+#define TAMP_SCR_CTAMP5F_Msk (0x1UL << TAMP_SCR_CTAMP5F_Pos) /*!< 0x00000010 */
+#define TAMP_SCR_CTAMP5F TAMP_SCR_CTAMP5F_Msk
+#define TAMP_SCR_CTAMP6F_Pos (5U)
+#define TAMP_SCR_CTAMP6F_Msk (0x1UL << TAMP_SCR_CTAMP6F_Pos) /*!< 0x00000020 */
+#define TAMP_SCR_CTAMP6F TAMP_SCR_CTAMP6F_Msk
+#define TAMP_SCR_CTAMP7F_Pos (6U)
+#define TAMP_SCR_CTAMP7F_Msk (0x1UL << TAMP_SCR_CTAMP7F_Pos) /*!< 0x00000040 */
+#define TAMP_SCR_CTAMP7F TAMP_SCR_CTAMP7F_Msk
+#define TAMP_SCR_CTAMP8F_Pos (7U)
+#define TAMP_SCR_CTAMP8F_Msk (0x1UL << TAMP_SCR_CTAMP8F_Pos) /*!< 0x00000080 */
+#define TAMP_SCR_CTAMP8F TAMP_SCR_CTAMP8F_Msk
+#define TAMP_SCR_CITAMP1F_Pos (16U)
+#define TAMP_SCR_CITAMP1F_Msk (0x1UL << TAMP_SCR_CITAMP1F_Pos) /*!< 0x00010000 */
+#define TAMP_SCR_CITAMP1F TAMP_SCR_CITAMP1F_Msk
+#define TAMP_SCR_CITAMP2F_Pos (17U)
+#define TAMP_SCR_CITAMP2F_Msk (0x1UL << TAMP_SCR_CITAMP2F_Pos) /*!< 0x00020000 */
+#define TAMP_SCR_CITAMP2F TAMP_SCR_CITAMP2F_Msk
+#define TAMP_SCR_CITAMP3F_Pos (18U)
+#define TAMP_SCR_CITAMP3F_Msk (0x1UL << TAMP_SCR_CITAMP3F_Pos) /*!< 0x00040000 */
+#define TAMP_SCR_CITAMP3F TAMP_SCR_CITAMP3F_Msk
+#define TAMP_SCR_CITAMP4F_Pos (19U)
+#define TAMP_SCR_CITAMP4F_Msk (0x1UL << TAMP_SCR_CITAMP4F_Pos) /*!< 0x00080000 */
+#define TAMP_SCR_CITAMP4F TAMP_SCR_CITAMP4F_Msk
+#define TAMP_SCR_CITAMP5F_Pos (20U)
+#define TAMP_SCR_CITAMP5F_Msk (0x1UL << TAMP_SCR_CITAMP5F_Pos) /*!< 0x00100000 */
+#define TAMP_SCR_CITAMP5F TAMP_SCR_CITAMP5F_Msk
+#define TAMP_SCR_CITAMP6F_Pos (21U)
+#define TAMP_SCR_CITAMP6F_Msk (0x1UL << TAMP_SCR_CITAMP6F_Pos) /*!< 0x00200000 */
+#define TAMP_SCR_CITAMP6F TAMP_SCR_CITAMP6F_Msk
+#define TAMP_SCR_CITAMP7F_Pos (22U)
+#define TAMP_SCR_CITAMP7F_Msk (0x1UL << TAMP_SCR_CITAMP7F_Pos) /*!< 0x00400000 */
+#define TAMP_SCR_CITAMP7F TAMP_SCR_CITAMP7F_Msk
+#define TAMP_SCR_CITAMP8F_Pos (23U)
+#define TAMP_SCR_CITAMP8F_Msk (0x1UL << TAMP_SCR_CITAMP8F_Pos) /*!< 0x00800000 */
+#define TAMP_SCR_CITAMP8F TAMP_SCR_CITAMP8F_Msk
+#define TAMP_SCR_CITAMP9F_Pos (24U)
+#define TAMP_SCR_CITAMP9F_Msk (0x1UL << TAMP_SCR_CITAMP9F_Pos) /*!< 0x00100000 */
+#define TAMP_SCR_CITAMP9F TAMP_SCR_CITAMP9F_Msk
+#define TAMP_SCR_CITAMP11F_Pos (26U)
+#define TAMP_SCR_CITAMP11F_Msk (0x1UL << TAMP_SCR_CITAMP11F_Pos) /*!< 0x00400000 */
+#define TAMP_SCR_CITAMP11F TAMP_SCR_CITAMP11F_Msk
+#define TAMP_SCR_CITAMP12F_Pos (27U)
+#define TAMP_SCR_CITAMP12F_Msk (0x1UL << TAMP_SCR_CITAMP12F_Pos) /*!< 0x08000000 */
+#define TAMP_SCR_CITAMP12F TAMP_SCR_CITAMP12F_Msk
+#define TAMP_SCR_CITAMP13F_Pos (28U)
+#define TAMP_SCR_CITAMP13F_Msk (0x1UL << TAMP_SCR_CITAMP13F_Pos) /*!< 0x10000000 */
+#define TAMP_SCR_CITAMP13F TAMP_SCR_CITAMP13F_Msk
+#define TAMP_SCR_CITAMP15F_Pos (30U)
+#define TAMP_SCR_CITAMP15F_Msk (0x1UL << TAMP_SCR_CITAMP15F_Pos) /*!< 0x40000000 */
+#define TAMP_SCR_CITAMP15F TAMP_SCR_CITAMP15F_Msk
+/******************** Bits definition for TAMP_COUNT1R register ***************/
+#define TAMP_COUNT1R_COUNT_Pos (0U)
+#define TAMP_COUNT1R_COUNT_Msk (0xFFFFFFFFUL << TAMP_COUNT1R_COUNT_Pos)/*!< 0xFFFFFFFF */
+#define TAMP_COUNT1R_COUNT TAMP_COUNT1R_COUNT_Msk
+
+/******************** Bits definition for TAMP_OR register ***************/
+#define TAMP_OR_OUT3_RMP_Pos (1U)
+#define TAMP_OR_OUT3_RMP_Msk (0x2UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00000006 */
+#define TAMP_OR_OUT3_RMP TAMP_OR_OUT3_RMP_Msk
+#define TAMP_OR_OUT3_RMP_0 (0x1UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00100000 */
+#define TAMP_OR_OUT3_RMP_1 (0x2UL << TAMP_OR_OUT3_RMP_Pos) /*!< 0x00200000 */
+#define TAMP_OR_OUT5_RMP_Pos (3U)
+#define TAMP_OR_OUT5_RMP_Msk (0x1UL << TAMP_OR_OUT5_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_OUT5_RMP TAMP_OR_OUT5_RMP_Msk
+#define TAMP_OR_IN2_RMP_Pos (8U)
+#define TAMP_OR_IN2_RMP_Msk (0x1UL << TAMP_OR_IN2_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN2_RMP TAMP_OR_IN2_RMP_Msk
+#define TAMP_OR_IN3_RMP_Pos (9U)
+#define TAMP_OR_IN3_RMP_Msk (0x1UL << TAMP_OR_IN3_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN3_RMP TAMP_OR_IN3_RMP_Msk
+#define TAMP_OR_IN4_RMP_Pos (10U)
+#define TAMP_OR_IN4_RMP_Msk (0x1UL << TAMP_OR_IN4_RMP_Pos) /*!< 0x00000001 */
+#define TAMP_OR_IN4_RMP TAMP_OR_IN4_RMP_Msk
+
+/******************** Bits definition for TAMP_ERCFG register ***************/
+#define TAMP_ERCFGR_ERCFG0_Pos (0U)
+#define TAMP_ERCFGR_ERCFG0_Msk (0x1UL << TAMP_ERCFGR_ERCFG0_Pos) /*!< 0x00000001 */
+#define TAMP_ERCFGR_ERCFG0 TAMP_ERCFGR_ERCFG0_Msk
+
+/******************** Bits definition for TAMP_BKP0R register ***************/
+#define TAMP_BKP0R_Pos (0U)
+#define TAMP_BKP0R_Msk (0xFFFFFFFFUL << TAMP_BKP0R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP0R TAMP_BKP0R_Msk
+
+/******************** Bits definition for TAMP_BKP1R register ****************/
+#define TAMP_BKP1R_Pos (0U)
+#define TAMP_BKP1R_Msk (0xFFFFFFFFUL << TAMP_BKP1R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP1R TAMP_BKP1R_Msk
+
+/******************** Bits definition for TAMP_BKP2R register ****************/
+#define TAMP_BKP2R_Pos (0U)
+#define TAMP_BKP2R_Msk (0xFFFFFFFFUL << TAMP_BKP2R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP2R TAMP_BKP2R_Msk
+
+/******************** Bits definition for TAMP_BKP3R register ****************/
+#define TAMP_BKP3R_Pos (0U)
+#define TAMP_BKP3R_Msk (0xFFFFFFFFUL << TAMP_BKP3R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP3R TAMP_BKP3R_Msk
+
+/******************** Bits definition for TAMP_BKP4R register ****************/
+#define TAMP_BKP4R_Pos (0U)
+#define TAMP_BKP4R_Msk (0xFFFFFFFFUL << TAMP_BKP4R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP4R TAMP_BKP4R_Msk
+
+/******************** Bits definition for TAMP_BKP5R register ****************/
+#define TAMP_BKP5R_Pos (0U)
+#define TAMP_BKP5R_Msk (0xFFFFFFFFUL << TAMP_BKP5R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP5R TAMP_BKP5R_Msk
+
+/******************** Bits definition for TAMP_BKP6R register ****************/
+#define TAMP_BKP6R_Pos (0U)
+#define TAMP_BKP6R_Msk (0xFFFFFFFFUL << TAMP_BKP6R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP6R TAMP_BKP6R_Msk
+
+/******************** Bits definition for TAMP_BKP7R register ****************/
+#define TAMP_BKP7R_Pos (0U)
+#define TAMP_BKP7R_Msk (0xFFFFFFFFUL << TAMP_BKP7R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP7R TAMP_BKP7R_Msk
+
+/******************** Bits definition for TAMP_BKP8R register ****************/
+#define TAMP_BKP8R_Pos (0U)
+#define TAMP_BKP8R_Msk (0xFFFFFFFFUL << TAMP_BKP8R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP8R TAMP_BKP8R_Msk
+
+/******************** Bits definition for TAMP_BKP9R register ****************/
+#define TAMP_BKP9R_Pos (0U)
+#define TAMP_BKP9R_Msk (0xFFFFFFFFUL << TAMP_BKP9R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP9R TAMP_BKP9R_Msk
+
+/******************** Bits definition for TAMP_BKP10R register ***************/
+#define TAMP_BKP10R_Pos (0U)
+#define TAMP_BKP10R_Msk (0xFFFFFFFFUL << TAMP_BKP10R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP10R TAMP_BKP10R_Msk
+
+/******************** Bits definition for TAMP_BKP11R register ***************/
+#define TAMP_BKP11R_Pos (0U)
+#define TAMP_BKP11R_Msk (0xFFFFFFFFUL << TAMP_BKP11R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP11R TAMP_BKP11R_Msk
+
+/******************** Bits definition for TAMP_BKP12R register ***************/
+#define TAMP_BKP12R_Pos (0U)
+#define TAMP_BKP12R_Msk (0xFFFFFFFFUL << TAMP_BKP12R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP12R TAMP_BKP12R_Msk
+
+/******************** Bits definition for TAMP_BKP13R register ***************/
+#define TAMP_BKP13R_Pos (0U)
+#define TAMP_BKP13R_Msk (0xFFFFFFFFUL << TAMP_BKP13R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP13R TAMP_BKP13R_Msk
+
+/******************** Bits definition for TAMP_BKP14R register ***************/
+#define TAMP_BKP14R_Pos (0U)
+#define TAMP_BKP14R_Msk (0xFFFFFFFFUL << TAMP_BKP14R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP14R TAMP_BKP14R_Msk
+
+/******************** Bits definition for TAMP_BKP15R register ***************/
+#define TAMP_BKP15R_Pos (0U)
+#define TAMP_BKP15R_Msk (0xFFFFFFFFUL << TAMP_BKP15R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP15R TAMP_BKP15R_Msk
+
+/******************** Bits definition for TAMP_BKP16R register ***************/
+#define TAMP_BKP16R_Pos (0U)
+#define TAMP_BKP16R_Msk (0xFFFFFFFFUL << TAMP_BKP16R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP16R TAMP_BKP16R_Msk
+
+/******************** Bits definition for TAMP_BKP17R register ***************/
+#define TAMP_BKP17R_Pos (0U)
+#define TAMP_BKP17R_Msk (0xFFFFFFFFUL << TAMP_BKP17R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP17R TAMP_BKP17R_Msk
+
+/******************** Bits definition for TAMP_BKP18R register ***************/
+#define TAMP_BKP18R_Pos (0U)
+#define TAMP_BKP18R_Msk (0xFFFFFFFFUL << TAMP_BKP18R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP18R TAMP_BKP18R_Msk
+
+/******************** Bits definition for TAMP_BKP19R register ***************/
+#define TAMP_BKP19R_Pos (0U)
+#define TAMP_BKP19R_Msk (0xFFFFFFFFUL << TAMP_BKP19R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP19R TAMP_BKP19R_Msk
+
+/******************** Bits definition for TAMP_BKP20R register ***************/
+#define TAMP_BKP20R_Pos (0U)
+#define TAMP_BKP20R_Msk (0xFFFFFFFFUL << TAMP_BKP20R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP20R TAMP_BKP20R_Msk
+
+/******************** Bits definition for TAMP_BKP21R register ***************/
+#define TAMP_BKP21R_Pos (0U)
+#define TAMP_BKP21R_Msk (0xFFFFFFFFUL << TAMP_BKP21R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP21R TAMP_BKP21R_Msk
+
+/******************** Bits definition for TAMP_BKP22R register ***************/
+#define TAMP_BKP22R_Pos (0U)
+#define TAMP_BKP22R_Msk (0xFFFFFFFFUL << TAMP_BKP22R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP22R TAMP_BKP22R_Msk
+
+/******************** Bits definition for TAMP_BKP23R register ***************/
+#define TAMP_BKP23R_Pos (0U)
+#define TAMP_BKP23R_Msk (0xFFFFFFFFUL << TAMP_BKP23R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP23R TAMP_BKP23R_Msk
+
+/******************** Bits definition for TAMP_BKP24R register ***************/
+#define TAMP_BKP24R_Pos (0U)
+#define TAMP_BKP24R_Msk (0xFFFFFFFFUL << TAMP_BKP24R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP24R TAMP_BKP24R_Msk
+
+/******************** Bits definition for TAMP_BKP25R register ***************/
+#define TAMP_BKP25R_Pos (0U)
+#define TAMP_BKP25R_Msk (0xFFFFFFFFUL << TAMP_BKP25R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP25R TAMP_BKP25R_Msk
+
+/******************** Bits definition for TAMP_BKP26R register ***************/
+#define TAMP_BKP26R_Pos (0U)
+#define TAMP_BKP26R_Msk (0xFFFFFFFFUL << TAMP_BKP26R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP26R TAMP_BKP26R_Msk
+
+/******************** Bits definition for TAMP_BKP27R register ***************/
+#define TAMP_BKP27R_Pos (0U)
+#define TAMP_BKP27R_Msk (0xFFFFFFFFUL << TAMP_BKP27R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP27R TAMP_BKP27R_Msk
+
+/******************** Bits definition for TAMP_BKP28R register ***************/
+#define TAMP_BKP28R_Pos (0U)
+#define TAMP_BKP28R_Msk (0xFFFFFFFFUL << TAMP_BKP28R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP28R TAMP_BKP28R_Msk
+
+/******************** Bits definition for TAMP_BKP29R register ***************/
+#define TAMP_BKP29R_Pos (0U)
+#define TAMP_BKP29R_Msk (0xFFFFFFFFUL << TAMP_BKP29R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP29R TAMP_BKP29R_Msk
+
+/******************** Bits definition for TAMP_BKP30R register ***************/
+#define TAMP_BKP30R_Pos (0U)
+#define TAMP_BKP30R_Msk (0xFFFFFFFFUL << TAMP_BKP30R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP30R TAMP_BKP30R_Msk
+
+/******************** Bits definition for TAMP_BKP31R register ***************/
+#define TAMP_BKP31R_Pos (0U)
+#define TAMP_BKP31R_Msk (0xFFFFFFFFUL << TAMP_BKP31R_Pos) /*!< 0xFFFFFFFF */
+#define TAMP_BKP31R TAMP_BKP31R_Msk
+
+/******************************************************************************/
+/* */
+/* Serial Audio Interface */
+/* */
+/******************************************************************************/
+/******************** Bit definition for SAI_GCR register *******************/
+#define SAI_GCR_SYNCIN_Pos (0U)
+#define SAI_GCR_SYNCIN_Msk (0x3UL << SAI_GCR_SYNCIN_Pos) /*!< 0x00000003 */
+#define SAI_GCR_SYNCIN SAI_GCR_SYNCIN_Msk /*!>2) /*!< Input modulus number of bits */
+#define PKA_MONTGOMERY_PARAM_IN_MODULUS ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Compute Montgomery parameter output data */
+#define PKA_MONTGOMERY_PARAM_OUT_PARAMETER ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Output Montgomery parameter */
+
+/* Compute modular exponentiation input data */
+#define PKA_MODULAR_EXP_IN_EXP_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent number of bits */
+#define PKA_MODULAR_EXP_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_EXP_IN_MONTGOMERY_PARAM ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+#define PKA_MODULAR_EXP_IN_EXPONENT_BASE ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the exponentiation */
+#define PKA_MODULAR_EXP_IN_EXPONENT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent to process */
+#define PKA_MODULAR_EXP_IN_MODULUS ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+#define PKA_MODULAR_EXP_PROTECT_IN_EXPONENT_BASE ((0x16C8UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the protected exponentiation */
+#define PKA_MODULAR_EXP_PROTECT_IN_EXPONENT ((0x14B8UL - PKA_RAM_OFFSET)>>2) /*!< Input exponent to process protected exponentiation*/
+#define PKA_MODULAR_EXP_PROTECT_IN_MODULUS ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus to process protected exponentiation */
+#define PKA_MODULAR_EXP_PROTECT_IN_PHI ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input phi to process protected exponentiation */
+
+/* Compute modular exponentiation output data */
+#define PKA_MODULAR_EXP_OUT_RESULT ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Output result of the exponentiation */
+#define PKA_MODULAR_EXP_OUT_ERROR ((0x1298UL - PKA_RAM_OFFSET)>>2) /*!< Output error of the exponentiation */
+#define PKA_MODULAR_EXP_OUT_MONTGOMERY_PARAM ((0x0620UL - PKA_RAM_OFFSET)>>2) /*!< Output storage area for Montgomery parameter */
+#define PKA_MODULAR_EXP_OUT_EXPONENT_BASE ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Output base of the exponentiation */
+
+/* Compute ECC scalar multiplication input data */
+#define PKA_ECC_SCALAR_MUL_IN_EXP_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input curve prime order n number of bits */
+#define PKA_ECC_SCALAR_MUL_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECC_SCALAR_MUL_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_ECC_SCALAR_MUL_IN_MOD_GF ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_SCALAR_MUL_IN_K ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input 'k' of KP */
+#define PKA_ECC_SCALAR_MUL_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_SCALAR_MUL_IN_INITIAL_POINT_Y ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_SCALAR_MUL_IN_N_PRIME_ORDER ((0x0F88UL - PKA_RAM_OFFSET)>>2) /*!< Input prime order n */
+
+/* Compute ECC scalar multiplication output data */
+#define PKA_ECC_SCALAR_MUL_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate */
+#define PKA_ECC_SCALAR_MUL_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate */
+#define PKA_ECC_SCALAR_MUL_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+/* Point check input data */
+#define PKA_POINT_CHECK_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_POINT_CHECK_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_POINT_CHECK_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_POINT_CHECK_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_POINT_CHECK_IN_MOD_GF ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_POINT_CHECK_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_POINT_CHECK_IN_INITIAL_POINT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_POINT_CHECK_IN_MONTGOMERY_PARAM ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+
+/* Point check output data */
+#define PKA_POINT_CHECK_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output error */
+
+/* ECDSA signature input data */
+#define PKA_ECDSA_SIGN_IN_ORDER_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input order number of bits */
+#define PKA_ECDSA_SIGN_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECDSA_SIGN_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECDSA_SIGN_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECDSA_SIGN_IN_B_COEFF ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'b' coefficient */
+#define PKA_ECDSA_SIGN_IN_MOD_GF ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECDSA_SIGN_IN_K ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input k value of the ECDSA */
+#define PKA_ECDSA_SIGN_IN_INITIAL_POINT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECDSA_SIGN_IN_INITIAL_POINT_Y ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECDSA_SIGN_IN_HASH_E ((0x0FE8UL - PKA_RAM_OFFSET)>>2) /*!< Input e, hash of the message */
+#define PKA_ECDSA_SIGN_IN_PRIVATE_KEY_D ((0x0F28UL - PKA_RAM_OFFSET)>>2) /*!< Input d, private key */
+#define PKA_ECDSA_SIGN_IN_ORDER_N ((0x0F88UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+
+/* ECDSA signature output data */
+#define PKA_ECDSA_SIGN_OUT_ERROR ((0x0FE0UL - PKA_RAM_OFFSET)>>2) /*!< Output error */
+#define PKA_ECDSA_SIGN_OUT_SIGNATURE_R ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Output signature r */
+#define PKA_ECDSA_SIGN_OUT_SIGNATURE_S ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Output signature s */
+#define PKA_ECDSA_SIGN_OUT_FINAL_POINT_X ((0x1400UL - PKA_RAM_OFFSET)>>2) /*!< Extended output result point X coordinate */
+#define PKA_ECDSA_SIGN_OUT_FINAL_POINT_Y ((0x1458UL - PKA_RAM_OFFSET)>>2) /*!< Extended output result point Y coordinate */
+
+
+/* ECDSA verification input data */
+#define PKA_ECDSA_VERIF_IN_ORDER_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input order number of bits */
+#define PKA_ECDSA_VERIF_IN_MOD_NB_BITS ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus number of bits */
+#define PKA_ECDSA_VERIF_IN_A_COEFF_SIGN ((0x0468UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECDSA_VERIF_IN_A_COEFF ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve 'a' coefficient */
+#define PKA_ECDSA_VERIF_IN_MOD_GF ((0x04D0UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECDSA_VERIF_IN_INITIAL_POINT_X ((0x0678UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECDSA_VERIF_IN_INITIAL_POINT_Y ((0x06D0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_X ((0x12F8UL - PKA_RAM_OFFSET)>>2) /*!< Input public key point X coordinate */
+#define PKA_ECDSA_VERIF_IN_PUBLIC_KEY_POINT_Y ((0x1350UL - PKA_RAM_OFFSET)>>2) /*!< Input public key point Y coordinate */
+#define PKA_ECDSA_VERIF_IN_SIGNATURE_R ((0x10E0UL - PKA_RAM_OFFSET)>>2) /*!< Input r, part of the signature */
+#define PKA_ECDSA_VERIF_IN_SIGNATURE_S ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input s, part of the signature */
+#define PKA_ECDSA_VERIF_IN_HASH_E ((0x13A8UL - PKA_RAM_OFFSET)>>2) /*!< Input e, hash of the message */
+#define PKA_ECDSA_VERIF_IN_ORDER_N ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+
+/* ECDSA verification output data */
+#define PKA_ECDSA_VERIF_OUT_RESULT ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* RSA CRT exponentiation input data */
+#define PKA_RSA_CRT_EXP_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operands number of bits */
+#define PKA_RSA_CRT_EXP_IN_DP_CRT ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input Dp CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_DQ_CRT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Input Dq CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_QINV_CRT ((0x0948UL - PKA_RAM_OFFSET)>>2) /*!< Input qInv CRT parameter */
+#define PKA_RSA_CRT_EXP_IN_PRIME_P ((0x0B60UL - PKA_RAM_OFFSET)>>2) /*!< Input Prime p */
+#define PKA_RSA_CRT_EXP_IN_PRIME_Q ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input Prime q */
+#define PKA_RSA_CRT_EXP_IN_EXPONENT_BASE ((0x12A0UL - PKA_RAM_OFFSET)>>2) /*!< Input base of the exponentiation */
+
+/* RSA CRT exponentiation output data */
+#define PKA_RSA_CRT_EXP_OUT_RESULT ((0x0838UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular reduction input data */
+#define PKA_MODULAR_REDUC_IN_OP_LENGTH ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input operand length */
+#define PKA_MODULAR_REDUC_IN_MOD_LENGTH ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus length */
+#define PKA_MODULAR_REDUC_IN_OPERAND ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand */
+#define PKA_MODULAR_REDUC_IN_MODULUS ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Modular reduction output data */
+#define PKA_MODULAR_REDUC_OUT_RESULT ((0xE78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic addition input data */
+#define PKA_ARITHMETIC_ADD_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_ADD_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_ADD_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic addition output data */
+#define PKA_ARITHMETIC_ADD_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic subtraction input data */
+#define PKA_ARITHMETIC_SUB_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_SUB_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_SUB_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic subtraction output data */
+#define PKA_ARITHMETIC_SUB_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Arithmetic multiplication input data */
+#define PKA_ARITHMETIC_MUL_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_MUL_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_MUL_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Arithmetic multiplication output data */
+#define PKA_ARITHMETIC_MUL_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Comparison input data */
+#define PKA_COMPARISON_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_COMPARISON_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_COMPARISON_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Comparison output data */
+#define PKA_COMPARISON_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular addition input data */
+#define PKA_MODULAR_ADD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_ADD_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_ADD_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MODULAR_ADD_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op3 (modulus) */
+
+/* Modular addition output data */
+#define PKA_MODULAR_ADD_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular inversion input data */
+#define PKA_MODULAR_INV_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_INV_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_INV_IN_OP2_MOD ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 (modulus) */
+
+/* Modular inversion output data */
+#define PKA_MODULAR_INV_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Modular subtraction input data */
+#define PKA_MODULAR_SUB_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MODULAR_SUB_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MODULAR_SUB_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MODULAR_SUB_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op3 */
+
+/* Modular subtraction output data */
+#define PKA_MODULAR_SUB_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Montgomery multiplication input data */
+#define PKA_MONTGOMERY_MUL_IN_OP_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_MONTGOMERY_MUL_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_MONTGOMERY_MUL_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_MONTGOMERY_MUL_IN_OP3_MOD ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus */
+
+/* Montgomery multiplication output data */
+#define PKA_MONTGOMERY_MUL_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result */
+
+/* Generic Arithmetic input data */
+#define PKA_ARITHMETIC_ALL_OPS_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input operand number of bits */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP1 ((0x0A50UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op1 */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP2 ((0x0C68UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+#define PKA_ARITHMETIC_ALL_OPS_IN_OP3 ((0x1088UL - PKA_RAM_OFFSET)>>2) /*!< Input operand op2 */
+
+/* Generic Arithmetic output data */
+#define PKA_ARITHMETIC_ALL_OPS_OUT_RESULT ((0x0E78UL - PKA_RAM_OFFSET)>>2) /*!< Output result for arithmetic operations */
+
+/* Compute ECC complete addition input data */
+#define PKA_ECC_COMPLETE_ADD_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_COMPLETE_ADD_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_COMPLETE_ADD_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve '|a|' coefficient */
+#define PKA_ECC_COMPLETE_ADD_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_X ((0x0628UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_Y ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT1_Z ((0x06D8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Z coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_X ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q X coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_Y ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_IN_POINT2_Z ((0x07E0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Z coordinate */
+
+/* Compute ECC complete addition output data */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_X ((0x0D60UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_Y ((0x0DB8UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate */
+#define PKA_ECC_COMPLETE_ADD_OUT_RESULT_Z ((0x0E10UL - PKA_RAM_OFFSET)>>2) /*!< Output result Z coordinate */
+
+/* Compute ECC double base ladder input data */
+#define PKA_ECC_DOUBLE_LADDER_IN_PRIME_ORDER_NB_BITS ((0x0400UL - PKA_RAM_OFFSET)>>2) /*!< Input n, order of the curve */
+#define PKA_ECC_DOUBLE_LADDER_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_DOUBLE_LADDER_IN_A_COEFF_SIGN ((0x0410UL - PKA_RAM_OFFSET)>>2) /*!< Input sign of the 'a' coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_A_COEFF ((0x0418UL - PKA_RAM_OFFSET)>>2) /*!< Input ECC curve '|a|' coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_DOUBLE_LADDER_IN_K_INTEGER ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Input 'k' integer coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_M_INTEGER ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Input 'm' integer coefficient */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_X ((0x0628UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P X coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_Y ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Y coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT1_Z ((0x06D8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point P Z coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_X ((0x0730UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q X coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_Y ((0x0788UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Y coordinate */
+#define PKA_ECC_DOUBLE_LADDER_IN_POINT2_Z ((0x07E0UL - PKA_RAM_OFFSET)>>2) /*!< Input initial point Q Z coordinate */
+
+/* Compute ECC double base ladder output data */
+#define PKA_ECC_DOUBLE_LADDER_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result X coordinate (affine coordinate) */
+#define PKA_ECC_DOUBLE_LADDER_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result Y coordinate (affine coordinate) */
+#define PKA_ECC_DOUBLE_LADDER_OUT_ERROR ((0x0520UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+/* Compute ECC projective to affine conversion input data */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MOD_NB_BITS ((0x0408UL - PKA_RAM_OFFSET)>>2) /*!< Input Modulus number of bits */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MOD_P ((0x0470UL - PKA_RAM_OFFSET)>>2) /*!< Input modulus GF(p) */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_X ((0x0D60UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P X coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_Y ((0x0DB8UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P Y coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_POINT_Z ((0x0E10UL - PKA_RAM_OFFSET)>>2) /*!< Input initial projective point P Z coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_IN_MONTGOMERY_PARAM_R2 ((0x04C8UL - PKA_RAM_OFFSET)>>2) /*!< Input storage area for Montgomery parameter */
+
+/* Compute ECC projective to affine conversion output data */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_RESULT_X ((0x0578UL - PKA_RAM_OFFSET)>>2) /*!< Output result x affine coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_RESULT_Y ((0x05D0UL - PKA_RAM_OFFSET)>>2) /*!< Output result y affine coordinate */
+#define PKA_ECC_PROJECTIVE_AFF_OUT_ERROR ((0x0680UL - PKA_RAM_OFFSET)>>2) /*!< Output result error */
+
+
+/** @addtogroup STM32H5xx_Peripheral_Exported_macros
+ * @{
+ */
+
+/******************************* ADC Instances ********************************/
+#define IS_ADC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == ADC1_NS) || \
+ ((INSTANCE) == ADC1_S)|| \
+ ((INSTANCE) == ADC2_NS)|| \
+ ((INSTANCE) == ADC2_S))
+
+#define IS_ADC_MULTIMODE_MASTER_INSTANCE(INSTANCE) (((INSTANCE) == ADC1_NS) || \
+ ((INSTANCE) == ADC1_S))
+
+
+#define IS_ADC_COMMON_INSTANCE(INSTANCE) (((INSTANCE) == ADC12_COMMON_NS) || \
+ ((INSTANCE) == ADC12_COMMON_S))
+/******************************* PKA Instances ********************************/
+#define IS_PKA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == PKA_NS) || ((INSTANCE) == PKA_S))
+
+/******************************* CORDIC Instances *****************************/
+#define IS_CORDIC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == CORDIC_NS) || ((INSTANCE) == CORDIC_S))
+
+/******************************* CRC Instances ********************************/
+#define IS_CRC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == CRC_NS) || ((INSTANCE) == CRC_S))
+
+/******************************* DAC Instances ********************************/
+#define IS_DAC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DAC1_NS) || ((INSTANCE) == DAC1_S))
+
+/******************************* DCACHE Instances *****************************/
+#define IS_DCACHE_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DCACHE1_NS) || ((INSTANCE) == DCACHE1_S))
+
+/******************************* DELAYBLOCK Instances *******************************/
+#define IS_DLYB_ALL_INSTANCE(INSTANCE) (((INSTANCE) == DLYB_SDMMC1_NS) || \
+ ((INSTANCE) == DLYB_SDMMC2_NS) || \
+ ((INSTANCE) == DLYB_SDMMC1_S) || \
+ ((INSTANCE) == DLYB_SDMMC2_S) || \
+ ((INSTANCE) == DLYB_OCTOSPI1_NS) || \
+ ((INSTANCE) == DLYB_OCTOSPI1_S ))
+/******************************** DMA Instances *******************************/
+#define IS_DMA_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel0_NS) || ((INSTANCE) == GPDMA1_Channel0_S) || \
+ ((INSTANCE) == GPDMA1_Channel1_NS) || ((INSTANCE) == GPDMA1_Channel1_S) || \
+ ((INSTANCE) == GPDMA1_Channel2_NS) || ((INSTANCE) == GPDMA1_Channel2_S) || \
+ ((INSTANCE) == GPDMA1_Channel3_NS) || ((INSTANCE) == GPDMA1_Channel3_S) || \
+ ((INSTANCE) == GPDMA1_Channel4_NS) || ((INSTANCE) == GPDMA1_Channel4_S) || \
+ ((INSTANCE) == GPDMA1_Channel5_NS) || ((INSTANCE) == GPDMA1_Channel5_S) || \
+ ((INSTANCE) == GPDMA1_Channel6_NS) || ((INSTANCE) == GPDMA1_Channel6_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel0_NS) || ((INSTANCE) == GPDMA2_Channel0_S) || \
+ ((INSTANCE) == GPDMA2_Channel1_NS) || ((INSTANCE) == GPDMA2_Channel1_S) || \
+ ((INSTANCE) == GPDMA2_Channel2_NS) || ((INSTANCE) == GPDMA2_Channel2_S) || \
+ ((INSTANCE) == GPDMA2_Channel3_NS) || ((INSTANCE) == GPDMA2_Channel3_S) || \
+ ((INSTANCE) == GPDMA2_Channel4_NS) || ((INSTANCE) == GPDMA2_Channel4_S) || \
+ ((INSTANCE) == GPDMA2_Channel5_NS) || ((INSTANCE) == GPDMA2_Channel5_S) || \
+ ((INSTANCE) == GPDMA2_Channel6_NS) || ((INSTANCE) == GPDMA2_Channel6_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+#define IS_GPDMA_INSTANCE(INSTANCE) IS_DMA_ALL_INSTANCE(INSTANCE)
+
+#define IS_DMA_2D_ADDRESSING_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel6_NS) || ((INSTANCE) == GPDMA1_Channel6_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel6_NS) || ((INSTANCE) == GPDMA2_Channel6_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+#define IS_DMA_PFREQ_INSTANCE(INSTANCE) (((INSTANCE) == GPDMA1_Channel0_NS) || ((INSTANCE) == GPDMA1_Channel0_S) || \
+ ((INSTANCE) == GPDMA1_Channel7_NS) || ((INSTANCE) == GPDMA1_Channel7_S) || \
+ ((INSTANCE) == GPDMA2_Channel0_NS) || ((INSTANCE) == GPDMA2_Channel0_S) || \
+ ((INSTANCE) == GPDMA2_Channel7_NS) || ((INSTANCE) == GPDMA2_Channel7_S))
+
+/****************************** RAMCFG Instances ********************************/
+#define IS_RAMCFG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM1_NS) || ((INSTANCE) == RAMCFG_SRAM1_S) || \
+ ((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S) || \
+ ((INSTANCE) == RAMCFG_SRAM3_NS) || ((INSTANCE) == RAMCFG_SRAM3_S) || \
+ ((INSTANCE) == RAMCFG_BKPRAM_NS) || ((INSTANCE) == RAMCFG_BKPRAM_S))
+
+/***************************** RAMCFG ECC Instances *****************************/
+#define IS_RAMCFG_ECC_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S) || \
+ ((INSTANCE) == RAMCFG_SRAM3_NS) || ((INSTANCE) == RAMCFG_SRAM3_S) || \
+ ((INSTANCE) == RAMCFG_BKPRAM_NS) || ((INSTANCE) == RAMCFG_BKPRAM_S))
+
+/************************ RAMCFG Write Protection Instances *********************/
+#define IS_RAMCFG_WP_INSTANCE(INSTANCE) (((INSTANCE) == RAMCFG_SRAM2_NS) || ((INSTANCE) == RAMCFG_SRAM2_S))
+
+
+/******************************** FMAC Instances ******************************/
+#define IS_FMAC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == FMAC_NS) || ((INSTANCE) == FMAC_S))
+
+/******************************* GPIO Instances *******************************/
+#define IS_GPIO_ALL_INSTANCE(INSTANCE) (((INSTANCE) == GPIOA_NS) || ((INSTANCE) == GPIOA_S) || \
+ ((INSTANCE) == GPIOB_NS) || ((INSTANCE) == GPIOB_S) || \
+ ((INSTANCE) == GPIOC_NS) || ((INSTANCE) == GPIOC_S) || \
+ ((INSTANCE) == GPIOD_NS) || ((INSTANCE) == GPIOD_S) || \
+ ((INSTANCE) == GPIOE_NS) || ((INSTANCE) == GPIOE_S) || \
+ ((INSTANCE) == GPIOF_NS) || ((INSTANCE) == GPIOF_S) || \
+ ((INSTANCE) == GPIOG_NS) || ((INSTANCE) == GPIOG_S) || \
+ ((INSTANCE) == GPIOH_NS) || ((INSTANCE) == GPIOH_S) || \
+ ((INSTANCE) == GPIOI_NS) || ((INSTANCE) == GPIOI_S))
+
+/******************************* DCMI Instances *******************************/
+#define IS_DCMI_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == DCMI_NS) || ((__INSTANCE__) == DCMI_S))
+
+/******************************* PSSI Instances *******************************/
+#define IS_PSSI_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == PSSI_NS) || ((__INSTANCE__) == PSSI_S))
+
+/******************************* DTS Instances *******************************/
+#define IS_DTS_ALL_INSTANCE(__INSTANCE__) (((__INSTANCE__) == DTS_NS) || ((__INSTANCE__) == DTS_S))
+
+/******************************* GPIO AF Instances ****************************/
+/* On H5, all GPIO Bank support AF */
+#define IS_GPIO_AF_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)
+
+/**************************** GPIO Lock Instances *****************************/
+/* On H5, all GPIO Bank support the Lock mechanism */
+#define IS_GPIO_LOCK_INSTANCE(INSTANCE) IS_GPIO_ALL_INSTANCE(INSTANCE)
+
+/******************************** I2C Instances *******************************/
+#define IS_I2C_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1_NS) || ((INSTANCE) == I2C1_S) || \
+ ((INSTANCE) == I2C2_NS) || ((INSTANCE) == I2C2_S) || \
+ ((INSTANCE) == I2C3_NS) || ((INSTANCE) == I2C3_S) || \
+ ((INSTANCE) == I2C4_NS) || ((INSTANCE) == I2C4_S))
+
+/****************** I2C Instances : wakeup capability from stop modes *********/
+#define IS_I2C_WAKEUP_FROMSTOP_INSTANCE(INSTANCE) IS_I2C_ALL_INSTANCE(INSTANCE)
+
+/******************************** I3C Instances *******************************/
+#define IS_I3C_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I3C1_NS) || ((INSTANCE) == I3C1_S))
+
+/******************************* OSPI Instances *******************************/
+#define IS_OSPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == OCTOSPI1_NS) || ((INSTANCE) == OCTOSPI1_S))
+
+/******************************* RNG Instances ********************************/
+#define IS_RNG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RNG_NS) || ((INSTANCE) == RNG_S))
+
+/****************************** RTC Instances *********************************/
+#define IS_RTC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == RTC_NS) || ((INSTANCE) == RTC_S))
+
+/******************************** SAI Instances *******************************/
+#define IS_SAI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SAI1_Block_A_NS) || ((INSTANCE) == SAI1_Block_A_S) || \
+ ((INSTANCE) == SAI1_Block_B_NS) || ((INSTANCE) == SAI1_Block_B_S) || \
+ ((INSTANCE) == SAI2_Block_A_NS) || ((INSTANCE) == SAI2_Block_A_S) || \
+ ((INSTANCE) == SAI2_Block_B_NS) || ((INSTANCE) == SAI2_Block_B_S))
+
+/****************************** SDMMC Instances *******************************/
+#define IS_SDMMC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SDMMC1_NS) || ((INSTANCE) == SDMMC1_S) || \
+ ((INSTANCE) == SDMMC2_NS) || ((INSTANCE) == SDMMC2_S))
+
+/****************************** FDCAN Instances *******************************/
+#define IS_FDCAN_ALL_INSTANCE(INSTANCE) (((INSTANCE) == FDCAN1_NS) || ((INSTANCE) == FDCAN1_S) || \
+ ((INSTANCE) == FDCAN2_NS) || ((INSTANCE) == FDCAN2_S))
+
+/****************************** SMBUS Instances *******************************/
+#define IS_SMBUS_ALL_INSTANCE(INSTANCE) (((INSTANCE) == I2C1_NS) || ((INSTANCE) == I2C1_S) || \
+ ((INSTANCE) == I2C2_NS) || ((INSTANCE) == I2C2_S) || \
+ ((INSTANCE) == I2C3_NS) || ((INSTANCE) == I2C3_S) || \
+ ((INSTANCE) == I2C4_NS) || ((INSTANCE) == I2C4_S))
+
+/******************************** SPI Instances *******************************/
+#define IS_SPI_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1_NS) || ((INSTANCE) == SPI1_S) || \
+ ((INSTANCE) == SPI2_NS) || ((INSTANCE) == SPI2_S) || \
+ ((INSTANCE) == SPI3_NS) || ((INSTANCE) == SPI3_S) || \
+ ((INSTANCE) == SPI4_NS) || ((INSTANCE) == SPI4_S) || \
+ ((INSTANCE) == SPI5_NS) || ((INSTANCE) == SPI5_S) || \
+ ((INSTANCE) == SPI6_NS) || ((INSTANCE) == SPI6_S))
+
+#define IS_SPI_LIMITED_INSTANCE(INSTANCE) (((INSTANCE) == SPI4_NS) || ((INSTANCE) == SPI4_S) || \
+ ((INSTANCE) == SPI5_NS) || ((INSTANCE) == SPI5_S) || \
+ ((INSTANCE) == SPI6_NS) || ((INSTANCE) == SPI6_S))
+
+#define IS_SPI_FULL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1_NS) || ((INSTANCE) == SPI1_S) || \
+ ((INSTANCE) == SPI2_NS) || ((INSTANCE) == SPI2_S) || \
+ ((INSTANCE) == SPI3_NS) || ((INSTANCE) == SPI3_S))
+
+/****************** LPTIM Instances : All supported instances *****************/
+#define IS_LPTIM_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM4_NS) || ((INSTANCE) == LPTIM4_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/****************** LPTIM Instances : DMA supported instances *****************/
+#define IS_LPTIM_DMA_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/************* LPTIM Instances : at least 1 capture/compare channel ***********/
+#define IS_LPTIM_CC1_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM4_NS) || ((INSTANCE) == LPTIM4_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/************* LPTIM Instances : at least 2 capture/compare channel ***********/
+#define IS_LPTIM_CC2_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/****************** LPTIM Instances : supporting encoder interface **************/
+#define IS_LPTIM_ENCODER_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/****************** LPTIM Instances : supporting Input Capture **************/
+#define IS_LPTIM_INPUT_CAPTURE_INSTANCE(INSTANCE) (((INSTANCE) == LPTIM1_NS) || ((INSTANCE) == LPTIM1_S) ||\
+ ((INSTANCE) == LPTIM2_NS) || ((INSTANCE) == LPTIM2_S) ||\
+ ((INSTANCE) == LPTIM3_NS) || ((INSTANCE) == LPTIM3_S) ||\
+ ((INSTANCE) == LPTIM5_NS) || ((INSTANCE) == LPTIM5_S) ||\
+ ((INSTANCE) == LPTIM6_NS) || ((INSTANCE) == LPTIM6_S))
+
+/****************** TIM Instances : All supported instances *******************/
+#define IS_TIM_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM13_NS) || ((INSTANCE) == TIM13_S) || \
+ ((INSTANCE) == TIM14_NS) || ((INSTANCE) == TIM14_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : supporting 32 bits counter ****************/
+#define IS_TIM_32B_COUNTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S))
+
+/****************** TIM Instances : supporting the break function *************/
+#define IS_TIM_BREAK_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/************** TIM Instances : supporting Break source selection *************/
+#define IS_TIM_BREAKSOURCE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : supporting 2 break inputs *****************/
+#define IS_TIM_BKIN2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************* TIM Instances : at least 1 capture/compare channel *************/
+#define IS_TIM_CC1_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM13_NS) || ((INSTANCE) == TIM13_S) || \
+ ((INSTANCE) == TIM14_NS) || ((INSTANCE) == TIM14_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/************ TIM Instances : at least 2 capture/compare channels *************/
+#define IS_TIM_CC2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/************ TIM Instances : at least 3 capture/compare channels *************/
+#define IS_TIM_CC3_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************ TIM Instances : at least 4 capture/compare channels *************/
+#define IS_TIM_CC4_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : at least 5 capture/compare channels *******/
+#define IS_TIM_CC5_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : at least 6 capture/compare channels *******/
+#define IS_TIM_CC6_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : DMA requests generation (TIMx_DIER.UDE) ***/
+#define IS_TIM_DMA_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/************ TIM Instances : DMA requests generation (TIMx_DIER.CCxDE) *******/
+#define IS_TIM_DMA_CC_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/******************** TIM Instances : DMA burst feature ***********************/
+#define IS_TIM_DMABURST_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/******************* TIM Instances : output(s) available **********************/
+#define IS_TIM_CCX_INSTANCE(INSTANCE, CHANNEL) \
+ (((((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4) || \
+ ((CHANNEL) == TIM_CHANNEL_5) || \
+ ((CHANNEL) == TIM_CHANNEL_6))) \
+ || \
+ ((((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4) || \
+ ((CHANNEL) == TIM_CHANNEL_5) || \
+ ((CHANNEL) == TIM_CHANNEL_6))) \
+ || \
+ ((((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2))) \
+ || \
+ ((((INSTANCE) == TIM13_NS) || ((INSTANCE) == TIM13_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1))) \
+ || \
+ ((((INSTANCE) == TIM14_NS) || ((INSTANCE) == TIM14_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1))) \
+ || \
+ ((((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2))) \
+ || \
+ ((((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1))) \
+ || \
+ ((((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1))))
+
+/****************** TIM Instances : supporting complementary output(s) ********/
+#define IS_TIM_CCXN_INSTANCE(INSTANCE, CHANNEL) \
+ (((((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S)) && \
+ (((CHANNEL) == TIM_CHANNEL_1) || \
+ ((CHANNEL) == TIM_CHANNEL_2) || \
+ ((CHANNEL) == TIM_CHANNEL_3) || \
+ ((CHANNEL) == TIM_CHANNEL_4))) \
+ || \
+ ((((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S)) && \
+ ((CHANNEL) == TIM_CHANNEL_1)) \
+ || \
+ ((((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S)) && \
+ ((CHANNEL) == TIM_CHANNEL_1)) \
+ || \
+ ((((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S)) && \
+ ((CHANNEL) == TIM_CHANNEL_1)))
+
+/****************** TIM Instances : supporting clock division *****************/
+#define IS_TIM_CLOCK_DIVISION_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM13_NS) || ((INSTANCE) == TIM13_S) || \
+ ((INSTANCE) == TIM14_NS) || ((INSTANCE) == TIM14_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****** TIM Instances : supporting external clock mode 1 for ETRF input *******/
+#define IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****** TIM Instances : supporting external clock mode 2 for ETRF input *******/
+#define IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting external clock mode 1 for TIX inputs*/
+#define IS_TIM_CLOCKSOURCE_TIX_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting internal trigger inputs(ITRX) *******/
+#define IS_TIM_CLOCKSOURCE_ITRX_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM13_NS) || ((INSTANCE) == TIM13_S) || \
+ ((INSTANCE) == TIM14_NS) || ((INSTANCE) == TIM14_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting combined 3-phase PWM mode ******/
+#define IS_TIM_COMBINED3PHASEPWM_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting commutation event generation ***/
+#define IS_TIM_COMMUTATION_EVENT_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : supporting counting mode selection ********/
+#define IS_TIM_COUNTER_MODE_SELECT_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting encoder interface **************/
+#define IS_TIM_ENCODER_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting Hall sensor interface **********/
+#define IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/**************** TIM Instances : external trigger input available ************/
+#define IS_TIM_ETR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/************* TIM Instances : supporting ETR source selection ***************/
+#define IS_TIM_ETRSEL_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****** TIM Instances : Master mode available (TIMx_CR2.MMS available )********/
+#define IS_TIM_MASTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM6_NS) || ((INSTANCE) == TIM6_S) || \
+ ((INSTANCE) == TIM7_NS) || ((INSTANCE) == TIM7_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/*********** TIM Instances : Slave mode available (TIMx_SMCR available )*******/
+#define IS_TIM_SLAVE_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/****************** TIM Instances : supporting OCxREF clear *******************/
+#define IS_TIM_OCXREF_CLEAR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : remapping capability **********************/
+#define IS_TIM_REMAP_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting repetition counter *************/
+#define IS_TIM_REPETITION_COUNTER_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S) || \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S) || \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : supporting ADC triggering through TRGO2 ***/
+#define IS_TIM_TRGO2_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/******************* TIM Instances : Timer input XOR function *****************/
+#define IS_TIM_XOR_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM4_NS) || ((INSTANCE) == TIM4_S) || \
+ ((INSTANCE) == TIM5_NS) || ((INSTANCE) == TIM5_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S) || \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S))
+
+/******************* TIM Instances : Timer input selection ********************/
+#define IS_TIM_TISEL_INSTANCE(INSTANCE) (((INSTANCE) == TIM2_NS) || ((INSTANCE) == TIM2_S) || \
+ ((INSTANCE) == TIM3_NS) || ((INSTANCE) == TIM3_S) || \
+ ((INSTANCE) == TIM12_NS) || ((INSTANCE) == TIM12_S)|| \
+ ((INSTANCE) == TIM15_NS) || ((INSTANCE) == TIM15_S)|| \
+ ((INSTANCE) == TIM16_NS) || ((INSTANCE) == TIM16_S)|| \
+ ((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/******************* TIM Instances : supporting bitfield RTCPREEN in OR1 register ********************/
+#define IS_TIM_RTCPREEN_INSTANCE(INSTANCE) (((INSTANCE) == TIM17_NS) || ((INSTANCE) == TIM17_S))
+
+/****************** TIM Instances : Advanced timer instances *******************/
+#define IS_TIM_ADVANCED_INSTANCE(INSTANCE) (((INSTANCE) == TIM1_NS) || ((INSTANCE) == TIM1_S) || \
+ ((INSTANCE) == TIM8_NS) || ((INSTANCE) == TIM8_S))
+
+/****************** TIM Instances : supporting synchronization ****************/
+#define IS_TIM_SYNCHRO_INSTANCE(__INSTANCE__) (((__INSTANCE__) == TIM1_NS) || ((__INSTANCE__) == TIM1_S) || \
+ ((__INSTANCE__) == TIM2_NS) || ((__INSTANCE__) == TIM2_S) || \
+ ((__INSTANCE__) == TIM3_NS) || ((__INSTANCE__) == TIM3_S) || \
+ ((__INSTANCE__) == TIM4_NS) || ((__INSTANCE__) == TIM4_S) || \
+ ((__INSTANCE__) == TIM5_NS) || ((__INSTANCE__) == TIM5_S) || \
+ ((__INSTANCE__) == TIM6_NS) || ((__INSTANCE__) == TIM6_S) || \
+ ((__INSTANCE__) == TIM7_NS) || ((__INSTANCE__) == TIM7_S) || \
+ ((__INSTANCE__) == TIM8_NS) || ((__INSTANCE__) == TIM8_S) || \
+ ((__INSTANCE__) == TIM12_NS) || ((__INSTANCE__) == TIM12_S)|| \
+ ((__INSTANCE__) == TIM15_NS) || ((__INSTANCE__) == TIM15_S))
+
+/******************** USART Instances : Synchronous mode **********************/
+#define IS_USART_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S))
+
+/******************** UART Instances : Asynchronous mode **********************/
+#define IS_UART_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S))
+
+/*********************** UART Instances : FIFO mode ***************************/
+#define IS_UART_FIFO_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/*********************** UART Instances : SPI Slave mode **********************/
+#define IS_UART_SPI_SLAVE_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S))
+
+/******************************** I2S Instances *******************************/
+#define IS_I2S_ALL_INSTANCE(INSTANCE) (((INSTANCE) == SPI1) || \
+ ((INSTANCE) == SPI2) || \
+ ((INSTANCE) == SPI3))
+
+/****************** UART Instances : Auto Baud Rate detection ****************/
+#define IS_USART_AUTOBAUDRATE_DETECTION_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S))
+
+/****************** UART Instances : Driver Enable *****************/
+#define IS_UART_DRIVER_ENABLE_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** UART Instances : Half-Duplex mode **********************/
+#define IS_UART_HALFDUPLEX_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/****************** UART Instances : Hardware Flow control ********************/
+#define IS_UART_HWFLOW_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** UART Instances : LIN mode **********************/
+#define IS_UART_LIN_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S))
+
+/******************** UART Instances : Wake-up from Stop mode **********************/
+#define IS_UART_WAKEUP_FROMSTOP_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S) || \
+ ((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/*********************** UART Instances : IRDA mode ***************************/
+#define IS_IRDA_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == UART4_NS) || ((INSTANCE) == UART4_S) || \
+ ((INSTANCE) == UART5_NS) || ((INSTANCE) == UART5_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == UART7_NS) || ((INSTANCE) == UART7_S) || \
+ ((INSTANCE) == UART8_NS) || ((INSTANCE) == UART8_S) || \
+ ((INSTANCE) == UART9_NS) || ((INSTANCE) == UART9_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S) || \
+ ((INSTANCE) == UART12_NS) || ((INSTANCE) == UART12_S))
+
+/********************* USART Instances : Smard card mode ***********************/
+#define IS_SMARTCARD_INSTANCE(INSTANCE) (((INSTANCE) == USART1_NS) || ((INSTANCE) == USART1_S) || \
+ ((INSTANCE) == USART2_NS) || ((INSTANCE) == USART2_S) || \
+ ((INSTANCE) == USART3_NS) || ((INSTANCE) == USART3_S) || \
+ ((INSTANCE) == USART6_NS) || ((INSTANCE) == USART6_S) || \
+ ((INSTANCE) == USART10_NS) || ((INSTANCE) == USART10_S) || \
+ ((INSTANCE) == USART11_NS) || ((INSTANCE) == USART11_S))
+
+/******************** LPUART Instance *****************************************/
+#define IS_LPUART_INSTANCE(INSTANCE) (((INSTANCE) == LPUART1_NS) || ((INSTANCE) == LPUART1_S))
+
+/******************** CEC Instance *****************************************/
+#define IS_CEC_ALL_INSTANCE(INSTANCE) (((INSTANCE) == CEC_NS) || ((INSTANCE) == CEC_S))
+
+/****************************** IWDG Instances ********************************/
+#define IS_IWDG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == IWDG_NS) || ((INSTANCE) == IWDG_S))
+
+/****************************** WWDG Instances ********************************/
+#define IS_WWDG_ALL_INSTANCE(INSTANCE) (((INSTANCE) == WWDG_NS) || ((INSTANCE) == WWDG_S))
+
+/****************************** UCPD Instances ********************************/
+#define IS_UCPD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == UCPD1_NS) || ((INSTANCE) == UCPD1_S))
+
+/******************************* USB DRD FS HCD Instances *************************/
+#define IS_HCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_DRD_FS_NS) || ((INSTANCE) == USB_DRD_FS_S))
+
+/******************************* USB DRD FS PCD Instances *************************/
+#define IS_PCD_ALL_INSTANCE(INSTANCE) (((INSTANCE) == USB_DRD_FS_NS) || ((INSTANCE) == USB_DRD_FS_S))
+
+/** @} */ /* End of group STM32H5xx_Peripheral_Exported_macros */
+
+/** @} */ /* End of group STM32H563xx */
+
+/** @} */ /* End of group ST */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* STM32H563xx_H */
diff --git a/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h573xx.h b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h573xx.h
new file mode 100644
index 000000000..9f30d0d2f
--- /dev/null
+++ b/miosix/arch/CMSIS/Device/ST/STM32H5xx/Include/stm32h573xx.h
@@ -0,0 +1,24604 @@
+/**
+ ******************************************************************************
+ * @file stm32h573xx.h
+ * @author MCD Application Team
+ * @brief CMSIS STM32H573xx Device Peripheral Access Layer Header File.
+ *
+ * This file contains:
+ * - Data structures and the address mapping for all peripherals
+ * - Peripheral's registers declarations and bits definition
+ * - Macros to access peripheral's registers hardware
+ *
+ ******************************************************************************
+ * @attention
+ *
+ * Copyright (c) 2023 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.
+ *
+ ******************************************************************************
+ */
+
+#ifndef STM32H573xx_H
+#define STM32H573xx_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/** @addtogroup ST
+ * @{
+ */
+
+
+/** @addtogroup STM32H573xx
+ * @{
+ */
+
+
+/** @addtogroup Configuration_of_CMSIS
+ * @{
+ */
+
+
+/* =========================================================================================================================== */
+/* ================ Interrupt Number Definition ================ */
+/* =========================================================================================================================== */
+
+typedef enum
+{
+/* ======================================= ARM Cortex-M33 Specific Interrupt Numbers ======================================= */
+ Reset_IRQn = -15, /*!< -15 Reset Vector, invoked on Power up and warm reset */
+ NonMaskableInt_IRQn = -14, /*!< -14 Non maskable Interrupt, cannot be stopped or preempted */
+ HardFault_IRQn = -13, /*!< -13 Hard Fault, all classes of Fault */
+ MemoryManagement_IRQn = -12, /*!< -12 Memory Management, MPU mismatch, including Access Violation
+ and No Match */
+ BusFault_IRQn = -11, /*!< -11 Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory
+ related Fault */
+ UsageFault_IRQn = -10, /*!< -10 Usage Fault, i.e. Undef Instruction, Illegal State Transition */
+ SecureFault_IRQn = -9, /*!< -9 Secure Fault */
+ SVCall_IRQn = -5, /*!< -5 System Service Call via SVC instruction */
+ DebugMonitor_IRQn = -4, /*!< -4 Debug Monitor */
+ PendSV_IRQn = -2, /*!< -2 Pendable request for system service */
+ SysTick_IRQn = -1, /*!< -1 System Tick Timer */
+
+/* =========================================== STM32H573xx Specific Interrupt Numbers ====================================== */
+ WWDG_IRQn = 0, /*!< Window WatchDog interrupt */
+ PVD_AVD_IRQn = 1, /*!< PVD/AVD through EXTI Line detection Interrupt */
+ RTC_IRQn = 2, /*!< RTC non-secure interrupt */
+ RTC_S_IRQn = 3, /*!< RTC secure interrupt */
+ TAMP_IRQn = 4, /*!< Tamper global interrupt */
+ RAMCFG_IRQn = 5, /*!< RAMCFG global interrupt */
+ FLASH_IRQn = 6, /*!< FLASH non-secure global interrupt */
+ FLASH_S_IRQn = 7, /*!< FLASH secure global interrupt */
+ GTZC_IRQn = 8, /*!< Global TrustZone Controller interrupt */
+ RCC_IRQn = 9, /*!< RCC non secure global interrupt */
+ RCC_S_IRQn = 10, /*!< RCC secure global interrupt */
+ EXTI0_IRQn = 11, /*!< EXTI Line0 interrupt */
+ EXTI1_IRQn = 12, /*!< EXTI Line1 interrupt */
+ EXTI2_IRQn = 13, /*!< EXTI Line2 interrupt */
+ EXTI3_IRQn = 14, /*!< EXTI Line3 interrupt */
+ EXTI4_IRQn = 15, /*!< EXTI Line4 interrupt */
+ EXTI5_IRQn = 16, /*!< EXTI Line5 interrupt */
+ EXTI6_IRQn = 17, /*!< EXTI Line6 interrupt */
+ EXTI7_IRQn = 18, /*!< EXTI Line7 interrupt */
+ EXTI8_IRQn = 19, /*!< EXTI Line8 interrupt */
+ EXTI9_IRQn = 20, /*!< EXTI Line9 interrupt */
+ EXTI10_IRQn = 21, /*!< EXTI Line10 interrupt */
+ EXTI11_IRQn = 22, /*!< EXTI Line11 interrupt */
+ EXTI12_IRQn = 23, /*!< EXTI Line12 interrupt */
+ EXTI13_IRQn = 24, /*!< EXTI Line13 interrupt */
+ EXTI14_IRQn = 25, /*!< EXTI Line14 interrupt */
+ EXTI15_IRQn = 26, /*!< EXTI Line15 interrupt */
+ GPDMA1_Channel0_IRQn = 27, /*!< GPDMA1 Channel 0 global interrupt */
+ GPDMA1_Channel1_IRQn = 28, /*!< GPDMA1 Channel 1 global interrupt */
+ GPDMA1_Channel2_IRQn = 29, /*!< GPDMA1 Channel 2 global interrupt */
+ GPDMA1_Channel3_IRQn = 30, /*!< GPDMA1 Channel 3 global interrupt */
+ GPDMA1_Channel4_IRQn = 31, /*!< GPDMA1 Channel 4 global interrupt */
+ GPDMA1_Channel5_IRQn = 32, /*!< GPDMA1 Channel 5 global interrupt */
+ GPDMA1_Channel6_IRQn = 33, /*!< GPDMA1 Channel 6 global interrupt */
+ GPDMA1_Channel7_IRQn = 34, /*!< GPDMA1 Channel 7 global interrupt */
+ IWDG_IRQn = 35, /*!< IWDG global interrupt */
+ SAES_IRQn = 36, /*!< Secure AES global interrupt */
+ ADC1_IRQn = 37, /*!< ADC1 global interrupt */
+ DAC1_IRQn = 38, /*!< DAC1 global interrupt */
+ FDCAN1_IT0_IRQn = 39, /*!< FDCAN1 interrupt 0 */
+ FDCAN1_IT1_IRQn = 40, /*!< FDCAN1 interrupt 1 */
+ TIM1_BRK_IRQn = 41, /*!< TIM1 Break interrupt */
+ TIM1_UP_IRQn = 42, /*!< TIM1 Update interrupt */
+ TIM1_TRG_COM_IRQn = 43, /*!< TIM1 Trigger and Commutation interrupt */
+ TIM1_CC_IRQn = 44, /*!< TIM1 Capture Compare interrupt */
+ TIM2_IRQn = 45, /*!< TIM2 global interrupt */
+ TIM3_IRQn = 46, /*!< TIM3 global interrupt */
+ TIM4_IRQn = 47, /*!< TIM4 global interrupt */
+ TIM5_IRQn = 48, /*!< TIM5 global interrupt */
+ TIM6_IRQn = 49, /*!< TIM6 global interrupt */
+ TIM7_IRQn = 50, /*!< TIM7 global interrupt */
+ I2C1_EV_IRQn = 51, /*!< I2C1 Event interrupt */
+ I2C1_ER_IRQn = 52, /*!< I2C1 Error interrupt */
+ I2C2_EV_IRQn = 53, /*!< I2C2 Event interrupt */
+ I2C2_ER_IRQn = 54, /*!< I2C2 Error interrupt */
+ SPI1_IRQn = 55, /*!< SPI1 global interrupt */
+ SPI2_IRQn = 56, /*!< SPI2 global interrupt */
+ SPI3_IRQn = 57, /*!< SPI3 global interrupt */
+ USART1_IRQn = 58, /*!< USART1 global interrupt */
+ USART2_IRQn = 59, /*!< USART2 global interrupt */
+ USART3_IRQn = 60, /*!< USART3 global interrupt */
+ UART4_IRQn = 61, /*!< UART4 global interrupt */
+ UART5_IRQn = 62, /*!< UART5 global interrupt */
+ LPUART1_IRQn = 63, /*!< LPUART1 global interrupt */
+ LPTIM1_IRQn = 64, /*!< LPTIM1 global interrupt */
+ TIM8_BRK_IRQn = 65, /*!< TIM8 Break interrupt */
+ TIM8_UP_IRQn = 66, /*!< TIM8 Update interrupt */
+ TIM8_TRG_COM_IRQn = 67, /*!< TIM8 Trigger and Commutation interrupt */
+ TIM8_CC_IRQn = 68, /*!< TIM8 Capture Compare interrupt */
+ ADC2_IRQn = 69, /*!< ADC2 global interrupt */
+ LPTIM2_IRQn = 70, /*!< LPTIM2 global interrupt */
+ TIM15_IRQn = 71, /*!< TIM15 global interrupt */
+ TIM16_IRQn = 72, /*!< TIM16 global interrupt */
+ TIM17_IRQn = 73, /*!< TIM17 global interrupt */
+ USB_DRD_FS_IRQn = 74, /*!< USB FS global interrupt */
+ CRS_IRQn = 75, /*!< CRS global interrupt */
+ UCPD1_IRQn = 76, /*!< UCPD1 global interrupt */
+ FMC_IRQn = 77, /*!< FMC global interrupt */
+ OCTOSPI1_IRQn = 78, /*!< OctoSPI1 global interrupt */
+ SDMMC1_IRQn = 79, /*!< SDMMC1 global interrupt */
+ I2C3_EV_IRQn = 80, /*!< I2C3 event interrupt */
+ I2C3_ER_IRQn = 81, /*!< I2C3 error interrupt */
+ SPI4_IRQn = 82, /*!< SPI4 global interrupt */
+ SPI5_IRQn = 83, /*!< SPI5 global interrupt */
+ SPI6_IRQn = 84, /*!< SPI6 global interrupt */
+ USART6_IRQn = 85, /*!< USART6 global interrupt */
+ USART10_IRQn = 86, /*!< USART10 global interrupt */
+ USART11_IRQn = 87, /*!< USART11 global interrupt */
+ SAI1_IRQn = 88, /*!< Serial Audio Interface 1 global interrupt */
+ SAI2_IRQn = 89, /*!< Serial Audio Interface 2 global interrupt */
+ GPDMA2_Channel0_IRQn = 90, /*!< GPDMA2 Channel 0 global interrupt */
+ GPDMA2_Channel1_IRQn = 91, /*!< GPDMA2 Channel 1 global interrupt */
+ GPDMA2_Channel2_IRQn = 92, /*!< GPDMA2 Channel 2 global interrupt */
+ GPDMA2_Channel3_IRQn = 93, /*!< GPDMA2 Channel 3 global interrupt */
+ GPDMA2_Channel4_IRQn = 94, /*!< GPDMA2 Channel 4 global interrupt */
+ GPDMA2_Channel5_IRQn = 95, /*!< GPDMA2 Channel 5 global interrupt */
+ GPDMA2_Channel6_IRQn = 96, /*!< GPDMA2 Channel 6 global interrupt */
+ GPDMA2_Channel7_IRQn = 97, /*!< GPDMA2 Channel 7 global interrupt */
+ UART7_IRQn = 98, /*!< UART7 global interrupt */
+ UART8_IRQn = 99, /*!< UART8 global interrupt */
+ UART9_IRQn = 100, /*!< UART9 global interrupt */
+ UART12_IRQn = 101, /*!< UART12 global interrupt */
+ SDMMC2_IRQn = 102, /*!< SDMMC2 global interrupt */
+ FPU_IRQn = 103, /*!< FPU global interrupt */
+ ICACHE_IRQn = 104, /*!< Instruction cache global interrupt */
+ DCACHE1_IRQn = 105, /*!< Data cache global interrupt */
+ ETH_IRQn = 106, /*!< Ethernet global interrupt */
+ ETH_WKUP_IRQn = 107, /*!< Ethernet Wakeup global interrupt */
+ DCMI_PSSI_IRQn = 108, /*!< DCMI/PSSI global interrupt */
+ FDCAN2_IT0_IRQn = 109, /*!< FDCAN2 interrupt 0 */
+ FDCAN2_IT1_IRQn = 110, /*!< FDCAN2 interrupt 1 */
+ CORDIC_IRQn = 111, /*!< CORDIC global interrupt */
+ FMAC_IRQn = 112, /*!< FMAC global interrupt */
+ DTS_IRQn = 113, /*!< DTS global interrupt */
+ RNG_IRQn = 114, /*!< RNG global interrupt */
+ OTFDEC1_IRQn = 115, /*!< OTFDEC1 global interrupt */
+ AES_IRQn = 116, /*!< AES global interrupt */
+ HASH_IRQn = 117, /*!< HASH global interrupt */
+ PKA_IRQn = 118, /*!< PKA global interrupt */
+ CEC_IRQn = 119, /*!< CEC-HDMI global interrupt */
+ TIM12_IRQn = 120, /*!< TIM12 global interrupt */
+ TIM13_IRQn = 121, /*!< TIM13 global interrupt */
+ TIM14_IRQn = 122, /*!< TIM14 global interrupt */
+ I3C1_EV_IRQn = 123, /*!< I3C1 event interrupt */
+ I3C1_ER_IRQn = 124, /*!< I3C1 error interrupt */
+ I2C4_EV_IRQn = 125, /*!< I2C4 event interrupt */
+ I2C4_ER_IRQn = 126, /*!< I2C4 error interrupt */
+ LPTIM3_IRQn = 127, /*!< LPTIM3 global interrupt */
+ LPTIM4_IRQn = 128, /*!< LPTIM4 global interrupt */
+ LPTIM5_IRQn = 129, /*!< LPTIM5 global interrupt */
+ LPTIM6_IRQn = 130, /*!< LPTIM6 global interrupt */
+} IRQn_Type;
+
+
+
+/* =========================================================================================================================== */
+/* ================ Processor and Core Peripheral Section ================ */
+/* =========================================================================================================================== */
+
+/* ------- Start of section using anonymous unions and disabling warnings ------- */
+#if defined (__CC_ARM)
+ #pragma push
+ #pragma anon_unions
+#elif defined (__ICCARM__)
+ #pragma language=extended
+#elif defined(__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
+ #pragma clang diagnostic push
+ #pragma clang diagnostic ignored "-Wc11-extensions"
+ #pragma clang diagnostic ignored "-Wreserved-id-macro"
+#elif defined (__GNUC__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TMS470__)
+ /* anonymous unions are enabled by default */
+#elif defined (__TASKING__)
+ #pragma warning 586
+#elif defined (__CSMC__)
+ /* anonymous unions are enabled by default */
+#else
+ #warning Not supported compiler type
+#endif
+
+#define SMPS /*!< Switched mode power supply feature */
+
+/* -------- Configuration of the Cortex-M33 Processor and Core Peripherals ------ */
+#define __CM33_REV 0x0000U /* Core revision r0p1 */
+#define __SAUREGION_PRESENT 1U /* SAU regions present */
+#define __MPU_PRESENT 1U /* MPU present */
+#define __VTOR_PRESENT 1U /* VTOR present */
+#define __NVIC_PRIO_BITS 4U /* Number of Bits used for Priority Levels */
+#define __Vendor_SysTickConfig 0U /* Set to 1 if different SysTick Config is used */
+#define __FPU_PRESENT 1U /* FPU present */
+#define __DSP_PRESENT 1U /* DSP extension present */
+
+/** @} */ /* End of group Configuration_of_CMSIS */
+
+
+#include